From f41655ea80f7d9e13ac48ea055402c12d78ca3ab Mon Sep 17 00:00:00 2001 From: Bastien Date: Wed, 18 Aug 2021 13:53:44 +0200 Subject: [PATCH] first commit --- .env | 41 + .gitignore | 20 + LICENSE | 21 + README.md | 163 + bin/console | 17 + bin/phpunit | 19 + composer.json | 106 + composer.lock | 11157 ++++++++++++++++ config/bundles.php | 19 + config/packages/cache.yaml | 19 + config/packages/dev/debug.yaml | 4 + config/packages/dev/monolog.yaml | 19 + config/packages/dev/web_profiler.yaml | 6 + config/packages/doctrine.yaml | 18 + config/packages/doctrine_migrations.yaml | 6 + config/packages/framework.yaml | 24 + config/packages/knp_gaufrette.yaml | 14 + config/packages/mailer.yaml | 3 + config/packages/notifier.yaml | 16 + config/packages/nzo_encryptor.yaml | 2 + config/packages/prod/deprecations.yaml | 8 + config/packages/prod/doctrine.yaml | 20 + config/packages/prod/monolog.yaml | 17 + config/packages/routing.yaml | 12 + config/packages/security.yaml | 46 + config/packages/sensio_framework_extra.yaml | 3 + config/packages/test/doctrine.yaml | 4 + config/packages/test/monolog.yaml | 12 + config/packages/test/validator.yaml | 3 + config/packages/test/web_profiler.yaml | 6 + config/packages/translation.yaml | 13 + config/packages/twig.yaml | 6 + config/packages/validator.yaml | 8 + config/packages/vich_uploader.yaml | 19 + config/preload.php | 5 + config/routes.yaml | 3 + config/routes/annotations.yaml | 7 + config/routes/dev/web_profiler.yaml | 7 + config/routes/framework.yaml | 4 + config/secrets/dev/dev.decrypt.private.php | 3 + config/secrets/dev/dev.encrypt.public.php | 3 + config/services.yaml | 40 + migrations/.gitignore | 0 phpunit.xml.dist | 42 + public/images/accueil.png | Bin 0 -> 98347 bytes public/images/authentification.png | Bin 0 -> 20829 bytes public/images/creer_base.png | Bin 0 -> 51681 bytes public/images/liste_backups.png | Bin 0 -> 39650 bytes public/images/liste_bases.png | Bin 0 -> 56424 bytes public/index.php | 9 + src/Command/BackupCommand.php | 76 + src/Command/MakeUserCommand.php | 58 + src/Command/RegenerateAppSecretCommand.php | 37 + src/Controller/.gitignore | 0 src/Controller/Admin/BackupCrudController.php | 119 + src/Controller/Admin/DashboardController.php | 33 + .../Admin/DatabaseCrudController.php | 156 + src/Controller/SecurityController.php | 63 + src/Entity/.gitignore | 0 src/Entity/Backup.php | 202 + src/Entity/Database.php | 201 + src/Entity/User.php | 156 + src/EventSubscriber/DatabaseSubscriber.php | 61 + src/Kernel.php | 38 + src/Repository/.gitignore | 0 src/Repository/BackupRepository.php | 50 + src/Repository/DatabaseRepository.php | 50 + src/Repository/UserRepository.php | 67 + src/Security/AppCustomAuthenticator.php | 57 + src/Security/Voter/BackupVoter.php | 43 + src/Security/Voter/DatabaseVoter.php | 43 + src/Service/BackupService.php | 143 + src/Service/S3Helper.php | 38 + symfony.lock | 679 + templates/base.html.twig | 19 + .../bundles/EasyAdminBundle/welcome.html.twig | 44 + templates/security/login.html.twig | 42 + tests/bootstrap.php | 11 + translations/.gitignore | 0 79 files changed, 14480 insertions(+) create mode 100644 .env create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 bin/console create mode 100644 bin/phpunit create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/bundles.php create mode 100644 config/packages/cache.yaml create mode 100644 config/packages/dev/debug.yaml create mode 100644 config/packages/dev/monolog.yaml create mode 100644 config/packages/dev/web_profiler.yaml create mode 100644 config/packages/doctrine.yaml create mode 100644 config/packages/doctrine_migrations.yaml create mode 100644 config/packages/framework.yaml create mode 100644 config/packages/knp_gaufrette.yaml create mode 100644 config/packages/mailer.yaml create mode 100644 config/packages/notifier.yaml create mode 100644 config/packages/nzo_encryptor.yaml create mode 100644 config/packages/prod/deprecations.yaml create mode 100644 config/packages/prod/doctrine.yaml create mode 100644 config/packages/prod/monolog.yaml create mode 100644 config/packages/routing.yaml create mode 100644 config/packages/security.yaml create mode 100644 config/packages/sensio_framework_extra.yaml create mode 100644 config/packages/test/doctrine.yaml create mode 100644 config/packages/test/monolog.yaml create mode 100644 config/packages/test/validator.yaml create mode 100644 config/packages/test/web_profiler.yaml create mode 100644 config/packages/translation.yaml create mode 100644 config/packages/twig.yaml create mode 100644 config/packages/validator.yaml create mode 100644 config/packages/vich_uploader.yaml create mode 100644 config/preload.php create mode 100644 config/routes.yaml create mode 100644 config/routes/annotations.yaml create mode 100644 config/routes/dev/web_profiler.yaml create mode 100644 config/routes/framework.yaml create mode 100644 config/secrets/dev/dev.decrypt.private.php create mode 100644 config/secrets/dev/dev.encrypt.public.php create mode 100644 config/services.yaml create mode 100644 migrations/.gitignore create mode 100644 phpunit.xml.dist create mode 100644 public/images/accueil.png create mode 100644 public/images/authentification.png create mode 100644 public/images/creer_base.png create mode 100644 public/images/liste_backups.png create mode 100644 public/images/liste_bases.png create mode 100644 public/index.php create mode 100644 src/Command/BackupCommand.php create mode 100644 src/Command/MakeUserCommand.php create mode 100644 src/Command/RegenerateAppSecretCommand.php create mode 100644 src/Controller/.gitignore create mode 100644 src/Controller/Admin/BackupCrudController.php create mode 100644 src/Controller/Admin/DashboardController.php create mode 100644 src/Controller/Admin/DatabaseCrudController.php create mode 100644 src/Controller/SecurityController.php create mode 100644 src/Entity/.gitignore create mode 100644 src/Entity/Backup.php create mode 100644 src/Entity/Database.php create mode 100644 src/Entity/User.php create mode 100644 src/EventSubscriber/DatabaseSubscriber.php create mode 100644 src/Kernel.php create mode 100644 src/Repository/.gitignore create mode 100644 src/Repository/BackupRepository.php create mode 100644 src/Repository/DatabaseRepository.php create mode 100644 src/Repository/UserRepository.php create mode 100644 src/Security/AppCustomAuthenticator.php create mode 100644 src/Security/Voter/BackupVoter.php create mode 100644 src/Security/Voter/DatabaseVoter.php create mode 100644 src/Service/BackupService.php create mode 100644 src/Service/S3Helper.php create mode 100644 symfony.lock create mode 100644 templates/base.html.twig create mode 100644 templates/bundles/EasyAdminBundle/welcome.html.twig create mode 100644 templates/security/login.html.twig create mode 100644 tests/bootstrap.php create mode 100644 translations/.gitignore diff --git a/.env b/.env new file mode 100644 index 0000000..44ae64f --- /dev/null +++ b/.env @@ -0,0 +1,41 @@ +# In all environments, the following files are loaded if they exist, +# the latter taking precedence over the former: +# +# * .env contains default values for the environment variables needed by the app +# * .env.local uncommitted file with local overrides +# * .env.$APP_ENV committed environment-specific defaults +# * .env.$APP_ENV.local uncommitted environment-specific overrides +# +# Real environment variables win over .env files. +# +# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. +# +# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). +# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET=ed57093ff0c0f5c74d15b176f96d1e66 +###< symfony/framework-bundle ### + +###> symfony/mailer ### +# MAILER_DSN=smtp://localhost +###< symfony/mailer ### + +###> doctrine/doctrine-bundle ### +# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url +# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml +# +#DATABASE_URL="sqlite:///%kernel.project_dir%/var/dbsaver.db" +DATABASE_URL="mysql://root:root@127.0.0.1:3306/dbsaver?serverVersion=5.7" +#DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8" +###< doctrine/doctrine-bundle ### + +###> AWS_S3 ### +AWS_S3_ACCESS_ID="your aws_s3 access id" +AWS_S3_ACCESS_SECRET="your aws_s3 access secret" +AWS_S3_BUCKET_NAME="your aws_s3 bucket name" +AWS_S3_REGION="eu-west-3" +###< AWS S3 ### + +BACKUP_LOCAL=1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b5664ba --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ + +###> symfony/framework-bundle ### +/.env.local +/.env.local.php +/.env.*.local +/config/secrets/prod/prod.decrypt.private.php +/public/bundles/ +/var/ +/vendor/ +###< symfony/framework-bundle ### + +###> symfony/phpunit-bridge ### +.phpunit.result.cache +/phpunit.xml +###< symfony/phpunit-bridge ### + +###> phpunit/phpunit ### +/phpunit.xml +.phpunit.result.cache +###< phpunit/phpunit ### diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9f5a693 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Bastien Loughin + +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/README.md b/README.md new file mode 100644 index 0000000..1f5a267 --- /dev/null +++ b/README.md @@ -0,0 +1,163 @@ +# DbSaver + +![Alt text](./public/images/liste_bases.png?raw=true "Liste des bases de données") + +DbSaver est une application réalisée par Bastien LOUGHIN, vous permettant de réaliser des backups quotidiens automatiques (et manuels) pour vos bases de données MySQL. +Vous n'avez qu'à renseigner les identifiants pour accéder aux différentes bases de données, configurer une tâche CRON... et c'est fini. +Les mots de passe seront automatiquement cryptés. + +Vous pourrez ensuite grâce à DbSaver accéder aux différents backups de vos bases de données en vous rendant sur l'onglet Backups. +Ceux-ci peuvent être sauvegardés en local ou sur le cloud d'Amazon AWS S3. + +/!\ DbSaver sauvegarde uniquement les données stockées dans les bases de données. Les fichiers (uploads clients par exemple) ne sont pas sauvegardés. + +# Table des matières + +1. [Pré-requis](#preRequis) +2. [Installation](#installation) +3. [Configuration de la tâche CRON](#cron) +4. [Backups en local ou sur AWS S3](#backups) + 1. [Local](#backupLocal) + 2. [AWS S3](#backupAws) +5. [Utiliser l'application](#app) +6. [Licence](#licence) + + +## Pré-requis + +* PHP 8 +* Composer +* Symfony CLI (si vous souhaitez lancer le projet en local) + +## Installation + +1. `git clone git@github.com:bastien70/dbsaver.git` +2. `cd dbsaver` +3. Configurez la variable d'environnement dans le fichier `.env` : `DATABASE_URL`. +3. `composer install` (installation des dépendances) +4. `php bin/console app:regenerate-app-secret` (régénération de la clé secrète permettant de crypter les mots de passes de vos bases de données) +5. `php bin/console d:d:c` (création de la base de données) +6. `php bin/console d:s:u -f` (migration des tables) +7. `php bin/console app:make-user` (création de votre compte d'accès) + +## Configuration de la tâche CRON + +Configurer une tâche CRON vous servira à lancer automatiquement et à la fréquence désirée, un backup de toutes vos bases de données. + +Le fichier responsable de lancer la commande se trouve sur `[projet]/src/Command/BackupCommand.php` + +La commande à effectuer pour la lancer est la suivante : `php bin/console app:backup` + +Initialisez une tâche CRON sur votre serveur ou PC : + +`[chemin vers php] [chemin vers la racine du projet]/bin/console app:backup` + +## Backups en local ou sur AWS S3 + +### Local + +L'application est configurée pour sauvegarder les backups en local. Si vous venez d'installer l'application, vous n'avez rien à faire. +Sinon, voici les changements à effectuer : + +Ouvrez le fichier `[projet]/config/packages/vich_uploader.yaml`. + +Remplacez le contenu par : + +```yaml +### UTILISEZ CETTE CONFIGURATION SI VOUS SOUHAITEZ STOCKER LES FICHIERS EN LOCAL ### +vich_uploader: + db_driver: orm + mappings: + backups: + uri_prefix: /files/backups + upload_destination: '%kernel.project_dir%/public/files/backups' + + +### UTILISEZ CETTE CONFIGURATION SI VOUS SOUHAITEZ STOCKER LES FICHIERS SUR LE CLOUD AWS S3 +#vich_uploader: +# db_driver: orm +# storage: gaufrette +# mappings: +# backups: +# uri_prefix: '%uploads_base_url%' +# upload_destination: backup_fs +``` + +Modifiez également la variable d'environnement `BACKUP_LOCAL` dans le fichier `.env` comme ceci : +`BACKUP_LOCAL=1` + +### AWS S3 + +Modifiez dans le fichier `.env` les variables d'environnement suivantes pour les faire correspondre à ceux renseignés par AWS S3. + +``` +###> AWS_S3 ### +AWS_S3_ACCESS_ID="your aws_s3 access id" +AWS_S3_ACCESS_SECRET="your aws_s3 access secret" +AWS_S3_BUCKET_NAME="your aws_s3 bucket name" +AWS_S3_REGION="eu-west-3" +###< AWS S3 ### +``` + +Modifiez également la variable `BACKUP_LOCAL` comme ceci : +`BACKUP_LOCAL=0` + +Ouvrez le fichier `[projet]/config/packages/vich_uploader.yaml`. + +Remplacez le contenu par : + +```yaml +### UTILISEZ CETTE CONFIGURATION SI VOUS SOUHAITEZ STOCKER LES FICHIERS EN LOCAL ### +#vich_uploader: +# db_driver: orm +# mappings: +# backups: +# uri_prefix: /files/backups +# upload_destination: '%kernel.project_dir%/public/files/backups' + + +### UTILISEZ CETTE CONFIGURATION SI VOUS SOUHAITEZ STOCKER LES FICHIERS SUR LE CLOUD AWS S3 +vich_uploader: + db_driver: orm + storage: gaufrette + mappings: + backups: + uri_prefix: '%uploads_base_url%' + upload_destination: backup_fs +``` + +## Utiliser l'application + +Après avoir déployé l'application sur votre serveur (ou l'avoir lancée en local), accédez à la page de connexion : +Pour l'exemple, le nom de domaine rattaché à l'application sera `127.0.0.1:8000`. + +Lancez l'application : `https://127.0.0.1:8000` +Vous serez invité à vous connecter. Entrez les identifiants de votre compte (que vous avez créé avec la commande `php bin/console app:make-user`) + +![Alt text](./public/images/authentification.png?raw=true "Authentification") + +Vous serez redirigés vers `https://127.0.0.1:8000/dbsaver` + +![Alt text](./public/images/accueil.png?raw=true "Accueil") + +Pour créer une base de données, cliquez sur l'onglet `Bases de données`, puis sur le bouton `Ajouter une base de données`. +Remplissez les informations de votre base de données et validez. + +![Alt text](./public/images/creer_base.png?raw=true "Ajouter une base de données") + +Vous aurez dès lors, pour chaque base de données ajoutée, la possibilité de consulter les backups, d'éditer les informations de la base de données, +supprimer la base de données de l'application (ainsi que ses backups),ou lancer un backup manuel. + +![Alt text](./public/images/liste_bases.png?raw=true "Liste des bases de données") + +Selon la fréquence de votre tâche CRON que vous avez configurée, un backup automatique sera effectué. + +Pour accéder aux backups de vos bases, cliquez sur l'onglet `Backups`. + +![Alt text](./public/images/liste_backups.png?raw=true "Liste des backups") + +Vous aurez la possibilité de supprimer ou télécharger un Backup. + +## Licence + +Cette application est protégée par une licence MIT : [LICENCE](LICENSE) diff --git a/bin/console b/bin/console new file mode 100644 index 0000000..c933dc5 --- /dev/null +++ b/bin/console @@ -0,0 +1,17 @@ +#!/usr/bin/env php +=8.0", + "ext-ctype": "*", + "ext-iconv": "*", + "aws/aws-sdk-php": "^3.190", + "composer/package-versions-deprecated": "1.11.99.2", + "doctrine/annotations": "^1.0", + "doctrine/doctrine-bundle": "^2.4", + "doctrine/doctrine-migrations-bundle": "^3.1", + "doctrine/orm": "^2.9", + "easycorp/easyadmin-bundle": "^3.5", + "ifsnop/mysqldump-php": "^2.9", + "knplabs/knp-gaufrette-bundle": "^0.7.1", + "nzo/url-encryptor-bundle": "^6.0", + "phpdocumentor/reflection-docblock": "^5.2", + "sensio/framework-extra-bundle": "^6.1", + "symfony/asset": "5.3.*", + "symfony/console": "5.3.*", + "symfony/dotenv": "5.3.*", + "symfony/expression-language": "5.3.*", + "symfony/flex": "^1.3.1", + "symfony/form": "5.3.*", + "symfony/framework-bundle": "5.3.*", + "symfony/http-client": "5.3.*", + "symfony/intl": "5.3.*", + "symfony/mailer": "5.3.*", + "symfony/mime": "5.3.*", + "symfony/monolog-bundle": "^3.1", + "symfony/notifier": "5.3.*", + "symfony/process": "5.3.*", + "symfony/property-access": "5.3.*", + "symfony/property-info": "5.3.*", + "symfony/proxy-manager-bridge": "5.3.*", + "symfony/runtime": "5.3.*", + "symfony/security-bundle": "5.3.*", + "symfony/serializer": "5.3.*", + "symfony/string": "5.3.*", + "symfony/translation": "5.3.*", + "symfony/twig-bundle": "^5.3", + "symfony/validator": "5.3.*", + "symfony/web-link": "5.3.*", + "symfony/yaml": "5.3.*", + "twig/extra-bundle": "^2.12|^3.0", + "twig/twig": "^2.12|^3.0", + "vich/uploader-bundle": "^1.18" + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "symfony/browser-kit": "^5.3", + "symfony/css-selector": "^5.3", + "symfony/debug-bundle": "^5.3", + "symfony/maker-bundle": "^1.0", + "symfony/phpunit-bridge": "^5.3", + "symfony/stopwatch": "^5.3", + "symfony/var-dumper": "^5.3", + "symfony/web-profiler-bundle": "^5.3" + }, + "config": { + "optimize-autoloader": true, + "preferred-install": { + "*": "dist" + }, + "sort-packages": true + }, + "autoload": { + "psr-4": { + "App\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "App\\Tests\\": "tests/" + } + }, + "replace": { + "symfony/polyfill-ctype": "*", + "symfony/polyfill-iconv": "*", + "symfony/polyfill-php72": "*" + }, + "scripts": { + "auto-scripts": { + "cache:clear": "symfony-cmd", + "assets:install %PUBLIC_DIR%": "symfony-cmd" + }, + "post-install-cmd": [ + "@auto-scripts" + ], + "post-update-cmd": [ + "@auto-scripts" + ] + }, + "conflict": { + "symfony/symfony": "*" + }, + "extra": { + "symfony": { + "allow-contrib": false, + "require": "5.3.*" + } + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..e766876 --- /dev/null +++ b/composer.lock @@ -0,0 +1,11157 @@ +{ + "_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": "75ab7b4a1924c423419f9d8244aa6394", + "packages": [ + { + "name": "aws/aws-sdk-php", + "version": "3.190.3", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "4e641e25cc8f4d04002404afe050e25035fad0f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/4e641e25cc8f4d04002404afe050e25035fad0f3", + "reference": "4e641e25cc8f4d04002404afe050e25035fad0f3", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-pcre": "*", + "ext-simplexml": "*", + "guzzlehttp/guzzle": "^5.3.3|^6.2.1|^7.0", + "guzzlehttp/promises": "^1.4.0", + "guzzlehttp/psr7": "^1.7.0", + "mtdowling/jmespath.php": "^2.6", + "php": ">=5.5" + }, + "require-dev": { + "andrewsville/php-token-reflection": "^1.4", + "aws/aws-php-sns-message-validator": "~1.0", + "behat/behat": "~3.0", + "doctrine/cache": "~1.4", + "ext-dom": "*", + "ext-openssl": "*", + "ext-pcntl": "*", + "ext-sockets": "*", + "nette/neon": "^2.3", + "paragonie/random_compat": ">= 2", + "phpunit/phpunit": "^4.8.35|^5.4.3", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0", + "sebastian/comparator": "^1.2.3" + }, + "suggest": { + "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", + "doctrine/cache": "To use the DoctrineCacheAdapter", + "ext-curl": "To send requests using cURL", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "ext-sockets": "To use client-side monitoring" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Aws\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "http://aws.amazon.com/sdkforphp", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ], + "support": { + "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "issues": "https://github.com/aws/aws-sdk-php/issues", + "source": "https://github.com/aws/aws-sdk-php/tree/3.190.3" + }, + "time": "2021-08-16T18:13:42+00:00" + }, + { + "name": "composer/package-versions-deprecated", + "version": "1.11.99.2", + "source": { + "type": "git", + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/c6522afe5540d5fc46675043d3ed5a45a740b27c", + "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" + }, + "require-dev": { + "composer/composer": "^1.9.3 || ^2.0@dev", + "ext-zip": "^1.13", + "phpunit/phpunit": "^6.5 || ^7" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "support": { + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2021-05-24T07:46:03+00:00" + }, + { + "name": "doctrine/annotations", + "version": "1.13.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", + "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" + }, + "require-dev": { + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^6.0 || ^8.1", + "phpstan/phpstan": "^0.12.20", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", + "symfony/cache": "^4.4 || ^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "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": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.13.2" + }, + "time": "2021-08-05T19:00:23+00:00" + }, + { + "name": "doctrine/cache", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/331b4d5dbaeab3827976273e9356b3b453c300ce", + "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce", + "shasum": "" + }, + "require": { + "php": "~7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "cache/integration-tests": "dev-master", + "doctrine/coding-standard": "^8.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "predis/predis": "~1.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", + "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "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 Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", + "keywords": [ + "abstraction", + "apcu", + "cache", + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" + ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/2.1.1" + }, + "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%2Fcache", + "type": "tidelift" + } + ], + "time": "2021-07-17T14:49:29+00:00" + }, + { + "name": "doctrine/collections", + "version": "1.6.8", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af", + "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af", + "shasum": "" + }, + "require": { + "php": "^7.1.3 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", + "vimeo/psalm": "^4.2.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + } + }, + "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 Collections library that adds additional functionality on top of PHP arrays.", + "homepage": "https://www.doctrine-project.org/projects/collections.html", + "keywords": [ + "array", + "collections", + "iterators", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/collections/issues", + "source": "https://github.com/doctrine/collections/tree/1.6.8" + }, + "time": "2021-08-10T18:51:53+00:00" + }, + { + "name": "doctrine/common", + "version": "3.1.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/a036d90c303f3163b5be8b8fde9b6755b2be4a3a", + "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a", + "shasum": "" + }, + "require": { + "doctrine/persistence": "^2.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0 || ^8.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "^4.0.5", + "vimeo/psalm": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "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" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", + "homepage": "https://www.doctrine-project.org/projects/common.html", + "keywords": [ + "common", + "doctrine", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/common/issues", + "source": "https://github.com/doctrine/common/tree/3.1.2" + }, + "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%2Fcommon", + "type": "tidelift" + } + ], + "time": "2021-02-10T20:18:51+00:00" + }, + { + "name": "doctrine/dbal", + "version": "2.13.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4", + "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.0|^2.0", + "doctrine/deprecations": "^0.5.3", + "doctrine/event-manager": "^1.0", + "ext-pdo": "*", + "php": "^7.1 || ^8" + }, + "require-dev": { + "doctrine/coding-standard": "9.0.0", + "jetbrains/phpstorm-stubs": "2020.2", + "phpstan/phpstan": "0.12.81", + "phpunit/phpunit": "^7.5.20|^8.5|9.5.5", + "squizlabs/php_codesniffer": "3.6.0", + "symfony/cache": "^4.4", + "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", + "vimeo/psalm": "4.6.4" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + } + }, + "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" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlanywhere", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/2.13.2" + }, + "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%2Fdbal", + "type": "tidelift" + } + ], + "time": "2021-06-18T21:48:39+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "v0.5.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", + "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0|^7.0|^8.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" + }, + "time": "2021-03-21T12:59:47+00:00" + }, + { + "name": "doctrine/doctrine-bundle", + "version": "2.4.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineBundle.git", + "reference": "4202ce675d29e70a8b9ee763bec021b6f44caccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4202ce675d29e70a8b9ee763bec021b6f44caccb", + "reference": "4202ce675d29e70a8b9ee763bec021b6f44caccb", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/dbal": "^2.9.0|^3.0", + "doctrine/persistence": "^1.3.3|^2.0", + "doctrine/sql-formatter": "^1.0.1", + "php": "^7.1 || ^8.0", + "symfony/cache": "^4.3.3|^5.0|^6.0", + "symfony/config": "^4.4.3|^5.0|^6.0", + "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/dependency-injection": "^4.3.3|^5.0|^6.0", + "symfony/deprecation-contracts": "^2.1", + "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0", + "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/service-contracts": "^1.1.1|^2.0" + }, + "conflict": { + "doctrine/orm": "<2.9", + "twig/twig": "<1.34|>=2.0,<2.4" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "doctrine/orm": "^2.9", + "friendsofphp/proxy-manager-lts": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3", + "psalm/plugin-phpunit": "^0.15.1", + "psalm/plugin-symfony": "^2.3.0", + "symfony/phpunit-bridge": "^5.2|^6.0", + "symfony/property-info": "^4.3.3|^5.0|^6.0", + "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", + "symfony/security-bundle": "^4.4|^5.0|^6.0", + "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0", + "twig/twig": "^1.34|^2.12|^3.0", + "vimeo/psalm": "^4.7" + }, + "suggest": { + "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", + "ext-pdo": "*", + "symfony/web-profiler-bundle": "To use the data collector." + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\DoctrineBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org/" + } + ], + "description": "Symfony DoctrineBundle", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "orm", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/DoctrineBundle/issues", + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.4.2" + }, + "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%2Fdoctrine-bundle", + "type": "tidelift" + } + ], + "time": "2021-06-05T13:40:39+00:00" + }, + { + "name": "doctrine/doctrine-migrations-bundle", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", + "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/91f0a5e2356029575f3038432cc188b12f9d5da5", + "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5", + "shasum": "" + }, + "require": { + "doctrine/doctrine-bundle": "~1.0|~2.0", + "doctrine/migrations": "^3.1", + "php": "^7.2|^8.0", + "symfony/framework-bundle": "~3.4|~4.0|~5.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "doctrine/orm": "^2.6", + "doctrine/persistence": "^1.3||^2.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\MigrationsBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "Symfony DoctrineMigrationsBundle", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "dbal", + "migrations", + "schema" + ], + "support": { + "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.1.1" + }, + "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%2Fdoctrine-migrations-bundle", + "type": "tidelift" + } + ], + "time": "2021-04-10T16:48:53+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "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" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + }, + "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%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2020-05-29T18:28:51+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^7.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-strict-rules": "^0.11", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "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.x" + }, + "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": "2020-05-29T15:13:26+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "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": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.1" + }, + "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%2Flexer", + "type": "tidelift" + } + ], + "time": "2020-05-25T17:44:05+00:00" + }, + { + "name": "doctrine/migrations", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/migrations.git", + "reference": "818e31703b4fb353c0c23caa714273fc64efa675" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/818e31703b4fb353c0c23caa714273fc64efa675", + "reference": "818e31703b4fb353c0c23caa714273fc64efa675", + "shasum": "" + }, + "require": { + "composer/package-versions-deprecated": "^1.8", + "doctrine/dbal": "^2.11", + "doctrine/deprecations": "^0.5.3", + "doctrine/event-manager": "^1.0", + "friendsofphp/proxy-manager-lts": "^1.0", + "php": "^7.2 || ^8.0", + "psr/log": "^1.1.3 || ^2 || ^3", + "symfony/console": "^3.4 || ^4.4.16 || ^5.0", + "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "doctrine/orm": "^2.6", + "doctrine/persistence": "^1.3 || ^2.0", + "doctrine/sql-formatter": "^1.0", + "ergebnis/composer-normalize": "^2.9", + "ext-pdo_sqlite": "*", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpstan/phpstan-symfony": "^0.12", + "phpunit/phpunit": "^8.5 || ^9.4", + "symfony/cache": "^3.4 || ^4.0 || ^5.0", + "symfony/process": "^3.4 || ^4.0 || ^5.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0" + }, + "suggest": { + "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", + "symfony/yaml": "Allows the use of yaml for migration configuration files." + }, + "bin": [ + "bin/doctrine-migrations" + ], + "type": "library", + "extra": { + "composer-normalize": { + "indent-size": 4, + "indent-style": "space" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Michael Simonson", + "email": "contact@mikesimonson.com" + } + ], + "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.", + "homepage": "https://www.doctrine-project.org/projects/migrations.html", + "keywords": [ + "database", + "dbal", + "migrations" + ], + "support": { + "issues": "https://github.com/doctrine/migrations/issues", + "source": "https://github.com/doctrine/migrations/tree/3.2.1" + }, + "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%2Fmigrations", + "type": "tidelift" + } + ], + "time": "2021-08-03T11:49:27+00:00" + }, + { + "name": "doctrine/orm", + "version": "2.9.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/orm.git", + "reference": "b19a13f4edfaa5806109cd899f5912a7df1547b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/orm/zipball/b19a13f4edfaa5806109cd899f5912a7df1547b5", + "reference": "b19a13f4edfaa5806109cd899f5912a7df1547b5", + "shasum": "" + }, + "require": { + "composer/package-versions-deprecated": "^1.8", + "doctrine/annotations": "^1.13", + "doctrine/cache": "^1.12.1 || ^2.1.1", + "doctrine/collections": "^1.5", + "doctrine/common": "^3.0.3", + "doctrine/dbal": "^2.13.0", + "doctrine/deprecations": "^0.5.3", + "doctrine/event-manager": "^1.1", + "doctrine/inflector": "^1.4 || ^2.0", + "doctrine/instantiator": "^1.3", + "doctrine/lexer": "^1.0", + "doctrine/persistence": "^2.2", + "ext-ctype": "*", + "ext-pdo": "*", + "php": "^7.1 ||^8.0", + "psr/cache": "^1 || ^2 || ^3", + "symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "phpbench/phpbench": "^0.16.10 || ^1.0", + "phpstan/phpstan": "0.12.94", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", + "squizlabs/php_codesniffer": "3.6.0", + "symfony/cache": "^4.4 || ^5.2", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", + "vimeo/psalm": "4.7.0" + }, + "suggest": { + "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", + "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + }, + "bin": [ + "bin/doctrine" + ], + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\ORM\\": "lib/Doctrine/ORM" + } + }, + "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": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "https://www.doctrine-project.org/projects/orm.html", + "keywords": [ + "database", + "orm" + ], + "support": { + "issues": "https://github.com/doctrine/orm/issues", + "source": "https://github.com/doctrine/orm/tree/2.9.4" + }, + "time": "2021-08-11T20:53:03+00:00" + }, + { + "name": "doctrine/persistence", + "version": "2.2.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/persistence.git", + "reference": "4ce4712e6dc84a156176a0fbbb11954a25c93103" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/4ce4712e6dc84a156176a0fbbb11954a25c93103", + "reference": "4ce4712e6dc84a156176a0fbbb11954a25c93103", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/collections": "^1.0", + "doctrine/deprecations": "^0.5.3", + "doctrine/event-manager": "^1.0", + "php": "^7.1 || ^8.0", + "psr/cache": "^1.0|^2.0|^3.0" + }, + "conflict": { + "doctrine/common": "<2.10@dev" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.11", + "doctrine/coding-standard": "^6.0 || ^9.0", + "doctrine/common": "^3.0", + "phpstan/phpstan": "0.12.84", + "phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0", + "symfony/cache": "^4.4|^5.0", + "vimeo/psalm": "4.7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common", + "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" + } + }, + "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" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", + "homepage": "https://doctrine-project.org/projects/persistence.html", + "keywords": [ + "mapper", + "object", + "odm", + "orm", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/persistence/issues", + "source": "https://github.com/doctrine/persistence/tree/2.2.2" + }, + "time": "2021-08-10T19:01:29+00:00" + }, + { + "name": "doctrine/sql-formatter", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/sql-formatter.git", + "reference": "56070bebac6e77230ed7d306ad13528e60732871" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/56070bebac6e77230ed7d306ad13528e60732871", + "reference": "56070bebac6e77230ed7d306ad13528e60732871", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4" + }, + "bin": [ + "bin/sql-formatter" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\SqlFormatter\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Dorn", + "email": "jeremy@jeremydorn.com", + "homepage": "http://jeremydorn.com/" + } + ], + "description": "a PHP SQL highlighting library", + "homepage": "https://github.com/doctrine/sql-formatter/", + "keywords": [ + "highlight", + "sql" + ], + "support": { + "issues": "https://github.com/doctrine/sql-formatter/issues", + "source": "https://github.com/doctrine/sql-formatter/tree/1.1.x" + }, + "time": "2020-07-30T16:57:33+00:00" + }, + { + "name": "easycorp/easyadmin-bundle", + "version": "v3.5.6", + "source": { + "type": "git", + "url": "https://github.com/EasyCorp/EasyAdminBundle.git", + "reference": "263cf54119497f5ea32f02af1dba2e4999a002ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/EasyCorp/EasyAdminBundle/zipball/263cf54119497f5ea32f02af1dba2e4999a002ae", + "reference": "263cf54119497f5ea32f02af1dba2e4999a002ae", + "shasum": "" + }, + "require": { + "doctrine/common": "^2.13 || ^3.0", + "doctrine/dbal": "^2.10", + "doctrine/doctrine-bundle": "^1.12|^2.0", + "doctrine/orm": "^2.6,>=2.6.3", + "doctrine/persistence": "^1.3.3 || ^2.0", + "ext-json": "*", + "nikic/php-parser": "^4.3", + "php": ">=7.2.5", + "symfony/asset": "^4.4|^5.0", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/deprecation-contracts": "^2.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/form": "^4.4|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/polyfill-php73": "^1.13", + "symfony/property-access": "^4.4|^5.0", + "symfony/security-bundle": "^4.4|^5.0", + "symfony/string": "^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/uid": "^5.1" + }, + "conflict": { + "doctrine/dbal": "<2.10" + }, + "require-dev": { + "dama/doctrine-test-bundle": "^6.4", + "doctrine/doctrine-fixtures-bundle": "^3.4", + "psr/log": "~1.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/phpunit-bridge": "^4.4|^5.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "EasyCorp\\Bundle\\EasyAdminBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Project Contributors", + "homepage": "https://github.com/EasyCorp/EasyAdminBundle/graphs/contributors" + } + ], + "description": "Admin generator for Symfony applications", + "homepage": "https://github.com/EasyCorp/EasyAdminBundle", + "keywords": [ + "admin", + "backend", + "generator" + ], + "support": { + "issues": "https://github.com/EasyCorp/EasyAdminBundle/issues", + "source": "https://github.com/EasyCorp/EasyAdminBundle/tree/v3.5.6" + }, + "funding": [ + { + "url": "https://github.com/javiereguiluz", + "type": "github" + } + ], + "time": "2021-08-11T18:47:50+00:00" + }, + { + "name": "egulias/email-validator", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c81f18a3efb941d8c4d2e025f6183b5c6d697307", + "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^1.2", + "php": ">=7.2", + "symfony/polyfill-intl-idn": "^1.15" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^8.5.8|^9.3.3", + "vimeo/psalm": "^4" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2021-04-01T18:37:14+00:00" + }, + { + "name": "friendsofphp/proxy-manager-lts", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", + "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/006aa5d32f887a4db4353b13b5b5095613e0611f", + "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f", + "shasum": "" + }, + "require": { + "laminas/laminas-code": "~3.4.1|^4.0", + "php": ">=7.1", + "symfony/filesystem": "^4.4.17|^5.0|^6.0" + }, + "conflict": { + "laminas/laminas-stdlib": "<3.2.1", + "zendframework/zend-stdlib": "<3.2.1" + }, + "replace": { + "ocramius/proxy-manager": "^2.1" + }, + "require-dev": { + "ext-phar": "*", + "symfony/phpunit-bridge": "^5.2|^6.0" + }, + "type": "library", + "extra": { + "thanks": { + "name": "ocramius/proxy-manager", + "url": "https://github.com/Ocramius/ProxyManager" + } + }, + "autoload": { + "psr-4": { + "ProxyManager\\": "src/ProxyManager" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.io/" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + } + ], + "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager", + "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts", + "keywords": [ + "aop", + "lazy loading", + "proxy", + "proxy pattern", + "service proxies" + ], + "support": { + "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.5" + }, + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager", + "type": "tidelift" + } + ], + "time": "2021-05-22T16:11:15+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "7008573787b430c1c1f650e3722d9bba59967628" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628", + "reference": "7008573787b430c1c1f650e3722d9bba59967628", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.4", + "guzzlehttp/psr7": "^1.7 || ^2.0", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-curl": "*", + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "psr/log": "^1.1" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.3-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://github.com/alexeyshockov", + "type": "github" + }, + { + "url": "https://github.com/gmponos", + "type": "github" + } + ], + "time": "2021-03-23T11:33:13+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.4.1" + }, + "time": "2021-03-07T09:25:29+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "dc960a912984efb74d0a90222870c72c87f10c91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", + "reference": "dc960a912984efb74d0a90222870c72c87f10c91", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.8.2" + }, + "time": "2021-04-26T09:17:50+00:00" + }, + { + "name": "ifsnop/mysqldump-php", + "version": "v2.9", + "source": { + "type": "git", + "url": "https://github.com/ifsnop/mysqldump-php.git", + "reference": "fc9c119fe5d70af9a685cad6a8ac612fd7589e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ifsnop/mysqldump-php/zipball/fc9c119fe5d70af9a685cad6a8ac612fd7589e25", + "reference": "fc9c119fe5d70af9a685cad6a8ac612fd7589e25", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.8.36", + "squizlabs/php_codesniffer": "1.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ifsnop\\": "src/Ifsnop/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-or-later" + ], + "authors": [ + { + "name": "Diego Torres", + "homepage": "https://github.com/ifsnop", + "role": "Developer" + } + ], + "description": "PHP version of mysqldump cli that comes with MySQL", + "homepage": "https://github.com/ifsnop/mysqldump-php", + "keywords": [ + "PHP7", + "database", + "hhvm", + "mariadb", + "mysql", + "mysql-backup", + "mysqldump", + "pdo", + "php", + "php5", + "sql" + ], + "support": { + "issues": "https://github.com/ifsnop/mysqldump-php/issues", + "source": "https://github.com/ifsnop/mysqldump-php/tree/master" + }, + "time": "2020-04-03T14:40:40+00:00" + }, + { + "name": "jms/metadata", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/metadata.git", + "reference": "b5c52549807b2d855b3d7e36ec164c00eb547338" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/b5c52549807b2d855b3d7e36ec164c00eb547338", + "reference": "b5c52549807b2d855b3d7e36ec164c00eb547338", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "require-dev": { + "doctrine/cache": "^1.0", + "doctrine/coding-standard": "^8.0", + "mikey179/vfsstream": "^1.6.7", + "phpunit/phpunit": "^8.5|^9.0", + "psr/container": "^1.0", + "symfony/cache": "^3.1|^4.0|^5.0", + "symfony/dependency-injection": "^3.1|^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Metadata\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "Class/method/property metadata management in PHP", + "keywords": [ + "annotations", + "metadata", + "xml", + "yaml" + ], + "support": { + "issues": "https://github.com/schmittjoh/metadata/issues", + "source": "https://github.com/schmittjoh/metadata/tree/2.5.0" + }, + "time": "2021-03-07T19:20:09+00:00" + }, + { + "name": "knplabs/gaufrette", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/Gaufrette.git", + "reference": "786247eba04d4693e88a80ca9fdabb634675dcac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/Gaufrette/zipball/786247eba04d4693e88a80ca9fdabb634675dcac", + "reference": "786247eba04d4693e88a80ca9fdabb634675dcac", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "conflict": { + "microsoft/windowsazure": "<0.4.3" + }, + "require-dev": { + "akeneo/phpspec-skip-example-extension": "^4.0", + "amazonwebservices/aws-sdk-for-php": "1.5.*", + "aws/aws-sdk-php": "^2.4.12||~3", + "doctrine/dbal": ">=2.3", + "dropbox-php/dropbox-php": "*", + "google/apiclient": "~1.1.3", + "league/flysystem": "~1.0", + "microsoft/azure-storage-blob": "^1.0", + "mikey179/vfsstream": "~1.2.0", + "mongodb/mongodb": "^1.1", + "pedrotroller/php-cs-custom-fixer": "^2.17", + "phpseclib/phpseclib": "^2.0", + "phpspec/phpspec": "~5.1", + "phpunit/phpunit": "~7.5", + "rackspace/php-opencloud": "^1.9.2" + }, + "suggest": { + "ext-curl": "*", + "ext-fileinfo": "This extension is used to automatically detect the content-type of a file in the AwsS3, OpenCloud, AzureBlogStorage and GoogleCloudStorage adapters", + "ext-mbstring": "*", + "gaufrette/aws-s3-adapter": "to use AwsS3 adapter (supports SDK v2 and v3)", + "gaufrette/azure-blob-storage-adapter": "to use AzureBlobStorage adapter", + "gaufrette/doctrine-dbal-adapter": "to use DBAL adapter", + "gaufrette/flysystem-adapter": "to use Flysystem adapter", + "gaufrette/ftp-adapter": "to use Ftp adapter", + "gaufrette/gridfs-adapter": "to use GridFS adapter", + "gaufrette/in-memory-adapter": "to use InMemory adapter", + "gaufrette/local-adapter": "to use Local adapter", + "gaufrette/opencloud-adapter": "to use Opencloud adapter", + "gaufrette/phpseclib-sftp-adapter": "to use PhpseclibSftp adapter", + "gaufrette/zip-adapter": "to use Zip adapter", + "google/apiclient": "to use GoogleCloudStorage adapter", + "knplabs/knp-gaufrette-bundle": "to use with Symfony2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.10.x-dev" + } + }, + "autoload": { + "psr-0": { + "Gaufrette": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KnpLabs Team", + "homepage": "http://knplabs.com" + }, + { + "name": "The contributors", + "homepage": "http://github.com/knplabs/Gaufrette/contributors" + } + ], + "description": "PHP library that provides a filesystem abstraction layer", + "homepage": "http://knplabs.com", + "keywords": [ + "abstraction", + "file", + "filesystem", + "media" + ], + "support": { + "issues": "https://github.com/KnpLabs/Gaufrette/issues", + "source": "https://github.com/KnpLabs/Gaufrette/tree/master" + }, + "time": "2019-12-26T15:15:38+00:00" + }, + { + "name": "knplabs/knp-gaufrette-bundle", + "version": "v0.7.1", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/KnpGaufretteBundle.git", + "reference": "367c85c09da8633bcff0e65def700f271c0377f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/KnpGaufretteBundle/zipball/367c85c09da8633bcff0e65def700f271c0377f9", + "reference": "367c85c09da8633bcff0e65def700f271c0377f9", + "shasum": "" + }, + "require": { + "knplabs/gaufrette": "^0.8.2|^0.9", + "php": ">=7.1", + "symfony/config": "^3.4|^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.2|^5.0", + "symfony/framework-bundle": "^3.4|^4.2|^5.0" + }, + "require-dev": { + "phpunit/phpunit": "~7.5", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "0.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Knp\\Bundle\\GaufretteBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Antoine Hérault", + "email": "antoine.herault@gmail.com" + }, + { + "name": "The contributors", + "homepage": "https://github.com/knplabs/KnpGaufretteBundle/contributors" + } + ], + "description": "Allows to easily use the Gaufrette library in a Symfony project", + "homepage": "http://knplabs.com", + "keywords": [ + "abstraction", + "file", + "filesystem", + "media" + ], + "support": { + "issues": "https://github.com/KnpLabs/KnpGaufretteBundle/issues", + "source": "https://github.com/KnpLabs/KnpGaufretteBundle/tree/v0.7.1" + }, + "time": "2019-12-26T15:32:33+00:00" + }, + { + "name": "laminas/laminas-code", + "version": "4.4.2", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-code.git", + "reference": "54251ab2b16c41c6980387839496b235f5f6e10b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/54251ab2b16c41c6980387839496b235f5f6e10b", + "reference": "54251ab2b16c41c6980387839496b235f5f6e10b", + "shasum": "" + }, + "require": { + "php": "^7.4 || ~8.0.0" + }, + "conflict": { + "phpspec/prophecy": "<1.9.0" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "ext-phar": "*", + "laminas/laminas-coding-standard": "^2.1.4", + "laminas/laminas-stdlib": "^3.3.0", + "phpunit/phpunit": "^9.4.2", + "psalm/plugin-phpunit": "^0.14.0", + "vimeo/psalm": "^4.3.1" + }, + "suggest": { + "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", + "laminas/laminas-stdlib": "Laminas\\Stdlib component", + "laminas/laminas-zendframework-bridge": "A bridge with Zend Framework" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Code\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", + "homepage": "https://laminas.dev", + "keywords": [ + "code", + "laminas", + "laminasframework" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-code/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-code/issues", + "rss": "https://github.com/laminas/laminas-code/releases.atom", + "source": "https://github.com/laminas/laminas-code" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-07-09T11:58:40+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.3.2", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "71312564759a7db5b789296369c1a264efc43aad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/71312564759a7db5b789296369c1a264efc43aad", + "reference": "71312564759a7db5b789296369c1a264efc43aad", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7", + "graylog2/gelf-php": "^1.4.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpspec/prophecy": "^1.6.1", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", + "ruflin/elastica": ">=0.90 <7.0.1", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.3.2" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2021-07-23T07:42:52+00:00" + }, + { + "name": "mtdowling/jmespath.php", + "version": "2.6.1", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^7.5.15" + }, + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "JmesPath\\": "src/" + }, + "files": [ + "src/JmesPath.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" + }, + "time": "2021-06-14T00:11:39+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.12.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "6608f01670c3cc5079e18c1dab1104e002579143" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", + "reference": "6608f01670c3cc5079e18c1dab1104e002579143", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" + }, + "time": "2021-07-21T10:44:31+00:00" + }, + { + "name": "nzo/url-encryptor-bundle", + "version": "v6.0.1", + "source": { + "type": "git", + "url": "https://github.com/nayzo/NzoUrlEncryptorBundle.git", + "reference": "f9df0642dbb42277aa0c2885243f720e375ec141" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nayzo/NzoUrlEncryptorBundle/zipball/f9df0642dbb42277aa0c2885243f720e375ec141", + "reference": "f9df0642dbb42277aa0c2885243f720e375ec141", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.7", + "ext-openssl": "*", + "php": ">=7.1.3", + "symfony/framework-bundle": "^4.4|^5.0", + "twig/twig": "^2.10|^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8 || ^5.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Nzo\\UrlEncryptorBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ala Eddine Khefifi", + "email": "alakhefifi@gmail.com" + } + ], + "description": "The NzoUrlEncryptorBundle is a Symfony Bundle used to Encrypt and Decrypt data and variables in the Web application or passed through URL", + "keywords": [ + "aes", + "data", + "decrypt", + "decryption", + "encrypt", + "encryption", + "id", + "link", + "security", + "url", + "variable" + ], + "support": { + "issues": "https://github.com/nayzo/NzoUrlEncryptorBundle/issues", + "source": "https://github.com/nayzo/NzoUrlEncryptorBundle/tree/v6.0.1" + }, + "time": "2021-02-20T15:19:54+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + }, + "time": "2020-09-03T19:13:55+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + }, + "time": "2020-09-17T18:55:26+00:00" + }, + { + "name": "psr/cache", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/2.0.0" + }, + "time": "2021-02-03T23:23:37+00:00" + }, + { + "name": "psr/container", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "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/1.1.1" + }, + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client/tree/master" + }, + "time": "2020-06-29T06:28:15+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/link", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/link.git", + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/link/zipball/846c25f58a1f02b93a00f2404e3626b6bf9b7807", + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Link\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "support": { + "source": "https://github.com/php-fig/link/tree/1.1.1" + }, + "time": "2021-03-11T22:59:13+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "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/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "sensio/framework-extra-bundle", + "version": "v6.1.5", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "62c5909f49cf74dccdf50a294511cc24be2f969c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/62c5909f49cf74dccdf50a294511cc24be2f969c", + "reference": "62c5909f49cf74dccdf50a294511cc24be2f969c", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0" + }, + "conflict": { + "doctrine/doctrine-cache-bundle": "<1.3.1", + "doctrine/persistence": "<1.3" + }, + "require-dev": { + "doctrine/dbal": "^2.10|^3.0", + "doctrine/doctrine-bundle": "^1.11|^2.0", + "doctrine/orm": "^2.5", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/doctrine-bridge": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/monolog-bridge": "^4.0|^5.0", + "symfony/monolog-bundle": "^3.2", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9", + "symfony/security-bundle": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0", + "twig/twig": "^1.34|^2.4|^3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "6.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/" + }, + "exclude-from-classmap": [ + "/tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "This bundle provides a way to configure your controllers with annotations", + "keywords": [ + "annotations", + "controllers" + ], + "support": { + "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", + "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.1.5" + }, + "time": "2021-05-31T10:40:46+00:00" + }, + { + "name": "symfony/asset", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset.git", + "reference": "9bd222a8fdd13ecca91384e403247103198f80a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset/zipball/9bd222a8fdd13ecca91384e403247103198f80a1", + "reference": "9bd222a8fdd13ecca91384e403247103198f80a1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/http-foundation": "<5.3" + }, + "require-dev": { + "symfony/http-client": "^4.4|^5.0", + "symfony/http-foundation": "^5.3", + "symfony/http-kernel": "^4.4|^5.0" + }, + "suggest": { + "symfony/http-foundation": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Asset\\": "" + }, + "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": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/asset/tree/v5.3.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": "2021-07-21T12:40:44+00:00" + }, + { + "name": "symfony/cache", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "944db6004fc374fbe032d18e07cce51cc4e1e661" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/944db6004fc374fbe032d18e07cce51cc4e1e661", + "reference": "944db6004fc374fbe032d18e07cce51cc4e1e661", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "conflict": { + "doctrine/dbal": "<2.10", + "symfony/dependency-injection": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/var-dumper": "<4.4" + }, + "provide": { + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0", + "symfony/cache-implementation": "1.0|2.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.10|^3.0", + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "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": "Provides an extended PSR-6, PSR-16 (and tags) implementation", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "support": { + "source": "https://github.com/symfony/cache/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "c0446463729b89dd4fa62e9aeecc80287323615d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/c0446463729b89dd4fa62e9aeecc80287323615d", + "reference": "c0446463729b89dd4fa62e9aeecc80287323615d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" + }, + "suggest": { + "symfony/cache-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Cache\\": "" + } + }, + "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 caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" + }, + { + "name": "symfony/config", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "4268f3059c904c61636275182707f81645517a37" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/4268f3059c904c61636275182707f81645517a37", + "reference": "4268f3059c904c61636275182707f81645517a37", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/filesystem": "^4.4|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" + }, + "conflict": { + "symfony/finder": "<4.4" + }, + "require-dev": { + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "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": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/config/tree/v5.3.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": "2021-07-21T12:40:44+00:00" + }, + { + "name": "symfony/console", + "version": "v5.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/51b71afd6d2dc8f5063199357b9880cea8d8bfe2", + "reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "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": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.3.6" + }, + "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": "2021-07-27T19:10:22+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "5a825e4b386066167a8b55487091cb62beec74c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5a825e4b386066167a8b55487091cb62beec74c2", + "reference": "5a825e4b386066167a8b55487091cb62beec74c2", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1.1", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "ext-psr": "<1.1|>=2", + "symfony/config": "<5.3", + "symfony/finder": "<4.4", + "symfony/proxy-manager-bridge": "<4.4", + "symfony/yaml": "<4.4" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/config": "^5.3", + "symfony/expression-language": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "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": "Allows you to standardize and centralize the way objects are constructed in your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dependency-injection/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "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/v2.4.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": "2021-03-23T23:28:01+00:00" + }, + { + "name": "symfony/doctrine-bridge", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-bridge.git", + "reference": "70bffec510b08e4830d851ad485a996b130fcd7c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/70bffec510b08e4830d851ad485a996b130fcd7c", + "reference": "70bffec510b08e4830d851ad485a996b130fcd7c", + "shasum": "" + }, + "require": { + "doctrine/event-manager": "~1.0", + "doctrine/persistence": "^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "doctrine/dbal": "<2.10", + "phpunit/phpunit": "<5.4.3", + "symfony/dependency-injection": "<4.4", + "symfony/form": "<5.1", + "symfony/http-kernel": "<5", + "symfony/messenger": "<4.4", + "symfony/property-info": "<5", + "symfony/security-bundle": "<5", + "symfony/security-core": "<5.3", + "symfony/validator": "<5.2" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.8", + "doctrine/annotations": "^1.10.4", + "doctrine/collections": "~1.0", + "doctrine/data-fixtures": "^1.1", + "doctrine/dbal": "^2.10|^3.0", + "doctrine/orm": "^2.7.3", + "symfony/cache": "^5.1", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/doctrine-messenger": "^5.1", + "symfony/expression-language": "^4.4|^5.0", + "symfony/form": "^5.1.3", + "symfony/http-kernel": "^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/property-access": "^4.4|^5.0", + "symfony/property-info": "^5.0", + "symfony/proxy-manager-bridge": "^4.4|^5.0", + "symfony/security-core": "^5.3", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/uid": "^5.1", + "symfony/validator": "^5.2", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "doctrine/data-fixtures": "", + "doctrine/dbal": "", + "doctrine/orm": "", + "symfony/form": "", + "symfony/property-info": "", + "symfony/validator": "" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Doctrine\\": "" + }, + "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 integration for Doctrine with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/doctrine-bridge/tree/v5.3.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": "2021-07-21T13:18:10+00:00" + }, + { + "name": "symfony/dotenv", + "version": "v5.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "b6d44663cff8c9880ee64d232870293a11e14cd6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/b6d44663cff8c9880ee64d232870293a11e14cd6", + "reference": "b6d44663cff8c9880ee64d232870293a11e14cd6", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1" + }, + "require-dev": { + "symfony/process": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Dotenv\\": "" + }, + "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": "Registers environment variables from a .env file", + "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "source": "https://github.com/symfony/dotenv/tree/v5.3.6" + }, + "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": "2021-07-29T06:20:01+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "281f6c4660bcf5844bb0346fe3a4664722fe4c73" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/281f6c4660bcf5844bb0346fe3a4664722fe4c73", + "reference": "281f6c4660bcf5844bb0346fe3a4664722fe4c73", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^4.4|^5.0" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.1", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "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 manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "f2fd2208157553874560f3645d4594303058c4bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f2fd2208157553874560f3645d4594303058c4bd", + "reference": "f2fd2208157553874560f3645d4594303058c4bd", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^2", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<4.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^4.4|^5.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "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 that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11", + "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "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 dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" + }, + { + "name": "symfony/expression-language", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/expression-language.git", + "reference": "d4367d36217dd395b10f61649a6bf2c1367140d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/d4367d36217dd395b10f61649a6bf2c1367140d8", + "reference": "d4367d36217dd395b10f61649a6bf2c1367140d8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/cache": "^4.4|^5.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ExpressionLanguage\\": "" + }, + "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 an engine that can compile and evaluate expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/expression-language/tree/v5.3.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": "2021-07-21T12:38:00+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/343f4fe324383ca46792cae728a3b6e2f708fb32", + "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "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 basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.3.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": "2021-07-21T12:40:44+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "17f50e06018baec41551a71a15731287dbaab186" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/17f50e06018baec41551a71a15731287dbaab186", + "reference": "17f50e06018baec41551a71a15731287dbaab186", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "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": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v5.3.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": "2021-07-23T15:54:19+00:00" + }, + { + "name": "symfony/flex", + "version": "v1.13.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/flex.git", + "reference": "d81196c3f3b544e32997b67e955fb8291fdfe770" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/flex/zipball/d81196c3f3b544e32997b67e955fb8291fdfe770", + "reference": "d81196c3f3b544e32997b67e955fb8291fdfe770", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=7.1" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "symfony/dotenv": "^4.4|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/phpunit-bridge": "^4.4|^5.0", + "symfony/process": "^3.4|^4.4|^5.0" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-main": "1.13-dev" + }, + "class": "Symfony\\Flex\\Flex" + }, + "autoload": { + "psr-4": { + "Symfony\\Flex\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "Composer plugin for Symfony", + "support": { + "issues": "https://github.com/symfony/flex/issues", + "source": "https://github.com/symfony/flex/tree/v1.13.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": "2021-08-03T08:14:48+00:00" + }, + { + "name": "symfony/form", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/form.git", + "reference": "7d3ece4f98a1d4f7fea4331982ff210dd08bb2f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/form/zipball/7d3ece4f98a1d4f7fea4331982ff210dd08bb2f9", + "reference": "7d3ece4f98a1d4f7fea4331982ff210dd08bb2f9", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/options-resolver": "^5.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/property-access": "^5.0.8", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<4.4", + "symfony/doctrine-bridge": "<4.4", + "symfony/error-handler": "<4.4.5", + "symfony/framework-bundle": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/translation": "<4.4", + "symfony/translation-contracts": "<1.1.7", + "symfony/twig-bridge": "<4.4" + }, + "require-dev": { + "doctrine/collections": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/uid": "^5.1", + "symfony/validator": "^4.4.17|^5.1.9", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "symfony/security-csrf": "For protecting forms against CSRF attacks.", + "symfony/twig-bridge": "For templating with Twig.", + "symfony/validator": "For form validation." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Form\\": "" + }, + "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": "Allows to easily create, process and reuse HTML forms", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/form/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "2c5ed14a5992a2d04dfdb238a5f9589bab0a68d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/2c5ed14a5992a2d04dfdb238a5f9589bab0a68d8", + "reference": "2c5ed14a5992a2d04dfdb238a5f9589bab0a68d8", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.2.5", + "symfony/cache": "^5.2", + "symfony/config": "^5.3", + "symfony/dependency-injection": "^5.3", + "symfony/deprecation-contracts": "^2.1", + "symfony/error-handler": "^4.4.1|^5.0.1", + "symfony/event-dispatcher": "^5.1", + "symfony/filesystem": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-foundation": "^5.3", + "symfony/http-kernel": "^5.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/routing": "^5.3" + }, + "conflict": { + "doctrine/persistence": "<1.3", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "phpunit/phpunit": "<5.4.3", + "symfony/asset": "<5.3", + "symfony/browser-kit": "<4.4", + "symfony/console": "<5.2.5", + "symfony/dom-crawler": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/form": "<5.2", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<5.2", + "symfony/messenger": "<4.4", + "symfony/mime": "<4.4", + "symfony/property-access": "<5.3", + "symfony/property-info": "<4.4", + "symfony/security-core": "<5.3", + "symfony/security-csrf": "<5.3", + "symfony/serializer": "<5.2", + "symfony/stopwatch": "<4.4", + "symfony/translation": "<5.3", + "symfony/twig-bridge": "<4.4", + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<5.2", + "symfony/web-profiler-bundle": "<4.4", + "symfony/workflow": "<5.2" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "doctrine/persistence": "^1.3|^2.0", + "paragonie/sodium_compat": "^1.8", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^5.3", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/console": "^5.2", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/dotenv": "^5.1", + "symfony/expression-language": "^4.4|^5.0", + "symfony/form": "^5.2", + "symfony/http-client": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/mailer": "^5.2", + "symfony/messenger": "^5.2", + "symfony/mime": "^4.4|^5.0", + "symfony/notifier": "^5.3", + "symfony/phpunit-bridge": "^5.3", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^4.4|^5.0", + "symfony/property-info": "^4.4|^5.0", + "symfony/rate-limiter": "^5.2", + "symfony/security-bundle": "^5.3", + "symfony/serializer": "^5.2", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/string": "^5.0", + "symfony/translation": "^5.3", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^5.2", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^5.2", + "symfony/yaml": "^4.4|^5.0", + "twig/twig": "^2.10|^3.0" + }, + "suggest": { + "ext-apcu": "For best performance of the system caches", + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + }, + "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 a tight integration between Symfony components and the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/framework-bundle/tree/v5.3.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": "2021-07-25T09:39:16+00:00" + }, + { + "name": "symfony/http-client", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "67c177d4df8601d9a71f9d615c52171c98d22d74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/67c177d4df8601d9a71f9d615c52171c98d22d74", + "reference": "67c177d4df8601d9a71f9d615c52171c98d22d74", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.1", + "symfony/http-client-contracts": "^2.4", + "symfony/polyfill-php73": "^1.11", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.0|^2" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "2.4" + }, + "require-dev": { + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4.13|^5.1.5", + "symfony/process": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "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": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-client/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e82f6084d7cae521a75ef2cb5c9457bbda785f4", + "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/http-client-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + } + }, + "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 HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.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": "2021-04-11T23:07:08+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v5.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "a8388f7b7054a7401997008ce9cd8c6b0ab7ac75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a8388f7b7054a7401997008ce9cd8c6b0ab7ac75", + "reference": "a8388f7b7054a7401997008ce9cd8c6b0ab7ac75", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/cache": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "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": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v5.3.6" + }, + "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": "2021-07-27T17:08:17+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v5.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "60030f209018356b3b553b9dbd84ad2071c1b7e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/60030f209018356b3b553b9dbd84ad2071c1b7e0", + "reference": "60030f209018356b3b553b9dbd84ad2071c1b7e0", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2", + "symfony/deprecation-contracts": "^2.1", + "symfony/error-handler": "^4.4|^5.0", + "symfony/event-dispatcher": "^5.0", + "symfony/http-client-contracts": "^1.1|^2", + "symfony/http-foundation": "^5.3", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/browser-kit": "<4.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/config": "^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dependency-injection": "^5.3", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/routing": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "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 a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v5.3.6" + }, + "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": "2021-07-29T07:06:27+00:00" + }, + { + "name": "symfony/intl", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/intl.git", + "reference": "f1d1420771b3a94fcf2fda06728c61eba5de4b90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/intl/zipball/f1d1420771b3a94fcf2fda06728c61eba5de4b90", + "reference": "f1d1420771b3a94fcf2fda06728c61eba5de4b90", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/filesystem": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Intl\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Eriksen Costa", + "email": "eriksen.costa@infranology.com.br" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library", + "homepage": "https://symfony.com", + "keywords": [ + "i18n", + "icu", + "internationalization", + "intl", + "l10n", + "localization" + ], + "support": { + "source": "https://github.com/symfony/intl/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/mailer", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "c1f83da2296741110be35dd779f2a9e412cec466" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/c1f83da2296741110be35dd779f2a9e412cec466", + "reference": "c1f83da2296741110be35dd779f2a9e412cec466", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3", + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/mime": "^5.2.6", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/http-kernel": "<4.4" + }, + "require-dev": { + "symfony/http-client-contracts": "^1.1|^2", + "symfony/messenger": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "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": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/mime", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "633e4e8afe9e529e5599d71238849a4218dd497b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/633e4e8afe9e529e5599d71238849a4218dd497b", + "reference": "633e4e8afe9e529e5599d71238849a4218dd497b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/property-access": "^4.4|^5.1", + "symfony/property-info": "^4.4|^5.1", + "symfony/serializer": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "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": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v5.3.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": "2021-07-21T12:40:44+00:00" + }, + { + "name": "symfony/monolog-bridge", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "a0d881165b902a04f41e873426aa52a068064ac4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/a0d881165b902a04f41e873426aa52a068064ac4", + "reference": "a0d881165b902a04f41e873426aa52a068064ac4", + "shasum": "" + }, + "require": { + "monolog/monolog": "^1.25.1|^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/http-kernel": "^5.3", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/console": "<4.4", + "symfony/http-foundation": "<5.3" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/security-core": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", + "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", + "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Monolog\\": "" + }, + "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 integration for Monolog with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/monolog-bridge/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/monolog-bundle", + "version": "v3.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/4054b2e940a25195ae15f0a49ab0c51718922eb4", + "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4", + "shasum": "" + }, + "require": { + "monolog/monolog": "~1.22 || ~2.0", + "php": ">=7.1.3", + "symfony/config": "~4.4 || ^5.0", + "symfony/dependency-injection": "^4.4 || ^5.0", + "symfony/http-kernel": "~4.4 || ^5.0", + "symfony/monolog-bridge": "~4.4 || ^5.0" + }, + "require-dev": { + "symfony/console": "~4.4 || ^5.0", + "symfony/phpunit-bridge": "^5.1", + "symfony/yaml": "~4.4 || ^5.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MonologBundle\\": "" + }, + "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": "Symfony MonologBundle", + "homepage": "https://symfony.com", + "keywords": [ + "log", + "logging" + ], + "support": { + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.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": "2021-03-31T07:20:47+00:00" + }, + { + "name": "symfony/notifier", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/notifier.git", + "reference": "71d3d7f35a7d5706a200a6b9516c7c2922ee4dd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/notifier/zipball/71d3d7f35a7d5706a200a6b9516c7c2922ee4dd7", + "reference": "71d3d7f35a7d5706a200a6b9516c7c2922ee4dd7", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/discord-notifier": "<5.3", + "symfony/esendex-notifier": "<5.3", + "symfony/firebase-notifier": "<5.3", + "symfony/free-mobile-notifier": "<5.3", + "symfony/google-chat-notifier": "<5.3", + "symfony/http-kernel": "<4.4", + "symfony/infobip-notifier": "<5.3", + "symfony/linked-in-notifier": "<5.3", + "symfony/mattermost-notifier": "<5.3", + "symfony/mobyt-notifier": "<5.3", + "symfony/nexmo-notifier": "<5.3", + "symfony/ovh-cloud-notifier": "<5.3", + "symfony/rocket-chat-notifier": "<5.3", + "symfony/sendinblue-notifier": "<5.3", + "symfony/sinch-notifier": "<5.3", + "symfony/slack-notifier": "<5.3", + "symfony/smsapi-notifier": "<5.3", + "symfony/telegram-notifier": "<5.3", + "symfony/twilio-notifier": "<5.3", + "symfony/zulip-notifier": "<5.3" + }, + "require-dev": { + "symfony/event-dispatcher-contracts": "^2", + "symfony/http-client-contracts": "^2", + "symfony/messenger": "^4.4 || ^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Notifier\\": "" + }, + "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": "Sends notifications via one or more channels (email, SMS, ...)", + "homepage": "https://symfony.com", + "keywords": [ + "notification", + "notifier" + ], + "support": { + "source": "https://github.com/symfony/notifier/tree/v5.3.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": "2021-07-19T06:02:01+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "a603e5701bd6e305cfc777a8b50bf081ef73105e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a603e5701bd6e305cfc777a8b50bf081ef73105e", + "reference": "a603e5701bd6e305cfc777a8b50bf081ef73105e", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "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 an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/password-hasher", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/password-hasher.git", + "reference": "61dd1e90fa0ebf6f4982787b1e033a9606357d7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/61dd1e90fa0ebf6f4982787b1e033a9606357d7e", + "reference": "61dd1e90fa0ebf6f4982787b1e033a9606357d7e", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/security-core": "<5.3" + }, + "require-dev": { + "symfony/console": "^5", + "symfony/security-core": "^5.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PasswordHasher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Robin Chalas", + "email": "robin.chalas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides password hashing utilities", + "homepage": "https://symfony.com", + "keywords": [ + "hashing", + "password" + ], + "support": { + "source": "https://github.com/symfony/password-hasher/tree/v5.3.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": "2021-06-30T13:49:12+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", + "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.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": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.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": "2021-05-27T12:26:48+00:00" + }, + { + "name": "symfony/polyfill-intl-icu", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "4a80a521d6176870b6445cfb469c130f9cae1dda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/4a80a521d6176870b6445cfb469c130f9cae1dda", + "reference": "4a80a521d6176870b6445cfb469c130f9cae1dda", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance and support of other locales than \"en\"" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Icu\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "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": "Symfony polyfill for intl's ICU-related data and classes", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "icu", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.23.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": "2021-05-24T10:04:56+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", + "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.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": "2021-05-27T09:27:20+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "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 for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.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": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.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": "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.23.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": "2021-05-27T12:26:48+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "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 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.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": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.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": "2021-07-28T13:41:28+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "e66119f3de95efc359483f810c4c3e6436279436" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", + "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "files": [ + "bootstrap.php" + ], + "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.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.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": "2021-05-21T13:25:03+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "9165effa2eb8a31bb3fa608df9d529920d21ddd9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9165effa2eb8a31bb3fa608df9d529920d21ddd9", + "reference": "9165effa2eb8a31bb3fa608df9d529920d21ddd9", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.23.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": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/process", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "d16634ee55b895bd85ec714dadc58e4428ecf030" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/d16634ee55b895bd85ec714dadc58e4428ecf030", + "reference": "d16634ee55b895bd85ec714dadc58e4428ecf030", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "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": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v5.3.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": "2021-07-23T15:54:19+00:00" + }, + { + "name": "symfony/property-access", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "098681253076af7070df7d9debe5f75733eea189" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/098681253076af7070df7d9debe5f75733eea189", + "reference": "098681253076af7070df7d9debe5f75733eea189", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.16", + "symfony/property-info": "^5.2" + }, + "require-dev": { + "symfony/cache": "^4.4|^5.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "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 functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" + ], + "support": { + "source": "https://github.com/symfony/property-access/tree/v5.3.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": "2021-07-21T12:40:44+00:00" + }, + { + "name": "symfony/property-info", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "0f42009150679a7a256eb6ee106401af5d974ed2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/0f42009150679a7a256eb6ee106401af5d974ed2", + "reference": "0f42009150679a7a256eb6ee106401af5d974ed2", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.16", + "symfony/string": "^5.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/cache": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "suggest": { + "phpdocumentor/reflection-docblock": "To use the PHPDoc", + "psr/cache-implementation": "To cache results", + "symfony/doctrine-bridge": "To use Doctrine metadata", + "symfony/serializer": "To use Serializer metadata" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], + "support": { + "source": "https://github.com/symfony/property-info/tree/v5.3.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": "2021-07-21T12:40:44+00:00" + }, + { + "name": "symfony/proxy-manager-bridge", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/proxy-manager-bridge.git", + "reference": "76e61f33f6a34a340bf6e02211214f466e8e1dba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/76e61f33f6a34a340bf6e02211214f466e8e1dba", + "reference": "76e61f33f6a34a340bf6e02211214f466e8e1dba", + "shasum": "" + }, + "require": { + "composer/package-versions-deprecated": "^1.8", + "friendsofphp/proxy-manager-lts": "^1.0.2", + "php": ">=7.2.5", + "symfony/dependency-injection": "^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/config": "^4.4|^5.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\ProxyManager\\": "" + }, + "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 integration for ProxyManager with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.3.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": "2021-07-21T12:38:00+00:00" + }, + { + "name": "symfony/routing", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "0a35d2f57d73c46ab6d042ced783b81d09a624c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/0a35d2f57d73c46ab6d042ced783b81d09a624c4", + "reference": "0a35d2f57d73c46ab6d042ced783b81d09a624c4", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.3", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "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": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/runtime", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/runtime.git", + "reference": "685a4a5491e25c7f2dd251d8fcca583b427ff290" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/runtime/zipball/685a4a5491e25c7f2dd251d8fcca583b427ff290", + "reference": "685a4a5491e25c7f2dd251d8fcca583b427ff290", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/dotenv": "<5.1" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "symfony/console": "^4.4|^5", + "symfony/dotenv": "^5.1", + "symfony/http-foundation": "^4.4|^5", + "symfony/http-kernel": "^4.4|^5" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin" + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Runtime\\": "", + "Symfony\\Runtime\\Symfony\\Component\\": "Internal/" + }, + "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": "Enables decoupling PHP applications from global state", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/runtime/tree/v5.3.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": "2021-06-30T13:49:12+00:00" + }, + { + "name": "symfony/security-bundle", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-bundle.git", + "reference": "7db2c7d6a1f15bdccbcb6d6807d60d0bd4a9d7ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/7db2c7d6a1f15bdccbcb6d6807d60d0bd4a9d7ae", + "reference": "7db2c7d6a1f15bdccbcb6d6807d60d0bd4a9d7ae", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^5.3", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher": "^5.1", + "symfony/http-foundation": "^5.3", + "symfony/http-kernel": "^5.3", + "symfony/password-hasher": "^5.3", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^5.3", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/security-guard": "^5.3", + "symfony/security-http": "^5.3.2" + }, + "conflict": { + "symfony/browser-kit": "<4.4", + "symfony/console": "<4.4", + "symfony/framework-bundle": "<4.4", + "symfony/ldap": "<5.1", + "symfony/twig-bundle": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "symfony/asset": "^4.4|^5.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/form": "^4.4|^5.0", + "symfony/framework-bundle": "^5.3", + "symfony/ldap": "^5.3", + "symfony/process": "^4.4|^5.0", + "symfony/rate-limiter": "^5.2", + "symfony/serializer": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bridge": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0", + "twig/twig": "^2.13|^3.0.4" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SecurityBundle\\": "" + }, + "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 a tight integration of the Security component into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-bundle/tree/v5.3.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": "2021-07-26T16:33:26+00:00" + }, + { + "name": "symfony/security-core", + "version": "v5.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-core.git", + "reference": "69b9a6a62d8914f10010646619bcd4485a71f119" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-core/zipball/69b9a6a62d8914f10010646619bcd4485a71f119", + "reference": "69b9a6a62d8914f10010646619bcd4485a71f119", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/password-hasher": "^5.3", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/event-dispatcher": "<4.4", + "symfony/http-foundation": "<5.3", + "symfony/ldap": "<4.4", + "symfony/security-guard": "<4.4", + "symfony/validator": "<5.2" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "psr/container": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^5.3", + "symfony/ldap": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^5.2" + }, + "suggest": { + "psr/container-implementation": "To instantiate the Security class", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/ldap": "For using LDAP integration", + "symfony/validator": "For using the user password constraint" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Core\\": "" + }, + "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": "Symfony Security Component - Core Library", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-core/tree/v5.3.6" + }, + "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": "2021-07-29T06:36:31+00:00" + }, + { + "name": "symfony/security-csrf", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-csrf.git", + "reference": "94b533195cf7fb21f3fae8ce349861c6401d969e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/94b533195cf7fb21f3fae8ce349861c6401d969e", + "reference": "94b533195cf7fb21f3fae8ce349861c6401d969e", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^4.4|^5.0" + }, + "conflict": { + "symfony/http-foundation": "<5.3" + }, + "require-dev": { + "symfony/http-foundation": "^5.3" + }, + "suggest": { + "symfony/http-foundation": "For using the class SessionTokenStorage." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Csrf\\": "" + }, + "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": "Symfony Security Component - CSRF Library", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-csrf/tree/v5.3.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": "2021-07-21T12:40:44+00:00" + }, + { + "name": "symfony/security-guard", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-guard.git", + "reference": "4e43b41c3809fdaea72ade100dae8c07045a2fa9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/4e43b41c3809fdaea72ade100dae8c07045a2fa9", + "reference": "4e43b41c3809fdaea72ade100dae8c07045a2fa9", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15", + "symfony/security-core": "^5.0", + "symfony/security-http": "^5.3" + }, + "require-dev": { + "psr/log": "^1|^2|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Guard\\": "" + }, + "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": "Symfony Security Component - Guard", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-guard/tree/v5.3.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": "2021-07-18T15:32:38+00:00" + }, + { + "name": "symfony/security-http", + "version": "v5.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-http.git", + "reference": "ed6647291bd0afdbc3d41997c3dc7aa2eed8ca5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-http/zipball/ed6647291bd0afdbc3d41997c3dc7aa2eed8ca5b", + "reference": "ed6647291bd0afdbc3d41997c3dc7aa2eed8ca5b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/http-foundation": "^5.3", + "symfony/http-kernel": "^5.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/property-access": "^4.4|^5.0", + "symfony/security-core": "^5.3" + }, + "conflict": { + "symfony/event-dispatcher": "<4.3", + "symfony/security-bundle": "<5.3", + "symfony/security-csrf": "<4.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/cache": "^4.4|^5.0", + "symfony/rate-limiter": "^5.2", + "symfony/routing": "^4.4|^5.0", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0" + }, + "suggest": { + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Http\\": "" + }, + "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": "Symfony Security Component - HTTP Integration", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-http/tree/v5.3.6" + }, + "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": "2021-07-27T00:57:57+00:00" + }, + { + "name": "symfony/serializer", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer.git", + "reference": "f04e368e3cb35948550c7e95cc8918cb7e761c0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer/zipball/f04e368e3cb35948550c7e95cc8918cb7e761c0c", + "reference": "f04e368e3cb35948550c7e95cc8918cb7e761c0c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4", + "symfony/property-access": "<4.4", + "symfony/property-info": "<5.3", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/form": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/property-access": "^4.4.9|^5.0.9", + "symfony/property-info": "^5.3", + "symfony/uid": "^5.1", + "symfony/validator": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0", + "symfony/var-exporter": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "psr/cache-implementation": "For using the metadata cache.", + "symfony/config": "For using the XML mapping loader.", + "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", + "symfony/property-access": "For using the ObjectNormalizer.", + "symfony/property-info": "To deserialize relations.", + "symfony/var-exporter": "For using the metadata compiler.", + "symfony/yaml": "For using the default YAML mapping loader." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Serializer\\": "" + }, + "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": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/serializer/tree/v5.3.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": "2021-07-21T13:18:10+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "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 writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.4.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": "2021-04-01T10:43:52+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "b24c6a92c6db316fee69e38c80591e080e41536c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b24c6a92c6db316fee69e38c80591e080e41536c", + "reference": "b24c6a92c6db316fee69e38c80591e080e41536c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/service-contracts": "^1.0|^2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "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 a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v5.3.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": "2021-07-10T08:58:57+00:00" + }, + { + "name": "symfony/string", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.3.3" + }, + "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": "2021-06-27T11:44:38+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "d89ad7292932c2699cbe4af98d72c5c6bbc504c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/d89ad7292932c2699cbe4af98d72c5c6bbc504c1", + "reference": "d89ad7292932c2699cbe4af98d72c5c6bbc504c1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^2.3" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" + }, + "provide": { + "symfony/translation-implementation": "2.3" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "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/v5.3.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": "2021-07-25T09:39:16+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "95c812666f3e91db75385749fe219c5e494c7f95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95", + "reference": "95c812666f3e91db75385749fe219c5e494c7f95", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "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/v2.4.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": "2021-03-23T23:28:01+00:00" + }, + { + "name": "symfony/twig-bridge", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "587c45ef49256279502b4a29146b9e87ad23426f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/587c45ef49256279502b4a29146b9e87ad23426f", + "reference": "587c45ef49256279502b4a29146b9e87ad23426f", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^1.1|^2", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<4.4", + "symfony/form": "<5.3", + "symfony/http-foundation": "<5.3", + "symfony/http-kernel": "<4.4", + "symfony/translation": "<5.2", + "symfony/workflow": "<5.2" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "egulias/email-validator": "^2.1.10|^3", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/form": "^5.3", + "symfony/http-foundation": "^5.3", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/mime": "^5.2", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/property-info": "^4.4|^5.1", + "symfony/routing": "^4.4|^5.0", + "symfony/security-acl": "^2.8|^3.0", + "symfony/security-core": "^4.4|^5.0", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/security-http": "^4.4|^5.0", + "symfony/serializer": "^5.2", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^5.2", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^5.2", + "symfony/yaml": "^4.4|^5.0", + "twig/cssinliner-extra": "^2.12|^3", + "twig/inky-extra": "^2.12|^3", + "twig/markdown-extra": "^2.12|^3" + }, + "suggest": { + "symfony/asset": "For using the AssetExtension", + "symfony/expression-language": "For using the ExpressionExtension", + "symfony/finder": "", + "symfony/form": "For using the FormExtension", + "symfony/http-kernel": "For using the HttpKernelExtension", + "symfony/routing": "For using the RoutingExtension", + "symfony/security-core": "For using the SecurityExtension", + "symfony/security-csrf": "For using the CsrfExtension", + "symfony/security-http": "For using the LogoutUrlExtension", + "symfony/stopwatch": "For using the StopwatchExtension", + "symfony/translation": "For using the TranslationExtension", + "symfony/var-dumper": "For using the DumpExtension", + "symfony/web-link": "For using the WebLinkExtension", + "symfony/yaml": "For using the YamlExtension" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Twig\\": "" + }, + "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 integration for Twig with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bridge/tree/v5.3.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": "2021-07-26T16:33:26+00:00" + }, + { + "name": "symfony/twig-bundle", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "345965b40c1847ebdbb2ab0eb98c71a98a5e167b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/345965b40c1847ebdbb2ab0eb98c71a98a5e167b", + "reference": "345965b40c1847ebdbb2ab0eb98c71a98a5e167b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/twig-bridge": "^5.3", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "symfony/dependency-injection": "<5.3", + "symfony/framework-bundle": "<5.0", + "symfony/translation": "<5.0" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "symfony/asset": "^4.4|^5.0", + "symfony/dependency-injection": "^5.3", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/form": "^4.4|^5.0", + "symfony/framework-bundle": "^5.0", + "symfony/routing": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\TwigBundle\\": "" + }, + "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 a tight integration of Twig into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bundle/tree/v5.3.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": "2021-07-21T12:40:44+00:00" + }, + { + "name": "symfony/uid", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "45853bbc72f2b91c32e707afe7f896fddb3ee8e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/45853bbc72f2b91c32e707afe7f896fddb3ee8e9", + "reference": "45853bbc72f2b91c32e707afe7f896fddb3ee8e9", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v5.3.3" + }, + "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": "2021-06-24T08:13:00+00:00" + }, + { + "name": "symfony/validator", + "version": "v5.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "4a87a29d0ebca780a90b7aaba02bc04f5678eb36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/4a87a29d0ebca780a90b7aaba02bc04f5678eb36", + "reference": "4a87a29d0ebca780a90b7aaba02bc04f5678eb36", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^1.1|^2" + }, + "conflict": { + "doctrine/lexer": "<1.0.2", + "phpunit/phpunit": "<5.4.3", + "symfony/dependency-injection": "<4.4", + "symfony/expression-language": "<5.1", + "symfony/http-kernel": "<4.4", + "symfony/intl": "<4.4", + "symfony/property-info": "<5.3", + "symfony/translation": "<4.4", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "egulias/email-validator": "^2.1.10|^3", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^5.1", + "symfony/finder": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/property-access": "^4.4|^5.0", + "symfony/property-info": "^5.3", + "symfony/translation": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "egulias/email-validator": "Strict (RFC compliant) email validation", + "psr/cache-implementation": "For using the mapping cache.", + "symfony/config": "", + "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For accessing properties within comparison constraints", + "symfony/property-info": "To automatically add NotNull and Type constraints", + "symfony/translation": "For translating validation errors.", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + }, + "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 validate values", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/validator/tree/v5.3.6" + }, + "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": "2021-07-29T06:36:31+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "3dd8ddd1e260e58ecc61bb78da3b6584b3bfcba0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3dd8ddd1e260e58ecc61bb78da3b6584b3bfcba0", + "reference": "3dd8ddd1e260e58ecc61bb78da3b6584b3bfcba0", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "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": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v5.3.6" + }, + "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": "2021-07-27T01:56:02+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "b7898a65fc91e7c41de7a88c7db9aee9c0d432f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b7898a65fc91e7c41de7a88c7db9aee9c0d432f0", + "reference": "b7898a65fc91e7c41de7a88c7db9aee9c0d432f0", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/var-dumper": "^4.4.9|^5.0.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "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": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v5.3.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": "2021-07-21T12:38:00+00:00" + }, + { + "name": "symfony/web-link", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-link.git", + "reference": "0075c9949c30a61d9b9e7483686d72d261480ef1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-link/zipball/0075c9949c30a61d9b9e7483686d72d261480ef1", + "reference": "0075c9949c30a61d9b9e7483686d72d261480ef1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/link": "^1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/http-kernel": "<5.3" + }, + "provide": { + "psr/link-implementation": "1.0" + }, + "require-dev": { + "symfony/http-kernel": "^5.3" + }, + "suggest": { + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\WebLink\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Manages links between resources", + "homepage": "https://symfony.com", + "keywords": [ + "dns-prefetch", + "http", + "http2", + "link", + "performance", + "prefetch", + "preload", + "prerender", + "psr13", + "push" + ], + "support": { + "source": "https://github.com/symfony/web-link/tree/v5.3.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": "2021-07-21T12:40:44+00:00" + }, + { + "name": "symfony/yaml", + "version": "v5.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", + "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<4.4" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "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": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.3.6" + }, + "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": "2021-07-29T06:20:01+00:00" + }, + { + "name": "twig/extra-bundle", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/twigphp/twig-extra-bundle.git", + "reference": "e12a8ee63387abb83fb7e4c897663bfb94ac22b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/e12a8ee63387abb83fb7e4c897663bfb94ac22b6", + "reference": "e12a8ee63387abb83fb7e4c897663bfb94ac22b6", + "shasum": "" + }, + "require": { + "php": "^7.1.3|^8.0", + "symfony/framework-bundle": "^4.3|^5.0", + "symfony/twig-bundle": "^4.3|^5.0", + "twig/twig": "^2.4|^3.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4.9|^5.0.9", + "twig/cache-extra": "^3.0", + "twig/cssinliner-extra": "^2.12|^3.0", + "twig/html-extra": "^2.12|^3.0", + "twig/inky-extra": "^2.12|^3.0", + "twig/intl-extra": "^2.12|^3.0", + "twig/markdown-extra": "^2.12|^3.0", + "twig/string-extra": "^2.12|^3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Twig\\Extra\\TwigExtraBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Symfony bundle for extra Twig extensions", + "homepage": "https://twig.symfony.com", + "keywords": [ + "bundle", + "extra", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.3.1" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-05-12T07:47:40+00:00" + }, + { + "name": "twig/twig", + "version": "v3.3.2", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "21578f00e83d4a82ecfa3d50752b609f13de6790" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/21578f00e83d4a82ecfa3d50752b609f13de6790", + "reference": "21578f00e83d4a82ecfa3d50752b609f13de6790", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.3.2" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-05-16T12:14:13+00:00" + }, + { + "name": "vich/uploader-bundle", + "version": "1.18.0", + "source": { + "type": "git", + "url": "https://github.com/dustin10/VichUploaderBundle.git", + "reference": "c5250c8d6a072960250ce5130e68a5693b3b48dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dustin10/VichUploaderBundle/zipball/c5250c8d6a072960250ce5130e68a5693b3b48dd", + "reference": "c5250c8d6a072960250ce5130e68a5693b3b48dd", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "jms/metadata": "^2.4", + "php": "^7.3 || ^8.0", + "symfony/config": "^4.4 || ^5.0", + "symfony/console": "^4.4 || ^5.0", + "symfony/dependency-injection": "^4.4 || ^5.0", + "symfony/event-dispatcher-contracts": "^1.1 || ^2.0", + "symfony/http-foundation": "^4.4 || ^5.0", + "symfony/http-kernel": "^4.4 || ^5.0", + "symfony/mime": "^4.4 || ^5.0", + "symfony/property-access": "^4.4 || ^5.0", + "symfony/string": "^5.0" + }, + "conflict": { + "league/flysystem": "<2.0" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.2", + "doctrine/doctrine-bundle": "^2.2", + "doctrine/mongodb-odm": "^1.2 || ^2.0", + "doctrine/orm": "^2.7", + "ext-sqlite3": "*", + "knplabs/knp-gaufrette-bundle": "^0.7", + "league/flysystem-bundle": "^2.0", + "league/flysystem-memory": "^2.0", + "matthiasnoback/symfony-dependency-injection-test": "^4.1", + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "^9.5", + "symfony/asset": "^4.4 || ^5.0", + "symfony/browser-kit": "^4.4 || ^5.0", + "symfony/css-selector": "^4.4 || ^5.0", + "symfony/doctrine-bridge": "^4.4 || ^5.0", + "symfony/dom-crawler": "^4.4 || ^5.0", + "symfony/form": "^4.4 || ^5.0", + "symfony/framework-bundle": "^4.4 || ^5.0", + "symfony/phpunit-bridge": "^5.2", + "symfony/security-csrf": "^4.4 || ^5.0", + "symfony/translation": "^4.4 || ^5.0", + "symfony/twig-bridge": "^4.4 || ^5.0", + "symfony/twig-bundle": "^4.4 || ^5.0", + "symfony/validator": "^4.4 || ^5.0", + "symfony/var-dumper": "^4.4 || ^5.0", + "symfony/yaml": "^4.4 || ^5.0" + }, + "suggest": { + "doctrine/doctrine-bundle": "For integration with Doctrine", + "doctrine/mongodb-odm-bundle": "For integration with Doctrine ODM", + "doctrine/orm": "For integration with Doctrine ORM", + "doctrine/phpcr-odm": "For integration with Doctrine PHPCR", + "knplabs/knp-gaufrette-bundle": "For integration with Gaufrette", + "league/flysystem-bundle": "For integration with Flysystem", + "liip/imagine-bundle": "To generate image thumbnails", + "ocramius/proxy-manager": "To use lazy services", + "oneup/flysystem-bundle": "For integration with Flysystem", + "symfony/asset": "To generate better links", + "symfony/form": "To handle uploads in forms", + "symfony/yaml": "To use YAML mapping" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Vich\\UploaderBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dustin Dobervich", + "email": "ddobervich@gmail.com" + } + ], + "description": "Ease file uploads attached to entities", + "homepage": "https://github.com/dustin10/VichUploaderBundle", + "keywords": [ + "file uploads", + "upload" + ], + "support": { + "issues": "https://github.com/dustin10/VichUploaderBundle/issues", + "source": "https://github.com/dustin10/VichUploaderBundle/tree/1.18.0" + }, + "time": "2021-06-04T12:22:58+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" + } + ], + "packages-dev": [ + { + "name": "myclabs/deep-copy", + "version": "1.10.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "bae7c545bef187884426f042434e561ab1ddb182" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", + "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.1.0" + }, + "time": "2021-02-23T14:00:09+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.13.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", + "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.1", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + }, + "time": "2021-03-17T13:42:18+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "f6293e1b30a2354e8428e004689671b83871edde" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", + "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.10.2", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-03-28T07:26:59+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "191768ccd5c85513b4068bdbe99bb6390c7d54fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/191768ccd5c85513b4068bdbe99bb6390c7d54fb", + "reference": "191768ccd5c85513b4068bdbe99bb6390c7d54fb", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3.4", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.8" + }, + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-07-31T15:17:34+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-11T13:31:12+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "2.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-15T12:49:02+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "c1e3f64fcc631c96e2c5843b666db66679ced11c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/c1e3f64fcc631c96e2c5843b666db66679ced11c", + "reference": "c1e3f64fcc631c96e2c5843b666db66679ced11c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/css-selector": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0" + }, + "suggest": { + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "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": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/browser-kit/tree/v5.3.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": "2021-07-21T12:40:44+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "7fb120adc7f600a59027775b224c13a33530dd90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90", + "reference": "7fb120adc7f600a59027775b224c13a33530dd90", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v5.3.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": "2021-07-21T12:38:00+00:00" + }, + { + "name": "symfony/debug-bundle", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug-bundle.git", + "reference": "356c7d2acb6bc93b1c091255068ccfb9ad55a3e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/356c7d2acb6bc93b1c091255068ccfb9ad55a3e0", + "reference": "356c7d2acb6bc93b1c091255068ccfb9ad55a3e0", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.2.5", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/polyfill-php80": "^1.16", + "symfony/twig-bridge": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.2" + }, + "require-dev": { + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/web-profiler-bundle": "^4.4|^5.0" + }, + "suggest": { + "symfony/config": "For service container configuration", + "symfony/dependency-injection": "For using as a service from the container" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\DebugBundle\\": "" + }, + "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 a tight integration of the Symfony Debug component into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug-bundle/tree/v5.3.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": "2021-07-21T12:40:44+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "2dd8890bd01be59a5221999c05ccf0fcafcb354f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2dd8890bd01be59a5221999c05ccf0fcafcb354f", + "reference": "2dd8890bd01be59a5221999c05ccf0fcafcb354f", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "^4.4|^5.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "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": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v5.3.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": "2021-07-23T15:55:36+00:00" + }, + { + "name": "symfony/maker-bundle", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/maker-bundle.git", + "reference": "f093d906c667cba7e3f74487d9e5e55aaf25a031" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/f093d906c667cba7e3f74487d9e5e55aaf25a031", + "reference": "f093d906c667cba7e3f74487d9e5e55aaf25a031", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.2|^2.0", + "nikic/php-parser": "^4.0", + "php": ">=7.1.3", + "symfony/config": "^4.0|^5.0", + "symfony/console": "^4.0|^5.0", + "symfony/dependency-injection": "^4.0|^5.0", + "symfony/deprecation-contracts": "^2.2", + "symfony/filesystem": "^4.0|^5.0", + "symfony/finder": "^4.0|^5.0", + "symfony/framework-bundle": "^4.0|^5.0", + "symfony/http-kernel": "^4.0|^5.0" + }, + "require-dev": { + "composer/semver": "^3.0@dev", + "doctrine/doctrine-bundle": "^1.8|^2.0", + "doctrine/orm": "^2.3", + "friendsofphp/php-cs-fixer": "^3.0", + "friendsoftwig/twigcs": "^4.1.0|^5.0.0", + "symfony/http-client": "^4.3|^5.0", + "symfony/phpunit-bridge": "^4.3|^5.0", + "symfony/process": "^4.0|^5.0", + "symfony/security-core": "^4.0|^5.0", + "symfony/yaml": "^4.0|^5.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-main": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MakerBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.", + "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", + "keywords": [ + "code generator", + "generator", + "scaffold", + "scaffolding" + ], + "support": { + "issues": "https://github.com/symfony/maker-bundle/issues", + "source": "https://github.com/symfony/maker-bundle/tree/v1.33.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": "2021-07-01T00:28:30+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "bc368b765a651424b19f5759953ce2873e7d448b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/bc368b765a651424b19f5759953ce2873e7d448b", + "reference": "bc368b765a651424b19f5759953ce2873e7d448b", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/deprecation-contracts": "^2.1" + }, + "conflict": { + "phpunit/phpunit": "<7.5|9.1.2" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0" + }, + "suggest": { + "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + }, + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", + "extra": { + "thanks": { + "name": "phpunit/phpunit", + "url": "https://github.com/sebastianbergmann/phpunit" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "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": "Provides utilities for PHPUnit, especially user deprecation notices management", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/phpunit-bridge/tree/v5.3.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": "2021-07-15T21:37:44+00:00" + }, + { + "name": "symfony/web-profiler-bundle", + "version": "v5.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "95fb24b09551688a09cffac95a2ddbb907833f07" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/95fb24b09551688a09cffac95a2ddbb907833f07", + "reference": "95fb24b09551688a09cffac95a2ddbb907833f07", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0", + "symfony/framework-bundle": "^5.3", + "symfony/http-kernel": "^5.3", + "symfony/polyfill-php80": "^1.16", + "symfony/routing": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "symfony/dependency-injection": "<5.2", + "symfony/form": "<4.4", + "symfony/messenger": "<4.4" + }, + "require-dev": { + "symfony/browser-kit": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "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 a development tool that gives detailed information about the execution of any request", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.3.5" + }, + "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": "2021-07-27T04:28:53+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": ">=8.0", + "ext-ctype": "*", + "ext-iconv": "*" + }, + "platform-dev": [], + "plugin-api-version": "2.0.0" +} diff --git a/config/bundles.php b/config/bundles.php new file mode 100644 index 0000000..fbab7fe --- /dev/null +++ b/config/bundles.php @@ -0,0 +1,19 @@ + ['all' => true], + Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], + Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], + Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], + Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], + Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], + EasyCorp\Bundle\EasyAdminBundle\EasyAdminBundle::class => ['all' => true], + Nzo\UrlEncryptorBundle\NzoUrlEncryptorBundle::class => ['all' => true], + Vich\UploaderBundle\VichUploaderBundle::class => ['all' => true], + Knp\Bundle\GaufretteBundle\KnpGaufretteBundle::class => ['all' => true], +]; diff --git a/config/packages/cache.yaml b/config/packages/cache.yaml new file mode 100644 index 0000000..6899b72 --- /dev/null +++ b/config/packages/cache.yaml @@ -0,0 +1,19 @@ +framework: + cache: + # Unique name of your app: used to compute stable namespaces for cache keys. + #prefix_seed: your_vendor_name/app_name + + # The "app" cache stores to the filesystem by default. + # The data in this cache should persist between deploys. + # Other options include: + + # Redis + #app: cache.adapter.redis + #default_redis_provider: redis://localhost + + # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) + #app: cache.adapter.apcu + + # Namespaced pools use the above "app" backend by default + #pools: + #my.dedicated.cache: null diff --git a/config/packages/dev/debug.yaml b/config/packages/dev/debug.yaml new file mode 100644 index 0000000..26d4e53 --- /dev/null +++ b/config/packages/dev/debug.yaml @@ -0,0 +1,4 @@ +debug: + # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. + # See the "server:dump" command to start a new server. + dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" diff --git a/config/packages/dev/monolog.yaml b/config/packages/dev/monolog.yaml new file mode 100644 index 0000000..b1998da --- /dev/null +++ b/config/packages/dev/monolog.yaml @@ -0,0 +1,19 @@ +monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + channels: ["!event"] + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine", "!console"] diff --git a/config/packages/dev/web_profiler.yaml b/config/packages/dev/web_profiler.yaml new file mode 100644 index 0000000..e92166a --- /dev/null +++ b/config/packages/dev/web_profiler.yaml @@ -0,0 +1,6 @@ +web_profiler: + toolbar: true + intercept_redirects: false + +framework: + profiler: { only_exceptions: false } diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml new file mode 100644 index 0000000..8a51fbf --- /dev/null +++ b/config/packages/doctrine.yaml @@ -0,0 +1,18 @@ +doctrine: + dbal: + url: '%env(resolve:DATABASE_URL)%' + + # IMPORTANT: You MUST configure your server version, + # either here or in the DATABASE_URL env var (see .env file) + #server_version: '13' + orm: + auto_generate_proxy_classes: true + naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware + auto_mapping: true + mappings: + App: + is_bundle: false + type: attribute + dir: '%kernel.project_dir%/src/Entity' + prefix: 'App\Entity' + alias: App diff --git a/config/packages/doctrine_migrations.yaml b/config/packages/doctrine_migrations.yaml new file mode 100644 index 0000000..a0a17a0 --- /dev/null +++ b/config/packages/doctrine_migrations.yaml @@ -0,0 +1,6 @@ +doctrine_migrations: + migrations_paths: + # namespace is arbitrary but should be different from App\Migrations + # as migrations classes should NOT be autoloaded + 'DoctrineMigrations': '%kernel.project_dir%/migrations' + enable_profiler: '%kernel.debug%' diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml new file mode 100644 index 0000000..7853e9e --- /dev/null +++ b/config/packages/framework.yaml @@ -0,0 +1,24 @@ +# see https://symfony.com/doc/current/reference/configuration/framework.html +framework: + secret: '%env(APP_SECRET)%' + #csrf_protection: true + http_method_override: false + + # Enables session support. Note that the session will ONLY be started if you read or write from it. + # Remove or comment this section to explicitly disable session support. + session: + handler_id: null + cookie_secure: auto + cookie_samesite: lax + storage_factory_id: session.storage.factory.native + + #esi: true + #fragments: true + php_errors: + log: true + +when@test: + framework: + test: true + session: + storage_factory_id: session.storage.factory.mock_file diff --git a/config/packages/knp_gaufrette.yaml b/config/packages/knp_gaufrette.yaml new file mode 100644 index 0000000..63766bc --- /dev/null +++ b/config/packages/knp_gaufrette.yaml @@ -0,0 +1,14 @@ +knp_gaufrette: + stream_wrapper: ~ + adapters: + backup_adapter: + aws_s3: + service_id: Aws\S3\S3Client + bucket_name: '%env(AWS_S3_BUCKET_NAME)%' + detect_content_type: true + options: + create: true + directory: backups + filesystems: + backup_fs: + adapter: backup_adapter \ No newline at end of file diff --git a/config/packages/mailer.yaml b/config/packages/mailer.yaml new file mode 100644 index 0000000..56a650d --- /dev/null +++ b/config/packages/mailer.yaml @@ -0,0 +1,3 @@ +framework: + mailer: + dsn: '%env(MAILER_DSN)%' diff --git a/config/packages/notifier.yaml b/config/packages/notifier.yaml new file mode 100644 index 0000000..3984a48 --- /dev/null +++ b/config/packages/notifier.yaml @@ -0,0 +1,16 @@ +framework: + notifier: + #chatter_transports: + # slack: '%env(SLACK_DSN)%' + # telegram: '%env(TELEGRAM_DSN)%' + #texter_transports: + # twilio: '%env(TWILIO_DSN)%' + # nexmo: '%env(NEXMO_DSN)%' + channel_policy: + # use chat/slack, chat/telegram, sms/twilio or sms/nexmo + urgent: ['email'] + high: ['email'] + medium: ['email'] + low: ['email'] + admin_recipients: + - { email: admin@example.com } diff --git a/config/packages/nzo_encryptor.yaml b/config/packages/nzo_encryptor.yaml new file mode 100644 index 0000000..4024132 --- /dev/null +++ b/config/packages/nzo_encryptor.yaml @@ -0,0 +1,2 @@ +nzo_encryptor: + secret_key: "%env(APP_SECRET)%" \ No newline at end of file diff --git a/config/packages/prod/deprecations.yaml b/config/packages/prod/deprecations.yaml new file mode 100644 index 0000000..60026a1 --- /dev/null +++ b/config/packages/prod/deprecations.yaml @@ -0,0 +1,8 @@ +# As of Symfony 5.1, deprecations are logged in the dedicated "deprecation" channel when it exists +#monolog: +# channels: [deprecation] +# handlers: +# deprecation: +# type: stream +# channels: [deprecation] +# path: php://stderr diff --git a/config/packages/prod/doctrine.yaml b/config/packages/prod/doctrine.yaml new file mode 100644 index 0000000..084f59a --- /dev/null +++ b/config/packages/prod/doctrine.yaml @@ -0,0 +1,20 @@ +doctrine: + orm: + auto_generate_proxy_classes: false + metadata_cache_driver: + type: pool + pool: doctrine.system_cache_pool + query_cache_driver: + type: pool + pool: doctrine.system_cache_pool + result_cache_driver: + type: pool + pool: doctrine.result_cache_pool + +framework: + cache: + pools: + doctrine.result_cache_pool: + adapter: cache.app + doctrine.system_cache_pool: + adapter: cache.system diff --git a/config/packages/prod/monolog.yaml b/config/packages/prod/monolog.yaml new file mode 100644 index 0000000..2c02ad8 --- /dev/null +++ b/config/packages/prod/monolog.yaml @@ -0,0 +1,17 @@ +monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + buffer_size: 50 # How many messages should be saved? Prevent memory leaks + nested: + type: stream + path: php://stderr + level: debug + formatter: monolog.formatter.json + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine"] diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml new file mode 100644 index 0000000..4b766ce --- /dev/null +++ b/config/packages/routing.yaml @@ -0,0 +1,12 @@ +framework: + router: + utf8: true + + # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. + # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands + #default_uri: http://localhost + +when@prod: + framework: + router: + strict_requirements: null diff --git a/config/packages/security.yaml b/config/packages/security.yaml new file mode 100644 index 0000000..ac270e3 --- /dev/null +++ b/config/packages/security.yaml @@ -0,0 +1,46 @@ +security: + # https://symfony.com/doc/current/security/experimental_authenticators.html + enable_authenticator_manager: true + # https://symfony.com/doc/current/security.html#c-hashing-passwords + password_hashers: + Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' + App\Entity\User: + algorithm: auto + + # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers + providers: + # used to reload user from session & other features (e.g. switch_user) + app_user_provider: + entity: + class: App\Entity\User + property: email + firewalls: + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + main: + lazy: true + provider: app_user_provider + custom_authenticator: App\Security\AppCustomAuthenticator + logout: + path: app_logout + # where to redirect after logout + # target: app_any_route + + remember_me: + secret: '%kernel.secret%' + lifetime: 604800 # 1 week in seconds + path: / + always_remember_me: true + + # activate different ways to authenticate + # https://symfony.com/doc/current/security.html#firewalls-authentication + + # https://symfony.com/doc/current/security/impersonating_user.html + # switch_user: true + + # Easy way to control access for large sections of your site + # Note: Only the *first* access control that matches will be used + access_control: + - { path: ^/dbsaver, roles: ROLE_USER } + # - { path: ^/profile, roles: ROLE_USER } diff --git a/config/packages/sensio_framework_extra.yaml b/config/packages/sensio_framework_extra.yaml new file mode 100644 index 0000000..1821ccc --- /dev/null +++ b/config/packages/sensio_framework_extra.yaml @@ -0,0 +1,3 @@ +sensio_framework_extra: + router: + annotations: false diff --git a/config/packages/test/doctrine.yaml b/config/packages/test/doctrine.yaml new file mode 100644 index 0000000..34c2ebc --- /dev/null +++ b/config/packages/test/doctrine.yaml @@ -0,0 +1,4 @@ +doctrine: + dbal: + # "TEST_TOKEN" is typically set by ParaTest + dbname_suffix: '_test%env(default::TEST_TOKEN)%' diff --git a/config/packages/test/monolog.yaml b/config/packages/test/monolog.yaml new file mode 100644 index 0000000..fc40641 --- /dev/null +++ b/config/packages/test/monolog.yaml @@ -0,0 +1,12 @@ +monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + channels: ["!event"] + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug diff --git a/config/packages/test/validator.yaml b/config/packages/test/validator.yaml new file mode 100644 index 0000000..1e5ab78 --- /dev/null +++ b/config/packages/test/validator.yaml @@ -0,0 +1,3 @@ +framework: + validation: + not_compromised_password: false diff --git a/config/packages/test/web_profiler.yaml b/config/packages/test/web_profiler.yaml new file mode 100644 index 0000000..03752de --- /dev/null +++ b/config/packages/test/web_profiler.yaml @@ -0,0 +1,6 @@ +web_profiler: + toolbar: false + intercept_redirects: false + +framework: + profiler: { collect: false } diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml new file mode 100644 index 0000000..36d3cb9 --- /dev/null +++ b/config/packages/translation.yaml @@ -0,0 +1,13 @@ +framework: + default_locale: fr + translator: + default_path: '%kernel.project_dir%/translations' + fallbacks: + - fr +# providers: +# crowdin: +# dsn: '%env(CROWDIN_DSN)%' +# loco: +# dsn: '%env(LOCO_DSN)%' +# lokalise: +# dsn: '%env(LOKALISE_DSN)%' diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml new file mode 100644 index 0000000..f9f4cc5 --- /dev/null +++ b/config/packages/twig.yaml @@ -0,0 +1,6 @@ +twig: + default_path: '%kernel.project_dir%/templates' + +when@test: + twig: + strict_variables: true diff --git a/config/packages/validator.yaml b/config/packages/validator.yaml new file mode 100644 index 0000000..350786a --- /dev/null +++ b/config/packages/validator.yaml @@ -0,0 +1,8 @@ +framework: + validation: + email_validation_mode: html5 + + # Enables validator auto-mapping support. + # For instance, basic validation constraints will be inferred from Doctrine's metadata. + #auto_mapping: + # App\Entity\: [] diff --git a/config/packages/vich_uploader.yaml b/config/packages/vich_uploader.yaml new file mode 100644 index 0000000..57de826 --- /dev/null +++ b/config/packages/vich_uploader.yaml @@ -0,0 +1,19 @@ +### UTILISEZ CETTE CONFIGURATION SI VOUS SOUHAITEZ STOCKER LES FICHIERS EN LOCAL ### +vich_uploader: + db_driver: orm + mappings: + backups: + uri_prefix: /files/backups + upload_destination: '%kernel.project_dir%/public/files/backups' + + +### UTILISEZ CETTE CONFIGURATION SI VOUS SOUHAITEZ STOCKER LES FICHIERS SUR LE CLOUD AWS S3 +#vich_uploader: +# db_driver: orm +# storage: gaufrette +# mappings: +# backups: +# uri_prefix: '%uploads_base_url%' +# upload_destination: backup_fs + + diff --git a/config/preload.php b/config/preload.php new file mode 100644 index 0000000..5ebcdb2 --- /dev/null +++ b/config/preload.php @@ -0,0 +1,5 @@ + + + + + + + + + + + + + + + + tests + + + + + + src + + + + + + + + + + diff --git a/public/images/accueil.png b/public/images/accueil.png new file mode 100644 index 0000000000000000000000000000000000000000..eb760f05ddd6e224d052f9a250519aa52cbf7226 GIT binary patch literal 98347 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�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 literal 0 HcmV?d00001 diff --git a/public/images/authentification.png b/public/images/authentification.png new file mode 100644 index 0000000000000000000000000000000000000000..8812e04ee57dcadacfad2acc958144dc6f6b4ee2 GIT binary patch literal 20829 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 literal 0 HcmV?d00001 diff --git a/public/images/creer_base.png b/public/images/creer_base.png new file mode 100644 index 0000000000000000000000000000000000000000..dfaeaf9d18df2cb20fc3c2a9f3eb64844be04192 GIT binary patch literal 51681 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

