From 0b95eb8bf03ec1ff3e0dc246dc510a36d79153bd Mon Sep 17 00:00:00 2001
From: "HESU\\HESU" <1696136552@qq.com>
Date: Tue, 11 Mar 2025 13:34:12 +0800
Subject: [PATCH] 2025.3.11
---
.idea/modules.xml | 8 +
.idea/php.xml | 34 +
.idea/workspace.xml | 65 +
.idea/www.iml | 20 +
composer.json | 5 +
composer.json.txt | 5 +
composer.lock | 1813 ++++++
vendor/autoload.php | 25 +
vendor/bin/carbon | 119 +
vendor/bin/carbon.bat | 5 +
vendor/brick/math/CHANGELOG.md | 479 ++
vendor/brick/math/LICENSE | 20 +
vendor/brick/math/composer.json | 39 +
vendor/brick/math/psalm-baseline.xml | 70 +
vendor/brick/math/src/BigDecimal.php | 792 +++
vendor/brick/math/src/BigInteger.php | 1062 ++++
vendor/brick/math/src/BigNumber.php | 515 ++
vendor/brick/math/src/BigRational.php | 424 ++
.../src/Exception/DivisionByZeroException.php | 35 +
.../Exception/IntegerOverflowException.php | 23 +
.../math/src/Exception/MathException.php | 12 +
.../src/Exception/NegativeNumberException.php | 12 +
.../src/Exception/NumberFormatException.php | 41 +
.../Exception/RoundingNecessaryException.php | 19 +
vendor/brick/math/src/Internal/Calculator.php | 668 +++
.../Internal/Calculator/BcMathCalculator.php | 75 +
.../src/Internal/Calculator/GmpCalculator.php | 125 +
.../Internal/Calculator/NativeCalculator.php | 598 ++
vendor/brick/math/src/RoundingMode.php | 98 +
.../carbonphp/carbon-doctrine-types/LICENSE | 21 +
.../carbonphp/carbon-doctrine-types/README.md | 14 +
.../carbon-doctrine-types/composer.json | 36 +
.../Carbon/Doctrine/CarbonDoctrineType.php | 16 +
.../Carbon/Doctrine/CarbonImmutableType.php | 9 +
.../src/Carbon/Doctrine/CarbonType.php | 9 +
.../Carbon/Doctrine/CarbonTypeConverter.php | 131 +
.../Doctrine/DateTimeDefaultPrecision.php | 30 +
.../Carbon/Doctrine/DateTimeImmutableType.php | 32 +
.../src/Carbon/Doctrine/DateTimeType.php | 24 +
vendor/composer/ClassLoader.php | 579 ++
vendor/composer/InstalledVersions.php | 378 ++
vendor/composer/LICENSE | 21 +
vendor/composer/autoload_classmap.php | 21 +
vendor/composer/autoload_files.php | 20 +
vendor/composer/autoload_namespaces.php | 9 +
vendor/composer/autoload_psr4.php | 38 +
vendor/composer/autoload_real.php | 50 +
vendor/composer/autoload_static.php | 236 +
vendor/composer/installed.json | 1884 +++++++
vendor/composer/installed.php | 299 +
vendor/composer/platform_check.php | 26 +
vendor/doctrine/inflector/LICENSE | 19 +
vendor/doctrine/inflector/README.md | 7 +
vendor/doctrine/inflector/composer.json | 41 +
vendor/doctrine/inflector/docs/en/index.rst | 226 +
.../Inflector/CachedWordInflector.php | 24 +
.../GenericLanguageInflectorFactory.php | 66 +
.../lib/Doctrine/Inflector/Inflector.php | 507 ++
.../Doctrine/Inflector/InflectorFactory.php | 52 +
.../lib/Doctrine/Inflector/Language.php | 19 +
.../Inflector/LanguageInflectorFactory.php | 33 +
.../Doctrine/Inflector/NoopWordInflector.php | 13 +
.../Inflector/Rules/English/Inflectible.php | 184 +
.../Rules/English/InflectorFactory.php | 21 +
.../Inflector/Rules/English/Rules.php | 31 +
.../Inflector/Rules/English/Uninflected.php | 189 +
.../Inflector/Rules/French/Inflectible.php | 44 +
.../Rules/French/InflectorFactory.php | 21 +
.../Doctrine/Inflector/Rules/French/Rules.php | 31 +
.../Inflector/Rules/French/Uninflected.php | 28 +
.../Rules/NorwegianBokmal/Inflectible.php | 34 +
.../NorwegianBokmal/InflectorFactory.php | 21 +
.../Inflector/Rules/NorwegianBokmal/Rules.php | 31 +
.../Rules/NorwegianBokmal/Uninflected.php | 30 +
.../lib/Doctrine/Inflector/Rules/Pattern.php | 42 +
.../lib/Doctrine/Inflector/Rules/Patterns.php | 34 +
.../Rules/Portuguese/Inflectible.php | 98 +
.../Rules/Portuguese/InflectorFactory.php | 21 +
.../Inflector/Rules/Portuguese/Rules.php | 31 +
.../Rules/Portuguese/Uninflected.php | 32 +
.../lib/Doctrine/Inflector/Rules/Ruleset.php | 39 +
.../Inflector/Rules/Spanish/Inflectible.php | 47 +
.../Rules/Spanish/InflectorFactory.php | 21 +
.../Inflector/Rules/Spanish/Rules.php | 31 +
.../Inflector/Rules/Spanish/Uninflected.php | 30 +
.../Doctrine/Inflector/Rules/Substitution.php | 30 +
.../Inflector/Rules/Substitutions.php | 57 +
.../Inflector/Rules/Transformation.php | 39 +
.../Inflector/Rules/Transformations.php | 29 +
.../Inflector/Rules/Turkish/Inflectible.php | 34 +
.../Rules/Turkish/InflectorFactory.php | 21 +
.../Inflector/Rules/Turkish/Rules.php | 31 +
.../Inflector/Rules/Turkish/Uninflected.php | 30 +
.../lib/Doctrine/Inflector/Rules/Word.php | 21 +
.../Doctrine/Inflector/RulesetInflector.php | 56 +
.../lib/Doctrine/Inflector/WordInflector.php | 10 +
vendor/illuminate/collections/Arr.php | 970 ++++
vendor/illuminate/collections/Collection.php | 1923 +++++++
vendor/illuminate/collections/Enumerable.php | 1311 +++++
.../HigherOrderCollectionProxy.php | 68 +
.../collections/ItemNotFoundException.php | 9 +
vendor/illuminate/collections/LICENSE.md | 21 +
.../illuminate/collections/LazyCollection.php | 1920 +++++++
.../MultipleItemsFoundException.php | 40 +
.../collections/Traits/EnumeratesValues.php | 1188 ++++
vendor/illuminate/collections/composer.json | 43 +
vendor/illuminate/collections/functions.php | 27 +
vendor/illuminate/collections/helpers.php | 257 +
.../conditionable/HigherOrderWhenProxy.php | 109 +
vendor/illuminate/conditionable/LICENSE.md | 21 +
.../conditionable/Traits/Conditionable.php | 73 +
vendor/illuminate/conditionable/composer.json | 33 +
.../illuminate/container/Attributes/Auth.php | 30 +
.../container/Attributes/Authenticated.php | 30 +
.../illuminate/container/Attributes/Cache.php | 30 +
.../container/Attributes/Config.php | 30 +
.../container/Attributes/CurrentUser.php | 11 +
vendor/illuminate/container/Attributes/DB.php | 11 +
.../container/Attributes/Database.php | 30 +
.../illuminate/container/Attributes/Log.php | 30 +
.../container/Attributes/RouteParameter.php | 30 +
.../container/Attributes/Storage.php | 30 +
.../illuminate/container/Attributes/Tag.php | 30 +
vendor/illuminate/container/BoundMethod.php | 217 +
vendor/illuminate/container/Container.php | 1628 ++++++
.../container/ContextualBindingBuilder.php | 96 +
.../container/EntryNotFoundException.php | 11 +
vendor/illuminate/container/LICENSE.md | 21 +
.../container/RewindableGenerator.php | 61 +
vendor/illuminate/container/Util.php | 87 +
vendor/illuminate/container/composer.json | 38 +
.../contracts/Auth/Access/Authorizable.php | 15 +
.../illuminate/contracts/Auth/Access/Gate.php | 150 +
.../contracts/Auth/Authenticatable.php | 56 +
.../contracts/Auth/CanResetPassword.php | 21 +
vendor/illuminate/contracts/Auth/Factory.php | 22 +
vendor/illuminate/contracts/Auth/Guard.php | 57 +
.../Auth/Middleware/AuthenticatesRequests.php | 8 +
.../contracts/Auth/MustVerifyEmail.php | 34 +
.../contracts/Auth/PasswordBroker.php | 61 +
.../contracts/Auth/PasswordBrokerFactory.php | 14 +
.../contracts/Auth/StatefulGuard.php | 63 +
.../contracts/Auth/SupportsBasicAuth.php | 24 +
.../contracts/Auth/UserProvider.php | 59 +
.../contracts/Broadcasting/Broadcaster.php | 35 +
.../contracts/Broadcasting/Factory.php | 14 +
.../Broadcasting/HasBroadcastChannel.php | 20 +
.../contracts/Broadcasting/ShouldBeUnique.php | 8 +
.../Broadcasting/ShouldBroadcast.php | 13 +
.../Broadcasting/ShouldBroadcastNow.php | 8 +
.../illuminate/contracts/Bus/Dispatcher.php | 66 +
.../contracts/Bus/QueueingDispatcher.php | 30 +
vendor/illuminate/contracts/Cache/Factory.php | 14 +
vendor/illuminate/contracts/Cache/Lock.php | 46 +
.../contracts/Cache/LockProvider.php | 25 +
.../contracts/Cache/LockTimeoutException.php | 10 +
.../illuminate/contracts/Cache/Repository.php | 116 +
vendor/illuminate/contracts/Cache/Store.php | 92 +
.../contracts/Concurrency/Driver.php | 19 +
.../contracts/Config/Repository.php | 57 +
.../contracts/Console/Application.php | 23 +
.../contracts/Console/Isolatable.php | 8 +
.../illuminate/contracts/Console/Kernel.php | 64 +
.../Console/PromptsForMissingInput.php | 8 +
.../Container/BindingResolutionException.php | 11 +
.../Container/CircularDependencyException.php | 11 +
.../contracts/Container/Container.php | 235 +
.../Container/ContextualAttribute.php | 8 +
.../Container/ContextualBindingBuilder.php | 39 +
.../illuminate/contracts/Cookie/Factory.php | 47 +
.../contracts/Cookie/QueueingFactory.php | 30 +
.../contracts/Database/Eloquent/Builder.php | 14 +
.../contracts/Database/Eloquent/Castable.php | 14 +
.../Database/Eloquent/CastsAttributes.php | 34 +
.../Eloquent/CastsInboundAttributes.php | 19 +
.../Eloquent/DeviatesCastableAttributes.php | 28 +
.../Eloquent/SerializesCastableAttributes.php | 19 +
.../Eloquent/SupportsPartialRelations.php | 30 +
.../Database/Events/MigrationEvent.php | 8 +
.../contracts/Database/ModelIdentifier.php | 73 +
.../contracts/Database/Query/Builder.php | 12 +
.../Database/Query/ConditionExpression.php | 7 +
.../contracts/Database/Query/Expression.php | 16 +
.../contracts/Debug/ExceptionHandler.php | 48 +
.../contracts/Debug/ShouldntReport.php | 8 +
.../contracts/Encryption/DecryptException.php | 10 +
.../contracts/Encryption/EncryptException.php | 10 +
.../contracts/Encryption/Encrypter.php | 49 +
.../contracts/Encryption/StringEncrypter.php | 26 +
.../contracts/Events/Dispatcher.php | 82 +
.../Events/ShouldDispatchAfterCommit.php | 8 +
.../Events/ShouldHandleEventsAfterCommit.php | 8 +
.../illuminate/contracts/Filesystem/Cloud.php | 14 +
.../contracts/Filesystem/Factory.php | 14 +
.../Filesystem/FileNotFoundException.php | 10 +
.../contracts/Filesystem/Filesystem.php | 220 +
.../Filesystem/LockTimeoutException.php | 10 +
.../contracts/Foundation/Application.php | 254 +
.../Foundation/CachesConfiguration.php | 27 +
.../contracts/Foundation/CachesRoutes.php | 20 +
.../Foundation/ExceptionRenderer.php | 14 +
.../contracts/Foundation/MaintenanceMode.php | 35 +
.../illuminate/contracts/Hashing/Hasher.php | 42 +
vendor/illuminate/contracts/Http/Kernel.php | 37 +
vendor/illuminate/contracts/LICENSE.md | 21 +
.../illuminate/contracts/Mail/Attachable.php | 13 +
vendor/illuminate/contracts/Mail/Factory.php | 14 +
.../illuminate/contracts/Mail/MailQueue.php | 25 +
vendor/illuminate/contracts/Mail/Mailable.php | 76 +
vendor/illuminate/contracts/Mail/Mailer.php | 51 +
.../contracts/Notifications/Dispatcher.php | 25 +
.../contracts/Notifications/Factory.php | 32 +
.../contracts/Pagination/CursorPaginator.php | 129 +
.../Pagination/LengthAwarePaginator.php | 36 +
.../contracts/Pagination/Paginator.php | 129 +
vendor/illuminate/contracts/Pipeline/Hub.php | 15 +
.../contracts/Pipeline/Pipeline.php | 40 +
.../contracts/Process/InvokedProcess.php | 64 +
.../contracts/Process/ProcessResult.php | 81 +
.../contracts/Queue/ClearableQueue.php | 14 +
.../Queue/EntityNotFoundException.php | 22 +
.../contracts/Queue/EntityResolver.php | 15 +
vendor/illuminate/contracts/Queue/Factory.php | 14 +
vendor/illuminate/contracts/Queue/Job.php | 164 +
vendor/illuminate/contracts/Queue/Monitor.php | 30 +
vendor/illuminate/contracts/Queue/Queue.php | 99 +
.../contracts/Queue/QueueableCollection.php | 34 +
.../contracts/Queue/QueueableEntity.php | 27 +
.../contracts/Queue/ShouldBeEncrypted.php | 8 +
.../contracts/Queue/ShouldBeUnique.php | 8 +
.../Queue/ShouldBeUniqueUntilProcessing.php | 8 +
.../contracts/Queue/ShouldQueue.php | 8 +
.../Queue/ShouldQueueAfterCommit.php | 8 +
.../illuminate/contracts/Redis/Connection.php | 35 +
.../illuminate/contracts/Redis/Connector.php | 25 +
vendor/illuminate/contracts/Redis/Factory.php | 14 +
.../Redis/LimiterTimeoutException.php | 10 +
.../contracts/Routing/BindingRegistrar.php | 23 +
.../contracts/Routing/Registrar.php | 105 +
.../contracts/Routing/ResponseFactory.php | 155 +
.../contracts/Routing/UrlGenerator.php | 113 +
.../contracts/Routing/UrlRoutable.php | 39 +
.../Middleware/AuthenticatesSessions.php | 8 +
.../illuminate/contracts/Session/Session.php | 204 +
.../contracts/Support/Arrayable.php | 17 +
.../Support/CanBeEscapedWhenCastToString.php | 14 +
.../contracts/Support/DeferrableProvider.php | 13 +
.../Support/DeferringDisplayableValue.php | 13 +
.../illuminate/contracts/Support/Htmlable.php | 13 +
.../illuminate/contracts/Support/Jsonable.php | 14 +
.../contracts/Support/MessageBag.php | 110 +
.../contracts/Support/MessageProvider.php | 13 +
.../contracts/Support/Renderable.php | 13 +
.../contracts/Support/Responsable.php | 14 +
.../contracts/Support/ValidatedData.php | 11 +
.../Translation/HasLocalePreference.php | 13 +
.../contracts/Translation/Loader.php | 40 +
.../contracts/Translation/Translator.php | 42 +
.../contracts/Validation/DataAwareRule.php | 14 +
.../contracts/Validation/Factory.php | 46 +
.../contracts/Validation/ImplicitRule.php | 11 +
.../contracts/Validation/InvokableRule.php | 21 +
.../illuminate/contracts/Validation/Rule.php | 25 +
.../Validation/UncompromisedVerifier.php | 14 +
.../Validation/ValidatesWhenResolved.php | 13 +
.../contracts/Validation/ValidationRule.php | 18 +
.../contracts/Validation/Validator.php | 65 +
.../Validation/ValidatorAwareRule.php | 16 +
vendor/illuminate/contracts/View/Engine.php | 15 +
vendor/illuminate/contracts/View/Factory.php | 79 +
vendor/illuminate/contracts/View/View.php | 31 +
.../View/ViewCompilationException.php | 10 +
vendor/illuminate/contracts/composer.json | 35 +
.../illuminate/database/Capsule/Manager.php | 202 +
.../database/ClassMorphViolationException.php | 29 +
.../database/Concerns/BuildsQueries.php | 578 ++
.../Concerns/BuildsWhereDateClauses.php | 250 +
.../database/Concerns/CompilesJsonPaths.php | 65 +
.../database/Concerns/ExplainsQueries.php | 24 +
.../database/Concerns/ManagesTransactions.php | 353 ++
.../database/Concerns/ParsesSearchPath.php | 25 +
.../database/ConfigurationUrlParser.php | 10 +
vendor/illuminate/database/Connection.php | 1698 ++++++
.../database/ConnectionInterface.php | 182 +
.../database/ConnectionResolver.php | 92 +
.../database/ConnectionResolverInterface.php | 29 +
.../database/Connectors/ConnectionFactory.php | 282 +
.../database/Connectors/Connector.php | 124 +
.../Connectors/ConnectorInterface.php | 14 +
.../database/Connectors/MariaDbConnector.php | 32 +
.../database/Connectors/MySqlConnector.php | 154 +
.../database/Connectors/PostgresConnector.php | 187 +
.../database/Connectors/SQLiteConnector.php | 42 +
.../Connectors/SqlServerConnector.php | 233 +
.../Console/DatabaseInspectionCommand.php | 66 +
.../illuminate/database/Console/DbCommand.php | 251 +
.../database/Console/DumpCommand.php | 97 +
.../Console/Factories/FactoryMakeCommand.php | 144 +
.../Console/Factories/stubs/factory.stub | 23 +
.../Console/Migrations/BaseCommand.php | 52 +
.../Console/Migrations/FreshCommand.php | 149 +
.../Console/Migrations/InstallCommand.php | 72 +
.../Console/Migrations/MigrateCommand.php | 342 ++
.../Console/Migrations/MigrateMakeCommand.php | 146 +
.../Console/Migrations/RefreshCommand.php | 163 +
.../Console/Migrations/ResetCommand.php | 96 +
.../Console/Migrations/RollbackCommand.php | 93 +
.../Console/Migrations/StatusCommand.php | 143 +
.../Console/Migrations/TableGuesser.php | 37 +
.../database/Console/MonitorCommand.php | 141 +
.../database/Console/PruneCommand.php | 202 +
.../database/Console/Seeds/SeedCommand.php | 140 +
.../Console/Seeds/SeederMakeCommand.php | 92 +
.../Console/Seeds/WithoutModelEvents.php | 19 +
.../database/Console/Seeds/stubs/seeder.stub | 17 +
.../database/Console/ShowCommand.php | 242 +
.../database/Console/ShowModelCommand.php | 214 +
.../database/Console/TableCommand.php | 264 +
.../database/Console/WipeCommand.php | 116 +
.../illuminate/database/DatabaseManager.php | 497 ++
.../database/DatabaseServiceProvider.php | 113 +
.../database/DatabaseTransactionRecord.php | 82 +
.../database/DatabaseTransactionsManager.php | 248 +
.../illuminate/database/DeadlockException.php | 10 +
.../database/DetectsConcurrencyErrors.php | 37 +
.../database/DetectsLostConnections.php | 86 +
.../Eloquent/Attributes/CollectedBy.php | 19 +
.../Eloquent/Attributes/ObservedBy.php | 19 +
.../database/Eloquent/Attributes/ScopedBy.php | 19 +
.../Eloquent/Attributes/UseFactory.php | 19 +
.../BroadcastableModelEventOccurred.php | 145 +
.../database/Eloquent/BroadcastsEvents.php | 197 +
.../Eloquent/BroadcastsEventsAfterCommit.php | 18 +
.../illuminate/database/Eloquent/Builder.php | 2218 ++++++++
.../database/Eloquent/Casts/ArrayObject.php | 47 +
.../database/Eloquent/Casts/AsArrayObject.php | 42 +
.../database/Eloquent/Casts/AsCollection.php | 60 +
.../Eloquent/Casts/AsEncryptedArrayObject.php | 45 +
.../Eloquent/Casts/AsEncryptedCollection.php | 63 +
.../Eloquent/Casts/AsEnumArrayObject.php | 97 +
.../Eloquent/Casts/AsEnumCollection.php | 93 +
.../database/Eloquent/Casts/AsStringable.php | 32 +
.../database/Eloquent/Casts/Attribute.php | 105 +
.../database/Eloquent/Casts/Json.php | 54 +
.../database/Eloquent/Collection.php | 833 +++
.../Eloquent/Concerns/GuardsAttributes.php | 260 +
.../Eloquent/Concerns/HasAttributes.php | 2375 ++++++++
.../database/Eloquent/Concerns/HasEvents.php | 461 ++
.../Eloquent/Concerns/HasGlobalScopes.php | 139 +
.../Eloquent/Concerns/HasRelationships.php | 997 ++++
.../Eloquent/Concerns/HasTimestamps.php | 232 +
.../database/Eloquent/Concerns/HasUlids.php | 31 +
.../Eloquent/Concerns/HasUniqueIds.php | 57 +
.../Eloquent/Concerns/HasUniqueStringIds.php | 108 +
.../database/Eloquent/Concerns/HasUuids.php | 31 +
.../Eloquent/Concerns/HasVersion7Uuids.php | 20 +
.../Eloquent/Concerns/HidesAttributes.php | 124 +
.../Concerns/PreventsCircularRecursion.php | 107 +
.../Concerns/QueriesRelationships.php | 1061 ++++
.../Factories/BelongsToManyRelationship.php | 76 +
.../Factories/BelongsToRelationship.php | 97 +
.../Eloquent/Factories/CrossJoinSequence.php | 26 +
.../database/Eloquent/Factories/Factory.php | 991 ++++
.../Eloquent/Factories/HasFactory.php | 62 +
.../Eloquent/Factories/Relationship.php | 75 +
.../database/Eloquent/Factories/Sequence.php | 63 +
.../database/Eloquent/HasBuilder.php | 124 +
.../database/Eloquent/HasCollection.php | 50 +
.../Eloquent/HigherOrderBuilderProxy.php | 50 +
.../Eloquent/InvalidCastException.php | 48 +
.../Eloquent/JsonEncodingException.php | 49 +
.../Eloquent/MassAssignmentException.php | 10 +
.../database/Eloquent/MassPrunable.php | 48 +
.../Eloquent/MissingAttributeException.php | 23 +
vendor/illuminate/database/Eloquent/Model.php | 2438 ++++++++
.../database/Eloquent/ModelInspector.php | 412 ++
.../Eloquent/ModelNotFoundException.php | 69 +
.../PendingHasThroughRelationship.php | 117 +
.../illuminate/database/Eloquent/Prunable.php | 67 +
.../database/Eloquent/QueueEntityResolver.php | 29 +
.../Eloquent/RelationNotFoundException.php | 46 +
.../database/Eloquent/Relations/BelongsTo.php | 383 ++
.../Eloquent/Relations/BelongsToMany.php | 1657 ++++++
.../Eloquent/Relations/Concerns/AsPivot.php | 354 ++
.../Relations/Concerns/CanBeOneOfMany.php | 332 ++
.../Concerns/ComparesRelatedModels.php | 77 +
.../Concerns/InteractsWithDictionary.php | 36 +
.../Concerns/InteractsWithPivotTable.php | 694 +++
.../Concerns/SupportsDefaultModels.php | 63 +
.../Concerns/SupportsInverseRelations.php | 157 +
.../database/Eloquent/Relations/HasMany.php | 60 +
.../Eloquent/Relations/HasManyThrough.php | 74 +
.../database/Eloquent/Relations/HasOne.php | 118 +
.../Eloquent/Relations/HasOneOrMany.php | 579 ++
.../Relations/HasOneOrManyThrough.php | 862 +++
.../Eloquent/Relations/HasOneThrough.php | 67 +
.../database/Eloquent/Relations/MorphMany.php | 69 +
.../database/Eloquent/Relations/MorphOne.php | 122 +
.../Eloquent/Relations/MorphOneOrMany.php | 181 +
.../Eloquent/Relations/MorphPivot.php | 184 +
.../database/Eloquent/Relations/MorphTo.php | 456 ++
.../Eloquent/Relations/MorphToMany.php | 226 +
.../database/Eloquent/Relations/Pivot.php | 25 +
.../database/Eloquent/Relations/Relation.php | 550 ++
vendor/illuminate/database/Eloquent/Scope.php | 15 +
.../database/Eloquent/SoftDeletes.php | 292 +
.../database/Eloquent/SoftDeletingScope.php | 167 +
.../database/Events/ConnectionEstablished.php | 8 +
.../database/Events/ConnectionEvent.php | 32 +
.../database/Events/DatabaseBusy.php | 32 +
.../database/Events/DatabaseRefreshed.php | 22 +
.../database/Events/MigrationEnded.php | 8 +
.../database/Events/MigrationEvent.php | 36 +
.../database/Events/MigrationStarted.php | 8 +
.../database/Events/MigrationsEnded.php | 8 +
.../database/Events/MigrationsEvent.php | 35 +
.../database/Events/MigrationsPruned.php | 43 +
.../database/Events/MigrationsStarted.php | 8 +
.../database/Events/ModelPruningFinished.php | 24 +
.../database/Events/ModelPruningStarting.php | 24 +
.../database/Events/ModelsPruned.php | 33 +
.../database/Events/NoPendingMigrations.php | 26 +
.../database/Events/QueryExecuted.php | 72 +
.../database/Events/SchemaDumped.php | 41 +
.../database/Events/SchemaLoaded.php | 41 +
.../database/Events/StatementPrepared.php | 33 +
.../database/Events/TransactionBeginning.php | 8 +
.../database/Events/TransactionCommitted.php | 8 +
.../database/Events/TransactionCommitting.php | 8 +
.../database/Events/TransactionRolledBack.php | 8 +
vendor/illuminate/database/Grammar.php | 316 ++
vendor/illuminate/database/LICENSE.md | 21 +
.../LazyLoadingViolationException.php | 39 +
.../database/LostConnectionException.php | 10 +
.../illuminate/database/MariaDbConnection.php | 102 +
.../database/MigrationServiceProvider.php | 226 +
.../DatabaseMigrationRepository.php | 239 +
.../database/Migrations/Migration.php | 30 +
.../database/Migrations/MigrationCreator.php | 231 +
.../MigrationRepositoryInterface.php | 96 +
.../database/Migrations/Migrator.php | 818 +++
.../Migrations/stubs/migration.create.stub | 27 +
.../database/Migrations/stubs/migration.stub | 24 +
.../Migrations/stubs/migration.update.stub | 28 +
.../MultipleColumnsSelectedException.php | 10 +
.../MultipleRecordsFoundException.php | 40 +
.../illuminate/database/MySqlConnection.php | 176 +
.../database/PostgresConnection.php | 117 +
vendor/illuminate/database/Query/Builder.php | 4394 +++++++++++++++
.../illuminate/database/Query/Expression.php | 34 +
.../database/Query/Grammars/Grammar.php | 1578 ++++++
.../Query/Grammars/MariaDbGrammar.php | 56 +
.../database/Query/Grammars/MySqlGrammar.php | 527 ++
.../Query/Grammars/PostgresGrammar.php | 828 +++
.../database/Query/Grammars/SQLiteGrammar.php | 460 ++
.../Query/Grammars/SqlServerGrammar.php | 585 ++
.../illuminate/database/Query/IndexHint.php | 33 +
.../illuminate/database/Query/JoinClause.php | 146 +
.../database/Query/JoinLateralClause.php | 8 +
.../Query/Processors/MariaDbProcessor.php | 8 +
.../Query/Processors/MySqlProcessor.php | 117 +
.../Query/Processors/PostgresProcessor.php | 171 +
.../database/Query/Processors/Processor.php | 123 +
.../Query/Processors/SQLiteProcessor.php | 115 +
.../Query/Processors/SqlServerProcessor.php | 136 +
vendor/illuminate/database/QueryException.php | 99 +
vendor/illuminate/database/README.md | 69 +
.../database/RecordNotFoundException.php | 10 +
.../database/RecordsNotFoundException.php | 10 +
.../illuminate/database/SQLiteConnection.php | 218 +
.../SQLiteDatabaseDoesNotExistException.php | 28 +
.../illuminate/database/Schema/Blueprint.php | 1889 +++++++
.../database/Schema/BlueprintState.php | 256 +
vendor/illuminate/database/Schema/Builder.php | 620 +++
.../database/Schema/ColumnDefinition.php | 38 +
.../Schema/ForeignIdColumnDefinition.php | 57 +
.../database/Schema/ForeignKeyDefinition.php | 96 +
.../database/Schema/Grammars/Grammar.php | 408 ++
.../Schema/Grammars/MariaDbGrammar.php | 58 +
.../database/Schema/Grammars/MySqlGrammar.php | 1371 +++++
.../Schema/Grammars/PostgresGrammar.php | 1235 +++++
.../Schema/Grammars/SQLiteGrammar.php | 1183 ++++
.../Schema/Grammars/SqlServerGrammar.php | 1072 ++++
.../database/Schema/IndexDefinition.php | 16 +
.../database/Schema/MariaDbBuilder.php | 8 +
.../database/Schema/MariaDbSchemaState.php | 18 +
.../database/Schema/MySqlBuilder.php | 168 +
.../database/Schema/MySqlSchemaState.php | 177 +
.../database/Schema/PostgresBuilder.php | 287 +
.../database/Schema/PostgresSchemaState.php | 95 +
.../database/Schema/SQLiteBuilder.php | 175 +
.../database/Schema/SchemaState.php | 142 +
.../database/Schema/SqlServerBuilder.php | 178 +
.../database/Schema/SqliteSchemaState.php | 103 +
vendor/illuminate/database/Seeder.php | 195 +
.../database/SqlServerConnection.php | 149 +
.../UniqueConstraintViolationException.php | 7 +
vendor/illuminate/database/composer.json | 51 +
vendor/illuminate/macroable/LICENSE.md | 21 +
.../illuminate/macroable/Traits/Macroable.php | 128 +
vendor/illuminate/macroable/composer.json | 33 +
.../support/AggregateServiceProvider.php | 52 +
vendor/illuminate/support/Benchmark.php | 69 +
vendor/illuminate/support/Carbon.php | 36 +
vendor/illuminate/support/Composer.php | 255 +
.../support/ConfigurationUrlParser.php | 191 +
vendor/illuminate/support/DateFactory.php | 231 +
.../illuminate/support/DefaultProviders.php | 103 +
.../support/Defer/DeferredCallback.php | 55 +
.../Defer/DeferredCallbackCollection.php | 157 +
vendor/illuminate/support/Env.php | 125 +
.../support/Exceptions/MathException.php | 10 +
vendor/illuminate/support/Facades/App.php | 159 +
vendor/illuminate/support/Facades/Artisan.php | 39 +
vendor/illuminate/support/Facades/Auth.php | 98 +
vendor/illuminate/support/Facades/Blade.php | 62 +
.../illuminate/support/Facades/Broadcast.php | 50 +
vendor/illuminate/support/Facades/Bus.php | 100 +
vendor/illuminate/support/Facades/Cache.php | 73 +
.../support/Facades/Concurrency.php | 36 +
vendor/illuminate/support/Facades/Config.php | 36 +
vendor/illuminate/support/Facades/Context.php | 56 +
vendor/illuminate/support/Facades/Cookie.php | 58 +
vendor/illuminate/support/Facades/Crypt.php | 30 +
vendor/illuminate/support/Facades/DB.php | 149 +
vendor/illuminate/support/Facades/Date.php | 122 +
vendor/illuminate/support/Facades/Event.php | 130 +
.../illuminate/support/Facades/Exceptions.php | 68 +
vendor/illuminate/support/Facades/Facade.php | 363 ++
vendor/illuminate/support/Facades/File.php | 72 +
vendor/illuminate/support/Facades/Gate.php | 48 +
vendor/illuminate/support/Facades/Hash.php | 36 +
vendor/illuminate/support/Facades/Http.php | 164 +
vendor/illuminate/support/Facades/Lang.php | 48 +
vendor/illuminate/support/Facades/Log.php | 51 +
vendor/illuminate/support/Facades/Mail.php | 91 +
.../support/Facades/Notification.php | 96 +
.../support/Facades/ParallelTesting.php | 34 +
.../illuminate/support/Facades/Password.php | 74 +
.../illuminate/support/Facades/Pipeline.php | 37 +
vendor/illuminate/support/Facades/Process.php | 75 +
vendor/illuminate/support/Facades/Queue.php | 102 +
.../support/Facades/RateLimiter.php | 34 +
.../illuminate/support/Facades/Redirect.php | 39 +
vendor/illuminate/support/Facades/Redis.php | 46 +
vendor/illuminate/support/Facades/Request.php | 202 +
.../illuminate/support/Facades/Response.php | 42 +
vendor/illuminate/support/Facades/Route.php | 118 +
.../illuminate/support/Facades/Schedule.php | 99 +
vendor/illuminate/support/Facades/Schema.php | 80 +
vendor/illuminate/support/Facades/Session.php | 87 +
vendor/illuminate/support/Facades/Storage.php | 173 +
vendor/illuminate/support/Facades/URL.php | 66 +
.../illuminate/support/Facades/Validator.php | 34 +
vendor/illuminate/support/Facades/View.php | 98 +
vendor/illuminate/support/Facades/Vite.php | 48 +
vendor/illuminate/support/Fluent.php | 299 +
.../support/HigherOrderTapProxy.php | 38 +
vendor/illuminate/support/HtmlString.php | 67 +
.../illuminate/support/InteractsWithTime.php | 83 +
vendor/illuminate/support/Js.php | 151 +
vendor/illuminate/support/LICENSE.md | 21 +
vendor/illuminate/support/Lottery.php | 281 +
vendor/illuminate/support/Manager.php | 193 +
vendor/illuminate/support/MessageBag.php | 444 ++
.../support/MultipleInstanceManager.php | 228 +
.../support/NamespacedItemResolver.php | 112 +
vendor/illuminate/support/Number.php | 388 ++
vendor/illuminate/support/Once.php | 100 +
vendor/illuminate/support/Onceable.php | 78 +
vendor/illuminate/support/Optional.php | 131 +
vendor/illuminate/support/Pluralizer.php | 127 +
.../support/Process/PhpExecutableFinder.php | 22 +
vendor/illuminate/support/ProcessUtils.php | 69 +
vendor/illuminate/support/Reflector.php | 170 +
vendor/illuminate/support/ServiceProvider.php | 584 ++
vendor/illuminate/support/Sleep.php | 544 ++
vendor/illuminate/support/Str.php | 2048 +++++++
vendor/illuminate/support/Stringable.php | 1497 +++++
.../support/Testing/Fakes/BatchFake.php | 169 +
.../Testing/Fakes/BatchRepositoryFake.php | 163 +
.../support/Testing/Fakes/BusFake.php | 901 +++
.../Testing/Fakes/ChainedBatchTruthTest.php | 37 +
.../support/Testing/Fakes/EventFake.php | 438 ++
.../Testing/Fakes/ExceptionHandlerFake.php | 276 +
.../illuminate/support/Testing/Fakes/Fake.php | 8 +
.../support/Testing/Fakes/MailFake.php | 591 ++
.../Testing/Fakes/NotificationFake.php | 401 ++
.../Testing/Fakes/PendingBatchFake.php | 49 +
.../Testing/Fakes/PendingChainFake.php | 56 +
.../support/Testing/Fakes/PendingMailFake.php | 53 +
.../support/Testing/Fakes/QueueFake.php | 616 ++
vendor/illuminate/support/Timebox.php | 86 +
.../support/Traits/CapsuleManagerTrait.php | 69 +
vendor/illuminate/support/Traits/Dumpable.php | 30 +
.../support/Traits/ForwardsCalls.php | 71 +
.../support/Traits/InteractsWithData.php | 420 ++
.../illuminate/support/Traits/Localizable.php | 34 +
.../support/Traits/ReflectsClosures.php | 89 +
vendor/illuminate/support/Traits/Tappable.php | 17 +
vendor/illuminate/support/Uri.php | 391 ++
vendor/illuminate/support/UriQueryString.php | 96 +
vendor/illuminate/support/ValidatedInput.php | 241 +
vendor/illuminate/support/ViewErrorBag.php | 131 +
vendor/illuminate/support/composer.json | 64 +
vendor/illuminate/support/functions.php | 53 +
vendor/illuminate/support/helpers.php | 528 ++
.../laravel/serializable-closure/LICENSE.md | 21 +
vendor/laravel/serializable-closure/README.md | 73 +
.../serializable-closure/composer.json | 53 +
.../src/Contracts/Serializable.php | 20 +
.../src/Contracts/Signer.php | 22 +
.../Exceptions/InvalidSignatureException.php | 19 +
.../Exceptions/MissingSecretKeyException.php | 19 +
.../PhpVersionNotSupportedException.php | 19 +
.../src/SerializableClosure.php | 126 +
.../src/Serializers/Native.php | 526 ++
.../src/Serializers/Signed.php | 91 +
.../serializable-closure/src/Signers/Hmac.php | 53 +
.../src/Support/ClosureScope.php | 22 +
.../src/Support/ClosureStream.php | 181 +
.../src/Support/ReflectionClosure.php | 1184 ++++
.../src/Support/SelfReference.php | 24 +
.../src/UnsignedSerializableClosure.php | 69 +
vendor/nesbot/carbon/.phpstorm.meta.php | 10 +
vendor/nesbot/carbon/LICENSE | 19 +
vendor/nesbot/carbon/bin/carbon | 23 +
vendor/nesbot/carbon/bin/carbon.bat | 4 +
vendor/nesbot/carbon/composer.json | 126 +
vendor/nesbot/carbon/extension.neon | 5 +
.../MessageFormatterMapperStrongType.php | 28 +
.../MessageFormatterMapperWeakType.php | 36 +
.../lazy/Carbon/ProtectedDatePeriod.php | 73 +
.../lazy/Carbon/TranslatorStrongType.php | 52 +
.../carbon/lazy/Carbon/TranslatorWeakType.php | 32 +
.../lazy/Carbon/UnprotectedDatePeriod.php | 20 +
vendor/nesbot/carbon/readme.md | 190 +
vendor/nesbot/carbon/sponsors.php | 234 +
.../carbon/src/Carbon/AbstractTranslator.php | 411 ++
vendor/nesbot/carbon/src/Carbon/Callback.php | 129 +
vendor/nesbot/carbon/src/Carbon/Carbon.php | 847 +++
.../src/Carbon/CarbonConverterInterface.php | 21 +
.../carbon/src/Carbon/CarbonImmutable.php | 890 +++
.../carbon/src/Carbon/CarbonInterface.php | 4934 +++++++++++++++++
.../carbon/src/Carbon/CarbonInterval.php | 3402 ++++++++++++
.../nesbot/carbon/src/Carbon/CarbonPeriod.php | 2579 +++++++++
.../src/Carbon/CarbonPeriodImmutable.php | 38 +
.../carbon/src/Carbon/CarbonTimeZone.php | 322 ++
.../nesbot/carbon/src/Carbon/Cli/Invoker.php | 40 +
.../Exceptions/BadComparisonUnitException.php | 50 +
.../BadFluentConstructorException.php | 51 +
.../Exceptions/BadFluentSetterException.php | 51 +
.../Exceptions/BadMethodCallException.php | 19 +
.../Exceptions/EndLessPeriodException.php | 21 +
.../src/Carbon/Exceptions/Exception.php | 19 +
.../Carbon/Exceptions/ImmutableException.php | 50 +
.../Exceptions/InvalidArgumentException.php | 19 +
.../Exceptions/InvalidCastException.php | 21 +
.../Exceptions/InvalidDateException.php | 69 +
.../Exceptions/InvalidFormatException.php | 21 +
.../Exceptions/InvalidIntervalException.php | 21 +
.../Exceptions/InvalidPeriodDateException.php | 21 +
.../InvalidPeriodParameterException.php | 21 +
.../Exceptions/InvalidTimeZoneException.php | 21 +
.../Exceptions/InvalidTypeException.php | 21 +
.../Exceptions/NotACarbonClassException.php | 56 +
.../Carbon/Exceptions/NotAPeriodException.php | 21 +
.../Exceptions/NotLocaleAwareException.php | 34 +
.../Carbon/Exceptions/OutOfRangeException.php | 103 +
.../Carbon/Exceptions/ParseErrorException.php | 90 +
.../Carbon/Exceptions/RuntimeException.php | 19 +
.../src/Carbon/Exceptions/UnitException.php | 21 +
.../Exceptions/UnitNotConfiguredException.php | 50 +
.../Exceptions/UnknownGetterException.php | 51 +
.../Exceptions/UnknownMethodException.php | 51 +
.../Exceptions/UnknownSetterException.php | 51 +
.../Exceptions/UnknownUnitException.php | 50 +
.../Exceptions/UnreachableException.php | 21 +
.../Exceptions/UnsupportedUnitException.php | 27 +
vendor/nesbot/carbon/src/Carbon/Factory.php | 846 +++
.../carbon/src/Carbon/FactoryImmutable.php | 192 +
vendor/nesbot/carbon/src/Carbon/Lang/aa.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/aa_DJ.php | 44 +
.../nesbot/carbon/src/Carbon/Lang/aa_ER.php | 28 +
.../carbon/src/Carbon/Lang/aa_ER@saaho.php | 28 +
.../nesbot/carbon/src/Carbon/Lang/aa_ET.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/af.php | 77 +
.../nesbot/carbon/src/Carbon/Lang/af_NA.php | 28 +
.../nesbot/carbon/src/Carbon/Lang/af_ZA.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/agq.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/agr.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/agr_PE.php | 44 +
vendor/nesbot/carbon/src/Carbon/Lang/ak.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ak_GH.php | 40 +
vendor/nesbot/carbon/src/Carbon/Lang/am.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/am_ET.php | 59 +
vendor/nesbot/carbon/src/Carbon/Lang/an.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/an_ES.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/anp.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/anp_IN.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/ar.php | 93 +
.../nesbot/carbon/src/Carbon/Lang/ar_AE.php | 29 +
.../nesbot/carbon/src/Carbon/Lang/ar_BH.php | 29 +
.../nesbot/carbon/src/Carbon/Lang/ar_DJ.php | 13 +
.../nesbot/carbon/src/Carbon/Lang/ar_DZ.php | 92 +
.../nesbot/carbon/src/Carbon/Lang/ar_EG.php | 29 +
.../nesbot/carbon/src/Carbon/Lang/ar_EH.php | 13 +
.../nesbot/carbon/src/Carbon/Lang/ar_ER.php | 13 +
.../nesbot/carbon/src/Carbon/Lang/ar_IL.php | 13 +
.../nesbot/carbon/src/Carbon/Lang/ar_IN.php | 26 +
.../nesbot/carbon/src/Carbon/Lang/ar_IQ.php | 29 +
.../nesbot/carbon/src/Carbon/Lang/ar_JO.php | 29 +
.../nesbot/carbon/src/Carbon/Lang/ar_KM.php | 13 +
.../nesbot/carbon/src/Carbon/Lang/ar_KW.php | 95 +
.../nesbot/carbon/src/Carbon/Lang/ar_LB.php | 29 +
.../nesbot/carbon/src/Carbon/Lang/ar_LY.php | 92 +
.../nesbot/carbon/src/Carbon/Lang/ar_MA.php | 92 +
.../nesbot/carbon/src/Carbon/Lang/ar_MR.php | 13 +
.../nesbot/carbon/src/Carbon/Lang/ar_OM.php | 29 +
.../nesbot/carbon/src/Carbon/Lang/ar_PS.php | 18 +
.../nesbot/carbon/src/Carbon/Lang/ar_QA.php | 29 +
.../nesbot/carbon/src/Carbon/Lang/ar_SA.php | 94 +
.../nesbot/carbon/src/Carbon/Lang/ar_SD.php | 29 +
.../nesbot/carbon/src/Carbon/Lang/ar_SO.php | 13 +
.../nesbot/carbon/src/Carbon/Lang/ar_SS.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/ar_SY.php | 29 +
.../carbon/src/Carbon/Lang/ar_Shakl.php | 95 +
.../nesbot/carbon/src/Carbon/Lang/ar_TD.php | 13 +
.../nesbot/carbon/src/Carbon/Lang/ar_TN.php | 91 +
.../nesbot/carbon/src/Carbon/Lang/ar_YE.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/as.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/as_IN.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/asa.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/ast.php | 59 +
.../nesbot/carbon/src/Carbon/Lang/ast_ES.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/ayc.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ayc_PE.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/az.php | 129 +
.../nesbot/carbon/src/Carbon/Lang/az_AZ.php | 21 +
.../nesbot/carbon/src/Carbon/Lang/az_Cyrl.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/az_IR.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/az_Latn.php | 29 +
vendor/nesbot/carbon/src/Carbon/Lang/bas.php | 32 +
vendor/nesbot/carbon/src/Carbon/Lang/be.php | 160 +
.../nesbot/carbon/src/Carbon/Lang/be_BY.php | 22 +
.../carbon/src/Carbon/Lang/be_BY@latin.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/bem.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/bem_ZM.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/ber.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ber_DZ.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/ber_MA.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/bez.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/bg.php | 108 +
.../nesbot/carbon/src/Carbon/Lang/bg_BG.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/bhb.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/bhb_IN.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/bho.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/bho_IN.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/bi.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/bi_VU.php | 54 +
vendor/nesbot/carbon/src/Carbon/Lang/bm.php | 70 +
vendor/nesbot/carbon/src/Carbon/Lang/bn.php | 100 +
.../nesbot/carbon/src/Carbon/Lang/bn_BD.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/bn_IN.php | 26 +
vendor/nesbot/carbon/src/Carbon/Lang/bo.php | 71 +
.../nesbot/carbon/src/Carbon/Lang/bo_CN.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/bo_IN.php | 29 +
vendor/nesbot/carbon/src/Carbon/Lang/br.php | 74 +
.../nesbot/carbon/src/Carbon/Lang/br_FR.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/brx.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/brx_IN.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/bs.php | 93 +
.../nesbot/carbon/src/Carbon/Lang/bs_BA.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php | 28 +
.../nesbot/carbon/src/Carbon/Lang/bs_Latn.php | 13 +
vendor/nesbot/carbon/src/Carbon/Lang/byn.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/byn_ER.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/ca.php | 117 +
.../nesbot/carbon/src/Carbon/Lang/ca_AD.php | 13 +
.../nesbot/carbon/src/Carbon/Lang/ca_ES.php | 12 +
.../carbon/src/Carbon/Lang/ca_ES_Valencia.php | 23 +
.../nesbot/carbon/src/Carbon/Lang/ca_FR.php | 13 +
.../nesbot/carbon/src/Carbon/Lang/ca_IT.php | 13 +
vendor/nesbot/carbon/src/Carbon/Lang/ccp.php | 28 +
.../nesbot/carbon/src/Carbon/Lang/ccp_IN.php | 14 +
vendor/nesbot/carbon/src/Carbon/Lang/ce.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ce_RU.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/cgg.php | 31 +
vendor/nesbot/carbon/src/Carbon/Lang/chr.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/chr_US.php | 59 +
vendor/nesbot/carbon/src/Carbon/Lang/ckb.php | 90 +
vendor/nesbot/carbon/src/Carbon/Lang/cmn.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/cmn_TW.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/crh.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/crh_UA.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/cs.php | 124 +
.../nesbot/carbon/src/Carbon/Lang/cs_CZ.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/csb.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/csb_PL.php | 41 +
vendor/nesbot/carbon/src/Carbon/Lang/cu.php | 52 +
vendor/nesbot/carbon/src/Carbon/Lang/cv.php | 65 +
.../nesbot/carbon/src/Carbon/Lang/cv_RU.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/cy.php | 79 +
.../nesbot/carbon/src/Carbon/Lang/cy_GB.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/da.php | 81 +
.../nesbot/carbon/src/Carbon/Lang/da_DK.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/da_GL.php | 19 +
vendor/nesbot/carbon/src/Carbon/Lang/dav.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/de.php | 135 +
.../nesbot/carbon/src/Carbon/Lang/de_AT.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/de_BE.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/de_CH.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/de_DE.php | 16 +
.../nesbot/carbon/src/Carbon/Lang/de_IT.php | 16 +
.../nesbot/carbon/src/Carbon/Lang/de_LI.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/de_LU.php | 20 +
vendor/nesbot/carbon/src/Carbon/Lang/dje.php | 40 +
vendor/nesbot/carbon/src/Carbon/Lang/doi.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/doi_IN.php | 32 +
vendor/nesbot/carbon/src/Carbon/Lang/dsb.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/dsb_DE.php | 60 +
vendor/nesbot/carbon/src/Carbon/Lang/dua.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/dv.php | 89 +
.../nesbot/carbon/src/Carbon/Lang/dv_MV.php | 87 +
vendor/nesbot/carbon/src/Carbon/Lang/dyo.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/dz.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/dz_BT.php | 44 +
vendor/nesbot/carbon/src/Carbon/Lang/ebu.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/ee.php | 56 +
.../nesbot/carbon/src/Carbon/Lang/ee_TG.php | 19 +
vendor/nesbot/carbon/src/Carbon/Lang/el.php | 89 +
.../nesbot/carbon/src/Carbon/Lang/el_CY.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/el_GR.php | 19 +
vendor/nesbot/carbon/src/Carbon/Lang/en.php | 95 +
.../nesbot/carbon/src/Carbon/Lang/en_001.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_150.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_AG.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/en_AI.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_AS.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_AT.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_AU.php | 30 +
.../nesbot/carbon/src/Carbon/Lang/en_BB.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_BE.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_BI.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_BM.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_BS.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_BW.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_BZ.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_CA.php | 30 +
.../nesbot/carbon/src/Carbon/Lang/en_CC.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_CH.php | 21 +
.../nesbot/carbon/src/Carbon/Lang/en_CK.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_CM.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_CX.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_CY.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/en_DE.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_DG.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_DK.php | 21 +
.../nesbot/carbon/src/Carbon/Lang/en_DM.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_ER.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_FI.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_FJ.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_FK.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_FM.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_GB.php | 29 +
.../nesbot/carbon/src/Carbon/Lang/en_GD.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_GG.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_GH.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_GI.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_GM.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_GU.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_GY.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_HK.php | 18 +
.../nesbot/carbon/src/Carbon/Lang/en_IE.php | 30 +
.../nesbot/carbon/src/Carbon/Lang/en_IL.php | 30 +
.../nesbot/carbon/src/Carbon/Lang/en_IM.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_IN.php | 25 +
.../nesbot/carbon/src/Carbon/Lang/en_IO.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_ISO.php | 22 +
.../nesbot/carbon/src/Carbon/Lang/en_JE.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_JM.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_KE.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_KI.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_KN.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_KY.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_LC.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_LR.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_LS.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_MG.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_MH.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_MO.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_MP.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_MS.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_MT.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_MU.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_MW.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_MY.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_NA.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_NF.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_NG.php | 17 +
.../nesbot/carbon/src/Carbon/Lang/en_NL.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_NR.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_NU.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_NZ.php | 30 +
.../nesbot/carbon/src/Carbon/Lang/en_PG.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_PH.php | 18 +
.../nesbot/carbon/src/Carbon/Lang/en_PK.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_PN.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_PR.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_PW.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_RW.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_SB.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_SC.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_SD.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/en_SE.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_SG.php | 23 +
.../nesbot/carbon/src/Carbon/Lang/en_SH.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_SI.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_SL.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_SS.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_SX.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_SZ.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_TC.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_TK.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_TO.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_TT.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_TV.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_TZ.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_UG.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_UM.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_US.php | 14 +
.../carbon/src/Carbon/Lang/en_US_Posix.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_VC.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_VG.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_VI.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_VU.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/en_WS.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/en_ZA.php | 25 +
.../nesbot/carbon/src/Carbon/Lang/en_ZM.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/en_ZW.php | 14 +
vendor/nesbot/carbon/src/Carbon/Lang/eo.php | 77 +
vendor/nesbot/carbon/src/Carbon/Lang/es.php | 125 +
.../nesbot/carbon/src/Carbon/Lang/es_419.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_AR.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_BO.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_BR.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/es_BZ.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/es_CL.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_CO.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_CR.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_CU.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/es_DO.php | 31 +
.../nesbot/carbon/src/Carbon/Lang/es_EA.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/es_EC.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_ES.php | 16 +
.../nesbot/carbon/src/Carbon/Lang/es_GQ.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/es_GT.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_HN.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_IC.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/es_MX.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/es_NI.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_PA.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_PE.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_PH.php | 22 +
.../nesbot/carbon/src/Carbon/Lang/es_PR.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_PY.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/es_SV.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/es_US.php | 38 +
.../nesbot/carbon/src/Carbon/Lang/es_UY.php | 21 +
.../nesbot/carbon/src/Carbon/Lang/es_VE.php | 19 +
vendor/nesbot/carbon/src/Carbon/Lang/et.php | 93 +
.../nesbot/carbon/src/Carbon/Lang/et_EE.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/eu.php | 67 +
.../nesbot/carbon/src/Carbon/Lang/eu_ES.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/ewo.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/fa.php | 84 +
.../nesbot/carbon/src/Carbon/Lang/fa_AF.php | 21 +
.../nesbot/carbon/src/Carbon/Lang/fa_IR.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/ff.php | 60 +
.../nesbot/carbon/src/Carbon/Lang/ff_CM.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/ff_GN.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/ff_MR.php | 21 +
.../nesbot/carbon/src/Carbon/Lang/ff_SN.php | 16 +
vendor/nesbot/carbon/src/Carbon/Lang/fi.php | 88 +
.../nesbot/carbon/src/Carbon/Lang/fi_FI.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/fil.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/fil_PH.php | 63 +
vendor/nesbot/carbon/src/Carbon/Lang/fo.php | 69 +
.../nesbot/carbon/src/Carbon/Lang/fo_DK.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/fo_FO.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/fr.php | 118 +
.../nesbot/carbon/src/Carbon/Lang/fr_BE.php | 16 +
.../nesbot/carbon/src/Carbon/Lang/fr_BF.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_BI.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_BJ.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_BL.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_CA.php | 25 +
.../nesbot/carbon/src/Carbon/Lang/fr_CD.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_CF.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_CG.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_CH.php | 24 +
.../nesbot/carbon/src/Carbon/Lang/fr_CI.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_CM.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/fr_DJ.php | 22 +
.../nesbot/carbon/src/Carbon/Lang/fr_DZ.php | 23 +
.../nesbot/carbon/src/Carbon/Lang/fr_FR.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_GA.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_GF.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_GN.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_GP.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_GQ.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_HT.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_KM.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_LU.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/fr_MA.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/fr_MC.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_MF.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_MG.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_ML.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_MQ.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_MR.php | 21 +
.../nesbot/carbon/src/Carbon/Lang/fr_MU.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_NC.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_NE.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_PF.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_PM.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_RE.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_RW.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_SC.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_SN.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_SY.php | 23 +
.../nesbot/carbon/src/Carbon/Lang/fr_TD.php | 21 +
.../nesbot/carbon/src/Carbon/Lang/fr_TG.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_TN.php | 22 +
.../nesbot/carbon/src/Carbon/Lang/fr_VU.php | 21 +
.../nesbot/carbon/src/Carbon/Lang/fr_WF.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/fr_YT.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/fur.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/fur_IT.php | 39 +
vendor/nesbot/carbon/src/Carbon/Lang/fy.php | 76 +
.../nesbot/carbon/src/Carbon/Lang/fy_DE.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/fy_NL.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/ga.php | 75 +
.../nesbot/carbon/src/Carbon/Lang/ga_IE.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/gd.php | 75 +
.../nesbot/carbon/src/Carbon/Lang/gd_GB.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/gez.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/gez_ER.php | 56 +
.../nesbot/carbon/src/Carbon/Lang/gez_ET.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/gl.php | 98 +
.../nesbot/carbon/src/Carbon/Lang/gl_ES.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/gom.php | 15 +
.../carbon/src/Carbon/Lang/gom_Latn.php | 77 +
vendor/nesbot/carbon/src/Carbon/Lang/gsw.php | 49 +
.../nesbot/carbon/src/Carbon/Lang/gsw_CH.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/gsw_FR.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/gsw_LI.php | 20 +
vendor/nesbot/carbon/src/Carbon/Lang/gu.php | 82 +
.../nesbot/carbon/src/Carbon/Lang/gu_IN.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/guz.php | 48 +
vendor/nesbot/carbon/src/Carbon/Lang/gv.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/gv_GB.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/ha.php | 60 +
.../nesbot/carbon/src/Carbon/Lang/ha_GH.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/ha_NE.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/ha_NG.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/hak.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/hak_TW.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/haw.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/he.php | 86 +
.../nesbot/carbon/src/Carbon/Lang/he_IL.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/hi.php | 82 +
.../nesbot/carbon/src/Carbon/Lang/hi_IN.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/hif.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/hif_FJ.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/hne.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/hne_IN.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/hr.php | 99 +
.../nesbot/carbon/src/Carbon/Lang/hr_BA.php | 32 +
.../nesbot/carbon/src/Carbon/Lang/hr_HR.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/hsb.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/hsb_DE.php | 60 +
vendor/nesbot/carbon/src/Carbon/Lang/ht.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ht_HT.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/hu.php | 118 +
.../nesbot/carbon/src/Carbon/Lang/hu_HU.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/hy.php | 90 +
.../nesbot/carbon/src/Carbon/Lang/hy_AM.php | 24 +
vendor/nesbot/carbon/src/Carbon/Lang/i18n.php | 23 +
vendor/nesbot/carbon/src/Carbon/Lang/ia.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ia_FR.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/id.php | 92 +
.../nesbot/carbon/src/Carbon/Lang/id_ID.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/ig.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ig_NG.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/ii.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/ik.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ik_CA.php | 51 +
vendor/nesbot/carbon/src/Carbon/Lang/in.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/is.php | 55 +
.../nesbot/carbon/src/Carbon/Lang/is_IS.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/it.php | 111 +
.../nesbot/carbon/src/Carbon/Lang/it_CH.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/it_IT.php | 16 +
.../nesbot/carbon/src/Carbon/Lang/it_SM.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/it_VA.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/iu.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/iu_CA.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/iw.php | 59 +
vendor/nesbot/carbon/src/Carbon/Lang/ja.php | 98 +
.../nesbot/carbon/src/Carbon/Lang/ja_JP.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/jgo.php | 14 +
vendor/nesbot/carbon/src/Carbon/Lang/jmc.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/jv.php | 71 +
vendor/nesbot/carbon/src/Carbon/Lang/ka.php | 204 +
.../nesbot/carbon/src/Carbon/Lang/ka_GE.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/kab.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/kab_DZ.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/kam.php | 51 +
vendor/nesbot/carbon/src/Carbon/Lang/kde.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/kea.php | 49 +
vendor/nesbot/carbon/src/Carbon/Lang/khq.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/ki.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/kk.php | 103 +
.../nesbot/carbon/src/Carbon/Lang/kk_KZ.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/kkj.php | 14 +
vendor/nesbot/carbon/src/Carbon/Lang/kl.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/kl_GL.php | 64 +
vendor/nesbot/carbon/src/Carbon/Lang/kln.php | 32 +
vendor/nesbot/carbon/src/Carbon/Lang/km.php | 71 +
.../nesbot/carbon/src/Carbon/Lang/km_KH.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/kn.php | 75 +
.../nesbot/carbon/src/Carbon/Lang/kn_IN.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/ko.php | 84 +
.../nesbot/carbon/src/Carbon/Lang/ko_KP.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/ko_KR.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/kok.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/kok_IN.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/ks.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ks_IN.php | 52 +
.../src/Carbon/Lang/ks_IN@devanagari.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/ksb.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/ksf.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/ksh.php | 57 +
vendor/nesbot/carbon/src/Carbon/Lang/ku.php | 57 +
.../nesbot/carbon/src/Carbon/Lang/ku_TR.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/kw.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/kw_GB.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/ky.php | 106 +
.../nesbot/carbon/src/Carbon/Lang/ky_KG.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/lag.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/lb.php | 85 +
.../nesbot/carbon/src/Carbon/Lang/lb_LU.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/lg.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/lg_UG.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/li.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/li_NL.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/lij.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/lij_IT.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/lkt.php | 42 +
vendor/nesbot/carbon/src/Carbon/Lang/ln.php | 60 +
.../nesbot/carbon/src/Carbon/Lang/ln_AO.php | 17 +
.../nesbot/carbon/src/Carbon/Lang/ln_CD.php | 16 +
.../nesbot/carbon/src/Carbon/Lang/ln_CF.php | 17 +
.../nesbot/carbon/src/Carbon/Lang/ln_CG.php | 17 +
vendor/nesbot/carbon/src/Carbon/Lang/lo.php | 62 +
.../nesbot/carbon/src/Carbon/Lang/lo_LA.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/lrc.php | 18 +
.../nesbot/carbon/src/Carbon/Lang/lrc_IQ.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/lt.php | 132 +
.../nesbot/carbon/src/Carbon/Lang/lt_LT.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/lu.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/luo.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/luy.php | 58 +
vendor/nesbot/carbon/src/Carbon/Lang/lv.php | 177 +
.../nesbot/carbon/src/Carbon/Lang/lv_LV.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/lzh.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/lzh_TW.php | 57 +
vendor/nesbot/carbon/src/Carbon/Lang/mag.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/mag_IN.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/mai.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/mai_IN.php | 52 +
vendor/nesbot/carbon/src/Carbon/Lang/mas.php | 52 +
.../nesbot/carbon/src/Carbon/Lang/mas_TZ.php | 14 +
vendor/nesbot/carbon/src/Carbon/Lang/mer.php | 44 +
vendor/nesbot/carbon/src/Carbon/Lang/mfe.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/mfe_MU.php | 54 +
vendor/nesbot/carbon/src/Carbon/Lang/mg.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/mg_MG.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/mgh.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/mgo.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/mhr.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/mhr_RU.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/mi.php | 66 +
.../nesbot/carbon/src/Carbon/Lang/mi_NZ.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/miq.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/miq_NI.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/mjw.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/mjw_IN.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/mk.php | 110 +
.../nesbot/carbon/src/Carbon/Lang/mk_MK.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/ml.php | 76 +
.../nesbot/carbon/src/Carbon/Lang/ml_IN.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/mn.php | 116 +
.../nesbot/carbon/src/Carbon/Lang/mn_MN.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/mni.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/mni_IN.php | 36 +
vendor/nesbot/carbon/src/Carbon/Lang/mo.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/mr.php | 86 +
.../nesbot/carbon/src/Carbon/Lang/mr_IN.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/ms.php | 104 +
.../nesbot/carbon/src/Carbon/Lang/ms_BN.php | 22 +
.../nesbot/carbon/src/Carbon/Lang/ms_MY.php | 18 +
.../nesbot/carbon/src/Carbon/Lang/ms_SG.php | 22 +
vendor/nesbot/carbon/src/Carbon/Lang/mt.php | 65 +
.../nesbot/carbon/src/Carbon/Lang/mt_MT.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/mua.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/my.php | 70 +
.../nesbot/carbon/src/Carbon/Lang/my_MM.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/mzn.php | 25 +
vendor/nesbot/carbon/src/Carbon/Lang/nan.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/nan_TW.php | 56 +
.../carbon/src/Carbon/Lang/nan_TW@latin.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/naq.php | 52 +
vendor/nesbot/carbon/src/Carbon/Lang/nb.php | 84 +
.../nesbot/carbon/src/Carbon/Lang/nb_NO.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/nb_SJ.php | 18 +
vendor/nesbot/carbon/src/Carbon/Lang/nd.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/nds.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/nds_DE.php | 60 +
.../nesbot/carbon/src/Carbon/Lang/nds_NL.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/ne.php | 82 +
.../nesbot/carbon/src/Carbon/Lang/ne_IN.php | 25 +
.../nesbot/carbon/src/Carbon/Lang/ne_NP.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/nhn.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/nhn_MX.php | 51 +
vendor/nesbot/carbon/src/Carbon/Lang/niu.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/niu_NU.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/nl.php | 113 +
.../nesbot/carbon/src/Carbon/Lang/nl_AW.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/nl_BE.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/nl_BQ.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/nl_CW.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/nl_NL.php | 24 +
.../nesbot/carbon/src/Carbon/Lang/nl_SR.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/nl_SX.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/nmg.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/nn.php | 78 +
.../nesbot/carbon/src/Carbon/Lang/nn_NO.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/nnh.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/no.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/nr.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/nr_ZA.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/nso.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/nso_ZA.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/nus.php | 36 +
vendor/nesbot/carbon/src/Carbon/Lang/nyn.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/oc.php | 101 +
.../nesbot/carbon/src/Carbon/Lang/oc_FR.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/om.php | 61 +
.../nesbot/carbon/src/Carbon/Lang/om_ET.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/om_KE.php | 14 +
vendor/nesbot/carbon/src/Carbon/Lang/or.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/or_IN.php | 51 +
vendor/nesbot/carbon/src/Carbon/Lang/os.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/os_RU.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/pa.php | 76 +
.../nesbot/carbon/src/Carbon/Lang/pa_Arab.php | 26 +
.../nesbot/carbon/src/Carbon/Lang/pa_Guru.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/pa_IN.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/pa_PK.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/pap.php | 39 +
.../nesbot/carbon/src/Carbon/Lang/pap_AW.php | 16 +
.../nesbot/carbon/src/Carbon/Lang/pap_CW.php | 16 +
vendor/nesbot/carbon/src/Carbon/Lang/pl.php | 113 +
.../nesbot/carbon/src/Carbon/Lang/pl_PL.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/prg.php | 52 +
vendor/nesbot/carbon/src/Carbon/Lang/ps.php | 55 +
.../nesbot/carbon/src/Carbon/Lang/ps_AF.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/pt.php | 111 +
.../nesbot/carbon/src/Carbon/Lang/pt_AO.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/pt_BR.php | 39 +
.../nesbot/carbon/src/Carbon/Lang/pt_CH.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/pt_CV.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/pt_GQ.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/pt_GW.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/pt_LU.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/pt_MO.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/pt_MZ.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/pt_PT.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/pt_ST.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/pt_TL.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/qu.php | 22 +
.../nesbot/carbon/src/Carbon/Lang/qu_BO.php | 14 +
.../nesbot/carbon/src/Carbon/Lang/qu_EC.php | 14 +
vendor/nesbot/carbon/src/Carbon/Lang/quz.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/quz_PE.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/raj.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/raj_IN.php | 48 +
vendor/nesbot/carbon/src/Carbon/Lang/rm.php | 51 +
vendor/nesbot/carbon/src/Carbon/Lang/rn.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/ro.php | 77 +
.../nesbot/carbon/src/Carbon/Lang/ro_MD.php | 21 +
.../nesbot/carbon/src/Carbon/Lang/ro_RO.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/rof.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/ru.php | 174 +
.../nesbot/carbon/src/Carbon/Lang/ru_BY.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/ru_KG.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/ru_KZ.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/ru_MD.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/ru_RU.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/ru_UA.php | 20 +
vendor/nesbot/carbon/src/Carbon/Lang/rw.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/rw_RW.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/rwk.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/sa.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/sa_IN.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/sah.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/sah_RU.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/saq.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/sat.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/sat_IN.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/sbp.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/sc.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/sc_IT.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/sd.php | 81 +
.../nesbot/carbon/src/Carbon/Lang/sd_IN.php | 26 +
.../src/Carbon/Lang/sd_IN@devanagari.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/se.php | 73 +
.../nesbot/carbon/src/Carbon/Lang/se_FI.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/se_NO.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/se_SE.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/seh.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/ses.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/sg.php | 52 +
vendor/nesbot/carbon/src/Carbon/Lang/sgs.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/sgs_LT.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/sh.php | 58 +
vendor/nesbot/carbon/src/Carbon/Lang/shi.php | 57 +
.../carbon/src/Carbon/Lang/shi_Latn.php | 33 +
.../carbon/src/Carbon/Lang/shi_Tfng.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/shn.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/shn_MM.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/shs.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/shs_CA.php | 39 +
vendor/nesbot/carbon/src/Carbon/Lang/si.php | 78 +
.../nesbot/carbon/src/Carbon/Lang/si_LK.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/sid.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/sid_ET.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/sk.php | 160 +
.../nesbot/carbon/src/Carbon/Lang/sk_SK.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/sl.php | 129 +
.../nesbot/carbon/src/Carbon/Lang/sl_SI.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/sm.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/sm_WS.php | 54 +
vendor/nesbot/carbon/src/Carbon/Lang/smn.php | 57 +
vendor/nesbot/carbon/src/Carbon/Lang/sn.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/so.php | 74 +
.../nesbot/carbon/src/Carbon/Lang/so_DJ.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/so_ET.php | 16 +
.../nesbot/carbon/src/Carbon/Lang/so_KE.php | 16 +
.../nesbot/carbon/src/Carbon/Lang/so_SO.php | 16 +
vendor/nesbot/carbon/src/Carbon/Lang/sq.php | 79 +
.../nesbot/carbon/src/Carbon/Lang/sq_AL.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/sq_MK.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/sq_XK.php | 19 +
vendor/nesbot/carbon/src/Carbon/Lang/sr.php | 98 +
.../nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php | 97 +
.../carbon/src/Carbon/Lang/sr_Cyrl_BA.php | 33 +
.../carbon/src/Carbon/Lang/sr_Cyrl_ME.php | 103 +
.../carbon/src/Carbon/Lang/sr_Cyrl_XK.php | 24 +
.../nesbot/carbon/src/Carbon/Lang/sr_Latn.php | 12 +
.../carbon/src/Carbon/Lang/sr_Latn_BA.php | 33 +
.../carbon/src/Carbon/Lang/sr_Latn_ME.php | 61 +
.../carbon/src/Carbon/Lang/sr_Latn_XK.php | 24 +
.../nesbot/carbon/src/Carbon/Lang/sr_ME.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/sr_RS.php | 16 +
.../carbon/src/Carbon/Lang/sr_RS@latin.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/ss.php | 78 +
.../nesbot/carbon/src/Carbon/Lang/ss_ZA.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/st.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/st_ZA.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/sv.php | 87 +
.../nesbot/carbon/src/Carbon/Lang/sv_AX.php | 19 +
.../nesbot/carbon/src/Carbon/Lang/sv_FI.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/sv_SE.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/sw.php | 74 +
.../nesbot/carbon/src/Carbon/Lang/sw_CD.php | 17 +
.../nesbot/carbon/src/Carbon/Lang/sw_KE.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/sw_TZ.php | 28 +
.../nesbot/carbon/src/Carbon/Lang/sw_UG.php | 17 +
vendor/nesbot/carbon/src/Carbon/Lang/szl.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/szl_PL.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/ta.php | 97 +
.../nesbot/carbon/src/Carbon/Lang/ta_IN.php | 27 +
.../nesbot/carbon/src/Carbon/Lang/ta_LK.php | 28 +
.../nesbot/carbon/src/Carbon/Lang/ta_MY.php | 28 +
.../nesbot/carbon/src/Carbon/Lang/ta_SG.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/tcy.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/tcy_IN.php | 40 +
vendor/nesbot/carbon/src/Carbon/Lang/te.php | 89 +
.../nesbot/carbon/src/Carbon/Lang/te_IN.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/teo.php | 28 +
.../nesbot/carbon/src/Carbon/Lang/teo_KE.php | 14 +
vendor/nesbot/carbon/src/Carbon/Lang/tet.php | 64 +
vendor/nesbot/carbon/src/Carbon/Lang/tg.php | 104 +
.../nesbot/carbon/src/Carbon/Lang/tg_TJ.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/th.php | 73 +
.../nesbot/carbon/src/Carbon/Lang/th_TH.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/the.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/the_NP.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/ti.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ti_ER.php | 56 +
.../nesbot/carbon/src/Carbon/Lang/ti_ET.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/tig.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/tig_ER.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/tk.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/tk_TM.php | 67 +
vendor/nesbot/carbon/src/Carbon/Lang/tl.php | 61 +
.../nesbot/carbon/src/Carbon/Lang/tl_PH.php | 18 +
vendor/nesbot/carbon/src/Carbon/Lang/tlh.php | 72 +
vendor/nesbot/carbon/src/Carbon/Lang/tn.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/tn_ZA.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/to.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/to_TO.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/tpi.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/tpi_PG.php | 56 +
vendor/nesbot/carbon/src/Carbon/Lang/tr.php | 121 +
.../nesbot/carbon/src/Carbon/Lang/tr_CY.php | 23 +
.../nesbot/carbon/src/Carbon/Lang/tr_TR.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/ts.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ts_ZA.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/tt.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/tt_RU.php | 39 +
.../carbon/src/Carbon/Lang/tt_RU@iqtelif.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/twq.php | 14 +
vendor/nesbot/carbon/src/Carbon/Lang/tzl.php | 65 +
vendor/nesbot/carbon/src/Carbon/Lang/tzm.php | 57 +
.../carbon/src/Carbon/Lang/tzm_Latn.php | 64 +
vendor/nesbot/carbon/src/Carbon/Lang/ug.php | 84 +
.../nesbot/carbon/src/Carbon/Lang/ug_CN.php | 17 +
vendor/nesbot/carbon/src/Carbon/Lang/uk.php | 190 +
.../nesbot/carbon/src/Carbon/Lang/uk_UA.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/unm.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/unm_US.php | 58 +
vendor/nesbot/carbon/src/Carbon/Lang/ur.php | 94 +
.../nesbot/carbon/src/Carbon/Lang/ur_IN.php | 26 +
.../nesbot/carbon/src/Carbon/Lang/ur_PK.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/uz.php | 85 +
.../nesbot/carbon/src/Carbon/Lang/uz_Arab.php | 28 +
.../nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php | 20 +
.../nesbot/carbon/src/Carbon/Lang/uz_Latn.php | 74 +
.../nesbot/carbon/src/Carbon/Lang/uz_UZ.php | 27 +
.../carbon/src/Carbon/Lang/uz_UZ@cyrillic.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/vai.php | 35 +
.../carbon/src/Carbon/Lang/vai_Latn.php | 27 +
.../carbon/src/Carbon/Lang/vai_Vaii.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/ve.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/ve_ZA.php | 50 +
vendor/nesbot/carbon/src/Carbon/Lang/vi.php | 76 +
.../nesbot/carbon/src/Carbon/Lang/vi_VN.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/vo.php | 52 +
vendor/nesbot/carbon/src/Carbon/Lang/vun.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/wa.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/wa_BE.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/wae.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/wae_CH.php | 31 +
vendor/nesbot/carbon/src/Carbon/Lang/wal.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/wal_ET.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/wo.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/wo_SN.php | 39 +
vendor/nesbot/carbon/src/Carbon/Lang/xh.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/xh_ZA.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/xog.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/yav.php | 28 +
vendor/nesbot/carbon/src/Carbon/Lang/yi.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/yi_US.php | 55 +
vendor/nesbot/carbon/src/Carbon/Lang/yo.php | 65 +
.../nesbot/carbon/src/Carbon/Lang/yo_BJ.php | 28 +
.../nesbot/carbon/src/Carbon/Lang/yo_NG.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/yue.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/yue_HK.php | 28 +
.../carbon/src/Carbon/Lang/yue_Hans.php | 12 +
.../carbon/src/Carbon/Lang/yue_Hant.php | 12 +
vendor/nesbot/carbon/src/Carbon/Lang/yuw.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/yuw_PG.php | 27 +
vendor/nesbot/carbon/src/Carbon/Lang/zgh.php | 80 +
vendor/nesbot/carbon/src/Carbon/Lang/zh.php | 29 +
.../nesbot/carbon/src/Carbon/Lang/zh_CN.php | 33 +
.../nesbot/carbon/src/Carbon/Lang/zh_HK.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/zh_Hans.php | 102 +
.../carbon/src/Carbon/Lang/zh_Hans_HK.php | 12 +
.../carbon/src/Carbon/Lang/zh_Hans_MO.php | 12 +
.../carbon/src/Carbon/Lang/zh_Hans_SG.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/zh_Hant.php | 104 +
.../carbon/src/Carbon/Lang/zh_Hant_HK.php | 12 +
.../carbon/src/Carbon/Lang/zh_Hant_MO.php | 12 +
.../carbon/src/Carbon/Lang/zh_Hant_TW.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/zh_MO.php | 21 +
.../nesbot/carbon/src/Carbon/Lang/zh_SG.php | 26 +
.../nesbot/carbon/src/Carbon/Lang/zh_TW.php | 12 +
.../nesbot/carbon/src/Carbon/Lang/zh_YUE.php | 20 +
vendor/nesbot/carbon/src/Carbon/Lang/zu.php | 15 +
.../nesbot/carbon/src/Carbon/Lang/zu_ZA.php | 55 +
vendor/nesbot/carbon/src/Carbon/Language.php | 271 +
.../src/Carbon/Laravel/ServiceProvider.php | 129 +
.../carbon/src/Carbon/List/languages.php | 1241 +++++
.../nesbot/carbon/src/Carbon/List/regions.php | 292 +
.../MessageFormatterMapper.php | 46 +
vendor/nesbot/carbon/src/Carbon/Month.php | 79 +
.../src/Carbon/PHPStan/MacroExtension.php | 137 +
.../Carbon/PHPStan/MacroMethodReflection.php | 124 +
.../carbon/src/Carbon/Traits/Boundaries.php | 469 ++
.../nesbot/carbon/src/Carbon/Traits/Cast.php | 48 +
.../carbon/src/Carbon/Traits/Comparison.php | 1333 +++++
.../carbon/src/Carbon/Traits/Converter.php | 556 ++
.../carbon/src/Carbon/Traits/Creator.php | 938 ++++
.../nesbot/carbon/src/Carbon/Traits/Date.php | 2971 ++++++++++
.../Traits/DeprecatedPeriodProperties.php | 83 +
.../carbon/src/Carbon/Traits/Difference.php | 855 +++
.../src/Carbon/Traits/IntervalRounding.php | 59 +
.../carbon/src/Carbon/Traits/IntervalStep.php | 94 +
.../carbon/src/Carbon/Traits/LocalFactory.php | 67 +
.../carbon/src/Carbon/Traits/Localization.php | 728 +++
.../nesbot/carbon/src/Carbon/Traits/Macro.php | 109 +
.../src/Carbon/Traits/MagicParameter.php | 35 +
.../nesbot/carbon/src/Carbon/Traits/Mixin.php | 208 +
.../carbon/src/Carbon/Traits/Modifiers.php | 476 ++
.../carbon/src/Carbon/Traits/Mutability.php | 69 +
.../Carbon/Traits/ObjectInitialisation.php | 24 +
.../carbon/src/Carbon/Traits/Options.php | 213 +
.../carbon/src/Carbon/Traits/Rounding.php | 226 +
.../src/Carbon/Traits/Serialization.php | 318 ++
.../src/Carbon/Traits/StaticLocalization.php | 81 +
.../src/Carbon/Traits/StaticOptions.php | 164 +
.../nesbot/carbon/src/Carbon/Traits/Test.php | 185 +
.../carbon/src/Carbon/Traits/Timestamp.php | 191 +
.../src/Carbon/Traits/ToStringFormat.php | 52 +
.../nesbot/carbon/src/Carbon/Traits/Units.php | 469 ++
.../nesbot/carbon/src/Carbon/Traits/Week.php | 223 +
.../nesbot/carbon/src/Carbon/Translator.php | 34 +
.../carbon/src/Carbon/TranslatorImmutable.php | 100 +
.../Carbon/TranslatorStrongTypeInterface.php | 24 +
vendor/nesbot/carbon/src/Carbon/Unit.php | 119 +
vendor/nesbot/carbon/src/Carbon/WeekDay.php | 68 +
.../nesbot/carbon/src/Carbon/WrapperClock.php | 187 +
vendor/nikic/fast-route/.gitignore | 5 +
vendor/nikic/fast-route/.hhconfig | 1 +
vendor/nikic/fast-route/.travis.yml | 20 +
vendor/nikic/fast-route/FastRoute.hhi | 126 +
vendor/nikic/fast-route/LICENSE | 31 +
vendor/nikic/fast-route/README.md | 313 ++
vendor/nikic/fast-route/composer.json | 24 +
vendor/nikic/fast-route/phpunit.xml | 24 +
vendor/nikic/fast-route/psalm.xml | 28 +
.../fast-route/src/BadRouteException.php | 7 +
vendor/nikic/fast-route/src/DataGenerator.php | 26 +
.../src/DataGenerator/CharCountBased.php | 31 +
.../src/DataGenerator/GroupCountBased.php | 30 +
.../src/DataGenerator/GroupPosBased.php | 27 +
.../src/DataGenerator/MarkBased.php | 27 +
.../src/DataGenerator/RegexBasedAbstract.php | 186 +
vendor/nikic/fast-route/src/Dispatcher.php | 26 +
.../src/Dispatcher/CharCountBased.php | 31 +
.../src/Dispatcher/GroupCountBased.php | 31 +
.../src/Dispatcher/GroupPosBased.php | 33 +
.../fast-route/src/Dispatcher/MarkBased.php | 31 +
.../src/Dispatcher/RegexBasedAbstract.php | 88 +
vendor/nikic/fast-route/src/Route.php | 47 +
.../nikic/fast-route/src/RouteCollector.php | 152 +
vendor/nikic/fast-route/src/RouteParser.php | 37 +
.../nikic/fast-route/src/RouteParser/Std.php | 87 +
vendor/nikic/fast-route/src/bootstrap.php | 12 +
vendor/nikic/fast-route/src/functions.php | 74 +
.../test/Dispatcher/CharCountBasedTest.php | 16 +
.../test/Dispatcher/DispatcherTest.php | 581 ++
.../test/Dispatcher/GroupCountBasedTest.php | 16 +
.../test/Dispatcher/GroupPosBasedTest.php | 16 +
.../test/Dispatcher/MarkBasedTest.php | 24 +
.../HackTypechecker/HackTypecheckerTest.php | 44 +
.../HackTypechecker/fixtures/all_options.php | 29 +
.../fixtures/empty_options.php | 11 +
.../HackTypechecker/fixtures/no_options.php | 11 +
.../fast-route/test/RouteCollectorTest.php | 108 +
.../fast-route/test/RouteParser/StdTest.php | 154 +
vendor/nikic/fast-route/test/bootstrap.php | 11 +
vendor/psr/clock/CHANGELOG.md | 11 +
vendor/psr/clock/LICENSE | 19 +
vendor/psr/clock/README.md | 61 +
vendor/psr/clock/composer.json | 21 +
vendor/psr/clock/src/ClockInterface.php | 13 +
vendor/psr/container/.gitignore | 3 +
vendor/psr/container/LICENSE | 21 +
vendor/psr/container/README.md | 13 +
vendor/psr/container/composer.json | 27 +
.../src/ContainerExceptionInterface.php | 12 +
.../psr/container/src/ContainerInterface.php | 36 +
.../src/NotFoundExceptionInterface.php | 10 +
vendor/psr/log/LICENSE | 19 +
vendor/psr/log/README.md | 58 +
vendor/psr/log/composer.json | 26 +
vendor/psr/log/src/AbstractLogger.php | 15 +
.../psr/log/src/InvalidArgumentException.php | 7 +
vendor/psr/log/src/LogLevel.php | 18 +
vendor/psr/log/src/LoggerAwareInterface.php | 14 +
vendor/psr/log/src/LoggerAwareTrait.php | 22 +
vendor/psr/log/src/LoggerInterface.php | 98 +
vendor/psr/log/src/LoggerTrait.php | 98 +
vendor/psr/log/src/NullLogger.php | 26 +
vendor/psr/simple-cache/.editorconfig | 12 +
vendor/psr/simple-cache/LICENSE.md | 21 +
vendor/psr/simple-cache/README.md | 8 +
vendor/psr/simple-cache/composer.json | 25 +
.../psr/simple-cache/src/CacheException.php | 10 +
.../psr/simple-cache/src/CacheInterface.php | 114 +
.../src/InvalidArgumentException.php | 13 +
vendor/symfony/clock/CHANGELOG.md | 25 +
vendor/symfony/clock/Clock.php | 89 +
vendor/symfony/clock/ClockAwareTrait.php | 38 +
vendor/symfony/clock/ClockInterface.php | 24 +
vendor/symfony/clock/DatePoint.php | 169 +
vendor/symfony/clock/LICENSE | 19 +
vendor/symfony/clock/MockClock.php | 98 +
vendor/symfony/clock/MonotonicClock.php | 93 +
vendor/symfony/clock/NativeClock.php | 67 +
vendor/symfony/clock/README.md | 47 +
vendor/symfony/clock/Resources/now.php | 28 +
.../clock/Test/ClockSensitiveTrait.php | 77 +
vendor/symfony/clock/composer.json | 34 +
.../deprecation-contracts/CHANGELOG.md | 5 +
vendor/symfony/deprecation-contracts/LICENSE | 19 +
.../symfony/deprecation-contracts/README.md | 26 +
.../deprecation-contracts/composer.json | 35 +
.../deprecation-contracts/function.php | 27 +
vendor/symfony/polyfill-mbstring/LICENSE | 19 +
vendor/symfony/polyfill-mbstring/Mbstring.php | 1045 ++++
vendor/symfony/polyfill-mbstring/README.md | 13 +
.../Resources/unidata/caseFolding.php | 119 +
.../Resources/unidata/lowerCase.php | 1397 +++++
.../Resources/unidata/titleCaseRegexp.php | 5 +
.../Resources/unidata/upperCase.php | 1489 +++++
.../symfony/polyfill-mbstring/bootstrap.php | 172 +
.../symfony/polyfill-mbstring/bootstrap80.php | 167 +
.../symfony/polyfill-mbstring/composer.json | 38 +
vendor/symfony/polyfill-php83/LICENSE | 19 +
vendor/symfony/polyfill-php83/Php83.php | 197 +
vendor/symfony/polyfill-php83/README.md | 22 +
.../Resources/stubs/DateError.php | 16 +
.../Resources/stubs/DateException.php | 16 +
.../stubs/DateInvalidOperationException.php | 16 +
.../stubs/DateInvalidTimeZoneException.php | 16 +
.../DateMalformedIntervalStringException.php | 16 +
.../DateMalformedPeriodStringException.php | 16 +
.../stubs/DateMalformedStringException.php | 16 +
.../Resources/stubs/DateObjectError.php | 16 +
.../Resources/stubs/DateRangeError.php | 16 +
.../Resources/stubs/Override.php | 20 +
.../Resources/stubs/SQLite3Exception.php | 16 +
vendor/symfony/polyfill-php83/bootstrap.php | 50 +
vendor/symfony/polyfill-php83/bootstrap81.php | 22 +
vendor/symfony/polyfill-php83/composer.json | 33 +
.../translation-contracts/CHANGELOG.md | 5 +
vendor/symfony/translation-contracts/LICENSE | 19 +
.../LocaleAwareInterface.php | 29 +
.../symfony/translation-contracts/README.md | 9 +
.../Test/TranslatorTest.php | 385 ++
.../TranslatableInterface.php | 20 +
.../TranslatorInterface.php | 68 +
.../translation-contracts/TranslatorTrait.php | 225 +
.../translation-contracts/composer.json | 37 +
vendor/symfony/translation/CHANGELOG.md | 230 +
.../Catalogue/AbstractOperation.php | 183 +
.../translation/Catalogue/MergeOperation.php | 69 +
.../Catalogue/OperationInterface.php | 61 +
.../translation/Catalogue/TargetOperation.php | 83 +
.../CatalogueMetadataAwareInterface.php | 44 +
.../Command/TranslationLintCommand.php | 129 +
.../Command/TranslationPullCommand.php | 176 +
.../Command/TranslationPushCommand.php | 176 +
.../translation/Command/TranslationTrait.php | 77 +
.../translation/Command/XliffLintCommand.php | 288 +
.../TranslationDataCollector.php | 146 +
.../translation/DataCollectorTranslator.php | 130 +
.../DataCollectorTranslatorPass.php | 36 +
.../LoggingTranslatorPass.php | 59 +
.../TranslationDumperPass.php | 35 +
.../TranslationExtractorPass.php | 40 +
.../DependencyInjection/TranslatorPass.php | 91 +
.../TranslatorPathsPass.php | 142 +
.../translation/Dumper/CsvFileDumper.php | 54 +
.../translation/Dumper/DumperInterface.php | 30 +
.../symfony/translation/Dumper/FileDumper.php | 101 +
.../translation/Dumper/IcuResFileDumper.php | 95 +
.../translation/Dumper/IniFileDumper.php | 39 +
.../translation/Dumper/JsonFileDumper.php | 34 +
.../translation/Dumper/MoFileDumper.php | 73 +
.../translation/Dumper/PhpFileDumper.php | 32 +
.../translation/Dumper/PoFileDumper.php | 131 +
.../translation/Dumper/QtFileDumper.php | 55 +
.../translation/Dumper/XliffFileDumper.php | 227 +
.../translation/Dumper/YamlFileDumper.php | 54 +
.../Exception/ExceptionInterface.php | 21 +
.../Exception/IncompleteDsnException.php | 24 +
.../Exception/InvalidArgumentException.php | 21 +
.../Exception/InvalidResourceException.php | 21 +
.../translation/Exception/LogicException.php | 21 +
.../MissingRequiredOptionException.php | 25 +
.../Exception/NotFoundResourceException.php | 21 +
.../Exception/ProviderException.php | 43 +
.../Exception/ProviderExceptionInterface.php | 23 +
.../Exception/RuntimeException.php | 21 +
.../Exception/UnsupportedSchemeException.php | 58 +
.../Extractor/AbstractFileExtractor.php | 61 +
.../translation/Extractor/ChainExtractor.php | 51 +
.../Extractor/ExtractorInterface.php | 39 +
.../translation/Extractor/PhpAstExtractor.php | 85 +
.../Extractor/Visitor/AbstractVisitor.php | 135 +
.../Extractor/Visitor/ConstraintVisitor.php | 112 +
.../Extractor/Visitor/TransMethodVisitor.php | 65 +
.../Visitor/TranslatableMessageVisitor.php | 65 +
.../translation/Formatter/IntlFormatter.php | 57 +
.../Formatter/IntlFormatterInterface.php | 27 +
.../Formatter/MessageFormatter.php | 46 +
.../Formatter/MessageFormatterInterface.php | 28 +
.../translation/IdentityTranslator.php | 26 +
vendor/symfony/translation/LICENSE | 19 +
.../translation/Loader/ArrayLoader.php | 57 +
.../translation/Loader/CsvFileLoader.php | 69 +
.../symfony/translation/Loader/FileLoader.php | 57 +
.../translation/Loader/IcuDatFileLoader.php | 58 +
.../translation/Loader/IcuResFileLoader.php | 86 +
.../translation/Loader/IniFileLoader.php | 25 +
.../translation/Loader/JsonFileLoader.php | 51 +
.../translation/Loader/LoaderInterface.php | 32 +
.../translation/Loader/MoFileLoader.php | 138 +
.../translation/Loader/PhpFileLoader.php | 35 +
.../translation/Loader/PoFileLoader.php | 147 +
.../translation/Loader/QtFileLoader.php | 78 +
.../translation/Loader/XliffFileLoader.php | 248 +
.../translation/Loader/YamlFileLoader.php | 51 +
vendor/symfony/translation/LocaleSwitcher.php | 83 +
.../symfony/translation/LoggingTranslator.php | 98 +
.../symfony/translation/MessageCatalogue.php | 306 +
.../translation/MessageCatalogueInterface.php | 122 +
.../translation/MetadataAwareInterface.php | 44 +
.../Provider/AbstractProviderFactory.php | 37 +
vendor/symfony/translation/Provider/Dsn.php | 110 +
.../Provider/FilteringProvider.php | 58 +
.../translation/Provider/NullProvider.php | 39 +
.../Provider/NullProviderFactory.php | 34 +
.../Provider/ProviderFactoryInterface.php | 26 +
.../Provider/ProviderInterface.php | 30 +
.../TranslationProviderCollection.php | 57 +
.../TranslationProviderCollectionFactory.php | 54 +
.../PseudoLocalizationTranslator.php | 385 ++
vendor/symfony/translation/README.md | 46 +
.../translation/Reader/TranslationReader.php | 59 +
.../Reader/TranslationReaderInterface.php | 27 +
.../Resources/bin/translation-status.php | 274 +
.../translation/Resources/data/parents.json | 142 +
.../translation/Resources/functions.php | 22 +
.../schemas/xliff-core-1.2-transitional.xsd | 2261 ++++++++
.../Resources/schemas/xliff-core-2.0.xsd | 411 ++
.../translation/Resources/schemas/xml.xsd | 309 ++
.../Test/AbstractProviderFactoryTestCase.php | 79 +
.../Test/IncompleteDsnTestTrait.php | 42 +
.../Test/ProviderFactoryTestCase.php | 85 +
.../translation/Test/ProviderTestCase.php | 84 +
.../translation/TranslatableMessage.php | 56 +
vendor/symfony/translation/Translator.php | 445 ++
vendor/symfony/translation/TranslatorBag.php | 102 +
.../translation/TranslatorBagInterface.php | 36 +
.../translation/Util/ArrayConverter.php | 142 +
.../symfony/translation/Util/XliffUtils.php | 191 +
.../translation/Writer/TranslationWriter.php | 71 +
.../Writer/TranslationWriterInterface.php | 33 +
vendor/symfony/translation/composer.json | 60 +
vendor/voku/portable-ascii/.deepsource.toml | 4 +
vendor/voku/portable-ascii/CHANGELOG.md | 210 +
vendor/voku/portable-ascii/LICENSE.txt | 19 +
vendor/voku/portable-ascii/README.md | 451 ++
vendor/voku/portable-ascii/composer.json | 37 +
.../portable-ascii/src/voku/helper/ASCII.php | 1424 +++++
.../voku/helper/data/ascii_by_languages.php | 2950 ++++++++++
.../helper/data/ascii_extras_by_languages.php | 759 +++
.../helper/data/ascii_language_max_key.php | 65 +
.../src/voku/helper/data/ascii_ord.php | 1 +
.../src/voku/helper/data/x000.php | 16 +
.../src/voku/helper/data/x001.php | 1 +
.../src/voku/helper/data/x002.php | 1 +
.../src/voku/helper/data/x003.php | 1 +
.../src/voku/helper/data/x004.php | 1 +
.../src/voku/helper/data/x005.php | 1 +
.../src/voku/helper/data/x006.php | 1 +
.../src/voku/helper/data/x007.php | 1 +
.../src/voku/helper/data/x009.php | 1 +
.../src/voku/helper/data/x00a.php | 1 +
.../src/voku/helper/data/x00b.php | 1 +
.../src/voku/helper/data/x00c.php | 1 +
.../src/voku/helper/data/x00d.php | 1 +
.../src/voku/helper/data/x00e.php | 1 +
.../src/voku/helper/data/x00f.php | 1 +
.../src/voku/helper/data/x010.php | 1 +
.../src/voku/helper/data/x011.php | 1 +
.../src/voku/helper/data/x012.php | 1 +
.../src/voku/helper/data/x013.php | 1 +
.../src/voku/helper/data/x014.php | 1 +
.../src/voku/helper/data/x015.php | 1 +
.../src/voku/helper/data/x016.php | 1 +
.../src/voku/helper/data/x017.php | 1 +
.../src/voku/helper/data/x018.php | 1 +
.../src/voku/helper/data/x01d.php | 1 +
.../src/voku/helper/data/x01e.php | 1 +
.../src/voku/helper/data/x01f.php | 1 +
.../src/voku/helper/data/x020.php | 4 +
.../src/voku/helper/data/x021.php | 1 +
.../src/voku/helper/data/x022.php | 1 +
.../src/voku/helper/data/x023.php | 1 +
.../src/voku/helper/data/x024.php | 1 +
.../src/voku/helper/data/x025.php | 1 +
.../src/voku/helper/data/x026.php | 1 +
.../src/voku/helper/data/x027.php | 1 +
.../src/voku/helper/data/x028.php | 1 +
.../src/voku/helper/data/x029.php | 1 +
.../src/voku/helper/data/x02a.php | 1 +
.../src/voku/helper/data/x02c.php | 1 +
.../src/voku/helper/data/x02e.php | 1 +
.../src/voku/helper/data/x02f.php | 1 +
.../src/voku/helper/data/x030.php | 9 +
.../src/voku/helper/data/x031.php | 1 +
.../src/voku/helper/data/x032.php | 1 +
.../src/voku/helper/data/x033.php | 1 +
.../src/voku/helper/data/x04d.php | 1 +
.../src/voku/helper/data/x04e.php | 1 +
.../src/voku/helper/data/x04f.php | 1 +
.../src/voku/helper/data/x050.php | 1 +
.../src/voku/helper/data/x051.php | 1 +
.../src/voku/helper/data/x052.php | 1 +
.../src/voku/helper/data/x053.php | 1 +
.../src/voku/helper/data/x054.php | 1 +
.../src/voku/helper/data/x055.php | 1 +
.../src/voku/helper/data/x056.php | 1 +
.../src/voku/helper/data/x057.php | 1 +
.../src/voku/helper/data/x058.php | 1 +
.../src/voku/helper/data/x059.php | 1 +
.../src/voku/helper/data/x05a.php | 1 +
.../src/voku/helper/data/x05b.php | 1 +
.../src/voku/helper/data/x05c.php | 1 +
.../src/voku/helper/data/x05d.php | 1 +
.../src/voku/helper/data/x05e.php | 1 +
.../src/voku/helper/data/x05f.php | 1 +
.../src/voku/helper/data/x060.php | 1 +
.../src/voku/helper/data/x061.php | 1 +
.../src/voku/helper/data/x062.php | 1 +
.../src/voku/helper/data/x063.php | 1 +
.../src/voku/helper/data/x064.php | 1 +
.../src/voku/helper/data/x065.php | 1 +
.../src/voku/helper/data/x066.php | 1 +
.../src/voku/helper/data/x067.php | 1 +
.../src/voku/helper/data/x068.php | 1 +
.../src/voku/helper/data/x069.php | 1 +
.../src/voku/helper/data/x06a.php | 1 +
.../src/voku/helper/data/x06b.php | 1 +
.../src/voku/helper/data/x06c.php | 1 +
.../src/voku/helper/data/x06d.php | 1 +
.../src/voku/helper/data/x06e.php | 1 +
.../src/voku/helper/data/x06f.php | 1 +
.../src/voku/helper/data/x070.php | 1 +
.../src/voku/helper/data/x071.php | 1 +
.../src/voku/helper/data/x072.php | 1 +
.../src/voku/helper/data/x073.php | 1 +
.../src/voku/helper/data/x074.php | 1 +
.../src/voku/helper/data/x075.php | 1 +
.../src/voku/helper/data/x076.php | 1 +
.../src/voku/helper/data/x077.php | 1 +
.../src/voku/helper/data/x078.php | 1 +
.../src/voku/helper/data/x079.php | 1 +
.../src/voku/helper/data/x07a.php | 1 +
.../src/voku/helper/data/x07b.php | 1 +
.../src/voku/helper/data/x07c.php | 1 +
.../src/voku/helper/data/x07d.php | 1 +
.../src/voku/helper/data/x07e.php | 1 +
.../src/voku/helper/data/x07f.php | 1 +
.../src/voku/helper/data/x080.php | 1 +
.../src/voku/helper/data/x081.php | 1 +
.../src/voku/helper/data/x082.php | 1 +
.../src/voku/helper/data/x083.php | 1 +
.../src/voku/helper/data/x084.php | 1 +
.../src/voku/helper/data/x085.php | 1 +
.../src/voku/helper/data/x086.php | 1 +
.../src/voku/helper/data/x087.php | 1 +
.../src/voku/helper/data/x088.php | 1 +
.../src/voku/helper/data/x089.php | 1 +
.../src/voku/helper/data/x08a.php | 1 +
.../src/voku/helper/data/x08b.php | 1 +
.../src/voku/helper/data/x08c.php | 1 +
.../src/voku/helper/data/x08d.php | 1 +
.../src/voku/helper/data/x08e.php | 1 +
.../src/voku/helper/data/x08f.php | 1 +
.../src/voku/helper/data/x090.php | 1 +
.../src/voku/helper/data/x091.php | 1 +
.../src/voku/helper/data/x092.php | 1 +
.../src/voku/helper/data/x093.php | 1 +
.../src/voku/helper/data/x094.php | 1 +
.../src/voku/helper/data/x095.php | 1 +
.../src/voku/helper/data/x096.php | 1 +
.../src/voku/helper/data/x097.php | 1 +
.../src/voku/helper/data/x098.php | 1 +
.../src/voku/helper/data/x099.php | 1 +
.../src/voku/helper/data/x09a.php | 1 +
.../src/voku/helper/data/x09b.php | 1 +
.../src/voku/helper/data/x09c.php | 1 +
.../src/voku/helper/data/x09d.php | 1 +
.../src/voku/helper/data/x09e.php | 1 +
.../src/voku/helper/data/x09f.php | 1 +
.../src/voku/helper/data/x0a0.php | 1 +
.../src/voku/helper/data/x0a1.php | 1 +
.../src/voku/helper/data/x0a2.php | 1 +
.../src/voku/helper/data/x0a3.php | 1 +
.../src/voku/helper/data/x0a4.php | 1 +
.../src/voku/helper/data/x0ac.php | 1 +
.../src/voku/helper/data/x0ad.php | 1 +
.../src/voku/helper/data/x0ae.php | 1 +
.../src/voku/helper/data/x0af.php | 1 +
.../src/voku/helper/data/x0b0.php | 1 +
.../src/voku/helper/data/x0b1.php | 1 +
.../src/voku/helper/data/x0b2.php | 1 +
.../src/voku/helper/data/x0b3.php | 1 +
.../src/voku/helper/data/x0b4.php | 1 +
.../src/voku/helper/data/x0b5.php | 1 +
.../src/voku/helper/data/x0b6.php | 1 +
.../src/voku/helper/data/x0b7.php | 1 +
.../src/voku/helper/data/x0b8.php | 1 +
.../src/voku/helper/data/x0b9.php | 1 +
.../src/voku/helper/data/x0ba.php | 1 +
.../src/voku/helper/data/x0bb.php | 1 +
.../src/voku/helper/data/x0bc.php | 1 +
.../src/voku/helper/data/x0bd.php | 1 +
.../src/voku/helper/data/x0be.php | 1 +
.../src/voku/helper/data/x0bf.php | 1 +
.../src/voku/helper/data/x0c0.php | 1 +
.../src/voku/helper/data/x0c1.php | 1 +
.../src/voku/helper/data/x0c2.php | 1 +
.../src/voku/helper/data/x0c3.php | 1 +
.../src/voku/helper/data/x0c4.php | 1 +
.../src/voku/helper/data/x0c5.php | 1 +
.../src/voku/helper/data/x0c6.php | 1 +
.../src/voku/helper/data/x0c7.php | 1 +
.../src/voku/helper/data/x0c8.php | 1 +
.../src/voku/helper/data/x0c9.php | 1 +
.../src/voku/helper/data/x0ca.php | 1 +
.../src/voku/helper/data/x0cb.php | 1 +
.../src/voku/helper/data/x0cc.php | 1 +
.../src/voku/helper/data/x0cd.php | 1 +
.../src/voku/helper/data/x0ce.php | 1 +
.../src/voku/helper/data/x0cf.php | 1 +
.../src/voku/helper/data/x0d0.php | 1 +
.../src/voku/helper/data/x0d1.php | 1 +
.../src/voku/helper/data/x0d2.php | 1 +
.../src/voku/helper/data/x0d3.php | 1 +
.../src/voku/helper/data/x0d4.php | 1 +
.../src/voku/helper/data/x0d5.php | 1 +
.../src/voku/helper/data/x0d6.php | 1 +
.../src/voku/helper/data/x0d7.php | 1 +
.../src/voku/helper/data/x0f9.php | 1 +
.../src/voku/helper/data/x0fa.php | 1 +
.../src/voku/helper/data/x0fb.php | 1 +
.../src/voku/helper/data/x0fc.php | 1 +
.../src/voku/helper/data/x0fd.php | 1 +
.../src/voku/helper/data/x0fe.php | 1 +
.../src/voku/helper/data/x0ff.php | 1 +
.../src/voku/helper/data/x1d4.php | 1 +
.../src/voku/helper/data/x1d5.php | 4 +
.../src/voku/helper/data/x1d6.php | 1 +
.../src/voku/helper/data/x1d7.php | 1 +
.../src/voku/helper/data/x1f1.php | 2 +
vendor/webman/database/LICENSE | 21 +
vendor/webman/database/README.md | 2 +
vendor/webman/database/composer.json | 19 +
.../webman/database/src/DatabaseManager.php | 82 +
vendor/webman/database/src/Initializer.php | 113 +
vendor/webman/database/src/Install.php | 91 +
vendor/webman/database/src/Manager.php | 22 +
.../webman/database/src/config/database.php | 30 +
vendor/webman/database/src/support/Db.php | 38 +
vendor/webman/database/src/support/Model.php | 264 +
vendor/workerman/coroutine/.gitignore | 5 +
vendor/workerman/coroutine/LICENSE | 21 +
vendor/workerman/coroutine/README.md | 3 +
vendor/workerman/coroutine/composer.json | 31 +
vendor/workerman/coroutine/src/Barrier.php | 65 +
.../src/Barrier/BarrierInterface.php | 39 +
.../workerman/coroutine/src/Barrier/Fiber.php | 85 +
.../coroutine/src/Barrier/Swoole.php | 39 +
.../workerman/coroutine/src/Barrier/Swow.php | 39 +
vendor/workerman/coroutine/src/Channel.php | 114 +
.../src/Channel/ChannelInterface.php | 76 +
.../workerman/coroutine/src/Channel/Fiber.php | 252 +
.../coroutine/src/Channel/Memory.php | 69 +
.../coroutine/src/Channel/Swoole.php | 98 +
.../workerman/coroutine/src/Channel/Swow.php | 108 +
vendor/workerman/coroutine/src/Context.php | 90 +
.../src/Context/ContextInterface.php | 50 +
.../workerman/coroutine/src/Context/Fiber.php | 107 +
.../coroutine/src/Context/Swoole.php | 60 +
.../workerman/coroutine/src/Context/Swow.php | 78 +
vendor/workerman/coroutine/src/Coroutine.php | 129 +
.../src/Coroutine/CoroutineInterface.php | 90 +
.../coroutine/src/Coroutine/Fiber.php | 154 +
.../coroutine/src/Coroutine/Swoole.php | 148 +
.../coroutine/src/Coroutine/Swow.php | 91 +
vendor/workerman/coroutine/src/Locker.php | 66 +
vendor/workerman/coroutine/src/Parallel.php | 109 +
vendor/workerman/coroutine/src/Pool.php | 386 ++
.../workerman/coroutine/src/PoolInterface.php | 69 +
.../src/Utils/DestructionWatcher.php | 67 +
vendor/workerman/coroutine/src/WaitGroup.php | 77 +
.../coroutine/src/WaitGroup/Fiber.php | 63 +
.../coroutine/src/WaitGroup/Swoole.php | 63 +
.../coroutine/src/WaitGroup/Swow.php | 64 +
.../src/WaitGroup/WaitGroupInterface.php | 42 +
vendor/workerman/coroutine/stubs/SwowStub.php | 36 +
.../workerman/coroutine/tests/BarrierTest.php | 43 +
.../workerman/coroutine/tests/ChannelTest.php | 313 ++
.../workerman/coroutine/tests/ContextTest.php | 169 +
.../coroutine/tests/CoroutineTest.php | 184 +
.../coroutine/tests/FiberChannelTest.php | 346 ++
.../workerman/coroutine/tests/LockerTest.php | 130 +
.../coroutine/tests/ParallelTest.php | 302 +
vendor/workerman/coroutine/tests/PoolTest.php | 398 ++
.../coroutine/tests/WaitGroupTest.php | 56 +
vendor/workerman/coroutine/tests/start.php | 98 +
vendor/workerman/webman-framework/.gitignore | 5 +
vendor/workerman/webman-framework/README.md | 5 +
.../workerman/webman-framework/composer.json | 52 +
.../src/Annotation/DisableDefaultRoute.php | 10 +
.../src/Annotation/Middleware.php | 25 +
vendor/workerman/webman-framework/src/App.php | 1048 ++++
.../webman-framework/src/Bootstrap.php | 28 +
.../workerman/webman-framework/src/Config.php | 296 +
.../webman-framework/src/Container.php | 84 +
.../webman-framework/src/Context.php | 24 +
.../src/Exception/BusinessException.php | 117 +
.../src/Exception/ExceptionHandler.php | 121 +
.../Exception/ExceptionHandlerInterface.php | 35 +
.../src/Exception/FileException.php | 25 +
.../src/Exception/NotFoundException.php | 25 +
.../workerman/webman-framework/src/File.php | 56 +
.../webman-framework/src/Http/Request.php | 409 ++
.../webman-framework/src/Http/Response.php | 87 +
.../webman-framework/src/Http/UploadFile.php | 111 +
.../webman-framework/src/Install.php | 78 +
.../webman-framework/src/Middleware.php | 141 +
.../src/MiddlewareInterface.php | 30 +
.../workerman/webman-framework/src/Route.php | 572 ++
.../webman-framework/src/Route/Route.php | 199 +
.../src/Session/FileSessionHandler.php | 26 +
.../Session/RedisClusterSessionHandler.php | 22 +
.../src/Session/RedisSessionHandler.php | 26 +
.../workerman/webman-framework/src/Util.php | 44 +
.../workerman/webman-framework/src/View.php | 27 +
.../workerman/webman-framework/src/start.php | 5 +
.../webman-framework/src/support/App.php | 167 +
.../src/support/Container.php | 48 +
.../webman-framework/src/support/Context.php | 25 +
.../webman-framework/src/support/Log.php | 139 +
.../webman-framework/src/support/Plugin.php | 102 +
.../webman-framework/src/support/Request.php | 24 +
.../webman-framework/src/support/Response.php | 24 +
.../src/support/Translation.php | 107 +
.../webman-framework/src/support/View.php | 35 +
.../annotation/DisableDefaultRoute.php | 10 +
.../src/support/annotation/Middleware.php | 11 +
.../src/support/bootstrap.php | 139 +
.../src/support/bootstrap/Session.php | 61 +
.../support/exception/BusinessException.php | 24 +
.../src/support/exception/Handler.php | 43 +
.../support/exception/InputTypeException.php | 24 +
.../support/exception/InputValueException.php | 24 +
.../exception/MissingInputException.php | 46 +
.../support/exception/NotFoundException.php | 20 +
.../exception/PageNotFoundException.php | 93 +
.../webman-framework/src/support/helpers.php | 672 +++
.../src/support/view/Blade.php | 84 +
.../webman-framework/src/support/view/Raw.php | 79 +
.../src/support/view/ThinkPHP.php | 87 +
.../src/support/view/Twig.php | 87 +
.../webman-framework/src/windows.php | 136 +
vendor/workerman/workerman/MIT-LICENSE.txt | 21 +
vendor/workerman/workerman/README.md | 477 ++
vendor/workerman/workerman/SECURITY.md | 6 +
vendor/workerman/workerman/composer.json | 60 +
.../src/Connection/AsyncTcpConnection.php | 441 ++
.../src/Connection/AsyncUdpConnection.php | 210 +
.../src/Connection/ConnectionInterface.php | 187 +
.../src/Connection/TcpConnection.php | 1152 ++++
.../src/Connection/UdpConnection.php | 224 +
vendor/workerman/workerman/src/Events/Ev.php | 238 +
.../workerman/workerman/src/Events/Event.php | 294 +
.../workerman/src/Events/EventInterface.php | 143 +
.../workerman/workerman/src/Events/Fiber.php | 276 +
.../workerman/workerman/src/Events/Select.php | 490 ++
.../workerman/workerman/src/Events/Swoole.php | 298 +
.../workerman/workerman/src/Events/Swow.php | 303 +
.../workerman/src/Protocols/Frame.php | 66 +
.../workerman/src/Protocols/Http.php | 306 +
.../workerman/src/Protocols/Http/Chunk.php | 37 +
.../workerman/src/Protocols/Http/Request.php | 769 +++
.../workerman/src/Protocols/Http/Response.php | 475 ++
.../src/Protocols/Http/ServerSentEvents.php | 56 +
.../workerman/src/Protocols/Http/Session.php | 454 ++
.../Http/Session/FileSessionHandler.php | 209 +
.../Session/RedisClusterSessionHandler.php | 55 +
.../Http/Session/RedisSessionHandler.php | 166 +
.../Http/Session/SessionHandlerInterface.php | 117 +
.../workerman/src/Protocols/Http/mime.types | 91 +
.../src/Protocols/ProtocolInterface.php | 55 +
.../workerman/src/Protocols/Text.php | 76 +
.../workerman/src/Protocols/Websocket.php | 524 ++
.../workerman/workerman/src/Protocols/Ws.php | 470 ++
vendor/workerman/workerman/src/Timer.php | 273 +
vendor/workerman/workerman/src/Worker.php | 2758 +++++++++
webman.zip | Bin 0 -> 2064018 bytes
webman/.gitignore | 8 +
webman/LICENSE | 21 +
webman/README.md | 70 +
webman/app/controller/CustomerController.php | 18 +
webman/app/controller/IndexController.php | 28 +
webman/app/controller/UserController.php | 16 +
webman/app/functions.php | 4 +
webman/app/middleware/StaticFile.php | 42 +
webman/app/model/Customer.php | 30 +
webman/app/model/Test.php | 29 +
webman/app/process/Http.php | 10 +
webman/app/process/Monitor.php | 262 +
webman/app/view/index/view.html | 14 +
webman/composer.json | 59 +
webman/composer.lock | 2206 ++++++++
webman/config/app.php | 26 +
webman/config/autoload.php | 21 +
webman/config/bootstrap.php | 17 +
webman/config/container.php | 15 +
webman/config/database.php | 81 +
webman/config/dependence.php | 15 +
webman/config/exception.php | 17 +
webman/config/log.php | 32 +
webman/config/middleware.php | 15 +
webman/config/process.php | 62 +
webman/config/route.php | 21 +
webman/config/server.php | 23 +
webman/config/session.php | 65 +
webman/config/static.php | 23 +
webman/config/translation.php | 25 +
webman/config/view.php | 22 +
webman/public/favicon.ico | Bin 0 -> 4286 bytes
webman/start.php | 5 +
webman/support/Request.php | 24 +
webman/support/Response.php | 24 +
webman/support/bootstrap.php | 139 +
webman/windows.bat | 3 +
webman/windows.php | 136 +
2161 files changed, 219203 insertions(+)
create mode 100644 .idea/modules.xml
create mode 100644 .idea/php.xml
create mode 100644 .idea/workspace.xml
create mode 100644 .idea/www.iml
create mode 100644 composer.json
create mode 100644 composer.json.txt
create mode 100644 composer.lock
create mode 100644 vendor/autoload.php
create mode 100644 vendor/bin/carbon
create mode 100644 vendor/bin/carbon.bat
create mode 100644 vendor/brick/math/CHANGELOG.md
create mode 100644 vendor/brick/math/LICENSE
create mode 100644 vendor/brick/math/composer.json
create mode 100644 vendor/brick/math/psalm-baseline.xml
create mode 100644 vendor/brick/math/src/BigDecimal.php
create mode 100644 vendor/brick/math/src/BigInteger.php
create mode 100644 vendor/brick/math/src/BigNumber.php
create mode 100644 vendor/brick/math/src/BigRational.php
create mode 100644 vendor/brick/math/src/Exception/DivisionByZeroException.php
create mode 100644 vendor/brick/math/src/Exception/IntegerOverflowException.php
create mode 100644 vendor/brick/math/src/Exception/MathException.php
create mode 100644 vendor/brick/math/src/Exception/NegativeNumberException.php
create mode 100644 vendor/brick/math/src/Exception/NumberFormatException.php
create mode 100644 vendor/brick/math/src/Exception/RoundingNecessaryException.php
create mode 100644 vendor/brick/math/src/Internal/Calculator.php
create mode 100644 vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php
create mode 100644 vendor/brick/math/src/Internal/Calculator/GmpCalculator.php
create mode 100644 vendor/brick/math/src/Internal/Calculator/NativeCalculator.php
create mode 100644 vendor/brick/math/src/RoundingMode.php
create mode 100644 vendor/carbonphp/carbon-doctrine-types/LICENSE
create mode 100644 vendor/carbonphp/carbon-doctrine-types/README.md
create mode 100644 vendor/carbonphp/carbon-doctrine-types/composer.json
create mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php
create mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonImmutableType.php
create mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonType.php
create mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonTypeConverter.php
create mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php
create mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeImmutableType.php
create mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php
create mode 100644 vendor/composer/ClassLoader.php
create mode 100644 vendor/composer/InstalledVersions.php
create mode 100644 vendor/composer/LICENSE
create mode 100644 vendor/composer/autoload_classmap.php
create mode 100644 vendor/composer/autoload_files.php
create mode 100644 vendor/composer/autoload_namespaces.php
create mode 100644 vendor/composer/autoload_psr4.php
create mode 100644 vendor/composer/autoload_real.php
create mode 100644 vendor/composer/autoload_static.php
create mode 100644 vendor/composer/installed.json
create mode 100644 vendor/composer/installed.php
create mode 100644 vendor/composer/platform_check.php
create mode 100644 vendor/doctrine/inflector/LICENSE
create mode 100644 vendor/doctrine/inflector/README.md
create mode 100644 vendor/doctrine/inflector/composer.json
create mode 100644 vendor/doctrine/inflector/docs/en/index.rst
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Language.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/LanguageInflectorFactory.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/NoopWordInflector.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Inflectible.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/InflectorFactory.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Rules.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Inflectible.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/InflectorFactory.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Rules.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Inflectible.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/InflectorFactory.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Rules.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Pattern.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/InflectorFactory.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Rules.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Ruleset.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/InflectorFactory.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Rules.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitution.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/InflectorFactory.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Rules.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Word.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php
create mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php
create mode 100644 vendor/illuminate/collections/Arr.php
create mode 100644 vendor/illuminate/collections/Collection.php
create mode 100644 vendor/illuminate/collections/Enumerable.php
create mode 100644 vendor/illuminate/collections/HigherOrderCollectionProxy.php
create mode 100644 vendor/illuminate/collections/ItemNotFoundException.php
create mode 100644 vendor/illuminate/collections/LICENSE.md
create mode 100644 vendor/illuminate/collections/LazyCollection.php
create mode 100644 vendor/illuminate/collections/MultipleItemsFoundException.php
create mode 100644 vendor/illuminate/collections/Traits/EnumeratesValues.php
create mode 100644 vendor/illuminate/collections/composer.json
create mode 100644 vendor/illuminate/collections/functions.php
create mode 100644 vendor/illuminate/collections/helpers.php
create mode 100644 vendor/illuminate/conditionable/HigherOrderWhenProxy.php
create mode 100644 vendor/illuminate/conditionable/LICENSE.md
create mode 100644 vendor/illuminate/conditionable/Traits/Conditionable.php
create mode 100644 vendor/illuminate/conditionable/composer.json
create mode 100644 vendor/illuminate/container/Attributes/Auth.php
create mode 100644 vendor/illuminate/container/Attributes/Authenticated.php
create mode 100644 vendor/illuminate/container/Attributes/Cache.php
create mode 100644 vendor/illuminate/container/Attributes/Config.php
create mode 100644 vendor/illuminate/container/Attributes/CurrentUser.php
create mode 100644 vendor/illuminate/container/Attributes/DB.php
create mode 100644 vendor/illuminate/container/Attributes/Database.php
create mode 100644 vendor/illuminate/container/Attributes/Log.php
create mode 100644 vendor/illuminate/container/Attributes/RouteParameter.php
create mode 100644 vendor/illuminate/container/Attributes/Storage.php
create mode 100644 vendor/illuminate/container/Attributes/Tag.php
create mode 100644 vendor/illuminate/container/BoundMethod.php
create mode 100644 vendor/illuminate/container/Container.php
create mode 100644 vendor/illuminate/container/ContextualBindingBuilder.php
create mode 100644 vendor/illuminate/container/EntryNotFoundException.php
create mode 100644 vendor/illuminate/container/LICENSE.md
create mode 100644 vendor/illuminate/container/RewindableGenerator.php
create mode 100644 vendor/illuminate/container/Util.php
create mode 100644 vendor/illuminate/container/composer.json
create mode 100644 vendor/illuminate/contracts/Auth/Access/Authorizable.php
create mode 100644 vendor/illuminate/contracts/Auth/Access/Gate.php
create mode 100644 vendor/illuminate/contracts/Auth/Authenticatable.php
create mode 100644 vendor/illuminate/contracts/Auth/CanResetPassword.php
create mode 100644 vendor/illuminate/contracts/Auth/Factory.php
create mode 100644 vendor/illuminate/contracts/Auth/Guard.php
create mode 100644 vendor/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php
create mode 100644 vendor/illuminate/contracts/Auth/MustVerifyEmail.php
create mode 100644 vendor/illuminate/contracts/Auth/PasswordBroker.php
create mode 100644 vendor/illuminate/contracts/Auth/PasswordBrokerFactory.php
create mode 100644 vendor/illuminate/contracts/Auth/StatefulGuard.php
create mode 100644 vendor/illuminate/contracts/Auth/SupportsBasicAuth.php
create mode 100644 vendor/illuminate/contracts/Auth/UserProvider.php
create mode 100644 vendor/illuminate/contracts/Broadcasting/Broadcaster.php
create mode 100644 vendor/illuminate/contracts/Broadcasting/Factory.php
create mode 100644 vendor/illuminate/contracts/Broadcasting/HasBroadcastChannel.php
create mode 100644 vendor/illuminate/contracts/Broadcasting/ShouldBeUnique.php
create mode 100644 vendor/illuminate/contracts/Broadcasting/ShouldBroadcast.php
create mode 100644 vendor/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php
create mode 100644 vendor/illuminate/contracts/Bus/Dispatcher.php
create mode 100644 vendor/illuminate/contracts/Bus/QueueingDispatcher.php
create mode 100644 vendor/illuminate/contracts/Cache/Factory.php
create mode 100644 vendor/illuminate/contracts/Cache/Lock.php
create mode 100644 vendor/illuminate/contracts/Cache/LockProvider.php
create mode 100644 vendor/illuminate/contracts/Cache/LockTimeoutException.php
create mode 100644 vendor/illuminate/contracts/Cache/Repository.php
create mode 100644 vendor/illuminate/contracts/Cache/Store.php
create mode 100644 vendor/illuminate/contracts/Concurrency/Driver.php
create mode 100644 vendor/illuminate/contracts/Config/Repository.php
create mode 100644 vendor/illuminate/contracts/Console/Application.php
create mode 100644 vendor/illuminate/contracts/Console/Isolatable.php
create mode 100644 vendor/illuminate/contracts/Console/Kernel.php
create mode 100644 vendor/illuminate/contracts/Console/PromptsForMissingInput.php
create mode 100644 vendor/illuminate/contracts/Container/BindingResolutionException.php
create mode 100644 vendor/illuminate/contracts/Container/CircularDependencyException.php
create mode 100644 vendor/illuminate/contracts/Container/Container.php
create mode 100644 vendor/illuminate/contracts/Container/ContextualAttribute.php
create mode 100644 vendor/illuminate/contracts/Container/ContextualBindingBuilder.php
create mode 100644 vendor/illuminate/contracts/Cookie/Factory.php
create mode 100644 vendor/illuminate/contracts/Cookie/QueueingFactory.php
create mode 100644 vendor/illuminate/contracts/Database/Eloquent/Builder.php
create mode 100644 vendor/illuminate/contracts/Database/Eloquent/Castable.php
create mode 100644 vendor/illuminate/contracts/Database/Eloquent/CastsAttributes.php
create mode 100644 vendor/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php
create mode 100644 vendor/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php
create mode 100644 vendor/illuminate/contracts/Database/Eloquent/SerializesCastableAttributes.php
create mode 100644 vendor/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php
create mode 100644 vendor/illuminate/contracts/Database/Events/MigrationEvent.php
create mode 100644 vendor/illuminate/contracts/Database/ModelIdentifier.php
create mode 100644 vendor/illuminate/contracts/Database/Query/Builder.php
create mode 100644 vendor/illuminate/contracts/Database/Query/ConditionExpression.php
create mode 100644 vendor/illuminate/contracts/Database/Query/Expression.php
create mode 100644 vendor/illuminate/contracts/Debug/ExceptionHandler.php
create mode 100644 vendor/illuminate/contracts/Debug/ShouldntReport.php
create mode 100644 vendor/illuminate/contracts/Encryption/DecryptException.php
create mode 100644 vendor/illuminate/contracts/Encryption/EncryptException.php
create mode 100644 vendor/illuminate/contracts/Encryption/Encrypter.php
create mode 100644 vendor/illuminate/contracts/Encryption/StringEncrypter.php
create mode 100644 vendor/illuminate/contracts/Events/Dispatcher.php
create mode 100644 vendor/illuminate/contracts/Events/ShouldDispatchAfterCommit.php
create mode 100644 vendor/illuminate/contracts/Events/ShouldHandleEventsAfterCommit.php
create mode 100644 vendor/illuminate/contracts/Filesystem/Cloud.php
create mode 100644 vendor/illuminate/contracts/Filesystem/Factory.php
create mode 100644 vendor/illuminate/contracts/Filesystem/FileNotFoundException.php
create mode 100644 vendor/illuminate/contracts/Filesystem/Filesystem.php
create mode 100644 vendor/illuminate/contracts/Filesystem/LockTimeoutException.php
create mode 100644 vendor/illuminate/contracts/Foundation/Application.php
create mode 100644 vendor/illuminate/contracts/Foundation/CachesConfiguration.php
create mode 100644 vendor/illuminate/contracts/Foundation/CachesRoutes.php
create mode 100644 vendor/illuminate/contracts/Foundation/ExceptionRenderer.php
create mode 100644 vendor/illuminate/contracts/Foundation/MaintenanceMode.php
create mode 100644 vendor/illuminate/contracts/Hashing/Hasher.php
create mode 100644 vendor/illuminate/contracts/Http/Kernel.php
create mode 100644 vendor/illuminate/contracts/LICENSE.md
create mode 100644 vendor/illuminate/contracts/Mail/Attachable.php
create mode 100644 vendor/illuminate/contracts/Mail/Factory.php
create mode 100644 vendor/illuminate/contracts/Mail/MailQueue.php
create mode 100644 vendor/illuminate/contracts/Mail/Mailable.php
create mode 100644 vendor/illuminate/contracts/Mail/Mailer.php
create mode 100644 vendor/illuminate/contracts/Notifications/Dispatcher.php
create mode 100644 vendor/illuminate/contracts/Notifications/Factory.php
create mode 100644 vendor/illuminate/contracts/Pagination/CursorPaginator.php
create mode 100644 vendor/illuminate/contracts/Pagination/LengthAwarePaginator.php
create mode 100644 vendor/illuminate/contracts/Pagination/Paginator.php
create mode 100644 vendor/illuminate/contracts/Pipeline/Hub.php
create mode 100644 vendor/illuminate/contracts/Pipeline/Pipeline.php
create mode 100644 vendor/illuminate/contracts/Process/InvokedProcess.php
create mode 100644 vendor/illuminate/contracts/Process/ProcessResult.php
create mode 100644 vendor/illuminate/contracts/Queue/ClearableQueue.php
create mode 100644 vendor/illuminate/contracts/Queue/EntityNotFoundException.php
create mode 100644 vendor/illuminate/contracts/Queue/EntityResolver.php
create mode 100644 vendor/illuminate/contracts/Queue/Factory.php
create mode 100644 vendor/illuminate/contracts/Queue/Job.php
create mode 100644 vendor/illuminate/contracts/Queue/Monitor.php
create mode 100644 vendor/illuminate/contracts/Queue/Queue.php
create mode 100644 vendor/illuminate/contracts/Queue/QueueableCollection.php
create mode 100644 vendor/illuminate/contracts/Queue/QueueableEntity.php
create mode 100644 vendor/illuminate/contracts/Queue/ShouldBeEncrypted.php
create mode 100644 vendor/illuminate/contracts/Queue/ShouldBeUnique.php
create mode 100644 vendor/illuminate/contracts/Queue/ShouldBeUniqueUntilProcessing.php
create mode 100644 vendor/illuminate/contracts/Queue/ShouldQueue.php
create mode 100644 vendor/illuminate/contracts/Queue/ShouldQueueAfterCommit.php
create mode 100644 vendor/illuminate/contracts/Redis/Connection.php
create mode 100644 vendor/illuminate/contracts/Redis/Connector.php
create mode 100644 vendor/illuminate/contracts/Redis/Factory.php
create mode 100644 vendor/illuminate/contracts/Redis/LimiterTimeoutException.php
create mode 100644 vendor/illuminate/contracts/Routing/BindingRegistrar.php
create mode 100644 vendor/illuminate/contracts/Routing/Registrar.php
create mode 100644 vendor/illuminate/contracts/Routing/ResponseFactory.php
create mode 100644 vendor/illuminate/contracts/Routing/UrlGenerator.php
create mode 100644 vendor/illuminate/contracts/Routing/UrlRoutable.php
create mode 100644 vendor/illuminate/contracts/Session/Middleware/AuthenticatesSessions.php
create mode 100644 vendor/illuminate/contracts/Session/Session.php
create mode 100644 vendor/illuminate/contracts/Support/Arrayable.php
create mode 100644 vendor/illuminate/contracts/Support/CanBeEscapedWhenCastToString.php
create mode 100644 vendor/illuminate/contracts/Support/DeferrableProvider.php
create mode 100644 vendor/illuminate/contracts/Support/DeferringDisplayableValue.php
create mode 100644 vendor/illuminate/contracts/Support/Htmlable.php
create mode 100644 vendor/illuminate/contracts/Support/Jsonable.php
create mode 100644 vendor/illuminate/contracts/Support/MessageBag.php
create mode 100644 vendor/illuminate/contracts/Support/MessageProvider.php
create mode 100644 vendor/illuminate/contracts/Support/Renderable.php
create mode 100644 vendor/illuminate/contracts/Support/Responsable.php
create mode 100644 vendor/illuminate/contracts/Support/ValidatedData.php
create mode 100644 vendor/illuminate/contracts/Translation/HasLocalePreference.php
create mode 100644 vendor/illuminate/contracts/Translation/Loader.php
create mode 100644 vendor/illuminate/contracts/Translation/Translator.php
create mode 100644 vendor/illuminate/contracts/Validation/DataAwareRule.php
create mode 100644 vendor/illuminate/contracts/Validation/Factory.php
create mode 100644 vendor/illuminate/contracts/Validation/ImplicitRule.php
create mode 100644 vendor/illuminate/contracts/Validation/InvokableRule.php
create mode 100644 vendor/illuminate/contracts/Validation/Rule.php
create mode 100644 vendor/illuminate/contracts/Validation/UncompromisedVerifier.php
create mode 100644 vendor/illuminate/contracts/Validation/ValidatesWhenResolved.php
create mode 100644 vendor/illuminate/contracts/Validation/ValidationRule.php
create mode 100644 vendor/illuminate/contracts/Validation/Validator.php
create mode 100644 vendor/illuminate/contracts/Validation/ValidatorAwareRule.php
create mode 100644 vendor/illuminate/contracts/View/Engine.php
create mode 100644 vendor/illuminate/contracts/View/Factory.php
create mode 100644 vendor/illuminate/contracts/View/View.php
create mode 100644 vendor/illuminate/contracts/View/ViewCompilationException.php
create mode 100644 vendor/illuminate/contracts/composer.json
create mode 100644 vendor/illuminate/database/Capsule/Manager.php
create mode 100644 vendor/illuminate/database/ClassMorphViolationException.php
create mode 100644 vendor/illuminate/database/Concerns/BuildsQueries.php
create mode 100644 vendor/illuminate/database/Concerns/BuildsWhereDateClauses.php
create mode 100644 vendor/illuminate/database/Concerns/CompilesJsonPaths.php
create mode 100644 vendor/illuminate/database/Concerns/ExplainsQueries.php
create mode 100644 vendor/illuminate/database/Concerns/ManagesTransactions.php
create mode 100644 vendor/illuminate/database/Concerns/ParsesSearchPath.php
create mode 100644 vendor/illuminate/database/ConfigurationUrlParser.php
create mode 100644 vendor/illuminate/database/Connection.php
create mode 100644 vendor/illuminate/database/ConnectionInterface.php
create mode 100644 vendor/illuminate/database/ConnectionResolver.php
create mode 100644 vendor/illuminate/database/ConnectionResolverInterface.php
create mode 100644 vendor/illuminate/database/Connectors/ConnectionFactory.php
create mode 100644 vendor/illuminate/database/Connectors/Connector.php
create mode 100644 vendor/illuminate/database/Connectors/ConnectorInterface.php
create mode 100644 vendor/illuminate/database/Connectors/MariaDbConnector.php
create mode 100644 vendor/illuminate/database/Connectors/MySqlConnector.php
create mode 100644 vendor/illuminate/database/Connectors/PostgresConnector.php
create mode 100644 vendor/illuminate/database/Connectors/SQLiteConnector.php
create mode 100644 vendor/illuminate/database/Connectors/SqlServerConnector.php
create mode 100644 vendor/illuminate/database/Console/DatabaseInspectionCommand.php
create mode 100644 vendor/illuminate/database/Console/DbCommand.php
create mode 100644 vendor/illuminate/database/Console/DumpCommand.php
create mode 100644 vendor/illuminate/database/Console/Factories/FactoryMakeCommand.php
create mode 100644 vendor/illuminate/database/Console/Factories/stubs/factory.stub
create mode 100644 vendor/illuminate/database/Console/Migrations/BaseCommand.php
create mode 100644 vendor/illuminate/database/Console/Migrations/FreshCommand.php
create mode 100644 vendor/illuminate/database/Console/Migrations/InstallCommand.php
create mode 100644 vendor/illuminate/database/Console/Migrations/MigrateCommand.php
create mode 100644 vendor/illuminate/database/Console/Migrations/MigrateMakeCommand.php
create mode 100644 vendor/illuminate/database/Console/Migrations/RefreshCommand.php
create mode 100644 vendor/illuminate/database/Console/Migrations/ResetCommand.php
create mode 100644 vendor/illuminate/database/Console/Migrations/RollbackCommand.php
create mode 100644 vendor/illuminate/database/Console/Migrations/StatusCommand.php
create mode 100644 vendor/illuminate/database/Console/Migrations/TableGuesser.php
create mode 100644 vendor/illuminate/database/Console/MonitorCommand.php
create mode 100644 vendor/illuminate/database/Console/PruneCommand.php
create mode 100644 vendor/illuminate/database/Console/Seeds/SeedCommand.php
create mode 100644 vendor/illuminate/database/Console/Seeds/SeederMakeCommand.php
create mode 100644 vendor/illuminate/database/Console/Seeds/WithoutModelEvents.php
create mode 100644 vendor/illuminate/database/Console/Seeds/stubs/seeder.stub
create mode 100644 vendor/illuminate/database/Console/ShowCommand.php
create mode 100644 vendor/illuminate/database/Console/ShowModelCommand.php
create mode 100644 vendor/illuminate/database/Console/TableCommand.php
create mode 100644 vendor/illuminate/database/Console/WipeCommand.php
create mode 100644 vendor/illuminate/database/DatabaseManager.php
create mode 100644 vendor/illuminate/database/DatabaseServiceProvider.php
create mode 100644 vendor/illuminate/database/DatabaseTransactionRecord.php
create mode 100644 vendor/illuminate/database/DatabaseTransactionsManager.php
create mode 100644 vendor/illuminate/database/DeadlockException.php
create mode 100644 vendor/illuminate/database/DetectsConcurrencyErrors.php
create mode 100644 vendor/illuminate/database/DetectsLostConnections.php
create mode 100644 vendor/illuminate/database/Eloquent/Attributes/CollectedBy.php
create mode 100644 vendor/illuminate/database/Eloquent/Attributes/ObservedBy.php
create mode 100644 vendor/illuminate/database/Eloquent/Attributes/ScopedBy.php
create mode 100644 vendor/illuminate/database/Eloquent/Attributes/UseFactory.php
create mode 100644 vendor/illuminate/database/Eloquent/BroadcastableModelEventOccurred.php
create mode 100644 vendor/illuminate/database/Eloquent/BroadcastsEvents.php
create mode 100644 vendor/illuminate/database/Eloquent/BroadcastsEventsAfterCommit.php
create mode 100644 vendor/illuminate/database/Eloquent/Builder.php
create mode 100644 vendor/illuminate/database/Eloquent/Casts/ArrayObject.php
create mode 100644 vendor/illuminate/database/Eloquent/Casts/AsArrayObject.php
create mode 100644 vendor/illuminate/database/Eloquent/Casts/AsCollection.php
create mode 100644 vendor/illuminate/database/Eloquent/Casts/AsEncryptedArrayObject.php
create mode 100644 vendor/illuminate/database/Eloquent/Casts/AsEncryptedCollection.php
create mode 100644 vendor/illuminate/database/Eloquent/Casts/AsEnumArrayObject.php
create mode 100644 vendor/illuminate/database/Eloquent/Casts/AsEnumCollection.php
create mode 100644 vendor/illuminate/database/Eloquent/Casts/AsStringable.php
create mode 100644 vendor/illuminate/database/Eloquent/Casts/Attribute.php
create mode 100644 vendor/illuminate/database/Eloquent/Casts/Json.php
create mode 100644 vendor/illuminate/database/Eloquent/Collection.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/GuardsAttributes.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/HasAttributes.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/HasEvents.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/HasGlobalScopes.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/HasRelationships.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/HasTimestamps.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/HasUlids.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/HasUniqueIds.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/HasUniqueStringIds.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/HasUuids.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/HasVersion7Uuids.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/HidesAttributes.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/PreventsCircularRecursion.php
create mode 100644 vendor/illuminate/database/Eloquent/Concerns/QueriesRelationships.php
create mode 100644 vendor/illuminate/database/Eloquent/Factories/BelongsToManyRelationship.php
create mode 100644 vendor/illuminate/database/Eloquent/Factories/BelongsToRelationship.php
create mode 100644 vendor/illuminate/database/Eloquent/Factories/CrossJoinSequence.php
create mode 100644 vendor/illuminate/database/Eloquent/Factories/Factory.php
create mode 100644 vendor/illuminate/database/Eloquent/Factories/HasFactory.php
create mode 100644 vendor/illuminate/database/Eloquent/Factories/Relationship.php
create mode 100644 vendor/illuminate/database/Eloquent/Factories/Sequence.php
create mode 100644 vendor/illuminate/database/Eloquent/HasBuilder.php
create mode 100644 vendor/illuminate/database/Eloquent/HasCollection.php
create mode 100644 vendor/illuminate/database/Eloquent/HigherOrderBuilderProxy.php
create mode 100644 vendor/illuminate/database/Eloquent/InvalidCastException.php
create mode 100644 vendor/illuminate/database/Eloquent/JsonEncodingException.php
create mode 100644 vendor/illuminate/database/Eloquent/MassAssignmentException.php
create mode 100644 vendor/illuminate/database/Eloquent/MassPrunable.php
create mode 100644 vendor/illuminate/database/Eloquent/MissingAttributeException.php
create mode 100644 vendor/illuminate/database/Eloquent/Model.php
create mode 100644 vendor/illuminate/database/Eloquent/ModelInspector.php
create mode 100644 vendor/illuminate/database/Eloquent/ModelNotFoundException.php
create mode 100644 vendor/illuminate/database/Eloquent/PendingHasThroughRelationship.php
create mode 100644 vendor/illuminate/database/Eloquent/Prunable.php
create mode 100644 vendor/illuminate/database/Eloquent/QueueEntityResolver.php
create mode 100644 vendor/illuminate/database/Eloquent/RelationNotFoundException.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/BelongsTo.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/BelongsToMany.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/Concerns/AsPivot.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/Concerns/CanBeOneOfMany.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/Concerns/ComparesRelatedModels.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/Concerns/InteractsWithDictionary.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/Concerns/SupportsDefaultModels.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/Concerns/SupportsInverseRelations.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/HasMany.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/HasManyThrough.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/HasOne.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/HasOneOrMany.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/HasOneOrManyThrough.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/HasOneThrough.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/MorphMany.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/MorphOne.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/MorphOneOrMany.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/MorphPivot.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/MorphTo.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/MorphToMany.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/Pivot.php
create mode 100644 vendor/illuminate/database/Eloquent/Relations/Relation.php
create mode 100644 vendor/illuminate/database/Eloquent/Scope.php
create mode 100644 vendor/illuminate/database/Eloquent/SoftDeletes.php
create mode 100644 vendor/illuminate/database/Eloquent/SoftDeletingScope.php
create mode 100644 vendor/illuminate/database/Events/ConnectionEstablished.php
create mode 100644 vendor/illuminate/database/Events/ConnectionEvent.php
create mode 100644 vendor/illuminate/database/Events/DatabaseBusy.php
create mode 100644 vendor/illuminate/database/Events/DatabaseRefreshed.php
create mode 100644 vendor/illuminate/database/Events/MigrationEnded.php
create mode 100644 vendor/illuminate/database/Events/MigrationEvent.php
create mode 100644 vendor/illuminate/database/Events/MigrationStarted.php
create mode 100644 vendor/illuminate/database/Events/MigrationsEnded.php
create mode 100644 vendor/illuminate/database/Events/MigrationsEvent.php
create mode 100644 vendor/illuminate/database/Events/MigrationsPruned.php
create mode 100644 vendor/illuminate/database/Events/MigrationsStarted.php
create mode 100644 vendor/illuminate/database/Events/ModelPruningFinished.php
create mode 100644 vendor/illuminate/database/Events/ModelPruningStarting.php
create mode 100644 vendor/illuminate/database/Events/ModelsPruned.php
create mode 100644 vendor/illuminate/database/Events/NoPendingMigrations.php
create mode 100644 vendor/illuminate/database/Events/QueryExecuted.php
create mode 100644 vendor/illuminate/database/Events/SchemaDumped.php
create mode 100644 vendor/illuminate/database/Events/SchemaLoaded.php
create mode 100644 vendor/illuminate/database/Events/StatementPrepared.php
create mode 100644 vendor/illuminate/database/Events/TransactionBeginning.php
create mode 100644 vendor/illuminate/database/Events/TransactionCommitted.php
create mode 100644 vendor/illuminate/database/Events/TransactionCommitting.php
create mode 100644 vendor/illuminate/database/Events/TransactionRolledBack.php
create mode 100644 vendor/illuminate/database/Grammar.php
create mode 100644 vendor/illuminate/database/LICENSE.md
create mode 100644 vendor/illuminate/database/LazyLoadingViolationException.php
create mode 100644 vendor/illuminate/database/LostConnectionException.php
create mode 100644 vendor/illuminate/database/MariaDbConnection.php
create mode 100644 vendor/illuminate/database/MigrationServiceProvider.php
create mode 100644 vendor/illuminate/database/Migrations/DatabaseMigrationRepository.php
create mode 100644 vendor/illuminate/database/Migrations/Migration.php
create mode 100644 vendor/illuminate/database/Migrations/MigrationCreator.php
create mode 100644 vendor/illuminate/database/Migrations/MigrationRepositoryInterface.php
create mode 100644 vendor/illuminate/database/Migrations/Migrator.php
create mode 100644 vendor/illuminate/database/Migrations/stubs/migration.create.stub
create mode 100644 vendor/illuminate/database/Migrations/stubs/migration.stub
create mode 100644 vendor/illuminate/database/Migrations/stubs/migration.update.stub
create mode 100644 vendor/illuminate/database/MultipleColumnsSelectedException.php
create mode 100644 vendor/illuminate/database/MultipleRecordsFoundException.php
create mode 100644 vendor/illuminate/database/MySqlConnection.php
create mode 100644 vendor/illuminate/database/PostgresConnection.php
create mode 100644 vendor/illuminate/database/Query/Builder.php
create mode 100644 vendor/illuminate/database/Query/Expression.php
create mode 100644 vendor/illuminate/database/Query/Grammars/Grammar.php
create mode 100644 vendor/illuminate/database/Query/Grammars/MariaDbGrammar.php
create mode 100644 vendor/illuminate/database/Query/Grammars/MySqlGrammar.php
create mode 100644 vendor/illuminate/database/Query/Grammars/PostgresGrammar.php
create mode 100644 vendor/illuminate/database/Query/Grammars/SQLiteGrammar.php
create mode 100644 vendor/illuminate/database/Query/Grammars/SqlServerGrammar.php
create mode 100644 vendor/illuminate/database/Query/IndexHint.php
create mode 100644 vendor/illuminate/database/Query/JoinClause.php
create mode 100644 vendor/illuminate/database/Query/JoinLateralClause.php
create mode 100644 vendor/illuminate/database/Query/Processors/MariaDbProcessor.php
create mode 100644 vendor/illuminate/database/Query/Processors/MySqlProcessor.php
create mode 100644 vendor/illuminate/database/Query/Processors/PostgresProcessor.php
create mode 100644 vendor/illuminate/database/Query/Processors/Processor.php
create mode 100644 vendor/illuminate/database/Query/Processors/SQLiteProcessor.php
create mode 100644 vendor/illuminate/database/Query/Processors/SqlServerProcessor.php
create mode 100644 vendor/illuminate/database/QueryException.php
create mode 100644 vendor/illuminate/database/README.md
create mode 100644 vendor/illuminate/database/RecordNotFoundException.php
create mode 100644 vendor/illuminate/database/RecordsNotFoundException.php
create mode 100644 vendor/illuminate/database/SQLiteConnection.php
create mode 100644 vendor/illuminate/database/SQLiteDatabaseDoesNotExistException.php
create mode 100644 vendor/illuminate/database/Schema/Blueprint.php
create mode 100644 vendor/illuminate/database/Schema/BlueprintState.php
create mode 100644 vendor/illuminate/database/Schema/Builder.php
create mode 100644 vendor/illuminate/database/Schema/ColumnDefinition.php
create mode 100644 vendor/illuminate/database/Schema/ForeignIdColumnDefinition.php
create mode 100644 vendor/illuminate/database/Schema/ForeignKeyDefinition.php
create mode 100644 vendor/illuminate/database/Schema/Grammars/Grammar.php
create mode 100644 vendor/illuminate/database/Schema/Grammars/MariaDbGrammar.php
create mode 100644 vendor/illuminate/database/Schema/Grammars/MySqlGrammar.php
create mode 100644 vendor/illuminate/database/Schema/Grammars/PostgresGrammar.php
create mode 100644 vendor/illuminate/database/Schema/Grammars/SQLiteGrammar.php
create mode 100644 vendor/illuminate/database/Schema/Grammars/SqlServerGrammar.php
create mode 100644 vendor/illuminate/database/Schema/IndexDefinition.php
create mode 100644 vendor/illuminate/database/Schema/MariaDbBuilder.php
create mode 100644 vendor/illuminate/database/Schema/MariaDbSchemaState.php
create mode 100644 vendor/illuminate/database/Schema/MySqlBuilder.php
create mode 100644 vendor/illuminate/database/Schema/MySqlSchemaState.php
create mode 100644 vendor/illuminate/database/Schema/PostgresBuilder.php
create mode 100644 vendor/illuminate/database/Schema/PostgresSchemaState.php
create mode 100644 vendor/illuminate/database/Schema/SQLiteBuilder.php
create mode 100644 vendor/illuminate/database/Schema/SchemaState.php
create mode 100644 vendor/illuminate/database/Schema/SqlServerBuilder.php
create mode 100644 vendor/illuminate/database/Schema/SqliteSchemaState.php
create mode 100644 vendor/illuminate/database/Seeder.php
create mode 100644 vendor/illuminate/database/SqlServerConnection.php
create mode 100644 vendor/illuminate/database/UniqueConstraintViolationException.php
create mode 100644 vendor/illuminate/database/composer.json
create mode 100644 vendor/illuminate/macroable/LICENSE.md
create mode 100644 vendor/illuminate/macroable/Traits/Macroable.php
create mode 100644 vendor/illuminate/macroable/composer.json
create mode 100644 vendor/illuminate/support/AggregateServiceProvider.php
create mode 100644 vendor/illuminate/support/Benchmark.php
create mode 100644 vendor/illuminate/support/Carbon.php
create mode 100644 vendor/illuminate/support/Composer.php
create mode 100644 vendor/illuminate/support/ConfigurationUrlParser.php
create mode 100644 vendor/illuminate/support/DateFactory.php
create mode 100644 vendor/illuminate/support/DefaultProviders.php
create mode 100644 vendor/illuminate/support/Defer/DeferredCallback.php
create mode 100644 vendor/illuminate/support/Defer/DeferredCallbackCollection.php
create mode 100644 vendor/illuminate/support/Env.php
create mode 100644 vendor/illuminate/support/Exceptions/MathException.php
create mode 100644 vendor/illuminate/support/Facades/App.php
create mode 100644 vendor/illuminate/support/Facades/Artisan.php
create mode 100644 vendor/illuminate/support/Facades/Auth.php
create mode 100644 vendor/illuminate/support/Facades/Blade.php
create mode 100644 vendor/illuminate/support/Facades/Broadcast.php
create mode 100644 vendor/illuminate/support/Facades/Bus.php
create mode 100644 vendor/illuminate/support/Facades/Cache.php
create mode 100644 vendor/illuminate/support/Facades/Concurrency.php
create mode 100644 vendor/illuminate/support/Facades/Config.php
create mode 100644 vendor/illuminate/support/Facades/Context.php
create mode 100644 vendor/illuminate/support/Facades/Cookie.php
create mode 100644 vendor/illuminate/support/Facades/Crypt.php
create mode 100644 vendor/illuminate/support/Facades/DB.php
create mode 100644 vendor/illuminate/support/Facades/Date.php
create mode 100644 vendor/illuminate/support/Facades/Event.php
create mode 100644 vendor/illuminate/support/Facades/Exceptions.php
create mode 100644 vendor/illuminate/support/Facades/Facade.php
create mode 100644 vendor/illuminate/support/Facades/File.php
create mode 100644 vendor/illuminate/support/Facades/Gate.php
create mode 100644 vendor/illuminate/support/Facades/Hash.php
create mode 100644 vendor/illuminate/support/Facades/Http.php
create mode 100644 vendor/illuminate/support/Facades/Lang.php
create mode 100644 vendor/illuminate/support/Facades/Log.php
create mode 100644 vendor/illuminate/support/Facades/Mail.php
create mode 100644 vendor/illuminate/support/Facades/Notification.php
create mode 100644 vendor/illuminate/support/Facades/ParallelTesting.php
create mode 100644 vendor/illuminate/support/Facades/Password.php
create mode 100644 vendor/illuminate/support/Facades/Pipeline.php
create mode 100644 vendor/illuminate/support/Facades/Process.php
create mode 100644 vendor/illuminate/support/Facades/Queue.php
create mode 100644 vendor/illuminate/support/Facades/RateLimiter.php
create mode 100644 vendor/illuminate/support/Facades/Redirect.php
create mode 100644 vendor/illuminate/support/Facades/Redis.php
create mode 100644 vendor/illuminate/support/Facades/Request.php
create mode 100644 vendor/illuminate/support/Facades/Response.php
create mode 100644 vendor/illuminate/support/Facades/Route.php
create mode 100644 vendor/illuminate/support/Facades/Schedule.php
create mode 100644 vendor/illuminate/support/Facades/Schema.php
create mode 100644 vendor/illuminate/support/Facades/Session.php
create mode 100644 vendor/illuminate/support/Facades/Storage.php
create mode 100644 vendor/illuminate/support/Facades/URL.php
create mode 100644 vendor/illuminate/support/Facades/Validator.php
create mode 100644 vendor/illuminate/support/Facades/View.php
create mode 100644 vendor/illuminate/support/Facades/Vite.php
create mode 100644 vendor/illuminate/support/Fluent.php
create mode 100644 vendor/illuminate/support/HigherOrderTapProxy.php
create mode 100644 vendor/illuminate/support/HtmlString.php
create mode 100644 vendor/illuminate/support/InteractsWithTime.php
create mode 100644 vendor/illuminate/support/Js.php
create mode 100644 vendor/illuminate/support/LICENSE.md
create mode 100644 vendor/illuminate/support/Lottery.php
create mode 100644 vendor/illuminate/support/Manager.php
create mode 100644 vendor/illuminate/support/MessageBag.php
create mode 100644 vendor/illuminate/support/MultipleInstanceManager.php
create mode 100644 vendor/illuminate/support/NamespacedItemResolver.php
create mode 100644 vendor/illuminate/support/Number.php
create mode 100644 vendor/illuminate/support/Once.php
create mode 100644 vendor/illuminate/support/Onceable.php
create mode 100644 vendor/illuminate/support/Optional.php
create mode 100644 vendor/illuminate/support/Pluralizer.php
create mode 100644 vendor/illuminate/support/Process/PhpExecutableFinder.php
create mode 100644 vendor/illuminate/support/ProcessUtils.php
create mode 100644 vendor/illuminate/support/Reflector.php
create mode 100644 vendor/illuminate/support/ServiceProvider.php
create mode 100644 vendor/illuminate/support/Sleep.php
create mode 100644 vendor/illuminate/support/Str.php
create mode 100644 vendor/illuminate/support/Stringable.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/BatchFake.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/BatchRepositoryFake.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/BusFake.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/ChainedBatchTruthTest.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/EventFake.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/ExceptionHandlerFake.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/Fake.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/MailFake.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/NotificationFake.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/PendingBatchFake.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/PendingChainFake.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/PendingMailFake.php
create mode 100644 vendor/illuminate/support/Testing/Fakes/QueueFake.php
create mode 100644 vendor/illuminate/support/Timebox.php
create mode 100644 vendor/illuminate/support/Traits/CapsuleManagerTrait.php
create mode 100644 vendor/illuminate/support/Traits/Dumpable.php
create mode 100644 vendor/illuminate/support/Traits/ForwardsCalls.php
create mode 100644 vendor/illuminate/support/Traits/InteractsWithData.php
create mode 100644 vendor/illuminate/support/Traits/Localizable.php
create mode 100644 vendor/illuminate/support/Traits/ReflectsClosures.php
create mode 100644 vendor/illuminate/support/Traits/Tappable.php
create mode 100644 vendor/illuminate/support/Uri.php
create mode 100644 vendor/illuminate/support/UriQueryString.php
create mode 100644 vendor/illuminate/support/ValidatedInput.php
create mode 100644 vendor/illuminate/support/ViewErrorBag.php
create mode 100644 vendor/illuminate/support/composer.json
create mode 100644 vendor/illuminate/support/functions.php
create mode 100644 vendor/illuminate/support/helpers.php
create mode 100644 vendor/laravel/serializable-closure/LICENSE.md
create mode 100644 vendor/laravel/serializable-closure/README.md
create mode 100644 vendor/laravel/serializable-closure/composer.json
create mode 100644 vendor/laravel/serializable-closure/src/Contracts/Serializable.php
create mode 100644 vendor/laravel/serializable-closure/src/Contracts/Signer.php
create mode 100644 vendor/laravel/serializable-closure/src/Exceptions/InvalidSignatureException.php
create mode 100644 vendor/laravel/serializable-closure/src/Exceptions/MissingSecretKeyException.php
create mode 100644 vendor/laravel/serializable-closure/src/Exceptions/PhpVersionNotSupportedException.php
create mode 100644 vendor/laravel/serializable-closure/src/SerializableClosure.php
create mode 100644 vendor/laravel/serializable-closure/src/Serializers/Native.php
create mode 100644 vendor/laravel/serializable-closure/src/Serializers/Signed.php
create mode 100644 vendor/laravel/serializable-closure/src/Signers/Hmac.php
create mode 100644 vendor/laravel/serializable-closure/src/Support/ClosureScope.php
create mode 100644 vendor/laravel/serializable-closure/src/Support/ClosureStream.php
create mode 100644 vendor/laravel/serializable-closure/src/Support/ReflectionClosure.php
create mode 100644 vendor/laravel/serializable-closure/src/Support/SelfReference.php
create mode 100644 vendor/laravel/serializable-closure/src/UnsignedSerializableClosure.php
create mode 100644 vendor/nesbot/carbon/.phpstorm.meta.php
create mode 100644 vendor/nesbot/carbon/LICENSE
create mode 100644 vendor/nesbot/carbon/bin/carbon
create mode 100644 vendor/nesbot/carbon/bin/carbon.bat
create mode 100644 vendor/nesbot/carbon/composer.json
create mode 100644 vendor/nesbot/carbon/extension.neon
create mode 100644 vendor/nesbot/carbon/lazy/Carbon/MessageFormatter/MessageFormatterMapperStrongType.php
create mode 100644 vendor/nesbot/carbon/lazy/Carbon/MessageFormatter/MessageFormatterMapperWeakType.php
create mode 100644 vendor/nesbot/carbon/lazy/Carbon/ProtectedDatePeriod.php
create mode 100644 vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php
create mode 100644 vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php
create mode 100644 vendor/nesbot/carbon/lazy/Carbon/UnprotectedDatePeriod.php
create mode 100644 vendor/nesbot/carbon/readme.md
create mode 100644 vendor/nesbot/carbon/sponsors.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Callback.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Carbon.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonInterface.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonInterval.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonPeriodImmutable.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnsupportedUnitException.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Factory.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/aa.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/af.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/agq.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/agr.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ak.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/am.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/an.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/anp.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/as.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/asa.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ast.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ayc.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/az.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bas.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/be.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bem.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ber.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bez.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bg.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bhb.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bho.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bi.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bm.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/br.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/brx.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bs.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/byn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ccp.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ce.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cgg.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/chr.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ckb.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cmn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/crh.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cs.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/csb.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cu.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cv.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cy.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/da.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dav.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dje.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/doi.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dsb.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dua.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dv.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dyo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dz.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ebu.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ee.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/el.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_001.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_150.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_US.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/eo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_419.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_US.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/et.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/eu.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ewo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fa.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ff.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fi.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fil.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fur.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fy.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ga.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gd.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gez.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gom.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gsw.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gu.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/guz.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gv.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ha.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hak.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/haw.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/he.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hi.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hif.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hne.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hr.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hsb.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ht.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hu.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hy.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/i18n.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ia.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/id.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ig.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ii.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ik.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/in.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/is.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/it.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/iu.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/iw.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ja.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/jgo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/jmc.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/jv.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ka.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kab.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kam.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kde.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kea.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/khq.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ki.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kk.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kkj.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kln.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/km.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ko.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kok.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ks.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ksb.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ksf.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ksh.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ku.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kw.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ky.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lag.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lb.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lg.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/li.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lij.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lkt.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ln.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lrc.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lt.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lu.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/luo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/luy.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lv.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lzh.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mag.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mai.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mas.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mer.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mfe.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mg.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mgh.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mgo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mhr.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mi.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/miq.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mjw.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mk.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ml.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mni.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mr.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ms.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mt.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mua.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/my.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mzn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nan.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/naq.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nb.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nd.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nds.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ne.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nhn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/niu.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nmg.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nnh.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/no.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nr.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nso.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nus.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nyn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/oc.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/om.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/or.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/os.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pa.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pap.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/prg.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ps.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/qu.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/quz.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/raj.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rm.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ro.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rof.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rw.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rwk.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sa.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sah.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/saq.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sat.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sbp.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sc.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sd.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/se.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/seh.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ses.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sg.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sgs.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sh.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shi.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shs.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/si.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sid.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sk.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sm.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/smn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/so.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sq.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ss.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/st.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sv.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sw.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/szl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ta.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tcy.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/te.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/teo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tet.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tg.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/th.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/the.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ti.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tig.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tk.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tlh.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/to.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tpi.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tr.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ts.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tt.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/twq.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tzl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tzm.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ug.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uk.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/unm.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ur.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vai.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ve.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vi.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vun.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wa.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wae.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wal.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/xh.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/xog.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yav.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yi.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yo.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yue.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yuw.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zgh.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zu.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Language.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/List/languages.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/List/regions.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/MessageFormatter/MessageFormatterMapper.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Month.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/PHPStan/MacroMethodReflection.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Cast.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Converter.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Creator.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Date.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedPeriodProperties.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Difference.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/LocalFactory.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Localization.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Macro.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/MagicParameter.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Options.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/StaticLocalization.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/StaticOptions.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Test.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Units.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Week.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Translator.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/Unit.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/WeekDay.php
create mode 100644 vendor/nesbot/carbon/src/Carbon/WrapperClock.php
create mode 100644 vendor/nikic/fast-route/.gitignore
create mode 100644 vendor/nikic/fast-route/.hhconfig
create mode 100644 vendor/nikic/fast-route/.travis.yml
create mode 100644 vendor/nikic/fast-route/FastRoute.hhi
create mode 100644 vendor/nikic/fast-route/LICENSE
create mode 100644 vendor/nikic/fast-route/README.md
create mode 100644 vendor/nikic/fast-route/composer.json
create mode 100644 vendor/nikic/fast-route/phpunit.xml
create mode 100644 vendor/nikic/fast-route/psalm.xml
create mode 100644 vendor/nikic/fast-route/src/BadRouteException.php
create mode 100644 vendor/nikic/fast-route/src/DataGenerator.php
create mode 100644 vendor/nikic/fast-route/src/DataGenerator/CharCountBased.php
create mode 100644 vendor/nikic/fast-route/src/DataGenerator/GroupCountBased.php
create mode 100644 vendor/nikic/fast-route/src/DataGenerator/GroupPosBased.php
create mode 100644 vendor/nikic/fast-route/src/DataGenerator/MarkBased.php
create mode 100644 vendor/nikic/fast-route/src/DataGenerator/RegexBasedAbstract.php
create mode 100644 vendor/nikic/fast-route/src/Dispatcher.php
create mode 100644 vendor/nikic/fast-route/src/Dispatcher/CharCountBased.php
create mode 100644 vendor/nikic/fast-route/src/Dispatcher/GroupCountBased.php
create mode 100644 vendor/nikic/fast-route/src/Dispatcher/GroupPosBased.php
create mode 100644 vendor/nikic/fast-route/src/Dispatcher/MarkBased.php
create mode 100644 vendor/nikic/fast-route/src/Dispatcher/RegexBasedAbstract.php
create mode 100644 vendor/nikic/fast-route/src/Route.php
create mode 100644 vendor/nikic/fast-route/src/RouteCollector.php
create mode 100644 vendor/nikic/fast-route/src/RouteParser.php
create mode 100644 vendor/nikic/fast-route/src/RouteParser/Std.php
create mode 100644 vendor/nikic/fast-route/src/bootstrap.php
create mode 100644 vendor/nikic/fast-route/src/functions.php
create mode 100644 vendor/nikic/fast-route/test/Dispatcher/CharCountBasedTest.php
create mode 100644 vendor/nikic/fast-route/test/Dispatcher/DispatcherTest.php
create mode 100644 vendor/nikic/fast-route/test/Dispatcher/GroupCountBasedTest.php
create mode 100644 vendor/nikic/fast-route/test/Dispatcher/GroupPosBasedTest.php
create mode 100644 vendor/nikic/fast-route/test/Dispatcher/MarkBasedTest.php
create mode 100644 vendor/nikic/fast-route/test/HackTypechecker/HackTypecheckerTest.php
create mode 100644 vendor/nikic/fast-route/test/HackTypechecker/fixtures/all_options.php
create mode 100644 vendor/nikic/fast-route/test/HackTypechecker/fixtures/empty_options.php
create mode 100644 vendor/nikic/fast-route/test/HackTypechecker/fixtures/no_options.php
create mode 100644 vendor/nikic/fast-route/test/RouteCollectorTest.php
create mode 100644 vendor/nikic/fast-route/test/RouteParser/StdTest.php
create mode 100644 vendor/nikic/fast-route/test/bootstrap.php
create mode 100644 vendor/psr/clock/CHANGELOG.md
create mode 100644 vendor/psr/clock/LICENSE
create mode 100644 vendor/psr/clock/README.md
create mode 100644 vendor/psr/clock/composer.json
create mode 100644 vendor/psr/clock/src/ClockInterface.php
create mode 100644 vendor/psr/container/.gitignore
create mode 100644 vendor/psr/container/LICENSE
create mode 100644 vendor/psr/container/README.md
create mode 100644 vendor/psr/container/composer.json
create mode 100644 vendor/psr/container/src/ContainerExceptionInterface.php
create mode 100644 vendor/psr/container/src/ContainerInterface.php
create mode 100644 vendor/psr/container/src/NotFoundExceptionInterface.php
create mode 100644 vendor/psr/log/LICENSE
create mode 100644 vendor/psr/log/README.md
create mode 100644 vendor/psr/log/composer.json
create mode 100644 vendor/psr/log/src/AbstractLogger.php
create mode 100644 vendor/psr/log/src/InvalidArgumentException.php
create mode 100644 vendor/psr/log/src/LogLevel.php
create mode 100644 vendor/psr/log/src/LoggerAwareInterface.php
create mode 100644 vendor/psr/log/src/LoggerAwareTrait.php
create mode 100644 vendor/psr/log/src/LoggerInterface.php
create mode 100644 vendor/psr/log/src/LoggerTrait.php
create mode 100644 vendor/psr/log/src/NullLogger.php
create mode 100644 vendor/psr/simple-cache/.editorconfig
create mode 100644 vendor/psr/simple-cache/LICENSE.md
create mode 100644 vendor/psr/simple-cache/README.md
create mode 100644 vendor/psr/simple-cache/composer.json
create mode 100644 vendor/psr/simple-cache/src/CacheException.php
create mode 100644 vendor/psr/simple-cache/src/CacheInterface.php
create mode 100644 vendor/psr/simple-cache/src/InvalidArgumentException.php
create mode 100644 vendor/symfony/clock/CHANGELOG.md
create mode 100644 vendor/symfony/clock/Clock.php
create mode 100644 vendor/symfony/clock/ClockAwareTrait.php
create mode 100644 vendor/symfony/clock/ClockInterface.php
create mode 100644 vendor/symfony/clock/DatePoint.php
create mode 100644 vendor/symfony/clock/LICENSE
create mode 100644 vendor/symfony/clock/MockClock.php
create mode 100644 vendor/symfony/clock/MonotonicClock.php
create mode 100644 vendor/symfony/clock/NativeClock.php
create mode 100644 vendor/symfony/clock/README.md
create mode 100644 vendor/symfony/clock/Resources/now.php
create mode 100644 vendor/symfony/clock/Test/ClockSensitiveTrait.php
create mode 100644 vendor/symfony/clock/composer.json
create mode 100644 vendor/symfony/deprecation-contracts/CHANGELOG.md
create mode 100644 vendor/symfony/deprecation-contracts/LICENSE
create mode 100644 vendor/symfony/deprecation-contracts/README.md
create mode 100644 vendor/symfony/deprecation-contracts/composer.json
create mode 100644 vendor/symfony/deprecation-contracts/function.php
create mode 100644 vendor/symfony/polyfill-mbstring/LICENSE
create mode 100644 vendor/symfony/polyfill-mbstring/Mbstring.php
create mode 100644 vendor/symfony/polyfill-mbstring/README.md
create mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php
create mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
create mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
create mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
create mode 100644 vendor/symfony/polyfill-mbstring/bootstrap.php
create mode 100644 vendor/symfony/polyfill-mbstring/bootstrap80.php
create mode 100644 vendor/symfony/polyfill-mbstring/composer.json
create mode 100644 vendor/symfony/polyfill-php83/LICENSE
create mode 100644 vendor/symfony/polyfill-php83/Php83.php
create mode 100644 vendor/symfony/polyfill-php83/README.md
create mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateError.php
create mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateException.php
create mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php
create mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php
create mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php
create mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php
create mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php
create mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateObjectError.php
create mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateRangeError.php
create mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/Override.php
create mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/SQLite3Exception.php
create mode 100644 vendor/symfony/polyfill-php83/bootstrap.php
create mode 100644 vendor/symfony/polyfill-php83/bootstrap81.php
create mode 100644 vendor/symfony/polyfill-php83/composer.json
create mode 100644 vendor/symfony/translation-contracts/CHANGELOG.md
create mode 100644 vendor/symfony/translation-contracts/LICENSE
create mode 100644 vendor/symfony/translation-contracts/LocaleAwareInterface.php
create mode 100644 vendor/symfony/translation-contracts/README.md
create mode 100644 vendor/symfony/translation-contracts/Test/TranslatorTest.php
create mode 100644 vendor/symfony/translation-contracts/TranslatableInterface.php
create mode 100644 vendor/symfony/translation-contracts/TranslatorInterface.php
create mode 100644 vendor/symfony/translation-contracts/TranslatorTrait.php
create mode 100644 vendor/symfony/translation-contracts/composer.json
create mode 100644 vendor/symfony/translation/CHANGELOG.md
create mode 100644 vendor/symfony/translation/Catalogue/AbstractOperation.php
create mode 100644 vendor/symfony/translation/Catalogue/MergeOperation.php
create mode 100644 vendor/symfony/translation/Catalogue/OperationInterface.php
create mode 100644 vendor/symfony/translation/Catalogue/TargetOperation.php
create mode 100644 vendor/symfony/translation/CatalogueMetadataAwareInterface.php
create mode 100644 vendor/symfony/translation/Command/TranslationLintCommand.php
create mode 100644 vendor/symfony/translation/Command/TranslationPullCommand.php
create mode 100644 vendor/symfony/translation/Command/TranslationPushCommand.php
create mode 100644 vendor/symfony/translation/Command/TranslationTrait.php
create mode 100644 vendor/symfony/translation/Command/XliffLintCommand.php
create mode 100644 vendor/symfony/translation/DataCollector/TranslationDataCollector.php
create mode 100644 vendor/symfony/translation/DataCollectorTranslator.php
create mode 100644 vendor/symfony/translation/DependencyInjection/DataCollectorTranslatorPass.php
create mode 100644 vendor/symfony/translation/DependencyInjection/LoggingTranslatorPass.php
create mode 100644 vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php
create mode 100644 vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php
create mode 100644 vendor/symfony/translation/DependencyInjection/TranslatorPass.php
create mode 100644 vendor/symfony/translation/DependencyInjection/TranslatorPathsPass.php
create mode 100644 vendor/symfony/translation/Dumper/CsvFileDumper.php
create mode 100644 vendor/symfony/translation/Dumper/DumperInterface.php
create mode 100644 vendor/symfony/translation/Dumper/FileDumper.php
create mode 100644 vendor/symfony/translation/Dumper/IcuResFileDumper.php
create mode 100644 vendor/symfony/translation/Dumper/IniFileDumper.php
create mode 100644 vendor/symfony/translation/Dumper/JsonFileDumper.php
create mode 100644 vendor/symfony/translation/Dumper/MoFileDumper.php
create mode 100644 vendor/symfony/translation/Dumper/PhpFileDumper.php
create mode 100644 vendor/symfony/translation/Dumper/PoFileDumper.php
create mode 100644 vendor/symfony/translation/Dumper/QtFileDumper.php
create mode 100644 vendor/symfony/translation/Dumper/XliffFileDumper.php
create mode 100644 vendor/symfony/translation/Dumper/YamlFileDumper.php
create mode 100644 vendor/symfony/translation/Exception/ExceptionInterface.php
create mode 100644 vendor/symfony/translation/Exception/IncompleteDsnException.php
create mode 100644 vendor/symfony/translation/Exception/InvalidArgumentException.php
create mode 100644 vendor/symfony/translation/Exception/InvalidResourceException.php
create mode 100644 vendor/symfony/translation/Exception/LogicException.php
create mode 100644 vendor/symfony/translation/Exception/MissingRequiredOptionException.php
create mode 100644 vendor/symfony/translation/Exception/NotFoundResourceException.php
create mode 100644 vendor/symfony/translation/Exception/ProviderException.php
create mode 100644 vendor/symfony/translation/Exception/ProviderExceptionInterface.php
create mode 100644 vendor/symfony/translation/Exception/RuntimeException.php
create mode 100644 vendor/symfony/translation/Exception/UnsupportedSchemeException.php
create mode 100644 vendor/symfony/translation/Extractor/AbstractFileExtractor.php
create mode 100644 vendor/symfony/translation/Extractor/ChainExtractor.php
create mode 100644 vendor/symfony/translation/Extractor/ExtractorInterface.php
create mode 100644 vendor/symfony/translation/Extractor/PhpAstExtractor.php
create mode 100644 vendor/symfony/translation/Extractor/Visitor/AbstractVisitor.php
create mode 100644 vendor/symfony/translation/Extractor/Visitor/ConstraintVisitor.php
create mode 100644 vendor/symfony/translation/Extractor/Visitor/TransMethodVisitor.php
create mode 100644 vendor/symfony/translation/Extractor/Visitor/TranslatableMessageVisitor.php
create mode 100644 vendor/symfony/translation/Formatter/IntlFormatter.php
create mode 100644 vendor/symfony/translation/Formatter/IntlFormatterInterface.php
create mode 100644 vendor/symfony/translation/Formatter/MessageFormatter.php
create mode 100644 vendor/symfony/translation/Formatter/MessageFormatterInterface.php
create mode 100644 vendor/symfony/translation/IdentityTranslator.php
create mode 100644 vendor/symfony/translation/LICENSE
create mode 100644 vendor/symfony/translation/Loader/ArrayLoader.php
create mode 100644 vendor/symfony/translation/Loader/CsvFileLoader.php
create mode 100644 vendor/symfony/translation/Loader/FileLoader.php
create mode 100644 vendor/symfony/translation/Loader/IcuDatFileLoader.php
create mode 100644 vendor/symfony/translation/Loader/IcuResFileLoader.php
create mode 100644 vendor/symfony/translation/Loader/IniFileLoader.php
create mode 100644 vendor/symfony/translation/Loader/JsonFileLoader.php
create mode 100644 vendor/symfony/translation/Loader/LoaderInterface.php
create mode 100644 vendor/symfony/translation/Loader/MoFileLoader.php
create mode 100644 vendor/symfony/translation/Loader/PhpFileLoader.php
create mode 100644 vendor/symfony/translation/Loader/PoFileLoader.php
create mode 100644 vendor/symfony/translation/Loader/QtFileLoader.php
create mode 100644 vendor/symfony/translation/Loader/XliffFileLoader.php
create mode 100644 vendor/symfony/translation/Loader/YamlFileLoader.php
create mode 100644 vendor/symfony/translation/LocaleSwitcher.php
create mode 100644 vendor/symfony/translation/LoggingTranslator.php
create mode 100644 vendor/symfony/translation/MessageCatalogue.php
create mode 100644 vendor/symfony/translation/MessageCatalogueInterface.php
create mode 100644 vendor/symfony/translation/MetadataAwareInterface.php
create mode 100644 vendor/symfony/translation/Provider/AbstractProviderFactory.php
create mode 100644 vendor/symfony/translation/Provider/Dsn.php
create mode 100644 vendor/symfony/translation/Provider/FilteringProvider.php
create mode 100644 vendor/symfony/translation/Provider/NullProvider.php
create mode 100644 vendor/symfony/translation/Provider/NullProviderFactory.php
create mode 100644 vendor/symfony/translation/Provider/ProviderFactoryInterface.php
create mode 100644 vendor/symfony/translation/Provider/ProviderInterface.php
create mode 100644 vendor/symfony/translation/Provider/TranslationProviderCollection.php
create mode 100644 vendor/symfony/translation/Provider/TranslationProviderCollectionFactory.php
create mode 100644 vendor/symfony/translation/PseudoLocalizationTranslator.php
create mode 100644 vendor/symfony/translation/README.md
create mode 100644 vendor/symfony/translation/Reader/TranslationReader.php
create mode 100644 vendor/symfony/translation/Reader/TranslationReaderInterface.php
create mode 100644 vendor/symfony/translation/Resources/bin/translation-status.php
create mode 100644 vendor/symfony/translation/Resources/data/parents.json
create mode 100644 vendor/symfony/translation/Resources/functions.php
create mode 100644 vendor/symfony/translation/Resources/schemas/xliff-core-1.2-transitional.xsd
create mode 100644 vendor/symfony/translation/Resources/schemas/xliff-core-2.0.xsd
create mode 100644 vendor/symfony/translation/Resources/schemas/xml.xsd
create mode 100644 vendor/symfony/translation/Test/AbstractProviderFactoryTestCase.php
create mode 100644 vendor/symfony/translation/Test/IncompleteDsnTestTrait.php
create mode 100644 vendor/symfony/translation/Test/ProviderFactoryTestCase.php
create mode 100644 vendor/symfony/translation/Test/ProviderTestCase.php
create mode 100644 vendor/symfony/translation/TranslatableMessage.php
create mode 100644 vendor/symfony/translation/Translator.php
create mode 100644 vendor/symfony/translation/TranslatorBag.php
create mode 100644 vendor/symfony/translation/TranslatorBagInterface.php
create mode 100644 vendor/symfony/translation/Util/ArrayConverter.php
create mode 100644 vendor/symfony/translation/Util/XliffUtils.php
create mode 100644 vendor/symfony/translation/Writer/TranslationWriter.php
create mode 100644 vendor/symfony/translation/Writer/TranslationWriterInterface.php
create mode 100644 vendor/symfony/translation/composer.json
create mode 100644 vendor/voku/portable-ascii/.deepsource.toml
create mode 100644 vendor/voku/portable-ascii/CHANGELOG.md
create mode 100644 vendor/voku/portable-ascii/LICENSE.txt
create mode 100644 vendor/voku/portable-ascii/README.md
create mode 100644 vendor/voku/portable-ascii/composer.json
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/ASCII.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_by_languages.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_extras_by_languages.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_language_max_key.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_ord.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x000.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x001.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x002.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x003.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x004.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x005.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x006.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x007.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x009.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00a.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00b.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00c.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00d.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00e.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00f.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x010.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x011.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x012.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x013.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x014.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x015.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x016.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x017.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x018.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x01d.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x01e.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x01f.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x020.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x021.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x022.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x023.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x024.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x025.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x026.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x027.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x028.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x029.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02a.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02c.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02e.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02f.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x030.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x031.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x032.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x033.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x04d.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x04e.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x04f.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x050.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x051.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x052.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x053.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x054.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x055.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x056.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x057.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x058.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x059.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05a.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05b.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05c.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05d.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05e.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05f.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x060.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x061.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x062.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x063.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x064.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x065.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x066.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x067.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x068.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x069.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06a.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06b.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06c.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06d.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06e.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06f.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x070.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x071.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x072.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x073.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x074.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x075.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x076.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x077.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x078.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x079.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07a.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07b.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07c.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07d.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07e.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07f.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x080.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x081.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x082.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x083.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x084.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x085.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x086.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x087.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x088.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x089.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08a.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08b.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08c.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08d.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08e.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08f.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x090.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x091.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x092.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x093.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x094.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x095.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x096.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x097.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x098.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x099.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09a.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09b.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09c.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09d.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09e.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09f.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a0.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a1.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a2.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a3.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a4.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ac.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ad.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ae.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0af.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b0.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b1.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b2.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b3.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b4.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b5.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b6.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b7.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b8.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b9.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ba.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bb.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bc.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bd.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0be.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bf.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c0.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c1.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c2.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c3.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c4.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c5.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c6.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c7.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c8.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c9.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ca.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cb.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cc.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cd.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ce.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cf.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d0.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d1.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d2.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d3.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d4.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d5.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d6.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d7.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0f9.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fa.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fb.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fc.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fd.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fe.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ff.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d4.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d5.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d6.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d7.php
create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1f1.php
create mode 100644 vendor/webman/database/LICENSE
create mode 100644 vendor/webman/database/README.md
create mode 100644 vendor/webman/database/composer.json
create mode 100644 vendor/webman/database/src/DatabaseManager.php
create mode 100644 vendor/webman/database/src/Initializer.php
create mode 100644 vendor/webman/database/src/Install.php
create mode 100644 vendor/webman/database/src/Manager.php
create mode 100644 vendor/webman/database/src/config/database.php
create mode 100644 vendor/webman/database/src/support/Db.php
create mode 100644 vendor/webman/database/src/support/Model.php
create mode 100644 vendor/workerman/coroutine/.gitignore
create mode 100644 vendor/workerman/coroutine/LICENSE
create mode 100644 vendor/workerman/coroutine/README.md
create mode 100644 vendor/workerman/coroutine/composer.json
create mode 100644 vendor/workerman/coroutine/src/Barrier.php
create mode 100644 vendor/workerman/coroutine/src/Barrier/BarrierInterface.php
create mode 100644 vendor/workerman/coroutine/src/Barrier/Fiber.php
create mode 100644 vendor/workerman/coroutine/src/Barrier/Swoole.php
create mode 100644 vendor/workerman/coroutine/src/Barrier/Swow.php
create mode 100644 vendor/workerman/coroutine/src/Channel.php
create mode 100644 vendor/workerman/coroutine/src/Channel/ChannelInterface.php
create mode 100644 vendor/workerman/coroutine/src/Channel/Fiber.php
create mode 100644 vendor/workerman/coroutine/src/Channel/Memory.php
create mode 100644 vendor/workerman/coroutine/src/Channel/Swoole.php
create mode 100644 vendor/workerman/coroutine/src/Channel/Swow.php
create mode 100644 vendor/workerman/coroutine/src/Context.php
create mode 100644 vendor/workerman/coroutine/src/Context/ContextInterface.php
create mode 100644 vendor/workerman/coroutine/src/Context/Fiber.php
create mode 100644 vendor/workerman/coroutine/src/Context/Swoole.php
create mode 100644 vendor/workerman/coroutine/src/Context/Swow.php
create mode 100644 vendor/workerman/coroutine/src/Coroutine.php
create mode 100644 vendor/workerman/coroutine/src/Coroutine/CoroutineInterface.php
create mode 100644 vendor/workerman/coroutine/src/Coroutine/Fiber.php
create mode 100644 vendor/workerman/coroutine/src/Coroutine/Swoole.php
create mode 100644 vendor/workerman/coroutine/src/Coroutine/Swow.php
create mode 100644 vendor/workerman/coroutine/src/Locker.php
create mode 100644 vendor/workerman/coroutine/src/Parallel.php
create mode 100644 vendor/workerman/coroutine/src/Pool.php
create mode 100644 vendor/workerman/coroutine/src/PoolInterface.php
create mode 100644 vendor/workerman/coroutine/src/Utils/DestructionWatcher.php
create mode 100644 vendor/workerman/coroutine/src/WaitGroup.php
create mode 100644 vendor/workerman/coroutine/src/WaitGroup/Fiber.php
create mode 100644 vendor/workerman/coroutine/src/WaitGroup/Swoole.php
create mode 100644 vendor/workerman/coroutine/src/WaitGroup/Swow.php
create mode 100644 vendor/workerman/coroutine/src/WaitGroup/WaitGroupInterface.php
create mode 100644 vendor/workerman/coroutine/stubs/SwowStub.php
create mode 100644 vendor/workerman/coroutine/tests/BarrierTest.php
create mode 100644 vendor/workerman/coroutine/tests/ChannelTest.php
create mode 100644 vendor/workerman/coroutine/tests/ContextTest.php
create mode 100644 vendor/workerman/coroutine/tests/CoroutineTest.php
create mode 100644 vendor/workerman/coroutine/tests/FiberChannelTest.php
create mode 100644 vendor/workerman/coroutine/tests/LockerTest.php
create mode 100644 vendor/workerman/coroutine/tests/ParallelTest.php
create mode 100644 vendor/workerman/coroutine/tests/PoolTest.php
create mode 100644 vendor/workerman/coroutine/tests/WaitGroupTest.php
create mode 100644 vendor/workerman/coroutine/tests/start.php
create mode 100644 vendor/workerman/webman-framework/.gitignore
create mode 100644 vendor/workerman/webman-framework/README.md
create mode 100644 vendor/workerman/webman-framework/composer.json
create mode 100644 vendor/workerman/webman-framework/src/Annotation/DisableDefaultRoute.php
create mode 100644 vendor/workerman/webman-framework/src/Annotation/Middleware.php
create mode 100644 vendor/workerman/webman-framework/src/App.php
create mode 100644 vendor/workerman/webman-framework/src/Bootstrap.php
create mode 100644 vendor/workerman/webman-framework/src/Config.php
create mode 100644 vendor/workerman/webman-framework/src/Container.php
create mode 100644 vendor/workerman/webman-framework/src/Context.php
create mode 100644 vendor/workerman/webman-framework/src/Exception/BusinessException.php
create mode 100644 vendor/workerman/webman-framework/src/Exception/ExceptionHandler.php
create mode 100644 vendor/workerman/webman-framework/src/Exception/ExceptionHandlerInterface.php
create mode 100644 vendor/workerman/webman-framework/src/Exception/FileException.php
create mode 100644 vendor/workerman/webman-framework/src/Exception/NotFoundException.php
create mode 100644 vendor/workerman/webman-framework/src/File.php
create mode 100644 vendor/workerman/webman-framework/src/Http/Request.php
create mode 100644 vendor/workerman/webman-framework/src/Http/Response.php
create mode 100644 vendor/workerman/webman-framework/src/Http/UploadFile.php
create mode 100644 vendor/workerman/webman-framework/src/Install.php
create mode 100644 vendor/workerman/webman-framework/src/Middleware.php
create mode 100644 vendor/workerman/webman-framework/src/MiddlewareInterface.php
create mode 100644 vendor/workerman/webman-framework/src/Route.php
create mode 100644 vendor/workerman/webman-framework/src/Route/Route.php
create mode 100644 vendor/workerman/webman-framework/src/Session/FileSessionHandler.php
create mode 100644 vendor/workerman/webman-framework/src/Session/RedisClusterSessionHandler.php
create mode 100644 vendor/workerman/webman-framework/src/Session/RedisSessionHandler.php
create mode 100644 vendor/workerman/webman-framework/src/Util.php
create mode 100644 vendor/workerman/webman-framework/src/View.php
create mode 100644 vendor/workerman/webman-framework/src/start.php
create mode 100644 vendor/workerman/webman-framework/src/support/App.php
create mode 100644 vendor/workerman/webman-framework/src/support/Container.php
create mode 100644 vendor/workerman/webman-framework/src/support/Context.php
create mode 100644 vendor/workerman/webman-framework/src/support/Log.php
create mode 100644 vendor/workerman/webman-framework/src/support/Plugin.php
create mode 100644 vendor/workerman/webman-framework/src/support/Request.php
create mode 100644 vendor/workerman/webman-framework/src/support/Response.php
create mode 100644 vendor/workerman/webman-framework/src/support/Translation.php
create mode 100644 vendor/workerman/webman-framework/src/support/View.php
create mode 100644 vendor/workerman/webman-framework/src/support/annotation/DisableDefaultRoute.php
create mode 100644 vendor/workerman/webman-framework/src/support/annotation/Middleware.php
create mode 100644 vendor/workerman/webman-framework/src/support/bootstrap.php
create mode 100644 vendor/workerman/webman-framework/src/support/bootstrap/Session.php
create mode 100644 vendor/workerman/webman-framework/src/support/exception/BusinessException.php
create mode 100644 vendor/workerman/webman-framework/src/support/exception/Handler.php
create mode 100644 vendor/workerman/webman-framework/src/support/exception/InputTypeException.php
create mode 100644 vendor/workerman/webman-framework/src/support/exception/InputValueException.php
create mode 100644 vendor/workerman/webman-framework/src/support/exception/MissingInputException.php
create mode 100644 vendor/workerman/webman-framework/src/support/exception/NotFoundException.php
create mode 100644 vendor/workerman/webman-framework/src/support/exception/PageNotFoundException.php
create mode 100644 vendor/workerman/webman-framework/src/support/helpers.php
create mode 100644 vendor/workerman/webman-framework/src/support/view/Blade.php
create mode 100644 vendor/workerman/webman-framework/src/support/view/Raw.php
create mode 100644 vendor/workerman/webman-framework/src/support/view/ThinkPHP.php
create mode 100644 vendor/workerman/webman-framework/src/support/view/Twig.php
create mode 100644 vendor/workerman/webman-framework/src/windows.php
create mode 100644 vendor/workerman/workerman/MIT-LICENSE.txt
create mode 100644 vendor/workerman/workerman/README.md
create mode 100644 vendor/workerman/workerman/SECURITY.md
create mode 100644 vendor/workerman/workerman/composer.json
create mode 100644 vendor/workerman/workerman/src/Connection/AsyncTcpConnection.php
create mode 100644 vendor/workerman/workerman/src/Connection/AsyncUdpConnection.php
create mode 100644 vendor/workerman/workerman/src/Connection/ConnectionInterface.php
create mode 100644 vendor/workerman/workerman/src/Connection/TcpConnection.php
create mode 100644 vendor/workerman/workerman/src/Connection/UdpConnection.php
create mode 100644 vendor/workerman/workerman/src/Events/Ev.php
create mode 100644 vendor/workerman/workerman/src/Events/Event.php
create mode 100644 vendor/workerman/workerman/src/Events/EventInterface.php
create mode 100644 vendor/workerman/workerman/src/Events/Fiber.php
create mode 100644 vendor/workerman/workerman/src/Events/Select.php
create mode 100644 vendor/workerman/workerman/src/Events/Swoole.php
create mode 100644 vendor/workerman/workerman/src/Events/Swow.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Frame.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Http.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Http/Chunk.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Http/Request.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Http/Response.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Http/ServerSentEvents.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Http/Session.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Http/Session/FileSessionHandler.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Http/Session/RedisClusterSessionHandler.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Http/Session/RedisSessionHandler.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Http/Session/SessionHandlerInterface.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Http/mime.types
create mode 100644 vendor/workerman/workerman/src/Protocols/ProtocolInterface.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Text.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Websocket.php
create mode 100644 vendor/workerman/workerman/src/Protocols/Ws.php
create mode 100644 vendor/workerman/workerman/src/Timer.php
create mode 100644 vendor/workerman/workerman/src/Worker.php
create mode 100644 webman.zip
create mode 100644 webman/.gitignore
create mode 100644 webman/LICENSE
create mode 100644 webman/README.md
create mode 100644 webman/app/controller/CustomerController.php
create mode 100644 webman/app/controller/IndexController.php
create mode 100644 webman/app/controller/UserController.php
create mode 100644 webman/app/functions.php
create mode 100644 webman/app/middleware/StaticFile.php
create mode 100644 webman/app/model/Customer.php
create mode 100644 webman/app/model/Test.php
create mode 100644 webman/app/process/Http.php
create mode 100644 webman/app/process/Monitor.php
create mode 100644 webman/app/view/index/view.html
create mode 100644 webman/composer.json
create mode 100644 webman/composer.lock
create mode 100644 webman/config/app.php
create mode 100644 webman/config/autoload.php
create mode 100644 webman/config/bootstrap.php
create mode 100644 webman/config/container.php
create mode 100644 webman/config/database.php
create mode 100644 webman/config/dependence.php
create mode 100644 webman/config/exception.php
create mode 100644 webman/config/log.php
create mode 100644 webman/config/middleware.php
create mode 100644 webman/config/process.php
create mode 100644 webman/config/route.php
create mode 100644 webman/config/server.php
create mode 100644 webman/config/session.php
create mode 100644 webman/config/static.php
create mode 100644 webman/config/translation.php
create mode 100644 webman/config/view.php
create mode 100644 webman/public/favicon.ico
create mode 100644 webman/start.php
create mode 100644 webman/support/Request.php
create mode 100644 webman/support/Response.php
create mode 100644 webman/support/bootstrap.php
create mode 100644 webman/windows.bat
create mode 100644 webman/windows.php
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..2cbe641
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/php.xml b/.idea/php.xml
new file mode 100644
index 0000000..d29ced6
--- /dev/null
+++ b/.idea/php.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..b76164b
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+ $PROJECT_DIR$/webman/composer.json
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1741661680676
+
+
+ 1741661680676
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/www.iml b/.idea/www.iml
new file mode 100644
index 0000000..946c4f1
--- /dev/null
+++ b/.idea/www.iml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..cda8a37
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,5 @@
+{
+ "require": {
+ "webman/database": "v2.1.1"
+ }
+}
diff --git a/composer.json.txt b/composer.json.txt
new file mode 100644
index 0000000..5553665
--- /dev/null
+++ b/composer.json.txt
@@ -0,0 +1,5 @@
+{
+ "config": {
+ "disable-tls": false,
+ "secure-http": false}
+}
\ No newline at end of file
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..e78455c
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,1813 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "bada8bc7bcb18a93a92df0dd06295584",
+ "packages": [
+ {
+ "name": "brick/math",
+ "version": "0.12.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/brick/math.git",
+ "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba",
+ "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.2",
+ "phpunit/phpunit": "^10.1",
+ "vimeo/psalm": "6.8.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Brick\\Math\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Arbitrary-precision arithmetic library",
+ "keywords": [
+ "Arbitrary-precision",
+ "BigInteger",
+ "BigRational",
+ "arithmetic",
+ "bigdecimal",
+ "bignum",
+ "bignumber",
+ "brick",
+ "decimal",
+ "integer",
+ "math",
+ "mathematics",
+ "rational"
+ ],
+ "support": {
+ "issues": "https://github.com/brick/math/issues",
+ "source": "https://github.com/brick/math/tree/0.12.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/BenMorel",
+ "type": "github"
+ }
+ ],
+ "time": "2025-02-28T13:11:00+00:00"
+ },
+ {
+ "name": "carbonphp/carbon-doctrine-types",
+ "version": "3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git",
+ "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
+ "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "conflict": {
+ "doctrine/dbal": "<4.0.0 || >=5.0.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^4.0.0",
+ "nesbot/carbon": "^2.71.0 || ^3.0.0",
+ "phpunit/phpunit": "^10.3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Carbon\\Doctrine\\": "src/Carbon/Doctrine/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "KyleKatarn",
+ "email": "kylekatarnls@gmail.com"
+ }
+ ],
+ "description": "Types to use Carbon in Doctrine",
+ "keywords": [
+ "carbon",
+ "date",
+ "datetime",
+ "doctrine",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues",
+ "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-02-09T16:56:22+00:00"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "2.0.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^11.0",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.3",
+ "phpunit/phpunit": "^8.5 || ^9.5",
+ "vimeo/psalm": "^4.25 || ^5.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
+ "homepage": "https://www.doctrine-project.org/projects/inflector.html",
+ "keywords": [
+ "inflection",
+ "inflector",
+ "lowercase",
+ "manipulation",
+ "php",
+ "plural",
+ "singular",
+ "strings",
+ "uppercase",
+ "words"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/inflector/issues",
+ "source": "https://github.com/doctrine/inflector/tree/2.0.10"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-02-18T20:23:39+00:00"
+ },
+ {
+ "name": "illuminate/collections",
+ "version": "v11.44.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/collections.git",
+ "reference": "48f5357348093bc8b94c691aa3ffc861d2ecc2a0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/collections/zipball/48f5357348093bc8b94c691aa3ffc861d2ecc2a0",
+ "reference": "48f5357348093bc8b94c691aa3ffc861d2ecc2a0",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/conditionable": "^11.0",
+ "illuminate/contracts": "^11.0",
+ "illuminate/macroable": "^11.0",
+ "php": "^8.2"
+ },
+ "suggest": {
+ "symfony/var-dumper": "Required to use the dump method (^7.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "functions.php",
+ "helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Collections package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2025-02-28T16:55:51+00:00"
+ },
+ {
+ "name": "illuminate/conditionable",
+ "version": "v11.44.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/conditionable.git",
+ "reference": "911df1bda950a3b799cf80671764e34eede131c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/conditionable/zipball/911df1bda950a3b799cf80671764e34eede131c6",
+ "reference": "911df1bda950a3b799cf80671764e34eede131c6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Conditionable package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2024-11-21T16:28:56+00:00"
+ },
+ {
+ "name": "illuminate/container",
+ "version": "v11.44.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/container.git",
+ "reference": "4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/container/zipball/4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca",
+ "reference": "4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "^11.0",
+ "php": "^8.2",
+ "psr/container": "^1.1.1|^2.0.1"
+ },
+ "provide": {
+ "psr/container-implementation": "1.1|2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Container\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Container package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2025-02-10T14:20:57+00:00"
+ },
+ {
+ "name": "illuminate/contracts",
+ "version": "v11.44.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/contracts.git",
+ "reference": "b350a3cd8450846325cb49e1cbc1293598b18898"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/contracts/zipball/b350a3cd8450846325cb49e1cbc1293598b18898",
+ "reference": "b350a3cd8450846325cb49e1cbc1293598b18898",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.2",
+ "psr/container": "^1.1.1|^2.0.1",
+ "psr/simple-cache": "^1.0|^2.0|^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Contracts\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Contracts package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2025-02-10T14:20:57+00:00"
+ },
+ {
+ "name": "illuminate/database",
+ "version": "v11.44.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/database.git",
+ "reference": "131dcdfcc6c838115d5e58c77d4fe816f735dff8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/database/zipball/131dcdfcc6c838115d5e58c77d4fe816f735dff8",
+ "reference": "131dcdfcc6c838115d5e58c77d4fe816f735dff8",
+ "shasum": ""
+ },
+ "require": {
+ "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12",
+ "ext-pdo": "*",
+ "illuminate/collections": "^11.0",
+ "illuminate/container": "^11.0",
+ "illuminate/contracts": "^11.0",
+ "illuminate/macroable": "^11.0",
+ "illuminate/support": "^11.0",
+ "laravel/serializable-closure": "^1.3|^2.0",
+ "php": "^8.2"
+ },
+ "suggest": {
+ "ext-filter": "Required to use the Postgres database driver.",
+ "fakerphp/faker": "Required to use the eloquent factory builder (^1.24).",
+ "illuminate/console": "Required to use the database commands (^11.0).",
+ "illuminate/events": "Required to use the observers with Eloquent (^11.0).",
+ "illuminate/filesystem": "Required to use the migrations (^11.0).",
+ "illuminate/pagination": "Required to paginate the result set (^11.0).",
+ "symfony/finder": "Required to use Eloquent model factories (^7.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Database\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Database package.",
+ "homepage": "https://laravel.com",
+ "keywords": [
+ "database",
+ "laravel",
+ "orm",
+ "sql"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2025-02-21T13:01:45+00:00"
+ },
+ {
+ "name": "illuminate/macroable",
+ "version": "v11.44.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/macroable.git",
+ "reference": "e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/macroable/zipball/e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed",
+ "reference": "e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Macroable package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2024-06-28T20:10:30+00:00"
+ },
+ {
+ "name": "illuminate/support",
+ "version": "v11.44.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/support.git",
+ "reference": "d86d42ad0c75a020e0e4a7c734e9424ca86811cc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/support/zipball/d86d42ad0c75a020e0e4a7c734e9424ca86811cc",
+ "reference": "d86d42ad0c75a020e0e4a7c734e9424ca86811cc",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/inflector": "^2.0",
+ "ext-ctype": "*",
+ "ext-filter": "*",
+ "ext-mbstring": "*",
+ "illuminate/collections": "^11.0",
+ "illuminate/conditionable": "^11.0",
+ "illuminate/contracts": "^11.0",
+ "illuminate/macroable": "^11.0",
+ "nesbot/carbon": "^2.72.6|^3.8.4",
+ "php": "^8.2",
+ "voku/portable-ascii": "^2.0.2"
+ },
+ "conflict": {
+ "tightenco/collect": "<5.5.33"
+ },
+ "replace": {
+ "spatie/once": "*"
+ },
+ "suggest": {
+ "illuminate/filesystem": "Required to use the Composer class (^11.0).",
+ "laravel/serializable-closure": "Required to use the once function (^1.3|^2.0).",
+ "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.6).",
+ "league/uri": "Required to use the Uri class (^7.5.1).",
+ "ramsey/uuid": "Required to use Str::uuid() (^4.7).",
+ "symfony/process": "Required to use the Composer class (^7.0).",
+ "symfony/uid": "Required to use Str::ulid() (^7.0).",
+ "symfony/var-dumper": "Required to use the dd function (^7.0).",
+ "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.6.1)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "functions.php",
+ "helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Support package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2025-02-23T14:20:22+00:00"
+ },
+ {
+ "name": "laravel/serializable-closure",
+ "version": "v2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/serializable-closure.git",
+ "reference": "f379c13663245f7aa4512a7869f62eb14095f23f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f379c13663245f7aa4512a7869f62eb14095f23f",
+ "reference": "f379c13663245f7aa4512a7869f62eb14095f23f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "illuminate/support": "^10.0|^11.0|^12.0",
+ "nesbot/carbon": "^2.67|^3.0",
+ "pestphp/pest": "^2.36|^3.0",
+ "phpstan/phpstan": "^2.0",
+ "symfony/var-dumper": "^6.2.0|^7.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laravel\\SerializableClosure\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ },
+ {
+ "name": "Nuno Maduro",
+ "email": "nuno@laravel.com"
+ }
+ ],
+ "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.",
+ "keywords": [
+ "closure",
+ "laravel",
+ "serializable"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/serializable-closure/issues",
+ "source": "https://github.com/laravel/serializable-closure"
+ },
+ "time": "2025-02-11T15:03:05+00:00"
+ },
+ {
+ "name": "nesbot/carbon",
+ "version": "3.8.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/CarbonPHP/carbon.git",
+ "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/ff2f20cf83bd4d503720632ce8a426dc747bf7fd",
+ "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd",
+ "shasum": ""
+ },
+ "require": {
+ "carbonphp/carbon-doctrine-types": "<100.0",
+ "ext-json": "*",
+ "php": "^8.1",
+ "psr/clock": "^1.0",
+ "symfony/clock": "^6.3 || ^7.0",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0"
+ },
+ "provide": {
+ "psr/clock-implementation": "1.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^3.6.3 || ^4.0",
+ "doctrine/orm": "^2.15.2 || ^3.0",
+ "friendsofphp/php-cs-fixer": "^3.57.2",
+ "kylekatarnls/multi-tester": "^2.5.3",
+ "ondrejmirtes/better-reflection": "^6.25.0.4",
+ "phpmd/phpmd": "^2.15.0",
+ "phpstan/extension-installer": "^1.3.1",
+ "phpstan/phpstan": "^1.11.2",
+ "phpunit/phpunit": "^10.5.20",
+ "squizlabs/php_codesniffer": "^3.9.0"
+ },
+ "bin": [
+ "bin/carbon"
+ ],
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Carbon\\Laravel\\ServiceProvider"
+ ]
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ },
+ "branch-alias": {
+ "dev-2.x": "2.x-dev",
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Carbon\\": "src/Carbon/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "https://markido.com"
+ },
+ {
+ "name": "kylekatarnls",
+ "homepage": "https://github.com/kylekatarnls"
+ }
+ ],
+ "description": "An API extension for DateTime that supports 281 different languages.",
+ "homepage": "https://carbon.nesbot.com",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "support": {
+ "docs": "https://carbon.nesbot.com/docs",
+ "issues": "https://github.com/CarbonPHP/carbon/issues",
+ "source": "https://github.com/CarbonPHP/carbon"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon#sponsor",
+ "type": "opencollective"
+ },
+ {
+ "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-02-20T17:33:38+00:00"
+ },
+ {
+ "name": "nikic/fast-route",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/FastRoute.git",
+ "reference": "181d480e08d9476e61381e04a71b34dc0432e812"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812",
+ "reference": "181d480e08d9476e61381e04a71b34dc0432e812",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35|~5.7"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "FastRoute\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov",
+ "email": "nikic@php.net"
+ }
+ ],
+ "description": "Fast request router for PHP",
+ "keywords": [
+ "router",
+ "routing"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/FastRoute/issues",
+ "source": "https://github.com/nikic/FastRoute/tree/master"
+ },
+ "time": "2018-02-13T20:26:39+00:00"
+ },
+ {
+ "name": "psr/clock",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/clock.git",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Clock\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for reading the clock.",
+ "homepage": "https://github.com/php-fig/clock",
+ "keywords": [
+ "clock",
+ "now",
+ "psr",
+ "psr-20",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/clock/issues",
+ "source": "https://github.com/php-fig/clock/tree/1.0.0"
+ },
+ "time": "2022-11-25T14:36:26+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "time": "2021-11-05T16:47:00+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.2"
+ },
+ "time": "2024-09-11T13:17:53+00:00"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
+ },
+ "time": "2021-10-29T13:26:27+00:00"
+ },
+ {
+ "name": "symfony/clock",
+ "version": "v7.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/clock.git",
+ "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24",
+ "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "psr/clock": "^1.0",
+ "symfony/polyfill-php83": "^1.28"
+ },
+ "provide": {
+ "psr/clock-implementation": "1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/now.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Clock\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Decouples applications from the system clock",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "clock",
+ "psr20",
+ "time"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/clock/tree/v7.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-25T14:21:43+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
+ "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.5-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-25T14:20:29+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.31.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-09T11:45:10+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php83",
+ "version": "v1.31.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php83.git",
+ "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491",
+ "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php83\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-09T11:45:10+00:00"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v7.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "283856e6981286cc0d800b53bd5703e8e363f05a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/283856e6981286cc0d800b53bd5703e8e363f05a",
+ "reference": "283856e6981286cc0d800b53bd5703e8e363f05a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/translation-contracts": "^2.5|^3.0"
+ },
+ "conflict": {
+ "symfony/config": "<6.4",
+ "symfony/console": "<6.4",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/http-client-contracts": "<2.5",
+ "symfony/http-kernel": "<6.4",
+ "symfony/service-contracts": "<2.5",
+ "symfony/twig-bundle": "<6.4",
+ "symfony/yaml": "<6.4"
+ },
+ "provide": {
+ "symfony/translation-implementation": "2.3|3.0"
+ },
+ "require-dev": {
+ "nikic/php-parser": "^4.18|^5.0",
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
+ "symfony/http-client-contracts": "^2.5|^3.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
+ "symfony/polyfill-intl-icu": "^1.21",
+ "symfony/routing": "^6.4|^7.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/yaml": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools to internationalize your application",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/translation/tree/v7.2.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-02-13T10:27:23+00:00"
+ },
+ {
+ "name": "symfony/translation-contracts",
+ "version": "v3.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "4667ff3bd513750603a09c8dedbea942487fb07c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c",
+ "reference": "4667ff3bd513750603a09c8dedbea942487fb07c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to translation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-25T14:20:29+00:00"
+ },
+ {
+ "name": "voku/portable-ascii",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/voku/portable-ascii.git",
+ "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
+ "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
+ },
+ "suggest": {
+ "ext-intl": "Use Intl for transliterator_transliterate() support"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "voku\\": "src/voku/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Lars Moelleken",
+ "homepage": "https://www.moelleken.org/"
+ }
+ ],
+ "description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
+ "homepage": "https://github.com/voku/portable-ascii",
+ "keywords": [
+ "ascii",
+ "clean",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/voku/portable-ascii/issues",
+ "source": "https://github.com/voku/portable-ascii/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.me/moelleken",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/voku",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/portable-ascii",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://www.patreon.com/voku",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-11-21T01:49:47+00:00"
+ },
+ {
+ "name": "webman/database",
+ "version": "v2.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webman-php/database.git",
+ "reference": "360e42db6d1a6625ea55241a882a4244b84e72a0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webman-php/database/zipball/360e42db6d1a6625ea55241a882a4244b84e72a0",
+ "reference": "360e42db6d1a6625ea55241a882a4244b84e72a0",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/database": "^10.0 || ^11.0",
+ "laravel/serializable-closure": "^1.0 || ^2.0",
+ "workerman/webman-framework": "^2.1 || dev-master"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "support\\": "src/support",
+ "Webman\\Database\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Webman database",
+ "support": {
+ "issues": "https://github.com/webman-php/database/issues",
+ "source": "https://github.com/webman-php/database/tree/v2.1.1"
+ },
+ "time": "2025-02-06T09:00:41+00:00"
+ },
+ {
+ "name": "workerman/coroutine",
+ "version": "v1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/workerman-php/coroutine.git",
+ "reference": "df8fc428967d512a74a8a7d80355c1d40228c9fa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/workerman-php/coroutine/zipball/df8fc428967d512a74a8a7d80355c1d40228c9fa",
+ "reference": "df8fc428967d512a74a8a7d80355c1d40228c9fa",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^11.0",
+ "psr/log": "*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Workerman\\": "src",
+ "Workerman\\Coroutine\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Workerman coroutine",
+ "support": {
+ "issues": "https://github.com/workerman-php/coroutine/issues",
+ "source": "https://github.com/workerman-php/coroutine/tree/v1.1.3"
+ },
+ "time": "2025-02-17T03:34:21+00:00"
+ },
+ {
+ "name": "workerman/webman-framework",
+ "version": "v2.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/walkor/webman-framework.git",
+ "reference": "f803bd867f07bb0929faef060b59a19a44186bfc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/walkor/webman-framework/zipball/f803bd867f07bb0929faef060b59a19a44186bfc",
+ "reference": "f803bd867f07bb0929faef060b59a19a44186bfc",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "nikic/fast-route": "^1.3",
+ "php": ">=8.1",
+ "psr/container": ">=1.0",
+ "psr/log": "^3.0",
+ "workerman/workerman": "^5.1 || dev-master"
+ },
+ "suggest": {
+ "ext-event": "For better performance. "
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "./src/support/helpers.php"
+ ],
+ "psr-4": {
+ "Webman\\": "./src",
+ "Support\\": "./src/support",
+ "support\\": "./src/support",
+ "Support\\View\\": "./src/support/view",
+ "Support\\Bootstrap\\": "./src/support/bootstrap",
+ "Support\\Exception\\": "./src/support/exception"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "walkor",
+ "email": "walkor@workerman.net",
+ "homepage": "https://www.workerman.net",
+ "role": "Developer"
+ }
+ ],
+ "description": "High performance HTTP Service Framework.",
+ "homepage": "https://www.workerman.net",
+ "keywords": [
+ "High Performance",
+ "http service"
+ ],
+ "support": {
+ "email": "walkor@workerman.net",
+ "forum": "https://wenda.workerman.net/",
+ "issues": "https://github.com/walkor/webman/issues",
+ "source": "https://github.com/walkor/webman-framework",
+ "wiki": "https://doc.workerman.net/"
+ },
+ "time": "2025-03-10T11:52:22+00:00"
+ },
+ {
+ "name": "workerman/workerman",
+ "version": "v5.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/walkor/workerman.git",
+ "reference": "5ce17bc71dfdad0e9eba8cd658342da793d2f581"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/walkor/workerman/zipball/5ce17bc71dfdad0e9eba8cd658342da793d2f581",
+ "reference": "5ce17bc71dfdad0e9eba8cd658342da793d2f581",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": ">=8.1",
+ "workerman/coroutine": "^1.1 || dev-main"
+ },
+ "conflict": {
+ "ext-swow": "realpath = realpath($opened_path) ?: $opened_path;
+ $opened_path = $this->realpath;
+ $this->handle = fopen($this->realpath, $mode);
+ $this->position = 0;
+
+ return (bool) $this->handle;
+ }
+
+ public function stream_read($count)
+ {
+ $data = fread($this->handle, $count);
+
+ if ($this->position === 0) {
+ $data = preg_replace('{^#!.*\r?\n}', '', $data);
+ }
+
+ $this->position += strlen($data);
+
+ return $data;
+ }
+
+ public function stream_cast($castAs)
+ {
+ return $this->handle;
+ }
+
+ public function stream_close()
+ {
+ fclose($this->handle);
+ }
+
+ public function stream_lock($operation)
+ {
+ return $operation ? flock($this->handle, $operation) : true;
+ }
+
+ public function stream_seek($offset, $whence)
+ {
+ if (0 === fseek($this->handle, $offset, $whence)) {
+ $this->position = ftell($this->handle);
+ return true;
+ }
+
+ return false;
+ }
+
+ public function stream_tell()
+ {
+ return $this->position;
+ }
+
+ public function stream_eof()
+ {
+ return feof($this->handle);
+ }
+
+ public function stream_stat()
+ {
+ return array();
+ }
+
+ public function stream_set_option($option, $arg1, $arg2)
+ {
+ return true;
+ }
+
+ public function url_stat($path, $flags)
+ {
+ $path = substr($path, 17);
+ if (file_exists($path)) {
+ return stat($path);
+ }
+
+ return false;
+ }
+ }
+ }
+
+ if (
+ (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
+ || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
+ ) {
+ return include("phpvfscomposer://" . __DIR__ . '/..'.'/nesbot/carbon/bin/carbon');
+ }
+}
+
+return include __DIR__ . '/..'.'/nesbot/carbon/bin/carbon';
diff --git a/vendor/bin/carbon.bat b/vendor/bin/carbon.bat
new file mode 100644
index 0000000..806cf15
--- /dev/null
+++ b/vendor/bin/carbon.bat
@@ -0,0 +1,5 @@
+@ECHO OFF
+setlocal DISABLEDELAYEDEXPANSION
+SET BIN_TARGET=%~dp0/carbon
+SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
+php "%BIN_TARGET%" %*
diff --git a/vendor/brick/math/CHANGELOG.md b/vendor/brick/math/CHANGELOG.md
new file mode 100644
index 0000000..4b47b48
--- /dev/null
+++ b/vendor/brick/math/CHANGELOG.md
@@ -0,0 +1,479 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+## [0.12.3](https://github.com/brick/math/releases/tag/0.12.3) - 2025-02-28
+
+✨ **New features**
+
+- `BigDecimal::getPrecision()` Returns the number of significant digits in a decimal number
+
+## [0.12.2](https://github.com/brick/math/releases/tag/0.12.2) - 2025-02-26
+
+⚡️ **Performance improvements**
+
+- Division in `NativeCalculator` is now faster for small divisors, thanks to [@Izumi-kun](https://github.com/Izumi-kun) in [#87](https://github.com/brick/math/pull/87).
+
+👌 **Improvements**
+
+- Add missing `RoundingNecessaryException` to the `@throws` annotation of `BigNumber::of()`
+
+## [0.12.1](https://github.com/brick/math/releases/tag/0.12.1) - 2023-11-29
+
+⚡️ **Performance improvements**
+
+- `BigNumber::of()` is now faster, thanks to [@SebastienDug](https://github.com/SebastienDug) in [#77](https://github.com/brick/math/pull/77).
+
+## [0.12.0](https://github.com/brick/math/releases/tag/0.12.0) - 2023-11-26
+
+💥 **Breaking changes**
+
+- Minimum PHP version is now 8.1
+- `RoundingMode` is now an `enum`; if you're type-hinting rounding modes, you need to type-hint against `RoundingMode` instead of `int` now
+- `BigNumber` classes do not implement the `Serializable` interface anymore (they use the [new custom object serialization mechanism](https://wiki.php.net/rfc/custom_object_serialization))
+- The following breaking changes only affect you if you're creating your own `BigNumber` subclasses:
+ - the return type of `BigNumber::of()` is now `static`
+ - `BigNumber` has a new abstract method `from()`
+ - all `public` and `protected` functions of `BigNumber` are now `final`
+
+## [0.11.0](https://github.com/brick/math/releases/tag/0.11.0) - 2023-01-16
+
+💥 **Breaking changes**
+
+- Minimum PHP version is now 8.0
+- Methods accepting a union of types are now strongly typed*
+- `MathException` now extends `Exception` instead of `RuntimeException`
+
+* You may now run into type errors if you were passing `Stringable` objects to `of()` or any of the methods
+internally calling `of()`, with `strict_types` enabled. You can fix this by casting `Stringable` objects to `string`
+first.
+
+## [0.10.2](https://github.com/brick/math/releases/tag/0.10.2) - 2022-08-11
+
+👌 **Improvements**
+
+- `BigRational::toFloat()` now simplifies the fraction before performing division (#73) thanks to @olsavmic
+
+## [0.10.1](https://github.com/brick/math/releases/tag/0.10.1) - 2022-08-02
+
+✨ **New features**
+
+- `BigInteger::gcdMultiple()` returns the GCD of multiple `BigInteger` numbers
+
+## [0.10.0](https://github.com/brick/math/releases/tag/0.10.0) - 2022-06-18
+
+💥 **Breaking changes**
+
+- Minimum PHP version is now 7.4
+
+## [0.9.3](https://github.com/brick/math/releases/tag/0.9.3) - 2021-08-15
+
+🚀 **Compatibility with PHP 8.1**
+
+- Support for custom object serialization; this removes a warning on PHP 8.1 due to the `Serializable` interface being deprecated (#60) thanks @TRowbotham
+
+## [0.9.2](https://github.com/brick/math/releases/tag/0.9.2) - 2021-01-20
+
+🐛 **Bug fix**
+
+- Incorrect results could be returned when using the BCMath calculator, with a default scale set with `bcscale()`, on PHP >= 7.2 (#55).
+
+## [0.9.1](https://github.com/brick/math/releases/tag/0.9.1) - 2020-08-19
+
+✨ **New features**
+
+- `BigInteger::not()` returns the bitwise `NOT` value
+
+🐛 **Bug fixes**
+
+- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers
+- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available
+
+## [0.9.0](https://github.com/brick/math/releases/tag/0.9.0) - 2020-08-18
+
+👌 **Improvements**
+
+- `BigNumber::of()` now accepts `.123` and `123.` formats, both of which return a `BigDecimal`
+
+💥 **Breaking changes**
+
+- Deprecated method `BigInteger::powerMod()` has been removed - use `modPow()` instead
+- Deprecated method `BigInteger::parse()` has been removed - use `fromBase()` instead
+
+## [0.8.17](https://github.com/brick/math/releases/tag/0.8.17) - 2020-08-19
+
+🐛 **Bug fix**
+
+- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers
+- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available
+
+## [0.8.16](https://github.com/brick/math/releases/tag/0.8.16) - 2020-08-18
+
+🚑 **Critical fix**
+
+- This version reintroduces the deprecated `BigInteger::parse()` method, that has been removed by mistake in version `0.8.9` and should have lasted for the whole `0.8` release cycle.
+
+✨ **New features**
+
+- `BigInteger::modInverse()` calculates a modular multiplicative inverse
+- `BigInteger::fromBytes()` creates a `BigInteger` from a byte string
+- `BigInteger::toBytes()` converts a `BigInteger` to a byte string
+- `BigInteger::randomBits()` creates a pseudo-random `BigInteger` of a given bit length
+- `BigInteger::randomRange()` creates a pseudo-random `BigInteger` between two bounds
+
+💩 **Deprecations**
+
+- `BigInteger::powerMod()` is now deprecated in favour of `modPow()`
+
+## [0.8.15](https://github.com/brick/math/releases/tag/0.8.15) - 2020-04-15
+
+🐛 **Fixes**
+
+- added missing `ext-json` requirement, due to `BigNumber` implementing `JsonSerializable`
+
+⚡️ **Optimizations**
+
+- additional optimization in `BigInteger::remainder()`
+
+## [0.8.14](https://github.com/brick/math/releases/tag/0.8.14) - 2020-02-18
+
+✨ **New features**
+
+- `BigInteger::getLowestSetBit()` returns the index of the rightmost one bit
+
+## [0.8.13](https://github.com/brick/math/releases/tag/0.8.13) - 2020-02-16
+
+✨ **New features**
+
+- `BigInteger::isEven()` tests whether the number is even
+- `BigInteger::isOdd()` tests whether the number is odd
+- `BigInteger::testBit()` tests if a bit is set
+- `BigInteger::getBitLength()` returns the number of bits in the minimal representation of the number
+
+## [0.8.12](https://github.com/brick/math/releases/tag/0.8.12) - 2020-02-03
+
+🛠️ **Maintenance release**
+
+Classes are now annotated for better static analysis with [psalm](https://psalm.dev/).
+
+This is a maintenance release: no bug fixes, no new features, no breaking changes.
+
+## [0.8.11](https://github.com/brick/math/releases/tag/0.8.11) - 2020-01-23
+
+✨ **New feature**
+
+`BigInteger::powerMod()` performs a power-with-modulo operation. Useful for crypto.
+
+## [0.8.10](https://github.com/brick/math/releases/tag/0.8.10) - 2020-01-21
+
+✨ **New feature**
+
+`BigInteger::mod()` returns the **modulo** of two numbers. The *modulo* differs from the *remainder* when the signs of the operands are different.
+
+## [0.8.9](https://github.com/brick/math/releases/tag/0.8.9) - 2020-01-08
+
+⚡️ **Performance improvements**
+
+A few additional optimizations in `BigInteger` and `BigDecimal` when one of the operands can be returned as is. Thanks to @tomtomsen in #24.
+
+## [0.8.8](https://github.com/brick/math/releases/tag/0.8.8) - 2019-04-25
+
+🐛 **Bug fixes**
+
+- `BigInteger::toBase()` could return an empty string for zero values (BCMath & Native calculators only, GMP calculator unaffected)
+
+✨ **New features**
+
+- `BigInteger::toArbitraryBase()` converts a number to an arbitrary base, using a custom alphabet
+- `BigInteger::fromArbitraryBase()` converts a string in an arbitrary base, using a custom alphabet, back to a number
+
+These methods can be used as the foundation to convert strings between different bases/alphabets, using BigInteger as an intermediate representation.
+
+💩 **Deprecations**
+
+- `BigInteger::parse()` is now deprecated in favour of `fromBase()`
+
+`BigInteger::fromBase()` works the same way as `parse()`, with 2 minor differences:
+
+- the `$base` parameter is required, it does not default to `10`
+- it throws a `NumberFormatException` instead of an `InvalidArgumentException` when the number is malformed
+
+## [0.8.7](https://github.com/brick/math/releases/tag/0.8.7) - 2019-04-20
+
+**Improvements**
+
+- Safer conversion from `float` when using custom locales
+- **Much faster** `NativeCalculator` implementation 🚀
+
+You can expect **at least a 3x performance improvement** for common arithmetic operations when using the library on systems without GMP or BCMath; it gets exponentially faster on multiplications with a high number of digits. This is due to calculations now being performed on whole blocks of digits (the block size depending on the platform, 32-bit or 64-bit) instead of digit-by-digit as before.
+
+## [0.8.6](https://github.com/brick/math/releases/tag/0.8.6) - 2019-04-11
+
+**New method**
+
+`BigNumber::sum()` returns the sum of one or more numbers.
+
+## [0.8.5](https://github.com/brick/math/releases/tag/0.8.5) - 2019-02-12
+
+**Bug fix**: `of()` factory methods could fail when passing a `float` in environments using a `LC_NUMERIC` locale with a decimal separator other than `'.'` (#20).
+
+Thanks @manowark 👍
+
+## [0.8.4](https://github.com/brick/math/releases/tag/0.8.4) - 2018-12-07
+
+**New method**
+
+`BigDecimal::sqrt()` calculates the square root of a decimal number, to a given scale.
+
+## [0.8.3](https://github.com/brick/math/releases/tag/0.8.3) - 2018-12-06
+
+**New method**
+
+`BigInteger::sqrt()` calculates the square root of a number (thanks @peter279k).
+
+**New exception**
+
+`NegativeNumberException` is thrown when calling `sqrt()` on a negative number.
+
+## [0.8.2](https://github.com/brick/math/releases/tag/0.8.2) - 2018-11-08
+
+**Performance update**
+
+- Further improvement of `toInt()` performance
+- `NativeCalculator` can now perform some multiplications more efficiently
+
+## [0.8.1](https://github.com/brick/math/releases/tag/0.8.1) - 2018-11-07
+
+Performance optimization of `toInt()` methods.
+
+## [0.8.0](https://github.com/brick/math/releases/tag/0.8.0) - 2018-10-13
+
+**Breaking changes**
+
+The following deprecated methods have been removed. Use the new method name instead:
+
+| Method removed | Replacement method |
+| --- | --- |
+| `BigDecimal::getIntegral()` | `BigDecimal::getIntegralPart()` |
+| `BigDecimal::getFraction()` | `BigDecimal::getFractionalPart()` |
+
+---
+
+**New features**
+
+`BigInteger` has been augmented with 5 new methods for bitwise operations:
+
+| New method | Description |
+| --- | --- |
+| `and()` | performs a bitwise `AND` operation on two numbers |
+| `or()` | performs a bitwise `OR` operation on two numbers |
+| `xor()` | performs a bitwise `XOR` operation on two numbers |
+| `shiftedLeft()` | returns the number shifted left by a number of bits |
+| `shiftedRight()` | returns the number shifted right by a number of bits |
+
+Thanks to @DASPRiD 👍
+
+## [0.7.3](https://github.com/brick/math/releases/tag/0.7.3) - 2018-08-20
+
+**New method:** `BigDecimal::hasNonZeroFractionalPart()`
+
+**Renamed/deprecated methods:**
+
+- `BigDecimal::getIntegral()` has been renamed to `getIntegralPart()` and is now deprecated
+- `BigDecimal::getFraction()` has been renamed to `getFractionalPart()` and is now deprecated
+
+## [0.7.2](https://github.com/brick/math/releases/tag/0.7.2) - 2018-07-21
+
+**Performance update**
+
+`BigInteger::parse()` and `toBase()` now use GMP's built-in base conversion features when available.
+
+## [0.7.1](https://github.com/brick/math/releases/tag/0.7.1) - 2018-03-01
+
+This is a maintenance release, no code has been changed.
+
+- When installed with `--no-dev`, the autoloader does not autoload tests anymore
+- Tests and other files unnecessary for production are excluded from the dist package
+
+This will help make installations more compact.
+
+## [0.7.0](https://github.com/brick/math/releases/tag/0.7.0) - 2017-10-02
+
+Methods renamed:
+
+- `BigNumber:sign()` has been renamed to `getSign()`
+- `BigDecimal::unscaledValue()` has been renamed to `getUnscaledValue()`
+- `BigDecimal::scale()` has been renamed to `getScale()`
+- `BigDecimal::integral()` has been renamed to `getIntegral()`
+- `BigDecimal::fraction()` has been renamed to `getFraction()`
+- `BigRational::numerator()` has been renamed to `getNumerator()`
+- `BigRational::denominator()` has been renamed to `getDenominator()`
+
+Classes renamed:
+
+- `ArithmeticException` has been renamed to `MathException`
+
+## [0.6.2](https://github.com/brick/math/releases/tag/0.6.2) - 2017-10-02
+
+The base class for all exceptions is now `MathException`.
+`ArithmeticException` has been deprecated, and will be removed in 0.7.0.
+
+## [0.6.1](https://github.com/brick/math/releases/tag/0.6.1) - 2017-10-02
+
+A number of methods have been renamed:
+
+- `BigNumber:sign()` is deprecated; use `getSign()` instead
+- `BigDecimal::unscaledValue()` is deprecated; use `getUnscaledValue()` instead
+- `BigDecimal::scale()` is deprecated; use `getScale()` instead
+- `BigDecimal::integral()` is deprecated; use `getIntegral()` instead
+- `BigDecimal::fraction()` is deprecated; use `getFraction()` instead
+- `BigRational::numerator()` is deprecated; use `getNumerator()` instead
+- `BigRational::denominator()` is deprecated; use `getDenominator()` instead
+
+The old methods will be removed in version 0.7.0.
+
+## [0.6.0](https://github.com/brick/math/releases/tag/0.6.0) - 2017-08-25
+
+- Minimum PHP version is now [7.1](https://gophp71.org/); for PHP 5.6 and PHP 7.0 support, use version `0.5`
+- Deprecated method `BigDecimal::withScale()` has been removed; use `toScale()` instead
+- Method `BigNumber::toInteger()` has been renamed to `toInt()`
+
+## [0.5.4](https://github.com/brick/math/releases/tag/0.5.4) - 2016-10-17
+
+`BigNumber` classes now implement [JsonSerializable](http://php.net/manual/en/class.jsonserializable.php).
+The JSON output is always a string.
+
+## [0.5.3](https://github.com/brick/math/releases/tag/0.5.3) - 2016-03-31
+
+This is a bugfix release. Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6.
+
+## [0.5.2](https://github.com/brick/math/releases/tag/0.5.2) - 2015-08-06
+
+The `$scale` parameter of `BigDecimal::dividedBy()` is now optional again.
+
+## [0.5.1](https://github.com/brick/math/releases/tag/0.5.1) - 2015-07-05
+
+**New method: `BigNumber::toScale()`**
+
+This allows to convert any `BigNumber` to a `BigDecimal` with a given scale, using rounding if necessary.
+
+## [0.5.0](https://github.com/brick/math/releases/tag/0.5.0) - 2015-07-04
+
+**New features**
+- Common `BigNumber` interface for all classes, with the following methods:
+ - `sign()` and derived methods (`isZero()`, `isPositive()`, ...)
+ - `compareTo()` and derived methods (`isEqualTo()`, `isGreaterThan()`, ...) that work across different `BigNumber` types
+ - `toBigInteger()`, `toBigDecimal()`, `toBigRational`() conversion methods
+ - `toInteger()` and `toFloat()` conversion methods to native types
+- Unified `of()` behaviour: every class now accepts any type of number, provided that it can be safely converted to the current type
+- New method: `BigDecimal::exactlyDividedBy()`; this method automatically computes the scale of the result, provided that the division yields a finite number of digits
+- New methods: `BigRational::quotient()` and `remainder()`
+- Fine-grained exceptions: `DivisionByZeroException`, `RoundingNecessaryException`, `NumberFormatException`
+- Factory methods `zero()`, `one()` and `ten()` available in all classes
+- Rounding mode reintroduced in `BigInteger::dividedBy()`
+
+This release also comes with many performance improvements.
+
+---
+
+**Breaking changes**
+- `BigInteger`:
+ - `getSign()` is renamed to `sign()`
+ - `toString()` is renamed to `toBase()`
+ - `BigInteger::dividedBy()` now throws an exception by default if the remainder is not zero; use `quotient()` to get the previous behaviour
+- `BigDecimal`:
+ - `getSign()` is renamed to `sign()`
+ - `getUnscaledValue()` is renamed to `unscaledValue()`
+ - `getScale()` is renamed to `scale()`
+ - `getIntegral()` is renamed to `integral()`
+ - `getFraction()` is renamed to `fraction()`
+ - `divideAndRemainder()` is renamed to `quotientAndRemainder()`
+ - `dividedBy()` now takes a **mandatory** `$scale` parameter **before** the rounding mode
+ - `toBigInteger()` does not accept a `$roundingMode` parameter anymore
+ - `toBigRational()` does not simplify the fraction anymore; explicitly add `->simplified()` to get the previous behaviour
+- `BigRational`:
+ - `getSign()` is renamed to `sign()`
+ - `getNumerator()` is renamed to `numerator()`
+ - `getDenominator()` is renamed to `denominator()`
+ - `of()` is renamed to `nd()`, while `parse()` is renamed to `of()`
+- Miscellaneous:
+ - `ArithmeticException` is moved to an `Exception\` sub-namespace
+ - `of()` factory methods now throw `NumberFormatException` instead of `InvalidArgumentException`
+
+## [0.4.3](https://github.com/brick/math/releases/tag/0.4.3) - 2016-03-31
+
+Backport of two bug fixes from the 0.5 branch:
+- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected
+- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6.
+
+## [0.4.2](https://github.com/brick/math/releases/tag/0.4.2) - 2015-06-16
+
+New method: `BigDecimal::stripTrailingZeros()`
+
+## [0.4.1](https://github.com/brick/math/releases/tag/0.4.1) - 2015-06-12
+
+Introducing a `BigRational` class, to perform calculations on fractions of any size.
+
+## [0.4.0](https://github.com/brick/math/releases/tag/0.4.0) - 2015-06-12
+
+Rounding modes have been removed from `BigInteger`, and are now a concept specific to `BigDecimal`.
+
+`BigInteger::dividedBy()` now always returns the quotient of the division.
+
+## [0.3.5](https://github.com/brick/math/releases/tag/0.3.5) - 2016-03-31
+
+Backport of two bug fixes from the 0.5 branch:
+
+- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected
+- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6.
+
+## [0.3.4](https://github.com/brick/math/releases/tag/0.3.4) - 2015-06-11
+
+New methods:
+- `BigInteger::remainder()` returns the remainder of a division only
+- `BigInteger::gcd()` returns the greatest common divisor of two numbers
+
+## [0.3.3](https://github.com/brick/math/releases/tag/0.3.3) - 2015-06-07
+
+Fix `toString()` not handling negative numbers.
+
+## [0.3.2](https://github.com/brick/math/releases/tag/0.3.2) - 2015-06-07
+
+`BigInteger` and `BigDecimal` now have a `getSign()` method that returns:
+- `-1` if the number is negative
+- `0` if the number is zero
+- `1` if the number is positive
+
+## [0.3.1](https://github.com/brick/math/releases/tag/0.3.1) - 2015-06-05
+
+Minor performance improvements
+
+## [0.3.0](https://github.com/brick/math/releases/tag/0.3.0) - 2015-06-04
+
+The `$roundingMode` and `$scale` parameters have been swapped in `BigDecimal::dividedBy()`.
+
+## [0.2.2](https://github.com/brick/math/releases/tag/0.2.2) - 2015-06-04
+
+Stronger immutability guarantee for `BigInteger` and `BigDecimal`.
+
+So far, it would have been possible to break immutability of these classes by calling the `unserialize()` internal function. This release fixes that.
+
+## [0.2.1](https://github.com/brick/math/releases/tag/0.2.1) - 2015-06-02
+
+Added `BigDecimal::divideAndRemainder()`
+
+## [0.2.0](https://github.com/brick/math/releases/tag/0.2.0) - 2015-05-22
+
+- `min()` and `max()` do not accept an `array` anymore, but a variable number of parameters
+- **minimum PHP version is now 5.6**
+- continuous integration with PHP 7
+
+## [0.1.1](https://github.com/brick/math/releases/tag/0.1.1) - 2014-09-01
+
+- Added `BigInteger::power()`
+- Added HHVM support
+
+## [0.1.0](https://github.com/brick/math/releases/tag/0.1.0) - 2014-08-31
+
+First beta release.
+
diff --git a/vendor/brick/math/LICENSE b/vendor/brick/math/LICENSE
new file mode 100644
index 0000000..f9b724f
--- /dev/null
+++ b/vendor/brick/math/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-present Benjamin Morel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/brick/math/composer.json b/vendor/brick/math/composer.json
new file mode 100644
index 0000000..f400aa4
--- /dev/null
+++ b/vendor/brick/math/composer.json
@@ -0,0 +1,39 @@
+{
+ "name": "brick/math",
+ "description": "Arbitrary-precision arithmetic library",
+ "type": "library",
+ "keywords": [
+ "Brick",
+ "Math",
+ "Mathematics",
+ "Arbitrary-precision",
+ "Arithmetic",
+ "BigInteger",
+ "BigDecimal",
+ "BigRational",
+ "BigNumber",
+ "Bignum",
+ "Decimal",
+ "Rational",
+ "Integer"
+ ],
+ "license": "MIT",
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^10.1",
+ "php-coveralls/php-coveralls": "^2.2",
+ "vimeo/psalm": "6.8.8"
+ },
+ "autoload": {
+ "psr-4": {
+ "Brick\\Math\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Brick\\Math\\Tests\\": "tests/"
+ }
+ }
+}
diff --git a/vendor/brick/math/psalm-baseline.xml b/vendor/brick/math/psalm-baseline.xml
new file mode 100644
index 0000000..112adf4
--- /dev/null
+++ b/vendor/brick/math/psalm-baseline.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vendor/brick/math/src/BigDecimal.php b/vendor/brick/math/src/BigDecimal.php
new file mode 100644
index 0000000..21d1c4a
--- /dev/null
+++ b/vendor/brick/math/src/BigDecimal.php
@@ -0,0 +1,792 @@
+value = $value;
+ $this->scale = $scale;
+ }
+
+ /**
+ * @psalm-pure
+ */
+ #[Override]
+ protected static function from(BigNumber $number): static
+ {
+ return $number->toBigDecimal();
+ }
+
+ /**
+ * Creates a BigDecimal from an unscaled value and a scale.
+ *
+ * Example: `(12345, 3)` will result in the BigDecimal `12.345`.
+ *
+ * @param BigNumber|int|float|string $value The unscaled value. Must be convertible to a BigInteger.
+ * @param int $scale The scale of the number, positive or zero.
+ *
+ * @throws \InvalidArgumentException If the scale is negative.
+ *
+ * @psalm-pure
+ */
+ public static function ofUnscaledValue(BigNumber|int|float|string $value, int $scale = 0) : BigDecimal
+ {
+ if ($scale < 0) {
+ throw new \InvalidArgumentException('The scale cannot be negative.');
+ }
+
+ return new BigDecimal((string) BigInteger::of($value), $scale);
+ }
+
+ /**
+ * Returns a BigDecimal representing zero, with a scale of zero.
+ *
+ * @psalm-pure
+ */
+ public static function zero() : BigDecimal
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigDecimal|null $zero
+ */
+ static $zero;
+
+ if ($zero === null) {
+ $zero = new BigDecimal('0');
+ }
+
+ return $zero;
+ }
+
+ /**
+ * Returns a BigDecimal representing one, with a scale of zero.
+ *
+ * @psalm-pure
+ */
+ public static function one() : BigDecimal
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigDecimal|null $one
+ */
+ static $one;
+
+ if ($one === null) {
+ $one = new BigDecimal('1');
+ }
+
+ return $one;
+ }
+
+ /**
+ * Returns a BigDecimal representing ten, with a scale of zero.
+ *
+ * @psalm-pure
+ */
+ public static function ten() : BigDecimal
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigDecimal|null $ten
+ */
+ static $ten;
+
+ if ($ten === null) {
+ $ten = new BigDecimal('10');
+ }
+
+ return $ten;
+ }
+
+ /**
+ * Returns the sum of this number and the given one.
+ *
+ * The result has a scale of `max($this->scale, $that->scale)`.
+ *
+ * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the number is not valid, or is not convertible to a BigDecimal.
+ */
+ public function plus(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->value === '0' && $that->scale <= $this->scale) {
+ return $this;
+ }
+
+ if ($this->value === '0' && $this->scale <= $that->scale) {
+ return $that;
+ }
+
+ [$a, $b] = $this->scaleValues($this, $that);
+
+ $value = Calculator::get()->add($a, $b);
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns the difference of this number and the given one.
+ *
+ * The result has a scale of `max($this->scale, $that->scale)`.
+ *
+ * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the number is not valid, or is not convertible to a BigDecimal.
+ */
+ public function minus(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->value === '0' && $that->scale <= $this->scale) {
+ return $this;
+ }
+
+ [$a, $b] = $this->scaleValues($this, $that);
+
+ $value = Calculator::get()->sub($a, $b);
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns the product of this number and the given one.
+ *
+ * The result has a scale of `$this->scale + $that->scale`.
+ *
+ * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigDecimal.
+ */
+ public function multipliedBy(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->value === '1' && $that->scale === 0) {
+ return $this;
+ }
+
+ if ($this->value === '1' && $this->scale === 0) {
+ return $that;
+ }
+
+ $value = Calculator::get()->mul($this->value, $that->value);
+ $scale = $this->scale + $that->scale;
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns the result of the division of this number by the given one, at the given scale.
+ *
+ * @param BigNumber|int|float|string $that The divisor.
+ * @param int|null $scale The desired scale, or null to use the scale of this number.
+ * @param RoundingMode $roundingMode An optional rounding mode, defaults to UNNECESSARY.
+ *
+ * @throws \InvalidArgumentException If the scale or rounding mode is invalid.
+ * @throws MathException If the number is invalid, is zero, or rounding was necessary.
+ */
+ public function dividedBy(BigNumber|int|float|string $that, ?int $scale = null, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->isZero()) {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ if ($scale === null) {
+ $scale = $this->scale;
+ } elseif ($scale < 0) {
+ throw new \InvalidArgumentException('Scale cannot be negative.');
+ }
+
+ if ($that->value === '1' && $that->scale === 0 && $scale === $this->scale) {
+ return $this;
+ }
+
+ $p = $this->valueWithMinScale($that->scale + $scale);
+ $q = $that->valueWithMinScale($this->scale - $scale);
+
+ $result = Calculator::get()->divRound($p, $q, $roundingMode);
+
+ return new BigDecimal($result, $scale);
+ }
+
+ /**
+ * Returns the exact result of the division of this number by the given one.
+ *
+ * The scale of the result is automatically calculated to fit all the fraction digits.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the divisor is not a valid number, is not convertible to a BigDecimal, is zero,
+ * or the result yields an infinite number of digits.
+ */
+ public function exactlyDividedBy(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ [, $b] = $this->scaleValues($this, $that);
+
+ $d = \rtrim($b, '0');
+ $scale = \strlen($b) - \strlen($d);
+
+ $calculator = Calculator::get();
+
+ foreach ([5, 2] as $prime) {
+ for (;;) {
+ $lastDigit = (int) $d[-1];
+
+ if ($lastDigit % $prime !== 0) {
+ break;
+ }
+
+ $d = $calculator->divQ($d, (string) $prime);
+ $scale++;
+ }
+ }
+
+ return $this->dividedBy($that, $scale)->stripTrailingZeros();
+ }
+
+ /**
+ * Returns this number exponentiated to the given value.
+ *
+ * The result has a scale of `$this->scale * $exponent`.
+ *
+ * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000.
+ */
+ public function power(int $exponent) : BigDecimal
+ {
+ if ($exponent === 0) {
+ return BigDecimal::one();
+ }
+
+ if ($exponent === 1) {
+ return $this;
+ }
+
+ if ($exponent < 0 || $exponent > Calculator::MAX_POWER) {
+ throw new \InvalidArgumentException(\sprintf(
+ 'The exponent %d is not in the range 0 to %d.',
+ $exponent,
+ Calculator::MAX_POWER
+ ));
+ }
+
+ return new BigDecimal(Calculator::get()->pow($this->value, $exponent), $this->scale * $exponent);
+ }
+
+ /**
+ * Returns the quotient of the division of this number by the given one.
+ *
+ * The quotient has a scale of `0`.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the divisor is not a valid decimal number, or is zero.
+ */
+ public function quotient(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->isZero()) {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $p = $this->valueWithMinScale($that->scale);
+ $q = $that->valueWithMinScale($this->scale);
+
+ $quotient = Calculator::get()->divQ($p, $q);
+
+ return new BigDecimal($quotient, 0);
+ }
+
+ /**
+ * Returns the remainder of the division of this number by the given one.
+ *
+ * The remainder has a scale of `max($this->scale, $that->scale)`.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the divisor is not a valid decimal number, or is zero.
+ */
+ public function remainder(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->isZero()) {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $p = $this->valueWithMinScale($that->scale);
+ $q = $that->valueWithMinScale($this->scale);
+
+ $remainder = Calculator::get()->divR($p, $q);
+
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
+
+ return new BigDecimal($remainder, $scale);
+ }
+
+ /**
+ * Returns the quotient and remainder of the division of this number by the given one.
+ *
+ * The quotient has a scale of `0`, and the remainder has a scale of `max($this->scale, $that->scale)`.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
+ *
+ * @return BigDecimal[] An array containing the quotient and the remainder.
+ *
+ * @psalm-return array{BigDecimal, BigDecimal}
+ *
+ * @throws MathException If the divisor is not a valid decimal number, or is zero.
+ */
+ public function quotientAndRemainder(BigNumber|int|float|string $that) : array
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->isZero()) {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $p = $this->valueWithMinScale($that->scale);
+ $q = $that->valueWithMinScale($this->scale);
+
+ [$quotient, $remainder] = Calculator::get()->divQR($p, $q);
+
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
+
+ $quotient = new BigDecimal($quotient, 0);
+ $remainder = new BigDecimal($remainder, $scale);
+
+ return [$quotient, $remainder];
+ }
+
+ /**
+ * Returns the square root of this number, rounded down to the given number of decimals.
+ *
+ * @throws \InvalidArgumentException If the scale is negative.
+ * @throws NegativeNumberException If this number is negative.
+ */
+ public function sqrt(int $scale) : BigDecimal
+ {
+ if ($scale < 0) {
+ throw new \InvalidArgumentException('Scale cannot be negative.');
+ }
+
+ if ($this->value === '0') {
+ return new BigDecimal('0', $scale);
+ }
+
+ if ($this->value[0] === '-') {
+ throw new NegativeNumberException('Cannot calculate the square root of a negative number.');
+ }
+
+ $value = $this->value;
+ $addDigits = 2 * $scale - $this->scale;
+
+ if ($addDigits > 0) {
+ // add zeros
+ $value .= \str_repeat('0', $addDigits);
+ } elseif ($addDigits < 0) {
+ // trim digits
+ if (-$addDigits >= \strlen($this->value)) {
+ // requesting a scale too low, will always yield a zero result
+ return new BigDecimal('0', $scale);
+ }
+
+ $value = \substr($value, 0, $addDigits);
+ }
+
+ $value = Calculator::get()->sqrt($value);
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns a copy of this BigDecimal with the decimal point moved $n places to the left.
+ */
+ public function withPointMovedLeft(int $n) : BigDecimal
+ {
+ if ($n === 0) {
+ return $this;
+ }
+
+ if ($n < 0) {
+ return $this->withPointMovedRight(-$n);
+ }
+
+ return new BigDecimal($this->value, $this->scale + $n);
+ }
+
+ /**
+ * Returns a copy of this BigDecimal with the decimal point moved $n places to the right.
+ */
+ public function withPointMovedRight(int $n) : BigDecimal
+ {
+ if ($n === 0) {
+ return $this;
+ }
+
+ if ($n < 0) {
+ return $this->withPointMovedLeft(-$n);
+ }
+
+ $value = $this->value;
+ $scale = $this->scale - $n;
+
+ if ($scale < 0) {
+ if ($value !== '0') {
+ $value .= \str_repeat('0', -$scale);
+ }
+ $scale = 0;
+ }
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns a copy of this BigDecimal with any trailing zeros removed from the fractional part.
+ */
+ public function stripTrailingZeros() : BigDecimal
+ {
+ if ($this->scale === 0) {
+ return $this;
+ }
+
+ $trimmedValue = \rtrim($this->value, '0');
+
+ if ($trimmedValue === '') {
+ return BigDecimal::zero();
+ }
+
+ $trimmableZeros = \strlen($this->value) - \strlen($trimmedValue);
+
+ if ($trimmableZeros === 0) {
+ return $this;
+ }
+
+ if ($trimmableZeros > $this->scale) {
+ $trimmableZeros = $this->scale;
+ }
+
+ $value = \substr($this->value, 0, -$trimmableZeros);
+ $scale = $this->scale - $trimmableZeros;
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns the absolute value of this number.
+ */
+ public function abs() : BigDecimal
+ {
+ return $this->isNegative() ? $this->negated() : $this;
+ }
+
+ /**
+ * Returns the negated value of this number.
+ */
+ public function negated() : BigDecimal
+ {
+ return new BigDecimal(Calculator::get()->neg($this->value), $this->scale);
+ }
+
+ #[Override]
+ public function compareTo(BigNumber|int|float|string $that) : int
+ {
+ $that = BigNumber::of($that);
+
+ if ($that instanceof BigInteger) {
+ $that = $that->toBigDecimal();
+ }
+
+ if ($that instanceof BigDecimal) {
+ [$a, $b] = $this->scaleValues($this, $that);
+
+ return Calculator::get()->cmp($a, $b);
+ }
+
+ return - $that->compareTo($this);
+ }
+
+ #[Override]
+ public function getSign() : int
+ {
+ return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1);
+ }
+
+ public function getUnscaledValue() : BigInteger
+ {
+ return self::newBigInteger($this->value);
+ }
+
+ public function getScale() : int
+ {
+ return $this->scale;
+ }
+
+ /**
+ * Returns the number of significant digits in the number.
+ *
+ * This is the number of digits to both sides of the decimal point, stripped of leading zeros.
+ * The sign has no impact on the result.
+ *
+ * Examples:
+ * 0 => 0
+ * 0.0 => 0
+ * 123 => 3
+ * 123.456 => 6
+ * 0.00123 => 3
+ * 0.0012300 => 5
+ */
+ public function getPrecision(): int
+ {
+ $value = $this->value;
+
+ if ($value === '0') {
+ return 0;
+ }
+
+ $length = \strlen($value);
+
+ return ($value[0] === '-') ? $length - 1 : $length;
+ }
+
+ /**
+ * Returns a string representing the integral part of this decimal number.
+ *
+ * Example: `-123.456` => `-123`.
+ */
+ public function getIntegralPart() : string
+ {
+ if ($this->scale === 0) {
+ return $this->value;
+ }
+
+ $value = $this->getUnscaledValueWithLeadingZeros();
+
+ return \substr($value, 0, -$this->scale);
+ }
+
+ /**
+ * Returns a string representing the fractional part of this decimal number.
+ *
+ * If the scale is zero, an empty string is returned.
+ *
+ * Examples: `-123.456` => '456', `123` => ''.
+ */
+ public function getFractionalPart() : string
+ {
+ if ($this->scale === 0) {
+ return '';
+ }
+
+ $value = $this->getUnscaledValueWithLeadingZeros();
+
+ return \substr($value, -$this->scale);
+ }
+
+ /**
+ * Returns whether this decimal number has a non-zero fractional part.
+ */
+ public function hasNonZeroFractionalPart() : bool
+ {
+ return $this->getFractionalPart() !== \str_repeat('0', $this->scale);
+ }
+
+ #[Override]
+ public function toBigInteger() : BigInteger
+ {
+ $zeroScaleDecimal = $this->scale === 0 ? $this : $this->dividedBy(1, 0);
+
+ return self::newBigInteger($zeroScaleDecimal->value);
+ }
+
+ #[Override]
+ public function toBigDecimal() : BigDecimal
+ {
+ return $this;
+ }
+
+ #[Override]
+ public function toBigRational() : BigRational
+ {
+ $numerator = self::newBigInteger($this->value);
+ $denominator = self::newBigInteger('1' . \str_repeat('0', $this->scale));
+
+ return self::newBigRational($numerator, $denominator, false);
+ }
+
+ #[Override]
+ public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ {
+ if ($scale === $this->scale) {
+ return $this;
+ }
+
+ return $this->dividedBy(BigDecimal::one(), $scale, $roundingMode);
+ }
+
+ #[Override]
+ public function toInt() : int
+ {
+ return $this->toBigInteger()->toInt();
+ }
+
+ #[Override]
+ public function toFloat() : float
+ {
+ return (float) (string) $this;
+ }
+
+ #[Override]
+ public function __toString() : string
+ {
+ if ($this->scale === 0) {
+ return $this->value;
+ }
+
+ $value = $this->getUnscaledValueWithLeadingZeros();
+
+ return \substr($value, 0, -$this->scale) . '.' . \substr($value, -$this->scale);
+ }
+
+ /**
+ * This method is required for serializing the object and SHOULD NOT be accessed directly.
+ *
+ * @internal
+ *
+ * @return array{value: string, scale: int}
+ */
+ public function __serialize(): array
+ {
+ return ['value' => $this->value, 'scale' => $this->scale];
+ }
+
+ /**
+ * This method is only here to allow unserializing the object and cannot be accessed directly.
+ *
+ * @internal
+ * @psalm-suppress RedundantPropertyInitializationCheck
+ *
+ * @param array{value: string, scale: int} $data
+ *
+ * @throws \LogicException
+ */
+ public function __unserialize(array $data): void
+ {
+ if (isset($this->value)) {
+ throw new \LogicException('__unserialize() is an internal function, it must not be called directly.');
+ }
+
+ $this->value = $data['value'];
+ $this->scale = $data['scale'];
+ }
+
+ /**
+ * Puts the internal values of the given decimal numbers on the same scale.
+ *
+ * @return array{string, string} The scaled integer values of $x and $y.
+ */
+ private function scaleValues(BigDecimal $x, BigDecimal $y) : array
+ {
+ $a = $x->value;
+ $b = $y->value;
+
+ if ($b !== '0' && $x->scale > $y->scale) {
+ $b .= \str_repeat('0', $x->scale - $y->scale);
+ } elseif ($a !== '0' && $x->scale < $y->scale) {
+ $a .= \str_repeat('0', $y->scale - $x->scale);
+ }
+
+ return [$a, $b];
+ }
+
+ private function valueWithMinScale(int $scale) : string
+ {
+ $value = $this->value;
+
+ if ($this->value !== '0' && $scale > $this->scale) {
+ $value .= \str_repeat('0', $scale - $this->scale);
+ }
+
+ return $value;
+ }
+
+ /**
+ * Adds leading zeros if necessary to the unscaled value to represent the full decimal number.
+ */
+ private function getUnscaledValueWithLeadingZeros() : string
+ {
+ $value = $this->value;
+ $targetLength = $this->scale + 1;
+ $negative = ($value[0] === '-');
+ $length = \strlen($value);
+
+ if ($negative) {
+ $length--;
+ }
+
+ if ($length >= $targetLength) {
+ return $this->value;
+ }
+
+ if ($negative) {
+ $value = \substr($value, 1);
+ }
+
+ $value = \str_pad($value, $targetLength, '0', STR_PAD_LEFT);
+
+ if ($negative) {
+ $value = '-' . $value;
+ }
+
+ return $value;
+ }
+}
diff --git a/vendor/brick/math/src/BigInteger.php b/vendor/brick/math/src/BigInteger.php
new file mode 100644
index 0000000..7242481
--- /dev/null
+++ b/vendor/brick/math/src/BigInteger.php
@@ -0,0 +1,1062 @@
+value = $value;
+ }
+
+ /**
+ * @psalm-pure
+ */
+ #[Override]
+ protected static function from(BigNumber $number): static
+ {
+ return $number->toBigInteger();
+ }
+
+ /**
+ * Creates a number from a string in a given base.
+ *
+ * The string can optionally be prefixed with the `+` or `-` sign.
+ *
+ * Bases greater than 36 are not supported by this method, as there is no clear consensus on which of the lowercase
+ * or uppercase characters should come first. Instead, this method accepts any base up to 36, and does not
+ * differentiate lowercase and uppercase characters, which are considered equal.
+ *
+ * For bases greater than 36, and/or custom alphabets, use the fromArbitraryBase() method.
+ *
+ * @param string $number The number to convert, in the given base.
+ * @param int $base The base of the number, between 2 and 36.
+ *
+ * @throws NumberFormatException If the number is empty, or contains invalid chars for the given base.
+ * @throws \InvalidArgumentException If the base is out of range.
+ *
+ * @psalm-pure
+ */
+ public static function fromBase(string $number, int $base) : BigInteger
+ {
+ if ($number === '') {
+ throw new NumberFormatException('The number cannot be empty.');
+ }
+
+ if ($base < 2 || $base > 36) {
+ throw new \InvalidArgumentException(\sprintf('Base %d is not in range 2 to 36.', $base));
+ }
+
+ if ($number[0] === '-') {
+ $sign = '-';
+ $number = \substr($number, 1);
+ } elseif ($number[0] === '+') {
+ $sign = '';
+ $number = \substr($number, 1);
+ } else {
+ $sign = '';
+ }
+
+ if ($number === '') {
+ throw new NumberFormatException('The number cannot be empty.');
+ }
+
+ $number = \ltrim($number, '0');
+
+ if ($number === '') {
+ // The result will be the same in any base, avoid further calculation.
+ return BigInteger::zero();
+ }
+
+ if ($number === '1') {
+ // The result will be the same in any base, avoid further calculation.
+ return new BigInteger($sign . '1');
+ }
+
+ $pattern = '/[^' . \substr(Calculator::ALPHABET, 0, $base) . ']/';
+
+ if (\preg_match($pattern, \strtolower($number), $matches) === 1) {
+ throw new NumberFormatException(\sprintf('"%s" is not a valid character in base %d.', $matches[0], $base));
+ }
+
+ if ($base === 10) {
+ // The number is usable as is, avoid further calculation.
+ return new BigInteger($sign . $number);
+ }
+
+ $result = Calculator::get()->fromBase($number, $base);
+
+ return new BigInteger($sign . $result);
+ }
+
+ /**
+ * Parses a string containing an integer in an arbitrary base, using a custom alphabet.
+ *
+ * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers.
+ *
+ * @param string $number The number to parse.
+ * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8.
+ *
+ * @throws NumberFormatException If the given number is empty or contains invalid chars for the given alphabet.
+ * @throws \InvalidArgumentException If the alphabet does not contain at least 2 chars.
+ *
+ * @psalm-pure
+ */
+ public static function fromArbitraryBase(string $number, string $alphabet) : BigInteger
+ {
+ if ($number === '') {
+ throw new NumberFormatException('The number cannot be empty.');
+ }
+
+ $base = \strlen($alphabet);
+
+ if ($base < 2) {
+ throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.');
+ }
+
+ $pattern = '/[^' . \preg_quote($alphabet, '/') . ']/';
+
+ if (\preg_match($pattern, $number, $matches) === 1) {
+ throw NumberFormatException::charNotInAlphabet($matches[0]);
+ }
+
+ $number = Calculator::get()->fromArbitraryBase($number, $alphabet, $base);
+
+ return new BigInteger($number);
+ }
+
+ /**
+ * Translates a string of bytes containing the binary representation of a BigInteger into a BigInteger.
+ *
+ * The input string is assumed to be in big-endian byte-order: the most significant byte is in the zeroth element.
+ *
+ * If `$signed` is true, the input is assumed to be in two's-complement representation, and the leading bit is
+ * interpreted as a sign bit. If `$signed` is false, the input is interpreted as an unsigned number, and the
+ * resulting BigInteger will always be positive or zero.
+ *
+ * This method can be used to retrieve a number exported by `toBytes()`, as long as the `$signed` flags match.
+ *
+ * @param string $value The byte string.
+ * @param bool $signed Whether to interpret as a signed number in two's-complement representation with a leading
+ * sign bit.
+ *
+ * @throws NumberFormatException If the string is empty.
+ */
+ public static function fromBytes(string $value, bool $signed = true) : BigInteger
+ {
+ if ($value === '') {
+ throw new NumberFormatException('The byte string must not be empty.');
+ }
+
+ $twosComplement = false;
+
+ if ($signed) {
+ $x = \ord($value[0]);
+
+ if (($twosComplement = ($x >= 0x80))) {
+ $value = ~$value;
+ }
+ }
+
+ $number = self::fromBase(\bin2hex($value), 16);
+
+ if ($twosComplement) {
+ return $number->plus(1)->negated();
+ }
+
+ return $number;
+ }
+
+ /**
+ * Generates a pseudo-random number in the range 0 to 2^numBits - 1.
+ *
+ * Using the default random bytes generator, this method is suitable for cryptographic use.
+ *
+ * @psalm-param (callable(int): string)|null $randomBytesGenerator
+ *
+ * @param int $numBits The number of bits.
+ * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, and returns a
+ * string of random bytes of the given length. Defaults to the
+ * `random_bytes()` function.
+ *
+ * @throws \InvalidArgumentException If $numBits is negative.
+ */
+ public static function randomBits(int $numBits, ?callable $randomBytesGenerator = null) : BigInteger
+ {
+ if ($numBits < 0) {
+ throw new \InvalidArgumentException('The number of bits cannot be negative.');
+ }
+
+ if ($numBits === 0) {
+ return BigInteger::zero();
+ }
+
+ if ($randomBytesGenerator === null) {
+ $randomBytesGenerator = random_bytes(...);
+ }
+
+ /** @var int<1, max> $byteLength */
+ $byteLength = \intdiv($numBits - 1, 8) + 1;
+
+ $extraBits = ($byteLength * 8 - $numBits);
+ $bitmask = \chr(0xFF >> $extraBits);
+
+ $randomBytes = $randomBytesGenerator($byteLength);
+ $randomBytes[0] = $randomBytes[0] & $bitmask;
+
+ return self::fromBytes($randomBytes, false);
+ }
+
+ /**
+ * Generates a pseudo-random number between `$min` and `$max`.
+ *
+ * Using the default random bytes generator, this method is suitable for cryptographic use.
+ *
+ * @psalm-param (callable(int): string)|null $randomBytesGenerator
+ *
+ * @param BigNumber|int|float|string $min The lower bound. Must be convertible to a BigInteger.
+ * @param BigNumber|int|float|string $max The upper bound. Must be convertible to a BigInteger.
+ * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer,
+ * and returns a string of random bytes of the given length.
+ * Defaults to the `random_bytes()` function.
+ *
+ * @throws MathException If one of the parameters cannot be converted to a BigInteger,
+ * or `$min` is greater than `$max`.
+ */
+ public static function randomRange(
+ BigNumber|int|float|string $min,
+ BigNumber|int|float|string $max,
+ ?callable $randomBytesGenerator = null
+ ) : BigInteger {
+ $min = BigInteger::of($min);
+ $max = BigInteger::of($max);
+
+ if ($min->isGreaterThan($max)) {
+ throw new MathException('$min cannot be greater than $max.');
+ }
+
+ if ($min->isEqualTo($max)) {
+ return $min;
+ }
+
+ $diff = $max->minus($min);
+ $bitLength = $diff->getBitLength();
+
+ // try until the number is in range (50% to 100% chance of success)
+ do {
+ $randomNumber = self::randomBits($bitLength, $randomBytesGenerator);
+ } while ($randomNumber->isGreaterThan($diff));
+
+ return $randomNumber->plus($min);
+ }
+
+ /**
+ * Returns a BigInteger representing zero.
+ *
+ * @psalm-pure
+ */
+ public static function zero() : BigInteger
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigInteger|null $zero
+ */
+ static $zero;
+
+ if ($zero === null) {
+ $zero = new BigInteger('0');
+ }
+
+ return $zero;
+ }
+
+ /**
+ * Returns a BigInteger representing one.
+ *
+ * @psalm-pure
+ */
+ public static function one() : BigInteger
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigInteger|null $one
+ */
+ static $one;
+
+ if ($one === null) {
+ $one = new BigInteger('1');
+ }
+
+ return $one;
+ }
+
+ /**
+ * Returns a BigInteger representing ten.
+ *
+ * @psalm-pure
+ */
+ public static function ten() : BigInteger
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigInteger|null $ten
+ */
+ static $ten;
+
+ if ($ten === null) {
+ $ten = new BigInteger('10');
+ }
+
+ return $ten;
+ }
+
+ public static function gcdMultiple(BigInteger $a, BigInteger ...$n): BigInteger
+ {
+ $result = $a;
+
+ foreach ($n as $next) {
+ $result = $result->gcd($next);
+
+ if ($result->isEqualTo(1)) {
+ return $result;
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns the sum of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigInteger.
+ *
+ * @throws MathException If the number is not valid, or is not convertible to a BigInteger.
+ */
+ public function plus(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '0') {
+ return $this;
+ }
+
+ if ($this->value === '0') {
+ return $that;
+ }
+
+ $value = Calculator::get()->add($this->value, $that->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the difference of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigInteger.
+ *
+ * @throws MathException If the number is not valid, or is not convertible to a BigInteger.
+ */
+ public function minus(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '0') {
+ return $this;
+ }
+
+ $value = Calculator::get()->sub($this->value, $that->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the product of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigInteger.
+ *
+ * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigInteger.
+ */
+ public function multipliedBy(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '1') {
+ return $this;
+ }
+
+ if ($this->value === '1') {
+ return $that;
+ }
+
+ $value = Calculator::get()->mul($this->value, $that->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the result of the division of this number by the given one.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
+ * @param RoundingMode $roundingMode An optional rounding mode, defaults to UNNECESSARY.
+ *
+ * @throws MathException If the divisor is not a valid number, is not convertible to a BigInteger, is zero,
+ * or RoundingMode::UNNECESSARY is used and the remainder is not zero.
+ */
+ public function dividedBy(BigNumber|int|float|string $that, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '1') {
+ return $this;
+ }
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $result = Calculator::get()->divRound($this->value, $that->value, $roundingMode);
+
+ return new BigInteger($result);
+ }
+
+ /**
+ * Returns this number exponentiated to the given value.
+ *
+ * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000.
+ */
+ public function power(int $exponent) : BigInteger
+ {
+ if ($exponent === 0) {
+ return BigInteger::one();
+ }
+
+ if ($exponent === 1) {
+ return $this;
+ }
+
+ if ($exponent < 0 || $exponent > Calculator::MAX_POWER) {
+ throw new \InvalidArgumentException(\sprintf(
+ 'The exponent %d is not in the range 0 to %d.',
+ $exponent,
+ Calculator::MAX_POWER
+ ));
+ }
+
+ return new BigInteger(Calculator::get()->pow($this->value, $exponent));
+ }
+
+ /**
+ * Returns the quotient of the division of this number by the given one.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
+ *
+ * @throws DivisionByZeroException If the divisor is zero.
+ */
+ public function quotient(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '1') {
+ return $this;
+ }
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $quotient = Calculator::get()->divQ($this->value, $that->value);
+
+ return new BigInteger($quotient);
+ }
+
+ /**
+ * Returns the remainder of the division of this number by the given one.
+ *
+ * The remainder, when non-zero, has the same sign as the dividend.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
+ *
+ * @throws DivisionByZeroException If the divisor is zero.
+ */
+ public function remainder(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '1') {
+ return BigInteger::zero();
+ }
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $remainder = Calculator::get()->divR($this->value, $that->value);
+
+ return new BigInteger($remainder);
+ }
+
+ /**
+ * Returns the quotient and remainder of the division of this number by the given one.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
+ *
+ * @return BigInteger[] An array containing the quotient and the remainder.
+ *
+ * @psalm-return array{BigInteger, BigInteger}
+ *
+ * @throws DivisionByZeroException If the divisor is zero.
+ */
+ public function quotientAndRemainder(BigNumber|int|float|string $that) : array
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ [$quotient, $remainder] = Calculator::get()->divQR($this->value, $that->value);
+
+ return [
+ new BigInteger($quotient),
+ new BigInteger($remainder)
+ ];
+ }
+
+ /**
+ * Returns the modulo of this number and the given one.
+ *
+ * The modulo operation yields the same result as the remainder operation when both operands are of the same sign,
+ * and may differ when signs are different.
+ *
+ * The result of the modulo operation, when non-zero, has the same sign as the divisor.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
+ *
+ * @throws DivisionByZeroException If the divisor is zero.
+ */
+ public function mod(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::modulusMustNotBeZero();
+ }
+
+ $value = Calculator::get()->mod($this->value, $that->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the modular multiplicative inverse of this BigInteger modulo $m.
+ *
+ * @throws DivisionByZeroException If $m is zero.
+ * @throws NegativeNumberException If $m is negative.
+ * @throws MathException If this BigInteger has no multiplicative inverse mod m (that is, this BigInteger
+ * is not relatively prime to m).
+ */
+ public function modInverse(BigInteger $m) : BigInteger
+ {
+ if ($m->value === '0') {
+ throw DivisionByZeroException::modulusMustNotBeZero();
+ }
+
+ if ($m->isNegative()) {
+ throw new NegativeNumberException('Modulus must not be negative.');
+ }
+
+ if ($m->value === '1') {
+ return BigInteger::zero();
+ }
+
+ $value = Calculator::get()->modInverse($this->value, $m->value);
+
+ if ($value === null) {
+ throw new MathException('Unable to compute the modInverse for the given modulus.');
+ }
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns this number raised into power with modulo.
+ *
+ * This operation only works on positive numbers.
+ *
+ * @param BigNumber|int|float|string $exp The exponent. Must be positive or zero.
+ * @param BigNumber|int|float|string $mod The modulus. Must be strictly positive.
+ *
+ * @throws NegativeNumberException If any of the operands is negative.
+ * @throws DivisionByZeroException If the modulus is zero.
+ */
+ public function modPow(BigNumber|int|float|string $exp, BigNumber|int|float|string $mod) : BigInteger
+ {
+ $exp = BigInteger::of($exp);
+ $mod = BigInteger::of($mod);
+
+ if ($this->isNegative() || $exp->isNegative() || $mod->isNegative()) {
+ throw new NegativeNumberException('The operands cannot be negative.');
+ }
+
+ if ($mod->isZero()) {
+ throw DivisionByZeroException::modulusMustNotBeZero();
+ }
+
+ $result = Calculator::get()->modPow($this->value, $exp->value, $mod->value);
+
+ return new BigInteger($result);
+ }
+
+ /**
+ * Returns the greatest common divisor of this number and the given one.
+ *
+ * The GCD is always positive, unless both operands are zero, in which case it is zero.
+ *
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
+ */
+ public function gcd(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '0' && $this->value[0] !== '-') {
+ return $this;
+ }
+
+ if ($this->value === '0' && $that->value[0] !== '-') {
+ return $that;
+ }
+
+ $value = Calculator::get()->gcd($this->value, $that->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the integer square root number of this number, rounded down.
+ *
+ * The result is the largest x such that x² ≤ n.
+ *
+ * @throws NegativeNumberException If this number is negative.
+ */
+ public function sqrt() : BigInteger
+ {
+ if ($this->value[0] === '-') {
+ throw new NegativeNumberException('Cannot calculate the square root of a negative number.');
+ }
+
+ $value = Calculator::get()->sqrt($this->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the absolute value of this number.
+ */
+ public function abs() : BigInteger
+ {
+ return $this->isNegative() ? $this->negated() : $this;
+ }
+
+ /**
+ * Returns the inverse of this number.
+ */
+ public function negated() : BigInteger
+ {
+ return new BigInteger(Calculator::get()->neg($this->value));
+ }
+
+ /**
+ * Returns the integer bitwise-and combined with another integer.
+ *
+ * This method returns a negative BigInteger if and only if both operands are negative.
+ *
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
+ */
+ public function and(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ return new BigInteger(Calculator::get()->and($this->value, $that->value));
+ }
+
+ /**
+ * Returns the integer bitwise-or combined with another integer.
+ *
+ * This method returns a negative BigInteger if and only if either of the operands is negative.
+ *
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
+ */
+ public function or(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ return new BigInteger(Calculator::get()->or($this->value, $that->value));
+ }
+
+ /**
+ * Returns the integer bitwise-xor combined with another integer.
+ *
+ * This method returns a negative BigInteger if and only if exactly one of the operands is negative.
+ *
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
+ */
+ public function xor(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ return new BigInteger(Calculator::get()->xor($this->value, $that->value));
+ }
+
+ /**
+ * Returns the bitwise-not of this BigInteger.
+ */
+ public function not() : BigInteger
+ {
+ return $this->negated()->minus(1);
+ }
+
+ /**
+ * Returns the integer left shifted by a given number of bits.
+ */
+ public function shiftedLeft(int $distance) : BigInteger
+ {
+ if ($distance === 0) {
+ return $this;
+ }
+
+ if ($distance < 0) {
+ return $this->shiftedRight(- $distance);
+ }
+
+ return $this->multipliedBy(BigInteger::of(2)->power($distance));
+ }
+
+ /**
+ * Returns the integer right shifted by a given number of bits.
+ */
+ public function shiftedRight(int $distance) : BigInteger
+ {
+ if ($distance === 0) {
+ return $this;
+ }
+
+ if ($distance < 0) {
+ return $this->shiftedLeft(- $distance);
+ }
+
+ $operand = BigInteger::of(2)->power($distance);
+
+ if ($this->isPositiveOrZero()) {
+ return $this->quotient($operand);
+ }
+
+ return $this->dividedBy($operand, RoundingMode::UP);
+ }
+
+ /**
+ * Returns the number of bits in the minimal two's-complement representation of this BigInteger, excluding a sign bit.
+ *
+ * For positive BigIntegers, this is equivalent to the number of bits in the ordinary binary representation.
+ * Computes (ceil(log2(this < 0 ? -this : this+1))).
+ */
+ public function getBitLength() : int
+ {
+ if ($this->value === '0') {
+ return 0;
+ }
+
+ if ($this->isNegative()) {
+ return $this->abs()->minus(1)->getBitLength();
+ }
+
+ return \strlen($this->toBase(2));
+ }
+
+ /**
+ * Returns the index of the rightmost (lowest-order) one bit in this BigInteger.
+ *
+ * Returns -1 if this BigInteger contains no one bits.
+ */
+ public function getLowestSetBit() : int
+ {
+ $n = $this;
+ $bitLength = $this->getBitLength();
+
+ for ($i = 0; $i <= $bitLength; $i++) {
+ if ($n->isOdd()) {
+ return $i;
+ }
+
+ $n = $n->shiftedRight(1);
+ }
+
+ return -1;
+ }
+
+ /**
+ * Returns whether this number is even.
+ */
+ public function isEven() : bool
+ {
+ return \in_array($this->value[-1], ['0', '2', '4', '6', '8'], true);
+ }
+
+ /**
+ * Returns whether this number is odd.
+ */
+ public function isOdd() : bool
+ {
+ return \in_array($this->value[-1], ['1', '3', '5', '7', '9'], true);
+ }
+
+ /**
+ * Returns true if and only if the designated bit is set.
+ *
+ * Computes ((this & (1<shiftedRight($n)->isOdd();
+ }
+
+ #[Override]
+ public function compareTo(BigNumber|int|float|string $that) : int
+ {
+ $that = BigNumber::of($that);
+
+ if ($that instanceof BigInteger) {
+ return Calculator::get()->cmp($this->value, $that->value);
+ }
+
+ return - $that->compareTo($this);
+ }
+
+ #[Override]
+ public function getSign() : int
+ {
+ return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1);
+ }
+
+ #[Override]
+ public function toBigInteger() : BigInteger
+ {
+ return $this;
+ }
+
+ #[Override]
+ public function toBigDecimal() : BigDecimal
+ {
+ return self::newBigDecimal($this->value);
+ }
+
+ #[Override]
+ public function toBigRational() : BigRational
+ {
+ return self::newBigRational($this, BigInteger::one(), false);
+ }
+
+ #[Override]
+ public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ {
+ return $this->toBigDecimal()->toScale($scale, $roundingMode);
+ }
+
+ #[Override]
+ public function toInt() : int
+ {
+ $intValue = (int) $this->value;
+
+ if ($this->value !== (string) $intValue) {
+ throw IntegerOverflowException::toIntOverflow($this);
+ }
+
+ return $intValue;
+ }
+
+ #[Override]
+ public function toFloat() : float
+ {
+ return (float) $this->value;
+ }
+
+ /**
+ * Returns a string representation of this number in the given base.
+ *
+ * The output will always be lowercase for bases greater than 10.
+ *
+ * @throws \InvalidArgumentException If the base is out of range.
+ */
+ public function toBase(int $base) : string
+ {
+ if ($base === 10) {
+ return $this->value;
+ }
+
+ if ($base < 2 || $base > 36) {
+ throw new \InvalidArgumentException(\sprintf('Base %d is out of range [2, 36]', $base));
+ }
+
+ return Calculator::get()->toBase($this->value, $base);
+ }
+
+ /**
+ * Returns a string representation of this number in an arbitrary base with a custom alphabet.
+ *
+ * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers;
+ * a NegativeNumberException will be thrown when attempting to call this method on a negative number.
+ *
+ * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8.
+ *
+ * @throws NegativeNumberException If this number is negative.
+ * @throws \InvalidArgumentException If the given alphabet does not contain at least 2 chars.
+ */
+ public function toArbitraryBase(string $alphabet) : string
+ {
+ $base = \strlen($alphabet);
+
+ if ($base < 2) {
+ throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.');
+ }
+
+ if ($this->value[0] === '-') {
+ throw new NegativeNumberException(__FUNCTION__ . '() does not support negative numbers.');
+ }
+
+ return Calculator::get()->toArbitraryBase($this->value, $alphabet, $base);
+ }
+
+ /**
+ * Returns a string of bytes containing the binary representation of this BigInteger.
+ *
+ * The string is in big-endian byte-order: the most significant byte is in the zeroth element.
+ *
+ * If `$signed` is true, the output will be in two's-complement representation, and a sign bit will be prepended to
+ * the output. If `$signed` is false, no sign bit will be prepended, and this method will throw an exception if the
+ * number is negative.
+ *
+ * The string will contain the minimum number of bytes required to represent this BigInteger, including a sign bit
+ * if `$signed` is true.
+ *
+ * This representation is compatible with the `fromBytes()` factory method, as long as the `$signed` flags match.
+ *
+ * @param bool $signed Whether to output a signed number in two's-complement representation with a leading sign bit.
+ *
+ * @throws NegativeNumberException If $signed is false, and the number is negative.
+ */
+ public function toBytes(bool $signed = true) : string
+ {
+ if (! $signed && $this->isNegative()) {
+ throw new NegativeNumberException('Cannot convert a negative number to a byte string when $signed is false.');
+ }
+
+ $hex = $this->abs()->toBase(16);
+
+ if (\strlen($hex) % 2 !== 0) {
+ $hex = '0' . $hex;
+ }
+
+ $baseHexLength = \strlen($hex);
+
+ if ($signed) {
+ if ($this->isNegative()) {
+ $bin = \hex2bin($hex);
+ assert($bin !== false);
+
+ $hex = \bin2hex(~$bin);
+ $hex = self::fromBase($hex, 16)->plus(1)->toBase(16);
+
+ $hexLength = \strlen($hex);
+
+ if ($hexLength < $baseHexLength) {
+ $hex = \str_repeat('0', $baseHexLength - $hexLength) . $hex;
+ }
+
+ if ($hex[0] < '8') {
+ $hex = 'FF' . $hex;
+ }
+ } else {
+ if ($hex[0] >= '8') {
+ $hex = '00' . $hex;
+ }
+ }
+ }
+
+ return \hex2bin($hex);
+ }
+
+ #[Override]
+ public function __toString() : string
+ {
+ return $this->value;
+ }
+
+ /**
+ * This method is required for serializing the object and SHOULD NOT be accessed directly.
+ *
+ * @internal
+ *
+ * @return array{value: string}
+ */
+ public function __serialize(): array
+ {
+ return ['value' => $this->value];
+ }
+
+ /**
+ * This method is only here to allow unserializing the object and cannot be accessed directly.
+ *
+ * @internal
+ * @psalm-suppress RedundantPropertyInitializationCheck
+ *
+ * @param array{value: string} $data
+ *
+ * @throws \LogicException
+ */
+ public function __unserialize(array $data): void
+ {
+ if (isset($this->value)) {
+ throw new \LogicException('__unserialize() is an internal function, it must not be called directly.');
+ }
+
+ $this->value = $data['value'];
+ }
+}
diff --git a/vendor/brick/math/src/BigNumber.php b/vendor/brick/math/src/BigNumber.php
new file mode 100644
index 0000000..5dabd31
--- /dev/null
+++ b/vendor/brick/math/src/BigNumber.php
@@ -0,0 +1,515 @@
+[\-\+])?' .
+ '(?[0-9]+)?' .
+ '(?\.)?' .
+ '(?[0-9]+)?' .
+ '(?:[eE](?[\-\+]?[0-9]+))?' .
+ '$/';
+
+ /**
+ * The regular expression used to parse rational numbers.
+ */
+ private const PARSE_REGEXP_RATIONAL =
+ '/^' .
+ '(?[\-\+])?' .
+ '(?[0-9]+)' .
+ '\/?' .
+ '(?[0-9]+)' .
+ '$/';
+
+ /**
+ * Creates a BigNumber of the given value.
+ *
+ * The concrete return type is dependent on the given value, with the following rules:
+ *
+ * - BigNumber instances are returned as is
+ * - integer numbers are returned as BigInteger
+ * - floating point numbers are converted to a string then parsed as such
+ * - strings containing a `/` character are returned as BigRational
+ * - strings containing a `.` character or using an exponential notation are returned as BigDecimal
+ * - strings containing only digits with an optional leading `+` or `-` sign are returned as BigInteger
+ *
+ * @throws NumberFormatException If the format of the number is not valid.
+ * @throws DivisionByZeroException If the value represents a rational number with a denominator of zero.
+ * @throws RoundingNecessaryException If the value cannot be converted to an instance of the subclass without rounding.
+ *
+ * @psalm-pure
+ */
+ final public static function of(BigNumber|int|float|string $value) : static
+ {
+ $value = self::_of($value);
+
+ if (static::class === BigNumber::class) {
+ // https://github.com/vimeo/psalm/issues/10309
+ assert($value instanceof static);
+
+ return $value;
+ }
+
+ return static::from($value);
+ }
+
+ /**
+ * @throws NumberFormatException If the format of the number is not valid.
+ * @throws DivisionByZeroException If the value represents a rational number with a denominator of zero.
+ *
+ * @psalm-pure
+ */
+ private static function _of(BigNumber|int|float|string $value) : BigNumber
+ {
+ if ($value instanceof BigNumber) {
+ return $value;
+ }
+
+ if (\is_int($value)) {
+ return new BigInteger((string) $value);
+ }
+
+ if (is_float($value)) {
+ $value = (string) $value;
+ }
+
+ if (str_contains($value, '/')) {
+ // Rational number
+ if (\preg_match(self::PARSE_REGEXP_RATIONAL, $value, $matches, PREG_UNMATCHED_AS_NULL) !== 1) {
+ throw NumberFormatException::invalidFormat($value);
+ }
+
+ $sign = $matches['sign'];
+ $numerator = $matches['numerator'];
+ $denominator = $matches['denominator'];
+
+ assert($numerator !== null);
+ assert($denominator !== null);
+
+ $numerator = self::cleanUp($sign, $numerator);
+ $denominator = self::cleanUp(null, $denominator);
+
+ if ($denominator === '0') {
+ throw DivisionByZeroException::denominatorMustNotBeZero();
+ }
+
+ return new BigRational(
+ new BigInteger($numerator),
+ new BigInteger($denominator),
+ false
+ );
+ } else {
+ // Integer or decimal number
+ if (\preg_match(self::PARSE_REGEXP_NUMERICAL, $value, $matches, PREG_UNMATCHED_AS_NULL) !== 1) {
+ throw NumberFormatException::invalidFormat($value);
+ }
+
+ $sign = $matches['sign'];
+ $point = $matches['point'];
+ $integral = $matches['integral'];
+ $fractional = $matches['fractional'];
+ $exponent = $matches['exponent'];
+
+ if ($integral === null && $fractional === null) {
+ throw NumberFormatException::invalidFormat($value);
+ }
+
+ if ($integral === null) {
+ $integral = '0';
+ }
+
+ if ($point !== null || $exponent !== null) {
+ $fractional = ($fractional ?? '');
+ $exponent = ($exponent !== null) ? (int)$exponent : 0;
+
+ if ($exponent === PHP_INT_MIN || $exponent === PHP_INT_MAX) {
+ throw new NumberFormatException('Exponent too large.');
+ }
+
+ $unscaledValue = self::cleanUp($sign, $integral . $fractional);
+
+ $scale = \strlen($fractional) - $exponent;
+
+ if ($scale < 0) {
+ if ($unscaledValue !== '0') {
+ $unscaledValue .= \str_repeat('0', -$scale);
+ }
+ $scale = 0;
+ }
+
+ return new BigDecimal($unscaledValue, $scale);
+ }
+
+ $integral = self::cleanUp($sign, $integral);
+
+ return new BigInteger($integral);
+ }
+ }
+
+ /**
+ * Overridden by subclasses to convert a BigNumber to an instance of the subclass.
+ *
+ * @throws RoundingNecessaryException If the value cannot be converted.
+ *
+ * @psalm-pure
+ */
+ abstract protected static function from(BigNumber $number): static;
+
+ /**
+ * Proxy method to access BigInteger's protected constructor from sibling classes.
+ *
+ * @internal
+ * @psalm-pure
+ */
+ final protected function newBigInteger(string $value) : BigInteger
+ {
+ return new BigInteger($value);
+ }
+
+ /**
+ * Proxy method to access BigDecimal's protected constructor from sibling classes.
+ *
+ * @internal
+ * @psalm-pure
+ */
+ final protected function newBigDecimal(string $value, int $scale = 0) : BigDecimal
+ {
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Proxy method to access BigRational's protected constructor from sibling classes.
+ *
+ * @internal
+ * @psalm-pure
+ */
+ final protected function newBigRational(BigInteger $numerator, BigInteger $denominator, bool $checkDenominator) : BigRational
+ {
+ return new BigRational($numerator, $denominator, $checkDenominator);
+ }
+
+ /**
+ * Returns the minimum of the given values.
+ *
+ * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible
+ * to an instance of the class this method is called on.
+ *
+ * @throws \InvalidArgumentException If no values are given.
+ * @throws MathException If an argument is not valid.
+ *
+ * @psalm-pure
+ */
+ final public static function min(BigNumber|int|float|string ...$values) : static
+ {
+ $min = null;
+
+ foreach ($values as $value) {
+ $value = static::of($value);
+
+ if ($min === null || $value->isLessThan($min)) {
+ $min = $value;
+ }
+ }
+
+ if ($min === null) {
+ throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.');
+ }
+
+ return $min;
+ }
+
+ /**
+ * Returns the maximum of the given values.
+ *
+ * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible
+ * to an instance of the class this method is called on.
+ *
+ * @throws \InvalidArgumentException If no values are given.
+ * @throws MathException If an argument is not valid.
+ *
+ * @psalm-pure
+ */
+ final public static function max(BigNumber|int|float|string ...$values) : static
+ {
+ $max = null;
+
+ foreach ($values as $value) {
+ $value = static::of($value);
+
+ if ($max === null || $value->isGreaterThan($max)) {
+ $max = $value;
+ }
+ }
+
+ if ($max === null) {
+ throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.');
+ }
+
+ return $max;
+ }
+
+ /**
+ * Returns the sum of the given values.
+ *
+ * @param BigNumber|int|float|string ...$values The numbers to add. All the numbers need to be convertible
+ * to an instance of the class this method is called on.
+ *
+ * @throws \InvalidArgumentException If no values are given.
+ * @throws MathException If an argument is not valid.
+ *
+ * @psalm-pure
+ */
+ final public static function sum(BigNumber|int|float|string ...$values) : static
+ {
+ /** @var static|null $sum */
+ $sum = null;
+
+ foreach ($values as $value) {
+ $value = static::of($value);
+
+ $sum = $sum === null ? $value : self::add($sum, $value);
+ }
+
+ if ($sum === null) {
+ throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.');
+ }
+
+ return $sum;
+ }
+
+ /**
+ * Adds two BigNumber instances in the correct order to avoid a RoundingNecessaryException.
+ *
+ * @todo This could be better resolved by creating an abstract protected method in BigNumber, and leaving to
+ * concrete classes the responsibility to perform the addition themselves or delegate it to the given number,
+ * depending on their ability to perform the operation. This will also require a version bump because we're
+ * potentially breaking custom BigNumber implementations (if any...)
+ *
+ * @psalm-pure
+ */
+ private static function add(BigNumber $a, BigNumber $b) : BigNumber
+ {
+ if ($a instanceof BigRational) {
+ return $a->plus($b);
+ }
+
+ if ($b instanceof BigRational) {
+ return $b->plus($a);
+ }
+
+ if ($a instanceof BigDecimal) {
+ return $a->plus($b);
+ }
+
+ if ($b instanceof BigDecimal) {
+ return $b->plus($a);
+ }
+
+ /** @var BigInteger $a */
+
+ return $a->plus($b);
+ }
+
+ /**
+ * Removes optional leading zeros and applies sign.
+ *
+ * @param string|null $sign The sign, '+' or '-', optional. Null is allowed for convenience and treated as '+'.
+ * @param string $number The number, validated as a non-empty string of digits.
+ *
+ * @psalm-pure
+ */
+ private static function cleanUp(string|null $sign, string $number) : string
+ {
+ $number = \ltrim($number, '0');
+
+ if ($number === '') {
+ return '0';
+ }
+
+ return $sign === '-' ? '-' . $number : $number;
+ }
+
+ /**
+ * Checks if this number is equal to the given one.
+ */
+ final public function isEqualTo(BigNumber|int|float|string $that) : bool
+ {
+ return $this->compareTo($that) === 0;
+ }
+
+ /**
+ * Checks if this number is strictly lower than the given one.
+ */
+ final public function isLessThan(BigNumber|int|float|string $that) : bool
+ {
+ return $this->compareTo($that) < 0;
+ }
+
+ /**
+ * Checks if this number is lower than or equal to the given one.
+ */
+ final public function isLessThanOrEqualTo(BigNumber|int|float|string $that) : bool
+ {
+ return $this->compareTo($that) <= 0;
+ }
+
+ /**
+ * Checks if this number is strictly greater than the given one.
+ */
+ final public function isGreaterThan(BigNumber|int|float|string $that) : bool
+ {
+ return $this->compareTo($that) > 0;
+ }
+
+ /**
+ * Checks if this number is greater than or equal to the given one.
+ */
+ final public function isGreaterThanOrEqualTo(BigNumber|int|float|string $that) : bool
+ {
+ return $this->compareTo($that) >= 0;
+ }
+
+ /**
+ * Checks if this number equals zero.
+ */
+ final public function isZero() : bool
+ {
+ return $this->getSign() === 0;
+ }
+
+ /**
+ * Checks if this number is strictly negative.
+ */
+ final public function isNegative() : bool
+ {
+ return $this->getSign() < 0;
+ }
+
+ /**
+ * Checks if this number is negative or zero.
+ */
+ final public function isNegativeOrZero() : bool
+ {
+ return $this->getSign() <= 0;
+ }
+
+ /**
+ * Checks if this number is strictly positive.
+ */
+ final public function isPositive() : bool
+ {
+ return $this->getSign() > 0;
+ }
+
+ /**
+ * Checks if this number is positive or zero.
+ */
+ final public function isPositiveOrZero() : bool
+ {
+ return $this->getSign() >= 0;
+ }
+
+ /**
+ * Returns the sign of this number.
+ *
+ * @psalm-return -1|0|1
+ *
+ * @return int -1 if the number is negative, 0 if zero, 1 if positive.
+ */
+ abstract public function getSign() : int;
+
+ /**
+ * Compares this number to the given one.
+ *
+ * @psalm-return -1|0|1
+ *
+ * @return int -1 if `$this` is lower than, 0 if equal to, 1 if greater than `$that`.
+ *
+ * @throws MathException If the number is not valid.
+ */
+ abstract public function compareTo(BigNumber|int|float|string $that) : int;
+
+ /**
+ * Converts this number to a BigInteger.
+ *
+ * @throws RoundingNecessaryException If this number cannot be converted to a BigInteger without rounding.
+ */
+ abstract public function toBigInteger() : BigInteger;
+
+ /**
+ * Converts this number to a BigDecimal.
+ *
+ * @throws RoundingNecessaryException If this number cannot be converted to a BigDecimal without rounding.
+ */
+ abstract public function toBigDecimal() : BigDecimal;
+
+ /**
+ * Converts this number to a BigRational.
+ */
+ abstract public function toBigRational() : BigRational;
+
+ /**
+ * Converts this number to a BigDecimal with the given scale, using rounding if necessary.
+ *
+ * @param int $scale The scale of the resulting `BigDecimal`.
+ * @param RoundingMode $roundingMode An optional rounding mode, defaults to UNNECESSARY.
+ *
+ * @throws RoundingNecessaryException If this number cannot be converted to the given scale without rounding.
+ * This only applies when RoundingMode::UNNECESSARY is used.
+ */
+ abstract public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal;
+
+ /**
+ * Returns the exact value of this number as a native integer.
+ *
+ * If this number cannot be converted to a native integer without losing precision, an exception is thrown.
+ * Note that the acceptable range for an integer depends on the platform and differs for 32-bit and 64-bit.
+ *
+ * @throws MathException If this number cannot be exactly converted to a native integer.
+ */
+ abstract public function toInt() : int;
+
+ /**
+ * Returns an approximation of this number as a floating-point value.
+ *
+ * Note that this method can discard information as the precision of a floating-point value
+ * is inherently limited.
+ *
+ * If the number is greater than the largest representable floating point number, positive infinity is returned.
+ * If the number is less than the smallest representable floating point number, negative infinity is returned.
+ */
+ abstract public function toFloat() : float;
+
+ /**
+ * Returns a string representation of this number.
+ *
+ * The output of this method can be parsed by the `of()` factory method;
+ * this will yield an object equal to this one, without any information loss.
+ */
+ abstract public function __toString() : string;
+
+ #[Override]
+ final public function jsonSerialize() : string
+ {
+ return $this->__toString();
+ }
+}
diff --git a/vendor/brick/math/src/BigRational.php b/vendor/brick/math/src/BigRational.php
new file mode 100644
index 0000000..fc36e55
--- /dev/null
+++ b/vendor/brick/math/src/BigRational.php
@@ -0,0 +1,424 @@
+isZero()) {
+ throw DivisionByZeroException::denominatorMustNotBeZero();
+ }
+
+ if ($denominator->isNegative()) {
+ $numerator = $numerator->negated();
+ $denominator = $denominator->negated();
+ }
+ }
+
+ $this->numerator = $numerator;
+ $this->denominator = $denominator;
+ }
+
+ /**
+ * @psalm-pure
+ */
+ #[Override]
+ protected static function from(BigNumber $number): static
+ {
+ return $number->toBigRational();
+ }
+
+ /**
+ * Creates a BigRational out of a numerator and a denominator.
+ *
+ * If the denominator is negative, the signs of both the numerator and the denominator
+ * will be inverted to ensure that the denominator is always positive.
+ *
+ * @param BigNumber|int|float|string $numerator The numerator. Must be convertible to a BigInteger.
+ * @param BigNumber|int|float|string $denominator The denominator. Must be convertible to a BigInteger.
+ *
+ * @throws NumberFormatException If an argument does not represent a valid number.
+ * @throws RoundingNecessaryException If an argument represents a non-integer number.
+ * @throws DivisionByZeroException If the denominator is zero.
+ *
+ * @psalm-pure
+ */
+ public static function nd(
+ BigNumber|int|float|string $numerator,
+ BigNumber|int|float|string $denominator,
+ ) : BigRational {
+ $numerator = BigInteger::of($numerator);
+ $denominator = BigInteger::of($denominator);
+
+ return new BigRational($numerator, $denominator, true);
+ }
+
+ /**
+ * Returns a BigRational representing zero.
+ *
+ * @psalm-pure
+ */
+ public static function zero() : BigRational
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigRational|null $zero
+ */
+ static $zero;
+
+ if ($zero === null) {
+ $zero = new BigRational(BigInteger::zero(), BigInteger::one(), false);
+ }
+
+ return $zero;
+ }
+
+ /**
+ * Returns a BigRational representing one.
+ *
+ * @psalm-pure
+ */
+ public static function one() : BigRational
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigRational|null $one
+ */
+ static $one;
+
+ if ($one === null) {
+ $one = new BigRational(BigInteger::one(), BigInteger::one(), false);
+ }
+
+ return $one;
+ }
+
+ /**
+ * Returns a BigRational representing ten.
+ *
+ * @psalm-pure
+ */
+ public static function ten() : BigRational
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigRational|null $ten
+ */
+ static $ten;
+
+ if ($ten === null) {
+ $ten = new BigRational(BigInteger::ten(), BigInteger::one(), false);
+ }
+
+ return $ten;
+ }
+
+ public function getNumerator() : BigInteger
+ {
+ return $this->numerator;
+ }
+
+ public function getDenominator() : BigInteger
+ {
+ return $this->denominator;
+ }
+
+ /**
+ * Returns the quotient of the division of the numerator by the denominator.
+ */
+ public function quotient() : BigInteger
+ {
+ return $this->numerator->quotient($this->denominator);
+ }
+
+ /**
+ * Returns the remainder of the division of the numerator by the denominator.
+ */
+ public function remainder() : BigInteger
+ {
+ return $this->numerator->remainder($this->denominator);
+ }
+
+ /**
+ * Returns the quotient and remainder of the division of the numerator by the denominator.
+ *
+ * @return BigInteger[]
+ *
+ * @psalm-return array{BigInteger, BigInteger}
+ */
+ public function quotientAndRemainder() : array
+ {
+ return $this->numerator->quotientAndRemainder($this->denominator);
+ }
+
+ /**
+ * Returns the sum of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The number to add.
+ *
+ * @throws MathException If the number is not valid.
+ */
+ public function plus(BigNumber|int|float|string $that) : BigRational
+ {
+ $that = BigRational::of($that);
+
+ $numerator = $this->numerator->multipliedBy($that->denominator);
+ $numerator = $numerator->plus($that->numerator->multipliedBy($this->denominator));
+ $denominator = $this->denominator->multipliedBy($that->denominator);
+
+ return new BigRational($numerator, $denominator, false);
+ }
+
+ /**
+ * Returns the difference of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The number to subtract.
+ *
+ * @throws MathException If the number is not valid.
+ */
+ public function minus(BigNumber|int|float|string $that) : BigRational
+ {
+ $that = BigRational::of($that);
+
+ $numerator = $this->numerator->multipliedBy($that->denominator);
+ $numerator = $numerator->minus($that->numerator->multipliedBy($this->denominator));
+ $denominator = $this->denominator->multipliedBy($that->denominator);
+
+ return new BigRational($numerator, $denominator, false);
+ }
+
+ /**
+ * Returns the product of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The multiplier.
+ *
+ * @throws MathException If the multiplier is not a valid number.
+ */
+ public function multipliedBy(BigNumber|int|float|string $that) : BigRational
+ {
+ $that = BigRational::of($that);
+
+ $numerator = $this->numerator->multipliedBy($that->numerator);
+ $denominator = $this->denominator->multipliedBy($that->denominator);
+
+ return new BigRational($numerator, $denominator, false);
+ }
+
+ /**
+ * Returns the result of the division of this number by the given one.
+ *
+ * @param BigNumber|int|float|string $that The divisor.
+ *
+ * @throws MathException If the divisor is not a valid number, or is zero.
+ */
+ public function dividedBy(BigNumber|int|float|string $that) : BigRational
+ {
+ $that = BigRational::of($that);
+
+ $numerator = $this->numerator->multipliedBy($that->denominator);
+ $denominator = $this->denominator->multipliedBy($that->numerator);
+
+ return new BigRational($numerator, $denominator, true);
+ }
+
+ /**
+ * Returns this number exponentiated to the given value.
+ *
+ * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000.
+ */
+ public function power(int $exponent) : BigRational
+ {
+ if ($exponent === 0) {
+ $one = BigInteger::one();
+
+ return new BigRational($one, $one, false);
+ }
+
+ if ($exponent === 1) {
+ return $this;
+ }
+
+ return new BigRational(
+ $this->numerator->power($exponent),
+ $this->denominator->power($exponent),
+ false
+ );
+ }
+
+ /**
+ * Returns the reciprocal of this BigRational.
+ *
+ * The reciprocal has the numerator and denominator swapped.
+ *
+ * @throws DivisionByZeroException If the numerator is zero.
+ */
+ public function reciprocal() : BigRational
+ {
+ return new BigRational($this->denominator, $this->numerator, true);
+ }
+
+ /**
+ * Returns the absolute value of this BigRational.
+ */
+ public function abs() : BigRational
+ {
+ return new BigRational($this->numerator->abs(), $this->denominator, false);
+ }
+
+ /**
+ * Returns the negated value of this BigRational.
+ */
+ public function negated() : BigRational
+ {
+ return new BigRational($this->numerator->negated(), $this->denominator, false);
+ }
+
+ /**
+ * Returns the simplified value of this BigRational.
+ */
+ public function simplified() : BigRational
+ {
+ $gcd = $this->numerator->gcd($this->denominator);
+
+ $numerator = $this->numerator->quotient($gcd);
+ $denominator = $this->denominator->quotient($gcd);
+
+ return new BigRational($numerator, $denominator, false);
+ }
+
+ #[Override]
+ public function compareTo(BigNumber|int|float|string $that) : int
+ {
+ return $this->minus($that)->getSign();
+ }
+
+ #[Override]
+ public function getSign() : int
+ {
+ return $this->numerator->getSign();
+ }
+
+ #[Override]
+ public function toBigInteger() : BigInteger
+ {
+ $simplified = $this->simplified();
+
+ if (! $simplified->denominator->isEqualTo(1)) {
+ throw new RoundingNecessaryException('This rational number cannot be represented as an integer value without rounding.');
+ }
+
+ return $simplified->numerator;
+ }
+
+ #[Override]
+ public function toBigDecimal() : BigDecimal
+ {
+ return $this->numerator->toBigDecimal()->exactlyDividedBy($this->denominator);
+ }
+
+ #[Override]
+ public function toBigRational() : BigRational
+ {
+ return $this;
+ }
+
+ #[Override]
+ public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ {
+ return $this->numerator->toBigDecimal()->dividedBy($this->denominator, $scale, $roundingMode);
+ }
+
+ #[Override]
+ public function toInt() : int
+ {
+ return $this->toBigInteger()->toInt();
+ }
+
+ #[Override]
+ public function toFloat() : float
+ {
+ $simplified = $this->simplified();
+ return $simplified->numerator->toFloat() / $simplified->denominator->toFloat();
+ }
+
+ #[Override]
+ public function __toString() : string
+ {
+ $numerator = (string) $this->numerator;
+ $denominator = (string) $this->denominator;
+
+ if ($denominator === '1') {
+ return $numerator;
+ }
+
+ return $numerator . '/' . $denominator;
+ }
+
+ /**
+ * This method is required for serializing the object and SHOULD NOT be accessed directly.
+ *
+ * @internal
+ *
+ * @return array{numerator: BigInteger, denominator: BigInteger}
+ */
+ public function __serialize(): array
+ {
+ return ['numerator' => $this->numerator, 'denominator' => $this->denominator];
+ }
+
+ /**
+ * This method is only here to allow unserializing the object and cannot be accessed directly.
+ *
+ * @internal
+ * @psalm-suppress RedundantPropertyInitializationCheck
+ *
+ * @param array{numerator: BigInteger, denominator: BigInteger} $data
+ *
+ * @throws \LogicException
+ */
+ public function __unserialize(array $data): void
+ {
+ if (isset($this->numerator)) {
+ throw new \LogicException('__unserialize() is an internal function, it must not be called directly.');
+ }
+
+ $this->numerator = $data['numerator'];
+ $this->denominator = $data['denominator'];
+ }
+}
diff --git a/vendor/brick/math/src/Exception/DivisionByZeroException.php b/vendor/brick/math/src/Exception/DivisionByZeroException.php
new file mode 100644
index 0000000..ce7769a
--- /dev/null
+++ b/vendor/brick/math/src/Exception/DivisionByZeroException.php
@@ -0,0 +1,35 @@
+ 126) {
+ $char = \strtoupper(\dechex($ord));
+
+ if ($ord < 10) {
+ $char = '0' . $char;
+ }
+ } else {
+ $char = '"' . $char . '"';
+ }
+
+ return new self(\sprintf('Char %s is not a valid character in the given alphabet.', $char));
+ }
+}
diff --git a/vendor/brick/math/src/Exception/RoundingNecessaryException.php b/vendor/brick/math/src/Exception/RoundingNecessaryException.php
new file mode 100644
index 0000000..57bfcd8
--- /dev/null
+++ b/vendor/brick/math/src/Exception/RoundingNecessaryException.php
@@ -0,0 +1,19 @@
+init($a, $b);
+
+ if ($aNeg && ! $bNeg) {
+ return -1;
+ }
+
+ if ($bNeg && ! $aNeg) {
+ return 1;
+ }
+
+ $aLen = \strlen($aDig);
+ $bLen = \strlen($bDig);
+
+ if ($aLen < $bLen) {
+ $result = -1;
+ } elseif ($aLen > $bLen) {
+ $result = 1;
+ } else {
+ $result = $aDig <=> $bDig;
+ }
+
+ return $aNeg ? -$result : $result;
+ }
+
+ /**
+ * Adds two numbers.
+ */
+ abstract public function add(string $a, string $b) : string;
+
+ /**
+ * Subtracts two numbers.
+ */
+ abstract public function sub(string $a, string $b) : string;
+
+ /**
+ * Multiplies two numbers.
+ */
+ abstract public function mul(string $a, string $b) : string;
+
+ /**
+ * Returns the quotient of the division of two numbers.
+ *
+ * @param string $a The dividend.
+ * @param string $b The divisor, must not be zero.
+ *
+ * @return string The quotient.
+ */
+ abstract public function divQ(string $a, string $b) : string;
+
+ /**
+ * Returns the remainder of the division of two numbers.
+ *
+ * @param string $a The dividend.
+ * @param string $b The divisor, must not be zero.
+ *
+ * @return string The remainder.
+ */
+ abstract public function divR(string $a, string $b) : string;
+
+ /**
+ * Returns the quotient and remainder of the division of two numbers.
+ *
+ * @param string $a The dividend.
+ * @param string $b The divisor, must not be zero.
+ *
+ * @return array{string, string} An array containing the quotient and remainder.
+ */
+ abstract public function divQR(string $a, string $b) : array;
+
+ /**
+ * Exponentiates a number.
+ *
+ * @param string $a The base number.
+ * @param int $e The exponent, validated as an integer between 0 and MAX_POWER.
+ *
+ * @return string The power.
+ */
+ abstract public function pow(string $a, int $e) : string;
+
+ /**
+ * @param string $b The modulus; must not be zero.
+ */
+ public function mod(string $a, string $b) : string
+ {
+ return $this->divR($this->add($this->divR($a, $b), $b), $b);
+ }
+
+ /**
+ * Returns the modular multiplicative inverse of $x modulo $m.
+ *
+ * If $x has no multiplicative inverse mod m, this method must return null.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library has built-in support.
+ *
+ * @param string $m The modulus; must not be negative or zero.
+ */
+ public function modInverse(string $x, string $m) : ?string
+ {
+ if ($m === '1') {
+ return '0';
+ }
+
+ $modVal = $x;
+
+ if ($x[0] === '-' || ($this->cmp($this->abs($x), $m) >= 0)) {
+ $modVal = $this->mod($x, $m);
+ }
+
+ [$g, $x] = $this->gcdExtended($modVal, $m);
+
+ if ($g !== '1') {
+ return null;
+ }
+
+ return $this->mod($this->add($this->mod($x, $m), $m), $m);
+ }
+
+ /**
+ * Raises a number into power with modulo.
+ *
+ * @param string $base The base number; must be positive or zero.
+ * @param string $exp The exponent; must be positive or zero.
+ * @param string $mod The modulus; must be strictly positive.
+ */
+ abstract public function modPow(string $base, string $exp, string $mod) : string;
+
+ /**
+ * Returns the greatest common divisor of the two numbers.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for GCD calculations.
+ *
+ * @return string The GCD, always positive, or zero if both arguments are zero.
+ */
+ public function gcd(string $a, string $b) : string
+ {
+ if ($a === '0') {
+ return $this->abs($b);
+ }
+
+ if ($b === '0') {
+ return $this->abs($a);
+ }
+
+ return $this->gcd($b, $this->divR($a, $b));
+ }
+
+ /**
+ * @return array{string, string, string} GCD, X, Y
+ */
+ private function gcdExtended(string $a, string $b) : array
+ {
+ if ($a === '0') {
+ return [$b, '0', '1'];
+ }
+
+ [$gcd, $x1, $y1] = $this->gcdExtended($this->mod($b, $a), $a);
+
+ $x = $this->sub($y1, $this->mul($this->divQ($b, $a), $x1));
+ $y = $x1;
+
+ return [$gcd, $x, $y];
+ }
+
+ /**
+ * Returns the square root of the given number, rounded down.
+ *
+ * The result is the largest x such that x² ≤ n.
+ * The input MUST NOT be negative.
+ */
+ abstract public function sqrt(string $n) : string;
+
+ /**
+ * Converts a number from an arbitrary base.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for base conversion.
+ *
+ * @param string $number The number, positive or zero, non-empty, case-insensitively validated for the given base.
+ * @param int $base The base of the number, validated from 2 to 36.
+ *
+ * @return string The converted number, following the Calculator conventions.
+ */
+ public function fromBase(string $number, int $base) : string
+ {
+ return $this->fromArbitraryBase(\strtolower($number), self::ALPHABET, $base);
+ }
+
+ /**
+ * Converts a number to an arbitrary base.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for base conversion.
+ *
+ * @param string $number The number to convert, following the Calculator conventions.
+ * @param int $base The base to convert to, validated from 2 to 36.
+ *
+ * @return string The converted number, lowercase.
+ */
+ public function toBase(string $number, int $base) : string
+ {
+ $negative = ($number[0] === '-');
+
+ if ($negative) {
+ $number = \substr($number, 1);
+ }
+
+ $number = $this->toArbitraryBase($number, self::ALPHABET, $base);
+
+ if ($negative) {
+ return '-' . $number;
+ }
+
+ return $number;
+ }
+
+ /**
+ * Converts a non-negative number in an arbitrary base using a custom alphabet, to base 10.
+ *
+ * @param string $number The number to convert, validated as a non-empty string,
+ * containing only chars in the given alphabet/base.
+ * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum.
+ * @param int $base The base of the number, validated from 2 to alphabet length.
+ *
+ * @return string The number in base 10, following the Calculator conventions.
+ */
+ final public function fromArbitraryBase(string $number, string $alphabet, int $base) : string
+ {
+ // remove leading "zeros"
+ $number = \ltrim($number, $alphabet[0]);
+
+ if ($number === '') {
+ return '0';
+ }
+
+ // optimize for "one"
+ if ($number === $alphabet[1]) {
+ return '1';
+ }
+
+ $result = '0';
+ $power = '1';
+
+ $base = (string) $base;
+
+ for ($i = \strlen($number) - 1; $i >= 0; $i--) {
+ $index = \strpos($alphabet, $number[$i]);
+
+ if ($index !== 0) {
+ $result = $this->add($result, ($index === 1)
+ ? $power
+ : $this->mul($power, (string) $index)
+ );
+ }
+
+ if ($i !== 0) {
+ $power = $this->mul($power, $base);
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Converts a non-negative number to an arbitrary base using a custom alphabet.
+ *
+ * @param string $number The number to convert, positive or zero, following the Calculator conventions.
+ * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum.
+ * @param int $base The base to convert to, validated from 2 to alphabet length.
+ *
+ * @return string The converted number in the given alphabet.
+ */
+ final public function toArbitraryBase(string $number, string $alphabet, int $base) : string
+ {
+ if ($number === '0') {
+ return $alphabet[0];
+ }
+
+ $base = (string) $base;
+ $result = '';
+
+ while ($number !== '0') {
+ [$number, $remainder] = $this->divQR($number, $base);
+ $remainder = (int) $remainder;
+
+ $result .= $alphabet[$remainder];
+ }
+
+ return \strrev($result);
+ }
+
+ /**
+ * Performs a rounded division.
+ *
+ * Rounding is performed when the remainder of the division is not zero.
+ *
+ * @param string $a The dividend.
+ * @param string $b The divisor, must not be zero.
+ * @param RoundingMode $roundingMode The rounding mode.
+ *
+ * @throws \InvalidArgumentException If the rounding mode is invalid.
+ * @throws RoundingNecessaryException If RoundingMode::UNNECESSARY is provided but rounding is necessary.
+ *
+ * @psalm-suppress ImpureFunctionCall
+ */
+ final public function divRound(string $a, string $b, RoundingMode $roundingMode) : string
+ {
+ [$quotient, $remainder] = $this->divQR($a, $b);
+
+ $hasDiscardedFraction = ($remainder !== '0');
+ $isPositiveOrZero = ($a[0] === '-') === ($b[0] === '-');
+
+ $discardedFractionSign = function() use ($remainder, $b) : int {
+ $r = $this->abs($this->mul($remainder, '2'));
+ $b = $this->abs($b);
+
+ return $this->cmp($r, $b);
+ };
+
+ $increment = false;
+
+ switch ($roundingMode) {
+ case RoundingMode::UNNECESSARY:
+ if ($hasDiscardedFraction) {
+ throw RoundingNecessaryException::roundingNecessary();
+ }
+ break;
+
+ case RoundingMode::UP:
+ $increment = $hasDiscardedFraction;
+ break;
+
+ case RoundingMode::DOWN:
+ break;
+
+ case RoundingMode::CEILING:
+ $increment = $hasDiscardedFraction && $isPositiveOrZero;
+ break;
+
+ case RoundingMode::FLOOR:
+ $increment = $hasDiscardedFraction && ! $isPositiveOrZero;
+ break;
+
+ case RoundingMode::HALF_UP:
+ $increment = $discardedFractionSign() >= 0;
+ break;
+
+ case RoundingMode::HALF_DOWN:
+ $increment = $discardedFractionSign() > 0;
+ break;
+
+ case RoundingMode::HALF_CEILING:
+ $increment = $isPositiveOrZero ? $discardedFractionSign() >= 0 : $discardedFractionSign() > 0;
+ break;
+
+ case RoundingMode::HALF_FLOOR:
+ $increment = $isPositiveOrZero ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0;
+ break;
+
+ case RoundingMode::HALF_EVEN:
+ $lastDigit = (int) $quotient[-1];
+ $lastDigitIsEven = ($lastDigit % 2 === 0);
+ $increment = $lastDigitIsEven ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0;
+ break;
+
+ default:
+ throw new \InvalidArgumentException('Invalid rounding mode.');
+ }
+
+ if ($increment) {
+ return $this->add($quotient, $isPositiveOrZero ? '1' : '-1');
+ }
+
+ return $quotient;
+ }
+
+ /**
+ * Calculates bitwise AND of two numbers.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for bitwise operations.
+ */
+ public function and(string $a, string $b) : string
+ {
+ return $this->bitwise('and', $a, $b);
+ }
+
+ /**
+ * Calculates bitwise OR of two numbers.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for bitwise operations.
+ */
+ public function or(string $a, string $b) : string
+ {
+ return $this->bitwise('or', $a, $b);
+ }
+
+ /**
+ * Calculates bitwise XOR of two numbers.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for bitwise operations.
+ */
+ public function xor(string $a, string $b) : string
+ {
+ return $this->bitwise('xor', $a, $b);
+ }
+
+ /**
+ * Performs a bitwise operation on a decimal number.
+ *
+ * @param 'and'|'or'|'xor' $operator The operator to use.
+ * @param string $a The left operand.
+ * @param string $b The right operand.
+ */
+ private function bitwise(string $operator, string $a, string $b) : string
+ {
+ [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b);
+
+ $aBin = $this->toBinary($aDig);
+ $bBin = $this->toBinary($bDig);
+
+ $aLen = \strlen($aBin);
+ $bLen = \strlen($bBin);
+
+ if ($aLen > $bLen) {
+ $bBin = \str_repeat("\x00", $aLen - $bLen) . $bBin;
+ } elseif ($bLen > $aLen) {
+ $aBin = \str_repeat("\x00", $bLen - $aLen) . $aBin;
+ }
+
+ if ($aNeg) {
+ $aBin = $this->twosComplement($aBin);
+ }
+ if ($bNeg) {
+ $bBin = $this->twosComplement($bBin);
+ }
+
+ $value = match ($operator) {
+ 'and' => $aBin & $bBin,
+ 'or' => $aBin | $bBin,
+ 'xor' => $aBin ^ $bBin,
+ };
+
+ $negative = match ($operator) {
+ 'and' => $aNeg and $bNeg,
+ 'or' => $aNeg or $bNeg,
+ 'xor' => $aNeg xor $bNeg,
+ };
+
+ if ($negative) {
+ $value = $this->twosComplement($value);
+ }
+
+ $result = $this->toDecimal($value);
+
+ return $negative ? $this->neg($result) : $result;
+ }
+
+ /**
+ * @param string $number A positive, binary number.
+ */
+ private function twosComplement(string $number) : string
+ {
+ $xor = \str_repeat("\xff", \strlen($number));
+
+ $number ^= $xor;
+
+ for ($i = \strlen($number) - 1; $i >= 0; $i--) {
+ $byte = \ord($number[$i]);
+
+ if (++$byte !== 256) {
+ $number[$i] = \chr($byte);
+ break;
+ }
+
+ $number[$i] = "\x00";
+
+ if ($i === 0) {
+ $number = "\x01" . $number;
+ }
+ }
+
+ return $number;
+ }
+
+ /**
+ * Converts a decimal number to a binary string.
+ *
+ * @param string $number The number to convert, positive or zero, only digits.
+ */
+ private function toBinary(string $number) : string
+ {
+ $result = '';
+
+ while ($number !== '0') {
+ [$number, $remainder] = $this->divQR($number, '256');
+ $result .= \chr((int) $remainder);
+ }
+
+ return \strrev($result);
+ }
+
+ /**
+ * Returns the positive decimal representation of a binary number.
+ *
+ * @param string $bytes The bytes representing the number.
+ */
+ private function toDecimal(string $bytes) : string
+ {
+ $result = '0';
+ $power = '1';
+
+ for ($i = \strlen($bytes) - 1; $i >= 0; $i--) {
+ $index = \ord($bytes[$i]);
+
+ if ($index !== 0) {
+ $result = $this->add($result, ($index === 1)
+ ? $power
+ : $this->mul($power, (string) $index)
+ );
+ }
+
+ if ($i !== 0) {
+ $power = $this->mul($power, '256');
+ }
+ }
+
+ return $result;
+ }
+}
diff --git a/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php b/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php
new file mode 100644
index 0000000..93a27ff
--- /dev/null
+++ b/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php
@@ -0,0 +1,75 @@
+maxDigits = match (PHP_INT_SIZE) {
+ 4 => 9,
+ 8 => 18,
+ default => throw new \RuntimeException('The platform is not 32-bit or 64-bit as expected.')
+ };
+ }
+
+ #[Override]
+ public function add(string $a, string $b) : string
+ {
+ /**
+ * @psalm-var numeric-string $a
+ * @psalm-var numeric-string $b
+ */
+ $result = $a + $b;
+
+ if (is_int($result)) {
+ return (string) $result;
+ }
+
+ if ($a === '0') {
+ return $b;
+ }
+
+ if ($b === '0') {
+ return $a;
+ }
+
+ [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b);
+
+ $result = $aNeg === $bNeg ? $this->doAdd($aDig, $bDig) : $this->doSub($aDig, $bDig);
+
+ if ($aNeg) {
+ $result = $this->neg($result);
+ }
+
+ return $result;
+ }
+
+ #[Override]
+ public function sub(string $a, string $b) : string
+ {
+ return $this->add($a, $this->neg($b));
+ }
+
+ #[Override]
+ public function mul(string $a, string $b) : string
+ {
+ /**
+ * @psalm-var numeric-string $a
+ * @psalm-var numeric-string $b
+ */
+ $result = $a * $b;
+
+ if (is_int($result)) {
+ return (string) $result;
+ }
+
+ if ($a === '0' || $b === '0') {
+ return '0';
+ }
+
+ if ($a === '1') {
+ return $b;
+ }
+
+ if ($b === '1') {
+ return $a;
+ }
+
+ if ($a === '-1') {
+ return $this->neg($b);
+ }
+
+ if ($b === '-1') {
+ return $this->neg($a);
+ }
+
+ [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b);
+
+ $result = $this->doMul($aDig, $bDig);
+
+ if ($aNeg !== $bNeg) {
+ $result = $this->neg($result);
+ }
+
+ return $result;
+ }
+
+ #[Override]
+ public function divQ(string $a, string $b) : string
+ {
+ return $this->divQR($a, $b)[0];
+ }
+
+ #[Override]
+ public function divR(string $a, string $b): string
+ {
+ return $this->divQR($a, $b)[1];
+ }
+
+ #[Override]
+ public function divQR(string $a, string $b) : array
+ {
+ if ($a === '0') {
+ return ['0', '0'];
+ }
+
+ if ($a === $b) {
+ return ['1', '0'];
+ }
+
+ if ($b === '1') {
+ return [$a, '0'];
+ }
+
+ if ($b === '-1') {
+ return [$this->neg($a), '0'];
+ }
+
+ /** @psalm-var numeric-string $a */
+ $na = $a * 1; // cast to number
+
+ if (is_int($na)) {
+ /** @psalm-var numeric-string $b */
+ $nb = $b * 1;
+
+ if (is_int($nb)) {
+ // the only division that may overflow is PHP_INT_MIN / -1,
+ // which cannot happen here as we've already handled a divisor of -1 above.
+ $q = intdiv($na, $nb);
+ $r = $na % $nb;
+
+ return [
+ (string) $q,
+ (string) $r
+ ];
+ }
+ }
+
+ [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b);
+
+ [$q, $r] = $this->doDiv($aDig, $bDig);
+
+ if ($aNeg !== $bNeg) {
+ $q = $this->neg($q);
+ }
+
+ if ($aNeg) {
+ $r = $this->neg($r);
+ }
+
+ return [$q, $r];
+ }
+
+ #[Override]
+ public function pow(string $a, int $e) : string
+ {
+ if ($e === 0) {
+ return '1';
+ }
+
+ if ($e === 1) {
+ return $a;
+ }
+
+ $odd = $e % 2;
+ $e -= $odd;
+
+ $aa = $this->mul($a, $a);
+
+ /** @psalm-suppress PossiblyInvalidArgument We're sure that $e / 2 is an int now */
+ $result = $this->pow($aa, $e / 2);
+
+ if ($odd === 1) {
+ $result = $this->mul($result, $a);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Algorithm from: https://www.geeksforgeeks.org/modular-exponentiation-power-in-modular-arithmetic/
+ */
+ #[Override]
+ public function modPow(string $base, string $exp, string $mod) : string
+ {
+ // special case: the algorithm below fails with 0 power 0 mod 1 (returns 1 instead of 0)
+ if ($base === '0' && $exp === '0' && $mod === '1') {
+ return '0';
+ }
+
+ // special case: the algorithm below fails with power 0 mod 1 (returns 1 instead of 0)
+ if ($exp === '0' && $mod === '1') {
+ return '0';
+ }
+
+ $x = $base;
+
+ $res = '1';
+
+ // numbers are positive, so we can use remainder instead of modulo
+ $x = $this->divR($x, $mod);
+
+ while ($exp !== '0') {
+ if (in_array($exp[-1], ['1', '3', '5', '7', '9'])) { // odd
+ $res = $this->divR($this->mul($res, $x), $mod);
+ }
+
+ $exp = $this->divQ($exp, '2');
+ $x = $this->divR($this->mul($x, $x), $mod);
+ }
+
+ return $res;
+ }
+
+ /**
+ * Adapted from https://cp-algorithms.com/num_methods/roots_newton.html
+ */
+ #[Override]
+ public function sqrt(string $n) : string
+ {
+ if ($n === '0') {
+ return '0';
+ }
+
+ // initial approximation
+ $x = \str_repeat('9', \intdiv(\strlen($n), 2) ?: 1);
+
+ $decreased = false;
+
+ for (;;) {
+ $nx = $this->divQ($this->add($x, $this->divQ($n, $x)), '2');
+
+ if ($x === $nx || $this->cmp($nx, $x) > 0 && $decreased) {
+ break;
+ }
+
+ $decreased = $this->cmp($nx, $x) < 0;
+ $x = $nx;
+ }
+
+ return $x;
+ }
+
+ /**
+ * Performs the addition of two non-signed large integers.
+ */
+ private function doAdd(string $a, string $b) : string
+ {
+ [$a, $b, $length] = $this->pad($a, $b);
+
+ $carry = 0;
+ $result = '';
+
+ for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) {
+ $blockLength = $this->maxDigits;
+
+ if ($i < 0) {
+ $blockLength += $i;
+ /** @psalm-suppress LoopInvalidation */
+ $i = 0;
+ }
+
+ /** @psalm-var numeric-string $blockA */
+ $blockA = \substr($a, $i, $blockLength);
+
+ /** @psalm-var numeric-string $blockB */
+ $blockB = \substr($b, $i, $blockLength);
+
+ $sum = (string) ($blockA + $blockB + $carry);
+ $sumLength = \strlen($sum);
+
+ if ($sumLength > $blockLength) {
+ $sum = \substr($sum, 1);
+ $carry = 1;
+ } else {
+ if ($sumLength < $blockLength) {
+ $sum = \str_repeat('0', $blockLength - $sumLength) . $sum;
+ }
+ $carry = 0;
+ }
+
+ $result = $sum . $result;
+
+ if ($i === 0) {
+ break;
+ }
+ }
+
+ if ($carry === 1) {
+ $result = '1' . $result;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Performs the subtraction of two non-signed large integers.
+ */
+ private function doSub(string $a, string $b) : string
+ {
+ if ($a === $b) {
+ return '0';
+ }
+
+ // Ensure that we always subtract to a positive result: biggest minus smallest.
+ $cmp = $this->doCmp($a, $b);
+
+ $invert = ($cmp === -1);
+
+ if ($invert) {
+ $c = $a;
+ $a = $b;
+ $b = $c;
+ }
+
+ [$a, $b, $length] = $this->pad($a, $b);
+
+ $carry = 0;
+ $result = '';
+
+ $complement = 10 ** $this->maxDigits;
+
+ for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) {
+ $blockLength = $this->maxDigits;
+
+ if ($i < 0) {
+ $blockLength += $i;
+ /** @psalm-suppress LoopInvalidation */
+ $i = 0;
+ }
+
+ /** @psalm-var numeric-string $blockA */
+ $blockA = \substr($a, $i, $blockLength);
+
+ /** @psalm-var numeric-string $blockB */
+ $blockB = \substr($b, $i, $blockLength);
+
+ $sum = $blockA - $blockB - $carry;
+
+ if ($sum < 0) {
+ $sum += $complement;
+ $carry = 1;
+ } else {
+ $carry = 0;
+ }
+
+ $sum = (string) $sum;
+ $sumLength = \strlen($sum);
+
+ if ($sumLength < $blockLength) {
+ $sum = \str_repeat('0', $blockLength - $sumLength) . $sum;
+ }
+
+ $result = $sum . $result;
+
+ if ($i === 0) {
+ break;
+ }
+ }
+
+ // Carry cannot be 1 when the loop ends, as a > b
+ assert($carry === 0);
+
+ $result = \ltrim($result, '0');
+
+ if ($invert) {
+ $result = $this->neg($result);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Performs the multiplication of two non-signed large integers.
+ */
+ private function doMul(string $a, string $b) : string
+ {
+ $x = \strlen($a);
+ $y = \strlen($b);
+
+ $maxDigits = \intdiv($this->maxDigits, 2);
+ $complement = 10 ** $maxDigits;
+
+ $result = '0';
+
+ for ($i = $x - $maxDigits;; $i -= $maxDigits) {
+ $blockALength = $maxDigits;
+
+ if ($i < 0) {
+ $blockALength += $i;
+ /** @psalm-suppress LoopInvalidation */
+ $i = 0;
+ }
+
+ $blockA = (int) \substr($a, $i, $blockALength);
+
+ $line = '';
+ $carry = 0;
+
+ for ($j = $y - $maxDigits;; $j -= $maxDigits) {
+ $blockBLength = $maxDigits;
+
+ if ($j < 0) {
+ $blockBLength += $j;
+ /** @psalm-suppress LoopInvalidation */
+ $j = 0;
+ }
+
+ $blockB = (int) \substr($b, $j, $blockBLength);
+
+ $mul = $blockA * $blockB + $carry;
+ $value = $mul % $complement;
+ $carry = ($mul - $value) / $complement;
+
+ $value = (string) $value;
+ $value = \str_pad($value, $maxDigits, '0', STR_PAD_LEFT);
+
+ $line = $value . $line;
+
+ if ($j === 0) {
+ break;
+ }
+ }
+
+ if ($carry !== 0) {
+ $line = $carry . $line;
+ }
+
+ $line = \ltrim($line, '0');
+
+ if ($line !== '') {
+ $line .= \str_repeat('0', $x - $blockALength - $i);
+ $result = $this->add($result, $line);
+ }
+
+ if ($i === 0) {
+ break;
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Performs the division of two non-signed large integers.
+ *
+ * @return string[] The quotient and remainder.
+ */
+ private function doDiv(string $a, string $b) : array
+ {
+ $cmp = $this->doCmp($a, $b);
+
+ if ($cmp === -1) {
+ return ['0', $a];
+ }
+
+ $x = \strlen($a);
+ $y = \strlen($b);
+
+ // we now know that a >= b && x >= y
+
+ $q = '0'; // quotient
+ $r = $a; // remainder
+ $z = $y; // focus length, always $y or $y+1
+
+ /** @psalm-var numeric-string $b */
+ $nb = $b * 1; // cast to number
+ // performance optimization in cases where the remainder will never cause int overflow
+ if (is_int(($nb - 1) * 10 + 9)) {
+ $r = (int) \substr($a, 0, $z - 1);
+
+ for ($i = $z - 1; $i < $x; $i++) {
+ $n = $r * 10 + (int) $a[$i];
+ /** @psalm-var int $nb */
+ $q .= \intdiv($n, $nb);
+ $r = $n % $nb;
+ }
+
+ return [\ltrim($q, '0') ?: '0', (string) $r];
+ }
+
+ for (;;) {
+ $focus = \substr($a, 0, $z);
+
+ $cmp = $this->doCmp($focus, $b);
+
+ if ($cmp === -1) {
+ if ($z === $x) { // remainder < dividend
+ break;
+ }
+
+ $z++;
+ }
+
+ $zeros = \str_repeat('0', $x - $z);
+
+ $q = $this->add($q, '1' . $zeros);
+ $a = $this->sub($a, $b . $zeros);
+
+ $r = $a;
+
+ if ($r === '0') { // remainder == 0
+ break;
+ }
+
+ $x = \strlen($a);
+
+ if ($x < $y) { // remainder < dividend
+ break;
+ }
+
+ $z = $y;
+ }
+
+ return [$q, $r];
+ }
+
+ /**
+ * Compares two non-signed large numbers.
+ *
+ * @psalm-return -1|0|1
+ */
+ private function doCmp(string $a, string $b) : int
+ {
+ $x = \strlen($a);
+ $y = \strlen($b);
+
+ $cmp = $x <=> $y;
+
+ if ($cmp !== 0) {
+ return $cmp;
+ }
+
+ return \strcmp($a, $b) <=> 0; // enforce -1|0|1
+ }
+
+ /**
+ * Pads the left of one of the given numbers with zeros if necessary to make both numbers the same length.
+ *
+ * The numbers must only consist of digits, without leading minus sign.
+ *
+ * @return array{string, string, int}
+ */
+ private function pad(string $a, string $b) : array
+ {
+ $x = \strlen($a);
+ $y = \strlen($b);
+
+ if ($x > $y) {
+ $b = \str_repeat('0', $x - $y) . $b;
+
+ return [$a, $b, $x];
+ }
+
+ if ($x < $y) {
+ $a = \str_repeat('0', $y - $x) . $a;
+
+ return [$a, $b, $y];
+ }
+
+ return [$a, $b, $x];
+ }
+}
diff --git a/vendor/brick/math/src/RoundingMode.php b/vendor/brick/math/src/RoundingMode.php
new file mode 100644
index 0000000..e8ee6a8
--- /dev/null
+++ b/vendor/brick/math/src/RoundingMode.php
@@ -0,0 +1,98 @@
+= 0.5; otherwise, behaves as for DOWN.
+ * Note that this is the rounding mode commonly taught at school.
+ */
+ case HALF_UP;
+
+ /**
+ * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round down.
+ *
+ * Behaves as for UP if the discarded fraction is > 0.5; otherwise, behaves as for DOWN.
+ */
+ case HALF_DOWN;
+
+ /**
+ * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards positive infinity.
+ *
+ * If the result is positive, behaves as for HALF_UP; if negative, behaves as for HALF_DOWN.
+ */
+ case HALF_CEILING;
+
+ /**
+ * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards negative infinity.
+ *
+ * If the result is positive, behaves as for HALF_DOWN; if negative, behaves as for HALF_UP.
+ */
+ case HALF_FLOOR;
+
+ /**
+ * Rounds towards the "nearest neighbor" unless both neighbors are equidistant, in which case rounds towards the even neighbor.
+ *
+ * Behaves as for HALF_UP if the digit to the left of the discarded fraction is odd;
+ * behaves as for HALF_DOWN if it's even.
+ *
+ * Note that this is the rounding mode that statistically minimizes
+ * cumulative error when applied repeatedly over a sequence of calculations.
+ * It is sometimes known as "Banker's rounding", and is chiefly used in the USA.
+ */
+ case HALF_EVEN;
+}
diff --git a/vendor/carbonphp/carbon-doctrine-types/LICENSE b/vendor/carbonphp/carbon-doctrine-types/LICENSE
new file mode 100644
index 0000000..2ee1671
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 Carbon
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/carbonphp/carbon-doctrine-types/README.md b/vendor/carbonphp/carbon-doctrine-types/README.md
new file mode 100644
index 0000000..5a18121
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/README.md
@@ -0,0 +1,14 @@
+# carbonphp/carbon-doctrine-types
+
+Types to use Carbon in Doctrine
+
+## Documentation
+
+[Check how to use in the official Carbon documentation](https://carbon.nesbot.com/symfony/)
+
+This package is an externalization of [src/Carbon/Doctrine](https://github.com/briannesbitt/Carbon/tree/2.71.0/src/Carbon/Doctrine)
+from `nestbot/carbon` package.
+
+Externalization allows to better deal with different versions of dbal. With
+version 4.0 of dbal, it no longer sustainable to be compatible with all version
+using a single code.
diff --git a/vendor/carbonphp/carbon-doctrine-types/composer.json b/vendor/carbonphp/carbon-doctrine-types/composer.json
new file mode 100644
index 0000000..abf45c5
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/composer.json
@@ -0,0 +1,36 @@
+{
+ "name": "carbonphp/carbon-doctrine-types",
+ "description": "Types to use Carbon in Doctrine",
+ "type": "library",
+ "keywords": [
+ "date",
+ "time",
+ "DateTime",
+ "Carbon",
+ "Doctrine"
+ ],
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^4.0.0",
+ "nesbot/carbon": "^2.71.0 || ^3.0.0",
+ "phpunit/phpunit": "^10.3"
+ },
+ "conflict": {
+ "doctrine/dbal": "<4.0.0 || >=5.0.0"
+ },
+ "license": "MIT",
+ "autoload": {
+ "psr-4": {
+ "Carbon\\Doctrine\\": "src/Carbon/Doctrine/"
+ }
+ },
+ "authors": [
+ {
+ "name": "KyleKatarn",
+ "email": "kylekatarnls@gmail.com"
+ }
+ ],
+ "minimum-stability": "dev"
+}
diff --git a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php
new file mode 100644
index 0000000..a63a9b8
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php
@@ -0,0 +1,16 @@
+
+ */
+ protected function getCarbonClassName(): string
+ {
+ return Carbon::class;
+ }
+
+ public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
+ {
+ $precision = min(
+ $fieldDeclaration['precision'] ?? DateTimeDefaultPrecision::get(),
+ $this->getMaximumPrecision($platform),
+ );
+
+ $type = parent::getSQLDeclaration($fieldDeclaration, $platform);
+
+ if (!$precision) {
+ return $type;
+ }
+
+ if (str_contains($type, '(')) {
+ return preg_replace('/\(\d+\)/', "($precision)", $type);
+ }
+
+ [$before, $after] = explode(' ', "$type ");
+
+ return trim("$before($precision) $after");
+ }
+
+ /**
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string
+ {
+ if ($value === null) {
+ return $value;
+ }
+
+ if ($value instanceof DateTimeInterface) {
+ return $value->format('Y-m-d H:i:s.u');
+ }
+
+ throw InvalidType::new(
+ $value,
+ static::class,
+ ['null', 'DateTime', 'Carbon']
+ );
+ }
+
+ private function doConvertToPHPValue(mixed $value)
+ {
+ $class = $this->getCarbonClassName();
+
+ if ($value === null || is_a($value, $class)) {
+ return $value;
+ }
+
+ if ($value instanceof DateTimeInterface) {
+ return $class::instance($value);
+ }
+
+ $date = null;
+ $error = null;
+
+ try {
+ $date = $class::parse($value);
+ } catch (Exception $exception) {
+ $error = $exception;
+ }
+
+ if (!$date) {
+ throw ValueNotConvertible::new(
+ $value,
+ static::class,
+ 'Y-m-d H:i:s.u or any format supported by '.$class.'::parse()',
+ $error
+ );
+ }
+
+ return $date;
+ }
+
+ private function getMaximumPrecision(AbstractPlatform $platform): int
+ {
+ if ($platform instanceof DB2Platform) {
+ return 12;
+ }
+
+ if ($platform instanceof OraclePlatform) {
+ return 9;
+ }
+
+ if ($platform instanceof SQLServerPlatform || $platform instanceof SQLitePlatform) {
+ return 3;
+ }
+
+ return 6;
+ }
+}
diff --git a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php
new file mode 100644
index 0000000..cd9896f
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php
@@ -0,0 +1,30 @@
+ */
+ use CarbonTypeConverter;
+
+ /**
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function convertToPHPValue(mixed $value, AbstractPlatform $platform): ?CarbonImmutable
+ {
+ return $this->doConvertToPHPValue($value);
+ }
+
+ /**
+ * @return class-string
+ */
+ protected function getCarbonClassName(): string
+ {
+ return CarbonImmutable::class;
+ }
+}
diff --git a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php
new file mode 100644
index 0000000..89e4b79
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php
@@ -0,0 +1,24 @@
+ */
+ use CarbonTypeConverter;
+
+ /**
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function convertToPHPValue(mixed $value, AbstractPlatform $platform): ?Carbon
+ {
+ return $this->doConvertToPHPValue($value);
+ }
+}
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
new file mode 100644
index 0000000..7824d8f
--- /dev/null
+++ b/vendor/composer/ClassLoader.php
@@ -0,0 +1,579 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
+ *
+ * $loader = new \Composer\Autoload\ClassLoader();
+ *
+ * // register classes with namespaces
+ * $loader->add('Symfony\Component', __DIR__.'/component');
+ * $loader->add('Symfony', __DIR__.'/framework');
+ *
+ * // activate the autoloader
+ * $loader->register();
+ *
+ * // to enable searching the include path (eg. for PEAR packages)
+ * $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier
+ * @author Jordi Boggiano
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
+ */
+class ClassLoader
+{
+ /** @var \Closure(string):void */
+ private static $includeFile;
+
+ /** @var string|null */
+ private $vendorDir;
+
+ // PSR-4
+ /**
+ * @var array>
+ */
+ private $prefixLengthsPsr4 = array();
+ /**
+ * @var array>
+ */
+ private $prefixDirsPsr4 = array();
+ /**
+ * @var list
+ */
+ private $fallbackDirsPsr4 = array();
+
+ // PSR-0
+ /**
+ * List of PSR-0 prefixes
+ *
+ * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
+ *
+ * @var array>>
+ */
+ private $prefixesPsr0 = array();
+ /**
+ * @var list
+ */
+ private $fallbackDirsPsr0 = array();
+
+ /** @var bool */
+ private $useIncludePath = false;
+
+ /**
+ * @var array
+ */
+ private $classMap = array();
+
+ /** @var bool */
+ private $classMapAuthoritative = false;
+
+ /**
+ * @var array
+ */
+ private $missingClasses = array();
+
+ /** @var string|null */
+ private $apcuPrefix;
+
+ /**
+ * @var array
+ */
+ private static $registeredLoaders = array();
+
+ /**
+ * @param string|null $vendorDir
+ */
+ public function __construct($vendorDir = null)
+ {
+ $this->vendorDir = $vendorDir;
+ self::initializeIncludeClosure();
+ }
+
+ /**
+ * @return array>
+ */
+ public function getPrefixes()
+ {
+ if (!empty($this->prefixesPsr0)) {
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
+ }
+
+ return array();
+ }
+
+ /**
+ * @return array>
+ */
+ public function getPrefixesPsr4()
+ {
+ return $this->prefixDirsPsr4;
+ }
+
+ /**
+ * @return list
+ */
+ public function getFallbackDirs()
+ {
+ return $this->fallbackDirsPsr0;
+ }
+
+ /**
+ * @return list
+ */
+ public function getFallbackDirsPsr4()
+ {
+ return $this->fallbackDirsPsr4;
+ }
+
+ /**
+ * @return array Array of classname => path
+ */
+ public function getClassMap()
+ {
+ return $this->classMap;
+ }
+
+ /**
+ * @param array $classMap Class to filename map
+ *
+ * @return void
+ */
+ public function addClassMap(array $classMap)
+ {
+ if ($this->classMap) {
+ $this->classMap = array_merge($this->classMap, $classMap);
+ } else {
+ $this->classMap = $classMap;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix, either
+ * appending or prepending to the ones previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param list|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @return void
+ */
+ public function add($prefix, $paths, $prepend = false)
+ {
+ $paths = (array) $paths;
+ if (!$prefix) {
+ if ($prepend) {
+ $this->fallbackDirsPsr0 = array_merge(
+ $paths,
+ $this->fallbackDirsPsr0
+ );
+ } else {
+ $this->fallbackDirsPsr0 = array_merge(
+ $this->fallbackDirsPsr0,
+ $paths
+ );
+ }
+
+ return;
+ }
+
+ $first = $prefix[0];
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
+ $this->prefixesPsr0[$first][$prefix] = $paths;
+
+ return;
+ }
+ if ($prepend) {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $paths,
+ $this->prefixesPsr0[$first][$prefix]
+ );
+ } else {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $this->prefixesPsr0[$first][$prefix],
+ $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace, either
+ * appending or prepending to the ones previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list|string $paths The PSR-4 base directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return void
+ */
+ public function addPsr4($prefix, $paths, $prepend = false)
+ {
+ $paths = (array) $paths;
+ if (!$prefix) {
+ // Register directories for the root namespace.
+ if ($prepend) {
+ $this->fallbackDirsPsr4 = array_merge(
+ $paths,
+ $this->fallbackDirsPsr4
+ );
+ } else {
+ $this->fallbackDirsPsr4 = array_merge(
+ $this->fallbackDirsPsr4,
+ $paths
+ );
+ }
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+ // Register directories for a new namespace.
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = $paths;
+ } elseif ($prepend) {
+ // Prepend directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $paths,
+ $this->prefixDirsPsr4[$prefix]
+ );
+ } else {
+ // Append directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $this->prefixDirsPsr4[$prefix],
+ $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix,
+ * replacing any others previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param list|string $paths The PSR-0 base directories
+ *
+ * @return void
+ */
+ public function set($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr0 = (array) $paths;
+ } else {
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace,
+ * replacing any others previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list|string $paths The PSR-4 base directories
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return void
+ */
+ public function setPsr4($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr4 = (array) $paths;
+ } else {
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Turns on searching the include path for class files.
+ *
+ * @param bool $useIncludePath
+ *
+ * @return void
+ */
+ public function setUseIncludePath($useIncludePath)
+ {
+ $this->useIncludePath = $useIncludePath;
+ }
+
+ /**
+ * Can be used to check if the autoloader uses the include path to check
+ * for classes.
+ *
+ * @return bool
+ */
+ public function getUseIncludePath()
+ {
+ return $this->useIncludePath;
+ }
+
+ /**
+ * Turns off searching the prefix and fallback directories for classes
+ * that have not been registered with the class map.
+ *
+ * @param bool $classMapAuthoritative
+ *
+ * @return void
+ */
+ public function setClassMapAuthoritative($classMapAuthoritative)
+ {
+ $this->classMapAuthoritative = $classMapAuthoritative;
+ }
+
+ /**
+ * Should class lookup fail if not found in the current class map?
+ *
+ * @return bool
+ */
+ public function isClassMapAuthoritative()
+ {
+ return $this->classMapAuthoritative;
+ }
+
+ /**
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+ *
+ * @param string|null $apcuPrefix
+ *
+ * @return void
+ */
+ public function setApcuPrefix($apcuPrefix)
+ {
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
+ }
+
+ /**
+ * The APCu prefix in use, or null if APCu caching is not enabled.
+ *
+ * @return string|null
+ */
+ public function getApcuPrefix()
+ {
+ return $this->apcuPrefix;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not
+ *
+ * @return void
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+ if (null === $this->vendorDir) {
+ return;
+ }
+
+ if ($prepend) {
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+ } else {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ self::$registeredLoaders[$this->vendorDir] = $this;
+ }
+ }
+
+ /**
+ * Unregisters this instance as an autoloader.
+ *
+ * @return void
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister(array($this, 'loadClass'));
+
+ if (null !== $this->vendorDir) {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ }
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $class The name of the class
+ * @return true|null True if loaded, null otherwise
+ */
+ public function loadClass($class)
+ {
+ if ($file = $this->findFile($class)) {
+ $includeFile = self::$includeFile;
+ $includeFile($file);
+
+ return true;
+ }
+
+ return null;
+ }
+
+ /**
+ * Finds the path to the file where the class is defined.
+ *
+ * @param string $class The name of the class
+ *
+ * @return string|false The path if found, false otherwise
+ */
+ public function findFile($class)
+ {
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+ return false;
+ }
+ if (null !== $this->apcuPrefix) {
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+ if ($hit) {
+ return $file;
+ }
+ }
+
+ $file = $this->findFileWithExtension($class, '.php');
+
+ // Search for Hack files if we are running on HHVM
+ if (false === $file && defined('HHVM_VERSION')) {
+ $file = $this->findFileWithExtension($class, '.hh');
+ }
+
+ if (null !== $this->apcuPrefix) {
+ apcu_add($this->apcuPrefix.$class, $file);
+ }
+
+ if (false === $file) {
+ // Remember that this class does not exist.
+ $this->missingClasses[$class] = true;
+ }
+
+ return $file;
+ }
+
+ /**
+ * Returns the currently registered loaders keyed by their corresponding vendor directories.
+ *
+ * @return array
+ */
+ public static function getRegisteredLoaders()
+ {
+ return self::$registeredLoaders;
+ }
+
+ /**
+ * @param string $class
+ * @param string $ext
+ * @return string|false
+ */
+ private function findFileWithExtension($class, $ext)
+ {
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ $subPath = $class;
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
+ $subPath = substr($subPath, 0, $lastPos);
+ $search = $subPath . '\\';
+ if (isset($this->prefixDirsPsr4[$search])) {
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
+ if (file_exists($file = $dir . $pathEnd)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-4 fallback dirs
+ foreach ($this->fallbackDirsPsr4 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 lookup
+ if (false !== $pos = strrpos($class, '\\')) {
+ // namespaced class name
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+ } else {
+ // PEAR-like class name
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+ }
+
+ if (isset($this->prefixesPsr0[$first])) {
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($dirs as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-0 fallback dirs
+ foreach ($this->fallbackDirsPsr0 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 include paths.
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+ return $file;
+ }
+
+ return false;
+ }
+
+ /**
+ * @return void
+ */
+ private static function initializeIncludeClosure()
+ {
+ if (self::$includeFile !== null) {
+ return;
+ }
+
+ /**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ *
+ * @param string $file
+ * @return void
+ */
+ self::$includeFile = \Closure::bind(static function($file) {
+ include $file;
+ }, null, null);
+ }
+}
diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php
new file mode 100644
index 0000000..6d29bff
--- /dev/null
+++ b/vendor/composer/InstalledVersions.php
@@ -0,0 +1,378 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer;
+
+use Composer\Autoload\ClassLoader;
+use Composer\Semver\VersionParser;
+
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
+ *
+ * To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
+ */
+class InstalledVersions
+{
+ /**
+ * @var mixed[]|null
+ * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null
+ */
+ private static $installed;
+
+ /**
+ * @var bool
+ */
+ private static $installedIsLocalDir;
+
+ /**
+ * @var bool|null
+ */
+ private static $canGetVendors;
+
+ /**
+ * @var array[]
+ * @psalm-var array}>
+ */
+ private static $installedByVendor = array();
+
+ /**
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
+ *
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackages()
+ {
+ $packages = array();
+ foreach (self::getInstalled() as $installed) {
+ $packages[] = array_keys($installed['versions']);
+ }
+
+ if (1 === \count($packages)) {
+ return $packages[0];
+ }
+
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+ }
+
+ /**
+ * Returns a list of all package names with a specific type e.g. 'library'
+ *
+ * @param string $type
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackagesByType($type)
+ {
+ $packagesByType = array();
+
+ foreach (self::getInstalled() as $installed) {
+ foreach ($installed['versions'] as $name => $package) {
+ if (isset($package['type']) && $package['type'] === $type) {
+ $packagesByType[] = $name;
+ }
+ }
+ }
+
+ return $packagesByType;
+ }
+
+ /**
+ * Checks whether the given package is installed
+ *
+ * This also returns true if the package name is provided or replaced by another package
+ *
+ * @param string $packageName
+ * @param bool $includeDevRequirements
+ * @return bool
+ */
+ public static function isInstalled($packageName, $includeDevRequirements = true)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (isset($installed['versions'][$packageName])) {
+ return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks whether the given package satisfies a version constraint
+ *
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+ *
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+ *
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
+ * @param string $packageName
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ * @return bool
+ */
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
+ {
+ $constraint = $parser->parseConstraints((string) $constraint);
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+ return $provided->matches($constraint);
+ }
+
+ /**
+ * Returns a version constraint representing all the range(s) which are installed for a given package
+ *
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+ * whether a given version of a package is installed, and not just whether it exists
+ *
+ * @param string $packageName
+ * @return string Version constraint usable with composer/semver
+ */
+ public static function getVersionRanges($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ $ranges = array();
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+ }
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+ }
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+ }
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+ }
+
+ return implode(' || ', $ranges);
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getPrettyVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['pretty_version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+ */
+ public static function getReference($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['reference'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['reference'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
+ */
+ public static function getInstallPath($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @return array
+ * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
+ */
+ public static function getRootPackage()
+ {
+ $installed = self::getInstalled();
+
+ return $installed[0]['root'];
+ }
+
+ /**
+ * Returns the raw installed.php data for custom implementations
+ *
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
+ * @return array[]
+ * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}
+ */
+ public static function getRawData()
+ {
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = include __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ return self::$installed;
+ }
+
+ /**
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
+ *
+ * @return array[]
+ * @psalm-return list}>
+ */
+ public static function getAllRawData()
+ {
+ return self::getInstalled();
+ }
+
+ /**
+ * Lets you reload the static array from another file
+ *
+ * This is only useful for complex integrations in which a project needs to use
+ * this class but then also needs to execute another project's autoloader in process,
+ * and wants to ensure both projects have access to their version of installed.php.
+ *
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
+ * the data it needs from this class, then call reload() with
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+ * the project in which it runs can then also use this class safely, without
+ * interference between PHPUnit's dependencies and the project's dependencies.
+ *
+ * @param array[] $data A vendor/composer/installed.php data set
+ * @return void
+ *
+ * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data
+ */
+ public static function reload($data)
+ {
+ self::$installed = $data;
+ self::$installedByVendor = array();
+
+ // when using reload, we disable the duplicate protection to ensure that self::$installed data is
+ // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
+ // so we have to assume it does not, and that may result in duplicate data being returned when listing
+ // all installed packages for example
+ self::$installedIsLocalDir = false;
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return list}>
+ */
+ private static function getInstalled()
+ {
+ if (null === self::$canGetVendors) {
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+ }
+
+ $installed = array();
+ $copiedLocalDir = false;
+
+ if (self::$canGetVendors) {
+ $selfDir = strtr(__DIR__, '\\', '/');
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+ $vendorDir = strtr($vendorDir, '\\', '/');
+ if (isset(self::$installedByVendor[$vendorDir])) {
+ $installed[] = self::$installedByVendor[$vendorDir];
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */
+ $required = require $vendorDir.'/composer/installed.php';
+ self::$installedByVendor[$vendorDir] = $required;
+ $installed[] = $required;
+ if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
+ self::$installed = $required;
+ self::$installedIsLocalDir = true;
+ }
+ }
+ if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
+ $copiedLocalDir = true;
+ }
+ }
+ }
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */
+ $required = require __DIR__ . '/installed.php';
+ self::$installed = $required;
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ if (self::$installed !== array() && !$copiedLocalDir) {
+ $installed[] = self::$installed;
+ }
+
+ return $installed;
+ }
+}
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
new file mode 100644
index 0000000..f27399a
--- /dev/null
+++ b/vendor/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) Nils Adermann, Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
new file mode 100644
index 0000000..fff9c4f
--- /dev/null
+++ b/vendor/composer/autoload_classmap.php
@@ -0,0 +1,21 @@
+ $vendorDir . '/composer/InstalledVersions.php',
+ 'DateError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateError.php',
+ 'DateException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateException.php',
+ 'DateInvalidOperationException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php',
+ 'DateInvalidTimeZoneException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php',
+ 'DateMalformedIntervalStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php',
+ 'DateMalformedPeriodStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php',
+ 'DateMalformedStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php',
+ 'DateObjectError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateObjectError.php',
+ 'DateRangeError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateRangeError.php',
+ 'Override' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/Override.php',
+ 'SQLite3Exception' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/SQLite3Exception.php',
+);
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
new file mode 100644
index 0000000..afee2fc
--- /dev/null
+++ b/vendor/composer/autoload_files.php
@@ -0,0 +1,20 @@
+ $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
+ '23f09fe3194f8c2f70923f90d6702129' => $vendorDir . '/illuminate/collections/functions.php',
+ '60799491728b879e74601d83e38b2cad' => $vendorDir . '/illuminate/collections/helpers.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
+ '662a729f963d39afe703c9d9b7ab4a8c' => $vendorDir . '/symfony/polyfill-php83/bootstrap.php',
+ '2203a247e6fda86070a5e4e07aed533a' => $vendorDir . '/symfony/clock/Resources/now.php',
+ 'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php',
+ 'f625ee536139dfb962a398b200bdb2bd' => $vendorDir . '/illuminate/support/functions.php',
+ '72579e7bd17821bb1321b87411366eae' => $vendorDir . '/illuminate/support/helpers.php',
+ '253c157292f75eb38082b5acb06f3f01' => $vendorDir . '/nikic/fast-route/src/functions.php',
+ 'd2136ff22b54ac75cd96a40e0022218e' => $vendorDir . '/workerman/webman-framework/src/support/helpers.php',
+);
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
new file mode 100644
index 0000000..15a2ff3
--- /dev/null
+++ b/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,9 @@
+ array($vendorDir . '/voku/portable-ascii/src/voku'),
+ 'support\\' => array($vendorDir . '/webman/database/src/support', $vendorDir . '/workerman/webman-framework/src/support'),
+ 'Workerman\\Coroutine\\' => array($vendorDir . '/workerman/coroutine/src'),
+ 'Workerman\\' => array($vendorDir . '/workerman/workerman/src', $vendorDir . '/workerman/coroutine/src'),
+ 'Webman\\Database\\' => array($vendorDir . '/webman/database/src'),
+ 'Webman\\' => array($vendorDir . '/workerman/webman-framework/src'),
+ 'Symfony\\Polyfill\\Php83\\' => array($vendorDir . '/symfony/polyfill-php83'),
+ 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
+ 'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'),
+ 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'),
+ 'Symfony\\Component\\Clock\\' => array($vendorDir . '/symfony/clock'),
+ 'Support\\View\\' => array($vendorDir . '/workerman/webman-framework/src/support/view'),
+ 'Support\\Exception\\' => array($vendorDir . '/workerman/webman-framework/src/support/exception'),
+ 'Support\\Bootstrap\\' => array($vendorDir . '/workerman/webman-framework/src/support/bootstrap'),
+ 'Support\\' => array($vendorDir . '/workerman/webman-framework/src/support'),
+ 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
+ 'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
+ 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
+ 'Psr\\Clock\\' => array($vendorDir . '/psr/clock/src'),
+ 'Laravel\\SerializableClosure\\' => array($vendorDir . '/laravel/serializable-closure/src'),
+ 'Illuminate\\Support\\' => array($vendorDir . '/illuminate/support', $vendorDir . '/illuminate/collections', $vendorDir . '/illuminate/conditionable', $vendorDir . '/illuminate/macroable'),
+ 'Illuminate\\Database\\' => array($vendorDir . '/illuminate/database'),
+ 'Illuminate\\Contracts\\' => array($vendorDir . '/illuminate/contracts'),
+ 'Illuminate\\Container\\' => array($vendorDir . '/illuminate/container'),
+ 'FastRoute\\' => array($vendorDir . '/nikic/fast-route/src'),
+ 'Doctrine\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector'),
+ 'Carbon\\Doctrine\\' => array($vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine'),
+ 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'),
+ 'Brick\\Math\\' => array($vendorDir . '/brick/math/src'),
+);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
new file mode 100644
index 0000000..8c80903
--- /dev/null
+++ b/vendor/composer/autoload_real.php
@@ -0,0 +1,50 @@
+register(true);
+
+ $filesToLoad = \Composer\Autoload\ComposerStaticInitbada8bc7bcb18a93a92df0dd06295584::$files;
+ $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+
+ require $file;
+ }
+ }, null, null);
+ foreach ($filesToLoad as $fileIdentifier => $file) {
+ $requireFile($fileIdentifier, $file);
+ }
+
+ return $loader;
+ }
+}
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
new file mode 100644
index 0000000..344d0e6
--- /dev/null
+++ b/vendor/composer/autoload_static.php
@@ -0,0 +1,236 @@
+ __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
+ '23f09fe3194f8c2f70923f90d6702129' => __DIR__ . '/..' . '/illuminate/collections/functions.php',
+ '60799491728b879e74601d83e38b2cad' => __DIR__ . '/..' . '/illuminate/collections/helpers.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
+ '662a729f963d39afe703c9d9b7ab4a8c' => __DIR__ . '/..' . '/symfony/polyfill-php83/bootstrap.php',
+ '2203a247e6fda86070a5e4e07aed533a' => __DIR__ . '/..' . '/symfony/clock/Resources/now.php',
+ 'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php',
+ 'f625ee536139dfb962a398b200bdb2bd' => __DIR__ . '/..' . '/illuminate/support/functions.php',
+ '72579e7bd17821bb1321b87411366eae' => __DIR__ . '/..' . '/illuminate/support/helpers.php',
+ '253c157292f75eb38082b5acb06f3f01' => __DIR__ . '/..' . '/nikic/fast-route/src/functions.php',
+ 'd2136ff22b54ac75cd96a40e0022218e' => __DIR__ . '/..' . '/workerman/webman-framework/src/support/helpers.php',
+ );
+
+ public static $prefixLengthsPsr4 = array (
+ 'v' =>
+ array (
+ 'voku\\' => 5,
+ ),
+ 's' =>
+ array (
+ 'support\\' => 8,
+ ),
+ 'W' =>
+ array (
+ 'Workerman\\Coroutine\\' => 20,
+ 'Workerman\\' => 10,
+ 'Webman\\Database\\' => 16,
+ 'Webman\\' => 7,
+ ),
+ 'S' =>
+ array (
+ 'Symfony\\Polyfill\\Php83\\' => 23,
+ 'Symfony\\Polyfill\\Mbstring\\' => 26,
+ 'Symfony\\Contracts\\Translation\\' => 30,
+ 'Symfony\\Component\\Translation\\' => 30,
+ 'Symfony\\Component\\Clock\\' => 24,
+ 'Support\\View\\' => 13,
+ 'Support\\Exception\\' => 18,
+ 'Support\\Bootstrap\\' => 18,
+ 'Support\\' => 8,
+ ),
+ 'P' =>
+ array (
+ 'Psr\\SimpleCache\\' => 16,
+ 'Psr\\Log\\' => 8,
+ 'Psr\\Container\\' => 14,
+ 'Psr\\Clock\\' => 10,
+ ),
+ 'L' =>
+ array (
+ 'Laravel\\SerializableClosure\\' => 28,
+ ),
+ 'I' =>
+ array (
+ 'Illuminate\\Support\\' => 19,
+ 'Illuminate\\Database\\' => 20,
+ 'Illuminate\\Contracts\\' => 21,
+ 'Illuminate\\Container\\' => 21,
+ ),
+ 'F' =>
+ array (
+ 'FastRoute\\' => 10,
+ ),
+ 'D' =>
+ array (
+ 'Doctrine\\Inflector\\' => 19,
+ ),
+ 'C' =>
+ array (
+ 'Carbon\\Doctrine\\' => 16,
+ 'Carbon\\' => 7,
+ ),
+ 'B' =>
+ array (
+ 'Brick\\Math\\' => 11,
+ ),
+ );
+
+ public static $prefixDirsPsr4 = array (
+ 'voku\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku',
+ ),
+ 'support\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/webman/database/src/support',
+ 1 => __DIR__ . '/..' . '/workerman/webman-framework/src/support',
+ ),
+ 'Workerman\\Coroutine\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/workerman/coroutine/src',
+ ),
+ 'Workerman\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/workerman/workerman/src',
+ 1 => __DIR__ . '/..' . '/workerman/coroutine/src',
+ ),
+ 'Webman\\Database\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/webman/database/src',
+ ),
+ 'Webman\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/workerman/webman-framework/src',
+ ),
+ 'Symfony\\Polyfill\\Php83\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php83',
+ ),
+ 'Symfony\\Polyfill\\Mbstring\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
+ ),
+ 'Symfony\\Contracts\\Translation\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/translation-contracts',
+ ),
+ 'Symfony\\Component\\Translation\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/translation',
+ ),
+ 'Symfony\\Component\\Clock\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/clock',
+ ),
+ 'Support\\View\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/workerman/webman-framework/src/support/view',
+ ),
+ 'Support\\Exception\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/workerman/webman-framework/src/support/exception',
+ ),
+ 'Support\\Bootstrap\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/workerman/webman-framework/src/support/bootstrap',
+ ),
+ 'Support\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/workerman/webman-framework/src/support',
+ ),
+ 'Psr\\SimpleCache\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/simple-cache/src',
+ ),
+ 'Psr\\Log\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/log/src',
+ ),
+ 'Psr\\Container\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/container/src',
+ ),
+ 'Psr\\Clock\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/clock/src',
+ ),
+ 'Laravel\\SerializableClosure\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/laravel/serializable-closure/src',
+ ),
+ 'Illuminate\\Support\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/illuminate/support',
+ 1 => __DIR__ . '/..' . '/illuminate/collections',
+ 2 => __DIR__ . '/..' . '/illuminate/conditionable',
+ 3 => __DIR__ . '/..' . '/illuminate/macroable',
+ ),
+ 'Illuminate\\Database\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/illuminate/database',
+ ),
+ 'Illuminate\\Contracts\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/illuminate/contracts',
+ ),
+ 'Illuminate\\Container\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/illuminate/container',
+ ),
+ 'FastRoute\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/nikic/fast-route/src',
+ ),
+ 'Doctrine\\Inflector\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector',
+ ),
+ 'Carbon\\Doctrine\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine',
+ ),
+ 'Carbon\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon',
+ ),
+ 'Brick\\Math\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/brick/math/src',
+ ),
+ );
+
+ public static $classMap = array (
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
+ 'DateError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateError.php',
+ 'DateException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateException.php',
+ 'DateInvalidOperationException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php',
+ 'DateInvalidTimeZoneException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php',
+ 'DateMalformedIntervalStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php',
+ 'DateMalformedPeriodStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php',
+ 'DateMalformedStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php',
+ 'DateObjectError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateObjectError.php',
+ 'DateRangeError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateRangeError.php',
+ 'Override' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/Override.php',
+ 'SQLite3Exception' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/SQLite3Exception.php',
+ );
+
+ public static function getInitializer(ClassLoader $loader)
+ {
+ return \Closure::bind(function () use ($loader) {
+ $loader->prefixLengthsPsr4 = ComposerStaticInitbada8bc7bcb18a93a92df0dd06295584::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInitbada8bc7bcb18a93a92df0dd06295584::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInitbada8bc7bcb18a93a92df0dd06295584::$classMap;
+
+ }, null, ClassLoader::class);
+ }
+}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
new file mode 100644
index 0000000..068495b
--- /dev/null
+++ b/vendor/composer/installed.json
@@ -0,0 +1,1884 @@
+{
+ "packages": [
+ {
+ "name": "brick/math",
+ "version": "0.12.3",
+ "version_normalized": "0.12.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/brick/math.git",
+ "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba",
+ "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.2",
+ "phpunit/phpunit": "^10.1",
+ "vimeo/psalm": "6.8.8"
+ },
+ "time": "2025-02-28T13:11:00+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Brick\\Math\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Arbitrary-precision arithmetic library",
+ "keywords": [
+ "Arbitrary-precision",
+ "BigInteger",
+ "BigRational",
+ "arithmetic",
+ "bigdecimal",
+ "bignum",
+ "bignumber",
+ "brick",
+ "decimal",
+ "integer",
+ "math",
+ "mathematics",
+ "rational"
+ ],
+ "support": {
+ "issues": "https://github.com/brick/math/issues",
+ "source": "https://github.com/brick/math/tree/0.12.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/BenMorel",
+ "type": "github"
+ }
+ ],
+ "install-path": "../brick/math"
+ },
+ {
+ "name": "carbonphp/carbon-doctrine-types",
+ "version": "3.2.0",
+ "version_normalized": "3.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git",
+ "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
+ "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "conflict": {
+ "doctrine/dbal": "<4.0.0 || >=5.0.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^4.0.0",
+ "nesbot/carbon": "^2.71.0 || ^3.0.0",
+ "phpunit/phpunit": "^10.3"
+ },
+ "time": "2024-02-09T16:56:22+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Carbon\\Doctrine\\": "src/Carbon/Doctrine/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "KyleKatarn",
+ "email": "kylekatarnls@gmail.com"
+ }
+ ],
+ "description": "Types to use Carbon in Doctrine",
+ "keywords": [
+ "carbon",
+ "date",
+ "datetime",
+ "doctrine",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues",
+ "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../carbonphp/carbon-doctrine-types"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "2.0.10",
+ "version_normalized": "2.0.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^11.0",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.3",
+ "phpunit/phpunit": "^8.5 || ^9.5",
+ "vimeo/psalm": "^4.25 || ^5.4"
+ },
+ "time": "2024-02-18T20:23:39+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
+ "homepage": "https://www.doctrine-project.org/projects/inflector.html",
+ "keywords": [
+ "inflection",
+ "inflector",
+ "lowercase",
+ "manipulation",
+ "php",
+ "plural",
+ "singular",
+ "strings",
+ "uppercase",
+ "words"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/inflector/issues",
+ "source": "https://github.com/doctrine/inflector/tree/2.0.10"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../doctrine/inflector"
+ },
+ {
+ "name": "illuminate/collections",
+ "version": "v11.44.1",
+ "version_normalized": "11.44.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/collections.git",
+ "reference": "48f5357348093bc8b94c691aa3ffc861d2ecc2a0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/collections/zipball/48f5357348093bc8b94c691aa3ffc861d2ecc2a0",
+ "reference": "48f5357348093bc8b94c691aa3ffc861d2ecc2a0",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/conditionable": "^11.0",
+ "illuminate/contracts": "^11.0",
+ "illuminate/macroable": "^11.0",
+ "php": "^8.2"
+ },
+ "suggest": {
+ "symfony/var-dumper": "Required to use the dump method (^7.0)."
+ },
+ "time": "2025-02-28T16:55:51+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "functions.php",
+ "helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Collections package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "install-path": "../illuminate/collections"
+ },
+ {
+ "name": "illuminate/conditionable",
+ "version": "v11.44.1",
+ "version_normalized": "11.44.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/conditionable.git",
+ "reference": "911df1bda950a3b799cf80671764e34eede131c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/conditionable/zipball/911df1bda950a3b799cf80671764e34eede131c6",
+ "reference": "911df1bda950a3b799cf80671764e34eede131c6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.0.2"
+ },
+ "time": "2024-11-21T16:28:56+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Conditionable package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "install-path": "../illuminate/conditionable"
+ },
+ {
+ "name": "illuminate/container",
+ "version": "v11.44.1",
+ "version_normalized": "11.44.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/container.git",
+ "reference": "4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/container/zipball/4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca",
+ "reference": "4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "^11.0",
+ "php": "^8.2",
+ "psr/container": "^1.1.1|^2.0.1"
+ },
+ "provide": {
+ "psr/container-implementation": "1.1|2.0"
+ },
+ "time": "2025-02-10T14:20:57+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Container\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Container package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "install-path": "../illuminate/container"
+ },
+ {
+ "name": "illuminate/contracts",
+ "version": "v11.44.1",
+ "version_normalized": "11.44.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/contracts.git",
+ "reference": "b350a3cd8450846325cb49e1cbc1293598b18898"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/contracts/zipball/b350a3cd8450846325cb49e1cbc1293598b18898",
+ "reference": "b350a3cd8450846325cb49e1cbc1293598b18898",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.2",
+ "psr/container": "^1.1.1|^2.0.1",
+ "psr/simple-cache": "^1.0|^2.0|^3.0"
+ },
+ "time": "2025-02-10T14:20:57+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Contracts\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Contracts package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "install-path": "../illuminate/contracts"
+ },
+ {
+ "name": "illuminate/database",
+ "version": "v11.44.1",
+ "version_normalized": "11.44.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/database.git",
+ "reference": "131dcdfcc6c838115d5e58c77d4fe816f735dff8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/database/zipball/131dcdfcc6c838115d5e58c77d4fe816f735dff8",
+ "reference": "131dcdfcc6c838115d5e58c77d4fe816f735dff8",
+ "shasum": ""
+ },
+ "require": {
+ "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12",
+ "ext-pdo": "*",
+ "illuminate/collections": "^11.0",
+ "illuminate/container": "^11.0",
+ "illuminate/contracts": "^11.0",
+ "illuminate/macroable": "^11.0",
+ "illuminate/support": "^11.0",
+ "laravel/serializable-closure": "^1.3|^2.0",
+ "php": "^8.2"
+ },
+ "suggest": {
+ "ext-filter": "Required to use the Postgres database driver.",
+ "fakerphp/faker": "Required to use the eloquent factory builder (^1.24).",
+ "illuminate/console": "Required to use the database commands (^11.0).",
+ "illuminate/events": "Required to use the observers with Eloquent (^11.0).",
+ "illuminate/filesystem": "Required to use the migrations (^11.0).",
+ "illuminate/pagination": "Required to paginate the result set (^11.0).",
+ "symfony/finder": "Required to use Eloquent model factories (^7.0)."
+ },
+ "time": "2025-02-21T13:01:45+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Database\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Database package.",
+ "homepage": "https://laravel.com",
+ "keywords": [
+ "database",
+ "laravel",
+ "orm",
+ "sql"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "install-path": "../illuminate/database"
+ },
+ {
+ "name": "illuminate/macroable",
+ "version": "v11.44.1",
+ "version_normalized": "11.44.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/macroable.git",
+ "reference": "e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/macroable/zipball/e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed",
+ "reference": "e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.2"
+ },
+ "time": "2024-06-28T20:10:30+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Macroable package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "install-path": "../illuminate/macroable"
+ },
+ {
+ "name": "illuminate/support",
+ "version": "v11.44.1",
+ "version_normalized": "11.44.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/support.git",
+ "reference": "d86d42ad0c75a020e0e4a7c734e9424ca86811cc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/support/zipball/d86d42ad0c75a020e0e4a7c734e9424ca86811cc",
+ "reference": "d86d42ad0c75a020e0e4a7c734e9424ca86811cc",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/inflector": "^2.0",
+ "ext-ctype": "*",
+ "ext-filter": "*",
+ "ext-mbstring": "*",
+ "illuminate/collections": "^11.0",
+ "illuminate/conditionable": "^11.0",
+ "illuminate/contracts": "^11.0",
+ "illuminate/macroable": "^11.0",
+ "nesbot/carbon": "^2.72.6|^3.8.4",
+ "php": "^8.2",
+ "voku/portable-ascii": "^2.0.2"
+ },
+ "conflict": {
+ "tightenco/collect": "<5.5.33"
+ },
+ "replace": {
+ "spatie/once": "*"
+ },
+ "suggest": {
+ "illuminate/filesystem": "Required to use the Composer class (^11.0).",
+ "laravel/serializable-closure": "Required to use the once function (^1.3|^2.0).",
+ "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.6).",
+ "league/uri": "Required to use the Uri class (^7.5.1).",
+ "ramsey/uuid": "Required to use Str::uuid() (^4.7).",
+ "symfony/process": "Required to use the Composer class (^7.0).",
+ "symfony/uid": "Required to use Str::ulid() (^7.0).",
+ "symfony/var-dumper": "Required to use the dd function (^7.0).",
+ "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.6.1)."
+ },
+ "time": "2025-02-23T14:20:22+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "functions.php",
+ "helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Support package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "install-path": "../illuminate/support"
+ },
+ {
+ "name": "laravel/serializable-closure",
+ "version": "v2.0.3",
+ "version_normalized": "2.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/serializable-closure.git",
+ "reference": "f379c13663245f7aa4512a7869f62eb14095f23f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f379c13663245f7aa4512a7869f62eb14095f23f",
+ "reference": "f379c13663245f7aa4512a7869f62eb14095f23f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "illuminate/support": "^10.0|^11.0|^12.0",
+ "nesbot/carbon": "^2.67|^3.0",
+ "pestphp/pest": "^2.36|^3.0",
+ "phpstan/phpstan": "^2.0",
+ "symfony/var-dumper": "^6.2.0|^7.0.0"
+ },
+ "time": "2025-02-11T15:03:05+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Laravel\\SerializableClosure\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ },
+ {
+ "name": "Nuno Maduro",
+ "email": "nuno@laravel.com"
+ }
+ ],
+ "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.",
+ "keywords": [
+ "closure",
+ "laravel",
+ "serializable"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/serializable-closure/issues",
+ "source": "https://github.com/laravel/serializable-closure"
+ },
+ "install-path": "../laravel/serializable-closure"
+ },
+ {
+ "name": "nesbot/carbon",
+ "version": "3.8.6",
+ "version_normalized": "3.8.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/CarbonPHP/carbon.git",
+ "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/ff2f20cf83bd4d503720632ce8a426dc747bf7fd",
+ "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd",
+ "shasum": ""
+ },
+ "require": {
+ "carbonphp/carbon-doctrine-types": "<100.0",
+ "ext-json": "*",
+ "php": "^8.1",
+ "psr/clock": "^1.0",
+ "symfony/clock": "^6.3 || ^7.0",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0"
+ },
+ "provide": {
+ "psr/clock-implementation": "1.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^3.6.3 || ^4.0",
+ "doctrine/orm": "^2.15.2 || ^3.0",
+ "friendsofphp/php-cs-fixer": "^3.57.2",
+ "kylekatarnls/multi-tester": "^2.5.3",
+ "ondrejmirtes/better-reflection": "^6.25.0.4",
+ "phpmd/phpmd": "^2.15.0",
+ "phpstan/extension-installer": "^1.3.1",
+ "phpstan/phpstan": "^1.11.2",
+ "phpunit/phpunit": "^10.5.20",
+ "squizlabs/php_codesniffer": "^3.9.0"
+ },
+ "time": "2025-02-20T17:33:38+00:00",
+ "bin": [
+ "bin/carbon"
+ ],
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Carbon\\Laravel\\ServiceProvider"
+ ]
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ },
+ "branch-alias": {
+ "dev-2.x": "2.x-dev",
+ "dev-master": "3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Carbon\\": "src/Carbon/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "https://markido.com"
+ },
+ {
+ "name": "kylekatarnls",
+ "homepage": "https://github.com/kylekatarnls"
+ }
+ ],
+ "description": "An API extension for DateTime that supports 281 different languages.",
+ "homepage": "https://carbon.nesbot.com",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "support": {
+ "docs": "https://carbon.nesbot.com/docs",
+ "issues": "https://github.com/CarbonPHP/carbon/issues",
+ "source": "https://github.com/CarbonPHP/carbon"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon#sponsor",
+ "type": "opencollective"
+ },
+ {
+ "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../nesbot/carbon"
+ },
+ {
+ "name": "nikic/fast-route",
+ "version": "v1.3.0",
+ "version_normalized": "1.3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/FastRoute.git",
+ "reference": "181d480e08d9476e61381e04a71b34dc0432e812"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812",
+ "reference": "181d480e08d9476e61381e04a71b34dc0432e812",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35|~5.7"
+ },
+ "time": "2018-02-13T20:26:39+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "FastRoute\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov",
+ "email": "nikic@php.net"
+ }
+ ],
+ "description": "Fast request router for PHP",
+ "keywords": [
+ "router",
+ "routing"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/FastRoute/issues",
+ "source": "https://github.com/nikic/FastRoute/tree/master"
+ },
+ "install-path": "../nikic/fast-route"
+ },
+ {
+ "name": "psr/clock",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/clock.git",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0"
+ },
+ "time": "2022-11-25T14:36:26+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Clock\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for reading the clock.",
+ "homepage": "https://github.com/php-fig/clock",
+ "keywords": [
+ "clock",
+ "now",
+ "psr",
+ "psr-20",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/clock/issues",
+ "source": "https://github.com/php-fig/clock/tree/1.0.0"
+ },
+ "install-path": "../psr/clock"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.2",
+ "version_normalized": "2.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "time": "2021-11-05T16:47:00+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "install-path": "../psr/container"
+ },
+ {
+ "name": "psr/log",
+ "version": "3.0.2",
+ "version_normalized": "3.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "time": "2024-09-11T13:17:53+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.2"
+ },
+ "install-path": "../psr/log"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "3.0.0",
+ "version_normalized": "3.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "time": "2021-10-29T13:26:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
+ },
+ "install-path": "../psr/simple-cache"
+ },
+ {
+ "name": "symfony/clock",
+ "version": "v7.2.0",
+ "version_normalized": "7.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/clock.git",
+ "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24",
+ "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "psr/clock": "^1.0",
+ "symfony/polyfill-php83": "^1.28"
+ },
+ "provide": {
+ "psr/clock-implementation": "1.0"
+ },
+ "time": "2024-09-25T14:21:43+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "Resources/now.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Clock\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Decouples applications from the system clock",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "clock",
+ "psr20",
+ "time"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/clock/tree/v7.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/clock"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.5.1",
+ "version_normalized": "3.5.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
+ "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "time": "2024-09-25T14:20:29+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.5-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/deprecation-contracts"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.31.0",
+ "version_normalized": "1.31.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "time": "2024-09-09T11:45:10+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-mbstring"
+ },
+ {
+ "name": "symfony/polyfill-php83",
+ "version": "v1.31.0",
+ "version_normalized": "1.31.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php83.git",
+ "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491",
+ "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "time": "2024-09-09T11:45:10+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php83\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php83"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v7.2.4",
+ "version_normalized": "7.2.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "283856e6981286cc0d800b53bd5703e8e363f05a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/283856e6981286cc0d800b53bd5703e8e363f05a",
+ "reference": "283856e6981286cc0d800b53bd5703e8e363f05a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/translation-contracts": "^2.5|^3.0"
+ },
+ "conflict": {
+ "symfony/config": "<6.4",
+ "symfony/console": "<6.4",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/http-client-contracts": "<2.5",
+ "symfony/http-kernel": "<6.4",
+ "symfony/service-contracts": "<2.5",
+ "symfony/twig-bundle": "<6.4",
+ "symfony/yaml": "<6.4"
+ },
+ "provide": {
+ "symfony/translation-implementation": "2.3|3.0"
+ },
+ "require-dev": {
+ "nikic/php-parser": "^4.18|^5.0",
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
+ "symfony/http-client-contracts": "^2.5|^3.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
+ "symfony/polyfill-intl-icu": "^1.21",
+ "symfony/routing": "^6.4|^7.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/yaml": "^6.4|^7.0"
+ },
+ "time": "2025-02-13T10:27:23+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools to internationalize your application",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/translation/tree/v7.2.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/translation"
+ },
+ {
+ "name": "symfony/translation-contracts",
+ "version": "v3.5.1",
+ "version_normalized": "3.5.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "4667ff3bd513750603a09c8dedbea942487fb07c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c",
+ "reference": "4667ff3bd513750603a09c8dedbea942487fb07c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "time": "2024-09-25T14:20:29+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.5-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to translation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/translation-contracts"
+ },
+ {
+ "name": "voku/portable-ascii",
+ "version": "2.0.3",
+ "version_normalized": "2.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/voku/portable-ascii.git",
+ "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
+ "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
+ },
+ "suggest": {
+ "ext-intl": "Use Intl for transliterator_transliterate() support"
+ },
+ "time": "2024-11-21T01:49:47+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "voku\\": "src/voku/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Lars Moelleken",
+ "homepage": "https://www.moelleken.org/"
+ }
+ ],
+ "description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
+ "homepage": "https://github.com/voku/portable-ascii",
+ "keywords": [
+ "ascii",
+ "clean",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/voku/portable-ascii/issues",
+ "source": "https://github.com/voku/portable-ascii/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.me/moelleken",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/voku",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/portable-ascii",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://www.patreon.com/voku",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../voku/portable-ascii"
+ },
+ {
+ "name": "webman/database",
+ "version": "v2.1.1",
+ "version_normalized": "2.1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webman-php/database.git",
+ "reference": "360e42db6d1a6625ea55241a882a4244b84e72a0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webman-php/database/zipball/360e42db6d1a6625ea55241a882a4244b84e72a0",
+ "reference": "360e42db6d1a6625ea55241a882a4244b84e72a0",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/database": "^10.0 || ^11.0",
+ "laravel/serializable-closure": "^1.0 || ^2.0",
+ "workerman/webman-framework": "^2.1 || dev-master"
+ },
+ "time": "2025-02-06T09:00:41+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "support\\": "src/support",
+ "Webman\\Database\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Webman database",
+ "support": {
+ "issues": "https://github.com/webman-php/database/issues",
+ "source": "https://github.com/webman-php/database/tree/v2.1.1"
+ },
+ "install-path": "../webman/database"
+ },
+ {
+ "name": "workerman/coroutine",
+ "version": "v1.1.3",
+ "version_normalized": "1.1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/workerman-php/coroutine.git",
+ "reference": "df8fc428967d512a74a8a7d80355c1d40228c9fa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/workerman-php/coroutine/zipball/df8fc428967d512a74a8a7d80355c1d40228c9fa",
+ "reference": "df8fc428967d512a74a8a7d80355c1d40228c9fa",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^11.0",
+ "psr/log": "*"
+ },
+ "time": "2025-02-17T03:34:21+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Workerman\\": "src",
+ "Workerman\\Coroutine\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Workerman coroutine",
+ "support": {
+ "issues": "https://github.com/workerman-php/coroutine/issues",
+ "source": "https://github.com/workerman-php/coroutine/tree/v1.1.3"
+ },
+ "install-path": "../workerman/coroutine"
+ },
+ {
+ "name": "workerman/webman-framework",
+ "version": "v2.1.2",
+ "version_normalized": "2.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/walkor/webman-framework.git",
+ "reference": "f803bd867f07bb0929faef060b59a19a44186bfc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/walkor/webman-framework/zipball/f803bd867f07bb0929faef060b59a19a44186bfc",
+ "reference": "f803bd867f07bb0929faef060b59a19a44186bfc",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "nikic/fast-route": "^1.3",
+ "php": ">=8.1",
+ "psr/container": ">=1.0",
+ "psr/log": "^3.0",
+ "workerman/workerman": "^5.1 || dev-master"
+ },
+ "suggest": {
+ "ext-event": "For better performance. "
+ },
+ "time": "2025-03-10T11:52:22+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "./src/support/helpers.php"
+ ],
+ "psr-4": {
+ "Webman\\": "./src",
+ "Support\\": "./src/support",
+ "support\\": "./src/support",
+ "Support\\View\\": "./src/support/view",
+ "Support\\Bootstrap\\": "./src/support/bootstrap",
+ "Support\\Exception\\": "./src/support/exception"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "walkor",
+ "email": "walkor@workerman.net",
+ "homepage": "https://www.workerman.net",
+ "role": "Developer"
+ }
+ ],
+ "description": "High performance HTTP Service Framework.",
+ "homepage": "https://www.workerman.net",
+ "keywords": [
+ "High Performance",
+ "http service"
+ ],
+ "support": {
+ "email": "walkor@workerman.net",
+ "forum": "https://wenda.workerman.net/",
+ "issues": "https://github.com/walkor/webman/issues",
+ "source": "https://github.com/walkor/webman-framework",
+ "wiki": "https://doc.workerman.net/"
+ },
+ "install-path": "../workerman/webman-framework"
+ },
+ {
+ "name": "workerman/workerman",
+ "version": "v5.1.0",
+ "version_normalized": "5.1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/walkor/workerman.git",
+ "reference": "5ce17bc71dfdad0e9eba8cd658342da793d2f581"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/walkor/workerman/zipball/5ce17bc71dfdad0e9eba8cd658342da793d2f581",
+ "reference": "5ce17bc71dfdad0e9eba8cd658342da793d2f581",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": ">=8.1",
+ "workerman/coroutine": "^1.1 || dev-main"
+ },
+ "conflict": {
+ "ext-swow": " array(
+ 'name' => '__root__',
+ 'pretty_version' => '1.0.0+no-version-set',
+ 'version' => '1.0.0.0',
+ 'reference' => null,
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'dev' => true,
+ ),
+ 'versions' => array(
+ '__root__' => array(
+ 'pretty_version' => '1.0.0+no-version-set',
+ 'version' => '1.0.0.0',
+ 'reference' => null,
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'brick/math' => array(
+ 'pretty_version' => '0.12.3',
+ 'version' => '0.12.3.0',
+ 'reference' => '866551da34e9a618e64a819ee1e01c20d8a588ba',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../brick/math',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'carbonphp/carbon-doctrine-types' => array(
+ 'pretty_version' => '3.2.0',
+ 'version' => '3.2.0.0',
+ 'reference' => '18ba5ddfec8976260ead6e866180bd5d2f71aa1d',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../carbonphp/carbon-doctrine-types',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'doctrine/inflector' => array(
+ 'pretty_version' => '2.0.10',
+ 'version' => '2.0.10.0',
+ 'reference' => '5817d0659c5b50c9b950feb9af7b9668e2c436bc',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../doctrine/inflector',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'illuminate/collections' => array(
+ 'pretty_version' => 'v11.44.1',
+ 'version' => '11.44.1.0',
+ 'reference' => '48f5357348093bc8b94c691aa3ffc861d2ecc2a0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../illuminate/collections',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'illuminate/conditionable' => array(
+ 'pretty_version' => 'v11.44.1',
+ 'version' => '11.44.1.0',
+ 'reference' => '911df1bda950a3b799cf80671764e34eede131c6',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../illuminate/conditionable',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'illuminate/container' => array(
+ 'pretty_version' => 'v11.44.1',
+ 'version' => '11.44.1.0',
+ 'reference' => '4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../illuminate/container',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'illuminate/contracts' => array(
+ 'pretty_version' => 'v11.44.1',
+ 'version' => '11.44.1.0',
+ 'reference' => 'b350a3cd8450846325cb49e1cbc1293598b18898',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../illuminate/contracts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'illuminate/database' => array(
+ 'pretty_version' => 'v11.44.1',
+ 'version' => '11.44.1.0',
+ 'reference' => '131dcdfcc6c838115d5e58c77d4fe816f735dff8',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../illuminate/database',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'illuminate/macroable' => array(
+ 'pretty_version' => 'v11.44.1',
+ 'version' => '11.44.1.0',
+ 'reference' => 'e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../illuminate/macroable',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'illuminate/support' => array(
+ 'pretty_version' => 'v11.44.1',
+ 'version' => '11.44.1.0',
+ 'reference' => 'd86d42ad0c75a020e0e4a7c734e9424ca86811cc',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../illuminate/support',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'laravel/serializable-closure' => array(
+ 'pretty_version' => 'v2.0.3',
+ 'version' => '2.0.3.0',
+ 'reference' => 'f379c13663245f7aa4512a7869f62eb14095f23f',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../laravel/serializable-closure',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'nesbot/carbon' => array(
+ 'pretty_version' => '3.8.6',
+ 'version' => '3.8.6.0',
+ 'reference' => 'ff2f20cf83bd4d503720632ce8a426dc747bf7fd',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../nesbot/carbon',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'nikic/fast-route' => array(
+ 'pretty_version' => 'v1.3.0',
+ 'version' => '1.3.0.0',
+ 'reference' => '181d480e08d9476e61381e04a71b34dc0432e812',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../nikic/fast-route',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/clock' => array(
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/clock',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/clock-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '1.0',
+ ),
+ ),
+ 'psr/container' => array(
+ 'pretty_version' => '2.0.2',
+ 'version' => '2.0.2.0',
+ 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/container',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/container-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '1.1|2.0',
+ ),
+ ),
+ 'psr/log' => array(
+ 'pretty_version' => '3.0.2',
+ 'version' => '3.0.2.0',
+ 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/log',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/simple-cache' => array(
+ 'pretty_version' => '3.0.0',
+ 'version' => '3.0.0.0',
+ 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/simple-cache',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'spatie/once' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => '*',
+ ),
+ ),
+ 'symfony/clock' => array(
+ 'pretty_version' => 'v7.2.0',
+ 'version' => '7.2.0.0',
+ 'reference' => 'b81435fbd6648ea425d1ee96a2d8e68f4ceacd24',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/clock',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/deprecation-contracts' => array(
+ 'pretty_version' => 'v3.5.1',
+ 'version' => '3.5.1.0',
+ 'reference' => '74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-mbstring' => array(
+ 'pretty_version' => 'v1.31.0',
+ 'version' => '1.31.0.0',
+ 'reference' => '85181ba99b2345b0ef10ce42ecac37612d9fd341',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-php83' => array(
+ 'pretty_version' => 'v1.31.0',
+ 'version' => '1.31.0.0',
+ 'reference' => '2fb86d65e2d424369ad2905e83b236a8805ba491',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-php83',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/translation' => array(
+ 'pretty_version' => 'v7.2.4',
+ 'version' => '7.2.4.0',
+ 'reference' => '283856e6981286cc0d800b53bd5703e8e363f05a',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/translation',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/translation-contracts' => array(
+ 'pretty_version' => 'v3.5.1',
+ 'version' => '3.5.1.0',
+ 'reference' => '4667ff3bd513750603a09c8dedbea942487fb07c',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/translation-contracts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/translation-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '2.3|3.0',
+ ),
+ ),
+ 'voku/portable-ascii' => array(
+ 'pretty_version' => '2.0.3',
+ 'version' => '2.0.3.0',
+ 'reference' => 'b1d923f88091c6bf09699efcd7c8a1b1bfd7351d',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../voku/portable-ascii',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'webman/database' => array(
+ 'pretty_version' => 'v2.1.1',
+ 'version' => '2.1.1.0',
+ 'reference' => '360e42db6d1a6625ea55241a882a4244b84e72a0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../webman/database',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'workerman/coroutine' => array(
+ 'pretty_version' => 'v1.1.3',
+ 'version' => '1.1.3.0',
+ 'reference' => 'df8fc428967d512a74a8a7d80355c1d40228c9fa',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../workerman/coroutine',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'workerman/webman-framework' => array(
+ 'pretty_version' => 'v2.1.2',
+ 'version' => '2.1.2.0',
+ 'reference' => 'f803bd867f07bb0929faef060b59a19a44186bfc',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../workerman/webman-framework',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'workerman/workerman' => array(
+ 'pretty_version' => 'v5.1.0',
+ 'version' => '5.1.0.0',
+ 'reference' => '5ce17bc71dfdad0e9eba8cd658342da793d2f581',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../workerman/workerman',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ ),
+);
diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php
new file mode 100644
index 0000000..d32d90c
--- /dev/null
+++ b/vendor/composer/platform_check.php
@@ -0,0 +1,26 @@
+= 80200)) {
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 8.2.0". You are running ' . PHP_VERSION . '.';
+}
+
+if ($issues) {
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
+ } elseif (!headers_sent()) {
+ 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;
+ }
+ }
+ trigger_error(
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
+ E_USER_ERROR
+ );
+}
diff --git a/vendor/doctrine/inflector/LICENSE b/vendor/doctrine/inflector/LICENSE
new file mode 100644
index 0000000..8c38cc1
--- /dev/null
+++ b/vendor/doctrine/inflector/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2006-2015 Doctrine Project
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/doctrine/inflector/README.md b/vendor/doctrine/inflector/README.md
new file mode 100644
index 0000000..6e3a97f
--- /dev/null
+++ b/vendor/doctrine/inflector/README.md
@@ -0,0 +1,7 @@
+# Doctrine Inflector
+
+Doctrine Inflector is a small library that can perform string manipulations
+with regard to uppercase/lowercase and singular/plural forms of words.
+
+[](https://github.com/doctrine/inflector/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A4.0.x)
+[](https://codecov.io/gh/doctrine/inflector/branch/2.0.x)
diff --git a/vendor/doctrine/inflector/composer.json b/vendor/doctrine/inflector/composer.json
new file mode 100644
index 0000000..91d7707
--- /dev/null
+++ b/vendor/doctrine/inflector/composer.json
@@ -0,0 +1,41 @@
+{
+ "name": "doctrine/inflector",
+ "type": "library",
+ "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
+ "keywords": ["php", "strings", "words", "manipulation", "inflector", "inflection", "uppercase", "lowercase", "singular", "plural"],
+ "homepage": "https://www.doctrine-project.org/projects/inflector.html",
+ "license": "MIT",
+ "authors": [
+ {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
+ {"name": "Roman Borschel", "email": "roman@code-factory.org"},
+ {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
+ {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
+ {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
+ ],
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^11.0",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.3",
+ "phpunit/phpunit": "^8.5 || ^9.5",
+ "vimeo/psalm": "^4.25 || ^5.4"
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Doctrine\\Tests\\Inflector\\": "tests/Doctrine/Tests/Inflector"
+ }
+ },
+ "config": {
+ "allow-plugins": {
+ "dealerdirect/phpcodesniffer-composer-installer": true
+ }
+ }
+}
diff --git a/vendor/doctrine/inflector/docs/en/index.rst b/vendor/doctrine/inflector/docs/en/index.rst
new file mode 100644
index 0000000..29866f4
--- /dev/null
+++ b/vendor/doctrine/inflector/docs/en/index.rst
@@ -0,0 +1,226 @@
+Introduction
+============
+
+The Doctrine Inflector has methods for inflecting text. The features include pluralization,
+singularization, converting between camelCase and under_score and capitalizing
+words.
+
+Installation
+============
+
+You can install the Inflector with composer:
+
+.. code-block:: console
+
+ $ composer require doctrine/inflector
+
+Usage
+=====
+
+Using the inflector is easy, you can create a new ``Doctrine\Inflector\Inflector`` instance by using
+the ``Doctrine\Inflector\InflectorFactory`` class:
+
+.. code-block:: php
+
+ use Doctrine\Inflector\InflectorFactory;
+
+ $inflector = InflectorFactory::create()->build();
+
+By default it will create an English inflector. If you want to use another language, just pass the language
+you want to create an inflector for to the ``createForLanguage()`` method:
+
+.. code-block:: php
+
+ use Doctrine\Inflector\InflectorFactory;
+ use Doctrine\Inflector\Language;
+
+ $inflector = InflectorFactory::createForLanguage(Language::SPANISH)->build();
+
+The supported languages are as follows:
+
+- ``Language::ENGLISH``
+- ``Language::FRENCH``
+- ``Language::NORWEGIAN_BOKMAL``
+- ``Language::PORTUGUESE``
+- ``Language::SPANISH``
+- ``Language::TURKISH``
+
+If you want to manually construct the inflector instead of using a factory, you can do so like this:
+
+.. code-block:: php
+
+ use Doctrine\Inflector\CachedWordInflector;
+ use Doctrine\Inflector\RulesetInflector;
+ use Doctrine\Inflector\Rules\English;
+
+ $inflector = new Inflector(
+ new CachedWordInflector(new RulesetInflector(
+ English\Rules::getSingularRuleset()
+ )),
+ new CachedWordInflector(new RulesetInflector(
+ English\Rules::getPluralRuleset()
+ ))
+ );
+
+Adding Languages
+----------------
+
+If you are interested in adding support for your language, take a look at the other languages defined in the
+``Doctrine\Inflector\Rules`` namespace and the tests located in ``Doctrine\Tests\Inflector\Rules``. You can copy
+one of the languages and update the rules for your language.
+
+Once you have done this, send a pull request to the ``doctrine/inflector`` repository with the additions.
+
+Custom Setup
+============
+
+If you want to setup custom singular and plural rules, you can configure these in the factory:
+
+.. code-block:: php
+
+ use Doctrine\Inflector\InflectorFactory;
+ use Doctrine\Inflector\Rules\Pattern;
+ use Doctrine\Inflector\Rules\Patterns;
+ use Doctrine\Inflector\Rules\Ruleset;
+ use Doctrine\Inflector\Rules\Substitution;
+ use Doctrine\Inflector\Rules\Substitutions;
+ use Doctrine\Inflector\Rules\Transformation;
+ use Doctrine\Inflector\Rules\Transformations;
+ use Doctrine\Inflector\Rules\Word;
+
+ $inflector = InflectorFactory::create()
+ ->withSingularRules(
+ new Ruleset(
+ new Transformations(
+ new Transformation(new Pattern('/^(bil)er$/i'), '\1'),
+ new Transformation(new Pattern('/^(inflec|contribu)tors$/i'), '\1ta')
+ ),
+ new Patterns(new Pattern('singulars')),
+ new Substitutions(new Substitution(new Word('spins'), new Word('spinor')))
+ )
+ )
+ ->withPluralRules(
+ new Ruleset(
+ new Transformations(
+ new Transformation(new Pattern('^(bil)er$'), '\1'),
+ new Transformation(new Pattern('^(inflec|contribu)tors$'), '\1ta')
+ ),
+ new Patterns(new Pattern('noflect'), new Pattern('abtuse')),
+ new Substitutions(
+ new Substitution(new Word('amaze'), new Word('amazable')),
+ new Substitution(new Word('phone'), new Word('phonezes'))
+ )
+ )
+ )
+ ->build();
+
+No operation inflector
+----------------------
+
+The ``Doctrine\Inflector\NoopWordInflector`` may be used to configure an inflector that doesn't perform any operation for
+pluralization and/or singularization. If will simply return the input as output.
+
+This is an implementation of the `Null Object design pattern `_.
+
+.. code-block:: php
+
+ use Doctrine\Inflector\Inflector;
+ use Doctrine\Inflector\NoopWordInflector;
+
+ $inflector = new Inflector(new NoopWordInflector(), new NoopWordInflector());
+
+Tableize
+========
+
+Converts ``ModelName`` to ``model_name``:
+
+.. code-block:: php
+
+ echo $inflector->tableize('ModelName'); // model_name
+
+Classify
+========
+
+Converts ``model_name`` to ``ModelName``:
+
+.. code-block:: php
+
+ echo $inflector->classify('model_name'); // ModelName
+
+Camelize
+========
+
+This method uses `Classify`_ and then converts the first character to lowercase:
+
+.. code-block:: php
+
+ echo $inflector->camelize('model_name'); // modelName
+
+Capitalize
+==========
+
+Takes a string and capitalizes all of the words, like PHP's built-in
+``ucwords`` function. This extends that behavior, however, by allowing the
+word delimiters to be configured, rather than only separating on
+whitespace.
+
+Here is an example:
+
+.. code-block:: php
+
+ $string = 'top-o-the-morning to all_of_you!';
+
+ echo $inflector->capitalize($string); // Top-O-The-Morning To All_of_you!
+
+ echo $inflector->capitalize($string, '-_ '); // Top-O-The-Morning To All_Of_You!
+
+Pluralize
+=========
+
+Returns a word in plural form.
+
+.. code-block:: php
+
+ echo $inflector->pluralize('browser'); // browsers
+
+Singularize
+===========
+
+Returns a word in singular form.
+
+.. code-block:: php
+
+ echo $inflector->singularize('browsers'); // browser
+
+Urlize
+======
+
+Generate a URL friendly string from a string of text:
+
+.. code-block:: php
+
+ echo $inflector->urlize('My first blog post'); // my-first-blog-post
+
+Unaccent
+========
+
+You can unaccent a string of text using the ``unaccent()`` method:
+
+.. code-block:: php
+
+ echo $inflector->unaccent('año'); // ano
+
+Legacy API
+==========
+
+The API present in Inflector 1.x is still available, but will be deprecated in a future release and dropped for 3.0.
+Support for languages other than English is available in the 2.0 API only.
+
+Acknowledgements
+================
+
+The language rules in this library have been adapted from several different sources, including but not limited to:
+
+- `Ruby On Rails Inflector `_
+- `ICanBoogie Inflector `_
+- `CakePHP Inflector `_
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php
new file mode 100644
index 0000000..2d52908
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php
@@ -0,0 +1,24 @@
+wordInflector = $wordInflector;
+ }
+
+ public function inflect(string $word): string
+ {
+ return $this->cache[$word] ?? $this->cache[$word] = $this->wordInflector->inflect($word);
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php
new file mode 100644
index 0000000..166061d
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php
@@ -0,0 +1,66 @@
+singularRulesets[] = $this->getSingularRuleset();
+ $this->pluralRulesets[] = $this->getPluralRuleset();
+ }
+
+ final public function build(): Inflector
+ {
+ return new Inflector(
+ new CachedWordInflector(new RulesetInflector(
+ ...$this->singularRulesets
+ )),
+ new CachedWordInflector(new RulesetInflector(
+ ...$this->pluralRulesets
+ ))
+ );
+ }
+
+ final public function withSingularRules(?Ruleset $singularRules, bool $reset = false): LanguageInflectorFactory
+ {
+ if ($reset) {
+ $this->singularRulesets = [];
+ }
+
+ if ($singularRules instanceof Ruleset) {
+ array_unshift($this->singularRulesets, $singularRules);
+ }
+
+ return $this;
+ }
+
+ final public function withPluralRules(?Ruleset $pluralRules, bool $reset = false): LanguageInflectorFactory
+ {
+ if ($reset) {
+ $this->pluralRulesets = [];
+ }
+
+ if ($pluralRules instanceof Ruleset) {
+ array_unshift($this->pluralRulesets, $pluralRules);
+ }
+
+ return $this;
+ }
+
+ abstract protected function getSingularRuleset(): Ruleset;
+
+ abstract protected function getPluralRuleset(): Ruleset;
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php
new file mode 100644
index 0000000..610a4cf
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php
@@ -0,0 +1,507 @@
+ 'A',
+ 'Á' => 'A',
+ 'Â' => 'A',
+ 'Ã' => 'A',
+ 'Ä' => 'Ae',
+ 'Æ' => 'Ae',
+ 'Å' => 'Aa',
+ 'æ' => 'a',
+ 'Ç' => 'C',
+ 'È' => 'E',
+ 'É' => 'E',
+ 'Ê' => 'E',
+ 'Ë' => 'E',
+ 'Ì' => 'I',
+ 'Í' => 'I',
+ 'Î' => 'I',
+ 'Ï' => 'I',
+ 'Ñ' => 'N',
+ 'Ò' => 'O',
+ 'Ó' => 'O',
+ 'Ô' => 'O',
+ 'Õ' => 'O',
+ 'Ö' => 'Oe',
+ 'Ù' => 'U',
+ 'Ú' => 'U',
+ 'Û' => 'U',
+ 'Ü' => 'Ue',
+ 'Ý' => 'Y',
+ 'ß' => 'ss',
+ 'à' => 'a',
+ 'á' => 'a',
+ 'â' => 'a',
+ 'ã' => 'a',
+ 'ä' => 'ae',
+ 'å' => 'aa',
+ 'ç' => 'c',
+ 'è' => 'e',
+ 'é' => 'e',
+ 'ê' => 'e',
+ 'ë' => 'e',
+ 'ì' => 'i',
+ 'í' => 'i',
+ 'î' => 'i',
+ 'ï' => 'i',
+ 'ñ' => 'n',
+ 'ò' => 'o',
+ 'ó' => 'o',
+ 'ô' => 'o',
+ 'õ' => 'o',
+ 'ö' => 'oe',
+ 'ù' => 'u',
+ 'ú' => 'u',
+ 'û' => 'u',
+ 'ü' => 'ue',
+ 'ý' => 'y',
+ 'ÿ' => 'y',
+ 'Ā' => 'A',
+ 'ā' => 'a',
+ 'Ă' => 'A',
+ 'ă' => 'a',
+ 'Ą' => 'A',
+ 'ą' => 'a',
+ 'Ć' => 'C',
+ 'ć' => 'c',
+ 'Ĉ' => 'C',
+ 'ĉ' => 'c',
+ 'Ċ' => 'C',
+ 'ċ' => 'c',
+ 'Č' => 'C',
+ 'č' => 'c',
+ 'Ď' => 'D',
+ 'ď' => 'd',
+ 'Đ' => 'D',
+ 'đ' => 'd',
+ 'Ē' => 'E',
+ 'ē' => 'e',
+ 'Ĕ' => 'E',
+ 'ĕ' => 'e',
+ 'Ė' => 'E',
+ 'ė' => 'e',
+ 'Ę' => 'E',
+ 'ę' => 'e',
+ 'Ě' => 'E',
+ 'ě' => 'e',
+ 'Ĝ' => 'G',
+ 'ĝ' => 'g',
+ 'Ğ' => 'G',
+ 'ğ' => 'g',
+ 'Ġ' => 'G',
+ 'ġ' => 'g',
+ 'Ģ' => 'G',
+ 'ģ' => 'g',
+ 'Ĥ' => 'H',
+ 'ĥ' => 'h',
+ 'Ħ' => 'H',
+ 'ħ' => 'h',
+ 'Ĩ' => 'I',
+ 'ĩ' => 'i',
+ 'Ī' => 'I',
+ 'ī' => 'i',
+ 'Ĭ' => 'I',
+ 'ĭ' => 'i',
+ 'Į' => 'I',
+ 'į' => 'i',
+ 'İ' => 'I',
+ 'ı' => 'i',
+ 'IJ' => 'IJ',
+ 'ij' => 'ij',
+ 'Ĵ' => 'J',
+ 'ĵ' => 'j',
+ 'Ķ' => 'K',
+ 'ķ' => 'k',
+ 'ĸ' => 'k',
+ 'Ĺ' => 'L',
+ 'ĺ' => 'l',
+ 'Ļ' => 'L',
+ 'ļ' => 'l',
+ 'Ľ' => 'L',
+ 'ľ' => 'l',
+ 'Ŀ' => 'L',
+ 'ŀ' => 'l',
+ 'Ł' => 'L',
+ 'ł' => 'l',
+ 'Ń' => 'N',
+ 'ń' => 'n',
+ 'Ņ' => 'N',
+ 'ņ' => 'n',
+ 'Ň' => 'N',
+ 'ň' => 'n',
+ 'ʼn' => 'N',
+ 'Ŋ' => 'n',
+ 'ŋ' => 'N',
+ 'Ō' => 'O',
+ 'ō' => 'o',
+ 'Ŏ' => 'O',
+ 'ŏ' => 'o',
+ 'Ő' => 'O',
+ 'ő' => 'o',
+ 'Œ' => 'OE',
+ 'œ' => 'oe',
+ 'Ø' => 'O',
+ 'ø' => 'o',
+ 'Ŕ' => 'R',
+ 'ŕ' => 'r',
+ 'Ŗ' => 'R',
+ 'ŗ' => 'r',
+ 'Ř' => 'R',
+ 'ř' => 'r',
+ 'Ś' => 'S',
+ 'ś' => 's',
+ 'Ŝ' => 'S',
+ 'ŝ' => 's',
+ 'Ş' => 'S',
+ 'ş' => 's',
+ 'Š' => 'S',
+ 'š' => 's',
+ 'Ţ' => 'T',
+ 'ţ' => 't',
+ 'Ť' => 'T',
+ 'ť' => 't',
+ 'Ŧ' => 'T',
+ 'ŧ' => 't',
+ 'Ũ' => 'U',
+ 'ũ' => 'u',
+ 'Ū' => 'U',
+ 'ū' => 'u',
+ 'Ŭ' => 'U',
+ 'ŭ' => 'u',
+ 'Ů' => 'U',
+ 'ů' => 'u',
+ 'Ű' => 'U',
+ 'ű' => 'u',
+ 'Ų' => 'U',
+ 'ų' => 'u',
+ 'Ŵ' => 'W',
+ 'ŵ' => 'w',
+ 'Ŷ' => 'Y',
+ 'ŷ' => 'y',
+ 'Ÿ' => 'Y',
+ 'Ź' => 'Z',
+ 'ź' => 'z',
+ 'Ż' => 'Z',
+ 'ż' => 'z',
+ 'Ž' => 'Z',
+ 'ž' => 'z',
+ 'ſ' => 's',
+ '€' => 'E',
+ '£' => '',
+ ];
+
+ /** @var WordInflector */
+ private $singularizer;
+
+ /** @var WordInflector */
+ private $pluralizer;
+
+ public function __construct(WordInflector $singularizer, WordInflector $pluralizer)
+ {
+ $this->singularizer = $singularizer;
+ $this->pluralizer = $pluralizer;
+ }
+
+ /**
+ * Converts a word into the format for a Doctrine table name. Converts 'ModelName' to 'model_name'.
+ */
+ public function tableize(string $word): string
+ {
+ $tableized = preg_replace('~(?<=\\w)([A-Z])~u', '_$1', $word);
+
+ if ($tableized === null) {
+ throw new RuntimeException(sprintf(
+ 'preg_replace returned null for value "%s"',
+ $word
+ ));
+ }
+
+ return mb_strtolower($tableized);
+ }
+
+ /**
+ * Converts a word into the format for a Doctrine class name. Converts 'table_name' to 'TableName'.
+ */
+ public function classify(string $word): string
+ {
+ return str_replace([' ', '_', '-'], '', ucwords($word, ' _-'));
+ }
+
+ /**
+ * Camelizes a word. This uses the classify() method and turns the first character to lowercase.
+ */
+ public function camelize(string $word): string
+ {
+ return lcfirst($this->classify($word));
+ }
+
+ /**
+ * Uppercases words with configurable delimiters between words.
+ *
+ * Takes a string and capitalizes all of the words, like PHP's built-in
+ * ucwords function. This extends that behavior, however, by allowing the
+ * word delimiters to be configured, rather than only separating on
+ * whitespace.
+ *
+ * Here is an example:
+ *
+ * capitalize($string);
+ * // Top-O-The-Morning To All_of_you!
+ *
+ * echo $inflector->capitalize($string, '-_ ');
+ * // Top-O-The-Morning To All_Of_You!
+ * ?>
+ *
+ *
+ * @param string $string The string to operate on.
+ * @param string $delimiters A list of word separators.
+ *
+ * @return string The string with all delimiter-separated words capitalized.
+ */
+ public function capitalize(string $string, string $delimiters = " \n\t\r\0\x0B-"): string
+ {
+ return ucwords($string, $delimiters);
+ }
+
+ /**
+ * Checks if the given string seems like it has utf8 characters in it.
+ *
+ * @param string $string The string to check for utf8 characters in.
+ */
+ public function seemsUtf8(string $string): bool
+ {
+ for ($i = 0; $i < strlen($string); $i++) {
+ if (ord($string[$i]) < 0x80) {
+ continue; // 0bbbbbbb
+ }
+
+ if ((ord($string[$i]) & 0xE0) === 0xC0) {
+ $n = 1; // 110bbbbb
+ } elseif ((ord($string[$i]) & 0xF0) === 0xE0) {
+ $n = 2; // 1110bbbb
+ } elseif ((ord($string[$i]) & 0xF8) === 0xF0) {
+ $n = 3; // 11110bbb
+ } elseif ((ord($string[$i]) & 0xFC) === 0xF8) {
+ $n = 4; // 111110bb
+ } elseif ((ord($string[$i]) & 0xFE) === 0xFC) {
+ $n = 5; // 1111110b
+ } else {
+ return false; // Does not match any model
+ }
+
+ for ($j = 0; $j < $n; $j++) { // n bytes matching 10bbbbbb follow ?
+ if (++$i === strlen($string) || ((ord($string[$i]) & 0xC0) !== 0x80)) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Remove any illegal characters, accents, etc.
+ *
+ * @param string $string String to unaccent
+ *
+ * @return string Unaccented string
+ */
+ public function unaccent(string $string): string
+ {
+ if (preg_match('/[\x80-\xff]/', $string) === false) {
+ return $string;
+ }
+
+ if ($this->seemsUtf8($string)) {
+ $string = strtr($string, self::ACCENTED_CHARACTERS);
+ } else {
+ $characters = [];
+
+ // Assume ISO-8859-1 if not UTF-8
+ $characters['in'] =
+ chr(128)
+ . chr(131)
+ . chr(138)
+ . chr(142)
+ . chr(154)
+ . chr(158)
+ . chr(159)
+ . chr(162)
+ . chr(165)
+ . chr(181)
+ . chr(192)
+ . chr(193)
+ . chr(194)
+ . chr(195)
+ . chr(196)
+ . chr(197)
+ . chr(199)
+ . chr(200)
+ . chr(201)
+ . chr(202)
+ . chr(203)
+ . chr(204)
+ . chr(205)
+ . chr(206)
+ . chr(207)
+ . chr(209)
+ . chr(210)
+ . chr(211)
+ . chr(212)
+ . chr(213)
+ . chr(214)
+ . chr(216)
+ . chr(217)
+ . chr(218)
+ . chr(219)
+ . chr(220)
+ . chr(221)
+ . chr(224)
+ . chr(225)
+ . chr(226)
+ . chr(227)
+ . chr(228)
+ . chr(229)
+ . chr(231)
+ . chr(232)
+ . chr(233)
+ . chr(234)
+ . chr(235)
+ . chr(236)
+ . chr(237)
+ . chr(238)
+ . chr(239)
+ . chr(241)
+ . chr(242)
+ . chr(243)
+ . chr(244)
+ . chr(245)
+ . chr(246)
+ . chr(248)
+ . chr(249)
+ . chr(250)
+ . chr(251)
+ . chr(252)
+ . chr(253)
+ . chr(255);
+
+ $characters['out'] = 'EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy';
+
+ $string = strtr($string, $characters['in'], $characters['out']);
+
+ $doubleChars = [];
+
+ $doubleChars['in'] = [
+ chr(140),
+ chr(156),
+ chr(198),
+ chr(208),
+ chr(222),
+ chr(223),
+ chr(230),
+ chr(240),
+ chr(254),
+ ];
+
+ $doubleChars['out'] = ['OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th'];
+
+ $string = str_replace($doubleChars['in'], $doubleChars['out'], $string);
+ }
+
+ return $string;
+ }
+
+ /**
+ * Convert any passed string to a url friendly string.
+ * Converts 'My first blog post' to 'my-first-blog-post'
+ *
+ * @param string $string String to urlize.
+ *
+ * @return string Urlized string.
+ */
+ public function urlize(string $string): string
+ {
+ // Remove all non url friendly characters with the unaccent function
+ $unaccented = $this->unaccent($string);
+
+ if (function_exists('mb_strtolower')) {
+ $lowered = mb_strtolower($unaccented);
+ } else {
+ $lowered = strtolower($unaccented);
+ }
+
+ $replacements = [
+ '/\W/' => ' ',
+ '/([A-Z]+)([A-Z][a-z])/' => '\1_\2',
+ '/([a-z\d])([A-Z])/' => '\1_\2',
+ '/[^A-Z^a-z^0-9^\/]+/' => '-',
+ ];
+
+ $urlized = $lowered;
+
+ foreach ($replacements as $pattern => $replacement) {
+ $replaced = preg_replace($pattern, $replacement, $urlized);
+
+ if ($replaced === null) {
+ throw new RuntimeException(sprintf(
+ 'preg_replace returned null for value "%s"',
+ $urlized
+ ));
+ }
+
+ $urlized = $replaced;
+ }
+
+ return trim($urlized, '-');
+ }
+
+ /**
+ * Returns a word in singular form.
+ *
+ * @param string $word The word in plural form.
+ *
+ * @return string The word in singular form.
+ */
+ public function singularize(string $word): string
+ {
+ return $this->singularizer->inflect($word);
+ }
+
+ /**
+ * Returns a word in plural form.
+ *
+ * @param string $word The word in singular form.
+ *
+ * @return string The word in plural form.
+ */
+ public function pluralize(string $word): string
+ {
+ return $this->pluralizer->inflect($word);
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php
new file mode 100644
index 0000000..a0740a7
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php
@@ -0,0 +1,52 @@
+getFlippedSubstitutions()
+ );
+ }
+
+ public static function getPluralRuleset(): Ruleset
+ {
+ return new Ruleset(
+ new Transformations(...Inflectible::getPlural()),
+ new Patterns(...Uninflected::getPlural()),
+ new Substitutions(...Inflectible::getIrregular())
+ );
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php
new file mode 100644
index 0000000..02257de
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php
@@ -0,0 +1,189 @@
+getFlippedSubstitutions()
+ );
+ }
+
+ public static function getPluralRuleset(): Ruleset
+ {
+ return new Ruleset(
+ new Transformations(...Inflectible::getPlural()),
+ new Patterns(...Uninflected::getPlural()),
+ new Substitutions(...Inflectible::getIrregular())
+ );
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php
new file mode 100644
index 0000000..9747f91
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php
@@ -0,0 +1,28 @@
+getFlippedSubstitutions()
+ );
+ }
+
+ public static function getPluralRuleset(): Ruleset
+ {
+ return new Ruleset(
+ new Transformations(...Inflectible::getPlural()),
+ new Patterns(...Uninflected::getPlural()),
+ new Substitutions(...Inflectible::getIrregular())
+ );
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php
new file mode 100644
index 0000000..5d8d3b3
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php
@@ -0,0 +1,30 @@
+pattern = $pattern;
+
+ if (isset($this->pattern[0]) && $this->pattern[0] === '/') {
+ $this->regex = $this->pattern;
+ } else {
+ $this->regex = '/' . $this->pattern . '/i';
+ }
+ }
+
+ public function getPattern(): string
+ {
+ return $this->pattern;
+ }
+
+ public function getRegex(): string
+ {
+ return $this->regex;
+ }
+
+ public function matches(string $word): bool
+ {
+ return preg_match($this->getRegex(), $word) === 1;
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php
new file mode 100644
index 0000000..e8d45cb
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php
@@ -0,0 +1,34 @@
+patterns = $patterns;
+
+ $patterns = array_map(static function (Pattern $pattern): string {
+ return $pattern->getPattern();
+ }, $this->patterns);
+
+ $this->regex = '/^(?:' . implode('|', $patterns) . ')$/i';
+ }
+
+ public function matches(string $word): bool
+ {
+ return preg_match($this->regex, $word, $regs) === 1;
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php
new file mode 100644
index 0000000..0d41fe7
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php
@@ -0,0 +1,98 @@
+getFlippedSubstitutions()
+ );
+ }
+
+ public static function getPluralRuleset(): Ruleset
+ {
+ return new Ruleset(
+ new Transformations(...Inflectible::getPlural()),
+ new Patterns(...Uninflected::getPlural()),
+ new Substitutions(...Inflectible::getIrregular())
+ );
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php
new file mode 100644
index 0000000..b8e988f
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php
@@ -0,0 +1,32 @@
+regular = $regular;
+ $this->uninflected = $uninflected;
+ $this->irregular = $irregular;
+ }
+
+ public function getRegular(): Transformations
+ {
+ return $this->regular;
+ }
+
+ public function getUninflected(): Patterns
+ {
+ return $this->uninflected;
+ }
+
+ public function getIrregular(): Substitutions
+ {
+ return $this->irregular;
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php
new file mode 100644
index 0000000..9129460
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php
@@ -0,0 +1,47 @@
+getFlippedSubstitutions()
+ );
+ }
+
+ public static function getPluralRuleset(): Ruleset
+ {
+ return new Ruleset(
+ new Transformations(...Inflectible::getPlural()),
+ new Patterns(...Uninflected::getPlural()),
+ new Substitutions(...Inflectible::getIrregular())
+ );
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php
new file mode 100644
index 0000000..c26ebe9
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php
@@ -0,0 +1,30 @@
+from = $from;
+ $this->to = $to;
+ }
+
+ public function getFrom(): Word
+ {
+ return $this->from;
+ }
+
+ public function getTo(): Word
+ {
+ return $this->to;
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php
new file mode 100644
index 0000000..17ee296
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php
@@ -0,0 +1,57 @@
+substitutions[$substitution->getFrom()->getWord()] = $substitution;
+ }
+ }
+
+ public function getFlippedSubstitutions(): Substitutions
+ {
+ $substitutions = [];
+
+ foreach ($this->substitutions as $substitution) {
+ $substitutions[] = new Substitution(
+ $substitution->getTo(),
+ $substitution->getFrom()
+ );
+ }
+
+ return new Substitutions(...$substitutions);
+ }
+
+ public function inflect(string $word): string
+ {
+ $lowerWord = strtolower($word);
+
+ if (isset($this->substitutions[$lowerWord])) {
+ $firstLetterUppercase = $lowerWord[0] !== $word[0];
+
+ $toWord = $this->substitutions[$lowerWord]->getTo()->getWord();
+
+ if ($firstLetterUppercase) {
+ return strtoupper($toWord[0]) . substr($toWord, 1);
+ }
+
+ return $toWord;
+ }
+
+ return $word;
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php
new file mode 100644
index 0000000..30dcd59
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php
@@ -0,0 +1,39 @@
+pattern = $pattern;
+ $this->replacement = $replacement;
+ }
+
+ public function getPattern(): Pattern
+ {
+ return $this->pattern;
+ }
+
+ public function getReplacement(): string
+ {
+ return $this->replacement;
+ }
+
+ public function inflect(string $word): string
+ {
+ return (string) preg_replace($this->pattern->getRegex(), $this->replacement, $word);
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php
new file mode 100644
index 0000000..b6a48fa
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php
@@ -0,0 +1,29 @@
+transformations = $transformations;
+ }
+
+ public function inflect(string $word): string
+ {
+ foreach ($this->transformations as $transformation) {
+ if ($transformation->getPattern()->matches($word)) {
+ return $transformation->inflect($word);
+ }
+ }
+
+ return $word;
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php
new file mode 100644
index 0000000..a2bda0d
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php
@@ -0,0 +1,34 @@
+getFlippedSubstitutions()
+ );
+ }
+
+ public static function getPluralRuleset(): Ruleset
+ {
+ return new Ruleset(
+ new Transformations(...Inflectible::getPlural()),
+ new Patterns(...Uninflected::getPlural()),
+ new Substitutions(...Inflectible::getIrregular())
+ );
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php
new file mode 100644
index 0000000..ec1c37d
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php
@@ -0,0 +1,30 @@
+word = $word;
+ }
+
+ public function getWord(): string
+ {
+ return $this->word;
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php
new file mode 100644
index 0000000..12b2ed5
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php
@@ -0,0 +1,56 @@
+rulesets = array_merge([$ruleset], $rulesets);
+ }
+
+ public function inflect(string $word): string
+ {
+ if ($word === '') {
+ return '';
+ }
+
+ foreach ($this->rulesets as $ruleset) {
+ if ($ruleset->getUninflected()->matches($word)) {
+ return $word;
+ }
+
+ $inflected = $ruleset->getIrregular()->inflect($word);
+
+ if ($inflected !== $word) {
+ return $inflected;
+ }
+
+ $inflected = $ruleset->getRegular()->inflect($word);
+
+ if ($inflected !== $word) {
+ return $inflected;
+ }
+ }
+
+ return $word;
+ }
+}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php
new file mode 100644
index 0000000..b88b1d6
--- /dev/null
+++ b/vendor/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php
@@ -0,0 +1,10 @@
+all();
+ } elseif (! is_array($values)) {
+ continue;
+ }
+
+ $results[] = $values;
+ }
+
+ return array_merge([], ...$results);
+ }
+
+ /**
+ * Cross join the given arrays, returning all possible permutations.
+ *
+ * @param iterable ...$arrays
+ * @return array
+ */
+ public static function crossJoin(...$arrays)
+ {
+ $results = [[]];
+
+ foreach ($arrays as $index => $array) {
+ $append = [];
+
+ foreach ($results as $product) {
+ foreach ($array as $item) {
+ $product[$index] = $item;
+
+ $append[] = $product;
+ }
+ }
+
+ $results = $append;
+ }
+
+ return $results;
+ }
+
+ /**
+ * Divide an array into two arrays. One with keys and the other with values.
+ *
+ * @param array $array
+ * @return array
+ */
+ public static function divide($array)
+ {
+ return [array_keys($array), array_values($array)];
+ }
+
+ /**
+ * Flatten a multi-dimensional associative array with dots.
+ *
+ * @param iterable $array
+ * @param string $prepend
+ * @return array
+ */
+ public static function dot($array, $prepend = '')
+ {
+ $results = [];
+
+ foreach ($array as $key => $value) {
+ if (is_array($value) && ! empty($value)) {
+ $results = array_merge($results, static::dot($value, $prepend.$key.'.'));
+ } else {
+ $results[$prepend.$key] = $value;
+ }
+ }
+
+ return $results;
+ }
+
+ /**
+ * Convert a flatten "dot" notation array into an expanded array.
+ *
+ * @param iterable $array
+ * @return array
+ */
+ public static function undot($array)
+ {
+ $results = [];
+
+ foreach ($array as $key => $value) {
+ static::set($results, $key, $value);
+ }
+
+ return $results;
+ }
+
+ /**
+ * Get all of the given array except for a specified array of keys.
+ *
+ * @param array $array
+ * @param array|string|int|float $keys
+ * @return array
+ */
+ public static function except($array, $keys)
+ {
+ static::forget($array, $keys);
+
+ return $array;
+ }
+
+ /**
+ * Determine if the given key exists in the provided array.
+ *
+ * @param \ArrayAccess|array $array
+ * @param string|int|float $key
+ * @return bool
+ */
+ public static function exists($array, $key)
+ {
+ if ($array instanceof Enumerable) {
+ return $array->has($key);
+ }
+
+ if ($array instanceof ArrayAccess) {
+ return $array->offsetExists($key);
+ }
+
+ if (is_float($key)) {
+ $key = (string) $key;
+ }
+
+ return array_key_exists($key, $array);
+ }
+
+ /**
+ * Return the first element in an array passing a given truth test.
+ *
+ * @template TKey
+ * @template TValue
+ * @template TFirstDefault
+ *
+ * @param iterable $array
+ * @param (callable(TValue, TKey): bool)|null $callback
+ * @param TFirstDefault|(\Closure(): TFirstDefault) $default
+ * @return TValue|TFirstDefault
+ */
+ public static function first($array, ?callable $callback = null, $default = null)
+ {
+ if (is_null($callback)) {
+ if (empty($array)) {
+ return value($default);
+ }
+
+ foreach ($array as $item) {
+ return $item;
+ }
+
+ return value($default);
+ }
+
+ foreach ($array as $key => $value) {
+ if ($callback($value, $key)) {
+ return $value;
+ }
+ }
+
+ return value($default);
+ }
+
+ /**
+ * Return the last element in an array passing a given truth test.
+ *
+ * @template TKey
+ * @template TValue
+ * @template TLastDefault
+ *
+ * @param iterable $array
+ * @param (callable(TValue, TKey): bool)|null $callback
+ * @param TLastDefault|(\Closure(): TLastDefault) $default
+ * @return TValue|TLastDefault
+ */
+ public static function last($array, ?callable $callback = null, $default = null)
+ {
+ if (is_null($callback)) {
+ return empty($array) ? value($default) : end($array);
+ }
+
+ return static::first(array_reverse($array, true), $callback, $default);
+ }
+
+ /**
+ * Take the first or last {$limit} items from an array.
+ *
+ * @param array $array
+ * @param int $limit
+ * @return array
+ */
+ public static function take($array, $limit)
+ {
+ if ($limit < 0) {
+ return array_slice($array, $limit, abs($limit));
+ }
+
+ return array_slice($array, 0, $limit);
+ }
+
+ /**
+ * Flatten a multi-dimensional array into a single level.
+ *
+ * @param iterable $array
+ * @param int $depth
+ * @return array
+ */
+ public static function flatten($array, $depth = INF)
+ {
+ $result = [];
+
+ foreach ($array as $item) {
+ $item = $item instanceof Collection ? $item->all() : $item;
+
+ if (! is_array($item)) {
+ $result[] = $item;
+ } else {
+ $values = $depth === 1
+ ? array_values($item)
+ : static::flatten($item, $depth - 1);
+
+ foreach ($values as $value) {
+ $result[] = $value;
+ }
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Remove one or many array items from a given array using "dot" notation.
+ *
+ * @param array $array
+ * @param array|string|int|float $keys
+ * @return void
+ */
+ public static function forget(&$array, $keys)
+ {
+ $original = &$array;
+
+ $keys = (array) $keys;
+
+ if (count($keys) === 0) {
+ return;
+ }
+
+ foreach ($keys as $key) {
+ // if the exact key exists in the top-level, remove it
+ if (static::exists($array, $key)) {
+ unset($array[$key]);
+
+ continue;
+ }
+
+ $parts = explode('.', $key);
+
+ // clean up before each pass
+ $array = &$original;
+
+ while (count($parts) > 1) {
+ $part = array_shift($parts);
+
+ if (isset($array[$part]) && static::accessible($array[$part])) {
+ $array = &$array[$part];
+ } else {
+ continue 2;
+ }
+ }
+
+ unset($array[array_shift($parts)]);
+ }
+ }
+
+ /**
+ * Get an item from an array using "dot" notation.
+ *
+ * @param \ArrayAccess|array $array
+ * @param string|int|null $key
+ * @param mixed $default
+ * @return mixed
+ */
+ public static function get($array, $key, $default = null)
+ {
+ if (! static::accessible($array)) {
+ return value($default);
+ }
+
+ if (is_null($key)) {
+ return $array;
+ }
+
+ if (static::exists($array, $key)) {
+ return $array[$key];
+ }
+
+ if (! str_contains($key, '.')) {
+ return $array[$key] ?? value($default);
+ }
+
+ foreach (explode('.', $key) as $segment) {
+ if (static::accessible($array) && static::exists($array, $segment)) {
+ $array = $array[$segment];
+ } else {
+ return value($default);
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * Check if an item or items exist in an array using "dot" notation.
+ *
+ * @param \ArrayAccess|array $array
+ * @param string|array $keys
+ * @return bool
+ */
+ public static function has($array, $keys)
+ {
+ $keys = (array) $keys;
+
+ if (! $array || $keys === []) {
+ return false;
+ }
+
+ foreach ($keys as $key) {
+ $subKeyArray = $array;
+
+ if (static::exists($array, $key)) {
+ continue;
+ }
+
+ foreach (explode('.', $key) as $segment) {
+ if (static::accessible($subKeyArray) && static::exists($subKeyArray, $segment)) {
+ $subKeyArray = $subKeyArray[$segment];
+ } else {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Determine if any of the keys exist in an array using "dot" notation.
+ *
+ * @param \ArrayAccess|array $array
+ * @param string|array $keys
+ * @return bool
+ */
+ public static function hasAny($array, $keys)
+ {
+ if (is_null($keys)) {
+ return false;
+ }
+
+ $keys = (array) $keys;
+
+ if (! $array) {
+ return false;
+ }
+
+ if ($keys === []) {
+ return false;
+ }
+
+ foreach ($keys as $key) {
+ if (static::has($array, $key)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Determines if an array is associative.
+ *
+ * An array is "associative" if it doesn't have sequential numerical keys beginning with zero.
+ *
+ * @param array $array
+ * @return bool
+ */
+ public static function isAssoc(array $array)
+ {
+ return ! array_is_list($array);
+ }
+
+ /**
+ * Determines if an array is a list.
+ *
+ * An array is a "list" if all array keys are sequential integers starting from 0 with no gaps in between.
+ *
+ * @param array $array
+ * @return bool
+ */
+ public static function isList($array)
+ {
+ return array_is_list($array);
+ }
+
+ /**
+ * Join all items using a string. The final items can use a separate glue string.
+ *
+ * @param array $array
+ * @param string $glue
+ * @param string $finalGlue
+ * @return string
+ */
+ public static function join($array, $glue, $finalGlue = '')
+ {
+ if ($finalGlue === '') {
+ return implode($glue, $array);
+ }
+
+ if (count($array) === 0) {
+ return '';
+ }
+
+ if (count($array) === 1) {
+ return end($array);
+ }
+
+ $finalItem = array_pop($array);
+
+ return implode($glue, $array).$finalGlue.$finalItem;
+ }
+
+ /**
+ * Key an associative array by a field or using a callback.
+ *
+ * @param array $array
+ * @param callable|array|string $keyBy
+ * @return array
+ */
+ public static function keyBy($array, $keyBy)
+ {
+ return (new Collection($array))->keyBy($keyBy)->all();
+ }
+
+ /**
+ * Prepend the key names of an associative array.
+ *
+ * @param array $array
+ * @param string $prependWith
+ * @return array
+ */
+ public static function prependKeysWith($array, $prependWith)
+ {
+ return static::mapWithKeys($array, fn ($item, $key) => [$prependWith.$key => $item]);
+ }
+
+ /**
+ * Get a subset of the items from the given array.
+ *
+ * @param array $array
+ * @param array|string $keys
+ * @return array
+ */
+ public static function only($array, $keys)
+ {
+ return array_intersect_key($array, array_flip((array) $keys));
+ }
+
+ /**
+ * Select an array of values from an array.
+ *
+ * @param array $array
+ * @param array|string $keys
+ * @return array
+ */
+ public static function select($array, $keys)
+ {
+ $keys = static::wrap($keys);
+
+ return static::map($array, function ($item) use ($keys) {
+ $result = [];
+
+ foreach ($keys as $key) {
+ if (Arr::accessible($item) && Arr::exists($item, $key)) {
+ $result[$key] = $item[$key];
+ } elseif (is_object($item) && isset($item->{$key})) {
+ $result[$key] = $item->{$key};
+ }
+ }
+
+ return $result;
+ });
+ }
+
+ /**
+ * Pluck an array of values from an array.
+ *
+ * @param iterable $array
+ * @param string|array|int|null $value
+ * @param string|array|null $key
+ * @return array
+ */
+ public static function pluck($array, $value, $key = null)
+ {
+ $results = [];
+
+ [$value, $key] = static::explodePluckParameters($value, $key);
+
+ foreach ($array as $item) {
+ $itemValue = data_get($item, $value);
+
+ // If the key is "null", we will just append the value to the array and keep
+ // looping. Otherwise we will key the array using the value of the key we
+ // received from the developer. Then we'll return the final array form.
+ if (is_null($key)) {
+ $results[] = $itemValue;
+ } else {
+ $itemKey = data_get($item, $key);
+
+ if (is_object($itemKey) && method_exists($itemKey, '__toString')) {
+ $itemKey = (string) $itemKey;
+ }
+
+ $results[$itemKey] = $itemValue;
+ }
+ }
+
+ return $results;
+ }
+
+ /**
+ * Explode the "value" and "key" arguments passed to "pluck".
+ *
+ * @param string|array $value
+ * @param string|array|null $key
+ * @return array
+ */
+ protected static function explodePluckParameters($value, $key)
+ {
+ $value = is_string($value) ? explode('.', $value) : $value;
+
+ $key = is_null($key) || is_array($key) ? $key : explode('.', $key);
+
+ return [$value, $key];
+ }
+
+ /**
+ * Run a map over each of the items in the array.
+ *
+ * @param array $array
+ * @param callable $callback
+ * @return array
+ */
+ public static function map(array $array, callable $callback)
+ {
+ $keys = array_keys($array);
+
+ try {
+ $items = array_map($callback, $array, $keys);
+ } catch (ArgumentCountError) {
+ $items = array_map($callback, $array);
+ }
+
+ return array_combine($keys, $items);
+ }
+
+ /**
+ * Run an associative map over each of the items.
+ *
+ * The callback should return an associative array with a single key/value pair.
+ *
+ * @template TKey
+ * @template TValue
+ * @template TMapWithKeysKey of array-key
+ * @template TMapWithKeysValue
+ *
+ * @param array $array
+ * @param callable(TValue, TKey): array $callback
+ * @return array
+ */
+ public static function mapWithKeys(array $array, callable $callback)
+ {
+ $result = [];
+
+ foreach ($array as $key => $value) {
+ $assoc = $callback($value, $key);
+
+ foreach ($assoc as $mapKey => $mapValue) {
+ $result[$mapKey] = $mapValue;
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Run a map over each nested chunk of items.
+ *
+ * @template TKey
+ * @template TValue
+ *
+ * @param array $array
+ * @param callable(mixed...): TValue $callback
+ * @return array
+ */
+ public static function mapSpread(array $array, callable $callback)
+ {
+ return static::map($array, function ($chunk, $key) use ($callback) {
+ $chunk[] = $key;
+
+ return $callback(...$chunk);
+ });
+ }
+
+ /**
+ * Push an item onto the beginning of an array.
+ *
+ * @param array $array
+ * @param mixed $value
+ * @param mixed $key
+ * @return array
+ */
+ public static function prepend($array, $value, $key = null)
+ {
+ if (func_num_args() == 2) {
+ array_unshift($array, $value);
+ } else {
+ $array = [$key => $value] + $array;
+ }
+
+ return $array;
+ }
+
+ /**
+ * Get a value from the array, and remove it.
+ *
+ * @param array $array
+ * @param string|int $key
+ * @param mixed $default
+ * @return mixed
+ */
+ public static function pull(&$array, $key, $default = null)
+ {
+ $value = static::get($array, $key, $default);
+
+ static::forget($array, $key);
+
+ return $value;
+ }
+
+ /**
+ * Convert the array into a query string.
+ *
+ * @param array $array
+ * @return string
+ */
+ public static function query($array)
+ {
+ return http_build_query($array, '', '&', PHP_QUERY_RFC3986);
+ }
+
+ /**
+ * Get one or a specified number of random values from an array.
+ *
+ * @param array $array
+ * @param int|null $number
+ * @param bool $preserveKeys
+ * @return mixed
+ *
+ * @throws \InvalidArgumentException
+ */
+ public static function random($array, $number = null, $preserveKeys = false)
+ {
+ $requested = is_null($number) ? 1 : $number;
+
+ $count = count($array);
+
+ if ($requested > $count) {
+ throw new InvalidArgumentException(
+ "You requested {$requested} items, but there are only {$count} items available."
+ );
+ }
+
+ if (empty($array) || (! is_null($number) && $number <= 0)) {
+ return is_null($number) ? null : [];
+ }
+
+ $keys = (new Randomizer)->pickArrayKeys($array, $requested);
+
+ if (is_null($number)) {
+ return $array[$keys[0]];
+ }
+
+ $results = [];
+
+ if ($preserveKeys) {
+ foreach ($keys as $key) {
+ $results[$key] = $array[$key];
+ }
+ } else {
+ foreach ($keys as $key) {
+ $results[] = $array[$key];
+ }
+ }
+
+ return $results;
+ }
+
+ /**
+ * Set an array item to a given value using "dot" notation.
+ *
+ * If no key is given to the method, the entire array will be replaced.
+ *
+ * @param array $array
+ * @param string|int|null $key
+ * @param mixed $value
+ * @return array
+ */
+ public static function set(&$array, $key, $value)
+ {
+ if (is_null($key)) {
+ return $array = $value;
+ }
+
+ $keys = explode('.', $key);
+
+ foreach ($keys as $i => $key) {
+ if (count($keys) === 1) {
+ break;
+ }
+
+ unset($keys[$i]);
+
+ // If the key doesn't exist at this depth, we will just create an empty array
+ // to hold the next value, allowing us to create the arrays to hold final
+ // values at the correct depth. Then we'll keep digging into the array.
+ if (! isset($array[$key]) || ! is_array($array[$key])) {
+ $array[$key] = [];
+ }
+
+ $array = &$array[$key];
+ }
+
+ $array[array_shift($keys)] = $value;
+
+ return $array;
+ }
+
+ /**
+ * Shuffle the given array and return the result.
+ *
+ * @param array $array
+ * @return array
+ */
+ public static function shuffle($array)
+ {
+ return (new Randomizer)->shuffleArray($array);
+ }
+
+ /**
+ * Sort the array using the given callback or "dot" notation.
+ *
+ * @param array $array
+ * @param callable|array|string|null $callback
+ * @return array
+ */
+ public static function sort($array, $callback = null)
+ {
+ return (new Collection($array))->sortBy($callback)->all();
+ }
+
+ /**
+ * Sort the array in descending order using the given callback or "dot" notation.
+ *
+ * @param array $array
+ * @param callable|array|string|null $callback
+ * @return array
+ */
+ public static function sortDesc($array, $callback = null)
+ {
+ return (new Collection($array))->sortByDesc($callback)->all();
+ }
+
+ /**
+ * Recursively sort an array by keys and values.
+ *
+ * @param array $array
+ * @param int $options
+ * @param bool $descending
+ * @return array
+ */
+ public static function sortRecursive($array, $options = SORT_REGULAR, $descending = false)
+ {
+ foreach ($array as &$value) {
+ if (is_array($value)) {
+ $value = static::sortRecursive($value, $options, $descending);
+ }
+ }
+
+ if (! array_is_list($array)) {
+ $descending
+ ? krsort($array, $options)
+ : ksort($array, $options);
+ } else {
+ $descending
+ ? rsort($array, $options)
+ : sort($array, $options);
+ }
+
+ return $array;
+ }
+
+ /**
+ * Recursively sort an array by keys and values in descending order.
+ *
+ * @param array $array
+ * @param int $options
+ * @return array
+ */
+ public static function sortRecursiveDesc($array, $options = SORT_REGULAR)
+ {
+ return static::sortRecursive($array, $options, true);
+ }
+
+ /**
+ * Conditionally compile classes from an array into a CSS class list.
+ *
+ * @param array $array
+ * @return string
+ */
+ public static function toCssClasses($array)
+ {
+ $classList = static::wrap($array);
+
+ $classes = [];
+
+ foreach ($classList as $class => $constraint) {
+ if (is_numeric($class)) {
+ $classes[] = $constraint;
+ } elseif ($constraint) {
+ $classes[] = $class;
+ }
+ }
+
+ return implode(' ', $classes);
+ }
+
+ /**
+ * Conditionally compile styles from an array into a style list.
+ *
+ * @param array $array
+ * @return string
+ */
+ public static function toCssStyles($array)
+ {
+ $styleList = static::wrap($array);
+
+ $styles = [];
+
+ foreach ($styleList as $class => $constraint) {
+ if (is_numeric($class)) {
+ $styles[] = Str::finish($constraint, ';');
+ } elseif ($constraint) {
+ $styles[] = Str::finish($class, ';');
+ }
+ }
+
+ return implode(' ', $styles);
+ }
+
+ /**
+ * Filter the array using the given callback.
+ *
+ * @param array $array
+ * @param callable $callback
+ * @return array
+ */
+ public static function where($array, callable $callback)
+ {
+ return array_filter($array, $callback, ARRAY_FILTER_USE_BOTH);
+ }
+
+ /**
+ * Filter the array using the negation of the given callback.
+ *
+ * @param array $array
+ * @param callable $callback
+ * @return array
+ */
+ public static function reject($array, callable $callback)
+ {
+ return static::where($array, fn ($value, $key) => ! $callback($value, $key));
+ }
+
+ /**
+ * Filter items where the value is not null.
+ *
+ * @param array $array
+ * @return array
+ */
+ public static function whereNotNull($array)
+ {
+ return static::where($array, fn ($value) => ! is_null($value));
+ }
+
+ /**
+ * If the given value is not an array and not null, wrap it in one.
+ *
+ * @param mixed $value
+ * @return array
+ */
+ public static function wrap($value)
+ {
+ if (is_null($value)) {
+ return [];
+ }
+
+ return is_array($value) ? $value : [$value];
+ }
+}
diff --git a/vendor/illuminate/collections/Collection.php b/vendor/illuminate/collections/Collection.php
new file mode 100644
index 0000000..01e1114
--- /dev/null
+++ b/vendor/illuminate/collections/Collection.php
@@ -0,0 +1,1923 @@
+
+ * @implements \Illuminate\Support\Enumerable
+ */
+class Collection implements ArrayAccess, CanBeEscapedWhenCastToString, Enumerable
+{
+ /**
+ * @use \Illuminate\Support\Traits\EnumeratesValues
+ */
+ use EnumeratesValues, Macroable;
+
+ /**
+ * The items contained in the collection.
+ *
+ * @var array
+ */
+ protected $items = [];
+
+ /**
+ * Create a new collection.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable|null $items
+ * @return void
+ */
+ public function __construct($items = [])
+ {
+ $this->items = $this->getArrayableItems($items);
+ }
+
+ /**
+ * Create a collection with the given range.
+ *
+ * @param int $from
+ * @param int $to
+ * @return static
+ */
+ public static function range($from, $to)
+ {
+ return new static(range($from, $to));
+ }
+
+ /**
+ * Get all of the items in the collection.
+ *
+ * @return array
+ */
+ public function all()
+ {
+ return $this->items;
+ }
+
+ /**
+ * Get a lazy collection for the items in this collection.
+ *
+ * @return \Illuminate\Support\LazyCollection
+ */
+ public function lazy()
+ {
+ return new LazyCollection($this->items);
+ }
+
+ /**
+ * Get the median of a given key.
+ *
+ * @param string|array|null $key
+ * @return float|int|null
+ */
+ public function median($key = null)
+ {
+ $values = (isset($key) ? $this->pluck($key) : $this)
+ ->filter(fn ($item) => ! is_null($item))
+ ->sort()->values();
+
+ $count = $values->count();
+
+ if ($count === 0) {
+ return;
+ }
+
+ $middle = (int) ($count / 2);
+
+ if ($count % 2) {
+ return $values->get($middle);
+ }
+
+ return (new static([
+ $values->get($middle - 1), $values->get($middle),
+ ]))->average();
+ }
+
+ /**
+ * Get the mode of a given key.
+ *
+ * @param string|array|null $key
+ * @return array|null
+ */
+ public function mode($key = null)
+ {
+ if ($this->count() === 0) {
+ return;
+ }
+
+ $collection = isset($key) ? $this->pluck($key) : $this;
+
+ $counts = new static;
+
+ $collection->each(fn ($value) => $counts[$value] = isset($counts[$value]) ? $counts[$value] + 1 : 1);
+
+ $sorted = $counts->sort();
+
+ $highestValue = $sorted->last();
+
+ return $sorted->filter(fn ($value) => $value == $highestValue)
+ ->sort()->keys()->all();
+ }
+
+ /**
+ * Collapse the collection of items into a single array.
+ *
+ * @return static
+ */
+ public function collapse()
+ {
+ return new static(Arr::collapse($this->items));
+ }
+
+ /**
+ * Collapse the collection of items into a single array while preserving its keys.
+ *
+ * @return static
+ */
+ public function collapseWithKeys()
+ {
+ if (! $this->items) {
+ return new static;
+ }
+
+ $results = [];
+
+ foreach ($this->items as $key => $values) {
+ if ($values instanceof Collection) {
+ $values = $values->all();
+ } elseif (! is_array($values)) {
+ continue;
+ }
+
+ $results[$key] = $values;
+ }
+
+ return new static(array_replace(...$results));
+ }
+
+ /**
+ * Determine if an item exists in the collection.
+ *
+ * @param (callable(TValue, TKey): bool)|TValue|string $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return bool
+ */
+ public function contains($key, $operator = null, $value = null)
+ {
+ if (func_num_args() === 1) {
+ if ($this->useAsCallable($key)) {
+ $placeholder = new stdClass;
+
+ return $this->first($key, $placeholder) !== $placeholder;
+ }
+
+ return in_array($key, $this->items);
+ }
+
+ return $this->contains($this->operatorForWhere(...func_get_args()));
+ }
+
+ /**
+ * Determine if an item exists, using strict comparison.
+ *
+ * @param (callable(TValue): bool)|TValue|array-key $key
+ * @param TValue|null $value
+ * @return bool
+ */
+ public function containsStrict($key, $value = null)
+ {
+ if (func_num_args() === 2) {
+ return $this->contains(fn ($item) => data_get($item, $key) === $value);
+ }
+
+ if ($this->useAsCallable($key)) {
+ return ! is_null($this->first($key));
+ }
+
+ return in_array($key, $this->items, true);
+ }
+
+ /**
+ * Determine if an item is not contained in the collection.
+ *
+ * @param mixed $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return bool
+ */
+ public function doesntContain($key, $operator = null, $value = null)
+ {
+ return ! $this->contains(...func_get_args());
+ }
+
+ /**
+ * Cross join with the given lists, returning all possible permutations.
+ *
+ * @template TCrossJoinKey
+ * @template TCrossJoinValue
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable ...$lists
+ * @return static>
+ */
+ public function crossJoin(...$lists)
+ {
+ return new static(Arr::crossJoin(
+ $this->items, ...array_map([$this, 'getArrayableItems'], $lists)
+ ));
+ }
+
+ /**
+ * Get the items in the collection that are not present in the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function diff($items)
+ {
+ return new static(array_diff($this->items, $this->getArrayableItems($items)));
+ }
+
+ /**
+ * Get the items in the collection that are not present in the given items, using the callback.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @param callable(TValue, TValue): int $callback
+ * @return static
+ */
+ public function diffUsing($items, callable $callback)
+ {
+ return new static(array_udiff($this->items, $this->getArrayableItems($items), $callback));
+ }
+
+ /**
+ * Get the items in the collection whose keys and values are not present in the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function diffAssoc($items)
+ {
+ return new static(array_diff_assoc($this->items, $this->getArrayableItems($items)));
+ }
+
+ /**
+ * Get the items in the collection whose keys and values are not present in the given items, using the callback.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @param callable(TKey, TKey): int $callback
+ * @return static
+ */
+ public function diffAssocUsing($items, callable $callback)
+ {
+ return new static(array_diff_uassoc($this->items, $this->getArrayableItems($items), $callback));
+ }
+
+ /**
+ * Get the items in the collection whose keys are not present in the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function diffKeys($items)
+ {
+ return new static(array_diff_key($this->items, $this->getArrayableItems($items)));
+ }
+
+ /**
+ * Get the items in the collection whose keys are not present in the given items, using the callback.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @param callable(TKey, TKey): int $callback
+ * @return static
+ */
+ public function diffKeysUsing($items, callable $callback)
+ {
+ return new static(array_diff_ukey($this->items, $this->getArrayableItems($items), $callback));
+ }
+
+ /**
+ * Retrieve duplicate items from the collection.
+ *
+ * @template TMapValue
+ *
+ * @param (callable(TValue): TMapValue)|string|null $callback
+ * @param bool $strict
+ * @return static
+ */
+ public function duplicates($callback = null, $strict = false)
+ {
+ $items = $this->map($this->valueRetriever($callback));
+
+ $uniqueItems = $items->unique(null, $strict);
+
+ $compare = $this->duplicateComparator($strict);
+
+ $duplicates = new static;
+
+ foreach ($items as $key => $value) {
+ if ($uniqueItems->isNotEmpty() && $compare($value, $uniqueItems->first())) {
+ $uniqueItems->shift();
+ } else {
+ $duplicates[$key] = $value;
+ }
+ }
+
+ return $duplicates;
+ }
+
+ /**
+ * Retrieve duplicate items from the collection using strict comparison.
+ *
+ * @template TMapValue
+ *
+ * @param (callable(TValue): TMapValue)|string|null $callback
+ * @return static
+ */
+ public function duplicatesStrict($callback = null)
+ {
+ return $this->duplicates($callback, true);
+ }
+
+ /**
+ * Get the comparison function to detect duplicates.
+ *
+ * @param bool $strict
+ * @return callable(TValue, TValue): bool
+ */
+ protected function duplicateComparator($strict)
+ {
+ if ($strict) {
+ return fn ($a, $b) => $a === $b;
+ }
+
+ return fn ($a, $b) => $a == $b;
+ }
+
+ /**
+ * Get all items except for those with the specified keys.
+ *
+ * @param \Illuminate\Support\Enumerable|array|string $keys
+ * @return static
+ */
+ public function except($keys)
+ {
+ if (is_null($keys)) {
+ return new static($this->items);
+ }
+
+ if ($keys instanceof Enumerable) {
+ $keys = $keys->all();
+ } elseif (! is_array($keys)) {
+ $keys = func_get_args();
+ }
+
+ return new static(Arr::except($this->items, $keys));
+ }
+
+ /**
+ * Run a filter over each of the items.
+ *
+ * @param (callable(TValue, TKey): bool)|null $callback
+ * @return static
+ */
+ public function filter(?callable $callback = null)
+ {
+ if ($callback) {
+ return new static(Arr::where($this->items, $callback));
+ }
+
+ return new static(array_filter($this->items));
+ }
+
+ /**
+ * Get the first item from the collection passing the given truth test.
+ *
+ * @template TFirstDefault
+ *
+ * @param (callable(TValue, TKey): bool)|null $callback
+ * @param TFirstDefault|(\Closure(): TFirstDefault) $default
+ * @return TValue|TFirstDefault
+ */
+ public function first(?callable $callback = null, $default = null)
+ {
+ return Arr::first($this->items, $callback, $default);
+ }
+
+ /**
+ * Get a flattened array of the items in the collection.
+ *
+ * @param int $depth
+ * @return static
+ */
+ public function flatten($depth = INF)
+ {
+ return new static(Arr::flatten($this->items, $depth));
+ }
+
+ /**
+ * Flip the items in the collection.
+ *
+ * @return static
+ */
+ public function flip()
+ {
+ return new static(array_flip($this->items));
+ }
+
+ /**
+ * Remove an item from the collection by key.
+ *
+ * \Illuminate\Contracts\Support\Arrayable|iterable|TKey $keys
+ *
+ * @return $this
+ */
+ public function forget($keys)
+ {
+ foreach ($this->getArrayableItems($keys) as $key) {
+ $this->offsetUnset($key);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Get an item from the collection by key.
+ *
+ * @template TGetDefault
+ *
+ * @param TKey $key
+ * @param TGetDefault|(\Closure(): TGetDefault) $default
+ * @return TValue|TGetDefault
+ */
+ public function get($key, $default = null)
+ {
+ if (array_key_exists($key, $this->items)) {
+ return $this->items[$key];
+ }
+
+ return value($default);
+ }
+
+ /**
+ * Get an item from the collection by key or add it to collection if it does not exist.
+ *
+ * @template TGetOrPutValue
+ *
+ * @param mixed $key
+ * @param TGetOrPutValue|(\Closure(): TGetOrPutValue) $value
+ * @return TValue|TGetOrPutValue
+ */
+ public function getOrPut($key, $value)
+ {
+ if (array_key_exists($key, $this->items)) {
+ return $this->items[$key];
+ }
+
+ $this->offsetSet($key, $value = value($value));
+
+ return $value;
+ }
+
+ /**
+ * Group an associative array by a field or using a callback.
+ *
+ * @template TGroupKey of array-key
+ *
+ * @param (callable(TValue, TKey): TGroupKey)|array|string $groupBy
+ * @param bool $preserveKeys
+ * @return static<($groupBy is string ? array-key : ($groupBy is array ? array-key : TGroupKey)), static<($preserveKeys is true ? TKey : int), ($groupBy is array ? mixed : TValue)>>
+ */
+ public function groupBy($groupBy, $preserveKeys = false)
+ {
+ if (! $this->useAsCallable($groupBy) && is_array($groupBy)) {
+ $nextGroups = $groupBy;
+
+ $groupBy = array_shift($nextGroups);
+ }
+
+ $groupBy = $this->valueRetriever($groupBy);
+
+ $results = [];
+
+ foreach ($this->items as $key => $value) {
+ $groupKeys = $groupBy($value, $key);
+
+ if (! is_array($groupKeys)) {
+ $groupKeys = [$groupKeys];
+ }
+
+ foreach ($groupKeys as $groupKey) {
+ $groupKey = match (true) {
+ is_bool($groupKey) => (int) $groupKey,
+ $groupKey instanceof \BackedEnum => $groupKey->value,
+ $groupKey instanceof \Stringable => (string) $groupKey,
+ default => $groupKey,
+ };
+
+ if (! array_key_exists($groupKey, $results)) {
+ $results[$groupKey] = new static;
+ }
+
+ $results[$groupKey]->offsetSet($preserveKeys ? $key : null, $value);
+ }
+ }
+
+ $result = new static($results);
+
+ if (! empty($nextGroups)) {
+ return $result->map->groupBy($nextGroups, $preserveKeys);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Key an associative array by a field or using a callback.
+ *
+ * @template TNewKey of array-key
+ *
+ * @param (callable(TValue, TKey): TNewKey)|array|string $keyBy
+ * @return static<($keyBy is string ? array-key : ($keyBy is array ? array-key : TNewKey)), TValue>
+ */
+ public function keyBy($keyBy)
+ {
+ $keyBy = $this->valueRetriever($keyBy);
+
+ $results = [];
+
+ foreach ($this->items as $key => $item) {
+ $resolvedKey = $keyBy($item, $key);
+
+ if (is_object($resolvedKey)) {
+ $resolvedKey = (string) $resolvedKey;
+ }
+
+ $results[$resolvedKey] = $item;
+ }
+
+ return new static($results);
+ }
+
+ /**
+ * Determine if an item exists in the collection by key.
+ *
+ * @param TKey|array $key
+ * @return bool
+ */
+ public function has($key)
+ {
+ $keys = is_array($key) ? $key : func_get_args();
+
+ foreach ($keys as $value) {
+ if (! array_key_exists($value, $this->items)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Determine if any of the keys exist in the collection.
+ *
+ * @param TKey|array $key
+ * @return bool
+ */
+ public function hasAny($key)
+ {
+ if ($this->isEmpty()) {
+ return false;
+ }
+
+ $keys = is_array($key) ? $key : func_get_args();
+
+ foreach ($keys as $value) {
+ if (array_key_exists($value, $this->items)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Concatenate values of a given key as a string.
+ *
+ * @param (callable(TValue, TKey): mixed)|string|null $value
+ * @param string|null $glue
+ * @return string
+ */
+ public function implode($value, $glue = null)
+ {
+ if ($this->useAsCallable($value)) {
+ return implode($glue ?? '', $this->map($value)->all());
+ }
+
+ $first = $this->first();
+
+ if (is_array($first) || (is_object($first) && ! $first instanceof Stringable)) {
+ return implode($glue ?? '', $this->pluck($value)->all());
+ }
+
+ return implode($value ?? '', $this->items);
+ }
+
+ /**
+ * Intersect the collection with the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function intersect($items)
+ {
+ return new static(array_intersect($this->items, $this->getArrayableItems($items)));
+ }
+
+ /**
+ * Intersect the collection with the given items, using the callback.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @param callable(TValue, TValue): int $callback
+ * @return static
+ */
+ public function intersectUsing($items, callable $callback)
+ {
+ return new static(array_uintersect($this->items, $this->getArrayableItems($items), $callback));
+ }
+
+ /**
+ * Intersect the collection with the given items with additional index check.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function intersectAssoc($items)
+ {
+ return new static(array_intersect_assoc($this->items, $this->getArrayableItems($items)));
+ }
+
+ /**
+ * Intersect the collection with the given items with additional index check, using the callback.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @param callable(TValue, TValue): int $callback
+ * @return static
+ */
+ public function intersectAssocUsing($items, callable $callback)
+ {
+ return new static(array_intersect_uassoc($this->items, $this->getArrayableItems($items), $callback));
+ }
+
+ /**
+ * Intersect the collection with the given items by key.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function intersectByKeys($items)
+ {
+ return new static(array_intersect_key(
+ $this->items, $this->getArrayableItems($items)
+ ));
+ }
+
+ /**
+ * Determine if the collection is empty or not.
+ *
+ * @phpstan-assert-if-true null $this->first()
+ * @phpstan-assert-if-true null $this->last()
+ *
+ * @phpstan-assert-if-false TValue $this->first()
+ * @phpstan-assert-if-false TValue $this->last()
+ *
+ * @return bool
+ */
+ public function isEmpty()
+ {
+ return empty($this->items);
+ }
+
+ /**
+ * Determine if the collection contains a single item.
+ *
+ * @return bool
+ */
+ public function containsOneItem()
+ {
+ return $this->count() === 1;
+ }
+
+ /**
+ * Join all items from the collection using a string. The final items can use a separate glue string.
+ *
+ * @param string $glue
+ * @param string $finalGlue
+ * @return string
+ */
+ public function join($glue, $finalGlue = '')
+ {
+ if ($finalGlue === '') {
+ return $this->implode($glue);
+ }
+
+ $count = $this->count();
+
+ if ($count === 0) {
+ return '';
+ }
+
+ if ($count === 1) {
+ return $this->last();
+ }
+
+ $collection = new static($this->items);
+
+ $finalItem = $collection->pop();
+
+ return $collection->implode($glue).$finalGlue.$finalItem;
+ }
+
+ /**
+ * Get the keys of the collection items.
+ *
+ * @return static
+ */
+ public function keys()
+ {
+ return new static(array_keys($this->items));
+ }
+
+ /**
+ * Get the last item from the collection.
+ *
+ * @template TLastDefault
+ *
+ * @param (callable(TValue, TKey): bool)|null $callback
+ * @param TLastDefault|(\Closure(): TLastDefault) $default
+ * @return TValue|TLastDefault
+ */
+ public function last(?callable $callback = null, $default = null)
+ {
+ return Arr::last($this->items, $callback, $default);
+ }
+
+ /**
+ * Get the values of a given key.
+ *
+ * @param string|int|array|null $value
+ * @param string|null $key
+ * @return static
+ */
+ public function pluck($value, $key = null)
+ {
+ return new static(Arr::pluck($this->items, $value, $key));
+ }
+
+ /**
+ * Run a map over each of the items.
+ *
+ * @template TMapValue
+ *
+ * @param callable(TValue, TKey): TMapValue $callback
+ * @return static
+ */
+ public function map(callable $callback)
+ {
+ return new static(Arr::map($this->items, $callback));
+ }
+
+ /**
+ * Run a dictionary map over the items.
+ *
+ * The callback should return an associative array with a single key/value pair.
+ *
+ * @template TMapToDictionaryKey of array-key
+ * @template TMapToDictionaryValue
+ *
+ * @param callable(TValue, TKey): array $callback
+ * @return static>
+ */
+ public function mapToDictionary(callable $callback)
+ {
+ $dictionary = [];
+
+ foreach ($this->items as $key => $item) {
+ $pair = $callback($item, $key);
+
+ $key = key($pair);
+
+ $value = reset($pair);
+
+ if (! isset($dictionary[$key])) {
+ $dictionary[$key] = [];
+ }
+
+ $dictionary[$key][] = $value;
+ }
+
+ return new static($dictionary);
+ }
+
+ /**
+ * Run an associative map over each of the items.
+ *
+ * The callback should return an associative array with a single key/value pair.
+ *
+ * @template TMapWithKeysKey of array-key
+ * @template TMapWithKeysValue
+ *
+ * @param callable(TValue, TKey): array $callback
+ * @return static
+ */
+ public function mapWithKeys(callable $callback)
+ {
+ return new static(Arr::mapWithKeys($this->items, $callback));
+ }
+
+ /**
+ * Merge the collection with the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function merge($items)
+ {
+ return new static(array_merge($this->items, $this->getArrayableItems($items)));
+ }
+
+ /**
+ * Recursively merge the collection with the given items.
+ *
+ * @template TMergeRecursiveValue
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function mergeRecursive($items)
+ {
+ return new static(array_merge_recursive($this->items, $this->getArrayableItems($items)));
+ }
+
+ /**
+ * Multiply the items in the collection by the multiplier.
+ *
+ * @param int $multiplier
+ * @return static
+ */
+ public function multiply(int $multiplier)
+ {
+ $new = new static;
+
+ for ($i = 0; $i < $multiplier; $i++) {
+ $new->push(...$this->items);
+ }
+
+ return $new;
+ }
+
+ /**
+ * Create a collection by using this collection for keys and another for its values.
+ *
+ * @template TCombineValue
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $values
+ * @return static
+ */
+ public function combine($values)
+ {
+ return new static(array_combine($this->all(), $this->getArrayableItems($values)));
+ }
+
+ /**
+ * Union the collection with the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function union($items)
+ {
+ return new static($this->items + $this->getArrayableItems($items));
+ }
+
+ /**
+ * Create a new collection consisting of every n-th element.
+ *
+ * @param int $step
+ * @param int $offset
+ * @return static
+ */
+ public function nth($step, $offset = 0)
+ {
+ $new = [];
+
+ $position = 0;
+
+ foreach ($this->slice($offset)->items as $item) {
+ if ($position % $step === 0) {
+ $new[] = $item;
+ }
+
+ $position++;
+ }
+
+ return new static($new);
+ }
+
+ /**
+ * Get the items with the specified keys.
+ *
+ * @param \Illuminate\Support\Enumerable|array|string|null $keys
+ * @return static
+ */
+ public function only($keys)
+ {
+ if (is_null($keys)) {
+ return new static($this->items);
+ }
+
+ if ($keys instanceof Enumerable) {
+ $keys = $keys->all();
+ }
+
+ $keys = is_array($keys) ? $keys : func_get_args();
+
+ return new static(Arr::only($this->items, $keys));
+ }
+
+ /**
+ * Select specific values from the items within the collection.
+ *
+ * @param \Illuminate\Support\Enumerable|array|string|null $keys
+ * @return static
+ */
+ public function select($keys)
+ {
+ if (is_null($keys)) {
+ return new static($this->items);
+ }
+
+ if ($keys instanceof Enumerable) {
+ $keys = $keys->all();
+ }
+
+ $keys = is_array($keys) ? $keys : func_get_args();
+
+ return new static(Arr::select($this->items, $keys));
+ }
+
+ /**
+ * Get and remove the last N items from the collection.
+ *
+ * @param int $count
+ * @return static|TValue|null
+ */
+ public function pop($count = 1)
+ {
+ if ($count < 1) {
+ return new static;
+ }
+
+ if ($count === 1) {
+ return array_pop($this->items);
+ }
+
+ if ($this->isEmpty()) {
+ return new static;
+ }
+
+ $results = [];
+
+ $collectionCount = $this->count();
+
+ foreach (range(1, min($count, $collectionCount)) as $item) {
+ $results[] = array_pop($this->items);
+ }
+
+ return new static($results);
+ }
+
+ /**
+ * Push an item onto the beginning of the collection.
+ *
+ * @param TValue $value
+ * @param TKey $key
+ * @return $this
+ */
+ public function prepend($value, $key = null)
+ {
+ $this->items = Arr::prepend($this->items, ...func_get_args());
+
+ return $this;
+ }
+
+ /**
+ * Push one or more items onto the end of the collection.
+ *
+ * @param TValue ...$values
+ * @return $this
+ */
+ public function push(...$values)
+ {
+ foreach ($values as $value) {
+ $this->items[] = $value;
+ }
+
+ return $this;
+ }
+
+ /**
+ * Prepend one or more items to the beginning of the collection.
+ *
+ * @param TValue ...$values
+ * @return $this
+ */
+ public function unshift(...$values)
+ {
+ array_unshift($this->items, ...$values);
+
+ return $this;
+ }
+
+ /**
+ * Push all of the given items onto the collection.
+ *
+ * @template TConcatKey of array-key
+ * @template TConcatValue
+ *
+ * @param iterable $source
+ * @return static
+ */
+ public function concat($source)
+ {
+ $result = new static($this);
+
+ foreach ($source as $item) {
+ $result->push($item);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Get and remove an item from the collection.
+ *
+ * @template TPullDefault
+ *
+ * @param TKey $key
+ * @param TPullDefault|(\Closure(): TPullDefault) $default
+ * @return TValue|TPullDefault
+ */
+ public function pull($key, $default = null)
+ {
+ return Arr::pull($this->items, $key, $default);
+ }
+
+ /**
+ * Put an item in the collection by key.
+ *
+ * @param TKey $key
+ * @param TValue $value
+ * @return $this
+ */
+ public function put($key, $value)
+ {
+ $this->offsetSet($key, $value);
+
+ return $this;
+ }
+
+ /**
+ * Get one or a specified number of items randomly from the collection.
+ *
+ * @param (callable(self): int)|int|null $number
+ * @param bool $preserveKeys
+ * @return static|TValue
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function random($number = null, $preserveKeys = false)
+ {
+ if (is_null($number)) {
+ return Arr::random($this->items);
+ }
+
+ if (is_callable($number)) {
+ return new static(Arr::random($this->items, $number($this), $preserveKeys));
+ }
+
+ return new static(Arr::random($this->items, $number, $preserveKeys));
+ }
+
+ /**
+ * Replace the collection items with the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function replace($items)
+ {
+ return new static(array_replace($this->items, $this->getArrayableItems($items)));
+ }
+
+ /**
+ * Recursively replace the collection items with the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function replaceRecursive($items)
+ {
+ return new static(array_replace_recursive($this->items, $this->getArrayableItems($items)));
+ }
+
+ /**
+ * Reverse items order.
+ *
+ * @return static
+ */
+ public function reverse()
+ {
+ return new static(array_reverse($this->items, true));
+ }
+
+ /**
+ * Search the collection for a given value and return the corresponding key if successful.
+ *
+ * @param TValue|(callable(TValue,TKey): bool) $value
+ * @param bool $strict
+ * @return TKey|false
+ */
+ public function search($value, $strict = false)
+ {
+ if (! $this->useAsCallable($value)) {
+ return array_search($value, $this->items, $strict);
+ }
+
+ foreach ($this->items as $key => $item) {
+ if ($value($item, $key)) {
+ return $key;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Get the item before the given item.
+ *
+ * @param TValue|(callable(TValue,TKey): bool) $value
+ * @param bool $strict
+ * @return TValue|null
+ */
+ public function before($value, $strict = false)
+ {
+ $key = $this->search($value, $strict);
+
+ if ($key === false) {
+ return null;
+ }
+
+ $position = ($keys = $this->keys())->search($key);
+
+ if ($position === 0) {
+ return null;
+ }
+
+ return $this->get($keys->get($position - 1));
+ }
+
+ /**
+ * Get the item after the given item.
+ *
+ * @param TValue|(callable(TValue,TKey): bool) $value
+ * @param bool $strict
+ * @return TValue|null
+ */
+ public function after($value, $strict = false)
+ {
+ $key = $this->search($value, $strict);
+
+ if ($key === false) {
+ return null;
+ }
+
+ $position = ($keys = $this->keys())->search($key);
+
+ if ($position === $keys->count() - 1) {
+ return null;
+ }
+
+ return $this->get($keys->get($position + 1));
+ }
+
+ /**
+ * Get and remove the first N items from the collection.
+ *
+ * @param int $count
+ * @return static|TValue|null
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function shift($count = 1)
+ {
+ if ($count < 0) {
+ throw new InvalidArgumentException('Number of shifted items may not be less than zero.');
+ }
+
+ if ($this->isEmpty()) {
+ return null;
+ }
+
+ if ($count === 0) {
+ return new static;
+ }
+
+ if ($count === 1) {
+ return array_shift($this->items);
+ }
+
+ $results = [];
+
+ $collectionCount = $this->count();
+
+ foreach (range(1, min($count, $collectionCount)) as $item) {
+ $results[] = array_shift($this->items);
+ }
+
+ return new static($results);
+ }
+
+ /**
+ * Shuffle the items in the collection.
+ *
+ * @return static
+ */
+ public function shuffle()
+ {
+ return new static(Arr::shuffle($this->items));
+ }
+
+ /**
+ * Create chunks representing a "sliding window" view of the items in the collection.
+ *
+ * @param int $size
+ * @param int $step
+ * @return static
+ */
+ public function sliding($size = 2, $step = 1)
+ {
+ $chunks = floor(($this->count() - $size) / $step) + 1;
+
+ return static::times($chunks, fn ($number) => $this->slice(($number - 1) * $step, $size));
+ }
+
+ /**
+ * Skip the first {$count} items.
+ *
+ * @param int $count
+ * @return static
+ */
+ public function skip($count)
+ {
+ return $this->slice($count);
+ }
+
+ /**
+ * Skip items in the collection until the given condition is met.
+ *
+ * @param TValue|callable(TValue,TKey): bool $value
+ * @return static
+ */
+ public function skipUntil($value)
+ {
+ return new static($this->lazy()->skipUntil($value)->all());
+ }
+
+ /**
+ * Skip items in the collection while the given condition is met.
+ *
+ * @param TValue|callable(TValue,TKey): bool $value
+ * @return static
+ */
+ public function skipWhile($value)
+ {
+ return new static($this->lazy()->skipWhile($value)->all());
+ }
+
+ /**
+ * Slice the underlying collection array.
+ *
+ * @param int $offset
+ * @param int|null $length
+ * @return static
+ */
+ public function slice($offset, $length = null)
+ {
+ return new static(array_slice($this->items, $offset, $length, true));
+ }
+
+ /**
+ * Split a collection into a certain number of groups.
+ *
+ * @param int $numberOfGroups
+ * @return static
+ */
+ public function split($numberOfGroups)
+ {
+ if ($this->isEmpty()) {
+ return new static;
+ }
+
+ $groups = new static;
+
+ $groupSize = floor($this->count() / $numberOfGroups);
+
+ $remain = $this->count() % $numberOfGroups;
+
+ $start = 0;
+
+ for ($i = 0; $i < $numberOfGroups; $i++) {
+ $size = $groupSize;
+
+ if ($i < $remain) {
+ $size++;
+ }
+
+ if ($size) {
+ $groups->push(new static(array_slice($this->items, $start, $size)));
+
+ $start += $size;
+ }
+ }
+
+ return $groups;
+ }
+
+ /**
+ * Split a collection into a certain number of groups, and fill the first groups completely.
+ *
+ * @param int $numberOfGroups
+ * @return static
+ */
+ public function splitIn($numberOfGroups)
+ {
+ return $this->chunk((int) ceil($this->count() / $numberOfGroups));
+ }
+
+ /**
+ * Get the first item in the collection, but only if exactly one item exists. Otherwise, throw an exception.
+ *
+ * @param (callable(TValue, TKey): bool)|string $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return TValue
+ *
+ * @throws \Illuminate\Support\ItemNotFoundException
+ * @throws \Illuminate\Support\MultipleItemsFoundException
+ */
+ public function sole($key = null, $operator = null, $value = null)
+ {
+ $filter = func_num_args() > 1
+ ? $this->operatorForWhere(...func_get_args())
+ : $key;
+
+ $items = $this->unless($filter == null)->filter($filter);
+
+ $count = $items->count();
+
+ if ($count === 0) {
+ throw new ItemNotFoundException;
+ }
+
+ if ($count > 1) {
+ throw new MultipleItemsFoundException($count);
+ }
+
+ return $items->first();
+ }
+
+ /**
+ * Get the first item in the collection but throw an exception if no matching items exist.
+ *
+ * @param (callable(TValue, TKey): bool)|string $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return TValue
+ *
+ * @throws \Illuminate\Support\ItemNotFoundException
+ */
+ public function firstOrFail($key = null, $operator = null, $value = null)
+ {
+ $filter = func_num_args() > 1
+ ? $this->operatorForWhere(...func_get_args())
+ : $key;
+
+ $placeholder = new stdClass();
+
+ $item = $this->first($filter, $placeholder);
+
+ if ($item === $placeholder) {
+ throw new ItemNotFoundException;
+ }
+
+ return $item;
+ }
+
+ /**
+ * Chunk the collection into chunks of the given size.
+ *
+ * @param int $size
+ * @return static
+ */
+ public function chunk($size)
+ {
+ if ($size <= 0) {
+ return new static;
+ }
+
+ $chunks = [];
+
+ foreach (array_chunk($this->items, $size, true) as $chunk) {
+ $chunks[] = new static($chunk);
+ }
+
+ return new static($chunks);
+ }
+
+ /**
+ * Chunk the collection into chunks with a callback.
+ *
+ * @param callable(TValue, TKey, static): bool $callback
+ * @return static>
+ */
+ public function chunkWhile(callable $callback)
+ {
+ return new static(
+ $this->lazy()->chunkWhile($callback)->mapInto(static::class)
+ );
+ }
+
+ /**
+ * Sort through each item with a callback.
+ *
+ * @param (callable(TValue, TValue): int)|null|int $callback
+ * @return static
+ */
+ public function sort($callback = null)
+ {
+ $items = $this->items;
+
+ $callback && is_callable($callback)
+ ? uasort($items, $callback)
+ : asort($items, $callback ?? SORT_REGULAR);
+
+ return new static($items);
+ }
+
+ /**
+ * Sort items in descending order.
+ *
+ * @param int $options
+ * @return static
+ */
+ public function sortDesc($options = SORT_REGULAR)
+ {
+ $items = $this->items;
+
+ arsort($items, $options);
+
+ return new static($items);
+ }
+
+ /**
+ * Sort the collection using the given callback.
+ *
+ * @param array|(callable(TValue, TKey): mixed)|string $callback
+ * @param int $options
+ * @param bool $descending
+ * @return static
+ */
+ public function sortBy($callback, $options = SORT_REGULAR, $descending = false)
+ {
+ if (is_array($callback) && ! is_callable($callback)) {
+ return $this->sortByMany($callback, $options);
+ }
+
+ $results = [];
+
+ $callback = $this->valueRetriever($callback);
+
+ // First we will loop through the items and get the comparator from a callback
+ // function which we were given. Then, we will sort the returned values and
+ // grab all the corresponding values for the sorted keys from this array.
+ foreach ($this->items as $key => $value) {
+ $results[$key] = $callback($value, $key);
+ }
+
+ $descending ? arsort($results, $options)
+ : asort($results, $options);
+
+ // Once we have sorted all of the keys in the array, we will loop through them
+ // and grab the corresponding model so we can set the underlying items list
+ // to the sorted version. Then we'll just return the collection instance.
+ foreach (array_keys($results) as $key) {
+ $results[$key] = $this->items[$key];
+ }
+
+ return new static($results);
+ }
+
+ /**
+ * Sort the collection using multiple comparisons.
+ *
+ * @param array $comparisons
+ * @param int $options
+ * @return static
+ */
+ protected function sortByMany(array $comparisons = [], int $options = SORT_REGULAR)
+ {
+ $items = $this->items;
+
+ uasort($items, function ($a, $b) use ($comparisons, $options) {
+ foreach ($comparisons as $comparison) {
+ $comparison = Arr::wrap($comparison);
+
+ $prop = $comparison[0];
+
+ $ascending = Arr::get($comparison, 1, true) === true ||
+ Arr::get($comparison, 1, true) === 'asc';
+
+ if (! is_string($prop) && is_callable($prop)) {
+ $result = $prop($a, $b);
+ } else {
+ $values = [data_get($a, $prop), data_get($b, $prop)];
+
+ if (! $ascending) {
+ $values = array_reverse($values);
+ }
+
+ if (($options & SORT_FLAG_CASE) === SORT_FLAG_CASE) {
+ if (($options & SORT_NATURAL) === SORT_NATURAL) {
+ $result = strnatcasecmp($values[0], $values[1]);
+ } else {
+ $result = strcasecmp($values[0], $values[1]);
+ }
+ } else {
+ $result = match ($options) {
+ SORT_NUMERIC => intval($values[0]) <=> intval($values[1]),
+ SORT_STRING => strcmp($values[0], $values[1]),
+ SORT_NATURAL => strnatcmp((string) $values[0], (string) $values[1]),
+ SORT_LOCALE_STRING => strcoll($values[0], $values[1]),
+ default => $values[0] <=> $values[1],
+ };
+ }
+ }
+
+ if ($result === 0) {
+ continue;
+ }
+
+ return $result;
+ }
+ });
+
+ return new static($items);
+ }
+
+ /**
+ * Sort the collection in descending order using the given callback.
+ *
+ * @param array|(callable(TValue, TKey): mixed)|string $callback
+ * @param int $options
+ * @return static
+ */
+ public function sortByDesc($callback, $options = SORT_REGULAR)
+ {
+ if (is_array($callback) && ! is_callable($callback)) {
+ foreach ($callback as $index => $key) {
+ $comparison = Arr::wrap($key);
+
+ $comparison[1] = 'desc';
+
+ $callback[$index] = $comparison;
+ }
+ }
+
+ return $this->sortBy($callback, $options, true);
+ }
+
+ /**
+ * Sort the collection keys.
+ *
+ * @param int $options
+ * @param bool $descending
+ * @return static
+ */
+ public function sortKeys($options = SORT_REGULAR, $descending = false)
+ {
+ $items = $this->items;
+
+ $descending ? krsort($items, $options) : ksort($items, $options);
+
+ return new static($items);
+ }
+
+ /**
+ * Sort the collection keys in descending order.
+ *
+ * @param int $options
+ * @return static
+ */
+ public function sortKeysDesc($options = SORT_REGULAR)
+ {
+ return $this->sortKeys($options, true);
+ }
+
+ /**
+ * Sort the collection keys using a callback.
+ *
+ * @param callable(TKey, TKey): int $callback
+ * @return static
+ */
+ public function sortKeysUsing(callable $callback)
+ {
+ $items = $this->items;
+
+ uksort($items, $callback);
+
+ return new static($items);
+ }
+
+ /**
+ * Splice a portion of the underlying collection array.
+ *
+ * @param int $offset
+ * @param int|null $length
+ * @param array $replacement
+ * @return static
+ */
+ public function splice($offset, $length = null, $replacement = [])
+ {
+ if (func_num_args() === 1) {
+ return new static(array_splice($this->items, $offset));
+ }
+
+ return new static(array_splice($this->items, $offset, $length, $this->getArrayableItems($replacement)));
+ }
+
+ /**
+ * Take the first or last {$limit} items.
+ *
+ * @param int $limit
+ * @return static
+ */
+ public function take($limit)
+ {
+ if ($limit < 0) {
+ return $this->slice($limit, abs($limit));
+ }
+
+ return $this->slice(0, $limit);
+ }
+
+ /**
+ * Take items in the collection until the given condition is met.
+ *
+ * @param TValue|callable(TValue,TKey): bool $value
+ * @return static
+ */
+ public function takeUntil($value)
+ {
+ return new static($this->lazy()->takeUntil($value)->all());
+ }
+
+ /**
+ * Take items in the collection while the given condition is met.
+ *
+ * @param TValue|callable(TValue,TKey): bool $value
+ * @return static
+ */
+ public function takeWhile($value)
+ {
+ return new static($this->lazy()->takeWhile($value)->all());
+ }
+
+ /**
+ * Transform each item in the collection using a callback.
+ *
+ * @param callable(TValue, TKey): TValue $callback
+ * @return $this
+ */
+ public function transform(callable $callback)
+ {
+ $this->items = $this->map($callback)->all();
+
+ return $this;
+ }
+
+ /**
+ * Flatten a multi-dimensional associative array with dots.
+ *
+ * @return static
+ */
+ public function dot()
+ {
+ return new static(Arr::dot($this->all()));
+ }
+
+ /**
+ * Convert a flatten "dot" notation array into an expanded array.
+ *
+ * @return static
+ */
+ public function undot()
+ {
+ return new static(Arr::undot($this->all()));
+ }
+
+ /**
+ * Return only unique items from the collection array.
+ *
+ * @param (callable(TValue, TKey): mixed)|string|null $key
+ * @param bool $strict
+ * @return static
+ */
+ public function unique($key = null, $strict = false)
+ {
+ if (is_null($key) && $strict === false) {
+ return new static(array_unique($this->items, SORT_REGULAR));
+ }
+
+ $callback = $this->valueRetriever($key);
+
+ $exists = [];
+
+ return $this->reject(function ($item, $key) use ($callback, $strict, &$exists) {
+ if (in_array($id = $callback($item, $key), $exists, $strict)) {
+ return true;
+ }
+
+ $exists[] = $id;
+ });
+ }
+
+ /**
+ * Reset the keys on the underlying array.
+ *
+ * @return static
+ */
+ public function values()
+ {
+ return new static(array_values($this->items));
+ }
+
+ /**
+ * Zip the collection together with one or more arrays.
+ *
+ * e.g. new Collection([1, 2, 3])->zip([4, 5, 6]);
+ * => [[1, 4], [2, 5], [3, 6]]
+ *
+ * @template TZipValue
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable ...$items
+ * @return static>
+ */
+ public function zip($items)
+ {
+ $arrayableItems = array_map(fn ($items) => $this->getArrayableItems($items), func_get_args());
+
+ $params = array_merge([fn () => new static(func_get_args()), $this->items], $arrayableItems);
+
+ return new static(array_map(...$params));
+ }
+
+ /**
+ * Pad collection to the specified length with a value.
+ *
+ * @template TPadValue
+ *
+ * @param int $size
+ * @param TPadValue $value
+ * @return static
+ */
+ public function pad($size, $value)
+ {
+ return new static(array_pad($this->items, $size, $value));
+ }
+
+ /**
+ * Get an iterator for the items.
+ *
+ * @return \ArrayIterator
+ */
+ public function getIterator(): Traversable
+ {
+ return new ArrayIterator($this->items);
+ }
+
+ /**
+ * Count the number of items in the collection.
+ *
+ * @return int
+ */
+ public function count(): int
+ {
+ return count($this->items);
+ }
+
+ /**
+ * Count the number of items in the collection by a field or using a callback.
+ *
+ * @param (callable(TValue, TKey): array-key)|string|null $countBy
+ * @return static
+ */
+ public function countBy($countBy = null)
+ {
+ return new static($this->lazy()->countBy($countBy)->all());
+ }
+
+ /**
+ * Add an item to the collection.
+ *
+ * @param TValue $item
+ * @return $this
+ */
+ public function add($item)
+ {
+ $this->items[] = $item;
+
+ return $this;
+ }
+
+ /**
+ * Get a base Support collection instance from this collection.
+ *
+ * @return \Illuminate\Support\Collection
+ */
+ public function toBase()
+ {
+ return new self($this);
+ }
+
+ /**
+ * Determine if an item exists at an offset.
+ *
+ * @param TKey $key
+ * @return bool
+ */
+ public function offsetExists($key): bool
+ {
+ return isset($this->items[$key]);
+ }
+
+ /**
+ * Get an item at a given offset.
+ *
+ * @param TKey $key
+ * @return TValue
+ */
+ public function offsetGet($key): mixed
+ {
+ return $this->items[$key];
+ }
+
+ /**
+ * Set the item at a given offset.
+ *
+ * @param TKey|null $key
+ * @param TValue $value
+ * @return void
+ */
+ public function offsetSet($key, $value): void
+ {
+ if (is_null($key)) {
+ $this->items[] = $value;
+ } else {
+ $this->items[$key] = $value;
+ }
+ }
+
+ /**
+ * Unset the item at a given offset.
+ *
+ * @param TKey $key
+ * @return void
+ */
+ public function offsetUnset($key): void
+ {
+ unset($this->items[$key]);
+ }
+}
diff --git a/vendor/illuminate/collections/Enumerable.php b/vendor/illuminate/collections/Enumerable.php
new file mode 100644
index 0000000..2d1214a
--- /dev/null
+++ b/vendor/illuminate/collections/Enumerable.php
@@ -0,0 +1,1311 @@
+
+ * @extends \IteratorAggregate
+ */
+interface Enumerable extends Arrayable, Countable, IteratorAggregate, Jsonable, JsonSerializable
+{
+ /**
+ * Create a new collection instance if the value isn't one already.
+ *
+ * @template TMakeKey of array-key
+ * @template TMakeValue
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable|null $items
+ * @return static
+ */
+ public static function make($items = []);
+
+ /**
+ * Create a new instance by invoking the callback a given amount of times.
+ *
+ * @param int $number
+ * @param callable|null $callback
+ * @return static
+ */
+ public static function times($number, ?callable $callback = null);
+
+ /**
+ * Create a collection with the given range.
+ *
+ * @param int $from
+ * @param int $to
+ * @return static
+ */
+ public static function range($from, $to);
+
+ /**
+ * Wrap the given value in a collection if applicable.
+ *
+ * @template TWrapValue
+ *
+ * @param iterable|TWrapValue $value
+ * @return static
+ */
+ public static function wrap($value);
+
+ /**
+ * Get the underlying items from the given collection if applicable.
+ *
+ * @template TUnwrapKey of array-key
+ * @template TUnwrapValue
+ *
+ * @param array|static $value
+ * @return array
+ */
+ public static function unwrap($value);
+
+ /**
+ * Create a new instance with no items.
+ *
+ * @return static
+ */
+ public static function empty();
+
+ /**
+ * Get all items in the enumerable.
+ *
+ * @return array
+ */
+ public function all();
+
+ /**
+ * Alias for the "avg" method.
+ *
+ * @param (callable(TValue): float|int)|string|null $callback
+ * @return float|int|null
+ */
+ public function average($callback = null);
+
+ /**
+ * Get the median of a given key.
+ *
+ * @param string|array|null $key
+ * @return float|int|null
+ */
+ public function median($key = null);
+
+ /**
+ * Get the mode of a given key.
+ *
+ * @param string|array|null $key
+ * @return array|null
+ */
+ public function mode($key = null);
+
+ /**
+ * Collapse the items into a single enumerable.
+ *
+ * @return static
+ */
+ public function collapse();
+
+ /**
+ * Alias for the "contains" method.
+ *
+ * @param (callable(TValue, TKey): bool)|TValue|string $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return bool
+ */
+ public function some($key, $operator = null, $value = null);
+
+ /**
+ * Determine if an item exists, using strict comparison.
+ *
+ * @param (callable(TValue): bool)|TValue|array-key $key
+ * @param TValue|null $value
+ * @return bool
+ */
+ public function containsStrict($key, $value = null);
+
+ /**
+ * Get the average value of a given key.
+ *
+ * @param (callable(TValue): float|int)|string|null $callback
+ * @return float|int|null
+ */
+ public function avg($callback = null);
+
+ /**
+ * Determine if an item exists in the enumerable.
+ *
+ * @param (callable(TValue, TKey): bool)|TValue|string $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return bool
+ */
+ public function contains($key, $operator = null, $value = null);
+
+ /**
+ * Determine if an item is not contained in the collection.
+ *
+ * @param mixed $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return bool
+ */
+ public function doesntContain($key, $operator = null, $value = null);
+
+ /**
+ * Cross join with the given lists, returning all possible permutations.
+ *
+ * @template TCrossJoinKey
+ * @template TCrossJoinValue
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable ...$lists
+ * @return static>
+ */
+ public function crossJoin(...$lists);
+
+ /**
+ * Dump the collection and end the script.
+ *
+ * @param mixed ...$args
+ * @return never
+ */
+ public function dd(...$args);
+
+ /**
+ * Dump the collection.
+ *
+ * @param mixed ...$args
+ * @return $this
+ */
+ public function dump(...$args);
+
+ /**
+ * Get the items that are not present in the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function diff($items);
+
+ /**
+ * Get the items that are not present in the given items, using the callback.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @param callable(TValue, TValue): int $callback
+ * @return static
+ */
+ public function diffUsing($items, callable $callback);
+
+ /**
+ * Get the items whose keys and values are not present in the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function diffAssoc($items);
+
+ /**
+ * Get the items whose keys and values are not present in the given items, using the callback.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @param callable(TKey, TKey): int $callback
+ * @return static
+ */
+ public function diffAssocUsing($items, callable $callback);
+
+ /**
+ * Get the items whose keys are not present in the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function diffKeys($items);
+
+ /**
+ * Get the items whose keys are not present in the given items, using the callback.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @param callable(TKey, TKey): int $callback
+ * @return static
+ */
+ public function diffKeysUsing($items, callable $callback);
+
+ /**
+ * Retrieve duplicate items.
+ *
+ * @param (callable(TValue): bool)|string|null $callback
+ * @param bool $strict
+ * @return static
+ */
+ public function duplicates($callback = null, $strict = false);
+
+ /**
+ * Retrieve duplicate items using strict comparison.
+ *
+ * @param (callable(TValue): bool)|string|null $callback
+ * @return static
+ */
+ public function duplicatesStrict($callback = null);
+
+ /**
+ * Execute a callback over each item.
+ *
+ * @param callable(TValue, TKey): mixed $callback
+ * @return $this
+ */
+ public function each(callable $callback);
+
+ /**
+ * Execute a callback over each nested chunk of items.
+ *
+ * @param callable $callback
+ * @return static
+ */
+ public function eachSpread(callable $callback);
+
+ /**
+ * Determine if all items pass the given truth test.
+ *
+ * @param (callable(TValue, TKey): bool)|TValue|string $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return bool
+ */
+ public function every($key, $operator = null, $value = null);
+
+ /**
+ * Get all items except for those with the specified keys.
+ *
+ * @param \Illuminate\Support\Enumerable|array $keys
+ * @return static
+ */
+ public function except($keys);
+
+ /**
+ * Run a filter over each of the items.
+ *
+ * @param (callable(TValue): bool)|null $callback
+ * @return static
+ */
+ public function filter(?callable $callback = null);
+
+ /**
+ * Apply the callback if the given "value" is (or resolves to) truthy.
+ *
+ * @template TWhenReturnType as null
+ *
+ * @param bool $value
+ * @param (callable($this): TWhenReturnType)|null $callback
+ * @param (callable($this): TWhenReturnType)|null $default
+ * @return $this|TWhenReturnType
+ */
+ public function when($value, ?callable $callback = null, ?callable $default = null);
+
+ /**
+ * Apply the callback if the collection is empty.
+ *
+ * @template TWhenEmptyReturnType
+ *
+ * @param (callable($this): TWhenEmptyReturnType) $callback
+ * @param (callable($this): TWhenEmptyReturnType)|null $default
+ * @return $this|TWhenEmptyReturnType
+ */
+ public function whenEmpty(callable $callback, ?callable $default = null);
+
+ /**
+ * Apply the callback if the collection is not empty.
+ *
+ * @template TWhenNotEmptyReturnType
+ *
+ * @param callable($this): TWhenNotEmptyReturnType $callback
+ * @param (callable($this): TWhenNotEmptyReturnType)|null $default
+ * @return $this|TWhenNotEmptyReturnType
+ */
+ public function whenNotEmpty(callable $callback, ?callable $default = null);
+
+ /**
+ * Apply the callback if the given "value" is (or resolves to) falsy.
+ *
+ * @template TUnlessReturnType
+ *
+ * @param bool $value
+ * @param (callable($this): TUnlessReturnType) $callback
+ * @param (callable($this): TUnlessReturnType)|null $default
+ * @return $this|TUnlessReturnType
+ */
+ public function unless($value, callable $callback, ?callable $default = null);
+
+ /**
+ * Apply the callback unless the collection is empty.
+ *
+ * @template TUnlessEmptyReturnType
+ *
+ * @param callable($this): TUnlessEmptyReturnType $callback
+ * @param (callable($this): TUnlessEmptyReturnType)|null $default
+ * @return $this|TUnlessEmptyReturnType
+ */
+ public function unlessEmpty(callable $callback, ?callable $default = null);
+
+ /**
+ * Apply the callback unless the collection is not empty.
+ *
+ * @template TUnlessNotEmptyReturnType
+ *
+ * @param callable($this): TUnlessNotEmptyReturnType $callback
+ * @param (callable($this): TUnlessNotEmptyReturnType)|null $default
+ * @return $this|TUnlessNotEmptyReturnType
+ */
+ public function unlessNotEmpty(callable $callback, ?callable $default = null);
+
+ /**
+ * Filter items by the given key value pair.
+ *
+ * @param string $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return static
+ */
+ public function where($key, $operator = null, $value = null);
+
+ /**
+ * Filter items where the value for the given key is null.
+ *
+ * @param string|null $key
+ * @return static
+ */
+ public function whereNull($key = null);
+
+ /**
+ * Filter items where the value for the given key is not null.
+ *
+ * @param string|null $key
+ * @return static
+ */
+ public function whereNotNull($key = null);
+
+ /**
+ * Filter items by the given key value pair using strict comparison.
+ *
+ * @param string $key
+ * @param mixed $value
+ * @return static
+ */
+ public function whereStrict($key, $value);
+
+ /**
+ * Filter items by the given key value pair.
+ *
+ * @param string $key
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $values
+ * @param bool $strict
+ * @return static
+ */
+ public function whereIn($key, $values, $strict = false);
+
+ /**
+ * Filter items by the given key value pair using strict comparison.
+ *
+ * @param string $key
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $values
+ * @return static
+ */
+ public function whereInStrict($key, $values);
+
+ /**
+ * Filter items such that the value of the given key is between the given values.
+ *
+ * @param string $key
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $values
+ * @return static
+ */
+ public function whereBetween($key, $values);
+
+ /**
+ * Filter items such that the value of the given key is not between the given values.
+ *
+ * @param string $key
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $values
+ * @return static
+ */
+ public function whereNotBetween($key, $values);
+
+ /**
+ * Filter items by the given key value pair.
+ *
+ * @param string $key
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $values
+ * @param bool $strict
+ * @return static
+ */
+ public function whereNotIn($key, $values, $strict = false);
+
+ /**
+ * Filter items by the given key value pair using strict comparison.
+ *
+ * @param string $key
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $values
+ * @return static
+ */
+ public function whereNotInStrict($key, $values);
+
+ /**
+ * Filter the items, removing any items that don't match the given type(s).
+ *
+ * @template TWhereInstanceOf
+ *
+ * @param class-string|array> $type
+ * @return static
+ */
+ public function whereInstanceOf($type);
+
+ /**
+ * Get the first item from the enumerable passing the given truth test.
+ *
+ * @template TFirstDefault
+ *
+ * @param (callable(TValue,TKey): bool)|null $callback
+ * @param TFirstDefault|(\Closure(): TFirstDefault) $default
+ * @return TValue|TFirstDefault
+ */
+ public function first(?callable $callback = null, $default = null);
+
+ /**
+ * Get the first item by the given key value pair.
+ *
+ * @param string $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return TValue|null
+ */
+ public function firstWhere($key, $operator = null, $value = null);
+
+ /**
+ * Get a flattened array of the items in the collection.
+ *
+ * @param int $depth
+ * @return static
+ */
+ public function flatten($depth = INF);
+
+ /**
+ * Flip the values with their keys.
+ *
+ * @return static
+ */
+ public function flip();
+
+ /**
+ * Get an item from the collection by key.
+ *
+ * @template TGetDefault
+ *
+ * @param TKey $key
+ * @param TGetDefault|(\Closure(): TGetDefault) $default
+ * @return TValue|TGetDefault
+ */
+ public function get($key, $default = null);
+
+ /**
+ * Group an associative array by a field or using a callback.
+ *
+ * @template TGroupKey of array-key
+ *
+ * @param (callable(TValue, TKey): TGroupKey)|array|string $groupBy
+ * @param bool $preserveKeys
+ * @return static<($groupBy is string ? array-key : ($groupBy is array ? array-key : TGroupKey)), static<($preserveKeys is true ? TKey : int), ($groupBy is array ? mixed : TValue)>>
+ */
+ public function groupBy($groupBy, $preserveKeys = false);
+
+ /**
+ * Key an associative array by a field or using a callback.
+ *
+ * @template TNewKey of array-key
+ *
+ * @param (callable(TValue, TKey): TNewKey)|array|string $keyBy
+ * @return static<($keyBy is string ? array-key : ($keyBy is array ? array-key : TNewKey)), TValue>
+ */
+ public function keyBy($keyBy);
+
+ /**
+ * Determine if an item exists in the collection by key.
+ *
+ * @param TKey|array $key
+ * @return bool
+ */
+ public function has($key);
+
+ /**
+ * Determine if any of the keys exist in the collection.
+ *
+ * @param mixed $key
+ * @return bool
+ */
+ public function hasAny($key);
+
+ /**
+ * Concatenate values of a given key as a string.
+ *
+ * @param (callable(TValue, TKey): mixed)|string $value
+ * @param string|null $glue
+ * @return string
+ */
+ public function implode($value, $glue = null);
+
+ /**
+ * Intersect the collection with the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function intersect($items);
+
+ /**
+ * Intersect the collection with the given items, using the callback.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @param callable(TValue, TValue): int $callback
+ * @return static
+ */
+ public function intersectUsing($items, callable $callback);
+
+ /**
+ * Intersect the collection with the given items with additional index check.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function intersectAssoc($items);
+
+ /**
+ * Intersect the collection with the given items with additional index check, using the callback.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @param callable(TValue, TValue): int $callback
+ * @return static
+ */
+ public function intersectAssocUsing($items, callable $callback);
+
+ /**
+ * Intersect the collection with the given items by key.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function intersectByKeys($items);
+
+ /**
+ * Determine if the collection is empty or not.
+ *
+ * @return bool
+ */
+ public function isEmpty();
+
+ /**
+ * Determine if the collection is not empty.
+ *
+ * @return bool
+ */
+ public function isNotEmpty();
+
+ /**
+ * Determine if the collection contains a single item.
+ *
+ * @return bool
+ */
+ public function containsOneItem();
+
+ /**
+ * Join all items from the collection using a string. The final items can use a separate glue string.
+ *
+ * @param string $glue
+ * @param string $finalGlue
+ * @return string
+ */
+ public function join($glue, $finalGlue = '');
+
+ /**
+ * Get the keys of the collection items.
+ *
+ * @return static
+ */
+ public function keys();
+
+ /**
+ * Get the last item from the collection.
+ *
+ * @template TLastDefault
+ *
+ * @param (callable(TValue, TKey): bool)|null $callback
+ * @param TLastDefault|(\Closure(): TLastDefault) $default
+ * @return TValue|TLastDefault
+ */
+ public function last(?callable $callback = null, $default = null);
+
+ /**
+ * Run a map over each of the items.
+ *
+ * @template TMapValue
+ *
+ * @param callable(TValue, TKey): TMapValue $callback
+ * @return static
+ */
+ public function map(callable $callback);
+
+ /**
+ * Run a map over each nested chunk of items.
+ *
+ * @param callable $callback
+ * @return static
+ */
+ public function mapSpread(callable $callback);
+
+ /**
+ * Run a dictionary map over the items.
+ *
+ * The callback should return an associative array with a single key/value pair.
+ *
+ * @template TMapToDictionaryKey of array-key
+ * @template TMapToDictionaryValue
+ *
+ * @param callable(TValue, TKey): array $callback
+ * @return static>
+ */
+ public function mapToDictionary(callable $callback);
+
+ /**
+ * Run a grouping map over the items.
+ *
+ * The callback should return an associative array with a single key/value pair.
+ *
+ * @template TMapToGroupsKey of array-key
+ * @template TMapToGroupsValue
+ *
+ * @param callable(TValue, TKey): array $callback
+ * @return static>
+ */
+ public function mapToGroups(callable $callback);
+
+ /**
+ * Run an associative map over each of the items.
+ *
+ * The callback should return an associative array with a single key/value pair.
+ *
+ * @template TMapWithKeysKey of array-key
+ * @template TMapWithKeysValue
+ *
+ * @param callable(TValue, TKey): array $callback
+ * @return static
+ */
+ public function mapWithKeys(callable $callback);
+
+ /**
+ * Map a collection and flatten the result by a single level.
+ *
+ * @template TFlatMapKey of array-key
+ * @template TFlatMapValue
+ *
+ * @param callable(TValue, TKey): (\Illuminate\Support\Collection|array) $callback
+ * @return static
+ */
+ public function flatMap(callable $callback);
+
+ /**
+ * Map the values into a new class.
+ *
+ * @template TMapIntoValue
+ *
+ * @param class-string $class
+ * @return static
+ */
+ public function mapInto($class);
+
+ /**
+ * Merge the collection with the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function merge($items);
+
+ /**
+ * Recursively merge the collection with the given items.
+ *
+ * @template TMergeRecursiveValue
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function mergeRecursive($items);
+
+ /**
+ * Create a collection by using this collection for keys and another for its values.
+ *
+ * @template TCombineValue
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $values
+ * @return static
+ */
+ public function combine($values);
+
+ /**
+ * Union the collection with the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function union($items);
+
+ /**
+ * Get the min value of a given key.
+ *
+ * @param (callable(TValue):mixed)|string|null $callback
+ * @return mixed
+ */
+ public function min($callback = null);
+
+ /**
+ * Get the max value of a given key.
+ *
+ * @param (callable(TValue):mixed)|string|null $callback
+ * @return mixed
+ */
+ public function max($callback = null);
+
+ /**
+ * Create a new collection consisting of every n-th element.
+ *
+ * @param int $step
+ * @param int $offset
+ * @return static
+ */
+ public function nth($step, $offset = 0);
+
+ /**
+ * Get the items with the specified keys.
+ *
+ * @param \Illuminate\Support\Enumerable|array|string $keys
+ * @return static
+ */
+ public function only($keys);
+
+ /**
+ * "Paginate" the collection by slicing it into a smaller collection.
+ *
+ * @param int $page
+ * @param int $perPage
+ * @return static
+ */
+ public function forPage($page, $perPage);
+
+ /**
+ * Partition the collection into two arrays using the given callback or key.
+ *
+ * @param (callable(TValue, TKey): bool)|TValue|string $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return static, static>
+ */
+ public function partition($key, $operator = null, $value = null);
+
+ /**
+ * Push all of the given items onto the collection.
+ *
+ * @template TConcatKey of array-key
+ * @template TConcatValue
+ *
+ * @param iterable $source
+ * @return static
+ */
+ public function concat($source);
+
+ /**
+ * Get one or a specified number of items randomly from the collection.
+ *
+ * @param int|null $number
+ * @return static|TValue
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function random($number = null);
+
+ /**
+ * Reduce the collection to a single value.
+ *
+ * @template TReduceInitial
+ * @template TReduceReturnType
+ *
+ * @param callable(TReduceInitial|TReduceReturnType, TValue, TKey): TReduceReturnType $callback
+ * @param TReduceInitial $initial
+ * @return TReduceInitial|TReduceReturnType
+ */
+ public function reduce(callable $callback, $initial = null);
+
+ /**
+ * Reduce the collection to multiple aggregate values.
+ *
+ * @param callable $callback
+ * @param mixed ...$initial
+ * @return array
+ *
+ * @throws \UnexpectedValueException
+ */
+ public function reduceSpread(callable $callback, ...$initial);
+
+ /**
+ * Replace the collection items with the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function replace($items);
+
+ /**
+ * Recursively replace the collection items with the given items.
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable $items
+ * @return static
+ */
+ public function replaceRecursive($items);
+
+ /**
+ * Reverse items order.
+ *
+ * @return static
+ */
+ public function reverse();
+
+ /**
+ * Search the collection for a given value and return the corresponding key if successful.
+ *
+ * @param TValue|callable(TValue,TKey): bool $value
+ * @param bool $strict
+ * @return TKey|bool
+ */
+ public function search($value, $strict = false);
+
+ /**
+ * Get the item before the given item.
+ *
+ * @param TValue|(callable(TValue,TKey): bool) $value
+ * @param bool $strict
+ * @return TValue|null
+ */
+ public function before($value, $strict = false);
+
+ /**
+ * Get the item after the given item.
+ *
+ * @param TValue|(callable(TValue,TKey): bool) $value
+ * @param bool $strict
+ * @return TValue|null
+ */
+ public function after($value, $strict = false);
+
+ /**
+ * Shuffle the items in the collection.
+ *
+ * @return static
+ */
+ public function shuffle();
+
+ /**
+ * Create chunks representing a "sliding window" view of the items in the collection.
+ *
+ * @param int $size
+ * @param int $step
+ * @return static
+ */
+ public function sliding($size = 2, $step = 1);
+
+ /**
+ * Skip the first {$count} items.
+ *
+ * @param int $count
+ * @return static
+ */
+ public function skip($count);
+
+ /**
+ * Skip items in the collection until the given condition is met.
+ *
+ * @param TValue|callable(TValue,TKey): bool $value
+ * @return static
+ */
+ public function skipUntil($value);
+
+ /**
+ * Skip items in the collection while the given condition is met.
+ *
+ * @param TValue|callable(TValue,TKey): bool $value
+ * @return static
+ */
+ public function skipWhile($value);
+
+ /**
+ * Get a slice of items from the enumerable.
+ *
+ * @param int $offset
+ * @param int|null $length
+ * @return static
+ */
+ public function slice($offset, $length = null);
+
+ /**
+ * Split a collection into a certain number of groups.
+ *
+ * @param int $numberOfGroups
+ * @return static
+ */
+ public function split($numberOfGroups);
+
+ /**
+ * Get the first item in the collection, but only if exactly one item exists. Otherwise, throw an exception.
+ *
+ * @param (callable(TValue, TKey): bool)|string $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return TValue
+ *
+ * @throws \Illuminate\Support\ItemNotFoundException
+ * @throws \Illuminate\Support\MultipleItemsFoundException
+ */
+ public function sole($key = null, $operator = null, $value = null);
+
+ /**
+ * Get the first item in the collection but throw an exception if no matching items exist.
+ *
+ * @param (callable(TValue, TKey): bool)|string $key
+ * @param mixed $operator
+ * @param mixed $value
+ * @return TValue
+ *
+ * @throws \Illuminate\Support\ItemNotFoundException
+ */
+ public function firstOrFail($key = null, $operator = null, $value = null);
+
+ /**
+ * Chunk the collection into chunks of the given size.
+ *
+ * @param int $size
+ * @return static
+ */
+ public function chunk($size);
+
+ /**
+ * Chunk the collection into chunks with a callback.
+ *
+ * @param callable(TValue, TKey, static): bool $callback
+ * @return static>
+ */
+ public function chunkWhile(callable $callback);
+
+ /**
+ * Split a collection into a certain number of groups, and fill the first groups completely.
+ *
+ * @param int $numberOfGroups
+ * @return static
+ */
+ public function splitIn($numberOfGroups);
+
+ /**
+ * Sort through each item with a callback.
+ *
+ * @param (callable(TValue, TValue): int)|null|int $callback
+ * @return static
+ */
+ public function sort($callback = null);
+
+ /**
+ * Sort items in descending order.
+ *
+ * @param int $options
+ * @return static
+ */
+ public function sortDesc($options = SORT_REGULAR);
+
+ /**
+ * Sort the collection using the given callback.
+ *
+ * @param array|(callable(TValue, TKey): mixed)|string $callback
+ * @param int $options
+ * @param bool $descending
+ * @return static
+ */
+ public function sortBy($callback, $options = SORT_REGULAR, $descending = false);
+
+ /**
+ * Sort the collection in descending order using the given callback.
+ *
+ * @param array|(callable(TValue, TKey): mixed)|string $callback
+ * @param int $options
+ * @return static
+ */
+ public function sortByDesc($callback, $options = SORT_REGULAR);
+
+ /**
+ * Sort the collection keys.
+ *
+ * @param int $options
+ * @param bool $descending
+ * @return static
+ */
+ public function sortKeys($options = SORT_REGULAR, $descending = false);
+
+ /**
+ * Sort the collection keys in descending order.
+ *
+ * @param int $options
+ * @return static
+ */
+ public function sortKeysDesc($options = SORT_REGULAR);
+
+ /**
+ * Sort the collection keys using a callback.
+ *
+ * @param callable(TKey, TKey): int $callback
+ * @return static
+ */
+ public function sortKeysUsing(callable $callback);
+
+ /**
+ * Get the sum of the given values.
+ *
+ * @param (callable(TValue): mixed)|string|null $callback
+ * @return mixed
+ */
+ public function sum($callback = null);
+
+ /**
+ * Take the first or last {$limit} items.
+ *
+ * @param int $limit
+ * @return static
+ */
+ public function take($limit);
+
+ /**
+ * Take items in the collection until the given condition is met.
+ *
+ * @param TValue|callable(TValue,TKey): bool $value
+ * @return static
+ */
+ public function takeUntil($value);
+
+ /**
+ * Take items in the collection while the given condition is met.
+ *
+ * @param TValue|callable(TValue,TKey): bool $value
+ * @return static
+ */
+ public function takeWhile($value);
+
+ /**
+ * Pass the collection to the given callback and then return it.
+ *
+ * @param callable(TValue): mixed $callback
+ * @return $this
+ */
+ public function tap(callable $callback);
+
+ /**
+ * Pass the enumerable to the given callback and return the result.
+ *
+ * @template TPipeReturnType
+ *
+ * @param callable($this): TPipeReturnType $callback
+ * @return TPipeReturnType
+ */
+ public function pipe(callable $callback);
+
+ /**
+ * Pass the collection into a new class.
+ *
+ * @template TPipeIntoValue
+ *
+ * @param class-string $class
+ * @return TPipeIntoValue
+ */
+ public function pipeInto($class);
+
+ /**
+ * Pass the collection through a series of callable pipes and return the result.
+ *
+ * @param array $pipes
+ * @return mixed
+ */
+ public function pipeThrough($pipes);
+
+ /**
+ * Get the values of a given key.
+ *
+ * @param string|array $value
+ * @param string|null $key
+ * @return static
+ */
+ public function pluck($value, $key = null);
+
+ /**
+ * Create a collection of all elements that do not pass a given truth test.
+ *
+ * @param (callable(TValue, TKey): bool)|bool|TValue $callback
+ * @return static
+ */
+ public function reject($callback = true);
+
+ /**
+ * Convert a flatten "dot" notation array into an expanded array.
+ *
+ * @return static
+ */
+ public function undot();
+
+ /**
+ * Return only unique items from the collection array.
+ *
+ * @param (callable(TValue, TKey): mixed)|string|null $key
+ * @param bool $strict
+ * @return static
+ */
+ public function unique($key = null, $strict = false);
+
+ /**
+ * Return only unique items from the collection array using strict comparison.
+ *
+ * @param (callable(TValue, TKey): mixed)|string|null $key
+ * @return static
+ */
+ public function uniqueStrict($key = null);
+
+ /**
+ * Reset the keys on the underlying array.
+ *
+ * @return static
+ */
+ public function values();
+
+ /**
+ * Pad collection to the specified length with a value.
+ *
+ * @template TPadValue
+ *
+ * @param int $size
+ * @param TPadValue $value
+ * @return static
+ */
+ public function pad($size, $value);
+
+ /**
+ * Get the values iterator.
+ *
+ * @return \Traversable
+ */
+ public function getIterator(): Traversable;
+
+ /**
+ * Count the number of items in the collection.
+ *
+ * @return int
+ */
+ public function count(): int;
+
+ /**
+ * Count the number of items in the collection by a field or using a callback.
+ *
+ * @param (callable(TValue, TKey): array-key)|string|null $countBy
+ * @return static
+ */
+ public function countBy($countBy = null);
+
+ /**
+ * Zip the collection together with one or more arrays.
+ *
+ * e.g. new Collection([1, 2, 3])->zip([4, 5, 6]);
+ * => [[1, 4], [2, 5], [3, 6]]
+ *
+ * @template TZipValue
+ *
+ * @param \Illuminate\Contracts\Support\Arrayable|iterable ...$items
+ * @return static>
+ */
+ public function zip($items);
+
+ /**
+ * Collect the values into a collection.
+ *
+ * @return \Illuminate\Support\Collection
+ */
+ public function collect();
+
+ /**
+ * Get the collection of items as a plain array.
+ *
+ * @return array
+ */
+ public function toArray();
+
+ /**
+ * Convert the object into something JSON serializable.
+ *
+ * @return mixed
+ */
+ public function jsonSerialize(): mixed;
+
+ /**
+ * Get the collection of items as JSON.
+ *
+ * @param int $options
+ * @return string
+ */
+ public function toJson($options = 0);
+
+ /**
+ * Get a CachingIterator instance.
+ *
+ * @param int $flags
+ * @return \CachingIterator
+ */
+ public function getCachingIterator($flags = CachingIterator::CALL_TOSTRING);
+
+ /**
+ * Convert the collection to its string representation.
+ *
+ * @return string
+ */
+ public function __toString();
+
+ /**
+ * Indicate that the model's string representation should be escaped when __toString is invoked.
+ *
+ * @param bool $escape
+ * @return $this
+ */
+ public function escapeWhenCastingToString($escape = true);
+
+ /**
+ * Add a method to the list of proxied methods.
+ *
+ * @param string $method
+ * @return void
+ */
+ public static function proxy($method);
+
+ /**
+ * Dynamically access collection proxies.
+ *
+ * @param string $key
+ * @return mixed
+ *
+ * @throws \Exception
+ */
+ public function __get($key);
+}
diff --git a/vendor/illuminate/collections/HigherOrderCollectionProxy.php b/vendor/illuminate/collections/HigherOrderCollectionProxy.php
new file mode 100644
index 0000000..c5a723d
--- /dev/null
+++ b/vendor/illuminate/collections/HigherOrderCollectionProxy.php
@@ -0,0 +1,68 @@
+
+ * @mixin TValue
+ */
+class HigherOrderCollectionProxy
+{
+ /**
+ * The collection being operated on.
+ *
+ * @var \Illuminate\Support\Enumerable
+ */
+ protected $collection;
+
+ /**
+ * The method being proxied.
+ *
+ * @var string
+ */
+ protected $method;
+
+ /**
+ * Create a new proxy instance.
+ *
+ * @param \Illuminate\Support\Enumerable $collection
+ * @param string $method
+ * @return void
+ */
+ public function __construct(Enumerable $collection, $method)
+ {
+ $this->method = $method;
+ $this->collection = $collection;
+ }
+
+ /**
+ * Proxy accessing an attribute onto the collection items.
+ *
+ * @param string $key
+ * @return mixed
+ */
+ public function __get($key)
+ {
+ return $this->collection->{$this->method}(function ($value) use ($key) {
+ return is_array($value) ? $value[$key] : $value->{$key};
+ });
+ }
+
+ /**
+ * Proxy a method call onto the collection items.
+ *
+ * @param string $method
+ * @param array $parameters
+ * @return mixed
+ */
+ public function __call($method, $parameters)
+ {
+ return $this->collection->{$this->method}(function ($value) use ($method, $parameters) {
+ return $value->{$method}(...$parameters);
+ });
+ }
+}
diff --git a/vendor/illuminate/collections/ItemNotFoundException.php b/vendor/illuminate/collections/ItemNotFoundException.php
new file mode 100644
index 0000000..05a51d9
--- /dev/null
+++ b/vendor/illuminate/collections/ItemNotFoundException.php
@@ -0,0 +1,9 @@
+
+ */
+class LazyCollection implements CanBeEscapedWhenCastToString, Enumerable
+{
+ /**
+ * @use \Illuminate\Support\Traits\EnumeratesValues
+ */
+ use EnumeratesValues, Macroable;
+
+ /**
+ * The source from which to generate items.
+ *
+ * @var (Closure(): \Generator)|static|array