99?5NwS 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%0D)E1ToBlWKBjvv7xdAitJDFd5kj>`>TIg2 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%0D%Zcz1f(EOdMEzuHuK zuXThfEI*&m3?pWp;|kX5M>DCNFk81vI&3!vV=TKrEpaR1vf*ak}Hy;5@cDQ~`6pP2ph-#Dx_ernNPwxEHKEXX~19{+ZqVun9i>8r9I@hiCgKq6V4P9L!~nMzLA zlUuH*-1r_fNz~zOP=9XmWteOMHS_zH*bmE-^-BIlQ|^FhG?*6Q>%mB#PudnUc|f3y z4dm_RqpK`DIaS_Y_A^Q)iP!fSpr-b?NH?#y zWA)&AdMJm~*<_}iJ+gP%)Byzz!2CGUe)5YY9}YRqXd-roPqMFDJ?itgd%gGAZSUyF zyPa3=yw~0?6J4WjhbN__C9Q~b;&mdMAb%@%G|b!g;R+7pHmk1gTAQ9n=5>DsZh@+W zrij?Gbwb_;yaL_zFSh#u&;XLFb$(xL4aw`n*?e!O#vA(Qg{tmvR`XOj`SmwrzWB+^ z(N)T_)3vyPuARfioJaG6D+LVAB~i__$fozC`EWmR`E%UJsRCaTI}iS&hb6`Lz3Y?kBnTXSZU&;8wd{j7C+WQSpDhO z$GQ=()_X?wzVsxlQQ(7B>ueH>sdPJSw|ZZa9DDa(p{huN&bc)(%0PFZJ)^jMH;jVj;wPx zAd0a);0;H*&i9(|a=T+fD@ zHK1%}=!{&-=c)a^Urp~58O`wic*s-ty7g{1UceUD<%Z!z`{^3{@qPvs)`1u8Zg4lV z309-k)K6FdW|`c|03C3>UzAe#SvooRN^q!owL=-e^Xb#EB=O!Z7QpN08G@nFH%PTo zEo1$}rwXS>mq@kQ;bxaPY|UCd1ANV+a4kwp7(k*CPXEy{#^HAb|zF(4ZC2^O>x};ol1e+LMB5Q4+ zHs3TlpOy%N6I?*huvD^4>o4!wN5l1-@KtHqc)T{M;Vbgqc-FGjwiq_3DB6L$Zuq7o zU^@p`mjwaA5q$QP>2-7Q==_TFp6-?g;<4zNj#_>>Dc?WE0aqerTRG!$+}bXE4TX$m z&U|?IbGpXKiv%A)HF=?5YZ7DHFEbPr5Hg0N@hKH#FkAPS=##1{6OIf^Ydl9mLnAFL zf|UUAr`)#;Tz}zt$h_J!YthAKWA7{;qdTUe zz{3EV&i0uJa&%*bz95@S7}Mh*yac5bD4yfgde31v0LR-6i?Z5T#?4x1+8*uf zweL3dYju8XE-C10yg-F_{%I5n$KFV&nL9#WDl%Jfp* zJMm=a5Ja@#(sXRWo3P)g8`V)f8cP z%<4SXq?7!#7(N|{DlzMw*^MC5Q*7&$C*)~(pQn($P9dy_m;*AbEQ!N(-QWwG-ML;UPJtfHIvGbwYd^PnXyW3hvN6fg@X3C7{gV2FH zaTgnEOvP)<6NAc^r4|lT+tBgKS(X|J_&Kb*74q4d*gIov6l5ZY?eX7D)tUSiY-&Ss z4~xj_F;LN->aBrA{&L-=@}ciOU3D`T2bHHw2_38OGr2f}4}av|MP*dJ`s2M@JjTtK zMLeMrA3Iut<}Sa^Kz$=zGTGPB%Xgshmu>H(R6;ktvb>PPe0xl9AnI0(o=Tz9ot;#XBrTf?(YFX zH++$kQ&T+s(lF6B1Z0i^Wz4Uxq)|!BkS*JOn<-b;XfivvT#H6->8kbpbuyo2)z5+p z8Gty)K7t7SnUCtu31QXEcgdbH42F^Dm{h(S2lCD->|nru5EqjP8jdl*5DF<&9Qb@)0fdX1yiffwp=U6_83ZLmrTA{=^82@Pv$Uv zkc$G~Gp^=J zZDb|e`I>Juai<*3)V&22aM`X???k@BW~VaN_28v20*CCX-=^PcMli1_wWB4Uww{El z2>F-QVN@SRTe~DW=$oMXom5L$iRnhb-&2j85l;>W>RBH_xXj{cDgr5sn9q5C^Abqf z3S0R!w&Ky=&FgnL*-sBlMXzRN&~NqFp#RaD8JJI}7!g!hIHe&^sMEe9j@ehdkvOEQ z>L=~~1{!T^eS-~138ju+0}_ZSkqF>-O9R@6+FpThK#T9$nSwsAhIM&z7@VBCe%fq; zp9z}YZ-UO5;{E`W<@J7kDA8$cVpnIde;IK-$2~6i^m@@7d5`&gKElj&Uh>M$E3Egr zSBMnUUs_#Fxax8$^kJiL?^KL+)JnV0e(bQ?mNRMM%pxC^WrA4H=TmHdjpb<(RgQ9o zS%x+zyxtXe`Q5G=nUiw@2YX8= z(KEO9X3DuS-`?H!T0QfP8_tVpJAecNHVVfTN)>HiC6{I7lNl#eUS2P^l#279sL z{>T3q?6hMZO-n$&;mdTXGR9X{x(+7jHYw)`27HK79)OV9YNkqeAGy zKA((xg(SUBZANLn>uPZnu*Ls$8*6%rrqEIBY`>Cm9dD&b;OQ=rvVQpXCRh%6XdW+O zH(7;IT^TB8N4Zn5{6UKJ{>Yz|MZQnm{q3U$1TCicY8O`dT4DRhg1voj<{Ho_y_&#W zCmQSdH3r--T6g}<(cPT+X~yQsfz#=rGh69`=c~XrF(F_4IcIV9u7c+PWR~7bqa$e*%{`+emNNhsl`rJc&}@XXX`>!~}iQ64W38F;3=Z`hn5> zI}4p3HV=Y2BS%Z_mvf2zgYphFST6eo+lg)^5L*rJ$@8znvUOvLgMvEV$N79xZW!0Z z$m}fKWyMQ#*6D83=^{GZ&(=6IYQ>He>{s8IiSO$P@>UOenAe?rUD-c8N&j^?Z}Z4b zS?X$)iCkicbg|<@ymYO9fB+j&O7VCchZ1UVQCn#DGn`H7xISJ7tvhlQbLMvJ6&9HY zlz+DuKLY+xb0 z+z)avwp#G*jRLB}8+de4MG@SO8vMqI`IMOxC^)o0-cr@d1+Euy#`zo#6?O3Q=6$Y=5G5o!9{Jo6`G zJ!YM6Xp+LSt&s;z9a79OW!f#xgsi2ekLq8SmufN2sl68!p}M(&)LzGjRQ|*c-*0>C zZ_asfkl89E6GRM8&*+QKC4wnG%9$~y??2IACl6A(k0pq`tMTC(!xIc-;%>;7wmElH zkgKACLB8Xnni%Tp!LBbZ>`9}|m)%fG%MtC*(RxVIi8Q>b(our#7T!Tyo3SSynAi4M z%Pp=rz>(GHj5Llkgvp3VpBQm_BMM8MZd zr)K^diR3dfpPMZADX7 zm84^L)A*T57lpB4k}k5bYGf~m!s|V6><8>uamL#5uDY|;Vc*5{yLtM>swu4fPjMD8WrF+Ze|D;U1i6#+Y>r`ydbVp=j`MF#8O+Jk%!X( z<4Z{8^Gpo-`89btkysJ7q}myt%L`W-+2wQ_rMXI-`!8iqd+v@r>H?CR)ox(mdSQZp zT*ykyQN)TPzz@g6`y{rQc_#v4zBt1%Y?>%*+3`xwq)1bEq~tjx^_BisCsAOT%cOk1 zVg{-MASpEv?@f*Ro}ALB#^GS2zb+%5)Unh~^_hlLFrHamarV2#-NKDSQ`#O9#`eJq zwaX$Za@W#kJS#9Pu-UHbhNMW5!R+J#Rg-t=l6qq9Qb%Qyt)ZR;7Vy1MV<@YUhmRDE z;bxDG6tLOZT@Ty{EdBvQ79Ik8m%8RvqoY5$doNnUd}BAarQQogG9xsQ<6#@b29P{2 z&rUI)z3Fld5Nv~NR?t)8;#5ZC>5eqp?mjJ*M=Y6Fd-%@FYl`cwdD)_8e*twLG(^XMHKiJvp&gle4yrIpfAz*-?(a{eQ6(Cs4Ci67J*!WEM93{U*}h-+8HUzX<#Mx;O z?O5;H6W?`Chb28bXm?$x+>fDzruXtCFe>0)Y<-+eRU?6E6xZj~&(E$98lsQRs0mA1 zQk#R{1Z(zeoV_4=lsQ4q_X$~G&1Xjok}(|N=(c}buJuM~AaDAJT`hW;@2&VYTW54O z3XG7sdouM-^gux%cu7h>^yA^ViihY&$zxJwXaY4`50vlU&G=tqsKR;cI28>q_D!SG zvd`3(27{q}euOF3vNwKyt)Lgv^Nbu+qLcEedHvm0JoH!)*VHy~L&*P)4)$Bdx|<+f zm115_iJ{T%w6Ea=)hM2uph!0xIMZ&mNOL3pzOn)@gxL{Wkug4{Uc4{SErU|SULZYf zv@LVXPf)&E9fmGa2R}1T#0CHa*qsg7aSqD051dDjou-y zLuqkfGB;{nljrwaJ0nf1%QhdYx)+L%ZcbS@A}Gh1)uv!#Ze95iUSbH-IXgI>t*4!V zR;!PM#q-q*ORbaY!Wl%^dS-kkr))@;Qp0`T;DW%`wMM2Z;m>@7{?}AM6?kP~u|!|r zrQE@OAC+XbY4UJo>06eXcT&+uP@r8mMj24s8sJw!H7k$s=LL=)8^&zeHTCm~s8|C1 ztRh^A`)69LAUmy3DH|5OY4X~2I_2cXArE|pX(FKjF)6974wJ(L~@`ViB zH#HYu`jm`|aiyHHbQisL-8*#dduD(&(r>&Sw~Iwi>MKu{NwudwH|9e}2G=Ez^tr{d-e#t1MCLu;eF?!-uL? z+0J}^g587nNU452pT3vSFIQRmEj1oQxozFma43gQk+45+c1vau(W^ikO>V^_;Y)g$ z2o!`m9cPdm-kUe)>c~Dxi$X{wogE+kplG+V#%#Dw3EHI*qjyutNBoeSx8i-SrgBzV z9yx(qupgy(Z!Rc2RdT_cJZ-R%qxPE~>`9!l_T`QdakPLgof)ZkkrkpLQF)j zJmTSzF0>aB5yO^u{_{hYQI(}$wc0~pDX0*JtgX$mKXu6DS1%MG#{0}{ECN!h7$10l ze%6m(xVi+)*(RW==RYad)ox}SG1+dhYzi+-{T5;;hQMZ;{zks)j2RK2kh#=-5qCL7 z^aTz{QRu6TKBl)|z{+SWOt4b!5~7*z4Fo`_mmVuXTMJbqr@yLWq`+i$-Gvk{e&3A~ z{t0B9cX*qs6Kv|4Y>vXGDWcM7z3P3cDdGJHUW$5V2oSx~FX$njg>DVIg$wQk*Y<>K zcNsIr=M~~sy{l|6PyqA?CEz?`OYW-s;w0%lveH$bF0XOC48ZtVPz7AtIylu(SH(vT ze2};SD%-5ui;Va#$mw1+m6noFs9Vn7tcL(d=(c_U{786=gv6a=5g;Y)7LD)BmPqo=5$38JfbY&N8khEzDB0XlKS!cL$#Nx`^c`p&A9EKSZv!}* z004CW2{@ToOS9FR_i8`;RGnco0!z}ZDPtObJWph&j$Gq-KZ_o{=DcU)*o=@pW-TX~ zfLwW&F(z!p?Cs>H;Gb+y&k5^C`^aE%mJV$v$jC8?vZ@QtmdjQGyF6P+sI*r_LScob z6Dm$S2{ZxoW-y=uVt5a@s4T}a(%_%Z)Enil4;!oMPXGf>{^#zkXrh7p?+>Qy$!`vl zX<5F_L}QwO&2z;xmP7T;>vf_rnqM6D)6f7Rs~P_5{qS}NkIh0#ly)Ef@q&#kLw>u<44}?FB#Wkd=<-{&wI+#dwXYTH*S~7`%!QKD z7&VDGxiLGD5F!g^LE+Xd*ZcS=Atc)F*_r2}7(A6ihg5k-h~FUta1wvNn+3rY-hGd4 z+*18~#L_AEr+3YGpUbnBRga1-wXVttpjsPKRdHdomm* zKWrZlRePKwpcG&TAF0KgE-glZy9&H}Z3nh4ubz3|?%C&kIvj0ajesKnU_niE?L6H# zs8mpO4($9H*;dB1?Ie(8JTkC^1d!}?3b@AG^P0WATuJnm#Y#wJ2!a$;dw0;lw+{?5 zySUaonIFww{k~*Xr=lo2vM429ZLQ!lz3Yw4-KrgyEezyMu1oMeq89plwUI%$B1oYJ z7TJ0;#AW@y+6DL&IPt%mwR9+8&9$8V6|a?m*$VrCiB9(4UyCZ@ zXLOXsdQNnG?P+SBH)fd}d0cz}sX7`g+#etn>uOnYHe{p$-?0h>cw0|woJHkXCR5N$ zOHx13INw(h+A*%TxWA0-cX~G6uo}zcer9US;o7;$$to7aHi{X7iTSt^AM-I$mc_4~ckzu0Eg0wnEN{HzlDg=d<}SAtP^2gY5`raNtg zFrZGG->Vu{C71}xifJ(S4hB|vJzUn1_j@z>GY-F`#b6@t>>wq`otFC?{`^3ly#y3J z+x#$ECt zOG8Xh9)-~#wW=5g?* z+%Zh${4#_uz$M!?L6@a=b)Qa8PRAY9HC}XMe%)cZ6t3$zq|31!P6y&*2|{5 zz&BkjSTIp^)}ZwF=hEqp=_`2`TFkv`gd#AVDn@mtE^W_W^(`LDH=Fq)tIjCFq43;c z$rMrueBAdKQ5iEEPd#~Ct1go{1eAHT{CHbZt8la#u;ep4m_OuQsLEPuxEd&gpx0PnG!k{m`!!X= zHVFgx%1UnjdV0vhd>(ZFeL8L`Xn4p53h$ih7_?5LPrTofL&ipiC8T*hd}P8-zAs23 znisxG{N+G@qmxRp$9_7@av#~@&!ef1somn>X&t@FdO_v$cP{ObW*PAT zY5FNr;pvEf91jXQB3+g?I+KcJ|(DIKu%wquAbFcE}uPvJr7rjjeR+gYkLq+XV%E zk*5&{4Ai9eB*ZNYbE=7NtfA6yEP@KEA6+f*%K*_j=?Z#vHw3)n@DJ6X;2e!<*D;!_ zX={O~Hpb-BS`Y8*{aPm-D!rSuIzvq-K)`Pjc>mT^()iLp2g%&rnu*{T9oNdb%=}>A z+PW+m?hdfIYk-AEG-5)R_I}lORjWmQgHPs9oUKhVH&?<%O`F1vucSx42QfHbrEDJd zM=X>N?<1A#bq)k=xF=S5j^K1n(ug$4(R5wB)V{GsRCCEJxin|I8WkYs5pBNmry?A`vE9if3q0hv#Ra@m=&mI^T@%uf`Tq4pkx0Co0`1XA|8&#H)0!-jaRYN;|(9FP{y zO_IvJa1ROk!Xs1$VRAb6uRHszoe9UR=NjE)?^L3cWGs_Mh>CdB`3OpW#wG>IPkdyE zHi9RO>BK6)R6+%9tA_Abp< zA}CnSdJ`ximI$TW)+uv%?nF|d1;u3Kh^?}_N1M8VD^Ldpq*5VH+#AX4>0u0?=~p-u zX{GO0u|+!7*m@i!FiDi5+C(eXOI9ihgP|sYX9v3XvT6%M^}23jtDQcjTg$#3w-5=5 zYPlrLrIs3JZy3WGrbK=ZjCN&1d6{Fm*U)s;(nbS4Zy~Thf;>!LS@h>OGZm4 zl{J*X&y<>Rh=)&HeJL=YetwicDkmRdrghQgFS7PlXrZa*$N0r|ZzVV~GGlnY-DkcY z?U?jvh`U6iMQdqV#wg&WIs0oqM#{|msth^d>1J1K&V1Ca{i+E~c|FkgAS8V>lkIn= z$k^1Jq8AY{6$~??9}RyQpdlT1whfQs>)nrTzRsk<*qmbzXk?e`W*zpM$vKJ6^v2rH zIl4cPar`Q9Khe%*B2U@}7mo6|nRq9<9ig3Rt5ceeO_x4&@r!g*|DAO!7?{}nC+%jN z!3iO2jfQb_PQL=8b!{@m6ottOS8c%6zvUNQoA+@omIrBBQyrCMcnMrYI_7iReu5UV zO`_CaMGGw;VBXVD6*!Pcb1!UW<_#QXv zTzv83w9|;NAEOi)r951>4bTVe+p6hkaF1&!K~-5urXJr@OneX^tN`eep01?HhSmA< zwBcbmeqVH8el?Y6U!JAoC()uD+ZB&*9#DQTBg`~CR{_WJht^ImXIsJTV3u=P(Vr2F zLk@?9S=D?&Pbc!KTZ4$`=xF#Nw}m2&WTM43rRAxK7*e|7VU7E%=J6(UDXaztHi`*iLZ7^IbFlbG23qko zpLQuRH$dvyXJ2E1K)Ae9Ed)AH6PK5Kuj;m?#)DO_UU+3I%PNs@ zb#cL1gLkS^tm47QoPdP|8)Ytd;2oh*-6DHppXP0?6ZFSJ)7m!2ueO-bcqVv9qv1uD z?V&cgx-;Punqv&%q73QIz?5RhNZ3HaO$+#gF&bof-|KtAv&MmnHaQI z;~{j&KJ)oV{#$JKrRSJnc6OBU-ZRAViUjlU4f2ge-smC&goYZz+CB8 z7_Vak*I%1(D_k(V3Fz2aiMH)hqfs)%ZGC6=@G37`a1M8@U%HNXUvseQ=c^5mJqZea z^|ENxWrU1KDR(yNFTR}qv8qC4*A|c zjE<4_ljR)YwxDL5*&_j#A7%`atLco5_^-N+&Gx%v8PlSb)qg@-&8Zi)0K>~8JF6Qw68NWE7#x{KY3Wp z6b2$yOCCzw@B`tl(O6?-5=5mIqBdl)=?|BnM~QDV)(&K5&$yh8rhoLcbAH={(EU+q zeOjn?R%1uWoj7I1Vd!#nqd z=XXwn9F@y@vOAwvoHaj}q-XTpDN9C4#}-k6G9TK=#FR>J%kuemJ6-jtzpT`U;rkxg zD1K8<4J)!bpEexUj2K=!WzR#G-$}ZSx9RS5n1abt9a>xko=yXF0Hq1~4{v*|GX6`H zY^HMLq3g!fcU9+^)Zo22jg!iLrnM6(`v-z-)jTCdbmUg1r7-pgU*R z+fm(7+b%STX;{|lFye#Atqf+J;eK5}?qE{eR^~l%`OVY-sZOI=Ceh|?y>);OoTd3- zwC{$|#42cc&u`MLADq>FKKockZ(3vo?qzGrl9MPH6Z@)b^w-~1f&VJqo(%t5@Z$-o z;o!{gy4}N=O^`{v$Uy&*%pHX{hZd$>!B)4!(XQb0iUE8s=x{EniaswWd*W%l>63@M z9ASw2@AFjdM{&zU(Uop>n?tP?mUr~az+is)?jm1xw4y)e+M9l6jaA~EHZqJ`xcIpn zuwdO8%24%ZFbzQ!iOk2!Y~UanCqPw^eR8U#|6mv_y|cb>QmL1QQR_M^DzMB|S)+JX z3k&}ehg7zXpR9nbBSUfFgmKlPR;ILId3|iGV}&xY2+!`mXMDxdB!PnPU*dwQmWK`V zGdEFbsoVe5B>(jkk>n;qdT96Ul#b+|uJGu{ zb?>6T5rPdGx(j^A{8uG+SiY6w^?&rT{|)>8H=6wYN&njUl#7V;n-j{ZFU!dTX4{@Y z`o~unyS(M92r3Db{E_S*G#EZ7wW5ciL*qNRM|HlgjQ@d(^#=Pmzbue^~I2FHPvPMf>iqPt-J>-C`jAG(U_J2*|YZ&|iUpTvO5-?9Jutk<*p zAJ>%m=8gXRtvybxk%W;>n(#{RptpM+6g2%*j{QXb7iG5-qn~iK!|q_FrcHrLOC0paEFR+}sg^}OjPgS(d-;=!rk0L>Q4Zba#5(1DjnZkfY zPG2q_MUb@m60k^J>xDESA2o`HbPy8S30;nA>%5zI*C^`1yuqh*^Lat3`XB%T;1@HE zJdiGLH7Y2;z!*ev+-RfZYVxoX_Ogmz8>FZ>H-BYyYA_b7f|B!DYnT8=oWH+n!>#yL z6b#Q%Xh@k|EOjO`bueKn3$@P6#O~`Z*qG9ldku#F?YdkZQsEff*qB1IqcUn{NOYti zBN)PVR3e5CKf>#k^|}xQ^bcP(SffT^;0-j{u360I={8jxuTRYf4cJOpW~7^rZJ(^! z8*`^etcX$+HF{?+M&9@885mwW5^&Ldd^~Y0+uCj0s@(FcZuNfPNjmNr8Cw(yP=yP6 zj_D(T*SSf&(DdUToV=-`1u}r!*j1VMY~7RN&0C&DKX2LM_d9l@@g-TcJ^$5>sTWJn z7kh563wL66fM3UEWjZr|7%gVR5>FS@yu7OkH31PnW&3MvD!(cOI3MRQoc5vw-k)i` z^n6(E2O6?C0YWRl>0Iunyb_F=c>x*Pm=ED?Og`Y+HkJ6;j8#f ze1}2`QUg@S+N2FAIn!E{1}*^LiD!8mu9#dUF3myK3BwMi*kmv9vJeyNYw}xVW65;f z!#mlV%vMsu6xUPHSX%mV^2R{oUI#)riWL1;JR-r@b|xPlh7WrKL4wF*6MHgPvo3h- zt~Coe06-WbSpZpJyv##EKnQlGgtDNjulhiLS{ZNruSy_X>fgAo|TEsrj=&Iq&s52X6FC^CO>n~D`1PQ zdtHc58LJ|>faQrLPUhFnJe;;gq*9*F?^F|(7I4}ZL&-m|<={MP0YZq}(F!3ZybXtY z6j5zhFKjX-3Cam;$~(ic?84{txyK5aM+!;fYS zC#CPU+>uxR`LqGE0rA&nD-IJs@B4^ENi_B_Sac>IpD31aPsb;F%xc`!&J>7d#qg)C z)4fNx_TBHXFCije9HiMUV|~4B5V#qYc;1Mwj_PhLS?E zRjYId~s9A{>pS`Rm z!K4=OaA^;f{o^NIJKJ7Z{JJ<_2S(-cf;=%aLbN{rpM9=}mNdGsD`N~jAI;Ly7g&<5 zJ8mWo3 zvxycTVYY@Kp>}wJ#-P9dyea*N`$+lA2tpC@nsp@MCh`bcv4NoCH8U02Qfjokq!>*N zrR`IFE(3itd;{T%4y#bi^PSjeB=vCLOM?ZVamlhEskU72E?-u7c;-MO$1v#ruN@)T zUm-dc(7I4Ql3!wXwxfR8{N{7NMzJ=>34XDOuq;D6sYk^V{N#X(d+_&=i#4N!vw0w?VBGLGRiF^oPy z`PDR#@N&~6NzAY=Py+z)B1@yHeK{SnhF9s(;gmWJN0a8jZ`zajCN2*Z( zLK=#k3kx~^Aqe%KZ;gaSh(1{W05P(ZjFGS$*Kv7`-Vr}z2JeZ8!EkLYr%Ro3<(Moq zwBoJoVnWL*bZjjKp|rA7Yq<6pn3q##nNy4aK2K7P{RCGUk;AJ;0K|zbOtY~V04%I7 zuA@Rsiv5!i0JBELAA`!i>L|3_)U}{*+ATV)8WWTDO{sI1;IG~I(5*kx)0@0X74lbY z33m+~z(@Jw{44nKy=ktt`7`aqT0q&V<3}-=N0QyO&eylEh+?u^GC7}%HFF9qbDn6a z5&E_IO_Ura?^2?XR8k5lBwHwriUK)quLJfDs^jFu)PmCn?f&KFg(>=jJB>J=UrwJ*)pF zm`;Mkv?Mg5)idZqdT$EuDG3JCJVR5TP|tK#OAwu#!qM}s4qyF0(I_Xm0CCXv(3Ci( z)bgOv{7A}~$RQ@1>{pkcX4pLcpZ2abs;MiD#PhCVPITTh6MC^R~mRUsY`yYjH*VCy3uuYwJefgBeDrQGL}V9rQwp^*s0^l<;#^2=>E{#AJ}+DL|;OcZKo@xc;RZxUIj%a9ORcciJk0ln>AF>`j z{%b{L|KlP-n77~dZ9PVj4fPHcE5}F{InLYR-npkO&$yF~c)h(~(+rnw*+0AwdIZ>9 z1zj_&&LMB@Y}yU=k1~QQO)Weq~AmspmHCkgz#Ad%}1_vHFT(=FQ5LxaUlR( z408AgI7s1}{$ke99_zovZH5mguojh5)tBhI<7OU3j( zSWqqTC-3=%ERAw|ovIdlI$eeP;NX`pU+LD2wlW572fFg6?tH=db{TOo&%ixkguhaEIZa)7$>MxlcKhchLr`Q-C8Fwze{i%!f_m#&C6N1h?O>en; z<+9Z%>?EX2IRUTVJo0M)0pE3R!3pQ-evEQ6HB+$O+%z%)fLnr+ z?v$NU@=OsZN@UVRJ|Qc`mdkCzPG%3(U}e1BQ(@458v8e`K*nkDOf$u1H&xoUG*4s5 z`yFSi;^tFCUf5FGo)S!&5)G@tr^u#XOL0k5Y#-M{G4_t$1YkFwwBdmQQeekrX0Y~S zHuTEt{4RfJGR%n|FnfW$H04F&C$+{Z#Q_o4k6>a!o<6*@{odQ*=KV5;T?|hCw%<6I1Z0FP=En$n95EOtl@$#r<2f5zqU_b!*PlI3 z$+X;gXlmC?XU5K#gj5h{BILUfS-}p~tsyyZ5c;l%w$!VGHA?G8$9bwXQM&T(&xX|7 zaS2o~^Xa~(t7Vp&Mi=ePskiMnlt+7y&3AxNetF@~Jh*_R-$clCj%p#0ru?jUV!cjo zCPy(E(aXETBQ6DAn8(~0jn_q5>Z`H>GOI^Zv6HKm)U@?|24Gei*JN%E$(JenU~{A6 zp|DMhXEBqGL-H%S_}sr49oI$;dR3{lq5DT^6X2zGBT_pgs3BbI-M7`S1<4i}wmyTc znPF>A+*%E`7Rdj%G#LJs3m9mCK+uT1{Wi-zmXxzF7@{pH_99=jwlw9eRZJaa@zbyJ z!^*J~|`N2k+s z!2NxF9xxcp(~|(f$mJxYR%B(`rH97;hsXl?%}S-wkP0~YlU=)ft66(P4j(?;-Q7JS z6#ByiO0C4Jf18q$BA4>{91bVt0@aU4$0*#v^fskbe$NIT=yq`MIt(lndHA>B--tBVUEMNGbV^QJEX8;?XHHJj=} zH{z=IZx8HTT#S*_u2KC^adC0iu2nTQ%DB`BEEWraK+4L>y1Ke*!6-OMraIh)kAMY0#k%{*tIMY^yMXxmPqP+m?CYZYh^=co(j-PqVAbHUuJvzA{8!A(%$Q83yZQ0s$NSh>Sy}q}`jpX*H22>C z=^xQugM;VLrRtH93+4j4V%(DWgGJ%6M0WC#Za~3%B-O9h$1Qn%mSlj4tQ)0m!m&Gb z{fl@X>Qqb?ci@1mD=@v@NA8Jr4W%8Eh(aK_pwS4hCr z(P*?l%1NVKc+Uc_H9A4LvJ#i`T1UVmtxHQw&!0b^830~M4zw6v0%PnmG#qJ(m-Jbc z-@kwD*fWSyOP@J_OU3f!M?+O?Nnd$s#ByI4k3ab0g_CSY^6#-9x}BG2CEwTyZi`u* zc%DKJq_9aO5`bA$f+LO|XliVXf;8&%YvJIv6D}?;C5YPS6Gi~hiTCpJ^MNQzk8;8E z#~DrCf($!cYyH{&fk5uF5E+sW9HVit1PuRc6B|;EnQl*slE5 z6zr8N({r50qgU;48%e+KC^}pbk|wYg;mOHKfK`{@ym;|KBoZCVy|@*3ch}(V9)fPZ_x-;A&d$!x z?43z6$(eiZnR_08em4<{8jK@3X}l*VWW7JNh=+B!kpq5^9ZpYU+m|3Op0} z89hdIm(;d(3JGzgImP z5lJl6qQ^oCt*or{?&$2Q5B`7$nUmR9z>pqmtwvX1$Z2_m_}}%`KV2-bh$|b{F3*Q| zG0jTGeGre(E7~Ox>oH!{?f3W)sNol!PE);9$k|kgA5$48APd_ma*5arx#aozH%iHW zR%iKri%X$W!^Gz;>1V!JHfmA_d6H*C*2dOh4yY(Am0Dhbv#o79YnT1 zFW^dp!{l-4D`_;3$T!HSVAqm0*;j68&pqtmmrXr=FFAoXT*NcGNu0CP$m!pBBS)F6 zzpuRmyIMr}9}07(hYl-d3=tOJBK{8W30Ry+cOCegU30??lk@Sd4-6C)7Y~l!ODFDe zOy6g@mV7}si*%-stFI(xXg*QfqP4uSd{u#<(=+-?)nls&!J zmXZ>3N+6!Cz~bYRCiWE_QN8k&`KDcWXLncdaVt2D)najR5$nsBdrBHreE(;J9Ft3h z_2~!6A$h5d0^6xeF!FN0@%7XF>ArIdii=5#9A#8Q#J3K+UP{OeoDLi9wkvf_<74|b zUbhE!8|~Zz0vn&xK>kd{u1LuLId*qxbmI%lP~A=bRz7xq$)(2|$m4Od=K ztRw{Pmuxg+l2%!KfQt1)l6MHpd=6PtLCI1Q2gC$h=8|rY`1jR@XNc#EngvYd>76F~ z+KqlbHg3WdVhO^s z-ezTGiG8iT6#JU6yt1-#lDvI=eO)Y=Ur^wa_N%1NG-A5#yo&%CR+`y6Wu_ih+7XMW zQYvHvqH;bhr$w@=& z#YLqtTgINe{Jylcp~^we*>?Uv(isECScoLIa+ zQCIHt?0Oy{nb+TSmxydCvr@(-w#guSHng*j^7~HSEt7C20N;nSB%Ik)5APYi}cmEQer7eXhjK0PYUqn8|6f7(DW zQztjI;H)R7$3?A?sj1DLo|!vIY3bTz-30QH-Ro9fn4FA^jMUVni44xZzCH?!2rHNL zVt6zn-`6L%WSNDD_Du_B9Iaji4L&s^M3Xo}bdt|Vo4&UbAtA7_yILvoGBRHgz6uCr zlS>DYU|?bjzQ4G{NX*su?>l>mhy+zsR2)0Z_5S?%^Zs-RM##?2&e+)4$jGR9wvaj@ z)l}t~0v3_JkLUR(Lf~MeMq<-r#*i#aS!&W1gKpFK-Q~miTANlSm9T#}f?=fwh&fK< zJI-L3Q>PZaLA^N&z!xIBBO@brV^NWj9Jb3_2M6X!9w-fQSMs5^7j2ghl#_?ot=BIC z^n5o%l^Mws69C7T<(`45sv3b|?7w0Ze4xS67H6N*QCr>NoEq1O@AoYZZ{Ws3tM$l* zDc>vi$soZ@;|6x#_eMr_NK68IPVhWSyjv!lhF5o<{*}wW-{y2PUB_ilFhJU(gh3w^ zaH;vn3p_O21mt&xlhtm`fwm#eu5k?Fx?OG}L-E~oVl8G!U%9*QG-gn;uSK>%nOW!R zZ2pOo!R0d3TRfp#P5a~Yz!@_ZkBv=8&xKJ@wAW-2Mxl(RCCitgXoWf^^PAt|pXHrP z1)8Vwj-V}AsM=uhN*(9rqujY6q*hfdiMpGU3*xF(HbK9HVu}V&xfff|K|e$IDW7q6 z7KdGbR;8woXMOF50elt{GZC(8zT1=9`45D4hdW=s22q^=d0G=O;hETe*NuPT5#J2( z@OJTQ${R4D9Jq;W@=I1w)U7dQ)y;w3D=MxdpWF5UQx=!Wd{Hu1wLLEK+=g;%Avm)qX+S+LfC8r0%fIem+gdg=g z-=Ij(oT4QX_aJ`#(f19s8PH|7)-;kt1=BqkgP+Q%|FrHh#h}x06vfneq&*6VkB^^T z4BV8U$7)7WA8!% zFjGA2;Hf<-Ja*H14?$r|ze8;�}GN}T3%cnnx zH^MCNq!y)r@8;03ZKMIEvJ++a_-0hwLQt@z$Un2Nu#Z`Pekj^m9C1*@!XsRDa07?4 z4ILgvpas0Ra6kcOd&UfY105fUhmb6Lcc7q^dTX}xD!JEG;i8ITeoD~}|9$@6d3zxP zK*)VP=)8Sy`Cd3S<^Q(ZC~^6hGsRo~dGwAqki@j-x;`7})^Xbkf7Cup!1p0Gog}7i z+6(bpXDo{k>4fDe9V6vsn_hnNWSpQfUffu@w$pRlY0bSVDj`@Y*T6Pt#XU#)nY zCr_PT_NqP1kGQBb;hXr*-SuG>RFnkyC7j=-BPV1tAbPJ_9FFLW>Q^r)Yr^vql&K34 za&2Dc$qcQSh$UpqmUWBG!aU1QVb--ItQu*kl>7*Yt}CwjqkoDCRj7PGENC~2Zm3#s z;G)01@=A5X7P10;wwOFUa4(H#CTdP02G28k7RpyyUVbxrT#zce5K^=sGQXg#nyI(4 zYCK*ZhGQXFrS&-Pd07|rUcuaSI?xvZD`F>VXJ*IXCa9UBK+uB-W5M4;b$4@(m63|L zj(otdKx^KGhxRL4Sv}3=n=TOhdXwgHOosNF4=*70dMyPpP5koWKnEzqoMtA z_A>aUP4BH6xamsvGwROi(~nwl{UuLue-nOV=0HLHfv!sd&AcxZ2C8`g(>;xchsO^g z0Knh>tuGu+(DAzw?0f7V|zqIsdwb6!5BAP@xvG{m&bhNOr@S-Wao_=jH;+`<}8D9AJ+wkg(-`3pi z<=INWLy^aq@2$Y34&3+ZxnuXsjn@TDL%+xE@Ck@BV|Lyf25tDn<(ERD>w7M30CVFu z$UJnCAf$&d1)Ut7yvK{Cc(D~6c6?8RU%pgmz;rwKgEnB0a|~~HK^erY43bB4U0R*!LT4{B;XPmN z&^{y9Ce=?XWz5aLg>|!{W<3vD8qKynBYB=@7=;Kc_qg9Tvs%kXY__Q6dQy_FC$;EI z);mMI;*KS%B_2RasT|L0a~kmc$C%yX@?y7tQLmH=!SVjK!G@;N5-JyvOH-}FKRKZ~ zx^UIn+^#1M0BjRskyLf26@1mQy82^b{-mKV*jb`PcSD3nxWK6SS=;0JY(OW5e6MWz zSQd9bKv9EB;Wzt)wv#VtMumS<+}4s3Af)Ve-7j33o(C^JsOasjvq0q&d1LK%`||S0 zX^)SfbGUyxqMpSx_oLfman|b1%tG-+Z=^LY4MWhu9N7FEi6T)Ox1Or$^0<{?9*m%N zPYyuO>~^_PI!xCsp`{MOe3aL3qSo`{-4~K!HKH;*;STb2tXS09wsctn^sIU~1YQ^lmT8!$FyQSm<;;je~}eevmaVFrevm7t0@n(y=NKNiA@N@qNjt z3EF7+RD`D!Fbk60FulQOo^bS7X@3UmZ@x$L%BBahjzPcRsJ zDB@P+zUT?5=Q$Jed(^z`6uV9YC)bE|TQvBl{Z_GBjh&f|@R?P#w6XghUpcl%YBABP z+2?8`WVZ8WL!15j^LLu6iLQMPck*(f3oakK|LC8aUSj*^%Qwqo5tfG@ZH}?hiNB8A z-r{F9B>B{sKPQs|Qu21W;d;mUzpA2rzra!*Pm@)hz3wzQ7Gq6`+s8JDC_9l(tWi4D zb^27^vt!W8HC}ap&p(-1&YHoI4b{oac-NCm55%;hViojRP3^jjZu|0f{2_%HkJIN@ zb#%KyNwe0W?tNvgo@ExqQV_z!hg)Q8?_6ALG!_2+%f-pLbT<@@%etDPsi}Fn4z3r; ztNEqYy!xQ0uOA!~6fHs4$BYqSI+@8mIXRh}oJ=qj8XD^5=}ExjDpfF}^qC@c%+J?X zPWuFl%!ty}0ws)CUn1^x2ZYH{Dfl>xoT5>mty8%Hi7Frkjm%%a?snrKDO}_iI)T@_ zIYj|*p$o5X7v|gsVTvnGh=Y|}XGCCwwaA;ni9!4($6U4^<7TZ%c+mnRCts@4UkhIE z9~_h^LQBi+`+S(g?NSVXoWZi`#W8?_4~epC^57AhmL3X)7*jL+Uh*_50KnDO%{JSVMUKIJZ&swa$ENT~c);iq2CO0p7P__D z7*MXxx-r%zC4wurwM7pOu*JmizlK|1+pWYX|-M`-* z{_4YSk%GP~nPE4~-VG~n+rC}AYDOUh-eA()q+;}TMC5-3kl@IR8~KAfENTh%Kh@jX zJMLd!PHNP{#-ZY~%c=Rkto7MV9U$fstw&m%JpyJ6qhJc}vbPgvBX3ubW=mT#H@U3) z5r%9^K7Y2e_uvDd;^@1`+c7u^!r1xb^+}*$CKJ3rEZY$Rex+QSo=U_a%dMokaVCk2 z;|1pHik*dL6{)}q#RZEz%3x;d$$8rO~Eu3wY!!Ms^Tz{|ZFyyAYfO3d$ zPWrVGg;l)fiWr(d!y*Dc94s!Z%}kNEAFMeao=x$tNt~zizZj%&kh&ya>)Oy+^UhBJ z89D1M^85x%OSxPSFS_hFy0DNd``D%HCf@)%HOXBlZEblhyKN2%o^g1T1rQjOTFlGXV(=-MEGQm8X zYApJOArwL3XGOP0Iz>|#PJAG*lyVJOuUc0{(*Z)Ju1Sygn?eV)l2d??P@K7ho15#v zXQPSc;)+j|gbFr>D%78Ko9(q5Pq;liKyxLEIowIB4>OCEx?3CMz6%Qrkii-2Ht$_BpO*`)K4{ToPfPDMrKadBiPeYkXx=Izor;k4`~>;H`V?EM{5Z7RNaY9dbByd;{! zmKxo^iH`ng^Ymh2Y6=Sr%NInyfq*7eRrgWAWk1slHGD!op}wuUsgSZ5*@w^2_)&a~f_W>QFz zmds5D`)Y%+XrPdM+LCF2RbLDr1!7fpu$0g7j>iR@%=f)7W0rvm1r45ch^kaL4gsmZ zOY#5!0{$%6`!sR>G_v@5-$1^pQqrBBTW%ddkn;LpeSX_JOOPtnsdrr)Jf{&mg*pRf zFia-t>5s++H<=D8OGPMEm#4!^Mu98b9!tEolkvr-$^kOx2Br3oICq*V3TS>#>Fw8p z=8)VZs1cM?=c?d%es2@m{fUK>7pZ%T)qe$H{|A}6pUUciTmAZ0Ufetbh2=J=c0h!c z(^*N=)ASJBX7W2G{evUHE_vw`y^@>2Co~2jn=06-rNiLmr}mSuTIcH6q2;E`F$a2u zw+lfU=*Wd1GaffKL~a&Ut%?~o9zIJ6tEG={tYQ0?3Kj_Bi`munfg}UjJx)o7^jiJ4 ztG;#5NrU{PRKFnWP@_zlOlLPliJi96!5P&a-tCqO>=d`ig%d&6EEsvUhI%^r*=k&M zbGc#-a`>h_VXo0Rcl;kW3R)Ga>~Af-Mbo$OcuZjwIenOo={xIh0{y+%Fm0pFxl>5p z3~q78n72sb+l%$;GX3+i$j8y3b3PbjNJTy#6&2;;7~gowl^M_M@OZTiDIUwo@qJ&* zawdTEREC`Rh^EHIWJ~7E%*~Ntp%cmL>+2y7b$5SXe6C@}lC2}B8oo{G`aI+#K*+>A zrGo1-;4bo@*6>B({5~KS;we2I&Kz_nG$c)*`ZTt)tyDUCdqrf==ZdevpFVvO7Z(R+ z{iqI}q!_Oy5MJf7KTnDP$q`OISGDr zSbDK|>B_0*`V zT%jSCg^^y{rBt%$WN#;b4Qc<7xK32UUbVIm1iGT!rY@LSlmeuBPpp(IQ32gj8rkpH z0btS@lYA;BFDuuN&M`4(T@rBN)+x>lqF)zjPA(*bBl~fNb2I>fCHB-7~IjZ}R{E7Fv8kyCgiX z(#wiN2Wy*MS|7rDp~?Q@c~uEDVC(O}st$4vzpbvUWWP480kl-XIKS8+bF>)Iv3Q}H zBka_5*~rY`xIC|_HMrR(m7Lyy!)6Iiw6Nehw^dO_cV_tyHg^k`aOZ3<9@+xcLMTKb z!j(DI)PclFiazQ3W2mT%?uCo-2gJkQN$M<~%C(bRM0T%eMiyd|oUoQKW&xkB)ts8TrZoVa+pr&q)xcl{8YCLL8bV>bKFoZucf_g~q z?}rh|b9}ri#iUaBt#cMCvVFDP=i==AC;F<5y{>}+!(4mOl5LiaAz21eN0m-=b#&ai z1s8vxm=D{muW1<(-%&;aIKF`{r`j4)Nq*jTy(g{xPM|xf{yn(YT)7zBzt-R15Agu( zl#~Z8huN%dONNcs$zoqyJg;}k)hh(Rdr2GQ_AZrj!9V?TzjgV&`vx5#AV~pY+20MI zli!T8QrhOJFfSWX=sDeNJx%*=c*P$1vpp|oi)4#I)LJK*UFH+%5T~-yZk^9`ch-}E z(xTw~+#JO&x%75@7!-St%5OccL~C-$t$%1Et?Ni;$Z97QLRYwiK_KYp8ZWxLvX3W!#tL zGSX7S)-%^)nby`vq_%=<#yW%&V@#-D?vO!5J-^g+BuYrAgCDha9>sjy7jD<;ytVZ@ zv?Hc&7sWWwD+HTTGHb-$Xdo&JG>gCf-uEjMrjXQCidxtA{yfH6|osT!}7M_hKT@6LyD#73hup`}KdGIe&l z%aw>yJp$*Zgh^|!3aGVlTqxz8n*iPb(TC~Gd_K#{FS+lRiZLFP{s z&n6!5)m)q2z-D=eNYcH&&0lk0)V=*h#re`Bnd-zQV?_v!n8;N3ON=hK@>m_}0i{x- zLW#|)QAbcP06H>kn_07rUw zfOm(ox-|(xqDdeYhVQq5T2QfhhvXQW>m?4+e-uSHpdZ{6c?CuC?b|m}QlrsdG-+vR zSws5$Lqi!K7C^bUU5aTR*6x-zywc;nY$R@({1UAZKC-&K7~@^+EgS(ZBn}ovn(@n; z7CrJj-*Vi$_R<~?PTsS*U61zTG}_;vSM97`tfrWLCHpsD(#mRe^+p*2zhx9Pt=tDl zwW$KxY_IN)>R2gcX1VD(hV#JYWr=Llp`6upIaxK|WyZi?X>E6Kl;uzMof851K4UZ; z7M?X(I~v(#InaHk`torGd~PFrvWn!bn~G9O(jlE4{r z!%4hn*Y(5|H68cLFwB++x8pPlbD}`r4}$fks7$XL4YePAPMsH*OLkMoF*2vh%zGkc z_YX7$A8R&;D@GVp;t+DU3m#MqV8(90+~#&h!R&>9Oh%SToVBsOeAOdM!v~uc7>B_* zdW@e{B~~(2aH2*;Mk(!CksFH|Njw*GhmEwR2>2_%;orxtH6iZ#L+ zoD}SS6_JlQm(3tk=cZEa(^SmvkT~+AsBhR9jv!orEs`&pbgN!})XxfKRDhK{VXM5$ zohHqO=;yF0UuRAcs>i9_tOaF%l(8&Zy2wdh8XNvIcvG} z=oS{=LXM_E1+xmv)bMX9f8hO@HwIul=kMUJy&sMucKVb92Kw`~DKr9S1^YZ*laU9Urw*I?*wyT|&T(z46B)MH`>K`5CywC8_mN41P?<5C zghxq~{I<-Hk?+9f;$QVm0C*JrM$`0*-s1BmU8zJTqU-fY97?a#SUEVTU!HfYHiNjT zoR{rZ!B8(37Z(c)?2sNxU$`VxHza*2udrF28d+j5sKwXE`0E2{=bW!K1J~C@L`446 zn15mu6cl7-O`1BykC9NVe!Cz-2JE@W#dn96oSxK~!cKzqreN3r=m@Z5sZ18y51a3A zp#BI#=?3#cL+GuNWV{a#cne?Pemt>C-13c zwhh^Bbtr&^4kGzEei~WtGZu=`D%!JTGuzhKmVGRJ^hmwyi!bpA$knL$4-R1u$;VC? z#l^%3xE#CZ9RiM~^HhuFtTNE5n{;1Op0W+9v5`U-|7h!~0=+IeR@1}VD++A*c!t-a z-0yr2H$lY}-|<0j{xd*qV2d{oE?!iWC2I_TAaCmN2FOJ4{@A;ATEeWZP4)g#O+309 z*XMnNgf`#^E^#N$VPW?^n3Wcp=FqetTz6|qhXt5Sq;*h<)l*LTQ_e2ydD(#S=wwI$ zKQ9=lfW0qzCz16T7Y|sJu0=yl=ilTq*vu!tA`V!pN8Y@66ZR;dKx)_DbF6MftyW9R z8M*5ZkM@ybw~${xC?Z5PV+ScOD7n9B$&?AJ``m-y0?V zq||j{1Ez%r1d^$XOEz6DDf(EyoH>$Cl%8H@j!ZV>r{YT&(wC2n@`Ccu z6xu4L%bep1KQR1Edm3k+R@19ithV$f38$cHCf+KRPj7dGonZU5$WB#WaMPj)Og{2lUs6A#eDcsZilBVD2n6ScO02FWF`sLf^L3YS_}xQ6*a>VQy96vh`aBwEjTDb-Wx z8)g9Jy5L@_k69$_)D_Ng4uZ=6GxtFOiS=rPwkO z)Z=T274|h4=j{UieT`L9H;o||}c_3LGCI*Izib}M^ZbfycOk$x-5rmvMn-~MH zLP)ekn(Tnf4iNoBpGC}IifeFinB-Ki(Vn57 z`~A}5a`><{$0$`a>u)>$K5&zHHF{H{yXoiF8E4oYG|hy(=|4KF$$!h~7m!!x(4}*} znQlMf41wd~!c33K7iyE+-d*a}7v~c1tEZ=XWK-xNcm%i8&fjBxFH}_2xng-@KF=#i zcUnd!vTY;N2&bqHKS}#@ETTSZhZi-7`k^2MG2_MPR5lGcy+O>}szEOZ zLSdMjngWEx#QGtSm^^Y)Qc~N!wF@Tk;mTXAo$6>{nPR7~g=qu97&KHj)D;-ETGiuq zr?}4yCEUlIp3)Ap+l^59fzRI7X6n)jNu$mV(j&LBva(tH^Q}Whm@&0Ntvo+JKRP

`Qigi+=amw-}z&)g&=?msx@JRQNl0GD-qZJt48BW8GX z`c@tTpEi5VS6=`+65M~#75j_VAJj;p#)p$RqN4D;T*ERlM0H*^HlWqM)030g+1cLS zUb$^2-97;TI&2<9>T179CqjroNXZ_^pUE-6F#2RPiAi%QY=w=hfd=3U(&XfzOtw?M zXY7Rsq?oa%cX}V#dr$nRsGtKhz;}QSXH!NbRR?9ruPFOeD@Au(%7?CvRZ+MneQAsSadT$Mj0mtD$M5Eru zZ;ZqJzFaFr3GKTqgi(E+MgQYBJTC5(r@%sLH@&2}Z@}aC;_k+@StU^8+Kk&3W5p%3 z)cX9`jnPstw~WUQwNAnL+*>?kR@dh*{0}*~)H&zB^fCHCW+f*^VlDG$I0Q(I5T0v* zKx_-LWS{;eQsZD^cYn#4HJbxPUt{yd5)2#~8xK8%i>xP zZ#xpO0|7~We0=bm4l~SmYt*g(OPG@TJ=v^$-p2o^(NXzo-tD$zD_5gED~hv4rE>PU!HF4! zutYzENFbJmY2;r(7lEHfD+K~DEgZYPW_@B~Hi~~QoIQp#ePf4qXV@louOZUk!BNn4 z8~QK#>kSxkDn@L=3Hyfgkqesmo(2Nw+I|S``Odt2Qi=2L${}R27|3zTYMJxkzlV!{T4x#>cnh1xG<^AK^hr9k#JEiBpvd_HO z|DFEs@6oh#9Ps}CW1eo3|1!cM=>LB&{r~HfACL?vVfrNPZSsT2V)_4TO-i)M=kHMr z;Q!r&X~6%3r~V%QkFx$}Yf#W}_Q?L-BXkiMSl}k^fA@lPp7l?Y`ewO>c9o2P&u3nzMcWF@~F_qaP5-NEleSA-UR>m!W0X$WBM;EOs99DhW5zr9HZ;< z%9V#A&Vax|E*->w_JyAYr&4DKq5lB~^cu7^B2h{=njggrGU(9r_xOcD>PSSyZ?)|! z*esciDeCtW@tMck>2FC4#-5P2=Yws;+OH8(Xncx@e?*B0zmkFme$tRunHA6w9I$@2 z?6l!Gt2Yqz^>DmV=Th3~W~erYOEt~usP6mvOT6SeOlQ{}*ox$)`Q3W;40p<4{^33w zz3y8vrQKmTKI8ANzR-~RoGS{aipTqNQik|=!DLMBna;_*Z|FIOX&w#h{mFz1e$3u~ zRU0LxysLr#STADrt{_?YbIBQ3S~1C!u^|DQp`h2PMDjuxZH219<10uI>t5Vod>U&* zszt?qzuFR2ZK><^1}(>eQ@dFJIa2r8qy729f~o6%g*O93-=TvIi6i>-J>d8*S5=p;AZdMlJ2~a2FxT&#%&XLp8_q-B4@br`4D$qB}5r| z+U$RaC-@Tdl#zFE_TH3AgAfmn@pC^uO0b8XUfk^bUAHe}W#V;nKv?ze5L%KvB|U|TNTM~ zo!ssk>W$^~Cl(4D=A$ELCFJR-;<^8ZekA1Z(fMhS^BPYnMD5~AWXjZZTt;PyF+!5Z|pS9Dc;F_VL!hVBTQxMiNfN_*;)M%hx{XO5rhqYL(~e+ zQZ&%5Z5i*rCiGjU7#$4awQ4P3-PGa!%h@7Q3gVhJC+Jic4(#TCSXh#T``t+`l6oZ_ z6)?8>v;=gE97|;+r;kq3Nlvd7E=d++)cEJJAM*KE?pICJ zE6Wv-7idwsP0;toB-$Szeuh_T1e^vKQdr!IQp%-s3krSx>MB2AhCM}K7{Gs+#)(PE z15!RX>V}(oTRdr`t2@EDeB4(yh?DkoFb@6(h8>IZ+dqxVDFz5>`dtqR`rcJnSaAMX z-phGfwe;6yxcTU3H?)YMA!vCK&!it? z(J~+JB5QvX!zZ2e?g1r}TtB77eIENO%xL%BY^5C#}lmvhddUWi&S__~L%5(fq^ zjyCiO=8V$WP>K^{rwN$WVMqgKFm5@ z-KpD90?_5|!PT4c_SW0v_QKzyQsRi|p#iro#(Cd-E;oW(8rfrb5+Bl9>?eL1PIgoN z=bqn$DjL!7s!AmEXyj*Q2p`cWfBzmD3a_xep5CM+43|ww^hx3Vb z=Gmfw1yW<906-uO&+E#@OC4U(qELjM@6dpcO|_W;la(>TVeW`(06S3jV>b=c%kFD? z;HE%VKm6#_`3qxFUZ;2gyOIiMOMA>*;f53{(1h;6R<6o1`}SfidvqRit&5&UHE4K) z+jn~hn-$d-{L(&^GXy`~jaTRYv~(=%R{4?Q0R^vZucega6Cf~8z~^wvf+@8DCu9-| z6%Pgq&>gfhnj$KR^yOZLP&DE-JkD>lbI;Y>%Z;Dx2KVOfc5a9p29Q*LKgKj)FW^V< zyL$5V`1!V(?$>>#M79tmG57Jnzz;M5GNX^)1yx7Grw)*;>GHT@6J>0(fvLVGU)d@* zGo0#WpWCYo_MIc!Q*le+BDDHV3HN>SA&hJdjbG4v8>oQ8uHLrsyKUR~htAO_g08!m z&3Ee>82Ijn`Qsl;JD)N3V7s9Kn=VJp0Kk^i{y^Nu>tRBEuQxlXd)&{=_thte-&h&s z?~3&i9I`u;gzqAxg58obJF#&w;3v%jjl9JjOg|;gGre`}U#0QhH%LDI_HtD*DqxTpas<2Mr(8RB(v;g0ex)8nuLk} zpl)jqe}Q9wTcOaI0^4LeVc-az&98lx_{UNEg}6jSqtUG=R9flwriKi}V1Y~ zadmcZxQ_O-vx=>@->#t%zH*yRL_wX;nX84W@3-f5`ID;Is_Ahj*PWiuWfLo)!YKiz z_zOOIZD)Po7^uu4CYPx4et(15#M{Z^n-!~5!!kXv?8pEPqVXUo9g`_<$aFA#Uy8Z@cFN6Rw;Kjk`rV*VR>#PH=&N`zS2|9nSTR5cUVAd$_Ftq)Fv2&E8CIR)1E)j2)MSSnxZt2fv1m% zXbtADU;YVBPB>xdP}2nil0p0PcRZm9cza(S<_k#$)D#mFpF+i;07BifGn&;oOw^&j zw+pMuu+~S|{<9v4%xsJJaySX;{r11SC`K8{nTZs}J z)C1w{;fQZvxaVyTZ+{*ws9^TA5q+n8qDzAU7mqW#oZGWl0;A&uOwEafK!XAhx`CD) zTdCxBV;)U{P0dwigjgIaPL}80#8FDe6kw}!QIE~R^R<%#VC%BF)$jGFquuG(w5R}^ z(lA_W>D;Xcy68^W(=AkciMjrJ%OCWw67JLzI(w98AMc?Ur-R4dZ^G|b{Nxn!39 zd|S`YqAuki`|$4lI(t$*`HRTUVSfhY29Zwl-TK;>7#L!|(p*Sc4@ir8TfeTR5LnQR zslJ-KpIcQLR$2CT6N3yA*tIM%Z|Zv@pr*6_EV3C-GPda%kpxq%zGe+uH|SfHE9n9E zPXKgxRAwU^Wz&%9GS5m!7{V9aT3pU0$Rv4ka(GE{V&Foh>PH72N-8QsvED+|N{N|; zfk$D#4;d1RtI{p!E~^()TAcm31q=IAztGgZ9yQk_J|Mu4%7V)OhXPb)MR{$SBLZ%} zu$2kx`Bx7=NAcCkSYw?A0Dz%r2$aR|S0Zf$_{JPPUkYDZZpjiEysz)hOCdy^JR=t~ z3FwALmxgOluK1?&G9Vi`y`n9IWwQW?Te$M6ep#BGj5Gca<7KwOHq>Us-4odlt)!DmDaj1@2zZo#UKlk3S>wlI@gx+xKRqDy z^>tnlOu$d;PX4Rr-Y-tJs)O5P;q`3hn~(IaNNFAP9OF;+&+Ih#oL`Vi2CID*f0)*} z`(=6sNW#KQ@2j1%!GZh@pr_f;5N@mW+EPh!J^)|zVRrsMEg86t9^CW99G-+%;mzSqsGSqEH6=Wp>GE&6o{LFKR_AWxI5_j(Vl`PwBg8+;*5~b81)0Y4X>y{W zDPCzkiHu0%qrP~KoZegFo*tZ%50^P$w1f&wLm8lNeU+hQvI>b0kMkkkJLx@0Ek7^u zc2m~GByqd{)NH=@C3yYah(>30AxXLDpFH+8@l)8z+z^_n6}?}T-8gRpaNxDbk?M5y z*3B#?reSk51f4tZ(+Qy^o9yVD032vjB9#k?h{Q-Id_qRPB=3Xy zY200XH|yR~D`gH%Q;N+5*hzQuy!_I1!aFtFb#x!VR%WOY6kzM~7CDbfx+Y9s*SvPV z9q}H1V@Y$4TEYjb?;_t16}9WO6$r(x&VlR1S_(C@fmSw#gjsik1LdQ-F^v@O&F&W2 z{SJ$~U3mOb^Um8*adC^AvONx~bISOF{Mo)=8#!pA+=+Ny4oFe}5%WJV_rMcRQ`MBR z7lOeFPe!Z)C)`$7cc6`HpwH3H!k=Puh}dMwb{~}`1XodBOfF#&tkpubemcy!dO7&> zTj?sNLvpS+hmZ`HgPmpnw4XtDS-M~yR!p`-1q+vughX^VKa-R2b<^JZz>yfY#2N!G z`i^7GArN}%H`k^MFRJY-rboLuyEtLMS$lA*(>_pJ42@TWV>2R1Mmd-R-k#MzS&|+u}euwc!?H67#@Fgx5|&tcVgV zjw3WlkJ%X;IKd&-e)*fxpd}TrpHo&|IIBvAc;K|)dfu_A`P-JF5M`E-{&+iq;LF4Rr7ZR8g_s*G+PK-;vpB|}W zm(FWBA$Zp;e;;h9-S~BDn+}AG4-bX}&F^p5#BE;+qn2K<4Wm|@7B73JmaUvWDGFbsRcZ9@-POh;}- zQvh?Tf96&q2<7+_do5D^yvZwTEt~|V0xtfP-VqLA(iNomgz>jMg~CLHC%PNheY-hZ z@52`ejxn>d7=Ve9l)qj zG~_i@Y2ds!lq4x2{|%ZUzNHN%0SX{RcGywR10EtP+bldrY3N>Au<0k!RoG&)lyiNo z#T2|m^tXw)d|5KcTAa-_8en8GvJtH}AWs6GJ6H=oq@}?LX03trix-7vpnaxDjRgS0 z-V;7v3624yBS0TiOX|G-9?t#_Dkiiu45J#i$R<(Cdvkajtxz)8vTDUwHzXP-G$hCA ziW9ui(*?2FSqZ*nNj!;1b}f0c(8Nhr$;)ZR)B!K^Q*c+z z(-NY>(b*aKmmhVVtp;d}?cjGQKbzq+PK)-WDlBjeKK9Yq`7iqXsi}l@PwUOq@VHRj zrMz$9*8#kx6oen^-;%+Tute|xrKZDuaeS49!tNf<`6VJX_0iR`_rEu*%w!g$Fzh=_ zLykKgRC;#7t3&#$n=OzBG~F&ZbBLsEOu_A?sqfs}`H=rb_@{v8@6?d)3^&*5mqdYt z_DaUxF-EDF*cheN^0nvrM{)@2tZ} z<&W50w(`P;6H!&*7*y8s<2C2CBX#a4VWNdq=i|ZA)s1cF z6!fRyDdT;Q75VLeHkavIysnByXCeNr<%h?6Fi$wx_g`>EdA-IWZsPmlO2@MBs^Q9@ za>+YOnkx#UeRl z15VIgPOeiw33+{SSd7=evaIyBd{8RBH%j_!`b^|Bn%ZJNyu$t3T(Z>NcD=E!aYo9S z&NW5(YBN3?jYssDITtBcb|L4Q$};753e z1a*|RY0F&MtxG@S1!56dCL+wn{Vr@AIT<4LYyRA5tv3343V}j^-t*VRwuxri7%t$? z#3|>Wn6(OWa`Jp*DT)3F!H5n!Q`0C(1&-v>9~suO_qv#7XC09SKk)2x1HWCbjc`_< zc9Na$hhf{K@4a4q9X%Nz9X~xesblAt3&#fL_T!XVeBLj4{K>@4>h}-Z&GCt!0)-JM z%oNhPT{(3bvR-Adem2CiG^Acmf9tk;LvF}CupillwwXSj^$fx9r#ZMKH?{o6{*pE`^W2*NB;6^ z@Dq1Qtd%?Q`OWc{FW_n+Y0Xe09*>W9lRUBXZ^N}}){F$QjyQfTC+C}3(-g3Cvkcs1 zE(I4~<&dKqM55H5XQtdRjmUbB=QQQWsG3w$2x8Y;=r@1UOB(BRjp(+Z{@1)EA2V*fOnLpKAXz^v2kvju$FLnJEv)pD@Jo-!Syqr|Df^|)AQ(m-1 z6tQZX_OgH0ZjXdT=@_P#Vg+1Lnc21>X{y*J4aF(geW?!$S*58oT=`n?C@kvi#>lDu zFEskt?hCo3D%=``-;LR@s*ChSQ{O*MYvby+cI9s1m6E!Oprf1b-OTJ&S@j1ta*b5dRP! zjpVPFhzKu3GH;X&+~nECbAhizRX34#q71|Kx?{yi|4F_f893oMjc~$5o$U#nthc48 zKNT`2Y`iaQy^9-b&@lWQoh@@V%|<$iX$oeuZ7_EBMPGp1k(f6<_G#%)$$J;zgDqJs*@j+v~d6ZY_M&uJf7LE z1)owBYAmoKf+OL%1^#Gxx<`Bm(~<|dWUaXCgjqTjRrxv`R;!QujCEOVJR zV+sIvJ8&K8emCv>exXW1LLk9vidpwKLteqeF|H@!8v_SOajl0R3Ux+f7W@lo=fI1- zQ&aC$w@5_yb`upruOh8>TJb-=+^_`VoL~QxkMNd%Z2ajz_?TxfBE%c3%xP{OY0q>` z*oymK40%@j{J|GMKt}Er$$T52T;As=v zI*!VSzdy{=RpIZu!6+x=(f=D=W$D@VyA-L{#Q$>%PJa#syQf#HXmW(;SI{8dB0}kl z#$9&>|KDYCol_8Dc?BE4jnXO4tmUr*N;Lg|z!hoXP+S74fW?v0H}ZI&`>53q4XQTz zFTy<;fUGdXp+HlzC$}?9tqHe8jQjOMLSe8L?=0;!K9s-&uzThIald^cLn^v(;&-7a)cF2Q?GWbWw+TsoJEBDx_$5| z^O#2kQO7q=J$B&B^oFL&djaoMvSy9>Pn;4)*eyVzsfxG4Yd>UoHZ( z*jWKi4})1{TMJK4L0>h+wcsEN3|a$?>#f@t_3AMbZa4SCOs+5k@}!v%ti!TLbvdpe za?+eWsRkuOx6E@thOh59@@bq5ZFH=WP6Q_wdy zgRZyxaEOPA(}84y+^g`AILNCwGw{6d^(l0TC3@Sdlr;irmCNsD5hh)q*UIPku`9U+ zpTjK)U98lZ+&W#AmKJU?4l8g04Nis@8(U#UB$1%E(h;Tw{j0A!cw4MB2pS~x=aXNs zt-|PQGK&yiS{BR12#OGRwY*P;b2JPtjeJL3KD1raPRl*o)SjKfai5Tb?`?w-VgH3P zG@ju_tOLqm??}S+8 z5Zb}c52pLI$~V$na_cwT9`)7MCWPicSZyS@$FZa8CwYJjTWqPXjP_@n4OUyG375gD z))%WiX0DaChM$99`mE6f^d7dHnnD1P$x7U>$qq|@9Hu54Aj$NvARxV5><3i~PL=IxFn}4V&w(wB)cr1FiRpuI26d4=a2f8Qn zszzNtMA2Jz=#S;UD(a(2>E?%NVkr*PnZpTv# zojxl5z0t2Hvcxrqb_2Fm8fFs9`iE&xq3JkP7p(Z!^Ao87hk=Fu)D)CE_F=H0F(7tF z7|qXksrMOoCVN=|)K!t?Es(c4a-a1UxH{K! zo-D3Y9%KoFg`k7|L0#jFr1R}__p5Cl#{ZN}ocU){!^@TN#$SNx?%|n|2n_$Hmm$Hu zmm4^M{9>)IvT{lgZfLw2-6sM^r;ILN+16Hj@Ed@}qsuFjJ{&ksHn=~( z{Y9Qi%pxqPRF__9J8iH&P@z~Z%TK7NW6W2IT*1r+vWh-D7u&y*3@W-)s^|!?-S;66 z2D;l9BG@|!TQLzRt_j{FJX?02P<+^zfh+QcBELBi`0UBXBusbIcCxN0kY?0Q*?-t^ zd``%+Os!B`DXUam5!m!PxQ`t~$mF~?nd>y?d-g^6WtI=FTMZ(VTJboIVW5$;mhuPDF zk(0cSp*FG1$9&Fb{YSyujI8^FOTSy1PK7@mHa9kAmd~domk0@YUw`Z#Y07I^WSiuy z{dD?UR`|y3j-^7w@oi(PKvDAf#mfzgA$-_Jt8bKy2JewmJPe+?NZ7kOW^rKO1`Sr= zO|1J9VI(AHCS_#N#m_Jnhkq~da|Pvn?Iid;UFlo*?Hwqa$Ccub!$%iKkIu}o&BG;a z9v&W_>vN)`_1fdB<=W%Dh1hHX@a03>b*8|dG<@D>uUq`%GvUIrP{iemBv)R}-z-44 zQggs#P9OuzTEBS&B9+#9Z;OG|I>>*2%RzOHXquDxZn`rAYGS>gdIyoNI$R?m`GgOR zl(W<-vNpxHc2=v2tUUnhl9`K-iHesgk_B&Yn@Jq$9q(IfUzjZiX5e$3#^sB44prf@)G*aB@Sitpk1I(?`;``=0D&5Pc{)lri zAT_1<;a=F`^fp?jUaqxG+v6J_b_uITwe+@AeI^Kkyz z?k-xY1UW5!$Qx}-v*PeM)V9a8gZ?!xw@L%k5qr1P+d;?I-;S^EoW5SIK9}R4;^y_| z4eT)*fJKxuDF>qwKjUNFp7*ZZUcKt@7E9o;$#>l>C%)Y?O$yO?DLdf6i|-g{lNN6M3~78Ir4hj)hFxlyJt)nZx5f39zH)u zx<_774L{!xoKmgX&_?pHS`ClG>+};bBt+Jl71Ws(yf-|&VI(P+!2&U6b?(^8JL@6V z&a4Y`zU*Gyd<`3@US@CDCVDAPs)L(bXTdgyf4w;x4akS-FVR-9G(At+>fw&bKIk-= zYwej&iq!(yv|PQ!3^N*jOvEAcrxAKOy(lm&NPg~YRTzqn=Bv3)f%djwqbR(roZYXC zoKjLsSuIJtera^hI6X*w-iX5?b#HpP(DSe~Ow-bs&*fA-bxIX{)rHBSU2#J%l!Vy% z`FK5FAGomJ`W?PVAmmL%|KjPIMj!*+c;=aOIX#)bi|y&B3jL`bc^MOKNu(3^cY6Nq zaU{y$wdnb!;+JigVC((wp>M(JP^pBs2F}i6L>ALoOs_A`K`(C7Nv6{E9q=`E)inA}Hr%Go;~^=g8t8+>tL9tSLofaZ zAUg8YOkCu#XMWdF9d$|Vm$c|KCrpGOQ?C=x%=ly;PvSa)(d1dY>Q&h~B(@~qcurQiWemhqZroHIcp4@~lBeTO z2$#N!RY2bunUw&&~wB}bzg#L;;- zQy&~x3`Z(gaptupH&7&z6vVNA%YPuPZ%b3SPhTEQ7u}UvBbMR!Z5+ji?==p5Xa;$Y zQ;S&0s_Fn3hiKMBtD;@0UTt-57PZY`Iy4K&3ELvWJfwP6Pg(drp_Ed^qX;AXKbZLi zs(Rf3NGO@G*oD@0miHcRpL~*?c5i?fq}>lESbSu7pnC`_HV>iC`%xBcb%`jkk{wJ{ zpoaEL=jE!Ejtf$kfQV4yRP()bh7Ee^gl9aXBJ`TH=$}S=ed#ZJ=jS?le;#&?M17}g zZl^fgU>GaN5W=9q%+gCHV=24{QO*eoA|k>iQJ872``x0T+b~_N>6plN*`3%@^zH<6 zdr>qajEO%n8p6eOi+?kcyy|Bx%73M=Wb?FIP(3|w2N3QGl5H|wSThhj=tgBTjaMvaq9t@ zjdkYodh(*wD_IT34_UIs3Xh2{?3@k^{n#A>b;k4UDHdjr5p;{ZJrya{-ulse=j@lVZpujXXHZoX+3U*KdF6p~t}LEJ z3W2m*6O-Ytfy?z`^)iGkCx<;$iydM4P7jL#@sNNFOD&K35>EsniL4CrH zQP8QZ8GW`>eOY80^kB_?sf*zHOzOQI`CQ7j`BcZ?vv(skC#lq_Pwb^{cwi!hrM^3r87HHeMUZqSFcW;ec$s)5n)vYz05cF} zF)sr;`}h_2@weSuNKwgkgeVoT0#`TxJ9>S8iu|)LowP`40G@kgYt((Cnya8L{h;?N z_4e}-wF5({=6rp@E4I;9zOXmbY(fGhiFVyhv`<$8QuP*jm%rhz`AS`6iQ&&dM1a;9 zhD7_$b~0w3?4W&&r^zDV<3&&3kE`RYWpyQL=@>Ns2U<0=K=mpYyY@LkXU6o;p7yp? z1Gtm|$SCrf8cIXsi0Ph;gP{8~gs|OlO%vU*6?=O(?_b3N{-&fQ!k^tqlKd68S1 zt>L5{>JY{glC>iL;&drgF$6yo1hMr+ zomX$k>NkP8^;P-|vFCNJsIey=+BX4$1sCA)x3yJXCI-+9pZRajVBd<+HY*4$H@ZUs zxxr1bM#XJT4<;Y=-~z8MoeWW)Z#LdrPq8y_hnY;aC1g~=Ssv{c-?{0|~ok{5tTpx-2dP(rv4#os}`%;s^D35Q4BLuFdGW##@@nFlz*i8e! z$EKaHjE?5YzY%dMPr6cCb-#{5{0Ri>llrUR>r^TB`A$_Fy@Ty;laD!qbC^iJ4lB_W z5^pGFa0a6dV*^tM#3>~0w+^*y!VDdz=BHDF?_dFMxp98WWviO`11-!DF+yiuh=n@l zkCL^`Vq!npbd%m$HRZE660AQCHDn0(wj@4KE*bdL;h-gWfbj6pyPGBTJnO8H0FmD@ zY%USw+CL(4#(_(l);XPw`HnQJ-U!098j>QblVpi2hLw>m{HEk~Rd0sumONY6qNBudJil6AILqc|f}@e2Od?^1$4JZas|;6?zP z8I?S@%mvZJo>pYVedO}VW8`Wjrac#sP1V656-D!P>zttym-s|gssZo%WCDd9$?*3R zRwvORya5EiH;|d2MkRHa2!C?*=#l0?6T$@f!UjH8n_bzs?nO^)1#r2HN@;R9ahmsj ztY8aA@~XAc%14m~$Z=LsD?DHMWjVFIf8TEeL=*bbrON;!^K)`d*j4bF=g*pAD>q-i zvnj8Oa(ZO999?UT+q*kJcb;_Zi!Q=vRp>cJH?;~V#>`x29HJu|OCIjzJneO;^atk$ z@k61NG@YsbHr;A8Ak(rnI2`yK`MDBdkP1q~mhknFq%_F)5AuD;8ROji37gqYX+A&f zmRySBFXHvbC;$!sN^&2z0~Oda*r0%4u>^kC%O(}3<^Z-Db_ZBxY4QbkZm6Z5@EDH} zhMRj;+Okxx{;2)xJxF;sM#gX1U{ZNWBQ|E;25om{pa z%6_G;B(4mrH2=sVgfRjDRQ!AWzq;!cJBDM8n?B*U+345-xuUoo56gM4)MeAi*|36N z4gE%#CN}kMjW~?l@h2ae{11QJCa1yxA&N`jJ)Oy4g_c#{y>Dv{&jBF&<-Dq?xXA(< zP*xjo%i#2%V&Vm)8~U7b6dx>OaJp$ujDpc0L6A~|`L!;GGZNy&U||ifT*sircKXcE zCVaK`BLzv#jncdkpBB`ErCYVicTwW$Z}c|jcy+B5m0E&(>gGZj4upY&4ik93rdF=U z;&=7TdqCxAG&8=$g#u~dzyeT!dHV;piQGt{3>htV`}911y_BBJProca{CTqY%LNcq zQDu|Md2>OdDI}U)vF+mi#n@UW?aP`mxaw=9P=Pr$hx&&uVhNf21d)OC0wtN+W4GsB zd`}O{!z=6WD1#_LGSFB4<0n(|;*HDP-l=$>s984sa3YLGmE=!IoeK=f7>efTmLdTMXTEPUO;C*>UX!9P?~%~KinL85jmNtIMw zN{5S(MYbfXfe9aFi;6jbMJ3?lSN-+W`P6DFd5i23znOmXdFQI!3h$-~goFwq+aIKJ zl5rE$7bIg50;)1rLZS)9TT!~K2e!Tt-C=8h)vn?c2Soq}_sfc!bNxzp4Af8=*|W?~v44kTHJj)uB7cl0)I2!+h$Xt7(Bi(+DIsDnJ(yS^llZurCjBkbO5a zSG4YIHFit(TVH%9pIJbO`HAqzgOIh;=7M+TSHQ=nq^@;J1b`L+5%tSIYh35+;Tay4 zK!>Z*GxYH8^26v2Gky5%ZT5%3{o`?8K)Kd+6Z!pyE?r7;Cp~?N`lpV)CuNRxsIn75 zPsK0>;ZEh%Zy1mw_T!{osbh!^Mz;syV!^{L^aezOkl0&4N*Nf7)-rp>S3i)hmogVn z)FlIaC=<0)j(gr;0_W?goUTLab&faaQQ(-P`rBQ>In6?0goz9@i}P?W9!2nr8Kh2Z z9LwO*>NMU-g`Iy{-ivKiH}b-g&HjQK_lM78FUBL*iFl>WYCP^r{6)7dSAhww)D(@w zx~Tt8rHhSLs@PY@JC8*gL!2-{^?oeUk!_K>^4m%m(%1cnOj_@aUN(tcse=0QZFy-C zRG7LNAG(xHPa~EW^>}UXegvvMv$7p>!Iw0W2NmAnDcU0&O8}@B@jb~%jf0~0lS&^y zEhD>@>g}n}U-OoM@i>L;D*)&abddVcrHkn$G;v; z=?uuwj=%@2_Cna7iFlm1oxvB6tgaZ=W)$j&-vb( z$Md>0`j;W(pkJY}jQaOmX`^iF$XNWiix8U1)EoK^+hV2mvRXo(<<>5M;B4LV`OWOv zcw*$lbG$!ygvqSdf+2G_(%?!ON|*gSH%;RA2`U{IrW6zVYURgMzSoaJGahZvn8ACq7W%WW!g66R4gVtXGQVw*EnJ>tJL8scbxY)2oB)^%7T9_D zA#oR5Rd;pFY2!A8xNH+wBv~T1G1gkSz~H+gyAZ0pCvUNBjtu3cF{X1>tP#-lLG_(k z;-QAQ4`P_qHJ^S@d{8s72Bkj#4z(XGeM-V&p~8Y{9fh^~rCXvfnk5!MzE>#m3%dSZ z+Y!lbB%k*zNuR<VXgImB+Qe3o zFHkfomKXvpYxK~P1AzeZNFXlqPaxe1QSJ8DV?}DHOaP2(fkz&=P&reRl*Q+H?{RzE zu~E0|d#uxc_-@C3qMEqBuD*(9n{AHeO~R^oXG==Xe418&mqyfN5K58rj0fe^nq$6R7AowE!BYW}>OxfEfXwgWC?rmIna$Yj*_%Fol;n$+tW!gXTd7`Q5#(1?p zGRutx&Ra&c$JLS?q;nIy>2kq3e@mR$b>sLN^;zf30uB&7sD&uu)R;oAHc?F0oCrQ8 z0}nyFDQ1HT5p?OoCj#dk8g633AE-=OBFd!43K6Yh47EFd9URdXzhh0aY`M}W*knWA z4jl^i=OgvF2IId0v`<g2=y`K0017Qo7&XY3|TW< zCuW3EfihhJ?k>RcA0ZRWmB zgEzE!+fwbIax=7B2U{{wX7%tcQT}fIdX{D56Zf+&P6sVd*b}=Ej9iF#+7nDskSPa| zBj2n7&fv7UrGK|XI_J;L0UKTW+>QoJE>iThNOq6mq$`=pD^^lo&A#1{ub1oQK^Ke} zAx5lFrQE~&&?!&={jfuj!A2E{>eHWgeUnOVlR9rAl5~QUAGWn3h2@sY<6o`C0?JRO zFXRD>M9rt$z|0C2xP&YyAn~@f!19o2YM6WY_p_EnPuee!UjR^;IAfCB!tynlLq@w< zhw$>tp_N#F=CBgFb8BVIHG8oMxf~Z4|8=YOk|u+KT5BQGdj@0?t+ts3>a`^f0Ekxc zhyK$%_VBsQ`mvp#HH6#R#^QAOXaLuMzoX=ABEWuM!)Cw+1IkFdp9)!;N(9!3D@{Zd zKMT{x-Vvvj!cN(d$3D)K0(X&!pY@1Gb6%+Pk>J;F-JiCq>(hU9BS!10f zTTWBql|Fu$qUVAWKg3XnG{!#9u+oC9Mh#-LE(z?XW6f1k9%B3g@nWpnERd2ZcY4-p z;1dY^==qdZTNY2tdUj*9x0zY~AOBE)XUv*<&-4Hy19`+amq@t%DL4B*x)9&TKH zaS!_mT%~F{K5YU3lQ2o&O97)k6(bA~j=UlB>%-VFJXY0b#vkh0*r9uGCbFpl;;(L> zrTnKj_VhPGt#Jf8-<>=(^dB45fjZ(xQtcUHu20i~YCCp{^+BEW-}*gBjHmUKd^g;_ zh>a_b0d=UqI{h9H7hxvk4WfF*yPS~e=?p2hY}yEeXtR3O@-6A^fnPHElFk}$C(ce;T8jk z0Pr&@6O85X1`ePf&Pms&;z49oX7@@tm)502G!)4z3vyCZ8=SrA@<0} z7qW_aP`N+gxckGXQ4ALCF#C{tz>0z~lRuufMt!(;=%-%<$G<4%sk2q-)E7_n%s!z36LFq?o~QqY>6|rmdE=FF@HHGA_}4TMb%DfJvm|oA`tqu zF2V?Y^4U0zLxzvd5xB~?9{-RY7tnkGW??Jv3uvk~HCJY9gu-2zjw) zS3};0@JQyd@Wwzp+?o4mQ?AKKuN@j}zl&$i@XT*E8qVSkvA1Um*-T`5Z!K{9X!P7o zR1U~oZXL#bKmeeeDZ6@L&)S-@==l|~MVi8kB?fy6_&EM@EvGQ%7f^fnF0nro16B|- zD<_8FH3fNyDXwwROU4VNZK*7sq;i3QH z97F!&Bj_zbatBz;=l23!-!7rEj=E?lmuQ zgtakMc)1!BeA1PMM&`(xAV=#`gfVa*`=y*bYu~MaI1@_CGgZ@rf@?tt|pZHze<~ zMsbhl{k^zePv95B+XoZtcQ8u5S zh4|4A0rJ4HDf%^jSQ|pViRkq7qv=DL)s~=nSF-1M&}K;%Lw>!D=~ysCmJ&zsOSm)X zVa$9c7NmOR!mxaJm|v*m)WwL}e$&AS1QPfi>GP<$3z>~%!R4$yWt8{;-skx}SmSot zEulc8cnQV`U$k}{k;n78!E$V;!gmaSd=9m%ncwB`Yz)CzPmc(ylt!JEJt%A99Q3h42Hi&0qiMIreW;l$edc;zVfz2HR#q^QPX#kNyzhlT^s63@ z!cU)1!d!Uq-!49we|to$@FzmOQF~p_`}qn5$TAk|em9x1+nqLKm)rSunOcAMv(VOF zg!6)Xz`v_S|L{4n$N(zvkKY)1VZCkryQ;WQ=14TACdU3mDUgzWU8gxA6c9(z$|krg zJ497*pAxWb#N5C|8#6E=RNdl;vn?+*7Wvd^owkyh)yZ3qX%i$X5O=xo1v4@Q2~w}G zA|83#(SAc66Mk@i8H$&o?2fK~%RMbisZoTGi%5T>J$!3MD7&#f^4pU|d?vIUM_`Ee zl5$VF#f?59z=H2pHtnOXuZOkyR8CZ2Aum+no z@tC45{`4XPoo(sK!UOFB%~3+h)F+gpH-Xzw@5R%z;dKq7pO$R7uVxz=zf<(-HZ3z| zPz4;Ne|dMT`K4EKL<}mPr^N%ABxQGrd91-8-7d|=2FPt$GTdUqJ7qgE7TYnvqKxmq z>liiAK?!~Lm|ZBpw=U(Pme)+2QOt3X{>s>8Ur~M;6_8KJToKhuqos;OJki} zB?#r>U8&zzgSzB+Yc2svaYYEZxQQEnzBJ`%$1(X}hhq4P4`ShVSY-ePpVys_VieDG zd3ZxI6L3?iUuJ(cdtpmGuJSvLMAuMvw7N6us}$b+319~W@1z(Mn>!O?WX^XW(ZuB; zK4dUuC`oCtb;&3US6ymqk-(OD;-0B0RG z%Jh<8wlCz>W5h3shsHRlB(0^f*7CU`|A4dZJp>7k09^z64nshyR@w_LQu3L zL%U&vpa6PZFa9l0^r{rE1@IpgV&JV;3+yiFC*~cyGIZ{()@FnoVeoF8j@ZVic)UHFwcZChc0Z%8_KqgkMnApDO4tOZ#1eeMv1dg+Zbq|b zf*Kdo8i{ymDA86nFDl!g_D>1)>k2nTkMMh441cj3`4-dq_d=ZrnH~Y{JXmJ>PVxQQP2O$$wyiV@y9Yy1-v8 zIT{#mwcK3mD9T6*=}5rHh}&&%K2N7sze6Q>m#wp5GF#Yy1@1=H7^EE)e(ng+b#fw# zdB@LB#oD*q1}!Hbt=JSU-n7PeoUVwp#4!%Gz8bH-YQZo(jxEL_N4DR;UV7`jmfRW8Sw_wCTm z2(6&0cAV(wM8xhh3zjj$(5e>^+s&}+C5gmER zmse4A)K=#*d+h86rK_`By^YrY`uqkm--{Qc4fWgJ`fj7=pqIU!wdpDO6m$gG{K~}O zL1~pc1-$v|>Y5Nc^=juF0>8%9jxwK{Ky5b%kM;9^Au9~u8xna4H{7n+N#mE$Yy@F_ z=vMQ05|3wa)H^`rR|FrIm3&}UiIyHa7An*5=nk^0X&+W}+q0j2M~6>{((ivjV+&&< zUavdreOV4#56?(4tD3?ePteOBpO$=spz?HQtZCNXyDP{@MjiJ#6993z@{vN1Uw`3y zvgKJ%5;f@4KTF|v(tzKh6SFrqU`4_vek+7Q3%PT#38m<3?>dOfv(G(9zN#w0w=nP_ zM--G|M@glI7EugTR#bD|%>A4w7CCEI&Ao5s7a2b@^}{XHk#+B6unjDIE-&_pF*VuG zZB!fbOwAmrq;`*Pems89@_sZHz1E>~_;{JwaIAi%Ugs8C#YOWv^tP47ONPA?E*15` za6Kmf;4lXd`?i?<#XNIqA|Svhj-H}faVh3nYC4IHAPI9YfCVa)clp3>W-5EmJA{Hh zdN|StqmUwtPSNQS>t3rS8FOcm!eg54Z#GOfT zfp-MH^I;>x)>b+|8V^-+`dkE0Wz40bVUA3SRf6nP|5cgUAY;yA*XR(hhM}tM z)^i<;bm$EL0sPmO8ve`=T&jnLNiyIBp@|NW$)2jX*Fiws0rDG;M|tbp)!pxClG)xR z%322TWH+=Q%FP`GM7>~2zdn`kRjRn(Ap`igX- z)^OT|LB%_@0#=nocfOm>H+3lLqP<%Th!)9COMa(M{x?et|7?ZwQcOAz#>XHG330T0 z#GX4$Stii8m|^J88dlFVrx5%^%n0bexaY-*%9kqrZe56VhQTpl<)D^>B(&p`?*FQE zASG!t`8@3SpjDIr1QyNNwklK{6eS3b1uTJoOw&QHW=FbzPL?g_X;Q^cUS+a$Ux+K2 zmiL@wTNN!@prk!b#Zojwx?;_mG{1rYa)H6*$SiJV%>Z)GCVd?3cIt^$>tVQp_@s&t zS@V~M_In1kr1%>P!UtjbDRC(SQ?{=+c_tEA{c%fcSKQ!^437@lLdJKo>QeEAjdz=7 z4DNfC>o-v#R;3~j51(%^E5h@6(m~EC(XaNKj1MRF?INz|T8>G!NqSjT)ll!jomWj` zB-%WzXwb(4_L&#<|FEt!T3vDP_}cTUsI4`xR7PY&i|v~TKF4G{u~|*@Q7V8upyEcb zFp-T;468CnDu(=_wn&#>*BUPuB&4wDb&K{DE*rF&p<1i_ms>RKUN-#*hpDWSrOqVm zntT@YxI1Ov>K25*7I)~{;WGMYUlV>~D?BUM%uAskeEsWrv5mLkWNINmzl6;xe#`x7XR<2B>II1hd}&~xuMO8d z&sqP&)oHaW)=niGj>PIjSm<(N4jS)N2rWEj2z!L8+tS(HfsvS)Sg_UYV7cp(qK{Jh z*08N)YkQd{cD;k-nwg7Ei551!Z+eSBM@LVakH@F+`gpcN-CX;|rJ`-l;^^1G9hgRK+KCF?ZMMq-U`pizbWD zAcf8VoAt5fiTw2H$t#8Rw0-+rC5X43-i$rShYln9k8@b5fs}dNc}_0O zq-JbeDvk~_Swxe-WFM?4i1em!xT66-PidwcUhV3O7K<&@Uxz_Xe;83^j-r9N;W3tP zvV*lBrsj5Q@S|7`-9O1vX^zJ1{kYJ?z4X+30UAtU0PL^=&+>>CNeOr>~^Fqw4x zPdC?YGC`CGZ-(7>DhPX)#EhDdN2)^hN9TJe`n*~8hw~7wH{}5u|J4Tk zj~eE=2^|Jdh(n3bwGIN}VbY5=z6?T~kjwMwbU7PHp(sUh;dBY{Uf77B=DKW2yl#Mh zCm@dW9*xlYjWoFp#5esT%dM5toTn_b0{Wpyg|E{g-ugdEkR1pm|6d8ldOj&g5m10e zr&O4Mk@01{sItB1kclgYKZD}9EA?ND4m>o%L2LI3{Hu9=<)!M2&F}eT1Q$e}dw&3q zmC!Nz^bgbj=6_R*s6Wu&2_q0e`I&T<-kCu9q5t^|UM>D!`JeFd|F?}~fq^I^{^#x~ zf+z9vZ)w&N!ZCxK;Ne4mTGdtQdfG2k8DPm}g{Bq7$9Jx^-RJdJE<&G_!Ic6385yz} z=Gd|f(qQwlntVYsg6|l^sz|^jgQXPeEI(VBu8?ElW?@&XO48^j4967D9*DHy5vTs| zU-MprbrCLYRIy*TFXrIMdfCk-!WqjPV#%^3ATEdzgOMnmV2b-5@6QX4og{6|2elP( zH2s4eH%IXb6RsgH0Pe`(>{>xz9Kp-FC^9kIau;>B=f(~PNk6Doe>ZK2 zD0@W&nH>t4?l>jLN4k#qorCMCo*b98#_Z`@IQN!2mbysvW>A3rdiM2bpC!|UVzLan z0#Kz<03Wqb5=%a$2wYM~=XK7l;{rr>>l^}zTZxkklnC4KZ zCw-{hcxk)#F~@OJf9~+_gv4&DaD#lOmxkjb!l{KDQQix(%ZNuK&Y%@vAKcjj_fXJ_E`jmbf`&crJ5FYOsH))v!8+S4AnYH2jL zbc5}k9waectAdN3 zkrKb6-{j+2)WmGw3z4LZ%eB}uSJHU@(UKsYtFEEZwbp6IxjWy;FPfcn4S_oR9!m}n z7K^E*^4WDY87C_vsaYY9k(-W8^zgHryM<)7zAJA7?f2bDOjS*fDHm%dca67x{(Nrx zDF=pScndF2Cum>7DLWI;{<}jco2es<3YBp^Rehqb2PIqf5k-)wcOuO0?pal|8j zWJ@304CGJnsyUq~r2;vT0Rww^D&QjYp_rA3+tEJ{ z1_;_Dbk(WdhZw(^{b-HH!Ftjx-!Zn3oB_I7UGFkFpY~g0qVTjFf0_Pk`&!Cc9Ah^1!2CB#un_y2Oi!i4mc5Dp0B1~V->T#xTyHuM-}UProc`$}0h`=9>LbMLV9Xhx&vPo{ zp{r_X=62sxNPnqFNpAC3nQ)^W+F2!9S-6;ub6)T7i~ytj4kmm82!lVylenXqSK;#g zn{0FKCB1{`1CZ-a6u+!tvXg(6;e;Y5Fb~0v1CxfJb)#{*S7t%)$GQSM_9W~DJFn&P z*f|<&=80kTbKiwy9T8>5>XrtnWgENVTelMHVT;*XZyll-`v?D=Amc-Py~QT(0;ulF zyNQ6F&exOWu5DE)d~NX9@nl{SAGfN_Z|4`Zj$bc7TwR+y3j1D7Ha>vR9Fb8l*v9zpCkPz-9ahxlJM;x@ zyyv6T0^Diutc7hE*=i*kaedwzApbWy*)rby3IQMt08I3D%aWQ=qJ4)U*Ic{V8)#+1Qw^THclL3K8A3T1MuT$Ftajuv-qyZ`V-8I&{ z=L2UeqvcnRe1AhA!kkFe+XWV}g#7)mFL+J^#dQw+sQW^>A)?V%vr?rf#MOUIDyWhO zs*S*q!0QhGH^8IQmsMx~wU>a19{c{6Nd@|&*#C0yW`cbRu~iF`6EwY^c+p{B%=L;8lBP5YMZ3+wRJw96UW9X zEwz(jh&jKv@mOc%L-p!Pb3>+U)qOB#onfY69k=2C$J%>FHL-$~gD znzd#ovuDrFo_Ck`dG_AV+*Du9?Ol!M)5-SEy$j$FccfhjWz8-I*ITf!wEpM@$ znF%;ojr&w4=OShs_|w?zECx-NAgFgR6QDG$=xd(F#QhU=mQ4MDRC)B7Z;R3w=GQO$abr0KD_In7xk?&kArd42c>7|a2 zF*#b9@Rw=AOOd8vxj!Et?#;V(=c{Z`34Va9cWn?HJa=^1n`=x{{Q(30kc!0t*m!$W zK>Ym{cH%#FG)OEaGxcTI=|K)nU|sb~WtMq-ezu(w)*{vB@>RbirWsjS7r zv^BI~&%>lC?HM1|R+`lHYKs*+K z#n9)U%71{kA9pK=o#lz-Ivnp^S1WrR1huKD(nXjyy9 zFw9uHlH4Rc6oflN@-Iwk1r$HsA#TVSw5y5R>J;x4Z*H`=Roq)^XcN^Bs;&b0td&4C zOvSn7m8>vQ8%3tTQXgee0}z)l#5LR;&4PES}&%&eMzbiPm|<^q@Sh++7OF78%2#=zZ|ag;aS@ zWz@vf(#)aovFO9LL4M;0y77Z6F8PJ#TUe7#$iz*KBitw(b#=Ccf%CaO!1v(yZ|J;p^ z(ebIN40)1~oE>EHk5!ybqL*>y2<6~cB)iK8c9v^Bz^*tjRkyVEFRD>s-Jh49rLq|^ zc!gd`EK+7@{#(rG^5}yv&7{`bYa#!nW(c`t)^RDi^;WeF`4J4x%84s`8;pMJg)zw} zo5ti+ohz48$P^8-O}2aI@;Nz_)JymUv`*8agC)}G+XNqPnPf$jSeQ-?$Xy;8kE6TJ zkAhr)&vw_RQ^c)*HY@AQtj!crMjqudl(26#Ms|MKe8StS)*C>XO6$whL?hYX~u*c}uNQ_vh!RlAdxUQJE6u0xX?6p&d&Lv>I2l5R z&#_aP*y4^N^wK-C=a0zg?M!uzz%vZ8>L(y7`ArQ{Jnsrhe>`VuxW*si+qJ04Q5a_i zXkY%=!v)he>|C;wa(U*0-1Jn7_<}C!|5;zJ!5-wg^B2Uxg?q$vLhkduN?MJv6prp8 z5}V|4rx*z;-hG!b^}?K*rSi7SV1cV*D5Q1XARA7K6EaW`e?Qcyr3?;kls)k}VV8Jw zR`9hQ!){8}OyHU+^d-x9ve1tQ6oqn57ers+( zFu7bXWE*ln>ntl^ZHf1vH&HYpb~ELJD}~0BD{4hf3PRHX#ug$CNdvl*WFO66{mtThon02V-P)9vxIr^^^2r8l#$Z z*;AUF{Eu-qmaS9HN!m=}^)%ap!T9O(t}p0qteZsWl=Y=c3VXfh{I*2$`Mn<=3z*=O zG0~D9p!!mFfw4x9%PIF_sm6#W8M1WpY6&ZFQ(4x1oE2KHy!btsSif|3J~15km9&j! zV*Tie zZ?p|OgDvkH)~Mu&MiNgs%u7|KTz%qPc1kO(f6M>8pb*bz=!DMgzKv}0vhV7)-(kgF z1W$kJI+^iUfV-47eIp+7T>i1@^XZNem*<6(MH*KHmokW0_B74nJ2U;bTvoR%a2_}~ z%*yySn-$#_hrtHW$h1&0om^2)t@!0{=c4{TyK^NI`?;{ctQZ5F<`@vP3WjE{d8En| zR0IrqFYhDu94#EAaK%i_^I?=yK;!$z-|yR%9jN+yPzQF8PMQ)Z*%D(#8Z1+$oeLqC zE|spn_~4C{WVQvG7MFfJP<(obi_}f_?}#`Bj)Z_n*o{3j4WN!B&PAbZ=M-=b z8GE>MUR8rxf~55b36^+}^|I!;&xnBT_nh}x{AxEXu>~Qy;!6Q47cKk3o*_ zB2$C0;^J2IYvF}mNq@n_$dR}w1A*S&eTR-%A&bOol&LNqDnihUO(AqzPI*yTRK!#@ zPRH2*&D`Ur_1}w8sJ7NJkZFb!((#_{$=e@v#;?irF3oz1i_dKsolD2OT?9mf2RV$FN?C+Ltqcs&7fPk~JCFMoX6o zQ#j$xHu2&{3UdL|81IA^K)v=oGrX$(1kQ+vmQ%Xvw7KsYK0A)Tyjc6 zQ}oO#M^t=N>?`bb;R>o^3gmm8%aV%72kzM_vU0G=?U;unmIpDZ@V>?fAOYm$qXc&s9eYHtfFDgTsO|elwc__wI5n5>cAh z=rL=V$1}NJyfgOT zn|k7R#_(nAAT2Ot9X>ny{4{i?!Ox;@FLEh3&=DEen#bQQ;Elz^XD3Gaotx8 zzR-uoLqlX`$G7*aa7N!6-Dld83)+@~8QPE^{T90g)$D@t&s_Nsn(|?|rcwofXPI2Z zCf2FUp!g7EYYpfiw+!Gd-}?K=0tORR~WZD_x}69xpNjM zRme{LPFeyOOwsZS`$HTtT?qnXgE8F#54{JhbfIu3)UE^c;}xRHXbVDbu%d+IxwzQh z&@VpyR?)8!k4l~Ab?0xp80{B=P9f{}Du$27{oLl6V~cB&^z(OxeXDlI>x@}qOG^bk z;VoMS=wFa8R0NhG3gouknxKNEPMiz(Xaox?JOK>1*(7M*3#GmRl~;KD0AhA9ZcXE)WA%skPp*1W}x8w&{v`&Ix9qUYLQhPmka>&7YpJpAn50S zyTCwE&~8x)DYiBka!#5JmCZGv4=N*{W-~RoT%e5ArTL~sBifYf!(P_;p)s)r6;H*$ znP~>2m20(3-K4Y~MQb>FlN)Uq*PZ#!mt-~DIFXrx&RBNScX$_c=y0vVUbNqPm`fPU zxJs6Jt}7JxIJuiBIkK%yL9q$3oC`Nf|907T?2od)m1ZhJXcr0JRg_-1ZA)8o78O4DI~N0J0J&Zgwxf%-0aI{*Dzoh z?hdmmZ{an%RaWeF;yYffv>op{5e-_`&Q(gnm#lDVGz9eMyp8 z??$azUE4GMsZ-KA1on#nt^N2>+JmdFaB%U$;qN4#mm6x8~|4ySN9pIPORLub->R z_1Xh=CmTpxj%JiLiK3uzT+{2d{U(X|Lf#^>Lcg*2Tnj4n-S%RWDrS%L=A^$c1Ta%R zU}r=)GP)|GjACM}X5f^5RQF;aej)rT!{X1ng4+O9R?_-#8Vf_#xL5xM!{0lP4rb?c z_sT#D@R^t>E2jB8_)u9#kwLfijJu*&ie_WLT#VXI29KN9*=hY`%Er2LjLmgI>FUXt z1bggRxuOj+K`{CAT94$3QUdtwS>;GSUCET)^_>iJBb%$iees$2u@TEg8nJ~3AeRJp4QQ7Cx^T{Sh_B}JsmW8OO?e7czw<%}q z6i2!Omt^;tls_Ya-A^@FeQpZXCG_(yws=fMoa#zgLHuG?R+{gDNg$6bMRGI-)J)GM zdpaiOnL@W*bNac%#YbrIagmYrRq5m7C*{6_kmt4zoZbd|4;BXGo)&VU?xhGhv@YG& z8KIRi_Awp9@#@*yAmWV<(WQ_qLMCKkU|?Q<#ac`}idvm3s_DjE<_eU}H?}{2!GS z=|s~Z+uN=?HbK}oRVoo%PWeMqET!-Iw7X3+%-mfJf5&AdlpG!8zChEr*(yi7+95zH zp_EXdt(Mz(y_2eVHfjDZqogVatl^A&cs6rSXBN`@q^IFcfB~anG$7WFUL=HaXJuXOJXi_1_m9f^Eh9^55V#*<&1ECAB3#s-84~`IuQ2!~ zg18$HJox4Qqr1#(N~|^g?}&@zMb?=%w@vP)wsm6|L{!cXdc9hPG857zezpO2S0x!u+y8?&KB>?lk5e zJ0%B7%dpcO@-r$ddAfIe#*%oMQNoPM6cGs{oZ1oJ)N8sN6(M1g`B~4x9XE?GF$I0v^qEm8z%XQo&6%ja04f; zN?P4_o=pr+nyA;r##UC8&S~)N8tE{_W}4w@ILs&KDl;p&a7V4SzsagW<&dxbTlwZJ ztPu9;<%l2@YI5D)BVohy=$_#WqOP>@B~3moqLd;|?B+?)wqBnEw?`(>*|wRLO8VW9 z34Iv|XLr)rQwe&r!UaeOD8eyR$zLE@oO7BapNH{gIuTy@B7B!Cp*0A4w&O5m9RHykdlf+~L}p?4b7)dRmik0pK%4RE^Vy}or2twvNZ z2j1vr|LHJeJEXG0KBbCkDSJXbuf7@0ya}5Lo+mLLW2G;+esK;-A8#0N`RGRJh#N&m zz3b#v>Q$M+{F>%0;K>zMgue-h4;Onh*x;Nzl@)RAbD9%3>a+)kMViJMzpm0qbn?(O ze3@mIxIvYPe&6bKgD<>`Cn-RdhWjoBZu2TD%D7Gl_3E2jnvH7h7NQMa)>lFtZ#wdp zb`HV_SFjM|>jSz!_zJAeJw+$zG^ItRUAX(vzcZ3IWKhIXJqu-tq^soa~^8nGe?z0u)-it15V8IYZ(ct9v2s0k)M2gWKGYW zWk)$Zn;>P)*??M0?ko_OGG*X$3ffC0`Aak()YQSvS+KOTZZ{E)5_ATUDr_H_vDyhlRF7e zL7(F`JVA550Wj9ww6-C@Vcg{rJ<-OJr8e5!a*K9N1Oivm#u>;)t z5;6hKi~3Xg5H6|J;@jKWH|50(zF%rc@3&i0D=&l|Hc&z#v<9Z>Kf%*lJgLqq_wGd- z#tN%E_sH1|pq^HuJikH?!v@gR=F#P`d2QRB8T}wxz1_AeEYi-nF#0nt^H?^RL7d54 zQc4_XLNRtv4r)AwBAAs9gOYY1$0ziSN1@s$P43(}yS_mm>P5iZfW^}KPGg6C#*t4u zG1*Uvdp=irgsQ9IGJ<^uQE@F^D%8gloO9j}7IfFP_5^qwHfPRC42l32lvfs7?G?}j zbE`S)F$c|ifEYm^PwJs#M6tbIIYNID?Q?RA5BPUs_DEXwZ9Dx zP1sWjwNc}C!9}YIK%PD<`KUSAb~mnnWORQRNLpE{zAaxwnSWo^*@9b3(1^;L{uSkv zROP+?S?}y8JwPuP&zG7yKilGdI;iYZ=9&$mnc`cIVt*tHjJs0X!XMBDQaJmH=YN&Tw zkcYmA&QJsmAX!`7n6=Lg-aAz(Ntb%GpwMi*%?SCAQ?XEXT`XD(RFmuTbWGli-MjUgt9k{Whn_ zGdjxDD_2zZ`>Ts}Id?5}k50kEgV8NJ`1sdvoy=|nm9d%mXQl#it^Ut#F53>Is*jM* zd7)a^hI6-vhwK0QSb!}Cxw7Kn)dlI7weJ@yx!a5c7g@r>peW4p!(Dm8v1sk*{3iQlb~vMl*l82YA~6T zi-`(C7I9@tA4j4!Pvfw&lIqrXxM8~lTqm8d=Lb16HJ9hl@}$ii37i_2 zwyxE*XH~t}1!<0d8ZJwSpKpFlX)>gKtD|Ml8U-?xe!Qy2VohA5x*(mbkEU_>Dev zeC0XoTfe~5?9+*SP*zLlMfGdKcs619O(J7Cr@HzlXeQ+(_6mDiHoESth)*#-rC7*D z&~)xB(D9$F2eA`lTP8#zZ_yX`gRELVOph_Yn1ahL`oS!|xnNpR#%+mzw9S_ayqQMz z8qWn&@%*B@JK_#+J9$hE^(V(Qpd*>co$uyQ!?hmYzu`~OCtY7k3}gdDP{`ol#|03( zQA@4x*cds42)kcr%T0l}osA^02kxRED^G`!?Wg5LTQf4z`1j6%_3an#A#}G0ZpYvLqJc7{DWj2XfprMT z%3R(InCY~eS?1+;l0hi;2qfKOt`9vN+Xr0F31zrC!=$EKmq>5Cp|pO&c4a=e2Wa0M zva@;D2VJ-VfGPAiz4iLHyv8ExtiES1GO_I^HG}7low6it7nDwS3L8MIR%{eKbg`if z#N{Zzp&4{98`XT6Hnd<+s%P3YW3c#MMtT$9Dg}OTUi5jYwvBK)p(@@;yjJJ?1gZ4< zdIzXwbKe%>aTMRdGU4Mx)p8U{qZ4T5GI`bN(XUx_qpNIZRtvhg^;4nMYehVZ;jTg? zgWCaUWBR6EbX+*0gmWO^`>V)X#0yvgi4~(FVWXATjlq^7eOMF`ddty6e&kP z=daM0&0Ivzh!b~;m~|R#p2TjexDf}nz#>!Kq|czXbcutXo6~a;(X57`z37`kGp)&L z<=4Ucv7}F?MG(&F)z48*BLQvP6NPqTl&PDkl}a$r(JDV5q_9q@6x?She!kIFtt=?A zZ4H^j>h{pcmdUvNCrX}>9sY+-D-yutJAkGlXmNxzom!pT&e`u7ONF;9heXs z!x!QQRI{RAa2^pWlTrJQS&d#pyUGQO;1`gV?c><%aWemeS17{R-Mvp(P{D=OU?N4T zgkKKXpE2z|TiMbOYqqD~jtncgLF<4-U0$p<8b5Ab0sw)WXX+ZU`c^NlO>0YBy7Znv z;;+RJejKj-@%fqwANZ&$9{30?2PC*OY}5+F^G#$EZiheuI%lWMRmLta*6r_mFv|OG zAL}G-YkthU&TwYa!lylXXMJsR`}HzhWQVQEMf{O{l)=GL(@}XP7fmq)^ES8-g(she z)18%#6?Z7eK3d6}W<36wSzRNIrG=_CKH96-aB|*UviOBU3HA0M0=Bx%QvL8RXljy| z7E}5kNw}?K!lTb{iV0l!@$wJ}9*S_IEq6e&;)*|*7UWW+k4d8~lm+|8zZXCL{!C*R zXxrUSUm5;Ae)#9_(&A4sekU}BCRas!nRQUh0xFf@&G)}OvaGH0diFr!h_>?3rAu;g!vC*P z{x78K^O?W-rAE^F1`C%W6XYz!$k`bc2Z1*<+&K1OU^uI*kw)VDXen-Vx)G!8eH;_3 z;~R`Tk}}SvdoNs7@P|xtnth|c&Nl<)EjvyQMFk7A#RFwt{61kFZk-z( z;2Gj0uexzKUmzHlgWV)l3WJh|0VG$if6^qvz@Fw;-wVLHrql#V6kWtsIFC-HhKBr- zf*htICQ#&S(wqCNmlio`uQ!sqQEFUM+$h4QjGh`x`p&R;d9i|FaqSyfEzojMjq!$j9G_9-}ia(Go}58rQ)pgl6=HPn&|)qP+X?zFxGeRZF)m7bihC z{p6th;j5k)ZC@E7dmF1cQSyyK;g%|5N1xAnw0*Z`W(q^%WO2|*QDs7#g@@5dOP^Y$ z%J_he&stQ|m^(k@qzCoQ$Q{aW@FgU-RoAb3NU_E5Y{a_$yOyA#;#HXg`H;6QU$p~F zy9Z*U^0~=J2>cocgg`mG#H$mi2C>Ly1P1TC;`_I4PtM42*=MJ~?{k*Xt5ib*#-gy` zweD6ggQ>)c74A%l0R0(@@Hv`B%ksqUj5(E81-nF+>ehFGs1oRjr zo7=Tb@!@9^xOJnecTN@~u{eLNi-Y75hQd?>z2k%tipOL_&!k@S7go}^wKAt?kK|9; z9UbF@vJBj~@Cmim#D8cxX&YK-fXW9*d7p#C|9o2kRat2mTrksEJ{yD8j)-L|(P#&x zXOwe_YD48Kz9Z0#9;?hwi(}W!Z9S`_rJeztsNH?#lh`8SEO*Y)a8fZx_vFUGxx;>Q zEEgHYp?Lbo0@DN<(JEEyZIhjk`HpxvUwsfIAs$cr3jre+(P;a})a2i`rhFTGq($yp z6%GQ0(s-vM)+JxHEVwhvPQirkU+2frZk*fEJ|p1xpAuKZXwHZd#Y2jNag3S!!hf&GC)d56G9*Q9c{@}??oQ=> zG@nWCR0u_wpIqxZ{t&A#i5FA0nO~o4pnEYJ^BL*8IftL7Cf*@b!PYsmNVxcAL*r|5 zp+zj2M3xR8~U*%DQopiM1tLJ^+d z8qRTS<8Huc04?I3L9+TtYOvd*owXnyDu&~`Q*sLMN$uL@?|BI#R*0S7vWWiD`{ts< z%KW<9UIhE!^U0MV!94t?A@}1jrMJ=o?nT?m1MPHszcyT%hIo%JUuNHD=<1DXZsml= zTcpl!;rbXri>Kp175*ap%6@75dR6go?78Rsxv0)oh|-YvxOKv{nDpQPj?+$MoXBYt z9gDuTG%oEcTZhuP++bGy0_9@^%46fzcXr^eU~bw)@s2S+_aWqT!;oHjOs9xS+(`43 z>W;`@%QVdBq)2+s*IX1P#IgVFkqWih-Ql_8Se*X|cpp#UE?A0e#n+imR}@Sj(|05{ z%Ace7=8E)t+~(V)noCj?{799tkozr*E~qOTBT^QY4d9Iq&rts0YG1Q1@f>NMgpqzms;P?rB#-wP}+b|(Qo&22xn#bo zE5rRZ1>#WJUn4)sFY7!LDe_S#6f7NGu(g8 zvgdFmlvZwTYR2y^ah-}Ivu!!&N9|j-*BP@b+=(<4Cf_QUf*qRaampfw`?C>^@ca!I zR-sz$W5rBn%IF|?n5kDqc!QY(gtAO3;49Ao13rL`#?a28_~+BT;ys_|SX~cZGck_M z%d$(Z%w3XV)JdcIwzDt-I!C!fzez^t5GGWw$Q%_7GdD}e(^Os_HD*8wH9kGHj|MUI zlZ=hZHw?Iy3W2k=8*}9go&lzqTW-l_*o#r^{I?@B)WxnJcbMelVn2l$YHDBR)m$YcJWf50qE!y2Mj`O1aOm6++3on3W#U0tE*!ZB% z=8t(+72ndjk6MmC%hI#)vWLf_$27Q!~ljzKo zsJCA`99r+`bedOrt+Y$N)i}uWsA0cqYpG+)xQka@-WtF)&9f-ptNtlOL*17EO7%!h zUCRMiC0cckP!o9#LgApw&u}?u-lZ|Pdmfl>Bsh3kHE7@vVCs@aW!yvITUHW>d7OTS z4ewtB&*Tg~N15?BU|7dRBxiL$aV&gSJtbD#dND|!-C;C@0c+sZ&>nY=A~VyWyh@^&8n^)M$H*U7QB(-^wAxasg`h;tO|ou-1|ve3wiKw0d7k$+0;4#V%w29o<1Gx!DeHx zuC9$2x8OJ+^_KNue3%oj(d({4v#UZUPTt_%=^M@#4m8vUhd9HOC(|MG8)JWTJ?o45S<_M+!t{M1NzS zGmW<35V7BzG&|@KeJ4(1oy%9or=k~IFN$)wv(oHGA1j@o995<=+&>};NNlYw+1!U@ z9vKq8jyWP#y!XGP6m%I#b<<$EX;Xk3^F!{&JlD_aW`)7J{!sRNZiAyik*~fRVdh`3wd`m>Dvb4>GllBM^g#6 z(GwfLpO^C-?1W%~cN>i*3b??THbEQdYA-*N#%+6&PY;sy?OuU!hsd+@X96Xl&=rK%yn<&dZOzfSo*a#E;$GL9y&UI%&Pr>_-Er-Fe&W? zsHpJ1J>2bgdWoz(VjMd!MfZ`clD+tFXLa~$Et30WD5|gWGuy(JyJXD-&g_pRtNOo~ z87o;LIVq$i+m_mSmG{ymnq91huo&$ zGwwqA+K$M8c4LO`qAHNr9dnaa5oQYl3`7Mp^}%CuqzISWer%0tJgKu?t{*SSM(5n7 zET2bFtUQCE`mmX)l{c@YRm9sl1dH*Di6ft>-{w{{R(V9L95zE*qaN978|Z8K`1svP zyD7c#1-;sCp&0zjn#b~O^IV~OjAL4q;Yyc5gLfB$I%@1qY2R&6m%h~U z@T{T;9hN`orYor%4M2M$qDwd#ig}zX=#M=)IwaYOBTviagEbHcPnI+e2(=J!= z%Q1mm68F$Q@@8UQM*lo4G^0~Focr91Shz=RJ|(-z;)%;cY3xVxr!6_!z}Et~X?GaM zY$4YlfDiCY=IQ=Hgp8TXgW7qiq0;bDt*p#+GX<6u3)vtHc@Do%2G2zZRsyUEy~QJ3 z6&tWMvkDb@8}L6IPv6o*>oEAwq2l&ZU?vbym9|qOh?4^Ro)mWr3-g;dHOo6`>P)k- zQKgR*5$f(+uS?{l62~tFZEOiyo_hDcV@F{vy8{h}tR4W9*u3oQu7W|E#N%3l9m^nv zn=C~OHiDM|9%Scxrq?UwZEWvc2~nTNVd|Hs((VoIpbl|SJxF5yD|M4#9Rc^OiBxu5 ztLKSP8BzK*<0q!6x9jOb1)Ck0AY3|5jpkTQb_f#-D17s+2uGlPeSN;0n9$$GK)3REiW zu7eyZ$kA&C{O%VDDq|{-dpi_Gei7%TE|v1|ilb8cH+gt?_-{W4KtoTK zfY&U)Qx8TuBBqgx91-c&Z@gqM}OU-m?D4bYN1$!qZjNQ&J8;mPG(6d-!ZefAaF<8&{QJ0nW$^^ z)W6>U9qhF*c$yDJ%qEv{irh5Vw}prmFUWAq07j9qBi*=U)tbPNXJF0Ri#pa6DkAP8 zPW%(#LxbhfPd;Ie^lQ6fP6~b}Ep?lpGwgrFwLRGkG|Nay(6Ck73vYJu_QP#6j(We^ z!ePlz*Q_TnoB*SMK}!&-f;?;H2A|v`zu(>!59K0(sdNkS>01TNO$|qX`3fx{4z@Vs zZCeLTyqYu|cxW_TRgI|DJc1e+ssHl@N~5SoS}9F3n(S^_YI#LY({K97N5jF%-Dk~e z=FEAdu?KS@(XYfa+Fd5CxH*#IKHRc+lIudS_f2AhuVMq`fZW0W{qCQps@W3skkYvD z;;uHr@(U_Q!@G9v1Kv!z=NH*#gzy))4!G}h1C+ROH z#c1Qi7d%9K9b|7yzV%6|Y?|f#`&DbbhuS2e zJsrY!A%58T0!n49GkC>*8ok>-&P-Qs6}RJTHsqC;R;K7Q<)E9lxP2nelRIuHPxo}5 z*8a1J+YeNLTPR4&=6Sz04qU0!`fbf#Iye5_5i$+TN;M6?sAWkC3-QFzoAS#tK5TP2 z(+z=GS4W3ize;vdg;YVaqGr)jt9_2fsSwqp$_t+IZj|hk$v%@uqFy5x1eWAuouR?S zy#SEgtg^FE;yqr?xEw_YX4P^}YCyLfVSPL93H$NX$B|IUe-y!8Fh-J&JJKks9O`+jvGeRhyb@QY_N5ffm&s9`2pHCA@HOcwfrH(_9r=sr>cH zMj9J%M>Hgh;d+2VgKJ;K_ImrBa@%KXs7j>~x>Jmqxp~5{V+T9(iFY0DVou7rLQwYT z`p!i+iOi#`uKr!|7Rdy;O}ZMZVrO35;DbH)m@vev;EeV^L6Oi_1p{3Xk0r2G$rY zQanHv-GZ%CK3K%x&cZw|tgO{{aUuJC#Z5Ph^y~`!Z$KVJeFa8ojjoBeT1js8lq8$G zerLyryjg#Sa=P^E5_~p*U0I3Lf(|8YPGG(3&QyLP(2$GJ296j@I5*jD*n9$#b?8|V z7m&=-bK4WfT+-dB(5Dn2#;Xcmpvx13tp5^0QxoNZO8ahs=B8Q%1&_~JwhAVZrB$RnY-D?vT6(p@bqx%^P&OPuL@(e z=1f_dQ2^DiSMCZbDq5@4mJu|e82m?zIk}=*eAXO`R%ZaQ{ey!o)gKTD)2|7N*J)Vt zvQ?=z5_b7V{oltQ*=uX0foyEElE)RzD5l*T{dts1GyP3ZMz{*5AruDJ9Hr zQ^^Qfa<9E5FogZ(Fp}wg%YP)pMP!+MqLuY^YU#yb4P01k3M1|1^FQf^LvHW$%ChG4 z{i7v$KMBjpyZ@7Xps3xD9N2ZJp;C@QCvW^eQ5D5t1uf-9sfum>?m_wElg_IgQtpTs zw8RyI`Lv?9V1$~cb{&^HvGmju>4Q#8ditk%*geX^Uxa7n!qF7h{(LsYgz1YRUShj( zOF%dOR!r2(>F_J0wHny{qRcK@Jg-`g*JM5Ay&lLS`#%MPr>j+OW0jH;-492a`XUV; z*-Ls~`{CW?TC$Y{bQ^4mw2K)App;wyxhvB!`5SRNG-Ku%*HV9O(j}MqAA!-4@_pfy z+%pmHA_scY2cn0`bT{$YQ+HH-$2*27OPeWGxT29%jdifK_v}SmM5?L25@~h}d}pyGE33L>sVr$5Oc#(Yck{hZ z*~ax)+SuG8-2D~2_ud7;pht7Z6s~ZP^o^;fp4-4+NL17~W4@`m?j0wW12CUGx4y2v zMotD+uy556=Py8GfnIFzA6OoD96QlT#!fky9#o(HK^D-5*VUAC#L(>X$BR>=Z@x7@3$zgj*FQ%8d>1VZ^)S55AfJP?@WJuZfj+ck+M-FaMw*(abDI7I9CcO zH_yG{R5IqG?@pd4W}Hg4Bo@~KbF3_|vOc2r}1NDvK`O-jCLM_R3nWpfhp!PDpo zFnR8owOZG1g&xgzFfW1yo2wj0nzt__N_&rwx*v8|YPpvIlx_Dl)Rh)(bQ(kyyd>%o z2z$4|2xXS!i5n+=ZXA`}3BG<~+ukE&@C7z@t|{CK#DF~GBrEkZtlbdjT=e4?QjxO< zx?xR`_AGMlg0#tK9(#$WlOfq9dDgJ$75eX!JUo1CJptLXJ`ZUDch?<~ie_v|KCK*= z2%LGUq^23ZvMDsSo^O$H=j2*33myJZwtmru9gd9(tjD5MtNbe(VA?}GIlkA2T2D`e zNCGWW{f{b>nbRyi3@gEO+y;z{0^HQ&-+Thoz_~Z5{U-f*9-bxvh;`EDbb~FZsAd)b zsThe3EN$=~X$NmzSx}yCw^H}@b|tkJe>>D?c=0V~vC758+pt<6u(Cg00}gD=wi3VU zQm=lXGdvFM&-#@J8e*}R zw-h^&2_KODrL1T(c9fG4(iD9VzwR>$ouo%5tQoY?I^`>>6>Ztdbsa7VB`)UD`s zdAGW0sqjRsn4-K`mr|ooU{!dVi3i;1P6K#^yH8)#TF%GZiF4k^t>ZSVr@8UnDH~|! zzQSWn`Fy0pyO^7&)6+bJt=r}2u+A30HUG1M>d1KDl5am|g~(-ew-!uIy-PZ**SpZw z86WA~Z;><(+fXhL!5U5TF^$kf#)tZk9T~Dw)f#)}@4>WB6IbFMMiB+5PddxO{WTGG z)^%G4#vpZRFsGY)=1h%$-6+?{Q~#g66GhhumV9R@uFSRQohAo>XzsACfl%Gyp@d=d zJfBiNh*w9-7PCVZ2=IiT>~A>=hxe6OuFhAPM`heC;F<>oFWrU}wKTrdD4lp0%mU@d z8P)SK+b%YNQWl-$p|MRy`iCfffAg&zpUqc=mM^m~Kc{(CrzPYtGv`u* zIOTGtT(MHHg1Y~W(Wt0Oz3H9V{r>)zn5gu0g=>LNUAy{bB&9I;FX_@pzBI7I+N$yC zk`vHHlEHOUP{NJ0d7vua_*wQa_OE)_@WKs~+>$MKSiF9m;8FCG#Kp!*51+I%f1X^g zv$8D_9*3=5ofy>D#9Vx}Y4r9Kzu0hFjx*1&KEd@Q*J!n?%Ur#5?43}GZD7J?%^UPm z`pI>|vx8ABXJ4Ba`m4D;bYjg4qf&y_qAHw3O|dK`GGR=QNWVQ+6t|^^|J}sWFidIR@t8`*9?3ugK~9R-B>A6 z-~?5dy?J&-m<{m}r;T4n-0j53*Kaxa>*o{?6Sii3m9}`ZZM>!hbf*$#6$F-k5)N z{s(O-JP4}E#i2aOH<4qQ)5MGtydh^$n1p<{1^HQ;D=%*Lh0xv4Q8Zmzplj|u(;dRdDB*MLHOjJn z?{3WexQ*@iwExlGwM8|NWl`302JOK?rxBtEI-t@B8d^mVL6}w$Z6#@W8UiTD!$5ey zNeJ{nH%JT!Q51OzA^`(I2r+>W(t?VJ5D)<&@-Pt;!YhP8AS9WpIBP!IkLfk5`)3wE zRUh}RQ}>*^@4e?#?Q<$0fk0^#tE%5EOT8b!CstXtc-Yw+LFcA%wL7&I_&lI|bDGC#FGCJ&%(TP?~8U?3H-z zv@P(FQSr7}^l9aj=#VtC?8DuQjKTDgX4Fph^=$m8q&w%9Jt${LlSCDT)6Q5jd<7#;;XM!@^n<5030d-X2AKemZ7h3e7D>`6 z4Tur*h2z15b6MrMsj>}Hb6t3b11#%AlHAs(GQ9%3)>1`X3ON>GXmHS4Z)LjSx>apZ zcej^j5_*Ori4^Ym3c|bJHGVUr;=I646-8Y3$UEuiRSUDV^($)%*R~8$^Ng6z6rq4_ zoV}w*y=`VBC1Q*Z$Kwp%;f!_sw}J4Cq35k#r%gj}nf|DcW^?fC1USLrm5I@juu#@e z$2Y$$zAlo*o9XSE)z|mo`(DTm4<8t;FI$}cP{n&~6!N0R>%L!+d!$3lax>=ZX27Ta zA>TuaT`dWmdRN$MK;iTv;v~^nn*AQuSzODA16BQj|F)p&0v3|B_>>h>nwzjpz*#Nj z(;}@E#%<05U%`(4zV`FBp@R!gq%m+WDjLZ)SN%zhnfWnwKl@eOxzP7q>>1+YY);d# zn7rE+yB6b}UD^L~WM2!%(KbpGA20kFpgJW7p>)@zi`hqmy2>nvxN-rx!03=@vb*l% zXxp;R@q|WO(joc+p~{V2p%_w*e( z`_v<@XZGC7djFxEPj9P9f5ArwY8V@HR(JEIXa{!t>>PRIG*o*cX~w2fgK(|#7Ar0K0cXUG-1ADe@SsT zzbl*UKOyfIEVp0j|G&le>q5Sy53bu}-6p?$8uUtOV|!7RuS7SrPcC1%!k5dW7z`$KqzTb1(rp6sJz`57E2n2? zp}UT3-`qGn+e?D)Bs_1++6{-n0Kvw$UgkKZgL*O43Sj|4sI1-hwLm;H6GL;CEzNNI z`(3MD$*yFet$jaQsVvgm=A2^6(hpHoRMh29^`}}~A}i+KpSrM3hkm41AffTAgHZ*P~&LG6%8>HPcFuwzyh7I`od&Ar;O^1K1jt;Wk!S0NGd{rqcl zz{8DB>AC8W2#9gsX2%?cX7~gId>k7aTU@L+%;@awTuCMn2xLC}@#EaQXG$2pYwSoU zW-=It89bm|I#2^31WxKLHGEm8vso1afed7RV#Y`vlt<<}+RCh~=c?)U%^9V~EG_fd zqmxnY)%`SvnT#u+}qG?#PR_`<`~&r=hf^5kA$U}p^ggYjs< z&NiGNQ*D7jU_NZEqkcQ@nKB`W5#2kv7+Asar`8?#I3RLajbSGCvRdDV$v0v~_ko}t zgDxhpIvyp-R>g8T4w37J$ZX?-y&6{i5K9THeWcF{K>Vo)I=4`Gs3uE!WrvM?kloMl8XfcD^RdZUN9QH)|Tyuh+z(kM4~^B#$d77 zco{d8eGQ8<02iKQ8L6{kcfr}{7L3%3HiKN>p`OO_nqvk@-1e{^<#0H5pkt%JjS|)x zXf&ED8Ms7?2P6Rj0eoTH3UP^I*Uat)x+H7ffss0jE9iTHTIj#Q6`DN}H-EX0qheF+ uPi>g8XM`Nnp{)K5ltWbl@Za8*WTSS`q0BMT;YI)$DrfCrwv>~X|M@T0FLI#( literal 0 HcmV?d00001 diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..9982c21 --- /dev/null +++ b/public/index.php @@ -0,0 +1,9 @@ +setDescription('Make a database backup') + ; + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $io = new SymfonyStyle($input, $output); + + try { + $databases = $this->backupService->getDatabases(); + $databasesCount = count($databases); + + if($databasesCount > 0) + { + $io->section('Démarrage des backups'); + $io->progressStart($databasesCount); + + foreach($databases as $database) + { + $this->backupService->backup($database, 'Backup quotidien'); + $io->progressAdvance(); + } + + $io->progressFinish(); + + $io->section('Nettoyage des anciennes sauvegardes'); + $io->progressStart($databasesCount); + + foreach($databases as $database) + { + $this->backupService->clean($database); + $io->progressAdvance(); + } + + $io->progressFinish(); + } + + } catch (\Exception $e) + { + dump($e->getMessage()); + return Command::INVALID; + } + + return Command::SUCCESS; + } +} \ No newline at end of file diff --git a/src/Command/MakeUserCommand.php b/src/Command/MakeUserCommand.php new file mode 100644 index 0000000..e9356c4 --- /dev/null +++ b/src/Command/MakeUserCommand.php @@ -0,0 +1,58 @@ +setDescription('Create user') + ; + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $io = new SymfonyStyle($input, $output); + + $email = $io->ask('Adresse email'); + $plainPassword = $io->askHidden('Mot de passe'); + + $user = new User(); + $user->setEmail($email) + ->setPassword($this->hasher->hashPassword($user, $plainPassword)); + + $this->manager->persist($user); + $this->manager->flush(); + + $io->success( + sprintf("L'utilisateur %s a bien été créé ! Vous pouvez désormais vous connecter", $email) + ); + + return Command::SUCCESS; + } +} diff --git a/src/Command/RegenerateAppSecretCommand.php b/src/Command/RegenerateAppSecretCommand.php new file mode 100644 index 0000000..cdf0de3 --- /dev/null +++ b/src/Command/RegenerateAppSecretCommand.php @@ -0,0 +1,37 @@ +success('La nouvelle APP_SECRET a bien été régénérée !'); + + return Command::SUCCESS; + } +} \ No newline at end of file diff --git a/src/Controller/.gitignore b/src/Controller/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/src/Controller/Admin/BackupCrudController.php b/src/Controller/Admin/BackupCrudController.php new file mode 100644 index 0000000..9730799 --- /dev/null +++ b/src/Controller/Admin/BackupCrudController.php @@ -0,0 +1,119 @@ +add(EntityFilter::new('db', 'Base de données')) + ->add(DateTimeFilter::new('createdAt', 'Date de création')) + ->add(ChoiceFilter::new('context', 'Contexte')->setChoices( + [ + 'Backup quotidien' => 'Backup quotidien', + 'Backup manuel' => 'Backup manuel' + ] + )) + ->add(TextFilter::new('backupFileName', 'Nom du fichier')); + } + + public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder + { + $qb = $this->get(EntityRepository::class)->createQueryBuilder($searchDto, $entityDto, $fields, $filters); + + $qb + ->join('entity.db', 'db') + ->join('db.user', 'u') + ->andWhere('u.id = :user') + ->setParameter('user', $this->getUser()->getId()) + ->orderBy('entity.createdAt', 'DESC'); + + return $qb; + } + + /** + * @throws \Exception + */ + public function downloadBackupAction(AdminContext $context) + { + /** @var Backup $backup */ + $backup = $context->getEntity()->getInstance(); + + if((bool)$this->backupOnLocal === true) + { + return $this->backupService->downloadBackupFile($backup); + } + + return new RedirectResponse($this->s3Helper->generatePresignedUri($backup)); + } + + public function configureActions(Actions $actions): Actions + { + $downloadBackupAction = Action::new('downloadBackup', 'Télécharger') + ->linkToCrudAction('downloadBackupAction'); + + return $actions + ->add(Crud::PAGE_INDEX, $downloadBackupAction) + ->setPermission('downloadBackup', 'can_show_backup') + ->remove(Crud::PAGE_INDEX, Action::NEW) + ->remove(Crud::PAGE_INDEX, Action::EDIT) + ; + } + + public function configureCrud(Crud $crud): Crud + { + return $crud + ->setPageTitle(Crud::PAGE_INDEX, 'Liste des backups') + ; + } + + public function configureFields(string $pageName): iterable + { + yield DateTimeField::new('createdAt', 'Créé le') + ->setFormat('dd-MM-Y HH:mm'); + yield TextField::new('db.db_name', 'Base de données'); + yield TextField::new('context', 'Contexte'); + yield TextField::new('backupFileName', 'Nom du fichier'); + } +} diff --git a/src/Controller/Admin/DashboardController.php b/src/Controller/Admin/DashboardController.php new file mode 100644 index 0000000..22d530e --- /dev/null +++ b/src/Controller/Admin/DashboardController.php @@ -0,0 +1,33 @@ +setTitle('DbSaver'); + } + + public function configureMenuItems(): iterable + { + yield MenuItem::linktoDashboard('Accueil', 'fa fa-home'); + yield MenuItem::linkToCrud('Bases de données', 'fas fa-database', Database::class); + yield MenuItem::linkToCrud('Backups', 'fas fa-shield-alt', Backup::class); + } +} diff --git a/src/Controller/Admin/DatabaseCrudController.php b/src/Controller/Admin/DatabaseCrudController.php new file mode 100644 index 0000000..98bc658 --- /dev/null +++ b/src/Controller/Admin/DatabaseCrudController.php @@ -0,0 +1,156 @@ +add(TextFilter::new('db_name', 'Nom')) + ->add(TextFilter::new('host', 'Host')) + ->add(NumericFilter::new('port', 'Port')) + ->add(TextFilter::new('db_user', 'Utilisateur')) + ->add(NumericFilter::new('max_backups', 'Nombre maximal de backups')) + ->add(DateTimeFilter::new('createdAt', 'Ajouté le')) + ; + } + + public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder + { + $qb = $this->get(EntityRepository::class)->createQueryBuilder($searchDto, $entityDto, $fields, $filters); + + $qb + ->join('entity.user', 'u') + ->andWhere('u.id = :user') + ->setParameter('user', $this->getUser()->getId()) + ->orderBy('entity.createdAt', 'DESC'); + + return $qb; + } + + public function launchBackupAction(AdminContext $context, EntityManagerInterface $manager) + { + $database = $context->getEntity()->getInstance(); + $this->backupService->backup($database, 'Backup manuel'); + $this->backupService->clean($database); + + $this->addFlash( + 'success', + 'Le backup a bien été créé !' + ); + + return $this->redirect($context->getReferrer()); + } + + public function showDatabaseBackupsAction(AdminContext $context) + { + /** @var Database $database */ + $database = $context->getEntity()->getInstance(); + + $url = $this->adminUrlGenerator->setController(BackupCrudController::class) + ->setAction(Action::INDEX) + ->setEntityId(null) + ->set('filters', [ + 'db' => [ + 'comparison' => '=', + 'value' => (string) $database->getId() + ] + ]) + ->generateUrl(); + return $this->redirect($url); + } + + public function configureActions(Actions $actions): Actions + { + $launchBackupAction = Action::new('launchBackup', 'Lancer un backup') + ->linkToCrudAction('launchBackupAction'); + + $showDatabaseBackupsAction = Action::new('showDatabaseBackups', 'Voir les backups') + ->linkToCrudAction('showDatabaseBackupsAction'); + + return $actions + ->add(Crud::PAGE_INDEX, $launchBackupAction) + ->add(Crud::PAGE_INDEX, $showDatabaseBackupsAction) + ->setPermission('launchBackup', 'can_show_database') + ->setPermission('showDatabaseBackups', 'can_show_database') + ->remove(Crud::PAGE_NEW, Action::SAVE_AND_ADD_ANOTHER) + ->update(Crud::PAGE_INDEX, Action::NEW, function (Action $action) { + return $action->setLabel('Ajouter une base de données'); + }) + ->add(Crud::PAGE_NEW, Action::INDEX) + ->remove(Crud::PAGE_EDIT, Action::SAVE_AND_CONTINUE) + ->add(Crud::PAGE_EDIT, Action::INDEX) + ; + } + + public function configureCrud(Crud $crud): Crud + { + return $crud + ->setPageTitle(Crud::PAGE_INDEX, 'Liste des bases de données') + ->setPageTitle(Crud::PAGE_EDIT, 'Modifier les paramètres de la base de données') + ->setPageTitle(Crud::PAGE_NEW, 'Nouvelle base de données') + ; + } + + public function configureFields(string $pageName): iterable + { + yield TextField::new('db_name', 'Nom de la base de données'); + yield TextField::new('host', 'Host'); + yield NumberField::new('port', 'Port'); + yield TextField::new('db_user', 'Utilisateur'); + yield TextField::new('db_plain_password', 'Mot de passe') + ->setHelp("Les mots de passes seront cryptés et n'apparaîtront pas en + clair. Ils seront décryptés uniquement lorsqu'ils seront nécessaires pour + lancer les backups. Vous devrez renseigner ce champs à chaque modification." + ) + ->onlyOnForms() + ->setRequired(true); + yield NumberField::new('max_backups', 'Nombre de backups à mémoriser'); + + yield CollectionField::new('backups') + ->hideOnForm(); + + yield DateTimeField::new('createdAt', 'Ajouté le') + ->setFormat('dd-MM-Y HH:mm') + ->hideOnForm(); + } +} diff --git a/src/Controller/SecurityController.php b/src/Controller/SecurityController.php new file mode 100644 index 0000000..c67b3fe --- /dev/null +++ b/src/Controller/SecurityController.php @@ -0,0 +1,63 @@ +getUser()) { + return $this->redirectToRoute('admin'); + } + + // get the login error if there is one + $error = $authenticationUtils->getLastAuthenticationError(); + // last username entered by the user + $lastUsername = $authenticationUtils->getLastUsername(); + + return $this->render('@EasyAdmin/page/login.html.twig', [ + // parameters usually defined in Symfony login forms + 'error' => $error, + 'last_username' => $lastUsername, + + // the title visible above the login form (define this option only if you are + // rendering the login template in a regular Symfony controller; when rendering + // it from an EasyAdmin Dashboard this is automatically set as the Dashboard title) + 'page_title' => 'DbSaver', + + // the string used to generate the CSRF token. If you don't define + // this parameter, the login form won't include a CSRF token + 'csrf_token_intention' => 'authenticate', + + // the URL users are redirected to after the login (default: '/admin') + 'target_path' => $this->generateUrl('admin'), + + // the label displayed for the username form field (the |trans filter is applied to it) + 'username_label' => 'Adresse email', + + // the label displayed for the password form field (the |trans filter is applied to it) + 'password_label' => 'Mot de passe', + + // the label displayed for the Sign In form button (the |trans filter is applied to it) + 'sign_in_label' => 'Connexion', + + // the 'name' HTML attribute of the used for the username field (default: '_username') + 'username_parameter' => 'email', + + // the 'name' HTML attribute of the used for the password field (default: '_password') + 'password_parameter' => 'password', + ]); + } + + #[Route(path: '/logout', name: 'app_logout')] + public function logout() + { + throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.'); + } +} diff --git a/src/Entity/.gitignore b/src/Entity/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/src/Entity/Backup.php b/src/Entity/Backup.php new file mode 100644 index 0000000..2b28221 --- /dev/null +++ b/src/Entity/Backup.php @@ -0,0 +1,202 @@ +createdAt = new DateTimeImmutable(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getBackupFileName(): ?string + { + return $this->backupFileName; + } + + public function setBackupFileName(?string $backupFileName): self + { + $this->backupFileName = $backupFileName; + + return $this; + } + + /** + * @param File|null $backupFile + */ + public function setBackupFile(File $backupFile = null): Backup + { + $this->backupFile = $backupFile; + + if ($backupFile) { + $this->updatedAt = new DateTimeImmutable(); + } + + return $this; + } + + public function getBackupFile(): ?File + { + return $this->backupFile; + } + + public function getMimeType(): ?string + { + return $this->mimeType; + } + + public function setMimeType(?string $mimeType): self + { + $this->mimeType = $mimeType; + + return $this; + } + + public function getUpdatedAt(): ?\DateTimeInterface + { + return $this->updatedAt; + } + + public function setUpdatedAt(\DateTimeInterface $updatedAt): self + { + $this->updatedAt = $updatedAt; + + return $this; + } + + public function getBackupFileSize(): ?int + { + return $this->backupFileSize; + } + + public function setBackupFileSize(?int $backupFileSize): self + { + $this->backupFileSize = $backupFileSize; + + return $this; + } + + public function getContext(): ?string + { + return $this->context; + } + + public function setContext(string $context): self + { + $this->context = $context; + + return $this; + } + + public function getCreatedAt(): ?\DateTimeInterface + { + return $this->createdAt; + } + + public function setCreatedAt(\DateTimeInterface $createdAt): self + { + $this->createdAt = $createdAt; + + return $this; + } + + /** @see \Serializable::serialize() */ + public function serialize(): ?string + { + return serialize([ + $this->id, + // $this->backupFile, + ]); + } + + /** + * @see \Serializable::unserialize() + */ + public function unserialize($data) + { + [ + $this->id, + // $this->backupFile, + ] = unserialize($data, ['allowed_classes' => false]); + } + + public function getOriginalName(): ?string + { + return $this->originalName; + } + + public function setOriginalName(?string $originalName): self + { + $this->originalName = $originalName; + + return $this; + } + + public function getDb(): ?Database + { + return $this->db; + } + + public function setDb(?Database $db): self + { + $this->db = $db; + + return $this; + } +} diff --git a/src/Entity/Database.php b/src/Entity/Database.php new file mode 100644 index 0000000..cc9e601 --- /dev/null +++ b/src/Entity/Database.php @@ -0,0 +1,201 @@ +backups = new ArrayCollection(); + $this->createdAt = new DateTimeImmutable(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getHost(): ?string + { + return $this->host; + } + + public function setHost(string $host): self + { + $this->host = $host; + + return $this; + } + + public function getPort(): ?int + { + return $this->port; + } + + public function setPort(?int $port): self + { + $this->port = $port; + + return $this; + } + + public function getDbUser(): ?string + { + return $this->db_user; + } + + public function setDbUser(string $db_user): self + { + $this->db_user = $db_user; + + return $this; + } + + public function getDbPassword(): ?string + { + return $this->db_password; + } + + public function setDbPassword(string $db_password): self + { + $this->db_password = $db_password; + + return $this; + } + + public function getDbName(): ?string + { + return $this->db_name; + } + + public function setDbName(string $db_name): self + { + $this->db_name = $db_name; + + return $this; + } + + public function getMaxBackups(): ?int + { + return $this->max_backups; + } + + public function setMaxBackups(int $max_backups): self + { + $this->max_backups = $max_backups; + + return $this; + } + + /** + * @return Collection|Backup[] + */ + public function getBackups(): Collection + { + return $this->backups; + } + + public function addBackup(Backup $backup): self + { + if (!$this->backups->contains($backup)) { + $this->backups[] = $backup; + $backup->setDb($this); + } + + return $this; + } + + public function removeBackup(Backup $backup): self + { + if ($this->backups->removeElement($backup)) { + // set the owning side to null (unless already changed) + if ($backup->getDb() === $this) { + $backup->setDb(null); + } + } + + return $this; + } + + public function getDbPlainPassword(): ?string + { + return $this->db_plain_password; + } + + public function setDbPlainPassword(?string $db_plain_password): self + { + $this->db_plain_password = $db_plain_password; + + return $this; + } + + public function __toString() + { + return $this->db_name; + } + + public function getCreatedAt(): ?\DateTimeInterface + { + return $this->createdAt; + } + + public function setCreatedAt(\DateTimeInterface $createdAt): self + { + $this->createdAt = $createdAt; + + return $this; + } + + public function getUser(): ?User + { + return $this->user; + } + + public function setUser(?User $user): self + { + $this->user = $user; + + return $this; + } +} diff --git a/src/Entity/User.php b/src/Entity/User.php new file mode 100644 index 0000000..4b412b2 --- /dev/null +++ b/src/Entity/User.php @@ -0,0 +1,156 @@ +dbases = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getEmail(): ?string + { + return $this->email; + } + + public function setEmail(string $email): self + { + $this->email = $email; + + return $this; + } + + /** + * A visual identifier that represents this user. + * + * @see UserInterface + */ + public function getUserIdentifier(): string + { + return (string) $this->email; + } + + /** + * @deprecated since Symfony 5.3, use getUserIdentifier instead + */ + public function getUsername(): string + { + return (string) $this->email; + } + + /** + * @see UserInterface + */ + public function getRoles(): array + { + $roles = $this->roles; + // guarantee every user at least has ROLE_USER + $roles[] = 'ROLE_USER'; + + return array_unique($roles); + } + + public function setRoles(array $roles): self + { + $this->roles = $roles; + + return $this; + } + + /** + * @see PasswordAuthenticatedUserInterface + */ + public function getPassword(): string + { + return $this->password; + } + + public function setPassword(string $password): self + { + $this->password = $password; + + return $this; + } + + /** + * Returning a salt is only needed, if you are not using a modern + * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml. + * + * @see UserInterface + */ + public function getSalt(): ?string + { + return null; + } + + /** + * @see UserInterface + */ + public function eraseCredentials() + { + // If you store any temporary, sensitive data on the user, clear it here + // $this->plainPassword = null; + } + + /** + * @return Collection|Database[] + */ + public function getDbases(): Collection + { + return $this->dbases; + } + + public function addDbase(Database $dbase): self + { + if (!$this->dbases->contains($dbase)) { + $this->dbases[] = $dbase; + $dbase->setUser($this); + } + + return $this; + } + + public function removeDbase(Database $dbase): self + { + if ($this->dbases->removeElement($dbase)) { + // set the owning side to null (unless already changed) + if ($dbase->getUser() === $this) { + $dbase->setUser(null); + } + } + + return $this; + } +} diff --git a/src/EventSubscriber/DatabaseSubscriber.php b/src/EventSubscriber/DatabaseSubscriber.php new file mode 100644 index 0000000..22f0055 --- /dev/null +++ b/src/EventSubscriber/DatabaseSubscriber.php @@ -0,0 +1,61 @@ + 'beforePersistedEvent', + BeforeEntityUpdatedEvent::class => 'beforeUpdatedEvent', + ]; + } + + public function beforePersistedEvent(BeforeEntityPersistedEvent $event) + { + $entity = $event->getEntityInstance(); + + if(!($entity instanceof Database)) + { + return; + } + + $entity->setDbPassword($this->encryptPassword($entity->getDbPlainPassword())) + ->setDbPlainPassword(null) + ->setUser($this->security->getUser()); + } + + public function beforeUpdatedEvent(BeforeEntityUpdatedEvent $event) + { + $entity = $event->getEntityInstance(); + + if(!($entity instanceof Database)) + { + return; + } + + if($entity->getDbPlainPassword()) + { + $entity->setDbPassword($this->encryptPassword($entity->getDbPlainPassword())) + ->setDbPlainPassword(null); + } + } + + private function encryptPassword(string $plainPassword) + { + return $this->encryptor->encrypt($plainPassword); + } +} \ No newline at end of file diff --git a/src/Kernel.php b/src/Kernel.php new file mode 100644 index 0000000..8e96873 --- /dev/null +++ b/src/Kernel.php @@ -0,0 +1,38 @@ +import('../config/{packages}/*.yaml'); + $container->import('../config/{packages}/'.$this->environment.'/*.yaml'); + + if (is_file(\dirname(__DIR__).'/config/services.yaml')) { + $container->import('../config/services.yaml'); + $container->import('../config/{services}_'.$this->environment.'.yaml'); + } else { + $container->import('../config/{services}.php'); + } + } + + protected function configureRoutes(RoutingConfigurator $routes): void + { + $routes->import('../config/{routes}/'.$this->environment.'/*.yaml'); + $routes->import('../config/{routes}/*.yaml'); + + if (is_file(\dirname(__DIR__).'/config/routes.yaml')) { + $routes->import('../config/routes.yaml'); + } else { + $routes->import('../config/{routes}.php'); + } + } +} diff --git a/src/Repository/.gitignore b/src/Repository/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/src/Repository/BackupRepository.php b/src/Repository/BackupRepository.php new file mode 100644 index 0000000..64ec475 --- /dev/null +++ b/src/Repository/BackupRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('b') + ->andWhere('b.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('b.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Backup + { + return $this->createQueryBuilder('b') + ->andWhere('b.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/DatabaseRepository.php b/src/Repository/DatabaseRepository.php new file mode 100644 index 0000000..a3da5d9 --- /dev/null +++ b/src/Repository/DatabaseRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('d') + ->andWhere('d.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('d.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Database + { + return $this->createQueryBuilder('d') + ->andWhere('d.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php new file mode 100644 index 0000000..5eaa8c5 --- /dev/null +++ b/src/Repository/UserRepository.php @@ -0,0 +1,67 @@ +setPassword($newHashedPassword); + $this->_em->persist($user); + $this->_em->flush(); + } + + // /** + // * @return User[] Returns an array of User objects + // */ + /* + public function findByExampleField($value) + { + return $this->createQueryBuilder('u') + ->andWhere('u.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('u.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?User + { + return $this->createQueryBuilder('u') + ->andWhere('u.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Security/AppCustomAuthenticator.php b/src/Security/AppCustomAuthenticator.php new file mode 100644 index 0000000..6c2c079 --- /dev/null +++ b/src/Security/AppCustomAuthenticator.php @@ -0,0 +1,57 @@ +request->get('email', ''); + + $request->getSession()->set(Security::LAST_USERNAME, $email); + + return new Passport( + new UserBadge($email), + new PasswordCredentials($request->request->get('password', '')), + [ + new CsrfTokenBadge('authenticate', $request->get('_csrf_token')), + new RememberMeBadge() + ] + ); + } + + public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response + { + if ($targetPath = $this->getTargetPath($request->getSession(), $firewallName)) { + return new RedirectResponse($targetPath); + } + + return new RedirectResponse($this->urlGenerator->generate('admin')); + } + + protected function getLoginUrl(Request $request): string + { + return $this->urlGenerator->generate(self::LOGIN_ROUTE); + } +} diff --git a/src/Security/Voter/BackupVoter.php b/src/Security/Voter/BackupVoter.php new file mode 100644 index 0000000..912bc71 --- /dev/null +++ b/src/Security/Voter/BackupVoter.php @@ -0,0 +1,43 @@ +attributes, true) + && $subject instanceof Backup; + } + + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool + { + $user = $token->getUser(); + // if the user is anonymous, do not grant access + if (!$user instanceof UserInterface) { + return false; + } + + /** @var Backup $subject */ + + // ... (check conditions and return true to grant permission) ... + return match ($attribute) { + self::CAN_SHOW_BACKUP => $subject->getDb()->getUser()->getId() === $user->getId(), + default => false, + }; + + } +} diff --git a/src/Security/Voter/DatabaseVoter.php b/src/Security/Voter/DatabaseVoter.php new file mode 100644 index 0000000..92c96d2 --- /dev/null +++ b/src/Security/Voter/DatabaseVoter.php @@ -0,0 +1,43 @@ +attributes, true) + && $subject instanceof Database; + } + + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool + { + $user = $token->getUser(); + // if the user is anonymous, do not grant access + if (!$user instanceof UserInterface) { + return false; + } + + /** @var Database $subject */ + + // ... (check conditions and return true to grant permission) ... + return match ($attribute) { + self::CAN_SHOW_DATABASE => $subject->getUser()->getId() === $user->getId(), + default => false, + }; + + } +} diff --git a/src/Service/BackupService.php b/src/Service/BackupService.php new file mode 100644 index 0000000..fafcb0c --- /dev/null +++ b/src/Service/BackupService.php @@ -0,0 +1,143 @@ +defineMysqlDumpObject($database); + + // Define temp path + $filepath = sprintf( + '%s/backup_%s_hash_%s.sql', + $this->projectDir, + (new \DateTime())->format('d_m_y'), + random_int(1000,99999999), + ); + + // Launch backup + $mysqldump->start($filepath); + + // Get file infos + $fileInfo = pathinfo($filepath); + + // Generate Uploaded file + $uploadedFile = new UploadedFile( + $filepath, + $fileInfo['basename'], + sprintf('application/%s', $fileInfo['extension']), + null, + true + ); + + // Create backup entity row and applied uploaded file + $backup = new Backup(); + + $backup->setContext($context) + ->setBackupFile($uploadedFile) + ->setDb($database); + + $this->manager->persist($backup); + $this->manager->flush(); + + // Delete temp file from local project + $fileSystem = new Filesystem(); + $fileSystem->remove($filepath); + } + + public function clean(Database $database) + { + $maxBackups = $database->getMaxBackups(); + $backups = $database->getBackups(); + + if(count($backups) > $maxBackups) + { + for($i=$maxBackups, $iMax = count($backups); $i < $iMax; $i++) + { + $deleteBackup = $backups[$i]; + $this->manager->remove($deleteBackup); + } + } + + $this->manager->flush(); + } + + /** + * @throws \Exception + */ + private function defineMysqlDumpObject(Database $database): Mysqldump + { + if($database->getPort()) + { + $dsn = sprintf( + 'mysql:host=%s;dbname=%s', + $database->getHost(), + $database->getDbName() + ); + } else { + $dsn = sprintf( + 'mysql:host=%s:%s;dbname=%s', + $database->getHost(), + $database->getPort(), + $database->getDbName() + ); + } + + return new Mysqldump( + $dsn, + $database->getDbUser(), + $this->encryptor->decrypt($database->getDbPassword()), + [ + 'add-drop-table' => true + ] + ); + } + + /** + * @throws \Exception + */ + public function downloadBackupFile(Backup $backup) + { + return $this->downloadHandler->downloadObject($backup, 'backupFile'); + } + + /** + * @return Backup[] + */ + public function getBackups() + { + return $this->backupRepository->findAll(); + } + + public function getDatabases() + { + return $this->databaseRepository->findAll(); + } +} \ No newline at end of file diff --git a/src/Service/S3Helper.php b/src/Service/S3Helper.php new file mode 100644 index 0000000..da0f16f --- /dev/null +++ b/src/Service/S3Helper.php @@ -0,0 +1,38 @@ +getBackupFileName() + ); + + $cmd = $this->s3Client->getCommand('GetObject', [ + 'Bucket' => $this->s3BucketName, + 'Key' => sprintf('backups/%s', $backup->getBackupFileName()), + 'ResponseContentType' => $backup->getMimeType(), + 'ResponseContentDisposition' => $disposition + ]); + + $request = $this->s3Client->createPresignedRequest($cmd, $expires); + + return (string) $request->getUri(); + } +} \ No newline at end of file diff --git a/symfony.lock b/symfony.lock new file mode 100644 index 0000000..b7779cc --- /dev/null +++ b/symfony.lock @@ -0,0 +1,679 @@ +{ + "aws/aws-sdk-php": { + "version": "3.190.3" + }, + "composer/package-versions-deprecated": { + "version": "1.11.99.2" + }, + "doctrine/annotations": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "a2759dd6123694c8d901d0ec80006e044c2e6457" + }, + "files": [ + "config/routes/annotations.yaml" + ] + }, + "doctrine/cache": { + "version": "2.1.1" + }, + "doctrine/collections": { + "version": "1.6.8" + }, + "doctrine/common": { + "version": "3.1.2" + }, + "doctrine/dbal": { + "version": "2.13.2" + }, + "doctrine/deprecations": { + "version": "v0.5.3" + }, + "doctrine/doctrine-bundle": { + "version": "2.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "2.4", + "ref": "dda18c8830b143bc31c0e0457fb13b9029614d76" + }, + "files": [ + "config/packages/doctrine.yaml", + "config/packages/prod/doctrine.yaml", + "config/packages/test/doctrine.yaml", + "src/Entity/.gitignore", + "src/Repository/.gitignore" + ] + }, + "doctrine/doctrine-migrations-bundle": { + "version": "3.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.1", + "ref": "ee609429c9ee23e22d6fa5728211768f51ed2818" + }, + "files": [ + "config/packages/doctrine_migrations.yaml", + "migrations/.gitignore" + ] + }, + "doctrine/event-manager": { + "version": "1.1.1" + }, + "doctrine/inflector": { + "version": "2.0.3" + }, + "doctrine/instantiator": { + "version": "1.4.0" + }, + "doctrine/lexer": { + "version": "1.2.1" + }, + "doctrine/migrations": { + "version": "3.2.1" + }, + "doctrine/orm": { + "version": "2.9.4" + }, + "doctrine/persistence": { + "version": "2.2.2" + }, + "doctrine/sql-formatter": { + "version": "1.1.1" + }, + "easycorp/easyadmin-bundle": { + "version": "3.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.0", + "ref": "b131e6cbfe1b898a508987851963fff485986285" + } + }, + "egulias/email-validator": { + "version": "3.1.1" + }, + "friendsofphp/proxy-manager-lts": { + "version": "v1.0.5" + }, + "guzzlehttp/guzzle": { + "version": "7.3.0" + }, + "guzzlehttp/promises": { + "version": "1.4.1" + }, + "guzzlehttp/psr7": { + "version": "1.8.2" + }, + "ifsnop/mysqldump-php": { + "version": "v2.9" + }, + "jms/metadata": { + "version": "2.5.0" + }, + "knplabs/gaufrette": { + "version": "v0.9.0" + }, + "knplabs/knp-gaufrette-bundle": { + "version": "v0.7.1" + }, + "laminas/laminas-code": { + "version": "4.4.2" + }, + "monolog/monolog": { + "version": "2.3.2" + }, + "mtdowling/jmespath.php": { + "version": "2.6.1" + }, + "myclabs/deep-copy": { + "version": "1.10.2" + }, + "nikic/php-parser": { + "version": "v4.12.0" + }, + "nzo/url-encryptor-bundle": { + "version": "v6.0.1" + }, + "phar-io/manifest": { + "version": "2.0.3" + }, + "phar-io/version": { + "version": "3.1.0" + }, + "phpdocumentor/reflection-common": { + "version": "2.2.0" + }, + "phpdocumentor/reflection-docblock": { + "version": "5.2.2" + }, + "phpdocumentor/type-resolver": { + "version": "1.4.0" + }, + "phpspec/prophecy": { + "version": "1.13.0" + }, + "phpunit/php-code-coverage": { + "version": "9.2.6" + }, + "phpunit/php-file-iterator": { + "version": "3.0.5" + }, + "phpunit/php-invoker": { + "version": "3.1.1" + }, + "phpunit/php-text-template": { + "version": "2.0.4" + }, + "phpunit/php-timer": { + "version": "5.0.3" + }, + "phpunit/phpunit": { + "version": "9.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "9.3", + "ref": "a6249a6c4392e9169b87abf93225f7f9f59025e6" + }, + "files": [ + ".env.test", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "psr/cache": { + "version": "2.0.0" + }, + "psr/container": { + "version": "1.1.1" + }, + "psr/event-dispatcher": { + "version": "1.0.0" + }, + "psr/http-client": { + "version": "1.0.1" + }, + "psr/http-message": { + "version": "1.0.1" + }, + "psr/link": { + "version": "1.1.1" + }, + "psr/log": { + "version": "1.1.4" + }, + "ralouphie/getallheaders": { + "version": "3.0.3" + }, + "sebastian/cli-parser": { + "version": "1.0.1" + }, + "sebastian/code-unit": { + "version": "1.0.8" + }, + "sebastian/code-unit-reverse-lookup": { + "version": "2.0.3" + }, + "sebastian/comparator": { + "version": "4.0.6" + }, + "sebastian/complexity": { + "version": "2.0.2" + }, + "sebastian/diff": { + "version": "4.0.4" + }, + "sebastian/environment": { + "version": "5.1.3" + }, + "sebastian/exporter": { + "version": "4.0.3" + }, + "sebastian/global-state": { + "version": "5.0.3" + }, + "sebastian/lines-of-code": { + "version": "1.0.3" + }, + "sebastian/object-enumerator": { + "version": "4.0.4" + }, + "sebastian/object-reflector": { + "version": "2.0.4" + }, + "sebastian/recursion-context": { + "version": "4.0.4" + }, + "sebastian/resource-operations": { + "version": "3.0.3" + }, + "sebastian/type": { + "version": "2.3.4" + }, + "sebastian/version": { + "version": "3.0.2" + }, + "sensio/framework-extra-bundle": { + "version": "5.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.2", + "ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b" + }, + "files": [ + "config/packages/sensio_framework_extra.yaml" + ] + }, + "symfony/asset": { + "version": "v5.3.4" + }, + "symfony/browser-kit": { + "version": "v5.3.4" + }, + "symfony/cache": { + "version": "v5.3.4" + }, + "symfony/cache-contracts": { + "version": "v2.4.0" + }, + "symfony/config": { + "version": "v5.3.4" + }, + "symfony/console": { + "version": "5.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.3", + "ref": "da0c8be8157600ad34f10ff0c9cc91232522e047" + }, + "files": [ + "bin/console" + ] + }, + "symfony/css-selector": { + "version": "v5.3.4" + }, + "symfony/debug-bundle": { + "version": "4.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.1", + "ref": "0ce7a032d344fb7b661cd25d31914cd703ad445b" + }, + "files": [ + "config/packages/dev/debug.yaml" + ] + }, + "symfony/debug-pack": { + "version": "v1.0.9" + }, + "symfony/dependency-injection": { + "version": "v5.3.4" + }, + "symfony/deprecation-contracts": { + "version": "v2.4.0" + }, + "symfony/doctrine-bridge": { + "version": "v5.3.4" + }, + "symfony/dom-crawler": { + "version": "v5.3.4" + }, + "symfony/dotenv": { + "version": "v5.3.6" + }, + "symfony/error-handler": { + "version": "v5.3.4" + }, + "symfony/event-dispatcher": { + "version": "v5.3.4" + }, + "symfony/event-dispatcher-contracts": { + "version": "v2.4.0" + }, + "symfony/expression-language": { + "version": "v5.3.4" + }, + "symfony/filesystem": { + "version": "v5.3.4" + }, + "symfony/finder": { + "version": "v5.3.4" + }, + "symfony/flex": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" + }, + "files": [ + ".env" + ] + }, + "symfony/form": { + "version": "v5.3.4" + }, + "symfony/framework-bundle": { + "version": "5.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.3", + "ref": "772b77cfb5017644547ef7f9364c54e4eb9a6c61" + }, + "files": [ + "config/packages/cache.yaml", + "config/packages/framework.yaml", + "config/preload.php", + "config/routes/framework.yaml", + "config/services.yaml", + "public/index.php", + "src/Controller/.gitignore", + "src/Kernel.php" + ] + }, + "symfony/http-client": { + "version": "v5.3.4" + }, + "symfony/http-client-contracts": { + "version": "v2.4.0" + }, + "symfony/http-foundation": { + "version": "v5.3.6" + }, + "symfony/http-kernel": { + "version": "v5.3.6" + }, + "symfony/intl": { + "version": "v5.3.4" + }, + "symfony/mailer": { + "version": "4.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.3", + "ref": "15658c2a0176cda2e7dba66276a2030b52bd81b2" + }, + "files": [ + "config/packages/mailer.yaml" + ] + }, + "symfony/maker-bundle": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" + } + }, + "symfony/mime": { + "version": "v5.3.4" + }, + "symfony/monolog-bridge": { + "version": "v5.3.4" + }, + "symfony/monolog-bundle": { + "version": "3.7", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.7", + "ref": "a7bace7dbc5a7ed5608dbe2165e0774c87175fe6" + }, + "files": [ + "config/packages/dev/monolog.yaml", + "config/packages/prod/deprecations.yaml", + "config/packages/prod/monolog.yaml", + "config/packages/test/monolog.yaml" + ] + }, + "symfony/notifier": { + "version": "5.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.0", + "ref": "c31585e252b32fe0e1f30b1f256af553f4a06eb9" + }, + "files": [ + "config/packages/notifier.yaml" + ] + }, + "symfony/options-resolver": { + "version": "v5.3.4" + }, + "symfony/orm-pack": { + "version": "v2.1.0" + }, + "symfony/password-hasher": { + "version": "v5.3.4" + }, + "symfony/phpunit-bridge": { + "version": "5.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.3", + "ref": "905679249e7b10f06c572917a9022a72cbfedc04" + }, + "files": [ + ".env.test", + "bin/phpunit", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "symfony/polyfill-intl-grapheme": { + "version": "v1.23.1" + }, + "symfony/polyfill-intl-icu": { + "version": "v1.23.0" + }, + "symfony/polyfill-intl-idn": { + "version": "v1.23.0" + }, + "symfony/polyfill-intl-normalizer": { + "version": "v1.23.0" + }, + "symfony/polyfill-mbstring": { + "version": "v1.23.1" + }, + "symfony/polyfill-php73": { + "version": "v1.23.0" + }, + "symfony/polyfill-php80": { + "version": "v1.23.1" + }, + "symfony/polyfill-php81": { + "version": "v1.23.0" + }, + "symfony/polyfill-uuid": { + "version": "v1.23.0" + }, + "symfony/process": { + "version": "v5.3.4" + }, + "symfony/profiler-pack": { + "version": "v1.0.5" + }, + "symfony/property-access": { + "version": "v5.3.4" + }, + "symfony/property-info": { + "version": "v5.3.4" + }, + "symfony/proxy-manager-bridge": { + "version": "v5.3.4" + }, + "symfony/routing": { + "version": "5.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.3", + "ref": "44633353926a0382d7dfb0530922c5c0b30fae11" + }, + "files": [ + "config/packages/routing.yaml", + "config/routes.yaml" + ] + }, + "symfony/runtime": { + "version": "v5.3.4" + }, + "symfony/security-bundle": { + "version": "5.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.3", + "ref": "227eba5e0c7e8fc4beda3537c3d81dc23ba08182" + }, + "files": [ + "config/packages/security.yaml" + ] + }, + "symfony/security-core": { + "version": "v5.3.6" + }, + "symfony/security-csrf": { + "version": "v5.3.4" + }, + "symfony/security-guard": { + "version": "v5.3.4" + }, + "symfony/security-http": { + "version": "v5.3.6" + }, + "symfony/serializer": { + "version": "v5.3.4" + }, + "symfony/serializer-pack": { + "version": "v1.0.4" + }, + "symfony/service-contracts": { + "version": "v2.4.0" + }, + "symfony/stopwatch": { + "version": "v5.3.4" + }, + "symfony/string": { + "version": "v5.3.3" + }, + "symfony/test-pack": { + "version": "v1.0.8" + }, + "symfony/translation": { + "version": "5.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.3", + "ref": "da64f5a2b6d96f5dc24914517c0350a5f91dee43" + }, + "files": [ + "config/packages/translation.yaml", + "translations/.gitignore" + ] + }, + "symfony/translation-contracts": { + "version": "v2.4.0" + }, + "symfony/twig-bridge": { + "version": "v5.3.4" + }, + "symfony/twig-bundle": { + "version": "5.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.3", + "ref": "3dd530739a4284e3272274c128dbb7a8140a66f1" + }, + "files": [ + "config/packages/twig.yaml", + "templates/base.html.twig" + ] + }, + "symfony/twig-pack": { + "version": "v1.0.1" + }, + "symfony/uid": { + "version": "v5.3.3" + }, + "symfony/validator": { + "version": "4.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.3", + "ref": "3eb8df139ec05414489d55b97603c5f6ca0c44cb" + }, + "files": [ + "config/packages/test/validator.yaml", + "config/packages/validator.yaml" + ] + }, + "symfony/var-dumper": { + "version": "v5.3.6" + }, + "symfony/var-exporter": { + "version": "v5.3.4" + }, + "symfony/web-link": { + "version": "v5.3.4" + }, + "symfony/web-profiler-bundle": { + "version": "3.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "6bdfa1a95f6b2e677ab985cd1af2eae35d62e0f6" + }, + "files": [ + "config/packages/dev/web_profiler.yaml", + "config/packages/test/web_profiler.yaml", + "config/routes/dev/web_profiler.yaml" + ] + }, + "symfony/yaml": { + "version": "v5.3.6" + }, + "theseer/tokenizer": { + "version": "1.2.1" + }, + "twig/extra-bundle": { + "version": "v3.3.1" + }, + "twig/twig": { + "version": "v3.3.2" + }, + "vich/uploader-bundle": { + "version": "1.7", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "master", + "version": "1.7", + "ref": "c4f5755b37fb65b9c6a3cbdae91205c15a137ed4" + }, + "files": [ + "config/packages/vich_uploader.yaml" + ] + }, + "webmozart/assert": { + "version": "1.10.0" + } +} diff --git a/templates/base.html.twig b/templates/base.html.twig new file mode 100644 index 0000000..16d7273 --- /dev/null +++ b/templates/base.html.twig @@ -0,0 +1,19 @@ + + + + + {% block title %}Welcome!{% endblock %} + {# Run `composer require symfony/webpack-encore-bundle` + and uncomment the following Encore helpers to start using Symfony UX #} + {% block stylesheets %} + {#{{ encore_entry_link_tags('app') }}#} + {% endblock %} + + {% block javascripts %} + {#{{ encore_entry_script_tags('app') }}#} + {% endblock %} + + + {% block body %}{% endblock %} + + diff --git a/templates/bundles/EasyAdminBundle/welcome.html.twig b/templates/bundles/EasyAdminBundle/welcome.html.twig new file mode 100644 index 0000000..77937c3 --- /dev/null +++ b/templates/bundles/EasyAdminBundle/welcome.html.twig @@ -0,0 +1,44 @@ +{# @var ea \EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext #} +{% extends '@EasyAdmin/page/content.html.twig' %} + +{% block page_title 'Bienvenue sur DbSaver !' %} + +{% block page_content %} + + +

Fonctionnement

+ +

+ Cette application vous sert à réaliser des backups quotidiens automatiques (et manuels) + pour vos bases de données MySQL. +

+ +

+ Vous n'avez qu'à renseigner les identifiants pour accéder aux différentes + bases de données, configurer une tâche CRON... et c'est fini. + Les mots de passe seront automatiquement cryptés. +

+ +

+ Vous pourrez ensuite grâce à DbSaver accéder aux différents backups de vos bases de données + en vous rendant sur l'onglet Backups. Ceux-ci peuvent être sauvegardés en + local ou sur le cloud d'Amazon AWS S3. Par défaut, l'application va + enregistrer les fichiers en local. Pour utiliser AWS S3, veuillez vous référer à la section ci-dessous. +

+ +

+ Documentation : https://github.com/bastien70/dbsaver +

+ +

Auteur

+

+ Cette application a été développée par Bastien LOUGHIN +

+ + +{% endblock %} diff --git a/templates/security/login.html.twig b/templates/security/login.html.twig new file mode 100644 index 0000000..7490fa3 --- /dev/null +++ b/templates/security/login.html.twig @@ -0,0 +1,42 @@ +{% extends 'base.html.twig' %} + +{% block title %}Log in!{% endblock %} + +{% block body %} +
+ {% if error %} +
{{ error.messageKey|trans(error.messageData, 'security') }}
+ {% endif %} + + {% if app.user %} +
+ You are logged in as {{ app.user.username }}, Logout +
+ {% endif %} + +

Please sign in

+ + + + + + + + {# + Uncomment this section and add a remember_me option below your firewall to activate remember me functionality. + See https://symfony.com/doc/current/security/remember_me.html + +
+ +
+ #} + + +
+{% endblock %} diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..469dcce --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,11 @@ +bootEnv(dirname(__DIR__).'/.env'); +} diff --git a/translations/.gitignore b/translations/.gitignore new file mode 100644 index 0000000..e69de29