diff --git a/vendor/autoload.php b/vendor/autoload.php
deleted file mode 100644
index ec640a4b1c9e6b52d4984945afc578d566960b1e..0000000000000000000000000000000000000000
--- a/vendor/autoload.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-// autoload.php @generated by Composer
-
-require_once __DIR__ . '/composer/autoload_real.php';
-
-return ComposerAutoloaderInitb646d551e704625fa4030ea47f2317b9::getLoader();
diff --git a/vendor/bin/var-dump-server b/vendor/bin/var-dump-server
deleted file mode 100644
index 947161e3ad2bd88dccc960f3ee2c691c9b040226..0000000000000000000000000000000000000000
--- a/vendor/bin/var-dump-server
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env sh
-
-dir=$(cd "${0%[/\\]*}" > /dev/null; cd "../symfony/var-dumper/Resources/bin" && pwd)
-
-if [ -d /proc/cygdrive ]; then
-    case $(which php) in
-        $(readlink -n /proc/cygdrive)/*)
-            # We are in Cygwin using Windows php, so the path must be translated
-            dir=$(cygpath -m "$dir");
-            ;;
-    esac
-fi
-
-"${dir}/var-dump-server" "$@"
diff --git a/vendor/bin/var-dump-server.bat b/vendor/bin/var-dump-server.bat
deleted file mode 100644
index 1cd1c0c804950601650ac81d26426bbf84c960d0..0000000000000000000000000000000000000000
--- a/vendor/bin/var-dump-server.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@ECHO OFF
-setlocal DISABLEDELAYEDEXPANSION
-SET BIN_TARGET=%~dp0/../symfony/var-dumper/Resources/bin/var-dump-server
-php "%BIN_TARGET%" %*
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
deleted file mode 100644
index 1a58957d25d4a5fd00be8d9f086a4ece3bf8371e..0000000000000000000000000000000000000000
--- a/vendor/composer/ClassLoader.php
+++ /dev/null
@@ -1,445 +0,0 @@
-<?php
-
-/*
- * This file is part of Composer.
- *
- * (c) Nils Adermann <naderman@naderman.de>
- *     Jordi Boggiano <j.boggiano@seld.be>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Composer\Autoload;
-
-/**
- * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
- *
- *     $loader = new \Composer\Autoload\ClassLoader();
- *
- *     // register classes with namespaces
- *     $loader->add('Symfony\Component', __DIR__.'/component');
- *     $loader->add('Symfony',           __DIR__.'/framework');
- *
- *     // activate the autoloader
- *     $loader->register();
- *
- *     // to enable searching the include path (eg. for PEAR packages)
- *     $loader->setUseIncludePath(true);
- *
- * In this example, if you try to use a class in the Symfony\Component
- * namespace or one of its children (Symfony\Component\Console for instance),
- * the autoloader will first look for the class under the component/
- * directory, and it will then fallback to the framework/ directory if not
- * found before giving up.
- *
- * This class is loosely based on the Symfony UniversalClassLoader.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Jordi Boggiano <j.boggiano@seld.be>
- * @see    https://www.php-fig.org/psr/psr-0/
- * @see    https://www.php-fig.org/psr/psr-4/
- */
-class ClassLoader
-{
-    // PSR-4
-    private $prefixLengthsPsr4 = array();
-    private $prefixDirsPsr4 = array();
-    private $fallbackDirsPsr4 = array();
-
-    // PSR-0
-    private $prefixesPsr0 = array();
-    private $fallbackDirsPsr0 = array();
-
-    private $useIncludePath = false;
-    private $classMap = array();
-    private $classMapAuthoritative = false;
-    private $missingClasses = array();
-    private $apcuPrefix;
-
-    public function getPrefixes()
-    {
-        if (!empty($this->prefixesPsr0)) {
-            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
-        }
-
-        return array();
-    }
-
-    public function getPrefixesPsr4()
-    {
-        return $this->prefixDirsPsr4;
-    }
-
-    public function getFallbackDirs()
-    {
-        return $this->fallbackDirsPsr0;
-    }
-
-    public function getFallbackDirsPsr4()
-    {
-        return $this->fallbackDirsPsr4;
-    }
-
-    public function getClassMap()
-    {
-        return $this->classMap;
-    }
-
-    /**
-     * @param array $classMap Class to filename map
-     */
-    public function addClassMap(array $classMap)
-    {
-        if ($this->classMap) {
-            $this->classMap = array_merge($this->classMap, $classMap);
-        } else {
-            $this->classMap = $classMap;
-        }
-    }
-
-    /**
-     * Registers a set of PSR-0 directories for a given prefix, either
-     * appending or prepending to the ones previously set for this prefix.
-     *
-     * @param string       $prefix  The prefix
-     * @param array|string $paths   The PSR-0 root directories
-     * @param bool         $prepend Whether to prepend the directories
-     */
-    public function add($prefix, $paths, $prepend = false)
-    {
-        if (!$prefix) {
-            if ($prepend) {
-                $this->fallbackDirsPsr0 = array_merge(
-                    (array) $paths,
-                    $this->fallbackDirsPsr0
-                );
-            } else {
-                $this->fallbackDirsPsr0 = array_merge(
-                    $this->fallbackDirsPsr0,
-                    (array) $paths
-                );
-            }
-
-            return;
-        }
-
-        $first = $prefix[0];
-        if (!isset($this->prefixesPsr0[$first][$prefix])) {
-            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
-
-            return;
-        }
-        if ($prepend) {
-            $this->prefixesPsr0[$first][$prefix] = array_merge(
-                (array) $paths,
-                $this->prefixesPsr0[$first][$prefix]
-            );
-        } else {
-            $this->prefixesPsr0[$first][$prefix] = array_merge(
-                $this->prefixesPsr0[$first][$prefix],
-                (array) $paths
-            );
-        }
-    }
-
-    /**
-     * Registers a set of PSR-4 directories for a given namespace, either
-     * appending or prepending to the ones previously set for this namespace.
-     *
-     * @param string       $prefix  The prefix/namespace, with trailing '\\'
-     * @param array|string $paths   The PSR-4 base directories
-     * @param bool         $prepend Whether to prepend the directories
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function addPsr4($prefix, $paths, $prepend = false)
-    {
-        if (!$prefix) {
-            // Register directories for the root namespace.
-            if ($prepend) {
-                $this->fallbackDirsPsr4 = array_merge(
-                    (array) $paths,
-                    $this->fallbackDirsPsr4
-                );
-            } else {
-                $this->fallbackDirsPsr4 = array_merge(
-                    $this->fallbackDirsPsr4,
-                    (array) $paths
-                );
-            }
-        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
-            // Register directories for a new namespace.
-            $length = strlen($prefix);
-            if ('\\' !== $prefix[$length - 1]) {
-                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
-            }
-            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
-            $this->prefixDirsPsr4[$prefix] = (array) $paths;
-        } elseif ($prepend) {
-            // Prepend directories for an already registered namespace.
-            $this->prefixDirsPsr4[$prefix] = array_merge(
-                (array) $paths,
-                $this->prefixDirsPsr4[$prefix]
-            );
-        } else {
-            // Append directories for an already registered namespace.
-            $this->prefixDirsPsr4[$prefix] = array_merge(
-                $this->prefixDirsPsr4[$prefix],
-                (array) $paths
-            );
-        }
-    }
-
-    /**
-     * Registers a set of PSR-0 directories for a given prefix,
-     * replacing any others previously set for this prefix.
-     *
-     * @param string       $prefix The prefix
-     * @param array|string $paths  The PSR-0 base directories
-     */
-    public function set($prefix, $paths)
-    {
-        if (!$prefix) {
-            $this->fallbackDirsPsr0 = (array) $paths;
-        } else {
-            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
-        }
-    }
-
-    /**
-     * Registers a set of PSR-4 directories for a given namespace,
-     * replacing any others previously set for this namespace.
-     *
-     * @param string       $prefix The prefix/namespace, with trailing '\\'
-     * @param array|string $paths  The PSR-4 base directories
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setPsr4($prefix, $paths)
-    {
-        if (!$prefix) {
-            $this->fallbackDirsPsr4 = (array) $paths;
-        } else {
-            $length = strlen($prefix);
-            if ('\\' !== $prefix[$length - 1]) {
-                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
-            }
-            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
-            $this->prefixDirsPsr4[$prefix] = (array) $paths;
-        }
-    }
-
-    /**
-     * Turns on searching the include path for class files.
-     *
-     * @param bool $useIncludePath
-     */
-    public function setUseIncludePath($useIncludePath)
-    {
-        $this->useIncludePath = $useIncludePath;
-    }
-
-    /**
-     * Can be used to check if the autoloader uses the include path to check
-     * for classes.
-     *
-     * @return bool
-     */
-    public function getUseIncludePath()
-    {
-        return $this->useIncludePath;
-    }
-
-    /**
-     * Turns off searching the prefix and fallback directories for classes
-     * that have not been registered with the class map.
-     *
-     * @param bool $classMapAuthoritative
-     */
-    public function setClassMapAuthoritative($classMapAuthoritative)
-    {
-        $this->classMapAuthoritative = $classMapAuthoritative;
-    }
-
-    /**
-     * Should class lookup fail if not found in the current class map?
-     *
-     * @return bool
-     */
-    public function isClassMapAuthoritative()
-    {
-        return $this->classMapAuthoritative;
-    }
-
-    /**
-     * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
-     *
-     * @param string|null $apcuPrefix
-     */
-    public function setApcuPrefix($apcuPrefix)
-    {
-        $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
-    }
-
-    /**
-     * The APCu prefix in use, or null if APCu caching is not enabled.
-     *
-     * @return string|null
-     */
-    public function getApcuPrefix()
-    {
-        return $this->apcuPrefix;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param bool $prepend Whether to prepend the autoloader or not
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Unregisters this instance as an autoloader.
-     */
-    public function unregister()
-    {
-        spl_autoload_unregister(array($this, 'loadClass'));
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param  string    $class The name of the class
-     * @return bool|null True if loaded, null otherwise
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->findFile($class)) {
-            includeFile($file);
-
-            return true;
-        }
-    }
-
-    /**
-     * Finds the path to the file where the class is defined.
-     *
-     * @param string $class The name of the class
-     *
-     * @return string|false The path if found, false otherwise
-     */
-    public function findFile($class)
-    {
-        // class map lookup
-        if (isset($this->classMap[$class])) {
-            return $this->classMap[$class];
-        }
-        if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
-            return false;
-        }
-        if (null !== $this->apcuPrefix) {
-            $file = apcu_fetch($this->apcuPrefix.$class, $hit);
-            if ($hit) {
-                return $file;
-            }
-        }
-
-        $file = $this->findFileWithExtension($class, '.php');
-
-        // Search for Hack files if we are running on HHVM
-        if (false === $file && defined('HHVM_VERSION')) {
-            $file = $this->findFileWithExtension($class, '.hh');
-        }
-
-        if (null !== $this->apcuPrefix) {
-            apcu_add($this->apcuPrefix.$class, $file);
-        }
-
-        if (false === $file) {
-            // Remember that this class does not exist.
-            $this->missingClasses[$class] = true;
-        }
-
-        return $file;
-    }
-
-    private function findFileWithExtension($class, $ext)
-    {
-        // PSR-4 lookup
-        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
-
-        $first = $class[0];
-        if (isset($this->prefixLengthsPsr4[$first])) {
-            $subPath = $class;
-            while (false !== $lastPos = strrpos($subPath, '\\')) {
-                $subPath = substr($subPath, 0, $lastPos);
-                $search = $subPath . '\\';
-                if (isset($this->prefixDirsPsr4[$search])) {
-                    $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
-                    foreach ($this->prefixDirsPsr4[$search] as $dir) {
-                        if (file_exists($file = $dir . $pathEnd)) {
-                            return $file;
-                        }
-                    }
-                }
-            }
-        }
-
-        // PSR-4 fallback dirs
-        foreach ($this->fallbackDirsPsr4 as $dir) {
-            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
-                return $file;
-            }
-        }
-
-        // PSR-0 lookup
-        if (false !== $pos = strrpos($class, '\\')) {
-            // namespaced class name
-            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
-                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
-        } else {
-            // PEAR-like class name
-            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
-        }
-
-        if (isset($this->prefixesPsr0[$first])) {
-            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
-                if (0 === strpos($class, $prefix)) {
-                    foreach ($dirs as $dir) {
-                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
-                            return $file;
-                        }
-                    }
-                }
-            }
-        }
-
-        // PSR-0 fallback dirs
-        foreach ($this->fallbackDirsPsr0 as $dir) {
-            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
-                return $file;
-            }
-        }
-
-        // PSR-0 include paths.
-        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
-            return $file;
-        }
-
-        return false;
-    }
-}
-
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- */
-function includeFile($file)
-{
-    include $file;
-}
diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php
deleted file mode 100644
index 21671195b092290f7fe9bd73db9a5289bfaed8b4..0000000000000000000000000000000000000000
--- a/vendor/composer/InstalledVersions.php
+++ /dev/null
@@ -1,523 +0,0 @@
-<?php
-
-namespace Composer;
-
-use Composer\Semver\VersionParser;
-
-
-
-
-
-
-class InstalledVersions
-{
-private static $installed = array (
-  'root' => 
-  array (
-    'pretty_version' => 'dev-master',
-    'version' => 'dev-master',
-    'aliases' => 
-    array (
-    ),
-    'reference' => '085c7341219b6daab5bb44faf0f7e08128af8dc0',
-    'name' => '__root__',
-  ),
-  'versions' => 
-  array (
-    '__root__' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '085c7341219b6daab5bb44faf0f7e08128af8dc0',
-    ),
-    'guzzlehttp/guzzle' => 
-    array (
-      'pretty_version' => '6.5.5',
-      'version' => '6.5.5.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '9d4290de1cfd701f38099ef7e183b64b4b7b0c5e',
-    ),
-    'guzzlehttp/promises' => 
-    array (
-      'pretty_version' => '1.4.0',
-      'version' => '1.4.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '60d379c243457e073cff02bc323a2a86cb355631',
-    ),
-    'guzzlehttp/psr7' => 
-    array (
-      'pretty_version' => '1.7.0',
-      'version' => '1.7.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '53330f47520498c0ae1f61f7e2c90f55690c06a3',
-    ),
-    'hab/paginator' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-        0 => '9999999-dev',
-      ),
-      'reference' => '82429eeee25412b638da3b18d519fc9cb9b4568a',
-    ),
-    'hab/solr' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-        0 => '9999999-dev',
-      ),
-      'reference' => 'ef528a52d57493ad2ae575037e42442075135f62',
-    ),
-    'pimple/pimple' => 
-    array (
-      'pretty_version' => 'v3.3.0',
-      'version' => '3.3.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'e55d12f9d6a0e7f9c85992b73df1267f46279930',
-    ),
-    'psr/container' => 
-    array (
-      'pretty_version' => '1.0.0',
-      'version' => '1.0.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
-    ),
-    'psr/event-dispatcher-implementation' => 
-    array (
-      'provided' => 
-      array (
-        0 => '1.0',
-      ),
-    ),
-    'psr/http-message' => 
-    array (
-      'pretty_version' => '1.0.1',
-      'version' => '1.0.1.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
-    ),
-    'psr/http-message-implementation' => 
-    array (
-      'provided' => 
-      array (
-        0 => '1.0',
-      ),
-    ),
-    'psr/log' => 
-    array (
-      'pretty_version' => '1.1.3',
-      'version' => '1.1.3.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
-    ),
-    'psr/log-implementation' => 
-    array (
-      'provided' => 
-      array (
-        0 => '1.0',
-      ),
-    ),
-    'ralouphie/getallheaders' => 
-    array (
-      'pretty_version' => '3.0.3',
-      'version' => '3.0.3.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '120b605dfeb996808c31b6477290a714d356e822',
-    ),
-    'silex/api' => 
-    array (
-      'replaced' => 
-      array (
-        0 => 'v2.3.0',
-      ),
-    ),
-    'silex/providers' => 
-    array (
-      'replaced' => 
-      array (
-        0 => 'v2.3.0',
-      ),
-    ),
-    'silex/silex' => 
-    array (
-      'pretty_version' => 'v2.3.0',
-      'version' => '2.3.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '6bc31c1b8c4ef614a7115320fd2d3b958032f131',
-    ),
-    'symfony/debug' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'c87adf3fc1cd0bf4758316a3a150d50a8f957ef4',
-    ),
-    'symfony/error-handler' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '363cca01cabf98e4f1c447b14d0a68617f003613',
-    ),
-    'symfony/event-dispatcher' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '4204f13d2d0b7ad09454f221bb2195fccdf1fe98',
-    ),
-    'symfony/event-dispatcher-contracts' => 
-    array (
-      'pretty_version' => 'v1.1.9',
-      'version' => '1.1.9.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '84e23fdcd2517bf37aecbd16967e83f0caee25a7',
-    ),
-    'symfony/event-dispatcher-implementation' => 
-    array (
-      'provided' => 
-      array (
-        0 => '1.1',
-      ),
-    ),
-    'symfony/http-client-contracts' => 
-    array (
-      'pretty_version' => 'v2.3.1',
-      'version' => '2.3.1.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '41db680a15018f9c1d4b23516059633ce280ca33',
-    ),
-    'symfony/http-foundation' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '827a00811ef699e809a201ceafac0b2b246bf38a',
-    ),
-    'symfony/http-kernel' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '109b2a46e470a487ec8b0ffea4b0bb993aaf42ed',
-    ),
-    'symfony/mime' => 
-    array (
-      'pretty_version' => 'v5.1.8',
-      'version' => '5.1.8.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'f5485a92c24d4bcfc2f3fc648744fb398482ff1b',
-    ),
-    'symfony/polyfill-ctype' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'f4ba089a5b6366e453971d3aad5fe8e897b37f41',
-    ),
-    'symfony/polyfill-intl-idn' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '3b75acd829741c768bc8b1f84eb33265e7cc5117',
-    ),
-    'symfony/polyfill-intl-normalizer' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '727d1096295d807c309fb01a851577302394c897',
-    ),
-    'symfony/polyfill-mbstring' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531',
-    ),
-    'symfony/polyfill-php72' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'cede45fcdfabdd6043b3592e83678e42ec69e930',
-    ),
-    'symfony/polyfill-php73' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '8ff431c517be11c78c48a39a66d37431e26a6bed',
-    ),
-    'symfony/polyfill-php80' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'e70aa8b064c5b72d3df2abd5ab1e90464ad009de',
-    ),
-    'symfony/routing' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '826794f2e9305fe73cba859c60d2a336851bd202',
-    ),
-    'symfony/twig-bridge' => 
-    array (
-      'pretty_version' => 'v3.4.46',
-      'version' => '3.4.46.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042',
-    ),
-    'symfony/var-dumper' => 
-    array (
-      'pretty_version' => 'v5.1.8',
-      'version' => '5.1.8.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '4e13f3fcefb1fcaaa5efb5403581406f4e840b9a',
-    ),
-    'twig/twig' => 
-    array (
-      'pretty_version' => 'v1.44.1',
-      'version' => '1.44.1.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '04b15d4c0bb18ddbf82626320ac07f6a73f199c9',
-    ),
-  ),
-);
-
-
-
-
-
-
-
-public static function getInstalledPackages()
-{
-return array_keys(self::$installed['versions']);
-}
-
-
-
-
-
-
-
-
-
-public static function isInstalled($packageName)
-{
-return isset(self::$installed['versions'][$packageName]);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-public static function satisfies(VersionParser $parser, $packageName, $constraint)
-{
-$constraint = $parser->parseConstraints($constraint);
-$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
-
-return $provided->matches($constraint);
-}
-
-
-
-
-
-
-
-
-
-
-public static function getVersionRanges($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-$ranges = array();
-if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
-$ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
-}
-if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
-}
-if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
-}
-if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
-}
-
-return implode(' || ', $ranges);
-}
-
-
-
-
-
-public static function getVersion($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-if (!isset(self::$installed['versions'][$packageName]['version'])) {
-return null;
-}
-
-return self::$installed['versions'][$packageName]['version'];
-}
-
-
-
-
-
-public static function getPrettyVersion($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
-return null;
-}
-
-return self::$installed['versions'][$packageName]['pretty_version'];
-}
-
-
-
-
-
-public static function getReference($packageName)
-{
-if (!isset(self::$installed['versions'][$packageName])) {
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-if (!isset(self::$installed['versions'][$packageName]['reference'])) {
-return null;
-}
-
-return self::$installed['versions'][$packageName]['reference'];
-}
-
-
-
-
-
-public static function getRootPackage()
-{
-return self::$installed['root'];
-}
-
-
-
-
-
-
-
-public static function getRawData()
-{
-return self::$installed;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-public static function reload($data)
-{
-self::$installed = $data;
-}
-}
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
deleted file mode 100644
index f27399a042d95c4708af3a8c74d35d338763cf8f..0000000000000000000000000000000000000000
--- a/vendor/composer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-
-Copyright (c) Nils Adermann, Jordi Boggiano
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
deleted file mode 100644
index 83006fac3fa9590d383d60452538b15d91de7ba0..0000000000000000000000000000000000000000
--- a/vendor/composer/autoload_classmap.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-// autoload_classmap.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-    'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
-    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
-    'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
-    'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
-    'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
-    'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
-    'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
-);
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
deleted file mode 100644
index 167ee059ec53f97c2879b5dfdb7b0dcb9f132b6f..0000000000000000000000000000000000000000
--- a/vendor/composer/autoload_files.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-// autoload_files.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-    '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
-    'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
-    'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
-    '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
-    'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
-    '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
-    '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php',
-    '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
-    '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
-    'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
-    'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
-    '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
-);
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
deleted file mode 100644
index a06d67b2d4f4af9f139c93d619bf0fdd570208ae..0000000000000000000000000000000000000000
--- a/vendor/composer/autoload_namespaces.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-// autoload_namespaces.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-    'Twig_' => array($vendorDir . '/twig/twig/lib'),
-    'Pimple' => array($vendorDir . '/pimple/pimple/src'),
-    'HAB\\' => array($baseDir . '/src'),
-    'HAB' => array($vendorDir . '/hab/solr/src'),
-);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
deleted file mode 100644
index 5adc4e2486e16ae7d0513fb3778f115306a7d2c1..0000000000000000000000000000000000000000
--- a/vendor/composer/autoload_psr4.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-// autoload_psr4.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-    'Twig\\' => array($vendorDir . '/twig/twig/src'),
-    'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
-    'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'),
-    'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
-    'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
-    'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
-    'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
-    'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
-    'Symfony\\Contracts\\HttpClient\\' => array($vendorDir . '/symfony/http-client-contracts'),
-    'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'),
-    'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'),
-    'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'),
-    'Symfony\\Component\\Mime\\' => array($vendorDir . '/symfony/mime'),
-    'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'),
-    'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'),
-    'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'),
-    'Symfony\\Component\\ErrorHandler\\' => array($vendorDir . '/symfony/error-handler'),
-    'Symfony\\Component\\Debug\\' => array($vendorDir . '/symfony/debug'),
-    'Symfony\\Bridge\\Twig\\' => array($vendorDir . '/symfony/twig-bridge'),
-    'Silex\\' => array($vendorDir . '/silex/silex/src/Silex'),
-    'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
-    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
-    'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
-    'HAB\\Paginator\\' => array($vendorDir . '/hab/paginator/lib'),
-    'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
-    'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
-    'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
-);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
deleted file mode 100644
index 155d172158b22da9534b3bec7060f4f762d64c3a..0000000000000000000000000000000000000000
--- a/vendor/composer/autoload_real.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-// autoload_real.php @generated by Composer
-
-class ComposerAutoloaderInitb646d551e704625fa4030ea47f2317b9
-{
-    private static $loader;
-
-    public static function loadClassLoader($class)
-    {
-        if ('Composer\Autoload\ClassLoader' === $class) {
-            require __DIR__ . '/ClassLoader.php';
-        }
-    }
-
-    /**
-     * @return \Composer\Autoload\ClassLoader
-     */
-    public static function getLoader()
-    {
-        if (null !== self::$loader) {
-            return self::$loader;
-        }
-
-        require __DIR__ . '/platform_check.php';
-
-        spl_autoload_register(array('ComposerAutoloaderInitb646d551e704625fa4030ea47f2317b9', 'loadClassLoader'), true, true);
-        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        spl_autoload_unregister(array('ComposerAutoloaderInitb646d551e704625fa4030ea47f2317b9', 'loadClassLoader'));
-
-        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
-        if ($useStaticLoader) {
-            require __DIR__ . '/autoload_static.php';
-
-            call_user_func(\Composer\Autoload\ComposerStaticInitb646d551e704625fa4030ea47f2317b9::getInitializer($loader));
-        } else {
-            $map = require __DIR__ . '/autoload_namespaces.php';
-            foreach ($map as $namespace => $path) {
-                $loader->set($namespace, $path);
-            }
-
-            $map = require __DIR__ . '/autoload_psr4.php';
-            foreach ($map as $namespace => $path) {
-                $loader->setPsr4($namespace, $path);
-            }
-
-            $classMap = require __DIR__ . '/autoload_classmap.php';
-            if ($classMap) {
-                $loader->addClassMap($classMap);
-            }
-        }
-
-        $loader->register(true);
-
-        if ($useStaticLoader) {
-            $includeFiles = Composer\Autoload\ComposerStaticInitb646d551e704625fa4030ea47f2317b9::$files;
-        } else {
-            $includeFiles = require __DIR__ . '/autoload_files.php';
-        }
-        foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequireb646d551e704625fa4030ea47f2317b9($fileIdentifier, $file);
-        }
-
-        return $loader;
-    }
-}
-
-function composerRequireb646d551e704625fa4030ea47f2317b9($fileIdentifier, $file)
-{
-    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
-        require $file;
-
-        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
-    }
-}
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
deleted file mode 100644
index bab83a1bc72f0b7f1f8ce713895f82c2b1483dc1..0000000000000000000000000000000000000000
--- a/vendor/composer/autoload_static.php
+++ /dev/null
@@ -1,228 +0,0 @@
-<?php
-
-// autoload_static.php @generated by Composer
-
-namespace Composer\Autoload;
-
-class ComposerStaticInitb646d551e704625fa4030ea47f2317b9
-{
-    public static $files = array (
-        '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
-        'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
-        'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
-        '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
-        'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
-        '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
-        '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php',
-        '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
-        '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
-        'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
-        'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
-        '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
-    );
-
-    public static $prefixLengthsPsr4 = array (
-        'T' => 
-        array (
-            'Twig\\' => 5,
-        ),
-        'S' => 
-        array (
-            'Symfony\\Polyfill\\Php80\\' => 23,
-            'Symfony\\Polyfill\\Php73\\' => 23,
-            'Symfony\\Polyfill\\Php72\\' => 23,
-            'Symfony\\Polyfill\\Mbstring\\' => 26,
-            'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
-            'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
-            'Symfony\\Polyfill\\Ctype\\' => 23,
-            'Symfony\\Contracts\\HttpClient\\' => 29,
-            'Symfony\\Contracts\\EventDispatcher\\' => 34,
-            'Symfony\\Component\\VarDumper\\' => 28,
-            'Symfony\\Component\\Routing\\' => 26,
-            'Symfony\\Component\\Mime\\' => 23,
-            'Symfony\\Component\\HttpKernel\\' => 29,
-            'Symfony\\Component\\HttpFoundation\\' => 33,
-            'Symfony\\Component\\EventDispatcher\\' => 34,
-            'Symfony\\Component\\ErrorHandler\\' => 31,
-            'Symfony\\Component\\Debug\\' => 24,
-            'Symfony\\Bridge\\Twig\\' => 20,
-            'Silex\\' => 6,
-        ),
-        'P' => 
-        array (
-            'Psr\\Log\\' => 8,
-            'Psr\\Http\\Message\\' => 17,
-            'Psr\\Container\\' => 14,
-        ),
-        'H' => 
-        array (
-            'HAB\\Paginator\\' => 14,
-        ),
-        'G' => 
-        array (
-            'GuzzleHttp\\Psr7\\' => 16,
-            'GuzzleHttp\\Promise\\' => 19,
-            'GuzzleHttp\\' => 11,
-        ),
-    );
-
-    public static $prefixDirsPsr4 = array (
-        'Twig\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/twig/twig/src',
-        ),
-        'Symfony\\Polyfill\\Php80\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
-        ),
-        'Symfony\\Polyfill\\Php73\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-php73',
-        ),
-        'Symfony\\Polyfill\\Php72\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
-        ),
-        'Symfony\\Polyfill\\Mbstring\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
-        ),
-        'Symfony\\Polyfill\\Intl\\Normalizer\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
-        ),
-        'Symfony\\Polyfill\\Intl\\Idn\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
-        ),
-        'Symfony\\Polyfill\\Ctype\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
-        ),
-        'Symfony\\Contracts\\HttpClient\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/http-client-contracts',
-        ),
-        'Symfony\\Contracts\\EventDispatcher\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts',
-        ),
-        'Symfony\\Component\\VarDumper\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/var-dumper',
-        ),
-        'Symfony\\Component\\Routing\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/routing',
-        ),
-        'Symfony\\Component\\Mime\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/mime',
-        ),
-        'Symfony\\Component\\HttpKernel\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/http-kernel',
-        ),
-        'Symfony\\Component\\HttpFoundation\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/http-foundation',
-        ),
-        'Symfony\\Component\\EventDispatcher\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/event-dispatcher',
-        ),
-        'Symfony\\Component\\ErrorHandler\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/error-handler',
-        ),
-        'Symfony\\Component\\Debug\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/debug',
-        ),
-        'Symfony\\Bridge\\Twig\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/twig-bridge',
-        ),
-        'Silex\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/silex/silex/src/Silex',
-        ),
-        'Psr\\Log\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
-        ),
-        'Psr\\Http\\Message\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/psr/http-message/src',
-        ),
-        'Psr\\Container\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/psr/container/src',
-        ),
-        'HAB\\Paginator\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/hab/paginator/lib',
-        ),
-        'GuzzleHttp\\Psr7\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src',
-        ),
-        'GuzzleHttp\\Promise\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/guzzlehttp/promises/src',
-        ),
-        'GuzzleHttp\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src',
-        ),
-    );
-
-    public static $prefixesPsr0 = array (
-        'T' => 
-        array (
-            'Twig_' => 
-            array (
-                0 => __DIR__ . '/..' . '/twig/twig/lib',
-            ),
-        ),
-        'P' => 
-        array (
-            'Pimple' => 
-            array (
-                0 => __DIR__ . '/..' . '/pimple/pimple/src',
-            ),
-        ),
-        'H' => 
-        array (
-            'HAB\\' => 
-            array (
-                0 => __DIR__ . '/../..' . '/src',
-            ),
-            'HAB' => 
-            array (
-                0 => __DIR__ . '/..' . '/hab/solr/src',
-            ),
-        ),
-    );
-
-    public static $classMap = array (
-        'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
-        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
-        'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
-        'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
-        'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
-        'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
-        'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
-    );
-
-    public static function getInitializer(ClassLoader $loader)
-    {
-        return \Closure::bind(function () use ($loader) {
-            $loader->prefixLengthsPsr4 = ComposerStaticInitb646d551e704625fa4030ea47f2317b9::$prefixLengthsPsr4;
-            $loader->prefixDirsPsr4 = ComposerStaticInitb646d551e704625fa4030ea47f2317b9::$prefixDirsPsr4;
-            $loader->prefixesPsr0 = ComposerStaticInitb646d551e704625fa4030ea47f2317b9::$prefixesPsr0;
-            $loader->classMap = ComposerStaticInitb646d551e704625fa4030ea47f2317b9::$classMap;
-
-        }, null, ClassLoader::class);
-    }
-}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
deleted file mode 100644
index 609b2f1cd055f21b8ab5ccf07c825ed3d3bd1249..0000000000000000000000000000000000000000
--- a/vendor/composer/installed.json
+++ /dev/null
@@ -1,2234 +0,0 @@
-{
-    "packages": [
-        {
-            "name": "guzzlehttp/guzzle",
-            "version": "6.5.5",
-            "version_normalized": "6.5.5.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
-                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
-                "shasum": ""
-            },
-            "require": {
-                "ext-json": "*",
-                "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.6.1",
-                "php": ">=5.5",
-                "symfony/polyfill-intl-idn": "^1.17.0"
-            },
-            "require-dev": {
-                "ext-curl": "*",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.1"
-            },
-            "suggest": {
-                "psr/log": "Required for using the Log middleware"
-            },
-            "time": "2020-06-16T21:01:06+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "6.5-dev"
-                }
-            },
-            "installation-source": "dist",
-            "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"
-                }
-            ],
-            "description": "Guzzle is a PHP HTTP client library",
-            "homepage": "http://guzzlephp.org/",
-            "keywords": [
-                "client",
-                "curl",
-                "framework",
-                "http",
-                "http client",
-                "rest",
-                "web service"
-            ],
-            "support": {
-                "issues": "https://github.com/guzzle/guzzle/issues",
-                "source": "https://github.com/guzzle/guzzle/tree/6.5"
-            },
-            "install-path": "../guzzlehttp/guzzle"
-        },
-        {
-            "name": "guzzlehttp/promises",
-            "version": "1.4.0",
-            "version_normalized": "1.4.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/promises.git",
-                "reference": "60d379c243457e073cff02bc323a2a86cb355631"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
-                "reference": "60d379c243457e073cff02bc323a2a86cb355631",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "^4.4 || ^5.1"
-            },
-            "time": "2020-09-30T07:37:28+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4-dev"
-                }
-            },
-            "installation-source": "dist",
-            "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.0"
-            },
-            "install-path": "../guzzlehttp/promises"
-        },
-        {
-            "name": "guzzlehttp/psr7",
-            "version": "1.7.0",
-            "version_normalized": "1.7.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/psr7.git",
-                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
-                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
-                "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"
-            },
-            "time": "2020-09-30T07:37:11+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.7-dev"
-                }
-            },
-            "installation-source": "dist",
-            "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.7.0"
-            },
-            "install-path": "../guzzlehttp/psr7"
-        },
-        {
-            "name": "hab/paginator",
-            "version": "dev-master",
-            "version_normalized": "dev-master",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/dmj/php-paginator.git",
-                "reference": "82429eeee25412b638da3b18d519fc9cb9b4568a"
-            },
-            "time": "2017-03-22T08:37:43+00:00",
-            "default-branch": true,
-            "type": "library",
-            "installation-source": "source",
-            "autoload": {
-                "psr-4": {
-                    "HAB\\Paginator\\": "lib/"
-                }
-            },
-            "install-path": "../hab/paginator"
-        },
-        {
-            "name": "hab/solr",
-            "version": "dev-master",
-            "version_normalized": "dev-master",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/dmj/php-solr.git",
-                "reference": "ef528a52d57493ad2ae575037e42442075135f62"
-            },
-            "require": {
-                "guzzlehttp/guzzle": "~6.0"
-            },
-            "require-dev": {
-                "phan/phan": "^2.4",
-                "phpstan/phpstan": "^0.11.19",
-                "phpunit/phpunit": "^8.4"
-            },
-            "time": "2020-07-16T13:14:20+00:00",
-            "default-branch": true,
-            "type": "library",
-            "installation-source": "source",
-            "autoload": {
-                "psr-0": {
-                    "HAB": "src/"
-                }
-            },
-            "install-path": "../hab/solr"
-        },
-        {
-            "name": "pimple/pimple",
-            "version": "v3.3.0",
-            "version_normalized": "3.3.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/silexphp/Pimple.git",
-                "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930",
-                "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2.5",
-                "psr/container": "^1.0"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "^3.4|^4.4|^5.0"
-            },
-            "time": "2020-03-03T09:12:48+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.3.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-0": {
-                    "Pimple": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                }
-            ],
-            "description": "Pimple, a simple Dependency Injection Container",
-            "homepage": "https://pimple.symfony.com",
-            "keywords": [
-                "container",
-                "dependency injection"
-            ],
-            "support": {
-                "issues": "https://github.com/silexphp/Pimple/issues",
-                "source": "https://github.com/silexphp/Pimple/tree/master"
-            },
-            "install-path": "../pimple/pimple"
-        },
-        {
-            "name": "psr/container",
-            "version": "1.0.0",
-            "version_normalized": "1.0.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/container.git",
-                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
-                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "time": "2017-02-14T16:28:37+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Container\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://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/master"
-            },
-            "install-path": "../psr/container"
-        },
-        {
-            "name": "psr/http-message",
-            "version": "1.0.1",
-            "version_normalized": "1.0.1.0",
-            "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"
-            },
-            "time": "2016-08-06T14:39:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "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"
-            },
-            "install-path": "../psr/http-message"
-        },
-        {
-            "name": "psr/log",
-            "version": "1.1.3",
-            "version_normalized": "1.1.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/log.git",
-                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
-                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "time": "2020-03-23T09:12:05+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Log\\": "Psr/Log/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://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.3"
-            },
-            "install-path": "../psr/log"
-        },
-        {
-            "name": "ralouphie/getallheaders",
-            "version": "3.0.3",
-            "version_normalized": "3.0.3.0",
-            "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"
-            },
-            "time": "2019-03-08T08:55:37+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "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"
-            },
-            "install-path": "../ralouphie/getallheaders"
-        },
-        {
-            "name": "silex/silex",
-            "version": "v2.3.0",
-            "version_normalized": "2.3.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/silexphp/Silex.git",
-                "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/silexphp/Silex/zipball/6bc31c1b8c4ef614a7115320fd2d3b958032f131",
-                "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1.3",
-                "pimple/pimple": "^3.0",
-                "symfony/event-dispatcher": "^4.0",
-                "symfony/http-foundation": "^4.0",
-                "symfony/http-kernel": "^4.0",
-                "symfony/routing": "^4.0"
-            },
-            "replace": {
-                "silex/api": "self.version",
-                "silex/providers": "self.version"
-            },
-            "require-dev": {
-                "doctrine/dbal": "^2.2",
-                "monolog/monolog": "^1.4.1",
-                "swiftmailer/swiftmailer": "^5",
-                "symfony/asset": "^4.0",
-                "symfony/browser-kit": "^4.0",
-                "symfony/config": "^4.0",
-                "symfony/css-selector": "^4.0",
-                "symfony/debug": "^4.0",
-                "symfony/doctrine-bridge": "^4.0",
-                "symfony/dom-crawler": "^4.0",
-                "symfony/expression-language": "^4.0",
-                "symfony/finder": "^4.0",
-                "symfony/form": "^4.0",
-                "symfony/intl": "^4.0",
-                "symfony/monolog-bridge": "^4.0",
-                "symfony/options-resolver": "^4.0",
-                "symfony/phpunit-bridge": "^3.2",
-                "symfony/process": "^4.0",
-                "symfony/security": "^4.0",
-                "symfony/serializer": "^4.0",
-                "symfony/translation": "^4.0",
-                "symfony/twig-bridge": "^4.0",
-                "symfony/validator": "^4.0",
-                "symfony/var-dumper": "^4.0",
-                "symfony/web-link": "^4.0",
-                "twig/twig": "^2.0"
-            },
-            "time": "2018-04-20T05:17:01+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Silex\\": "src/Silex"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Igor Wiedler",
-                    "email": "igor@wiedler.ch"
-                }
-            ],
-            "description": "The PHP micro-framework based on the Symfony Components",
-            "homepage": "http://silex.sensiolabs.org",
-            "keywords": [
-                "microframework"
-            ],
-            "support": {
-                "issues": "https://github.com/silexphp/Silex/issues",
-                "source": "https://github.com/silexphp/Silex/tree/v2.3.0"
-            },
-            "abandoned": "symfony/flex",
-            "install-path": "../silex/silex"
-        },
-        {
-            "name": "symfony/debug",
-            "version": "v4.4.16",
-            "version_normalized": "4.4.16.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/debug.git",
-                "reference": "c87adf3fc1cd0bf4758316a3a150d50a8f957ef4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/c87adf3fc1cd0bf4758316a3a150d50a8f957ef4",
-                "reference": "c87adf3fc1cd0bf4758316a3a150d50a8f957ef4",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1.3",
-                "psr/log": "~1.0",
-                "symfony/polyfill-php80": "^1.15"
-            },
-            "conflict": {
-                "symfony/http-kernel": "<3.4"
-            },
-            "require-dev": {
-                "symfony/http-kernel": "^3.4|^4.0|^5.0"
-            },
-            "time": "2020-10-24T11:50:19+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Debug\\": ""
-                },
-                "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 Debug Component",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/debug/tree/v4.4.16"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/debug"
-        },
-        {
-            "name": "symfony/error-handler",
-            "version": "v4.4.16",
-            "version_normalized": "4.4.16.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/error-handler.git",
-                "reference": "363cca01cabf98e4f1c447b14d0a68617f003613"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/error-handler/zipball/363cca01cabf98e4f1c447b14d0a68617f003613",
-                "reference": "363cca01cabf98e4f1c447b14d0a68617f003613",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1.3",
-                "psr/log": "~1.0",
-                "symfony/debug": "^4.4.5",
-                "symfony/polyfill-php80": "^1.15",
-                "symfony/var-dumper": "^4.4|^5.0"
-            },
-            "require-dev": {
-                "symfony/http-kernel": "^4.4|^5.0",
-                "symfony/serializer": "^4.4|^5.0"
-            },
-            "time": "2020-10-24T11:50:19+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "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": "Symfony ErrorHandler Component",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/error-handler/tree/v4.4.16"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/error-handler"
-        },
-        {
-            "name": "symfony/event-dispatcher",
-            "version": "v4.4.16",
-            "version_normalized": "4.4.16.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
-                "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1.3",
-                "symfony/event-dispatcher-contracts": "^1.1"
-            },
-            "conflict": {
-                "symfony/dependency-injection": "<3.4"
-            },
-            "provide": {
-                "psr/event-dispatcher-implementation": "1.0",
-                "symfony/event-dispatcher-implementation": "1.1"
-            },
-            "require-dev": {
-                "psr/log": "~1.0",
-                "symfony/config": "^3.4|^4.0|^5.0",
-                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
-                "symfony/error-handler": "~3.4|~4.4",
-                "symfony/expression-language": "^3.4|^4.0|^5.0",
-                "symfony/http-foundation": "^3.4|^4.0|^5.0",
-                "symfony/service-contracts": "^1.1|^2",
-                "symfony/stopwatch": "^3.4|^4.0|^5.0"
-            },
-            "suggest": {
-                "symfony/dependency-injection": "",
-                "symfony/http-kernel": ""
-            },
-            "time": "2020-10-24T11:50:19+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "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": "Symfony EventDispatcher Component",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.16"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/event-dispatcher"
-        },
-        {
-            "name": "symfony/event-dispatcher-contracts",
-            "version": "v1.1.9",
-            "version_normalized": "1.1.9.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
-                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
-                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1.3"
-            },
-            "suggest": {
-                "psr/event-dispatcher": "",
-                "symfony/event-dispatcher-implementation": ""
-            },
-            "time": "2020-07-06T13:19:58+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1-dev"
-                },
-                "thanks": {
-                    "name": "symfony/contracts",
-                    "url": "https://github.com/symfony/contracts"
-                }
-            },
-            "installation-source": "dist",
-            "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/v1.1.9"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/event-dispatcher-contracts"
-        },
-        {
-            "name": "symfony/http-client-contracts",
-            "version": "v2.3.1",
-            "version_normalized": "2.3.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/http-client-contracts.git",
-                "reference": "41db680a15018f9c1d4b23516059633ce280ca33"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33",
-                "reference": "41db680a15018f9c1d4b23516059633ce280ca33",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5"
-            },
-            "suggest": {
-                "symfony/http-client-implementation": ""
-            },
-            "time": "2020-10-14T17:08:19+00:00",
-            "type": "library",
-            "extra": {
-                "branch-version": "2.3",
-                "branch-alias": {
-                    "dev-main": "2.3-dev"
-                },
-                "thanks": {
-                    "name": "symfony/contracts",
-                    "url": "https://github.com/symfony/contracts"
-                }
-            },
-            "installation-source": "dist",
-            "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.3.1"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/http-client-contracts"
-        },
-        {
-            "name": "symfony/http-foundation",
-            "version": "v4.4.16",
-            "version_normalized": "4.4.16.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/http-foundation.git",
-                "reference": "827a00811ef699e809a201ceafac0b2b246bf38a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/827a00811ef699e809a201ceafac0b2b246bf38a",
-                "reference": "827a00811ef699e809a201ceafac0b2b246bf38a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1.3",
-                "symfony/mime": "^4.3|^5.0",
-                "symfony/polyfill-mbstring": "~1.1"
-            },
-            "require-dev": {
-                "predis/predis": "~1.0",
-                "symfony/expression-language": "^3.4|^4.0|^5.0"
-            },
-            "time": "2020-10-24T11:50:19+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "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": "Symfony HttpFoundation Component",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/http-foundation/tree/v4.4.16"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/http-foundation"
-        },
-        {
-            "name": "symfony/http-kernel",
-            "version": "v4.4.16",
-            "version_normalized": "4.4.16.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/http-kernel.git",
-                "reference": "109b2a46e470a487ec8b0ffea4b0bb993aaf42ed"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/109b2a46e470a487ec8b0ffea4b0bb993aaf42ed",
-                "reference": "109b2a46e470a487ec8b0ffea4b0bb993aaf42ed",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1.3",
-                "psr/log": "~1.0",
-                "symfony/error-handler": "^4.4",
-                "symfony/event-dispatcher": "^4.4",
-                "symfony/http-client-contracts": "^1.1|^2",
-                "symfony/http-foundation": "^4.4|^5.0",
-                "symfony/polyfill-ctype": "^1.8",
-                "symfony/polyfill-php73": "^1.9",
-                "symfony/polyfill-php80": "^1.15"
-            },
-            "conflict": {
-                "symfony/browser-kit": "<4.3",
-                "symfony/config": "<3.4",
-                "symfony/console": ">=5",
-                "symfony/dependency-injection": "<4.3",
-                "symfony/translation": "<4.2",
-                "twig/twig": "<1.34|<2.4,>=2"
-            },
-            "provide": {
-                "psr/log-implementation": "1.0"
-            },
-            "require-dev": {
-                "psr/cache": "~1.0",
-                "symfony/browser-kit": "^4.3|^5.0",
-                "symfony/config": "^3.4|^4.0|^5.0",
-                "symfony/console": "^3.4|^4.0",
-                "symfony/css-selector": "^3.4|^4.0|^5.0",
-                "symfony/dependency-injection": "^4.3|^5.0",
-                "symfony/dom-crawler": "^3.4|^4.0|^5.0",
-                "symfony/expression-language": "^3.4|^4.0|^5.0",
-                "symfony/finder": "^3.4|^4.0|^5.0",
-                "symfony/process": "^3.4|^4.0|^5.0",
-                "symfony/routing": "^3.4|^4.0|^5.0",
-                "symfony/stopwatch": "^3.4|^4.0|^5.0",
-                "symfony/templating": "^3.4|^4.0|^5.0",
-                "symfony/translation": "^4.2|^5.0",
-                "symfony/translation-contracts": "^1.1|^2",
-                "twig/twig": "^1.34|^2.4|^3.0"
-            },
-            "suggest": {
-                "symfony/browser-kit": "",
-                "symfony/config": "",
-                "symfony/console": "",
-                "symfony/dependency-injection": ""
-            },
-            "time": "2020-10-28T05:50:56+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "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": "Symfony HttpKernel Component",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/http-kernel/tree/v4.4.16"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/http-kernel"
-        },
-        {
-            "name": "symfony/mime",
-            "version": "v5.1.8",
-            "version_normalized": "5.1.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/mime.git",
-                "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/mime/zipball/f5485a92c24d4bcfc2f3fc648744fb398482ff1b",
-                "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "symfony/polyfill-intl-idn": "^1.10",
-                "symfony/polyfill-mbstring": "^1.0",
-                "symfony/polyfill-php80": "^1.15"
-            },
-            "conflict": {
-                "symfony/mailer": "<4.4"
-            },
-            "require-dev": {
-                "egulias/email-validator": "^2.1.10",
-                "symfony/dependency-injection": "^4.4|^5.0"
-            },
-            "time": "2020-10-24T12:01:57+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "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": "A library to manipulate MIME messages",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "mime",
-                "mime-type"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/mime/tree/v5.1.8"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/mime"
-        },
-        {
-            "name": "symfony/polyfill-ctype",
-            "version": "v1.20.0",
-            "version_normalized": "1.20.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
-                "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-ctype": "For best performance"
-            },
-            "time": "2020-10-23T14:02:19+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.20-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Ctype\\": ""
-                },
-                "files": [
-                    "bootstrap.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Gert de Pagter",
-                    "email": "BackEndTea@gmail.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for ctype functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "ctype",
-                "polyfill",
-                "portable"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-ctype"
-        },
-        {
-            "name": "symfony/polyfill-intl-idn",
-            "version": "v1.20.0",
-            "version_normalized": "1.20.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-idn.git",
-                "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3b75acd829741c768bc8b1f84eb33265e7cc5117",
-                "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1",
-                "symfony/polyfill-intl-normalizer": "^1.10",
-                "symfony/polyfill-php72": "^1.10"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "time": "2020-10-23T14:02:19+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.20-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "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.20.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-intl-idn"
-        },
-        {
-            "name": "symfony/polyfill-intl-normalizer",
-            "version": "v1.20.0",
-            "version_normalized": "1.20.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "727d1096295d807c309fb01a851577302394c897"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
-                "reference": "727d1096295d807c309fb01a851577302394c897",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "time": "2020-10-23T14:02:19+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.20-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "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.20.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-intl-normalizer"
-        },
-        {
-            "name": "symfony/polyfill-mbstring",
-            "version": "v1.20.0",
-            "version_normalized": "1.20.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
-                "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-mbstring": "For best performance"
-            },
-            "time": "2020-10-23T14:02:19+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.20-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "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.20.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-mbstring"
-        },
-        {
-            "name": "symfony/polyfill-php72",
-            "version": "v1.20.0",
-            "version_normalized": "1.20.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php72.git",
-                "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930",
-                "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "time": "2020-10-23T14:02:19+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.20-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php72\\": ""
-                },
-                "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 backporting some PHP 7.2+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-php72"
-        },
-        {
-            "name": "symfony/polyfill-php73",
-            "version": "v1.20.0",
-            "version_normalized": "1.20.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php73.git",
-                "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
-                "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "time": "2020-10-23T14:02:19+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.20-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "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.20.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-php73"
-        },
-        {
-            "name": "symfony/polyfill-php80",
-            "version": "v1.20.0",
-            "version_normalized": "1.20.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php80.git",
-                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
-                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "time": "2020-10-23T14:02:19+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.20-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "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.20.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-php80"
-        },
-        {
-            "name": "symfony/routing",
-            "version": "v4.4.16",
-            "version_normalized": "4.4.16.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/routing.git",
-                "reference": "826794f2e9305fe73cba859c60d2a336851bd202"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/routing/zipball/826794f2e9305fe73cba859c60d2a336851bd202",
-                "reference": "826794f2e9305fe73cba859c60d2a336851bd202",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1.3"
-            },
-            "conflict": {
-                "symfony/config": "<4.2",
-                "symfony/dependency-injection": "<3.4",
-                "symfony/yaml": "<3.4"
-            },
-            "require-dev": {
-                "doctrine/annotations": "~1.2",
-                "psr/log": "~1.0",
-                "symfony/config": "^4.2|^5.0",
-                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
-                "symfony/expression-language": "^3.4|^4.0|^5.0",
-                "symfony/http-foundation": "^3.4|^4.0|^5.0",
-                "symfony/yaml": "^3.4|^4.0|^5.0"
-            },
-            "suggest": {
-                "doctrine/annotations": "For using the annotation loader",
-                "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"
-            },
-            "time": "2020-10-24T11:50:19+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "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": "Symfony Routing Component",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "router",
-                "routing",
-                "uri",
-                "url"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/routing/tree/v4.4.16"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/routing"
-        },
-        {
-            "name": "symfony/twig-bridge",
-            "version": "v3.4.46",
-            "version_normalized": "3.4.46.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/twig-bridge.git",
-                "reference": "090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042",
-                "reference": "090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "twig/twig": "^1.41|^2.10"
-            },
-            "conflict": {
-                "symfony/console": "<3.4",
-                "symfony/form": "<3.4.31|>=4.0,<4.3.4"
-            },
-            "require-dev": {
-                "fig/link-util": "^1.0",
-                "symfony/asset": "~2.8|~3.0|~4.0",
-                "symfony/console": "~3.4|~4.0",
-                "symfony/dependency-injection": "~2.8|~3.0|~4.0",
-                "symfony/expression-language": "~2.8|~3.0|~4.0",
-                "symfony/finder": "~2.8|~3.0|~4.0",
-                "symfony/form": "^3.4.31|^4.3.4",
-                "symfony/http-foundation": "^3.3.11|~4.0",
-                "symfony/http-kernel": "~3.2|~4.0",
-                "symfony/polyfill-intl-icu": "~1.0",
-                "symfony/routing": "~2.8|~3.0|~4.0",
-                "symfony/security": "^2.8.31|^3.3.13|~4.0",
-                "symfony/security-acl": "~2.8|~3.0",
-                "symfony/stopwatch": "~2.8|~3.0|~4.0",
-                "symfony/templating": "~2.8|~3.0|~4.0",
-                "symfony/translation": "~2.8|~3.0|~4.0",
-                "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2|~4.0",
-                "symfony/web-link": "~3.3|~4.0",
-                "symfony/workflow": "~3.3|~4.0",
-                "symfony/yaml": "~2.8|~3.0|~4.0"
-            },
-            "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": "For using the SecurityExtension",
-                "symfony/stopwatch": "For using the StopwatchExtension",
-                "symfony/templating": "For using the TwigEngine",
-                "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"
-            },
-            "time": "2020-10-24T10:57:07+00:00",
-            "type": "symfony-bridge",
-            "installation-source": "dist",
-            "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": "Symfony Twig Bridge",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/twig-bridge/tree/v3.4.46"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/twig-bridge"
-        },
-        {
-            "name": "symfony/var-dumper",
-            "version": "v5.1.8",
-            "version_normalized": "5.1.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
-                "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php80": "^1.15"
-            },
-            "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.4|^3.0"
-            },
-            "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"
-            },
-            "time": "2020-10-27T10:11:13+00:00",
-            "bin": [
-                "Resources/bin/var-dump-server"
-            ],
-            "type": "library",
-            "installation-source": "dist",
-            "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": "Symfony mechanism for exploring and dumping PHP variables",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "debug",
-                "dump"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/var-dumper/tree/v5.1.8"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/var-dumper"
-        },
-        {
-            "name": "twig/twig",
-            "version": "v1.44.1",
-            "version_normalized": "1.44.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/twigphp/Twig.git",
-                "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/twigphp/Twig/zipball/04b15d4c0bb18ddbf82626320ac07f6a73f199c9",
-                "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "symfony/polyfill-ctype": "^1.8"
-            },
-            "require-dev": {
-                "psr/container": "^1.0",
-                "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
-            },
-            "time": "2020-10-27T19:22:48+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.44-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-0": {
-                    "Twig_": "lib/"
-                },
-                "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/v1.44.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/twig/twig",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../twig/twig"
-        }
-    ],
-    "dev": true,
-    "dev-package-names": []
-}
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
deleted file mode 100644
index 79cacfcea18fd3aaea0ac323ae111ed89494a3b9..0000000000000000000000000000000000000000
--- a/vendor/composer/installed.php
+++ /dev/null
@@ -1,338 +0,0 @@
-<?php return array (
-  'root' => 
-  array (
-    'pretty_version' => 'dev-master',
-    'version' => 'dev-master',
-    'aliases' => 
-    array (
-    ),
-    'reference' => '085c7341219b6daab5bb44faf0f7e08128af8dc0',
-    'name' => '__root__',
-  ),
-  'versions' => 
-  array (
-    '__root__' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '085c7341219b6daab5bb44faf0f7e08128af8dc0',
-    ),
-    'guzzlehttp/guzzle' => 
-    array (
-      'pretty_version' => '6.5.5',
-      'version' => '6.5.5.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '9d4290de1cfd701f38099ef7e183b64b4b7b0c5e',
-    ),
-    'guzzlehttp/promises' => 
-    array (
-      'pretty_version' => '1.4.0',
-      'version' => '1.4.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '60d379c243457e073cff02bc323a2a86cb355631',
-    ),
-    'guzzlehttp/psr7' => 
-    array (
-      'pretty_version' => '1.7.0',
-      'version' => '1.7.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '53330f47520498c0ae1f61f7e2c90f55690c06a3',
-    ),
-    'hab/paginator' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-        0 => '9999999-dev',
-      ),
-      'reference' => '82429eeee25412b638da3b18d519fc9cb9b4568a',
-    ),
-    'hab/solr' => 
-    array (
-      'pretty_version' => 'dev-master',
-      'version' => 'dev-master',
-      'aliases' => 
-      array (
-        0 => '9999999-dev',
-      ),
-      'reference' => 'ef528a52d57493ad2ae575037e42442075135f62',
-    ),
-    'pimple/pimple' => 
-    array (
-      'pretty_version' => 'v3.3.0',
-      'version' => '3.3.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'e55d12f9d6a0e7f9c85992b73df1267f46279930',
-    ),
-    'psr/container' => 
-    array (
-      'pretty_version' => '1.0.0',
-      'version' => '1.0.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
-    ),
-    'psr/event-dispatcher-implementation' => 
-    array (
-      'provided' => 
-      array (
-        0 => '1.0',
-      ),
-    ),
-    'psr/http-message' => 
-    array (
-      'pretty_version' => '1.0.1',
-      'version' => '1.0.1.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
-    ),
-    'psr/http-message-implementation' => 
-    array (
-      'provided' => 
-      array (
-        0 => '1.0',
-      ),
-    ),
-    'psr/log' => 
-    array (
-      'pretty_version' => '1.1.3',
-      'version' => '1.1.3.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
-    ),
-    'psr/log-implementation' => 
-    array (
-      'provided' => 
-      array (
-        0 => '1.0',
-      ),
-    ),
-    'ralouphie/getallheaders' => 
-    array (
-      'pretty_version' => '3.0.3',
-      'version' => '3.0.3.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '120b605dfeb996808c31b6477290a714d356e822',
-    ),
-    'silex/api' => 
-    array (
-      'replaced' => 
-      array (
-        0 => 'v2.3.0',
-      ),
-    ),
-    'silex/providers' => 
-    array (
-      'replaced' => 
-      array (
-        0 => 'v2.3.0',
-      ),
-    ),
-    'silex/silex' => 
-    array (
-      'pretty_version' => 'v2.3.0',
-      'version' => '2.3.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '6bc31c1b8c4ef614a7115320fd2d3b958032f131',
-    ),
-    'symfony/debug' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'c87adf3fc1cd0bf4758316a3a150d50a8f957ef4',
-    ),
-    'symfony/error-handler' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '363cca01cabf98e4f1c447b14d0a68617f003613',
-    ),
-    'symfony/event-dispatcher' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '4204f13d2d0b7ad09454f221bb2195fccdf1fe98',
-    ),
-    'symfony/event-dispatcher-contracts' => 
-    array (
-      'pretty_version' => 'v1.1.9',
-      'version' => '1.1.9.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '84e23fdcd2517bf37aecbd16967e83f0caee25a7',
-    ),
-    'symfony/event-dispatcher-implementation' => 
-    array (
-      'provided' => 
-      array (
-        0 => '1.1',
-      ),
-    ),
-    'symfony/http-client-contracts' => 
-    array (
-      'pretty_version' => 'v2.3.1',
-      'version' => '2.3.1.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '41db680a15018f9c1d4b23516059633ce280ca33',
-    ),
-    'symfony/http-foundation' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '827a00811ef699e809a201ceafac0b2b246bf38a',
-    ),
-    'symfony/http-kernel' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '109b2a46e470a487ec8b0ffea4b0bb993aaf42ed',
-    ),
-    'symfony/mime' => 
-    array (
-      'pretty_version' => 'v5.1.8',
-      'version' => '5.1.8.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'f5485a92c24d4bcfc2f3fc648744fb398482ff1b',
-    ),
-    'symfony/polyfill-ctype' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'f4ba089a5b6366e453971d3aad5fe8e897b37f41',
-    ),
-    'symfony/polyfill-intl-idn' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '3b75acd829741c768bc8b1f84eb33265e7cc5117',
-    ),
-    'symfony/polyfill-intl-normalizer' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '727d1096295d807c309fb01a851577302394c897',
-    ),
-    'symfony/polyfill-mbstring' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531',
-    ),
-    'symfony/polyfill-php72' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'cede45fcdfabdd6043b3592e83678e42ec69e930',
-    ),
-    'symfony/polyfill-php73' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '8ff431c517be11c78c48a39a66d37431e26a6bed',
-    ),
-    'symfony/polyfill-php80' => 
-    array (
-      'pretty_version' => 'v1.20.0',
-      'version' => '1.20.0.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => 'e70aa8b064c5b72d3df2abd5ab1e90464ad009de',
-    ),
-    'symfony/routing' => 
-    array (
-      'pretty_version' => 'v4.4.16',
-      'version' => '4.4.16.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '826794f2e9305fe73cba859c60d2a336851bd202',
-    ),
-    'symfony/twig-bridge' => 
-    array (
-      'pretty_version' => 'v3.4.46',
-      'version' => '3.4.46.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042',
-    ),
-    'symfony/var-dumper' => 
-    array (
-      'pretty_version' => 'v5.1.8',
-      'version' => '5.1.8.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '4e13f3fcefb1fcaaa5efb5403581406f4e840b9a',
-    ),
-    'twig/twig' => 
-    array (
-      'pretty_version' => 'v1.44.1',
-      'version' => '1.44.1.0',
-      'aliases' => 
-      array (
-      ),
-      'reference' => '04b15d4c0bb18ddbf82626320ac07f6a73f199c9',
-    ),
-  ),
-);
diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php
deleted file mode 100644
index a8b98d5ceb1e2651c6b52984bfd44cfb97347d10..0000000000000000000000000000000000000000
--- a/vendor/composer/platform_check.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-// platform_check.php @generated by Composer
-
-$issues = array();
-
-if (!(PHP_VERSION_ID >= 70205)) {
-    $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.5". You are running ' . PHP_VERSION . '.';
-}
-
-if ($issues) {
-    if (!headers_sent()) {
-        header('HTTP/1.1 500 Internal Server Error');
-    }
-    if (!ini_get('display_errors')) {
-        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
-            fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
-        } elseif (!headers_sent()) {
-            echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
-        }
-    }
-    trigger_error(
-        'Composer detected issues in your platform: ' . implode(' ', $issues),
-        E_USER_ERROR
-    );
-}
diff --git a/vendor/guzzlehttp/guzzle/.php_cs b/vendor/guzzlehttp/guzzle/.php_cs
deleted file mode 100644
index 2dd5036c1f2b63fcf74a59df09d3b9e649e91e19..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/.php_cs
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-$config = PhpCsFixer\Config::create()
-    ->setRiskyAllowed(true)
-    ->setRules([
-        '@PSR2' => true,
-        'array_syntax' => ['syntax' => 'short'],
-        'declare_strict_types' => false,
-        'concat_space' => ['spacing'=>'one'],
-        'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
-        'ordered_imports' => true,
-        // 'phpdoc_align' => ['align'=>'vertical'],
-        // 'native_function_invocation' => true,
-    ])
-    ->setFinder(
-        PhpCsFixer\Finder::create()
-            ->in(__DIR__.'/src')
-            ->in(__DIR__.'/tests')
-            ->name('*.php')
-    )
-;
-
-return $config;
diff --git a/vendor/guzzlehttp/guzzle/CHANGELOG.md b/vendor/guzzlehttp/guzzle/CHANGELOG.md
deleted file mode 100644
index 464cf1c5007dc4048332b7209fef312e0a8d5e59..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/CHANGELOG.md
+++ /dev/null
@@ -1,1338 +0,0 @@
-# Change Log
-
-## 6.5.5 - 2020-06-16
-
-* Unpin version constraint for `symfony/polyfill-intl-idn` [#2678](https://github.com/guzzle/guzzle/pull/2678)
-
-## 6.5.4 - 2020-05-25
-
-* Fix various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
-
-## 6.5.3 - 2020-04-18
-
-* Use Symfony intl-idn polyfill [#2550](https://github.com/guzzle/guzzle/pull/2550)
-* Remove use of internal functions [#2548](https://github.com/guzzle/guzzle/pull/2548)
-
-## 6.5.2 - 2019-12-23
-
-* idn_to_ascii() fix for old PHP versions [#2489](https://github.com/guzzle/guzzle/pull/2489)
-
-## 6.5.1 - 2019-12-21
-
-* Better defaults for PHP installations with old ICU lib [#2454](https://github.com/guzzle/guzzle/pull/2454)
-* IDN support for redirects [#2424](https://github.com/guzzle/guzzle/pull/2424)
-
-## 6.5.0 - 2019-12-07
-
-* Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143)
-* Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287)
-* Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132)
-* Fix: `RetryMiddleware` did not do exponential delay between retries due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
-  Previously, `RetryMiddleware` would sleep for 1 millisecond, then 2 milliseconds, then 4 milliseconds.
-  **After this change, `RetryMiddleware` will sleep for 1 second, then 2 seconds, then 4 seconds.**
-  `Middleware::retry()` accepts a second callback parameter to override the default timeouts if needed.
-* Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348)
-* Deprecated `ClientInterface::VERSION`
-
-## 6.4.1 - 2019-10-23
-
-* No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that 
-* Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar`
-
-## 6.4.0 - 2019-10-23
-
-* Improvement: Improved error messages when using curl < 7.21.2 [#2108](https://github.com/guzzle/guzzle/pull/2108)
-* Fix: Test if response is readable before returning a summary in `RequestException::getResponseBodySummary()` [#2081](https://github.com/guzzle/guzzle/pull/2081)
-* Fix: Add support for GUZZLE_CURL_SELECT_TIMEOUT environment variable [#2161](https://github.com/guzzle/guzzle/pull/2161)
-* Improvement: Added `GuzzleHttp\Exception\InvalidArgumentException` [#2163](https://github.com/guzzle/guzzle/pull/2163)
-* Improvement: Added `GuzzleHttp\_current_time()` to use `hrtime()` if that function exists. [#2242](https://github.com/guzzle/guzzle/pull/2242)
-* Improvement: Added curl's `appconnect_time` in `TransferStats` [#2284](https://github.com/guzzle/guzzle/pull/2284)
-* Improvement: Make GuzzleException extend Throwable wherever it's available [#2273](https://github.com/guzzle/guzzle/pull/2273)
-* Fix: Prevent concurrent writes to file when saving `CookieJar` [#2335](https://github.com/guzzle/guzzle/pull/2335)
-* Improvement: Update `MockHandler` so we can test transfer time [#2362](https://github.com/guzzle/guzzle/pull/2362)
-
-## 6.3.3 - 2018-04-22
-
-* Fix: Default headers when decode_content is specified
-
-
-## 6.3.2 - 2018-03-26
-
-* Fix: Release process
-
-
-## 6.3.1 - 2018-03-26
-
-* Bug fix: Parsing 0 epoch expiry times in cookies [#2014](https://github.com/guzzle/guzzle/pull/2014)
-* Improvement: Better ConnectException detection [#2012](https://github.com/guzzle/guzzle/pull/2012)
-* Bug fix: Malformed domain that contains a "/" [#1999](https://github.com/guzzle/guzzle/pull/1999)
-* Bug fix: Undefined offset when a cookie has no first key-value pair [#1998](https://github.com/guzzle/guzzle/pull/1998)
-* Improvement: Support PHPUnit 6 [#1953](https://github.com/guzzle/guzzle/pull/1953)
-* Bug fix: Support empty headers [#1915](https://github.com/guzzle/guzzle/pull/1915)
-* Bug fix: Ignore case during header modifications [#1916](https://github.com/guzzle/guzzle/pull/1916)
-
-+ Minor code cleanups, documentation fixes and clarifications.
-
-
-## 6.3.0 - 2017-06-22
-
-* Feature: force IP resolution (ipv4 or ipv6) [#1608](https://github.com/guzzle/guzzle/pull/1608), [#1659](https://github.com/guzzle/guzzle/pull/1659)
-* Improvement: Don't include summary in exception message when body is empty [#1621](https://github.com/guzzle/guzzle/pull/1621)
-* Improvement: Handle `on_headers` option in MockHandler [#1580](https://github.com/guzzle/guzzle/pull/1580)
-* Improvement: Added SUSE Linux CA path [#1609](https://github.com/guzzle/guzzle/issues/1609)
-* Improvement: Use class reference for getting the name of the class instead of using hardcoded strings [#1641](https://github.com/guzzle/guzzle/pull/1641)
-* Feature: Added `read_timeout` option [#1611](https://github.com/guzzle/guzzle/pull/1611)
-* Bug fix: PHP 7.x fixes [#1685](https://github.com/guzzle/guzzle/pull/1685), [#1686](https://github.com/guzzle/guzzle/pull/1686), [#1811](https://github.com/guzzle/guzzle/pull/1811)
-* Deprecation: BadResponseException instantiation without a response [#1642](https://github.com/guzzle/guzzle/pull/1642)
-* Feature: Added NTLM auth [#1569](https://github.com/guzzle/guzzle/pull/1569)
-* Feature: Track redirect HTTP status codes [#1711](https://github.com/guzzle/guzzle/pull/1711)
-* Improvement: Check handler type during construction [#1745](https://github.com/guzzle/guzzle/pull/1745)
-* Improvement: Always include the Content-Length if there's a body [#1721](https://github.com/guzzle/guzzle/pull/1721)
-* Feature: Added convenience method to access a cookie by name [#1318](https://github.com/guzzle/guzzle/pull/1318)
-* Bug fix: Fill `CURLOPT_CAPATH` and `CURLOPT_CAINFO` properly [#1684](https://github.com/guzzle/guzzle/pull/1684)
-* Improvement:  	Use `\GuzzleHttp\Promise\rejection_for` function instead of object init [#1827](https://github.com/guzzle/guzzle/pull/1827)
-
-
-+ Minor code cleanups, documentation fixes and clarifications.
-
-## 6.2.3 - 2017-02-28
-
-* Fix deprecations with guzzle/psr7 version 1.4
-
-## 6.2.2 - 2016-10-08
-
-* Allow to pass nullable Response to delay callable
-* Only add scheme when host is present
-* Fix drain case where content-length is the literal string zero
-* Obfuscate in-URL credentials in exceptions
-
-## 6.2.1 - 2016-07-18
-
-* Address HTTP_PROXY security vulnerability, CVE-2016-5385:
-  https://httpoxy.org/
-* Fixing timeout bug with StreamHandler:
-  https://github.com/guzzle/guzzle/pull/1488
-* Only read up to `Content-Length` in PHP StreamHandler to avoid timeouts when
-  a server does not honor `Connection: close`.
-* Ignore URI fragment when sending requests.
-
-## 6.2.0 - 2016-03-21
-
-* Feature: added `GuzzleHttp\json_encode` and `GuzzleHttp\json_decode`.
-  https://github.com/guzzle/guzzle/pull/1389
-* Bug fix: Fix sleep calculation when waiting for delayed requests.
-  https://github.com/guzzle/guzzle/pull/1324
-* Feature: More flexible history containers.
-  https://github.com/guzzle/guzzle/pull/1373
-* Bug fix: defer sink stream opening in StreamHandler.
-  https://github.com/guzzle/guzzle/pull/1377
-* Bug fix: do not attempt to escape cookie values.
-  https://github.com/guzzle/guzzle/pull/1406
-* Feature: report original content encoding and length on decoded responses.
-  https://github.com/guzzle/guzzle/pull/1409
-* Bug fix: rewind seekable request bodies before dispatching to cURL.
-  https://github.com/guzzle/guzzle/pull/1422
-* Bug fix: provide an empty string to `http_build_query` for HHVM workaround.
-  https://github.com/guzzle/guzzle/pull/1367
-
-## 6.1.1 - 2015-11-22
-
-* Bug fix: Proxy::wrapSync() now correctly proxies to the appropriate handler
-  https://github.com/guzzle/guzzle/commit/911bcbc8b434adce64e223a6d1d14e9a8f63e4e4
-* Feature: HandlerStack is now more generic.
-  https://github.com/guzzle/guzzle/commit/f2102941331cda544745eedd97fc8fd46e1ee33e
-* Bug fix: setting verify to false in the StreamHandler now disables peer
-  verification. https://github.com/guzzle/guzzle/issues/1256
-* Feature: Middleware now uses an exception factory, including more error
-  context. https://github.com/guzzle/guzzle/pull/1282
-* Feature: better support for disabled functions.
-  https://github.com/guzzle/guzzle/pull/1287
-* Bug fix: fixed regression where MockHandler was not using `sink`.
-  https://github.com/guzzle/guzzle/pull/1292
-
-## 6.1.0 - 2015-09-08
-
-* Feature: Added the `on_stats` request option to provide access to transfer
-  statistics for requests. https://github.com/guzzle/guzzle/pull/1202
-* Feature: Added the ability to persist session cookies in CookieJars.
-  https://github.com/guzzle/guzzle/pull/1195
-* Feature: Some compatibility updates for Google APP Engine
-  https://github.com/guzzle/guzzle/pull/1216
-* Feature: Added support for NO_PROXY to prevent the use of a proxy based on
-  a simple set of rules. https://github.com/guzzle/guzzle/pull/1197
-* Feature: Cookies can now contain square brackets.
-  https://github.com/guzzle/guzzle/pull/1237
-* Bug fix: Now correctly parsing `=` inside of quotes in Cookies.
-  https://github.com/guzzle/guzzle/pull/1232
-* Bug fix: Cusotm cURL options now correctly override curl options of the
-  same name. https://github.com/guzzle/guzzle/pull/1221
-* Bug fix: Content-Type header is now added when using an explicitly provided
-  multipart body. https://github.com/guzzle/guzzle/pull/1218
-* Bug fix: Now ignoring Set-Cookie headers that have no name.
-* Bug fix: Reason phrase is no longer cast to an int in some cases in the
-  cURL handler. https://github.com/guzzle/guzzle/pull/1187
-* Bug fix: Remove the Authorization header when redirecting if the Host
-  header changes. https://github.com/guzzle/guzzle/pull/1207
-* Bug fix: Cookie path matching fixes
-  https://github.com/guzzle/guzzle/issues/1129
-* Bug fix: Fixing the cURL `body_as_string` setting
-  https://github.com/guzzle/guzzle/pull/1201
-* Bug fix: quotes are no longer stripped when parsing cookies.
-  https://github.com/guzzle/guzzle/issues/1172
-* Bug fix: `form_params` and `query` now always uses the `&` separator.
-  https://github.com/guzzle/guzzle/pull/1163
-* Bug fix: Adding a Content-Length to PHP stream wrapper requests if not set.
-  https://github.com/guzzle/guzzle/pull/1189
-
-## 6.0.2 - 2015-07-04
-
-* Fixed a memory leak in the curl handlers in which references to callbacks
-  were not being removed by `curl_reset`.
-* Cookies are now extracted properly before redirects.
-* Cookies now allow more character ranges.
-* Decoded Content-Encoding responses are now modified to correctly reflect
-  their state if the encoding was automatically removed by a handler. This
-  means that the `Content-Encoding` header may be removed an the
-  `Content-Length` modified to reflect the message size after removing the
-  encoding.
-* Added a more explicit error message when trying to use `form_params` and
-  `multipart` in the same request.
-* Several fixes for HHVM support.
-* Functions are now conditionally required using an additional level of
-  indirection to help with global Composer installations.
-
-## 6.0.1 - 2015-05-27
-
-* Fixed a bug with serializing the `query` request option where the `&`
-  separator was missing.
-* Added a better error message for when `body` is provided as an array. Please
-  use `form_params` or `multipart` instead.
-* Various doc fixes.
-
-## 6.0.0 - 2015-05-26
-
-* See the UPGRADING.md document for more information.
-* Added `multipart` and `form_params` request options.
-* Added `synchronous` request option.
-* Added the `on_headers` request option.
-* Fixed `expect` handling.
-* No longer adding default middlewares in the client ctor. These need to be
-  present on the provided handler in order to work.
-* Requests are no longer initiated when sending async requests with the
-  CurlMultiHandler. This prevents unexpected recursion from requests completing
-  while ticking the cURL loop.
-* Removed the semantics of setting `default` to `true`. This is no longer
-  required now that the cURL loop is not ticked for async requests.
-* Added request and response logging middleware.
-* No longer allowing self signed certificates when using the StreamHandler.
-* Ensuring that `sink` is valid if saving to a file.
-* Request exceptions now include a "handler context" which provides handler
-  specific contextual information.
-* Added `GuzzleHttp\RequestOptions` to allow request options to be applied
-  using constants.
-* `$maxHandles` has been removed from CurlMultiHandler.
-* `MultipartPostBody` is now part of the `guzzlehttp/psr7` package.
-
-## 5.3.0 - 2015-05-19
-
-* Mock now supports `save_to`
-* Marked `AbstractRequestEvent::getTransaction()` as public.
-* Fixed a bug in which multiple headers using different casing would overwrite
-  previous headers in the associative array.
-* Added `Utils::getDefaultHandler()`
-* Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated.
-* URL scheme is now always lowercased.
-
-## 6.0.0-beta.1
-
-* Requires PHP >= 5.5
-* Updated to use PSR-7
-  * Requires immutable messages, which basically means an event based system
-    owned by a request instance is no longer possible.
-  * Utilizing the [Guzzle PSR-7 package](https://github.com/guzzle/psr7).
-  * Removed the dependency on `guzzlehttp/streams`. These stream abstractions
-    are available in the `guzzlehttp/psr7` package under the `GuzzleHttp\Psr7`
-    namespace.
-* Added middleware and handler system
-  * Replaced the Guzzle event and subscriber system with a middleware system.
-  * No longer depends on RingPHP, but rather places the HTTP handlers directly
-    in Guzzle, operating on PSR-7 messages.
-  * Retry logic is now encapsulated in `GuzzleHttp\Middleware::retry`, which
-    means the `guzzlehttp/retry-subscriber` is now obsolete.
-  * Mocking responses is now handled using `GuzzleHttp\Handler\MockHandler`.
-* Asynchronous responses
-  * No longer supports the `future` request option to send an async request.
-    Instead, use one of the `*Async` methods of a client (e.g., `requestAsync`,
-    `getAsync`, etc.).
-  * Utilizing `GuzzleHttp\Promise` instead of React's promise library to avoid
-    recursion required by chaining and forwarding react promises. See
-    https://github.com/guzzle/promises
-  * Added `requestAsync` and `sendAsync` to send request asynchronously.
-  * Added magic methods for `getAsync()`, `postAsync()`, etc. to send requests
-    asynchronously.
-* Request options
-  * POST and form updates
-    * Added the `form_fields` and `form_files` request options.
-    * Removed the `GuzzleHttp\Post` namespace.
-    * The `body` request option no longer accepts an array for POST requests.
-  * The `exceptions` request option has been deprecated in favor of the
-    `http_errors` request options.
-  * The `save_to` request option has been deprecated in favor of `sink` request
-    option.
-* Clients no longer accept an array of URI template string and variables for
-  URI variables. You will need to expand URI templates before passing them
-  into a client constructor or request method.
-* Client methods `get()`, `post()`, `put()`, `patch()`, `options()`, etc. are
-  now magic methods that will send synchronous requests.
-* Replaced `Utils.php` with plain functions in `functions.php`.
-* Removed `GuzzleHttp\Collection`.
-* Removed `GuzzleHttp\BatchResults`. Batched pool results are now returned as
-  an array.
-* Removed `GuzzleHttp\Query`. Query string handling is now handled using an
-  associative array passed into the `query` request option. The query string
-  is serialized using PHP's `http_build_query`. If you need more control, you
-  can pass the query string in as a string.
-* `GuzzleHttp\QueryParser` has been replaced with the
-  `GuzzleHttp\Psr7\parse_query`.
-
-## 5.2.0 - 2015-01-27
-
-* Added `AppliesHeadersInterface` to make applying headers to a request based
-  on the body more generic and not specific to `PostBodyInterface`.
-* Reduced the number of stack frames needed to send requests.
-* Nested futures are now resolved in the client rather than the RequestFsm
-* Finishing state transitions is now handled in the RequestFsm rather than the
-  RingBridge.
-* Added a guard in the Pool class to not use recursion for request retries.
-
-## 5.1.0 - 2014-12-19
-
-* Pool class no longer uses recursion when a request is intercepted.
-* The size of a Pool can now be dynamically adjusted using a callback.
-  See https://github.com/guzzle/guzzle/pull/943.
-* Setting a request option to `null` when creating a request with a client will
-  ensure that the option is not set. This allows you to overwrite default
-  request options on a per-request basis.
-  See https://github.com/guzzle/guzzle/pull/937.
-* Added the ability to limit which protocols are allowed for redirects by
-  specifying a `protocols` array in the `allow_redirects` request option.
-* Nested futures due to retries are now resolved when waiting for synchronous
-  responses. See https://github.com/guzzle/guzzle/pull/947.
-* `"0"` is now an allowed URI path. See
-  https://github.com/guzzle/guzzle/pull/935.
-* `Query` no longer typehints on the `$query` argument in the constructor,
-  allowing for strings and arrays.
-* Exceptions thrown in the `end` event are now correctly wrapped with Guzzle
-  specific exceptions if necessary.
-
-## 5.0.3 - 2014-11-03
-
-This change updates query strings so that they are treated as un-encoded values
-by default where the value represents an un-encoded value to send over the
-wire. A Query object then encodes the value before sending over the wire. This
-means that even value query string values (e.g., ":") are url encoded. This
-makes the Query class match PHP's http_build_query function. However, if you
-want to send requests over the wire using valid query string characters that do
-not need to be encoded, then you can provide a string to Url::setQuery() and
-pass true as the second argument to specify that the query string is a raw
-string that should not be parsed or encoded (unless a call to getQuery() is
-subsequently made, forcing the query-string to be converted into a Query
-object).
-
-## 5.0.2 - 2014-10-30
-
-* Added a trailing `\r\n` to multipart/form-data payloads. See
-  https://github.com/guzzle/guzzle/pull/871
-* Added a `GuzzleHttp\Pool::send()` convenience method to match the docs.
-* Status codes are now returned as integers. See
-  https://github.com/guzzle/guzzle/issues/881
-* No longer overwriting an existing `application/x-www-form-urlencoded` header
-  when sending POST requests, allowing for customized headers. See
-  https://github.com/guzzle/guzzle/issues/877
-* Improved path URL serialization.
-
-  * No longer double percent-encoding characters in the path or query string if
-    they are already encoded.
-  * Now properly encoding the supplied path to a URL object, instead of only
-    encoding ' ' and '?'.
-  * Note: This has been changed in 5.0.3 to now encode query string values by
-    default unless the `rawString` argument is provided when setting the query
-    string on a URL: Now allowing many more characters to be present in the
-    query string without being percent encoded. See http://tools.ietf.org/html/rfc3986#appendix-A
-
-## 5.0.1 - 2014-10-16
-
-Bugfix release.
-
-* Fixed an issue where connection errors still returned response object in
-  error and end events event though the response is unusable. This has been
-  corrected so that a response is not returned in the `getResponse` method of
-  these events if the response did not complete. https://github.com/guzzle/guzzle/issues/867
-* Fixed an issue where transfer statistics were not being populated in the
-  RingBridge. https://github.com/guzzle/guzzle/issues/866
-
-## 5.0.0 - 2014-10-12
-
-Adding support for non-blocking responses and some minor API cleanup.
-
-### New Features
-
-* Added support for non-blocking responses based on `guzzlehttp/guzzle-ring`.
-* Added a public API for creating a default HTTP adapter.
-* Updated the redirect plugin to be non-blocking so that redirects are sent
-  concurrently. Other plugins like this can now be updated to be non-blocking.
-* Added a "progress" event so that you can get upload and download progress
-  events.
-* Added `GuzzleHttp\Pool` which implements FutureInterface and transfers
-  requests concurrently using a capped pool size as efficiently as possible.
-* Added `hasListeners()` to EmitterInterface.
-* Removed `GuzzleHttp\ClientInterface::sendAll` and marked
-  `GuzzleHttp\Client::sendAll` as deprecated (it's still there, just not the
-  recommended way).
-
-### Breaking changes
-
-The breaking changes in this release are relatively minor. The biggest thing to
-look out for is that request and response objects no longer implement fluent
-interfaces.
-
-* Removed the fluent interfaces (i.e., `return $this`) from requests,
-  responses, `GuzzleHttp\Collection`, `GuzzleHttp\Url`,
-  `GuzzleHttp\Query`, `GuzzleHttp\Post\PostBody`, and
-  `GuzzleHttp\Cookie\SetCookie`. This blog post provides a good outline of
-  why I did this: http://ocramius.github.io/blog/fluent-interfaces-are-evil/.
-  This also makes the Guzzle message interfaces compatible with the current
-  PSR-7 message proposal.
-* Removed "functions.php", so that Guzzle is truly PSR-4 compliant. Except
-  for the HTTP request functions from function.php, these functions are now
-  implemented in `GuzzleHttp\Utils` using camelCase. `GuzzleHttp\json_decode`
-  moved to `GuzzleHttp\Utils::jsonDecode`. `GuzzleHttp\get_path` moved to
-  `GuzzleHttp\Utils::getPath`. `GuzzleHttp\set_path` moved to
-  `GuzzleHttp\Utils::setPath`. `GuzzleHttp\batch` should now be
-  `GuzzleHttp\Pool::batch`, which returns an `objectStorage`. Using functions.php
-  caused problems for many users: they aren't PSR-4 compliant, require an
-  explicit include, and needed an if-guard to ensure that the functions are not
-  declared multiple times.
-* Rewrote adapter layer.
-    * Removing all classes from `GuzzleHttp\Adapter`, these are now
-      implemented as callables that are stored in `GuzzleHttp\Ring\Client`.
-    * Removed the concept of "parallel adapters". Sending requests serially or
-      concurrently is now handled using a single adapter.
-    * Moved `GuzzleHttp\Adapter\Transaction` to `GuzzleHttp\Transaction`. The
-      Transaction object now exposes the request, response, and client as public
-      properties. The getters and setters have been removed.
-* Removed the "headers" event. This event was only useful for changing the
-  body a response once the headers of the response were known. You can implement
-  a similar behavior in a number of ways. One example might be to use a
-  FnStream that has access to the transaction being sent. For example, when the
-  first byte is written, you could check if the response headers match your
-  expectations, and if so, change the actual stream body that is being
-  written to.
-* Removed the `asArray` parameter from
-  `GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
-  value as an array, then use the newly added `getHeaderAsArray()` method of
-  `MessageInterface`. This change makes the Guzzle interfaces compatible with
-  the PSR-7 interfaces.
-* `GuzzleHttp\Message\MessageFactory` no longer allows subclasses to add
-  custom request options using double-dispatch (this was an implementation
-  detail). Instead, you should now provide an associative array to the
-  constructor which is a mapping of the request option name mapping to a
-  function that applies the option value to a request.
-* Removed the concept of "throwImmediately" from exceptions and error events.
-  This control mechanism was used to stop a transfer of concurrent requests
-  from completing. This can now be handled by throwing the exception or by
-  cancelling a pool of requests or each outstanding future request individually.
-* Updated to "GuzzleHttp\Streams" 3.0.
-    * `GuzzleHttp\Stream\StreamInterface::getContents()` no longer accepts a
-      `maxLen` parameter. This update makes the Guzzle streams project
-      compatible with the current PSR-7 proposal.
-    * `GuzzleHttp\Stream\Stream::__construct`,
-      `GuzzleHttp\Stream\Stream::factory`, and
-      `GuzzleHttp\Stream\Utils::create` no longer accept a size in the second
-      argument. They now accept an associative array of options, including the
-      "size" key and "metadata" key which can be used to provide custom metadata.
-
-## 4.2.2 - 2014-09-08
-
-* Fixed a memory leak in the CurlAdapter when reusing cURL handles.
-* No longer using `request_fulluri` in stream adapter proxies.
-* Relative redirects are now based on the last response, not the first response.
-
-## 4.2.1 - 2014-08-19
-
-* Ensuring that the StreamAdapter does not always add a Content-Type header
-* Adding automated github releases with a phar and zip
-
-## 4.2.0 - 2014-08-17
-
-* Now merging in default options using a case-insensitive comparison.
-  Closes https://github.com/guzzle/guzzle/issues/767
-* Added the ability to automatically decode `Content-Encoding` response bodies
-  using the `decode_content` request option. This is set to `true` by default
-  to decode the response body if it comes over the wire with a
-  `Content-Encoding`. Set this value to `false` to disable decoding the
-  response content, and pass a string to provide a request `Accept-Encoding`
-  header and turn on automatic response decoding. This feature now allows you
-  to pass an `Accept-Encoding` header in the headers of a request but still
-  disable automatic response decoding.
-  Closes https://github.com/guzzle/guzzle/issues/764
-* Added the ability to throw an exception immediately when transferring
-  requests in parallel. Closes https://github.com/guzzle/guzzle/issues/760
-* Updating guzzlehttp/streams dependency to ~2.1
-* No longer utilizing the now deprecated namespaced methods from the stream
-  package.
-
-## 4.1.8 - 2014-08-14
-
-* Fixed an issue in the CurlFactory that caused setting the `stream=false`
-  request option to throw an exception.
-  See: https://github.com/guzzle/guzzle/issues/769
-* TransactionIterator now calls rewind on the inner iterator.
-  See: https://github.com/guzzle/guzzle/pull/765
-* You can now set the `Content-Type` header to `multipart/form-data`
-  when creating POST requests to force multipart bodies.
-  See https://github.com/guzzle/guzzle/issues/768
-
-## 4.1.7 - 2014-08-07
-
-* Fixed an error in the HistoryPlugin that caused the same request and response
-  to be logged multiple times when an HTTP protocol error occurs.
-* Ensuring that cURL does not add a default Content-Type when no Content-Type
-  has been supplied by the user. This prevents the adapter layer from modifying
-  the request that is sent over the wire after any listeners may have already
-  put the request in a desired state (e.g., signed the request).
-* Throwing an exception when you attempt to send requests that have the
-  "stream" set to true in parallel using the MultiAdapter.
-* Only calling curl_multi_select when there are active cURL handles. This was
-  previously changed and caused performance problems on some systems due to PHP
-  always selecting until the maximum select timeout.
-* Fixed a bug where multipart/form-data POST fields were not correctly
-  aggregated (e.g., values with "&").
-
-## 4.1.6 - 2014-08-03
-
-* Added helper methods to make it easier to represent messages as strings,
-  including getting the start line and getting headers as a string.
-
-## 4.1.5 - 2014-08-02
-
-* Automatically retrying cURL "Connection died, retrying a fresh connect"
-  errors when possible.
-* cURL implementation cleanup
-* Allowing multiple event subscriber listeners to be registered per event by
-  passing an array of arrays of listener configuration.
-
-## 4.1.4 - 2014-07-22
-
-* Fixed a bug that caused multi-part POST requests with more than one field to
-  serialize incorrectly.
-* Paths can now be set to "0"
-* `ResponseInterface::xml` now accepts a `libxml_options` option and added a
-  missing default argument that was required when parsing XML response bodies.
-* A `save_to` stream is now created lazily, which means that files are not
-  created on disk unless a request succeeds.
-
-## 4.1.3 - 2014-07-15
-
-* Various fixes to multipart/form-data POST uploads
-* Wrapping function.php in an if-statement to ensure Guzzle can be used
-  globally and in a Composer install
-* Fixed an issue with generating and merging in events to an event array
-* POST headers are only applied before sending a request to allow you to change
-  the query aggregator used before uploading
-* Added much more robust query string parsing
-* Fixed various parsing and normalization issues with URLs
-* Fixing an issue where multi-valued headers were not being utilized correctly
-  in the StreamAdapter
-
-## 4.1.2 - 2014-06-18
-
-* Added support for sending payloads with GET requests
-
-## 4.1.1 - 2014-06-08
-
-* Fixed an issue related to using custom message factory options in subclasses
-* Fixed an issue with nested form fields in a multi-part POST
-* Fixed an issue with using the `json` request option for POST requests
-* Added `ToArrayInterface` to `GuzzleHttp\Cookie\CookieJar`
-
-## 4.1.0 - 2014-05-27
-
-* Added a `json` request option to easily serialize JSON payloads.
-* Added a `GuzzleHttp\json_decode()` wrapper to safely parse JSON.
-* Added `setPort()` and `getPort()` to `GuzzleHttp\Message\RequestInterface`.
-* Added the ability to provide an emitter to a client in the client constructor.
-* Added the ability to persist a cookie session using $_SESSION.
-* Added a trait that can be used to add event listeners to an iterator.
-* Removed request method constants from RequestInterface.
-* Fixed warning when invalid request start-lines are received.
-* Updated MessageFactory to work with custom request option methods.
-* Updated cacert bundle to latest build.
-
-4.0.2 (2014-04-16)
-------------------
-
-* Proxy requests using the StreamAdapter now properly use request_fulluri (#632)
-* Added the ability to set scalars as POST fields (#628)
-
-## 4.0.1 - 2014-04-04
-
-* The HTTP status code of a response is now set as the exception code of
-  RequestException objects.
-* 303 redirects will now correctly switch from POST to GET requests.
-* The default parallel adapter of a client now correctly uses the MultiAdapter.
-* HasDataTrait now initializes the internal data array as an empty array so
-  that the toArray() method always returns an array.
-
-## 4.0.0 - 2014-03-29
-
-* For more information on the 4.0 transition, see:
-  http://mtdowling.com/blog/2014/03/15/guzzle-4-rc/
-* For information on changes and upgrading, see:
-  https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
-* Added `GuzzleHttp\batch()` as a convenience function for sending requests in
-  parallel without needing to write asynchronous code.
-* Restructured how events are added to `GuzzleHttp\ClientInterface::sendAll()`.
-  You can now pass a callable or an array of associative arrays where each
-  associative array contains the "fn", "priority", and "once" keys.
-
-## 4.0.0.rc-2 - 2014-03-25
-
-* Removed `getConfig()` and `setConfig()` from clients to avoid confusion
-  around whether things like base_url, message_factory, etc. should be able to
-  be retrieved or modified.
-* Added `getDefaultOption()` and `setDefaultOption()` to ClientInterface
-* functions.php functions were renamed using snake_case to match PHP idioms
-* Added support for `HTTP_PROXY`, `HTTPS_PROXY`, and
-  `GUZZLE_CURL_SELECT_TIMEOUT` environment variables
-* Added the ability to specify custom `sendAll()` event priorities
-* Added the ability to specify custom stream context options to the stream
-  adapter.
-* Added a functions.php function for `get_path()` and `set_path()`
-* CurlAdapter and MultiAdapter now use a callable to generate curl resources
-* MockAdapter now properly reads a body and emits a `headers` event
-* Updated Url class to check if a scheme and host are set before adding ":"
-  and "//". This allows empty Url (e.g., "") to be serialized as "".
-* Parsing invalid XML no longer emits warnings
-* Curl classes now properly throw AdapterExceptions
-* Various performance optimizations
-* Streams are created with the faster `Stream\create()` function
-* Marked deprecation_proxy() as internal
-* Test server is now a collection of static methods on a class
-
-## 4.0.0-rc.1 - 2014-03-15
-
-* See https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
-
-## 3.8.1 - 2014-01-28
-
-* Bug: Always using GET requests when redirecting from a 303 response
-* Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in
-  `Guzzle\Http\ClientInterface::setSslVerification()`
-* Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL
-* Bug: The body of a request can now be set to `"0"`
-* Sending PHP stream requests no longer forces `HTTP/1.0`
-* Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of
-  each sub-exception
-* Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than
-  clobbering everything).
-* Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators)
-* Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`.
-  For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`.
-* Now properly escaping the regular expression delimiter when matching Cookie domains.
-* Network access is now disabled when loading XML documents
-
-## 3.8.0 - 2013-12-05
-
-* Added the ability to define a POST name for a file
-* JSON response parsing now properly walks additionalProperties
-* cURL error code 18 is now retried automatically in the BackoffPlugin
-* Fixed a cURL error when URLs contain fragments
-* Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were
-  CurlExceptions
-* CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e)
-* Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS`
-* Fixed a bug that was encountered when parsing empty header parameters
-* UriTemplate now has a `setRegex()` method to match the docs
-* The `debug` request parameter now checks if it is truthy rather than if it exists
-* Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin
-* Added the ability to combine URLs using strict RFC 3986 compliance
-* Command objects can now return the validation errors encountered by the command
-* Various fixes to cache revalidation (#437 and 29797e5)
-* Various fixes to the AsyncPlugin
-* Cleaned up build scripts
-
-## 3.7.4 - 2013-10-02
-
-* Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430)
-* Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp
-  (see https://github.com/aws/aws-sdk-php/issues/147)
-* Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots
-* Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420)
-* Updated the bundled cacert.pem (#419)
-* OauthPlugin now supports adding authentication to headers or query string (#425)
-
-## 3.7.3 - 2013-09-08
-
-* Added the ability to get the exception associated with a request/command when using `MultiTransferException` and
-  `CommandTransferException`.
-* Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description
-* Schemas are only injected into response models when explicitly configured.
-* No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of
-  an EntityBody.
-* Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator.
-* Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`.
-* Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody()
-* Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin
-* Bug fix: Visiting XML attributes first before visiting XML children when serializing requests
-* Bug fix: Properly parsing headers that contain commas contained in quotes
-* Bug fix: mimetype guessing based on a filename is now case-insensitive
-
-## 3.7.2 - 2013-08-02
-
-* Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander
-  See https://github.com/guzzle/guzzle/issues/371
-* Bug fix: Cookie domains are now matched correctly according to RFC 6265
-  See https://github.com/guzzle/guzzle/issues/377
-* Bug fix: GET parameters are now used when calculating an OAuth signature
-* Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted
-* `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched
-* `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input.
-  See https://github.com/guzzle/guzzle/issues/379
-* Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See
-  https://github.com/guzzle/guzzle/pull/380
-* cURL multi cleanup and optimizations
-
-## 3.7.1 - 2013-07-05
-
-* Bug fix: Setting default options on a client now works
-* Bug fix: Setting options on HEAD requests now works. See #352
-* Bug fix: Moving stream factory before send event to before building the stream. See #353
-* Bug fix: Cookies no longer match on IP addresses per RFC 6265
-* Bug fix: Correctly parsing header parameters that are in `<>` and quotes
-* Added `cert` and `ssl_key` as request options
-* `Host` header can now diverge from the host part of a URL if the header is set manually
-* `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter
-* OAuth parameters are only added via the plugin if they aren't already set
-* Exceptions are now thrown when a URL cannot be parsed
-* Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails
-* Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin
-
-## 3.7.0 - 2013-06-10
-
-* See UPGRADING.md for more information on how to upgrade.
-* Requests now support the ability to specify an array of $options when creating a request to more easily modify a
-  request. You can pass a 'request.options' configuration setting to a client to apply default request options to
-  every request created by a client (e.g. default query string variables, headers, curl options, etc.).
-* Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`.
-  See `Guzzle\Http\StaticClient::mount`.
-* Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests
-      created by a command (e.g. custom headers, query string variables, timeout settings, etc.).
-* Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the
-  headers of a response
-* Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key
-  (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`)
-* ServiceBuilders now support storing and retrieving arbitrary data
-* CachePlugin can now purge all resources for a given URI
-* CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource
-* CachePlugin now uses the Vary header to determine if a resource is a cache hit
-* `Guzzle\Http\Message\Response` now implements `\Serializable`
-* Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters
-* `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable
-* Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()`
-* Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size
-* `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message
-* Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older
-  Symfony users can still use the old version of Monolog.
-* Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`.
-  Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`.
-* Several performance improvements to `Guzzle\Common\Collection`
-* Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
-  createRequest, head, delete, put, patch, post, options, prepareRequest
-* Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
-* Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
-* Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
-  `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
-  resource, string, or EntityBody into the $options parameter to specify the download location of the response.
-* Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
-  default `array()`
-* Added `Guzzle\Stream\StreamInterface::isRepeatable`
-* Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
-  $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
-  $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`.
-* Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`.
-* Removed `Guzzle\Http\ClientInterface::expandTemplate()`
-* Removed `Guzzle\Http\ClientInterface::setRequestFactory()`
-* Removed `Guzzle\Http\ClientInterface::getCurlMulti()`
-* Removed `Guzzle\Http\Message\RequestInterface::canCache`
-* Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`
-* Removed `Guzzle\Http\Message\RequestInterface::isRedirect`
-* Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
-* You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting
-  `Guzzle\Common\Version::$emitWarnings` to true.
-* Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use
-      `$request->getResponseBody()->isRepeatable()` instead.
-* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
-  `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
-  `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-* Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
-* Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
-* Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
-* Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand.
-  These will work through Guzzle 4.0
-* Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params].
-* Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
-* Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`.
-* Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`.
-* Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
-* Marked `Guzzle\Common\Collection::inject()` as deprecated.
-* Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');`
-* CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
-  CacheStorageInterface. These two objects and interface will be removed in a future version.
-* Always setting X-cache headers on cached responses
-* Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
-* `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
-  $request, Response $response);`
-* `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
-* `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
-* Added `CacheStorageInterface::purge($url)`
-* `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
-  $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
-  CanCacheStrategyInterface $canCache = null)`
-* Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
-
-## 3.6.0 - 2013-05-29
-
-* ServiceDescription now implements ToArrayInterface
-* Added command.hidden_params to blacklist certain headers from being treated as additionalParameters
-* Guzzle can now correctly parse incomplete URLs
-* Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
-* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
-* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
-* Specific header implementations can be created for complex headers. When a message creates a header, it uses a
-  HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
-  CacheControl header implementation.
-* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
-* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
-* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
-  Guzzle\Http\Curl\RequestMediator
-* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
-* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
-* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
-* Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
-* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
-* All response header helper functions return a string rather than mixing Header objects and strings inconsistently
-* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
-  directly via interfaces
-* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
-  but are a no-op until removed.
-* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
-  `Guzzle\Service\Command\ArrayCommandInterface`.
-* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
-  on a request while the request is still being transferred
-* The ability to case-insensitively search for header values
-* Guzzle\Http\Message\Header::hasExactHeader
-* Guzzle\Http\Message\Header::raw. Use getAll()
-* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
-  instead.
-* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
-* Added the ability to cast Model objects to a string to view debug information.
-
-## 3.5.0 - 2013-05-13
-
-* Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times
-* Bug: Better cleanup of one-time events across the board (when an event is meant to fire once, it will now remove
-  itself from the EventDispatcher)
-* Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values
-* Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too
-* Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a
-  non-existent key
-* Bug: All __call() method arguments are now required (helps with mocking frameworks)
-* Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference
-  to help with refcount based garbage collection of resources created by sending a request
-* Deprecating ZF1 cache and log adapters. These will be removed in the next major version.
-* Deprecating `Response::getPreviousResponse()` (method signature still exists, but it's deprecated). Use the
-  HistoryPlugin for a history.
-* Added a `responseBody` alias for the `response_body` location
-* Refactored internals to no longer rely on Response::getRequest()
-* HistoryPlugin can now be cast to a string
-* HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests
-  and responses that are sent over the wire
-* Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects
-
-## 3.4.3 - 2013-04-30
-
-* Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response
-* Added a check to re-extract the temp cacert bundle from the phar before sending each request
-
-## 3.4.2 - 2013-04-29
-
-* Bug fix: Stream objects now work correctly with "a" and "a+" modes
-* Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present
-* Bug fix: AsyncPlugin no longer forces HEAD requests
-* Bug fix: DateTime timezones are now properly handled when using the service description schema formatter
-* Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails
-* Setting a response on a request will write to the custom request body from the response body if one is specified
-* LogPlugin now writes to php://output when STDERR is undefined
-* Added the ability to set multiple POST files for the same key in a single call
-* application/x-www-form-urlencoded POSTs now use the utf-8 charset by default
-* Added the ability to queue CurlExceptions to the MockPlugin
-* Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send)
-* Configuration loading now allows remote files
-
-## 3.4.1 - 2013-04-16
-
-* Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti
-  handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost.
-* Exceptions are now properly grouped when sending requests in parallel
-* Redirects are now properly aggregated when a multi transaction fails
-* Redirects now set the response on the original object even in the event of a failure
-* Bug fix: Model names are now properly set even when using $refs
-* Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax
-* Added support for oauth_callback in OAuth signatures
-* Added support for oauth_verifier in OAuth signatures
-* Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection
-
-## 3.4.0 - 2013-04-11
-
-* Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289
-* Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289
-* Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263
-* Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264.
-* Bug fix: Added `number` type to service descriptions.
-* Bug fix: empty parameters are removed from an OAuth signature
-* Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header
-* Bug fix: Fixed "array to string" error when validating a union of types in a service description
-* Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream
-* Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin.
-* Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs.
-* The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections.
-* Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if
-  the Content-Type can be determined based on the entity body or the path of the request.
-* Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder.
-* Added support for a PSR-3 LogAdapter.
-* Added a `command.after_prepare` event
-* Added `oauth_callback` parameter to the OauthPlugin
-* Added the ability to create a custom stream class when using a stream factory
-* Added a CachingEntityBody decorator
-* Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized.
-* The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar.
-* You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies
-* POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This
-  means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use
-  POST fields or files (the latter is only used when emulating a form POST in the browser).
-* Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest
-
-## 3.3.1 - 2013-03-10
-
-* Added the ability to create PHP streaming responses from HTTP requests
-* Bug fix: Running any filters when parsing response headers with service descriptions
-* Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing
-* Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across
-  response location visitors.
-* Bug fix: Removed the possibility of creating configuration files with circular dependencies
-* RequestFactory::create() now uses the key of a POST file when setting the POST file name
-* Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set
-
-## 3.3.0 - 2013-03-03
-
-* A large number of performance optimizations have been made
-* Bug fix: Added 'wb' as a valid write mode for streams
-* Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned
-* Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()`
-* BC: Removed `Guzzle\Http\Utils` class
-* BC: Setting a service description on a client will no longer modify the client's command factories.
-* BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using
-  the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
-* BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to
-  lowercase
-* Operation parameter objects are now lazy loaded internally
-* Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses
-* Added support for instantiating responseType=class responseClass classes. Classes must implement
-  `Guzzle\Service\Command\ResponseClassInterface`
-* Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These
-  additional properties also support locations and can be used to parse JSON responses where the outermost part of the
-  JSON is an array
-* Added support for nested renaming of JSON models (rename sentAs to name)
-* CachePlugin
-    * Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error
-    * Debug headers can now added to cached response in the CachePlugin
-
-## 3.2.0 - 2013-02-14
-
-* CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients.
-* URLs with no path no longer contain a "/" by default
-* Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url.
-* BadResponseException no longer includes the full request and response message
-* Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface
-* Adding getResponseBody() to Guzzle\Http\Message\RequestInterface
-* Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription
-* Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list
-* xmlEncoding can now be customized for the XML declaration of a XML service description operation
-* Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value
-  aggregation and no longer uses callbacks
-* The URL encoding implementation of Guzzle\Http\QueryString can now be customized
-* Bug fix: Filters were not always invoked for array service description parameters
-* Bug fix: Redirects now use a target response body rather than a temporary response body
-* Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded
-* Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives
-
-## 3.1.2 - 2013-01-27
-
-* Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the
-  response body. For example, the XmlVisitor now parses the XML response into an array in the before() method.
-* Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent
-* CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444)
-* Fixed a bug where redirect responses were not chained correctly using getPreviousResponse()
-* Setting default headers on a client after setting the user-agent will not erase the user-agent setting
-
-## 3.1.1 - 2013-01-20
-
-* Adding wildcard support to Guzzle\Common\Collection::getPath()
-* Adding alias support to ServiceBuilder configs
-* Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface
-
-## 3.1.0 - 2013-01-12
-
-* BC: CurlException now extends from RequestException rather than BadResponseException
-* BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse()
-* Added getData to ServiceDescriptionInterface
-* Added context array to RequestInterface::setState()
-* Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http
-* Bug: Adding required content-type when JSON request visitor adds JSON to a command
-* Bug: Fixing the serialization of a service description with custom data
-* Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing
-  an array of successful and failed responses
-* Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection
-* Added Guzzle\Http\IoEmittingEntityBody
-* Moved command filtration from validators to location visitors
-* Added `extends` attributes to service description parameters
-* Added getModels to ServiceDescriptionInterface
-
-## 3.0.7 - 2012-12-19
-
-* Fixing phar detection when forcing a cacert to system if null or true
-* Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()`
-* Cleaning up `Guzzle\Common\Collection::inject` method
-* Adding a response_body location to service descriptions
-
-## 3.0.6 - 2012-12-09
-
-* CurlMulti performance improvements
-* Adding setErrorResponses() to Operation
-* composer.json tweaks
-
-## 3.0.5 - 2012-11-18
-
-* Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin
-* Bug: Response body can now be a string containing "0"
-* Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert
-* Bug: QueryString::fromString now properly parses query string parameters that contain equal signs
-* Added support for XML attributes in service description responses
-* DefaultRequestSerializer now supports array URI parameter values for URI template expansion
-* Added better mimetype guessing to requests and post files
-
-## 3.0.4 - 2012-11-11
-
-* Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value
-* Bug: Cookies can now be added that have a name, domain, or value set to "0"
-* Bug: Using the system cacert bundle when using the Phar
-* Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures
-* Enhanced cookie jar de-duplication
-* Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added
-* Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies
-* Added the ability to create any sort of hash for a stream rather than just an MD5 hash
-
-## 3.0.3 - 2012-11-04
-
-* Implementing redirects in PHP rather than cURL
-* Added PECL URI template extension and using as default parser if available
-* Bug: Fixed Content-Length parsing of Response factory
-* Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams.
-* Adding ToArrayInterface throughout library
-* Fixing OauthPlugin to create unique nonce values per request
-
-## 3.0.2 - 2012-10-25
-
-* Magic methods are enabled by default on clients
-* Magic methods return the result of a command
-* Service clients no longer require a base_url option in the factory
-* Bug: Fixed an issue with URI templates where null template variables were being expanded
-
-## 3.0.1 - 2012-10-22
-
-* Models can now be used like regular collection objects by calling filter, map, etc.
-* Models no longer require a Parameter structure or initial data in the constructor
-* Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator`
-
-## 3.0.0 - 2012-10-15
-
-* Rewrote service description format to be based on Swagger
-    * Now based on JSON schema
-    * Added nested input structures and nested response models
-    * Support for JSON and XML input and output models
-    * Renamed `commands` to `operations`
-    * Removed dot class notation
-    * Removed custom types
-* Broke the project into smaller top-level namespaces to be more component friendly
-* Removed support for XML configs and descriptions. Use arrays or JSON files.
-* Removed the Validation component and Inspector
-* Moved all cookie code to Guzzle\Plugin\Cookie
-* Magic methods on a Guzzle\Service\Client now return the command un-executed.
-* Calling getResult() or getResponse() on a command will lazily execute the command if needed.
-* Now shipping with cURL's CA certs and using it by default
-* Added previousResponse() method to response objects
-* No longer sending Accept and Accept-Encoding headers on every request
-* Only sending an Expect header by default when a payload is greater than 1MB
-* Added/moved client options:
-    * curl.blacklist to curl.option.blacklist
-    * Added ssl.certificate_authority
-* Added a Guzzle\Iterator component
-* Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin
-* Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin)
-* Added a more robust caching plugin
-* Added setBody to response objects
-* Updating LogPlugin to use a more flexible MessageFormatter
-* Added a completely revamped build process
-* Cleaning up Collection class and removing default values from the get method
-* Fixed ZF2 cache adapters
-
-## 2.8.8 - 2012-10-15
-
-* Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did
-
-## 2.8.7 - 2012-09-30
-
-* Bug: Fixed config file aliases for JSON includes
-* Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests
-* Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload
-* Bug: Hardening request and response parsing to account for missing parts
-* Bug: Fixed PEAR packaging
-* Bug: Fixed Request::getInfo
-* Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail
-* Adding the ability for the namespace Iterator factory to look in multiple directories
-* Added more getters/setters/removers from service descriptions
-* Added the ability to remove POST fields from OAuth signatures
-* OAuth plugin now supports 2-legged OAuth
-
-## 2.8.6 - 2012-09-05
-
-* Added the ability to modify and build service descriptions
-* Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command
-* Added a `json` parameter location
-* Now allowing dot notation for classes in the CacheAdapterFactory
-* Using the union of two arrays rather than an array_merge when extending service builder services and service params
-* Ensuring that a service is a string before doing strpos() checks on it when substituting services for references
-  in service builder config files.
-* Services defined in two different config files that include one another will by default replace the previously
-  defined service, but you can now create services that extend themselves and merge their settings over the previous
-* The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like
-  '_default' with a default JSON configuration file.
-
-## 2.8.5 - 2012-08-29
-
-* Bug: Suppressed empty arrays from URI templates
-* Bug: Added the missing $options argument from ServiceDescription::factory to enable caching
-* Added support for HTTP responses that do not contain a reason phrase in the start-line
-* AbstractCommand commands are now invokable
-* Added a way to get the data used when signing an Oauth request before a request is sent
-
-## 2.8.4 - 2012-08-15
-
-* Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin
-* Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable.
-* Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream
-* Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream
-* Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5())
-* Added additional response status codes
-* Removed SSL information from the default User-Agent header
-* DELETE requests can now send an entity body
-* Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries
-* Added the ability of the MockPlugin to consume mocked request bodies
-* LogPlugin now exposes request and response objects in the extras array
-
-## 2.8.3 - 2012-07-30
-
-* Bug: Fixed a case where empty POST requests were sent as GET requests
-* Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body
-* Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new
-* Added multiple inheritance to service description commands
-* Added an ApiCommandInterface and added `getParamNames()` and `hasParam()`
-* Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything
-* Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles
-
-## 2.8.2 - 2012-07-24
-
-* Bug: Query string values set to 0 are no longer dropped from the query string
-* Bug: A Collection object is no longer created each time a call is made to `Guzzle\Service\Command\AbstractCommand::getRequestHeaders()`
-* Bug: `+` is now treated as an encoded space when parsing query strings
-* QueryString and Collection performance improvements
-* Allowing dot notation for class paths in filters attribute of a service descriptions
-
-## 2.8.1 - 2012-07-16
-
-* Loosening Event Dispatcher dependency
-* POST redirects can now be customized using CURLOPT_POSTREDIR
-
-## 2.8.0 - 2012-07-15
-
-* BC: Guzzle\Http\Query
-    * Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl)
-    * Changed isEncodingValues() and isEncodingFields() to isUrlEncoding()
-    * Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool)
-    * Changed the aggregation functions of QueryString to be static methods
-    * Can now use fromString() with querystrings that have a leading ?
-* cURL configuration values can be specified in service descriptions using `curl.` prefixed parameters
-* Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body
-* Cookies are no longer URL decoded by default
-* Bug: URI template variables set to null are no longer expanded
-
-## 2.7.2 - 2012-07-02
-
-* BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser.
-* BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty()
-* CachePlugin now allows for a custom request parameter function to check if a request can be cached
-* Bug fix: CachePlugin now only caches GET and HEAD requests by default
-* Bug fix: Using header glue when transferring headers over the wire
-* Allowing deeply nested arrays for composite variables in URI templates
-* Batch divisors can now return iterators or arrays
-
-## 2.7.1 - 2012-06-26
-
-* Minor patch to update version number in UA string
-* Updating build process
-
-## 2.7.0 - 2012-06-25
-
-* BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes.
-* BC: Removed magic setX methods from commands
-* BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method
-* Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable.
-* Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity)
-* Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace
-* Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin
-* Added the ability to set POST fields and files in a service description
-* Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method
-* Adding a command.before_prepare event to clients
-* Added BatchClosureTransfer and BatchClosureDivisor
-* BatchTransferException now includes references to the batch divisor and transfer strategies
-* Fixed some tests so that they pass more reliably
-* Added Guzzle\Common\Log\ArrayLogAdapter
-
-## 2.6.6 - 2012-06-10
-
-* BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin
-* BC: Removing Guzzle\Service\Command\CommandSet
-* Adding generic batching system (replaces the batch queue plugin and command set)
-* Updating ZF cache and log adapters and now using ZF's composer repository
-* Bug: Setting the name of each ApiParam when creating through an ApiCommand
-* Adding result_type, result_doc, deprecated, and doc_url to service descriptions
-* Bug: Changed the default cookie header casing back to 'Cookie'
-
-## 2.6.5 - 2012-06-03
-
-* BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource()
-* BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from
-* BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data
-* BC: Renaming methods in the CookieJarInterface
-* Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations
-* Making the default glue for HTTP headers ';' instead of ','
-* Adding a removeValue to Guzzle\Http\Message\Header
-* Adding getCookies() to request interface.
-* Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber()
-
-## 2.6.4 - 2012-05-30
-
-* BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class.
-* BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand
-* Bug: Fixing magic method command calls on clients
-* Bug: Email constraint only validates strings
-* Bug: Aggregate POST fields when POST files are present in curl handle
-* Bug: Fixing default User-Agent header
-* Bug: Only appending or prepending parameters in commands if they are specified
-* Bug: Not requiring response reason phrases or status codes to match a predefined list of codes
-* Allowing the use of dot notation for class namespaces when using instance_of constraint
-* Added any_match validation constraint
-* Added an AsyncPlugin
-* Passing request object to the calculateWait method of the ExponentialBackoffPlugin
-* Allowing the result of a command object to be changed
-* Parsing location and type sub values when instantiating a service description rather than over and over at runtime
-
-## 2.6.3 - 2012-05-23
-
-* [BC] Guzzle\Common\FromConfigInterface no longer requires any config options.
-* [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields.
-* You can now use an array of data when creating PUT request bodies in the request factory.
-* Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable.
-* [Http] Adding support for Content-Type in multipart POST uploads per upload
-* [Http] Added support for uploading multiple files using the same name (foo[0], foo[1])
-* Adding more POST data operations for easier manipulation of POST data.
-* You can now set empty POST fields.
-* The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files.
-* Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate.
-* CS updates
-
-## 2.6.2 - 2012-05-19
-
-* [Http] Better handling of nested scope requests in CurlMulti.  Requests are now always prepares in the send() method rather than the addRequest() method.
-
-## 2.6.1 - 2012-05-19
-
-* [BC] Removing 'path' support in service descriptions.  Use 'uri'.
-* [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache.
-* [BC] Removing Guzzle\Common\NullObject.  Use https://github.com/mtdowling/NullObject if you need it.
-* [BC] Removing Guzzle\Common\XmlElement.
-* All commands, both dynamic and concrete, have ApiCommand objects.
-* Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits.
-* Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored.
-* Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible.
-
-## 2.6.0 - 2012-05-15
-
-* [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder
-* [BC] Executing a Command returns the result of the command rather than the command
-* [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed.
-* [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args.
-* [BC] Moving ResourceIterator* to Guzzle\Service\Resource
-* [BC] Completely refactored ResourceIterators to iterate over a cloned command object
-* [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate
-* [BC] Guzzle\Guzzle is now deprecated
-* Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject
-* Adding Guzzle\Version class to give version information about Guzzle
-* Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate()
-* Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data
-* ServiceDescription and ServiceBuilder are now cacheable using similar configs
-* Changing the format of XML and JSON service builder configs.  Backwards compatible.
-* Cleaned up Cookie parsing
-* Trimming the default Guzzle User-Agent header
-* Adding a setOnComplete() method to Commands that is called when a command completes
-* Keeping track of requests that were mocked in the MockPlugin
-* Fixed a caching bug in the CacheAdapterFactory
-* Inspector objects can be injected into a Command object
-* Refactoring a lot of code and tests to be case insensitive when dealing with headers
-* Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL
-* Adding the ability to set global option overrides to service builder configs
-* Adding the ability to include other service builder config files from within XML and JSON files
-* Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method.
-
-## 2.5.0 - 2012-05-08
-
-* Major performance improvements
-* [BC] Simplifying Guzzle\Common\Collection.  Please check to see if you are using features that are now deprecated.
-* [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component.
-* [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates.  Use "{}"
-* Added the ability to passed parameters to all requests created by a client
-* Added callback functionality to the ExponentialBackoffPlugin
-* Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies.
-* Rewinding request stream bodies when retrying requests
-* Exception is thrown when JSON response body cannot be decoded
-* Added configurable magic method calls to clients and commands.  This is off by default.
-* Fixed a defect that added a hash to every parsed URL part
-* Fixed duplicate none generation for OauthPlugin.
-* Emitting an event each time a client is generated by a ServiceBuilder
-* Using an ApiParams object instead of a Collection for parameters of an ApiCommand
-* cache.* request parameters should be renamed to params.cache.*
-* Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc.). See CurlHandle.
-* Added the ability to disable type validation of service descriptions
-* ServiceDescriptions and ServiceBuilders are now Serializable
diff --git a/vendor/guzzlehttp/guzzle/Dockerfile b/vendor/guzzlehttp/guzzle/Dockerfile
deleted file mode 100644
index f6a095230e85638cc9f98dd7beef2bcf8c87e98e..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-FROM composer:latest as setup
-
-RUN mkdir /guzzle
-
-WORKDIR /guzzle
-
-RUN set -xe \
-    && composer init --name=guzzlehttp/test --description="Simple project for testing Guzzle scripts" --author="Márk Sági-Kazár <mark.sagikazar@gmail.com>" --no-interaction \
-    && composer require guzzlehttp/guzzle
-
-
-FROM php:7.3
-
-RUN mkdir /guzzle
-
-WORKDIR /guzzle
-
-COPY --from=setup /guzzle /guzzle
diff --git a/vendor/guzzlehttp/guzzle/LICENSE b/vendor/guzzlehttp/guzzle/LICENSE
deleted file mode 100644
index 50a177b0320c3f1f201fe6c57d4ecc0971017037..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/guzzlehttp/guzzle/README.md b/vendor/guzzlehttp/guzzle/README.md
deleted file mode 100644
index 5fdb6c5f42dba76d7d29d51dd23512478ac3ccdb..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-Guzzle, PHP HTTP client
-=======================
-
-[![Latest Version](https://img.shields.io/github/release/guzzle/guzzle.svg?style=flat-square)](https://github.com/guzzle/guzzle/releases)
-[![Build Status](https://img.shields.io/travis/guzzle/guzzle.svg?style=flat-square)](https://travis-ci.org/guzzle/guzzle)
-[![Total Downloads](https://img.shields.io/packagist/dt/guzzlehttp/guzzle.svg?style=flat-square)](https://packagist.org/packages/guzzlehttp/guzzle)
-
-Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and
-trivial to integrate with web services.
-
-- Simple interface for building query strings, POST requests, streaming large
-  uploads, streaming large downloads, using HTTP cookies, uploading JSON data,
-  etc...
-- Can send both synchronous and asynchronous requests using the same interface.
-- Uses PSR-7 interfaces for requests, responses, and streams. This allows you
-  to utilize other PSR-7 compatible libraries with Guzzle.
-- Abstracts away the underlying HTTP transport, allowing you to write
-  environment and transport agnostic code; i.e., no hard dependency on cURL,
-  PHP streams, sockets, or non-blocking event loops.
-- Middleware system allows you to augment and compose client behavior.
-
-```php
-$client = new \GuzzleHttp\Client();
-$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');
-
-echo $response->getStatusCode(); # 200
-echo $response->getHeaderLine('content-type'); # 'application/json; charset=utf8'
-echo $response->getBody(); # '{"id": 1420053, "name": "guzzle", ...}'
-
-# Send an asynchronous request.
-$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
-$promise = $client->sendAsync($request)->then(function ($response) {
-    echo 'I completed! ' . $response->getBody();
-});
-
-$promise->wait();
-```
-
-## Help and docs
-
-- [Documentation](http://guzzlephp.org/)
-- [Stack Overflow](http://stackoverflow.com/questions/tagged/guzzle)
-- [Gitter](https://gitter.im/guzzle/guzzle)
-
-
-## Installing Guzzle
-
-The recommended way to install Guzzle is through
-[Composer](http://getcomposer.org).
-
-```bash
-# Install Composer
-curl -sS https://getcomposer.org/installer | php
-```
-
-Next, run the Composer command to install the latest stable version of Guzzle:
-
-```bash
-composer require guzzlehttp/guzzle
-```
-
-After installing, you need to require Composer's autoloader:
-
-```php
-require 'vendor/autoload.php';
-```
-
-You can then later update Guzzle using composer:
-
- ```bash
-composer update
- ```
-
-
-## Version Guidance
-
-| Version | Status     | Packagist           | Namespace    | Repo                | Docs                | PSR-7 | PHP Version |
-|---------|------------|---------------------|--------------|---------------------|---------------------|-------|-------------|
-| 3.x     | EOL        | `guzzle/guzzle`     | `Guzzle`     | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No    | >= 5.3.3    |
-| 4.x     | EOL        | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A                 | No    | >= 5.4      |
-| 5.x     | EOL        | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No    | >= 5.4      |
-| 6.x     | Latest     | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes   | >= 5.5      |
-
-[guzzle-3-repo]: https://github.com/guzzle/guzzle3
-[guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x
-[guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3
-[guzzle-6-repo]: https://github.com/guzzle/guzzle
-[guzzle-3-docs]: http://guzzle3.readthedocs.org
-[guzzle-5-docs]: http://guzzle.readthedocs.org/en/5.3/
-[guzzle-6-docs]: http://guzzle.readthedocs.org/en/latest/
diff --git a/vendor/guzzlehttp/guzzle/UPGRADING.md b/vendor/guzzlehttp/guzzle/UPGRADING.md
deleted file mode 100644
index 91d1dcc99317e1dd713f18638cf97d2921d31f6a..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/UPGRADING.md
+++ /dev/null
@@ -1,1203 +0,0 @@
-Guzzle Upgrade Guide
-====================
-
-5.0 to 6.0
-----------
-
-Guzzle now uses [PSR-7](http://www.php-fig.org/psr/psr-7/) for HTTP messages.
-Due to the fact that these messages are immutable, this prompted a refactoring
-of Guzzle to use a middleware based system rather than an event system. Any
-HTTP message interaction (e.g., `GuzzleHttp\Message\Request`) need to be
-updated to work with the new immutable PSR-7 request and response objects. Any
-event listeners or subscribers need to be updated to become middleware
-functions that wrap handlers (or are injected into a
-`GuzzleHttp\HandlerStack`).
-
-- Removed `GuzzleHttp\BatchResults`
-- Removed `GuzzleHttp\Collection`
-- Removed `GuzzleHttp\HasDataTrait`
-- Removed `GuzzleHttp\ToArrayInterface`
-- The `guzzlehttp/streams` dependency has been removed. Stream functionality
-  is now present in the `GuzzleHttp\Psr7` namespace provided by the
-  `guzzlehttp/psr7` package.
-- Guzzle no longer uses ReactPHP promises and now uses the
-  `guzzlehttp/promises` library. We use a custom promise library for three
-  significant reasons:
-  1. React promises (at the time of writing this) are recursive. Promise
-     chaining and promise resolution will eventually blow the stack. Guzzle
-     promises are not recursive as they use a sort of trampolining technique.
-     Note: there has been movement in the React project to modify promises to
-     no longer utilize recursion.
-  2. Guzzle needs to have the ability to synchronously block on a promise to
-     wait for a result. Guzzle promises allows this functionality (and does
-     not require the use of recursion).
-  3. Because we need to be able to wait on a result, doing so using React
-     promises requires wrapping react promises with RingPHP futures. This
-     overhead is no longer needed, reducing stack sizes, reducing complexity,
-     and improving performance.
-- `GuzzleHttp\Mimetypes` has been moved to a function in
-  `GuzzleHttp\Psr7\mimetype_from_extension` and
-  `GuzzleHttp\Psr7\mimetype_from_filename`.
-- `GuzzleHttp\Query` and `GuzzleHttp\QueryParser` have been removed. Query
-  strings must now be passed into request objects as strings, or provided to
-  the `query` request option when creating requests with clients. The `query`
-  option uses PHP's `http_build_query` to convert an array to a string. If you
-  need a different serialization technique, you will need to pass the query
-  string in as a string. There are a couple helper functions that will make
-  working with query strings easier: `GuzzleHttp\Psr7\parse_query` and
-  `GuzzleHttp\Psr7\build_query`.
-- Guzzle no longer has a dependency on RingPHP. Due to the use of a middleware
-  system based on PSR-7, using RingPHP and it's middleware system as well adds
-  more complexity than the benefits it provides. All HTTP handlers that were
-  present in RingPHP have been modified to work directly with PSR-7 messages
-  and placed in the `GuzzleHttp\Handler` namespace. This significantly reduces
-  complexity in Guzzle, removes a dependency, and improves performance. RingPHP
-  will be maintained for Guzzle 5 support, but will no longer be a part of
-  Guzzle 6.
-- As Guzzle now uses a middleware based systems the event system and RingPHP
-  integration has been removed. Note: while the event system has been removed,
-  it is possible to add your own type of event system that is powered by the
-  middleware system.
-  - Removed the `Event` namespace.
-  - Removed the `Subscriber` namespace.
-  - Removed `Transaction` class
-  - Removed `RequestFsm`
-  - Removed `RingBridge`
-  - `GuzzleHttp\Subscriber\Cookie` is now provided by
-    `GuzzleHttp\Middleware::cookies`
-  - `GuzzleHttp\Subscriber\HttpError` is now provided by
-    `GuzzleHttp\Middleware::httpError`
-  - `GuzzleHttp\Subscriber\History` is now provided by
-    `GuzzleHttp\Middleware::history`
-  - `GuzzleHttp\Subscriber\Mock` is now provided by
-    `GuzzleHttp\Handler\MockHandler`
-  - `GuzzleHttp\Subscriber\Prepare` is now provided by
-    `GuzzleHttp\PrepareBodyMiddleware`
-  - `GuzzleHttp\Subscriber\Redirect` is now provided by
-    `GuzzleHttp\RedirectMiddleware`
-- Guzzle now uses `Psr\Http\Message\UriInterface` (implements in
-  `GuzzleHttp\Psr7\Uri`) for URI support. `GuzzleHttp\Url` is now gone.
-- Static functions in `GuzzleHttp\Utils` have been moved to namespaced
-  functions under the `GuzzleHttp` namespace. This requires either a Composer
-  based autoloader or you to include functions.php.
-- `GuzzleHttp\ClientInterface::getDefaultOption` has been renamed to
-  `GuzzleHttp\ClientInterface::getConfig`.
-- `GuzzleHttp\ClientInterface::setDefaultOption` has been removed.
-- The `json` and `xml` methods of response objects has been removed. With the
-  migration to strictly adhering to PSR-7 as the interface for Guzzle messages,
-  adding methods to message interfaces would actually require Guzzle messages
-  to extend from PSR-7 messages rather then work with them directly.
-
-## Migrating to middleware
-
-The change to PSR-7 unfortunately required significant refactoring to Guzzle
-due to the fact that PSR-7 messages are immutable. Guzzle 5 relied on an event
-system from plugins. The event system relied on mutability of HTTP messages and
-side effects in order to work. With immutable messages, you have to change your
-workflow to become more about either returning a value (e.g., functional
-middlewares) or setting a value on an object. Guzzle v6 has chosen the
-functional middleware approach.
-
-Instead of using the event system to listen for things like the `before` event,
-you now create a stack based middleware function that intercepts a request on
-the way in and the promise of the response on the way out. This is a much
-simpler and more predictable approach than the event system and works nicely
-with PSR-7 middleware. Due to the use of promises, the middleware system is
-also asynchronous.
-
-v5:
-
-```php
-use GuzzleHttp\Event\BeforeEvent;
-$client = new GuzzleHttp\Client();
-// Get the emitter and listen to the before event.
-$client->getEmitter()->on('before', function (BeforeEvent $e) {
-    // Guzzle v5 events relied on mutation
-    $e->getRequest()->setHeader('X-Foo', 'Bar');
-});
-```
-
-v6:
-
-In v6, you can modify the request before it is sent using the `mapRequest`
-middleware. The idiomatic way in v6 to modify the request/response lifecycle is
-to setup a handler middleware stack up front and inject the handler into a
-client.
-
-```php
-use GuzzleHttp\Middleware;
-// Create a handler stack that has all of the default middlewares attached
-$handler = GuzzleHttp\HandlerStack::create();
-// Push the handler onto the handler stack
-$handler->push(Middleware::mapRequest(function (RequestInterface $request) {
-    // Notice that we have to return a request object
-    return $request->withHeader('X-Foo', 'Bar');
-}));
-// Inject the handler into the client
-$client = new GuzzleHttp\Client(['handler' => $handler]);
-```
-
-## POST Requests
-
-This version added the [`form_params`](http://guzzle.readthedocs.org/en/latest/request-options.html#form_params)
-and `multipart` request options. `form_params` is an associative array of
-strings or array of strings and is used to serialize an
-`application/x-www-form-urlencoded` POST request. The
-[`multipart`](http://guzzle.readthedocs.org/en/latest/request-options.html#multipart)
-option is now used to send a multipart/form-data POST request.
-
-`GuzzleHttp\Post\PostFile` has been removed. Use the `multipart` option to add
-POST files to a multipart/form-data request.
-
-The `body` option no longer accepts an array to send POST requests. Please use
-`multipart` or `form_params` instead.
-
-The `base_url` option has been renamed to `base_uri`.
-
-4.x to 5.0
-----------
-
-## Rewritten Adapter Layer
-
-Guzzle now uses [RingPHP](http://ringphp.readthedocs.org/en/latest) to send
-HTTP requests. The `adapter` option in a `GuzzleHttp\Client` constructor
-is still supported, but it has now been renamed to `handler`. Instead of
-passing a `GuzzleHttp\Adapter\AdapterInterface`, you must now pass a PHP
-`callable` that follows the RingPHP specification.
-
-## Removed Fluent Interfaces
-
-[Fluent interfaces were removed](http://ocramius.github.io/blog/fluent-interfaces-are-evil)
-from the following classes:
-
-- `GuzzleHttp\Collection`
-- `GuzzleHttp\Url`
-- `GuzzleHttp\Query`
-- `GuzzleHttp\Post\PostBody`
-- `GuzzleHttp\Cookie\SetCookie`
-
-## Removed functions.php
-
-Removed "functions.php", so that Guzzle is truly PSR-4 compliant. The following
-functions can be used as replacements.
-
-- `GuzzleHttp\json_decode` -> `GuzzleHttp\Utils::jsonDecode`
-- `GuzzleHttp\get_path` -> `GuzzleHttp\Utils::getPath`
-- `GuzzleHttp\Utils::setPath` -> `GuzzleHttp\set_path`
-- `GuzzleHttp\Pool::batch` -> `GuzzleHttp\batch`. This function is, however,
-  deprecated in favor of using `GuzzleHttp\Pool::batch()`.
-
-The "procedural" global client has been removed with no replacement (e.g.,
-`GuzzleHttp\get()`, `GuzzleHttp\post()`, etc.). Use a `GuzzleHttp\Client`
-object as a replacement.
-
-## `throwImmediately` has been removed
-
-The concept of "throwImmediately" has been removed from exceptions and error
-events. This control mechanism was used to stop a transfer of concurrent
-requests from completing. This can now be handled by throwing the exception or
-by cancelling a pool of requests or each outstanding future request
-individually.
-
-## headers event has been removed
-
-Removed the "headers" event. This event was only useful for changing the
-body a response once the headers of the response were known. You can implement
-a similar behavior in a number of ways. One example might be to use a
-FnStream that has access to the transaction being sent. For example, when the
-first byte is written, you could check if the response headers match your
-expectations, and if so, change the actual stream body that is being
-written to.
-
-## Updates to HTTP Messages
-
-Removed the `asArray` parameter from
-`GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
-value as an array, then use the newly added `getHeaderAsArray()` method of
-`MessageInterface`. This change makes the Guzzle interfaces compatible with
-the PSR-7 interfaces.
-
-3.x to 4.0
-----------
-
-## Overarching changes:
-
-- Now requires PHP 5.4 or greater.
-- No longer requires cURL to send requests.
-- Guzzle no longer wraps every exception it throws. Only exceptions that are
-  recoverable are now wrapped by Guzzle.
-- Various namespaces have been removed or renamed.
-- No longer requiring the Symfony EventDispatcher. A custom event dispatcher
-  based on the Symfony EventDispatcher is
-  now utilized in `GuzzleHttp\Event\EmitterInterface` (resulting in significant
-  speed and functionality improvements).
-
-Changes per Guzzle 3.x namespace are described below.
-
-## Batch
-
-The `Guzzle\Batch` namespace has been removed. This is best left to
-third-parties to implement on top of Guzzle's core HTTP library.
-
-## Cache
-
-The `Guzzle\Cache` namespace has been removed. (Todo: No suitable replacement
-has been implemented yet, but hoping to utilize a PSR cache interface).
-
-## Common
-
-- Removed all of the wrapped exceptions. It's better to use the standard PHP
-  library for unrecoverable exceptions.
-- `FromConfigInterface` has been removed.
-- `Guzzle\Common\Version` has been removed. The VERSION constant can be found
-  at `GuzzleHttp\ClientInterface::VERSION`.
-
-### Collection
-
-- `getAll` has been removed. Use `toArray` to convert a collection to an array.
-- `inject` has been removed.
-- `keySearch` has been removed.
-- `getPath` no longer supports wildcard expressions. Use something better like
-  JMESPath for this.
-- `setPath` now supports appending to an existing array via the `[]` notation.
-
-### Events
-
-Guzzle no longer requires Symfony's EventDispatcher component. Guzzle now uses
-`GuzzleHttp\Event\Emitter`.
-
-- `Symfony\Component\EventDispatcher\EventDispatcherInterface` is replaced by
-  `GuzzleHttp\Event\EmitterInterface`.
-- `Symfony\Component\EventDispatcher\EventDispatcher` is replaced by
-  `GuzzleHttp\Event\Emitter`.
-- `Symfony\Component\EventDispatcher\Event` is replaced by
-  `GuzzleHttp\Event\Event`, and Guzzle now has an EventInterface in
-  `GuzzleHttp\Event\EventInterface`.
-- `AbstractHasDispatcher` has moved to a trait, `HasEmitterTrait`, and
-  `HasDispatcherInterface` has moved to `HasEmitterInterface`. Retrieving the
-  event emitter of a request, client, etc. now uses the `getEmitter` method
-  rather than the `getDispatcher` method.
-
-#### Emitter
-
-- Use the `once()` method to add a listener that automatically removes itself
-  the first time it is invoked.
-- Use the `listeners()` method to retrieve a list of event listeners rather than
-  the `getListeners()` method.
-- Use `emit()` instead of `dispatch()` to emit an event from an emitter.
-- Use `attach()` instead of `addSubscriber()` and `detach()` instead of
-  `removeSubscriber()`.
-
-```php
-$mock = new Mock();
-// 3.x
-$request->getEventDispatcher()->addSubscriber($mock);
-$request->getEventDispatcher()->removeSubscriber($mock);
-// 4.x
-$request->getEmitter()->attach($mock);
-$request->getEmitter()->detach($mock);
-```
-
-Use the `on()` method to add a listener rather than the `addListener()` method.
-
-```php
-// 3.x
-$request->getEventDispatcher()->addListener('foo', function (Event $event) { /* ... */ } );
-// 4.x
-$request->getEmitter()->on('foo', function (Event $event, $name) { /* ... */ } );
-```
-
-## Http
-
-### General changes
-
-- The cacert.pem certificate has been moved to `src/cacert.pem`.
-- Added the concept of adapters that are used to transfer requests over the
-  wire.
-- Simplified the event system.
-- Sending requests in parallel is still possible, but batching is no longer a
-  concept of the HTTP layer. Instead, you must use the `complete` and `error`
-  events to asynchronously manage parallel request transfers.
-- `Guzzle\Http\Url` has moved to `GuzzleHttp\Url`.
-- `Guzzle\Http\QueryString` has moved to `GuzzleHttp\Query`.
-- QueryAggregators have been rewritten so that they are simply callable
-  functions.
-- `GuzzleHttp\StaticClient` has been removed. Use the functions provided in
-  `functions.php` for an easy to use static client instance.
-- Exceptions in `GuzzleHttp\Exception` have been updated to all extend from
-  `GuzzleHttp\Exception\TransferException`.
-
-### Client
-
-Calling methods like `get()`, `post()`, `head()`, etc. no longer create and
-return a request, but rather creates a request, sends the request, and returns
-the response.
-
-```php
-// 3.0
-$request = $client->get('/');
-$response = $request->send();
-
-// 4.0
-$response = $client->get('/');
-
-// or, to mirror the previous behavior
-$request = $client->createRequest('GET', '/');
-$response = $client->send($request);
-```
-
-`GuzzleHttp\ClientInterface` has changed.
-
-- The `send` method no longer accepts more than one request. Use `sendAll` to
-  send multiple requests in parallel.
-- `setUserAgent()` has been removed. Use a default request option instead. You
-  could, for example, do something like:
-  `$client->setConfig('defaults/headers/User-Agent', 'Foo/Bar ' . $client::getDefaultUserAgent())`.
-- `setSslVerification()` has been removed. Use default request options instead,
-  like `$client->setConfig('defaults/verify', true)`.
-
-`GuzzleHttp\Client` has changed.
-
-- The constructor now accepts only an associative array. You can include a
-  `base_url` string or array to use a URI template as the base URL of a client.
-  You can also specify a `defaults` key that is an associative array of default
-  request options. You can pass an `adapter` to use a custom adapter,
-  `batch_adapter` to use a custom adapter for sending requests in parallel, or
-  a `message_factory` to change the factory used to create HTTP requests and
-  responses.
-- The client no longer emits a `client.create_request` event.
-- Creating requests with a client no longer automatically utilize a URI
-  template. You must pass an array into a creational method (e.g.,
-  `createRequest`, `get`, `put`, etc.) in order to expand a URI template.
-
-### Messages
-
-Messages no longer have references to their counterparts (i.e., a request no
-longer has a reference to it's response, and a response no loger has a
-reference to its request). This association is now managed through a
-`GuzzleHttp\Adapter\TransactionInterface` object. You can get references to
-these transaction objects using request events that are emitted over the
-lifecycle of a request.
-
-#### Requests with a body
-
-- `GuzzleHttp\Message\EntityEnclosingRequest` and
-  `GuzzleHttp\Message\EntityEnclosingRequestInterface` have been removed. The
-  separation between requests that contain a body and requests that do not
-  contain a body has been removed, and now `GuzzleHttp\Message\RequestInterface`
-  handles both use cases.
-- Any method that previously accepts a `GuzzleHttp\Response` object now accept a
-  `GuzzleHttp\Message\ResponseInterface`.
-- `GuzzleHttp\Message\RequestFactoryInterface` has been renamed to
-  `GuzzleHttp\Message\MessageFactoryInterface`. This interface is used to create
-  both requests and responses and is implemented in
-  `GuzzleHttp\Message\MessageFactory`.
-- POST field and file methods have been removed from the request object. You
-  must now use the methods made available to `GuzzleHttp\Post\PostBodyInterface`
-  to control the format of a POST body. Requests that are created using a
-  standard `GuzzleHttp\Message\MessageFactoryInterface` will automatically use
-  a `GuzzleHttp\Post\PostBody` body if the body was passed as an array or if
-  the method is POST and no body is provided.
-
-```php
-$request = $client->createRequest('POST', '/');
-$request->getBody()->setField('foo', 'bar');
-$request->getBody()->addFile(new PostFile('file_key', fopen('/path/to/content', 'r')));
-```
-
-#### Headers
-
-- `GuzzleHttp\Message\Header` has been removed. Header values are now simply
-  represented by an array of values or as a string. Header values are returned
-  as a string by default when retrieving a header value from a message. You can
-  pass an optional argument of `true` to retrieve a header value as an array
-  of strings instead of a single concatenated string.
-- `GuzzleHttp\PostFile` and `GuzzleHttp\PostFileInterface` have been moved to
-  `GuzzleHttp\Post`. This interface has been simplified and now allows the
-  addition of arbitrary headers.
-- Custom headers like `GuzzleHttp\Message\Header\Link` have been removed. Most
-  of the custom headers are now handled separately in specific
-  subscribers/plugins, and `GuzzleHttp\Message\HeaderValues::parseParams()` has
-  been updated to properly handle headers that contain parameters (like the
-  `Link` header).
-
-#### Responses
-
-- `GuzzleHttp\Message\Response::getInfo()` and
-  `GuzzleHttp\Message\Response::setInfo()` have been removed. Use the event
-  system to retrieve this type of information.
-- `GuzzleHttp\Message\Response::getRawHeaders()` has been removed.
-- `GuzzleHttp\Message\Response::getMessage()` has been removed.
-- `GuzzleHttp\Message\Response::calculateAge()` and other cache specific
-  methods have moved to the CacheSubscriber.
-- Header specific helper functions like `getContentMd5()` have been removed.
-  Just use `getHeader('Content-MD5')` instead.
-- `GuzzleHttp\Message\Response::setRequest()` and
-  `GuzzleHttp\Message\Response::getRequest()` have been removed. Use the event
-  system to work with request and response objects as a transaction.
-- `GuzzleHttp\Message\Response::getRedirectCount()` has been removed. Use the
-  Redirect subscriber instead.
-- `GuzzleHttp\Message\Response::isSuccessful()` and other related methods have
-  been removed. Use `getStatusCode()` instead.
-
-#### Streaming responses
-
-Streaming requests can now be created by a client directly, returning a
-`GuzzleHttp\Message\ResponseInterface` object that contains a body stream
-referencing an open PHP HTTP stream.
-
-```php
-// 3.0
-use Guzzle\Stream\PhpStreamRequestFactory;
-$request = $client->get('/');
-$factory = new PhpStreamRequestFactory();
-$stream = $factory->fromRequest($request);
-$data = $stream->read(1024);
-
-// 4.0
-$response = $client->get('/', ['stream' => true]);
-// Read some data off of the stream in the response body
-$data = $response->getBody()->read(1024);
-```
-
-#### Redirects
-
-The `configureRedirects()` method has been removed in favor of a
-`allow_redirects` request option.
-
-```php
-// Standard redirects with a default of a max of 5 redirects
-$request = $client->createRequest('GET', '/', ['allow_redirects' => true]);
-
-// Strict redirects with a custom number of redirects
-$request = $client->createRequest('GET', '/', [
-    'allow_redirects' => ['max' => 5, 'strict' => true]
-]);
-```
-
-#### EntityBody
-
-EntityBody interfaces and classes have been removed or moved to
-`GuzzleHttp\Stream`. All classes and interfaces that once required
-`GuzzleHttp\EntityBodyInterface` now require
-`GuzzleHttp\Stream\StreamInterface`. Creating a new body for a request no
-longer uses `GuzzleHttp\EntityBody::factory` but now uses
-`GuzzleHttp\Stream\Stream::factory` or even better:
-`GuzzleHttp\Stream\create()`.
-
-- `Guzzle\Http\EntityBodyInterface` is now `GuzzleHttp\Stream\StreamInterface`
-- `Guzzle\Http\EntityBody` is now `GuzzleHttp\Stream\Stream`
-- `Guzzle\Http\CachingEntityBody` is now `GuzzleHttp\Stream\CachingStream`
-- `Guzzle\Http\ReadLimitEntityBody` is now `GuzzleHttp\Stream\LimitStream`
-- `Guzzle\Http\IoEmittyinEntityBody` has been removed.
-
-#### Request lifecycle events
-
-Requests previously submitted a large number of requests. The number of events
-emitted over the lifecycle of a request has been significantly reduced to make
-it easier to understand how to extend the behavior of a request. All events
-emitted during the lifecycle of a request now emit a custom
-`GuzzleHttp\Event\EventInterface` object that contains context providing
-methods and a way in which to modify the transaction at that specific point in
-time (e.g., intercept the request and set a response on the transaction).
-
-- `request.before_send` has been renamed to `before` and now emits a
-  `GuzzleHttp\Event\BeforeEvent`
-- `request.complete` has been renamed to `complete` and now emits a
-  `GuzzleHttp\Event\CompleteEvent`.
-- `request.sent` has been removed. Use `complete`.
-- `request.success` has been removed. Use `complete`.
-- `error` is now an event that emits a `GuzzleHttp\Event\ErrorEvent`.
-- `request.exception` has been removed. Use `error`.
-- `request.receive.status_line` has been removed.
-- `curl.callback.progress` has been removed. Use a custom `StreamInterface` to
-  maintain a status update.
-- `curl.callback.write` has been removed. Use a custom `StreamInterface` to
-  intercept writes.
-- `curl.callback.read` has been removed. Use a custom `StreamInterface` to
-  intercept reads.
-
-`headers` is a new event that is emitted after the response headers of a
-request have been received before the body of the response is downloaded. This
-event emits a `GuzzleHttp\Event\HeadersEvent`.
-
-You can intercept a request and inject a response using the `intercept()` event
-of a `GuzzleHttp\Event\BeforeEvent`, `GuzzleHttp\Event\CompleteEvent`, and
-`GuzzleHttp\Event\ErrorEvent` event.
-
-See: http://docs.guzzlephp.org/en/latest/events.html
-
-## Inflection
-
-The `Guzzle\Inflection` namespace has been removed. This is not a core concern
-of Guzzle.
-
-## Iterator
-
-The `Guzzle\Iterator` namespace has been removed.
-
-- `Guzzle\Iterator\AppendIterator`, `Guzzle\Iterator\ChunkedIterator`, and
-  `Guzzle\Iterator\MethodProxyIterator` are nice, but not a core requirement of
-  Guzzle itself.
-- `Guzzle\Iterator\FilterIterator` is no longer needed because an equivalent
-  class is shipped with PHP 5.4.
-- `Guzzle\Iterator\MapIterator` is not really needed when using PHP 5.5 because
-  it's easier to just wrap an iterator in a generator that maps values.
-
-For a replacement of these iterators, see https://github.com/nikic/iter
-
-## Log
-
-The LogPlugin has moved to https://github.com/guzzle/log-subscriber. The
-`Guzzle\Log` namespace has been removed. Guzzle now relies on
-`Psr\Log\LoggerInterface` for all logging. The MessageFormatter class has been
-moved to `GuzzleHttp\Subscriber\Log\Formatter`.
-
-## Parser
-
-The `Guzzle\Parser` namespace has been removed. This was previously used to
-make it possible to plug in custom parsers for cookies, messages, URI
-templates, and URLs; however, this level of complexity is not needed in Guzzle
-so it has been removed.
-
-- Cookie: Cookie parsing logic has been moved to
-  `GuzzleHttp\Cookie\SetCookie::fromString`.
-- Message: Message parsing logic for both requests and responses has been moved
-  to `GuzzleHttp\Message\MessageFactory::fromMessage`. Message parsing is only
-  used in debugging or deserializing messages, so it doesn't make sense for
-  Guzzle as a library to add this level of complexity to parsing messages.
-- UriTemplate: URI template parsing has been moved to
-  `GuzzleHttp\UriTemplate`. The Guzzle library will automatically use the PECL
-  URI template library if it is installed.
-- Url: URL parsing is now performed in `GuzzleHttp\Url::fromString` (previously
-  it was `Guzzle\Http\Url::factory()`). If custom URL parsing is necessary,
-  then developers are free to subclass `GuzzleHttp\Url`.
-
-## Plugin
-
-The `Guzzle\Plugin` namespace has been renamed to `GuzzleHttp\Subscriber`.
-Several plugins are shipping with the core Guzzle library under this namespace.
-
-- `GuzzleHttp\Subscriber\Cookie`: Replaces the old CookiePlugin. Cookie jar
-  code has moved to `GuzzleHttp\Cookie`.
-- `GuzzleHttp\Subscriber\History`: Replaces the old HistoryPlugin.
-- `GuzzleHttp\Subscriber\HttpError`: Throws errors when a bad HTTP response is
-  received.
-- `GuzzleHttp\Subscriber\Mock`: Replaces the old MockPlugin.
-- `GuzzleHttp\Subscriber\Prepare`: Prepares the body of a request just before
-  sending. This subscriber is attached to all requests by default.
-- `GuzzleHttp\Subscriber\Redirect`: Replaces the RedirectPlugin.
-
-The following plugins have been removed (third-parties are free to re-implement
-these if needed):
-
-- `GuzzleHttp\Plugin\Async` has been removed.
-- `GuzzleHttp\Plugin\CurlAuth` has been removed.
-- `GuzzleHttp\Plugin\ErrorResponse\ErrorResponsePlugin` has been removed. This
-  functionality should instead be implemented with event listeners that occur
-  after normal response parsing occurs in the guzzle/command package.
-
-The following plugins are not part of the core Guzzle package, but are provided
-in separate repositories:
-
-- `Guzzle\Http\Plugin\BackoffPlugin` has been rewritten to be much simpler
-  to build custom retry policies using simple functions rather than various
-  chained classes. See: https://github.com/guzzle/retry-subscriber
-- `Guzzle\Http\Plugin\Cache\CachePlugin` has moved to
-  https://github.com/guzzle/cache-subscriber
-- `Guzzle\Http\Plugin\Log\LogPlugin` has moved to
-  https://github.com/guzzle/log-subscriber
-- `Guzzle\Http\Plugin\Md5\Md5Plugin` has moved to
-  https://github.com/guzzle/message-integrity-subscriber
-- `Guzzle\Http\Plugin\Mock\MockPlugin` has moved to
-  `GuzzleHttp\Subscriber\MockSubscriber`.
-- `Guzzle\Http\Plugin\Oauth\OauthPlugin` has moved to
-  https://github.com/guzzle/oauth-subscriber
-
-## Service
-
-The service description layer of Guzzle has moved into two separate packages:
-
-- http://github.com/guzzle/command Provides a high level abstraction over web
-  services by representing web service operations using commands.
-- http://github.com/guzzle/guzzle-services Provides an implementation of
-  guzzle/command that provides request serialization and response parsing using
-  Guzzle service descriptions.
-
-## Stream
-
-Stream have moved to a separate package available at
-https://github.com/guzzle/streams.
-
-`Guzzle\Stream\StreamInterface` has been given a large update to cleanly take
-on the responsibilities of `Guzzle\Http\EntityBody` and
-`Guzzle\Http\EntityBodyInterface` now that they have been removed. The number
-of methods implemented by the `StreamInterface` has been drastically reduced to
-allow developers to more easily extend and decorate stream behavior.
-
-## Removed methods from StreamInterface
-
-- `getStream` and `setStream` have been removed to better encapsulate streams.
-- `getMetadata` and `setMetadata` have been removed in favor of
-  `GuzzleHttp\Stream\MetadataStreamInterface`.
-- `getWrapper`, `getWrapperData`, `getStreamType`, and `getUri` have all been
-  removed. This data is accessible when
-  using streams that implement `GuzzleHttp\Stream\MetadataStreamInterface`.
-- `rewind` has been removed. Use `seek(0)` for a similar behavior.
-
-## Renamed methods
-
-- `detachStream` has been renamed to `detach`.
-- `feof` has been renamed to `eof`.
-- `ftell` has been renamed to `tell`.
-- `readLine` has moved from an instance method to a static class method of
-  `GuzzleHttp\Stream\Stream`.
-
-## Metadata streams
-
-`GuzzleHttp\Stream\MetadataStreamInterface` has been added to denote streams
-that contain additional metadata accessible via `getMetadata()`.
-`GuzzleHttp\Stream\StreamInterface::getMetadata` and
-`GuzzleHttp\Stream\StreamInterface::setMetadata` have been removed.
-
-## StreamRequestFactory
-
-The entire concept of the StreamRequestFactory has been removed. The way this
-was used in Guzzle 3 broke the actual interface of sending streaming requests
-(instead of getting back a Response, you got a StreamInterface). Streaming
-PHP requests are now implemented through the `GuzzleHttp\Adapter\StreamAdapter`.
-
-3.6 to 3.7
-----------
-
-### Deprecations
-
-- You can now enable E_USER_DEPRECATED warnings to see if you are using any deprecated methods.:
-
-```php
-\Guzzle\Common\Version::$emitWarnings = true;
-```
-
-The following APIs and options have been marked as deprecated:
-
-- Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use `$request->getResponseBody()->isRepeatable()` instead.
-- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-- Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
-- Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
-- Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
-- Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
-- Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
-- Marked `Guzzle\Common\Collection::inject()` as deprecated.
-- Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use
-  `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` or
-  `$client->setDefaultOption('auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));`
-
-3.7 introduces `request.options` as a parameter for a client configuration and as an optional argument to all creational
-request methods. When paired with a client's configuration settings, these options allow you to specify default settings
-for various aspects of a request. Because these options make other previous configuration options redundant, several
-configuration options and methods of a client and AbstractCommand have been deprecated.
-
-- Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use `$client->getDefaultOption('headers')`.
-- Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use `$client->setDefaultOption('headers/{header_name}', 'value')`.
-- Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use `$client->setDefaultOption('params/{param_name}', 'value')`
-- Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0
-
-        $command = $client->getCommand('foo', array(
-            'command.headers' => array('Test' => '123'),
-            'command.response_body' => '/path/to/file'
-        ));
-
-        // Should be changed to:
-
-        $command = $client->getCommand('foo', array(
-            'command.request_options' => array(
-                'headers' => array('Test' => '123'),
-                'save_as' => '/path/to/file'
-            )
-        ));
-
-### Interface changes
-
-Additions and changes (you will need to update any implementations or subclasses you may have created):
-
-- Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
-  createRequest, head, delete, put, patch, post, options, prepareRequest
-- Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
-- Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
-- Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
-  `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
-  resource, string, or EntityBody into the $options parameter to specify the download location of the response.
-- Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
-  default `array()`
-- Added `Guzzle\Stream\StreamInterface::isRepeatable`
-- Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
-
-The following methods were removed from interfaces. All of these methods are still available in the concrete classes
-that implement them, but you should update your code to use alternative methods:
-
-- Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
-  `$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
-  `$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))` or
-  `$client->setDefaultOption('headers/{header_name}', 'value')`. or
-  `$client->setDefaultOption('headers', array('header_name' => 'value'))`.
-- Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use `$client->getConfig()->getPath('request.options/headers')`.
-- Removed `Guzzle\Http\ClientInterface::expandTemplate()`. This is an implementation detail.
-- Removed `Guzzle\Http\ClientInterface::setRequestFactory()`. This is an implementation detail.
-- Removed `Guzzle\Http\ClientInterface::getCurlMulti()`. This is a very specific implementation detail.
-- Removed `Guzzle\Http\Message\RequestInterface::canCache`. Use the CachePlugin.
-- Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`. Use the HistoryPlugin.
-- Removed `Guzzle\Http\Message\RequestInterface::isRedirect`. Use the HistoryPlugin.
-
-### Cache plugin breaking changes
-
-- CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
-  CacheStorageInterface. These two objects and interface will be removed in a future version.
-- Always setting X-cache headers on cached responses
-- Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
-- `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
-  $request, Response $response);`
-- `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
-- `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
-- Added `CacheStorageInterface::purge($url)`
-- `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
-  $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
-  CanCacheStrategyInterface $canCache = null)`
-- Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
-
-3.5 to 3.6
-----------
-
-* Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
-* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
-* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
-  For example, setHeader() first removes the header using unset on a HeaderCollection and then calls addHeader().
-  Keeping the Host header and URL host in sync is now handled by overriding the addHeader method in Request.
-* Specific header implementations can be created for complex headers. When a message creates a header, it uses a
-  HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
-  CacheControl header implementation.
-* Moved getLinks() from Response to just be used on a Link header object.
-
-If you previously relied on Guzzle\Http\Message\Header::raw(), then you will need to update your code to use the
-HeaderInterface (e.g. toArray(), getAll(), etc.).
-
-### Interface changes
-
-* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
-* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
-* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
-  Guzzle\Http\Curl\RequestMediator
-* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
-* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
-* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
-
-### Removed deprecated functions
-
-* Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
-* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
-
-### Deprecations
-
-* The ability to case-insensitively search for header values
-* Guzzle\Http\Message\Header::hasExactHeader
-* Guzzle\Http\Message\Header::raw. Use getAll()
-* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
-  instead.
-
-### Other changes
-
-* All response header helper functions return a string rather than mixing Header objects and strings inconsistently
-* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
-  directly via interfaces
-* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
-  but are a no-op until removed.
-* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
-  `Guzzle\Service\Command\ArrayCommandInterface`.
-* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
-  on a request while the request is still being transferred
-* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
-
-3.3 to 3.4
-----------
-
-Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs.
-
-3.2 to 3.3
-----------
-
-### Response::getEtag() quote stripping removed
-
-`Guzzle\Http\Message\Response::getEtag()` no longer strips quotes around the ETag response header
-
-### Removed `Guzzle\Http\Utils`
-
-The `Guzzle\Http\Utils` class was removed. This class was only used for testing.
-
-### Stream wrapper and type
-
-`Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getStreamType()` are no longer converted to lowercase.
-
-### curl.emit_io became emit_io
-
-Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the
-'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
-
-3.1 to 3.2
-----------
-
-### CurlMulti is no longer reused globally
-
-Before 3.2, the same CurlMulti object was reused globally for each client. This can cause issue where plugins added
-to a single client can pollute requests dispatched from other clients.
-
-If you still wish to reuse the same CurlMulti object with each client, then you can add a listener to the
-ServiceBuilder's `service_builder.create_client` event to inject a custom CurlMulti object into each client as it is
-created.
-
-```php
-$multi = new Guzzle\Http\Curl\CurlMulti();
-$builder = Guzzle\Service\Builder\ServiceBuilder::factory('/path/to/config.json');
-$builder->addListener('service_builder.create_client', function ($event) use ($multi) {
-    $event['client']->setCurlMulti($multi);
-}
-});
-```
-
-### No default path
-
-URLs no longer have a default path value of '/' if no path was specified.
-
-Before:
-
-```php
-$request = $client->get('http://www.foo.com');
-echo $request->getUrl();
-// >> http://www.foo.com/
-```
-
-After:
-
-```php
-$request = $client->get('http://www.foo.com');
-echo $request->getUrl();
-// >> http://www.foo.com
-```
-
-### Less verbose BadResponseException
-
-The exception message for `Guzzle\Http\Exception\BadResponseException` no longer contains the full HTTP request and
-response information. You can, however, get access to the request and response object by calling `getRequest()` or
-`getResponse()` on the exception object.
-
-### Query parameter aggregation
-
-Multi-valued query parameters are no longer aggregated using a callback function. `Guzzle\Http\Query` now has a
-setAggregator() method that accepts a `Guzzle\Http\QueryAggregator\QueryAggregatorInterface` object. This object is
-responsible for handling the aggregation of multi-valued query string variables into a flattened hash.
-
-2.8 to 3.x
-----------
-
-### Guzzle\Service\Inspector
-
-Change `\Guzzle\Service\Inspector::fromConfig` to `\Guzzle\Common\Collection::fromConfig`
-
-**Before**
-
-```php
-use Guzzle\Service\Inspector;
-
-class YourClient extends \Guzzle\Service\Client
-{
-    public static function factory($config = array())
-    {
-        $default = array();
-        $required = array('base_url', 'username', 'api_key');
-        $config = Inspector::fromConfig($config, $default, $required);
-
-        $client = new self(
-            $config->get('base_url'),
-            $config->get('username'),
-            $config->get('api_key')
-        );
-        $client->setConfig($config);
-
-        $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
-
-        return $client;
-    }
-```
-
-**After**
-
-```php
-use Guzzle\Common\Collection;
-
-class YourClient extends \Guzzle\Service\Client
-{
-    public static function factory($config = array())
-    {
-        $default = array();
-        $required = array('base_url', 'username', 'api_key');
-        $config = Collection::fromConfig($config, $default, $required);
-
-        $client = new self(
-            $config->get('base_url'),
-            $config->get('username'),
-            $config->get('api_key')
-        );
-        $client->setConfig($config);
-
-        $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
-
-        return $client;
-    }
-```
-
-### Convert XML Service Descriptions to JSON
-
-**Before**
-
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<client>
-    <commands>
-        <!-- Groups -->
-        <command name="list_groups" method="GET" uri="groups.json">
-            <doc>Get a list of groups</doc>
-        </command>
-        <command name="search_groups" method="GET" uri='search.json?query="{{query}} type:group"'>
-            <doc>Uses a search query to get a list of groups</doc>
-            <param name="query" type="string" required="true" />
-        </command>
-        <command name="create_group" method="POST" uri="groups.json">
-            <doc>Create a group</doc>
-            <param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
-            <param name="Content-Type" location="header" static="application/json"/>
-        </command>
-        <command name="delete_group" method="DELETE" uri="groups/{{id}}.json">
-            <doc>Delete a group by ID</doc>
-            <param name="id" type="integer" required="true"/>
-        </command>
-        <command name="get_group" method="GET" uri="groups/{{id}}.json">
-            <param name="id" type="integer" required="true"/>
-        </command>
-        <command name="update_group" method="PUT" uri="groups/{{id}}.json">
-            <doc>Update a group</doc>
-            <param name="id" type="integer" required="true"/>
-            <param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
-            <param name="Content-Type" location="header" static="application/json"/>
-        </command>
-    </commands>
-</client>
-```
-
-**After**
-
-```json
-{
-    "name":       "Zendesk REST API v2",
-    "apiVersion": "2012-12-31",
-    "description":"Provides access to Zendesk views, groups, tickets, ticket fields, and users",
-    "operations": {
-        "list_groups":  {
-            "httpMethod":"GET",
-            "uri":       "groups.json",
-            "summary":   "Get a list of groups"
-        },
-        "search_groups":{
-            "httpMethod":"GET",
-            "uri":       "search.json?query=\"{query} type:group\"",
-            "summary":   "Uses a search query to get a list of groups",
-            "parameters":{
-                "query":{
-                    "location":   "uri",
-                    "description":"Zendesk Search Query",
-                    "type":       "string",
-                    "required":   true
-                }
-            }
-        },
-        "create_group": {
-            "httpMethod":"POST",
-            "uri":       "groups.json",
-            "summary":   "Create a group",
-            "parameters":{
-                "data":        {
-                    "type":       "array",
-                    "location":   "body",
-                    "description":"Group JSON",
-                    "filters":    "json_encode",
-                    "required":   true
-                },
-                "Content-Type":{
-                    "type":    "string",
-                    "location":"header",
-                    "static":  "application/json"
-                }
-            }
-        },
-        "delete_group": {
-            "httpMethod":"DELETE",
-            "uri":       "groups/{id}.json",
-            "summary":   "Delete a group",
-            "parameters":{
-                "id":{
-                    "location":   "uri",
-                    "description":"Group to delete by ID",
-                    "type":       "integer",
-                    "required":   true
-                }
-            }
-        },
-        "get_group":    {
-            "httpMethod":"GET",
-            "uri":       "groups/{id}.json",
-            "summary":   "Get a ticket",
-            "parameters":{
-                "id":{
-                    "location":   "uri",
-                    "description":"Group to get by ID",
-                    "type":       "integer",
-                    "required":   true
-                }
-            }
-        },
-        "update_group": {
-            "httpMethod":"PUT",
-            "uri":       "groups/{id}.json",
-            "summary":   "Update a group",
-            "parameters":{
-                "id":          {
-                    "location":   "uri",
-                    "description":"Group to update by ID",
-                    "type":       "integer",
-                    "required":   true
-                },
-                "data":        {
-                    "type":       "array",
-                    "location":   "body",
-                    "description":"Group JSON",
-                    "filters":    "json_encode",
-                    "required":   true
-                },
-                "Content-Type":{
-                    "type":    "string",
-                    "location":"header",
-                    "static":  "application/json"
-                }
-            }
-        }
-}
-```
-
-### Guzzle\Service\Description\ServiceDescription
-
-Commands are now called Operations
-
-**Before**
-
-```php
-use Guzzle\Service\Description\ServiceDescription;
-
-$sd = new ServiceDescription();
-$sd->getCommands();     // @returns ApiCommandInterface[]
-$sd->hasCommand($name);
-$sd->getCommand($name); // @returns ApiCommandInterface|null
-$sd->addCommand($command); // @param ApiCommandInterface $command
-```
-
-**After**
-
-```php
-use Guzzle\Service\Description\ServiceDescription;
-
-$sd = new ServiceDescription();
-$sd->getOperations();           // @returns OperationInterface[]
-$sd->hasOperation($name);
-$sd->getOperation($name);       // @returns OperationInterface|null
-$sd->addOperation($operation);  // @param OperationInterface $operation
-```
-
-### Guzzle\Common\Inflection\Inflector
-
-Namespace is now `Guzzle\Inflection\Inflector`
-
-### Guzzle\Http\Plugin
-
-Namespace is now `Guzzle\Plugin`. Many other changes occur within this namespace and are detailed in their own sections below.
-
-### Guzzle\Http\Plugin\LogPlugin and Guzzle\Common\Log
-
-Now `Guzzle\Plugin\Log\LogPlugin` and `Guzzle\Log` respectively.
-
-**Before**
-
-```php
-use Guzzle\Common\Log\ClosureLogAdapter;
-use Guzzle\Http\Plugin\LogPlugin;
-
-/** @var \Guzzle\Http\Client */
-$client;
-
-// $verbosity is an integer indicating desired message verbosity level
-$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $verbosity = LogPlugin::LOG_VERBOSE);
-```
-
-**After**
-
-```php
-use Guzzle\Log\ClosureLogAdapter;
-use Guzzle\Log\MessageFormatter;
-use Guzzle\Plugin\Log\LogPlugin;
-
-/** @var \Guzzle\Http\Client */
-$client;
-
-// $format is a string indicating desired message format -- @see MessageFormatter
-$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $format = MessageFormatter::DEBUG_FORMAT);
-```
-
-### Guzzle\Http\Plugin\CurlAuthPlugin
-
-Now `Guzzle\Plugin\CurlAuth\CurlAuthPlugin`.
-
-### Guzzle\Http\Plugin\ExponentialBackoffPlugin
-
-Now `Guzzle\Plugin\Backoff\BackoffPlugin`, and other changes.
-
-**Before**
-
-```php
-use Guzzle\Http\Plugin\ExponentialBackoffPlugin;
-
-$backoffPlugin = new ExponentialBackoffPlugin($maxRetries, array_merge(
-        ExponentialBackoffPlugin::getDefaultFailureCodes(), array(429)
-    ));
-
-$client->addSubscriber($backoffPlugin);
-```
-
-**After**
-
-```php
-use Guzzle\Plugin\Backoff\BackoffPlugin;
-use Guzzle\Plugin\Backoff\HttpBackoffStrategy;
-
-// Use convenient factory method instead -- see implementation for ideas of what
-// you can do with chaining backoff strategies
-$backoffPlugin = BackoffPlugin::getExponentialBackoff($maxRetries, array_merge(
-        HttpBackoffStrategy::getDefaultFailureCodes(), array(429)
-    ));
-$client->addSubscriber($backoffPlugin);
-```
-
-### Known Issues
-
-#### [BUG] Accept-Encoding header behavior changed unintentionally.
-
-(See #217) (Fixed in 09daeb8c666fb44499a0646d655a8ae36456575e)
-
-In version 2.8 setting the `Accept-Encoding` header would set the CURLOPT_ENCODING option, which permitted cURL to
-properly handle gzip/deflate compressed responses from the server. In versions affected by this bug this does not happen.
-See issue #217 for a workaround, or use a version containing the fix.
diff --git a/vendor/guzzlehttp/guzzle/composer.json b/vendor/guzzlehttp/guzzle/composer.json
deleted file mode 100644
index c01864f013fdb1462a4216b8e53993f713ce4e41..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/composer.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-    "name": "guzzlehttp/guzzle",
-    "type": "library",
-    "description": "Guzzle is a PHP HTTP client library",
-    "keywords": [
-        "framework",
-        "http",
-        "rest",
-        "web service",
-        "curl",
-        "client",
-        "HTTP client"
-    ],
-    "homepage": "http://guzzlephp.org/",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Michael Dowling",
-            "email": "mtdowling@gmail.com",
-            "homepage": "https://github.com/mtdowling"
-        }
-    ],
-    "require": {
-        "php": ">=5.5",
-        "ext-json": "*",
-        "symfony/polyfill-intl-idn": "^1.17.0",
-        "guzzlehttp/promises": "^1.0",
-        "guzzlehttp/psr7": "^1.6.1"
-    },
-    "require-dev": {
-        "ext-curl": "*",
-        "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-        "psr/log": "^1.1"
-    },
-    "suggest": {
-        "psr/log": "Required for using the Log middleware"
-    },
-    "config": {
-        "sort-packages": true
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "6.5-dev"
-        }
-    },
-    "autoload": {
-        "psr-4": {
-            "GuzzleHttp\\": "src/"
-        },
-        "files": [
-            "src/functions_include.php"
-        ]
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "GuzzleHttp\\Tests\\": "tests/"
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Client.php b/vendor/guzzlehttp/guzzle/src/Client.php
deleted file mode 100644
index 315a022cf4b74e69dfacdc0cd1b359b27cd2ef01..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Client.php
+++ /dev/null
@@ -1,501 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Cookie\CookieJar;
-use GuzzleHttp\Exception\GuzzleException;
-use GuzzleHttp\Promise;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * @method ResponseInterface get(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface head(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface put(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface post(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface patch(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface delete(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface getAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface headAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface putAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface postAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface patchAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface deleteAsync(string|UriInterface $uri, array $options = [])
- */
-class Client implements ClientInterface
-{
-    /** @var array Default request options */
-    private $config;
-
-    /**
-     * Clients accept an array of constructor parameters.
-     *
-     * Here's an example of creating a client using a base_uri and an array of
-     * default request options to apply to each request:
-     *
-     *     $client = new Client([
-     *         'base_uri'        => 'http://www.foo.com/1.0/',
-     *         'timeout'         => 0,
-     *         'allow_redirects' => false,
-     *         'proxy'           => '192.168.16.1:10'
-     *     ]);
-     *
-     * Client configuration settings include the following options:
-     *
-     * - handler: (callable) Function that transfers HTTP requests over the
-     *   wire. The function is called with a Psr7\Http\Message\RequestInterface
-     *   and array of transfer options, and must return a
-     *   GuzzleHttp\Promise\PromiseInterface that is fulfilled with a
-     *   Psr7\Http\Message\ResponseInterface on success.
-     *   If no handler is provided, a default handler will be created
-     *   that enables all of the request options below by attaching all of the
-     *   default middleware to the handler.
-     * - base_uri: (string|UriInterface) Base URI of the client that is merged
-     *   into relative URIs. Can be a string or instance of UriInterface.
-     * - **: any request option
-     *
-     * @param array $config Client configuration settings.
-     *
-     * @see \GuzzleHttp\RequestOptions for a list of available request options.
-     */
-    public function __construct(array $config = [])
-    {
-        if (!isset($config['handler'])) {
-            $config['handler'] = HandlerStack::create();
-        } elseif (!is_callable($config['handler'])) {
-            throw new \InvalidArgumentException('handler must be a callable');
-        }
-
-        // Convert the base_uri to a UriInterface
-        if (isset($config['base_uri'])) {
-            $config['base_uri'] = Psr7\uri_for($config['base_uri']);
-        }
-
-        $this->configureDefaults($config);
-    }
-
-    /**
-     * @param string $method
-     * @param array  $args
-     *
-     * @return Promise\PromiseInterface
-     */
-    public function __call($method, $args)
-    {
-        if (count($args) < 1) {
-            throw new \InvalidArgumentException('Magic request methods require a URI and optional options array');
-        }
-
-        $uri = $args[0];
-        $opts = isset($args[1]) ? $args[1] : [];
-
-        return substr($method, -5) === 'Async'
-            ? $this->requestAsync(substr($method, 0, -5), $uri, $opts)
-            : $this->request($method, $uri, $opts);
-    }
-
-    /**
-     * Asynchronously send an HTTP request.
-     *
-     * @param array $options Request options to apply to the given
-     *                       request and to the transfer. See \GuzzleHttp\RequestOptions.
-     *
-     * @return Promise\PromiseInterface
-     */
-    public function sendAsync(RequestInterface $request, array $options = [])
-    {
-        // Merge the base URI into the request URI if needed.
-        $options = $this->prepareDefaults($options);
-
-        return $this->transfer(
-            $request->withUri($this->buildUri($request->getUri(), $options), $request->hasHeader('Host')),
-            $options
-        );
-    }
-
-    /**
-     * Send an HTTP request.
-     *
-     * @param array $options Request options to apply to the given
-     *                       request and to the transfer. See \GuzzleHttp\RequestOptions.
-     *
-     * @return ResponseInterface
-     * @throws GuzzleException
-     */
-    public function send(RequestInterface $request, array $options = [])
-    {
-        $options[RequestOptions::SYNCHRONOUS] = true;
-        return $this->sendAsync($request, $options)->wait();
-    }
-
-    /**
-     * Create and send an asynchronous HTTP request.
-     *
-     * Use an absolute path to override the base path of the client, or a
-     * relative path to append to the base path of the client. The URL can
-     * contain the query string as well. Use an array to provide a URL
-     * template and additional variables to use in the URL template expansion.
-     *
-     * @param string              $method  HTTP method
-     * @param string|UriInterface $uri     URI object or string.
-     * @param array               $options Request options to apply. See \GuzzleHttp\RequestOptions.
-     *
-     * @return Promise\PromiseInterface
-     */
-    public function requestAsync($method, $uri = '', array $options = [])
-    {
-        $options = $this->prepareDefaults($options);
-        // Remove request modifying parameter because it can be done up-front.
-        $headers = isset($options['headers']) ? $options['headers'] : [];
-        $body = isset($options['body']) ? $options['body'] : null;
-        $version = isset($options['version']) ? $options['version'] : '1.1';
-        // Merge the URI into the base URI.
-        $uri = $this->buildUri($uri, $options);
-        if (is_array($body)) {
-            $this->invalidBody();
-        }
-        $request = new Psr7\Request($method, $uri, $headers, $body, $version);
-        // Remove the option so that they are not doubly-applied.
-        unset($options['headers'], $options['body'], $options['version']);
-
-        return $this->transfer($request, $options);
-    }
-
-    /**
-     * Create and send an HTTP request.
-     *
-     * Use an absolute path to override the base path of the client, or a
-     * relative path to append to the base path of the client. The URL can
-     * contain the query string as well.
-     *
-     * @param string              $method  HTTP method.
-     * @param string|UriInterface $uri     URI object or string.
-     * @param array               $options Request options to apply. See \GuzzleHttp\RequestOptions.
-     *
-     * @return ResponseInterface
-     * @throws GuzzleException
-     */
-    public function request($method, $uri = '', array $options = [])
-    {
-        $options[RequestOptions::SYNCHRONOUS] = true;
-        return $this->requestAsync($method, $uri, $options)->wait();
-    }
-
-    /**
-     * Get a client configuration option.
-     *
-     * These options include default request options of the client, a "handler"
-     * (if utilized by the concrete client), and a "base_uri" if utilized by
-     * the concrete client.
-     *
-     * @param string|null $option The config option to retrieve.
-     *
-     * @return mixed
-     */
-    public function getConfig($option = null)
-    {
-        return $option === null
-            ? $this->config
-            : (isset($this->config[$option]) ? $this->config[$option] : null);
-    }
-
-    /**
-     * @param  string|null $uri
-     *
-     * @return UriInterface
-     */
-    private function buildUri($uri, array $config)
-    {
-        // for BC we accept null which would otherwise fail in uri_for
-        $uri = Psr7\uri_for($uri === null ? '' : $uri);
-
-        if (isset($config['base_uri'])) {
-            $uri = Psr7\UriResolver::resolve(Psr7\uri_for($config['base_uri']), $uri);
-        }
-
-        if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) {
-            $idnOptions = ($config['idn_conversion'] === true) ? IDNA_DEFAULT : $config['idn_conversion'];
-            $uri = Utils::idnUriConvert($uri, $idnOptions);
-        }
-
-        return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri;
-    }
-
-    /**
-     * Configures the default options for a client.
-     *
-     * @param array $config
-     * @return void
-     */
-    private function configureDefaults(array $config)
-    {
-        $defaults = [
-            'allow_redirects' => RedirectMiddleware::$defaultSettings,
-            'http_errors'     => true,
-            'decode_content'  => true,
-            'verify'          => true,
-            'cookies'         => false,
-            'idn_conversion'  => true,
-        ];
-
-        // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
-
-        // We can only trust the HTTP_PROXY environment variable in a CLI
-        // process due to the fact that PHP has no reliable mechanism to
-        // get environment variables that start with "HTTP_".
-        if (php_sapi_name() === 'cli' && getenv('HTTP_PROXY')) {
-            $defaults['proxy']['http'] = getenv('HTTP_PROXY');
-        }
-
-        if ($proxy = getenv('HTTPS_PROXY')) {
-            $defaults['proxy']['https'] = $proxy;
-        }
-
-        if ($noProxy = getenv('NO_PROXY')) {
-            $cleanedNoProxy = str_replace(' ', '', $noProxy);
-            $defaults['proxy']['no'] = explode(',', $cleanedNoProxy);
-        }
-
-        $this->config = $config + $defaults;
-
-        if (!empty($config['cookies']) && $config['cookies'] === true) {
-            $this->config['cookies'] = new CookieJar();
-        }
-
-        // Add the default user-agent header.
-        if (!isset($this->config['headers'])) {
-            $this->config['headers'] = ['User-Agent' => default_user_agent()];
-        } else {
-            // Add the User-Agent header if one was not already set.
-            foreach (array_keys($this->config['headers']) as $name) {
-                if (strtolower($name) === 'user-agent') {
-                    return;
-                }
-            }
-            $this->config['headers']['User-Agent'] = default_user_agent();
-        }
-    }
-
-    /**
-     * Merges default options into the array.
-     *
-     * @param array $options Options to modify by reference
-     *
-     * @return array
-     */
-    private function prepareDefaults(array $options)
-    {
-        $defaults = $this->config;
-
-        if (!empty($defaults['headers'])) {
-            // Default headers are only added if they are not present.
-            $defaults['_conditional'] = $defaults['headers'];
-            unset($defaults['headers']);
-        }
-
-        // Special handling for headers is required as they are added as
-        // conditional headers and as headers passed to a request ctor.
-        if (array_key_exists('headers', $options)) {
-            // Allows default headers to be unset.
-            if ($options['headers'] === null) {
-                $defaults['_conditional'] = [];
-                unset($options['headers']);
-            } elseif (!is_array($options['headers'])) {
-                throw new \InvalidArgumentException('headers must be an array');
-            }
-        }
-
-        // Shallow merge defaults underneath options.
-        $result = $options + $defaults;
-
-        // Remove null values.
-        foreach ($result as $k => $v) {
-            if ($v === null) {
-                unset($result[$k]);
-            }
-        }
-
-        return $result;
-    }
-
-    /**
-     * Transfers the given request and applies request options.
-     *
-     * The URI of the request is not modified and the request options are used
-     * as-is without merging in default options.
-     *
-     * @param array $options See \GuzzleHttp\RequestOptions.
-     *
-     * @return Promise\PromiseInterface
-     */
-    private function transfer(RequestInterface $request, array $options)
-    {
-        // save_to -> sink
-        if (isset($options['save_to'])) {
-            $options['sink'] = $options['save_to'];
-            unset($options['save_to']);
-        }
-
-        // exceptions -> http_errors
-        if (isset($options['exceptions'])) {
-            $options['http_errors'] = $options['exceptions'];
-            unset($options['exceptions']);
-        }
-
-        $request = $this->applyOptions($request, $options);
-        /** @var HandlerStack $handler */
-        $handler = $options['handler'];
-
-        try {
-            return Promise\promise_for($handler($request, $options));
-        } catch (\Exception $e) {
-            return Promise\rejection_for($e);
-        }
-    }
-
-    /**
-     * Applies the array of request options to a request.
-     *
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return RequestInterface
-     */
-    private function applyOptions(RequestInterface $request, array &$options)
-    {
-        $modify = [
-            'set_headers' => [],
-        ];
-
-        if (isset($options['headers'])) {
-            $modify['set_headers'] = $options['headers'];
-            unset($options['headers']);
-        }
-
-        if (isset($options['form_params'])) {
-            if (isset($options['multipart'])) {
-                throw new \InvalidArgumentException('You cannot use '
-                    . 'form_params and multipart at the same time. Use the '
-                    . 'form_params option if you want to send application/'
-                    . 'x-www-form-urlencoded requests, and the multipart '
-                    . 'option to send multipart/form-data requests.');
-            }
-            $options['body'] = http_build_query($options['form_params'], '', '&');
-            unset($options['form_params']);
-            // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
-            $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded';
-        }
-
-        if (isset($options['multipart'])) {
-            $options['body'] = new Psr7\MultipartStream($options['multipart']);
-            unset($options['multipart']);
-        }
-
-        if (isset($options['json'])) {
-            $options['body'] = \GuzzleHttp\json_encode($options['json']);
-            unset($options['json']);
-            // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
-            $options['_conditional']['Content-Type'] = 'application/json';
-        }
-
-        if (!empty($options['decode_content'])
-            && $options['decode_content'] !== true
-        ) {
-            // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']);
-            $modify['set_headers']['Accept-Encoding'] = $options['decode_content'];
-        }
-
-        if (isset($options['body'])) {
-            if (is_array($options['body'])) {
-                $this->invalidBody();
-            }
-            $modify['body'] = Psr7\stream_for($options['body']);
-            unset($options['body']);
-        }
-
-        if (!empty($options['auth']) && is_array($options['auth'])) {
-            $value = $options['auth'];
-            $type = isset($value[2]) ? strtolower($value[2]) : 'basic';
-            switch ($type) {
-                case 'basic':
-                    // Ensure that we don't have the header in different case and set the new value.
-                    $modify['set_headers'] = Psr7\_caseless_remove(['Authorization'], $modify['set_headers']);
-                    $modify['set_headers']['Authorization'] = 'Basic '
-                        . base64_encode("$value[0]:$value[1]");
-                    break;
-                case 'digest':
-                    // @todo: Do not rely on curl
-                    $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_DIGEST;
-                    $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
-                    break;
-                case 'ntlm':
-                    $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_NTLM;
-                    $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
-                    break;
-            }
-        }
-
-        if (isset($options['query'])) {
-            $value = $options['query'];
-            if (is_array($value)) {
-                $value = http_build_query($value, null, '&', PHP_QUERY_RFC3986);
-            }
-            if (!is_string($value)) {
-                throw new \InvalidArgumentException('query must be a string or array');
-            }
-            $modify['query'] = $value;
-            unset($options['query']);
-        }
-
-        // Ensure that sink is not an invalid value.
-        if (isset($options['sink'])) {
-            // TODO: Add more sink validation?
-            if (is_bool($options['sink'])) {
-                throw new \InvalidArgumentException('sink must not be a boolean');
-            }
-        }
-
-        $request = Psr7\modify_request($request, $modify);
-        if ($request->getBody() instanceof Psr7\MultipartStream) {
-            // Use a multipart/form-data POST if a Content-Type is not set.
-            // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
-            $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary='
-                . $request->getBody()->getBoundary();
-        }
-
-        // Merge in conditional headers if they are not present.
-        if (isset($options['_conditional'])) {
-            // Build up the changes so it's in a single clone of the message.
-            $modify = [];
-            foreach ($options['_conditional'] as $k => $v) {
-                if (!$request->hasHeader($k)) {
-                    $modify['set_headers'][$k] = $v;
-                }
-            }
-            $request = Psr7\modify_request($request, $modify);
-            // Don't pass this internal value along to middleware/handlers.
-            unset($options['_conditional']);
-        }
-
-        return $request;
-    }
-
-    /**
-     * Throw Exception with pre-set message.
-     * @return void
-     * @throws \InvalidArgumentException Invalid body.
-     */
-    private function invalidBody()
-    {
-        throw new \InvalidArgumentException('Passing in the "body" request '
-            . 'option as an array to send a POST request has been deprecated. '
-            . 'Please use the "form_params" request option to send a '
-            . 'application/x-www-form-urlencoded request, or the "multipart" '
-            . 'request option to send a multipart/form-data request.');
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/vendor/guzzlehttp/guzzle/src/ClientInterface.php
deleted file mode 100644
index 638b75dca4d7eea4bae50396c112010aa16963ef..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/ClientInterface.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Exception\GuzzleException;
-use GuzzleHttp\Promise\PromiseInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Client interface for sending HTTP requests.
- */
-interface ClientInterface
-{
-    /**
-     * @deprecated Will be removed in Guzzle 7.0.0
-     */
-    const VERSION = '6.5.5';
-
-    /**
-     * Send an HTTP request.
-     *
-     * @param RequestInterface $request Request to send
-     * @param array            $options Request options to apply to the given
-     *                                  request and to the transfer.
-     *
-     * @return ResponseInterface
-     * @throws GuzzleException
-     */
-    public function send(RequestInterface $request, array $options = []);
-
-    /**
-     * Asynchronously send an HTTP request.
-     *
-     * @param RequestInterface $request Request to send
-     * @param array            $options Request options to apply to the given
-     *                                  request and to the transfer.
-     *
-     * @return PromiseInterface
-     */
-    public function sendAsync(RequestInterface $request, array $options = []);
-
-    /**
-     * Create and send an HTTP request.
-     *
-     * Use an absolute path to override the base path of the client, or a
-     * relative path to append to the base path of the client. The URL can
-     * contain the query string as well.
-     *
-     * @param string              $method  HTTP method.
-     * @param string|UriInterface $uri     URI object or string.
-     * @param array               $options Request options to apply.
-     *
-     * @return ResponseInterface
-     * @throws GuzzleException
-     */
-    public function request($method, $uri, array $options = []);
-
-    /**
-     * Create and send an asynchronous HTTP request.
-     *
-     * Use an absolute path to override the base path of the client, or a
-     * relative path to append to the base path of the client. The URL can
-     * contain the query string as well. Use an array to provide a URL
-     * template and additional variables to use in the URL template expansion.
-     *
-     * @param string              $method  HTTP method
-     * @param string|UriInterface $uri     URI object or string.
-     * @param array               $options Request options to apply.
-     *
-     * @return PromiseInterface
-     */
-    public function requestAsync($method, $uri, array $options = []);
-
-    /**
-     * Get a client configuration option.
-     *
-     * These options include default request options of the client, a "handler"
-     * (if utilized by the concrete client), and a "base_uri" if utilized by
-     * the concrete client.
-     *
-     * @param string|null $option The config option to retrieve.
-     *
-     * @return mixed
-     */
-    public function getConfig($option = null);
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
deleted file mode 100644
index 38f98ad7c0c97fc1df0668c6639659e2870b4e4e..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
+++ /dev/null
@@ -1,316 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Cookie jar that stores cookies as an array
- */
-class CookieJar implements CookieJarInterface
-{
-    /** @var SetCookie[] Loaded cookie data */
-    private $cookies = [];
-
-    /** @var bool */
-    private $strictMode;
-
-    /**
-     * @param bool $strictMode   Set to true to throw exceptions when invalid
-     *                           cookies are added to the cookie jar.
-     * @param array $cookieArray Array of SetCookie objects or a hash of
-     *                           arrays that can be used with the SetCookie
-     *                           constructor
-     */
-    public function __construct($strictMode = false, $cookieArray = [])
-    {
-        $this->strictMode = $strictMode;
-
-        foreach ($cookieArray as $cookie) {
-            if (!($cookie instanceof SetCookie)) {
-                $cookie = new SetCookie($cookie);
-            }
-            $this->setCookie($cookie);
-        }
-    }
-
-    /**
-     * Create a new Cookie jar from an associative array and domain.
-     *
-     * @param array  $cookies Cookies to create the jar from
-     * @param string $domain  Domain to set the cookies to
-     *
-     * @return self
-     */
-    public static function fromArray(array $cookies, $domain)
-    {
-        $cookieJar = new self();
-        foreach ($cookies as $name => $value) {
-            $cookieJar->setCookie(new SetCookie([
-                'Domain'  => $domain,
-                'Name'    => $name,
-                'Value'   => $value,
-                'Discard' => true
-            ]));
-        }
-
-        return $cookieJar;
-    }
-
-    /**
-     * @deprecated
-     */
-    public static function getCookieValue($value)
-    {
-        return $value;
-    }
-
-    /**
-     * Evaluate if this cookie should be persisted to storage
-     * that survives between requests.
-     *
-     * @param SetCookie $cookie Being evaluated.
-     * @param bool $allowSessionCookies If we should persist session cookies
-     * @return bool
-     */
-    public static function shouldPersist(
-        SetCookie $cookie,
-        $allowSessionCookies = false
-    ) {
-        if ($cookie->getExpires() || $allowSessionCookies) {
-            if (!$cookie->getDiscard()) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Finds and returns the cookie based on the name
-     *
-     * @param string $name cookie name to search for
-     * @return SetCookie|null cookie that was found or null if not found
-     */
-    public function getCookieByName($name)
-    {
-        // don't allow a non string name
-        if ($name === null || !is_scalar($name)) {
-            return null;
-        }
-        foreach ($this->cookies as $cookie) {
-            if ($cookie->getName() !== null && strcasecmp($cookie->getName(), $name) === 0) {
-                return $cookie;
-            }
-        }
-
-        return null;
-    }
-
-    public function toArray()
-    {
-        return array_map(function (SetCookie $cookie) {
-            return $cookie->toArray();
-        }, $this->getIterator()->getArrayCopy());
-    }
-
-    public function clear($domain = null, $path = null, $name = null)
-    {
-        if (!$domain) {
-            $this->cookies = [];
-            return;
-        } elseif (!$path) {
-            $this->cookies = array_filter(
-                $this->cookies,
-                function (SetCookie $cookie) use ($domain) {
-                    return !$cookie->matchesDomain($domain);
-                }
-            );
-        } elseif (!$name) {
-            $this->cookies = array_filter(
-                $this->cookies,
-                function (SetCookie $cookie) use ($path, $domain) {
-                    return !($cookie->matchesPath($path) &&
-                        $cookie->matchesDomain($domain));
-                }
-            );
-        } else {
-            $this->cookies = array_filter(
-                $this->cookies,
-                function (SetCookie $cookie) use ($path, $domain, $name) {
-                    return !($cookie->getName() == $name &&
-                        $cookie->matchesPath($path) &&
-                        $cookie->matchesDomain($domain));
-                }
-            );
-        }
-    }
-
-    public function clearSessionCookies()
-    {
-        $this->cookies = array_filter(
-            $this->cookies,
-            function (SetCookie $cookie) {
-                return !$cookie->getDiscard() && $cookie->getExpires();
-            }
-        );
-    }
-
-    public function setCookie(SetCookie $cookie)
-    {
-        // If the name string is empty (but not 0), ignore the set-cookie
-        // string entirely.
-        $name = $cookie->getName();
-        if (!$name && $name !== '0') {
-            return false;
-        }
-
-        // Only allow cookies with set and valid domain, name, value
-        $result = $cookie->validate();
-        if ($result !== true) {
-            if ($this->strictMode) {
-                throw new \RuntimeException('Invalid cookie: ' . $result);
-            } else {
-                $this->removeCookieIfEmpty($cookie);
-                return false;
-            }
-        }
-
-        // Resolve conflicts with previously set cookies
-        foreach ($this->cookies as $i => $c) {
-
-            // Two cookies are identical, when their path, and domain are
-            // identical.
-            if ($c->getPath() != $cookie->getPath() ||
-                $c->getDomain() != $cookie->getDomain() ||
-                $c->getName() != $cookie->getName()
-            ) {
-                continue;
-            }
-
-            // The previously set cookie is a discard cookie and this one is
-            // not so allow the new cookie to be set
-            if (!$cookie->getDiscard() && $c->getDiscard()) {
-                unset($this->cookies[$i]);
-                continue;
-            }
-
-            // If the new cookie's expiration is further into the future, then
-            // replace the old cookie
-            if ($cookie->getExpires() > $c->getExpires()) {
-                unset($this->cookies[$i]);
-                continue;
-            }
-
-            // If the value has changed, we better change it
-            if ($cookie->getValue() !== $c->getValue()) {
-                unset($this->cookies[$i]);
-                continue;
-            }
-
-            // The cookie exists, so no need to continue
-            return false;
-        }
-
-        $this->cookies[] = $cookie;
-
-        return true;
-    }
-
-    public function count()
-    {
-        return count($this->cookies);
-    }
-
-    public function getIterator()
-    {
-        return new \ArrayIterator(array_values($this->cookies));
-    }
-
-    public function extractCookies(
-        RequestInterface $request,
-        ResponseInterface $response
-    ) {
-        if ($cookieHeader = $response->getHeader('Set-Cookie')) {
-            foreach ($cookieHeader as $cookie) {
-                $sc = SetCookie::fromString($cookie);
-                if (!$sc->getDomain()) {
-                    $sc->setDomain($request->getUri()->getHost());
-                }
-                if (0 !== strpos($sc->getPath(), '/')) {
-                    $sc->setPath($this->getCookiePathFromRequest($request));
-                }
-                $this->setCookie($sc);
-            }
-        }
-    }
-
-    /**
-     * Computes cookie path following RFC 6265 section 5.1.4
-     *
-     * @link https://tools.ietf.org/html/rfc6265#section-5.1.4
-     *
-     * @param RequestInterface $request
-     * @return string
-     */
-    private function getCookiePathFromRequest(RequestInterface $request)
-    {
-        $uriPath = $request->getUri()->getPath();
-        if (''  === $uriPath) {
-            return '/';
-        }
-        if (0 !== strpos($uriPath, '/')) {
-            return '/';
-        }
-        if ('/' === $uriPath) {
-            return '/';
-        }
-        if (0 === $lastSlashPos = strrpos($uriPath, '/')) {
-            return '/';
-        }
-
-        return substr($uriPath, 0, $lastSlashPos);
-    }
-
-    public function withCookieHeader(RequestInterface $request)
-    {
-        $values = [];
-        $uri = $request->getUri();
-        $scheme = $uri->getScheme();
-        $host = $uri->getHost();
-        $path = $uri->getPath() ?: '/';
-
-        foreach ($this->cookies as $cookie) {
-            if ($cookie->matchesPath($path) &&
-                $cookie->matchesDomain($host) &&
-                !$cookie->isExpired() &&
-                (!$cookie->getSecure() || $scheme === 'https')
-            ) {
-                $values[] = $cookie->getName() . '='
-                    . $cookie->getValue();
-            }
-        }
-
-        return $values
-            ? $request->withHeader('Cookie', implode('; ', $values))
-            : $request;
-    }
-
-    /**
-     * If a cookie already exists and the server asks to set it again with a
-     * null value, the cookie must be deleted.
-     *
-     * @param SetCookie $cookie
-     */
-    private function removeCookieIfEmpty(SetCookie $cookie)
-    {
-        $cookieValue = $cookie->getValue();
-        if ($cookieValue === null || $cookieValue === '') {
-            $this->clear(
-                $cookie->getDomain(),
-                $cookie->getPath(),
-                $cookie->getName()
-            );
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
deleted file mode 100644
index 6ee11885e1f1f2cfc82ffc1d463966e24ddd9d25..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Stores HTTP cookies.
- *
- * It extracts cookies from HTTP requests, and returns them in HTTP responses.
- * CookieJarInterface instances automatically expire contained cookies when
- * necessary. Subclasses are also responsible for storing and retrieving
- * cookies from a file, database, etc.
- *
- * @link http://docs.python.org/2/library/cookielib.html Inspiration
- */
-interface CookieJarInterface extends \Countable, \IteratorAggregate
-{
-    /**
-     * Create a request with added cookie headers.
-     *
-     * If no matching cookies are found in the cookie jar, then no Cookie
-     * header is added to the request and the same request is returned.
-     *
-     * @param RequestInterface $request Request object to modify.
-     *
-     * @return RequestInterface returns the modified request.
-     */
-    public function withCookieHeader(RequestInterface $request);
-
-    /**
-     * Extract cookies from an HTTP response and store them in the CookieJar.
-     *
-     * @param RequestInterface  $request  Request that was sent
-     * @param ResponseInterface $response Response that was received
-     */
-    public function extractCookies(
-        RequestInterface $request,
-        ResponseInterface $response
-    );
-
-    /**
-     * Sets a cookie in the cookie jar.
-     *
-     * @param SetCookie $cookie Cookie to set.
-     *
-     * @return bool Returns true on success or false on failure
-     */
-    public function setCookie(SetCookie $cookie);
-
-    /**
-     * Remove cookies currently held in the cookie jar.
-     *
-     * Invoking this method without arguments will empty the whole cookie jar.
-     * If given a $domain argument only cookies belonging to that domain will
-     * be removed. If given a $domain and $path argument, cookies belonging to
-     * the specified path within that domain are removed. If given all three
-     * arguments, then the cookie with the specified name, path and domain is
-     * removed.
-     *
-     * @param string|null $domain Clears cookies matching a domain
-     * @param string|null $path   Clears cookies matching a domain and path
-     * @param string|null $name   Clears cookies matching a domain, path, and name
-     *
-     * @return CookieJarInterface
-     */
-    public function clear($domain = null, $path = null, $name = null);
-
-    /**
-     * Discard all sessions cookies.
-     *
-     * Removes cookies that don't have an expire field or a have a discard
-     * field set to true. To be called when the user agent shuts down according
-     * to RFC 2965.
-     */
-    public function clearSessionCookies();
-
-    /**
-     * Converts the cookie jar to an array.
-     *
-     * @return array
-     */
-    public function toArray();
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
deleted file mode 100644
index 3fb8600ef07be182db6d8ad607b73582ec1746e3..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-/**
- * Persists non-session cookies using a JSON formatted file
- */
-class FileCookieJar extends CookieJar
-{
-    /** @var string filename */
-    private $filename;
-
-    /** @var bool Control whether to persist session cookies or not. */
-    private $storeSessionCookies;
-
-    /**
-     * Create a new FileCookieJar object
-     *
-     * @param string $cookieFile        File to store the cookie data
-     * @param bool $storeSessionCookies Set to true to store session cookies
-     *                                  in the cookie jar.
-     *
-     * @throws \RuntimeException if the file cannot be found or created
-     */
-    public function __construct($cookieFile, $storeSessionCookies = false)
-    {
-        parent::__construct();
-        $this->filename = $cookieFile;
-        $this->storeSessionCookies = $storeSessionCookies;
-
-        if (file_exists($cookieFile)) {
-            $this->load($cookieFile);
-        }
-    }
-
-    /**
-     * Saves the file when shutting down
-     */
-    public function __destruct()
-    {
-        $this->save($this->filename);
-    }
-
-    /**
-     * Saves the cookies to a file.
-     *
-     * @param string $filename File to save
-     * @throws \RuntimeException if the file cannot be found or created
-     */
-    public function save($filename)
-    {
-        $json = [];
-        foreach ($this as $cookie) {
-            /** @var SetCookie $cookie */
-            if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
-                $json[] = $cookie->toArray();
-            }
-        }
-
-        $jsonStr = \GuzzleHttp\json_encode($json);
-        if (false === file_put_contents($filename, $jsonStr, LOCK_EX)) {
-            throw new \RuntimeException("Unable to save file {$filename}");
-        }
-    }
-
-    /**
-     * Load cookies from a JSON formatted file.
-     *
-     * Old cookies are kept unless overwritten by newly loaded ones.
-     *
-     * @param string $filename Cookie file to load.
-     * @throws \RuntimeException if the file cannot be loaded.
-     */
-    public function load($filename)
-    {
-        $json = file_get_contents($filename);
-        if (false === $json) {
-            throw new \RuntimeException("Unable to load file {$filename}");
-        } elseif ($json === '') {
-            return;
-        }
-
-        $data = \GuzzleHttp\json_decode($json, true);
-        if (is_array($data)) {
-            foreach (json_decode($json, true) as $cookie) {
-                $this->setCookie(new SetCookie($cookie));
-            }
-        } elseif (strlen($data)) {
-            throw new \RuntimeException("Invalid cookie file: {$filename}");
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
deleted file mode 100644
index 0224a2447b14c55eadac53831258e7bdc3041210..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-/**
- * Persists cookies in the client session
- */
-class SessionCookieJar extends CookieJar
-{
-    /** @var string session key */
-    private $sessionKey;
-    
-    /** @var bool Control whether to persist session cookies or not. */
-    private $storeSessionCookies;
-
-    /**
-     * Create a new SessionCookieJar object
-     *
-     * @param string $sessionKey        Session key name to store the cookie
-     *                                  data in session
-     * @param bool $storeSessionCookies Set to true to store session cookies
-     *                                  in the cookie jar.
-     */
-    public function __construct($sessionKey, $storeSessionCookies = false)
-    {
-        parent::__construct();
-        $this->sessionKey = $sessionKey;
-        $this->storeSessionCookies = $storeSessionCookies;
-        $this->load();
-    }
-
-    /**
-     * Saves cookies to session when shutting down
-     */
-    public function __destruct()
-    {
-        $this->save();
-    }
-
-    /**
-     * Save cookies to the client session
-     */
-    public function save()
-    {
-        $json = [];
-        foreach ($this as $cookie) {
-            /** @var SetCookie $cookie */
-            if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
-                $json[] = $cookie->toArray();
-            }
-        }
-
-        $_SESSION[$this->sessionKey] = json_encode($json);
-    }
-
-    /**
-     * Load the contents of the client session into the data array
-     */
-    protected function load()
-    {
-        if (!isset($_SESSION[$this->sessionKey])) {
-            return;
-        }
-        $data = json_decode($_SESSION[$this->sessionKey], true);
-        if (is_array($data)) {
-            foreach ($data as $cookie) {
-                $this->setCookie(new SetCookie($cookie));
-            }
-        } elseif (strlen($data)) {
-            throw new \RuntimeException("Invalid cookie data");
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
deleted file mode 100644
index 3d776a70bc78c3eb5d7f10f325780eada7803244..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
+++ /dev/null
@@ -1,403 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-/**
- * Set-Cookie object
- */
-class SetCookie
-{
-    /** @var array */
-    private static $defaults = [
-        'Name'     => null,
-        'Value'    => null,
-        'Domain'   => null,
-        'Path'     => '/',
-        'Max-Age'  => null,
-        'Expires'  => null,
-        'Secure'   => false,
-        'Discard'  => false,
-        'HttpOnly' => false
-    ];
-
-    /** @var array Cookie data */
-    private $data;
-
-    /**
-     * Create a new SetCookie object from a string
-     *
-     * @param string $cookie Set-Cookie header string
-     *
-     * @return self
-     */
-    public static function fromString($cookie)
-    {
-        // Create the default return array
-        $data = self::$defaults;
-        // Explode the cookie string using a series of semicolons
-        $pieces = array_filter(array_map('trim', explode(';', $cookie)));
-        // The name of the cookie (first kvp) must exist and include an equal sign.
-        if (empty($pieces[0]) || !strpos($pieces[0], '=')) {
-            return new self($data);
-        }
-
-        // Add the cookie pieces into the parsed data array
-        foreach ($pieces as $part) {
-            $cookieParts = explode('=', $part, 2);
-            $key = trim($cookieParts[0]);
-            $value = isset($cookieParts[1])
-                ? trim($cookieParts[1], " \n\r\t\0\x0B")
-                : true;
-
-            // Only check for non-cookies when cookies have been found
-            if (empty($data['Name'])) {
-                $data['Name'] = $key;
-                $data['Value'] = $value;
-            } else {
-                foreach (array_keys(self::$defaults) as $search) {
-                    if (!strcasecmp($search, $key)) {
-                        $data[$search] = $value;
-                        continue 2;
-                    }
-                }
-                $data[$key] = $value;
-            }
-        }
-
-        return new self($data);
-    }
-
-    /**
-     * @param array $data Array of cookie data provided by a Cookie parser
-     */
-    public function __construct(array $data = [])
-    {
-        $this->data = array_replace(self::$defaults, $data);
-        // Extract the Expires value and turn it into a UNIX timestamp if needed
-        if (!$this->getExpires() && $this->getMaxAge()) {
-            // Calculate the Expires date
-            $this->setExpires(time() + $this->getMaxAge());
-        } elseif ($this->getExpires() && !is_numeric($this->getExpires())) {
-            $this->setExpires($this->getExpires());
-        }
-    }
-
-    public function __toString()
-    {
-        $str = $this->data['Name'] . '=' . $this->data['Value'] . '; ';
-        foreach ($this->data as $k => $v) {
-            if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) {
-                if ($k === 'Expires') {
-                    $str .= 'Expires=' . gmdate('D, d M Y H:i:s \G\M\T', $v) . '; ';
-                } else {
-                    $str .= ($v === true ? $k : "{$k}={$v}") . '; ';
-                }
-            }
-        }
-
-        return rtrim($str, '; ');
-    }
-
-    public function toArray()
-    {
-        return $this->data;
-    }
-
-    /**
-     * Get the cookie name
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->data['Name'];
-    }
-
-    /**
-     * Set the cookie name
-     *
-     * @param string $name Cookie name
-     */
-    public function setName($name)
-    {
-        $this->data['Name'] = $name;
-    }
-
-    /**
-     * Get the cookie value
-     *
-     * @return string
-     */
-    public function getValue()
-    {
-        return $this->data['Value'];
-    }
-
-    /**
-     * Set the cookie value
-     *
-     * @param string $value Cookie value
-     */
-    public function setValue($value)
-    {
-        $this->data['Value'] = $value;
-    }
-
-    /**
-     * Get the domain
-     *
-     * @return string|null
-     */
-    public function getDomain()
-    {
-        return $this->data['Domain'];
-    }
-
-    /**
-     * Set the domain of the cookie
-     *
-     * @param string $domain
-     */
-    public function setDomain($domain)
-    {
-        $this->data['Domain'] = $domain;
-    }
-
-    /**
-     * Get the path
-     *
-     * @return string
-     */
-    public function getPath()
-    {
-        return $this->data['Path'];
-    }
-
-    /**
-     * Set the path of the cookie
-     *
-     * @param string $path Path of the cookie
-     */
-    public function setPath($path)
-    {
-        $this->data['Path'] = $path;
-    }
-
-    /**
-     * Maximum lifetime of the cookie in seconds
-     *
-     * @return int|null
-     */
-    public function getMaxAge()
-    {
-        return $this->data['Max-Age'];
-    }
-
-    /**
-     * Set the max-age of the cookie
-     *
-     * @param int $maxAge Max age of the cookie in seconds
-     */
-    public function setMaxAge($maxAge)
-    {
-        $this->data['Max-Age'] = $maxAge;
-    }
-
-    /**
-     * The UNIX timestamp when the cookie Expires
-     *
-     * @return mixed
-     */
-    public function getExpires()
-    {
-        return $this->data['Expires'];
-    }
-
-    /**
-     * Set the unix timestamp for which the cookie will expire
-     *
-     * @param int $timestamp Unix timestamp
-     */
-    public function setExpires($timestamp)
-    {
-        $this->data['Expires'] = is_numeric($timestamp)
-            ? (int) $timestamp
-            : strtotime($timestamp);
-    }
-
-    /**
-     * Get whether or not this is a secure cookie
-     *
-     * @return bool|null
-     */
-    public function getSecure()
-    {
-        return $this->data['Secure'];
-    }
-
-    /**
-     * Set whether or not the cookie is secure
-     *
-     * @param bool $secure Set to true or false if secure
-     */
-    public function setSecure($secure)
-    {
-        $this->data['Secure'] = $secure;
-    }
-
-    /**
-     * Get whether or not this is a session cookie
-     *
-     * @return bool|null
-     */
-    public function getDiscard()
-    {
-        return $this->data['Discard'];
-    }
-
-    /**
-     * Set whether or not this is a session cookie
-     *
-     * @param bool $discard Set to true or false if this is a session cookie
-     */
-    public function setDiscard($discard)
-    {
-        $this->data['Discard'] = $discard;
-    }
-
-    /**
-     * Get whether or not this is an HTTP only cookie
-     *
-     * @return bool
-     */
-    public function getHttpOnly()
-    {
-        return $this->data['HttpOnly'];
-    }
-
-    /**
-     * Set whether or not this is an HTTP only cookie
-     *
-     * @param bool $httpOnly Set to true or false if this is HTTP only
-     */
-    public function setHttpOnly($httpOnly)
-    {
-        $this->data['HttpOnly'] = $httpOnly;
-    }
-
-    /**
-     * Check if the cookie matches a path value.
-     *
-     * A request-path path-matches a given cookie-path if at least one of
-     * the following conditions holds:
-     *
-     * - The cookie-path and the request-path are identical.
-     * - The cookie-path is a prefix of the request-path, and the last
-     *   character of the cookie-path is %x2F ("/").
-     * - The cookie-path is a prefix of the request-path, and the first
-     *   character of the request-path that is not included in the cookie-
-     *   path is a %x2F ("/") character.
-     *
-     * @param string $requestPath Path to check against
-     *
-     * @return bool
-     */
-    public function matchesPath($requestPath)
-    {
-        $cookiePath = $this->getPath();
-
-        // Match on exact matches or when path is the default empty "/"
-        if ($cookiePath === '/' || $cookiePath == $requestPath) {
-            return true;
-        }
-
-        // Ensure that the cookie-path is a prefix of the request path.
-        if (0 !== strpos($requestPath, $cookiePath)) {
-            return false;
-        }
-
-        // Match if the last character of the cookie-path is "/"
-        if (substr($cookiePath, -1, 1) === '/') {
-            return true;
-        }
-
-        // Match if the first character not included in cookie path is "/"
-        return substr($requestPath, strlen($cookiePath), 1) === '/';
-    }
-
-    /**
-     * Check if the cookie matches a domain value
-     *
-     * @param string $domain Domain to check against
-     *
-     * @return bool
-     */
-    public function matchesDomain($domain)
-    {
-        // Remove the leading '.' as per spec in RFC 6265.
-        // http://tools.ietf.org/html/rfc6265#section-5.2.3
-        $cookieDomain = ltrim($this->getDomain(), '.');
-
-        // Domain not set or exact match.
-        if (!$cookieDomain || !strcasecmp($domain, $cookieDomain)) {
-            return true;
-        }
-
-        // Matching the subdomain according to RFC 6265.
-        // http://tools.ietf.org/html/rfc6265#section-5.1.3
-        if (filter_var($domain, FILTER_VALIDATE_IP)) {
-            return false;
-        }
-
-        return (bool) preg_match('/\.' . preg_quote($cookieDomain, '/') . '$/', $domain);
-    }
-
-    /**
-     * Check if the cookie is expired
-     *
-     * @return bool
-     */
-    public function isExpired()
-    {
-        return $this->getExpires() !== null && time() > $this->getExpires();
-    }
-
-    /**
-     * Check if the cookie is valid according to RFC 6265
-     *
-     * @return bool|string Returns true if valid or an error message if invalid
-     */
-    public function validate()
-    {
-        // Names must not be empty, but can be 0
-        $name = $this->getName();
-        if (empty($name) && !is_numeric($name)) {
-            return 'The cookie name must not be empty';
-        }
-
-        // Check if any of the invalid characters are present in the cookie name
-        if (preg_match(
-            '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/',
-            $name
-        )) {
-            return 'Cookie name must not contain invalid characters: ASCII '
-                . 'Control characters (0-31;127), space, tab and the '
-                . 'following characters: ()<>@,;:\"/?={}';
-        }
-
-        // Value must not be empty, but can be 0
-        $value = $this->getValue();
-        if (empty($value) && !is_numeric($value)) {
-            return 'The cookie value must not be empty';
-        }
-
-        // Domains must not be empty, but can be 0
-        // A "0" is not a valid internet domain, but may be used as server name
-        // in a private network.
-        $domain = $this->getDomain();
-        if (empty($domain) && !is_numeric($domain)) {
-            return 'The cookie domain must not be empty';
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
deleted file mode 100644
index 427d896fb2f2a715d6c797b87ec6159ddf8453bc..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Exception when an HTTP error occurs (4xx or 5xx error)
- */
-class BadResponseException extends RequestException
-{
-    public function __construct(
-        $message,
-        RequestInterface $request,
-        ResponseInterface $response = null,
-        \Exception $previous = null,
-        array $handlerContext = []
-    ) {
-        if (null === $response) {
-            @trigger_error(
-                'Instantiating the ' . __CLASS__ . ' class without a Response is deprecated since version 6.3 and will be removed in 7.0.',
-                E_USER_DEPRECATED
-            );
-        }
-        parent::__construct($message, $request, $response, $previous, $handlerContext);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php b/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
deleted file mode 100644
index 4cfd393cc1a48c227f450caaf6f5eeac9bb7e214..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-/**
- * Exception when a client error is encountered (4xx codes)
- */
-class ClientException extends BadResponseException
-{
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php b/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
deleted file mode 100644
index d33b0cc19d6f808fd16ad5f24982348b219cb999..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Exception thrown when a connection cannot be established.
- *
- * Note that no response is present for a ConnectException
- */
-class ConnectException extends RequestException
-{
-    public function __construct(
-        $message,
-        RequestInterface $request,
-        \Exception $previous = null,
-        array $handlerContext = []
-    ) {
-        parent::__construct($message, $request, null, $previous, $handlerContext);
-    }
-
-    /**
-     * @return null
-     */
-    public function getResponse()
-    {
-        return null;
-    }
-
-    /**
-     * @return bool
-     */
-    public function hasResponse()
-    {
-        return false;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php b/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
deleted file mode 100644
index 27b2722b0b6716d131b74631359cda86d3dcbbdb..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Throwable;
-
-if (interface_exists(Throwable::class)) {
-    interface GuzzleException extends Throwable
-    {
-    }
-} else {
-    /**
-     * @method string getMessage()
-     * @method \Throwable|null getPrevious()
-     * @method mixed getCode()
-     * @method string getFile()
-     * @method int getLine()
-     * @method array getTrace()
-     * @method string getTraceAsString()
-     */
-    interface GuzzleException
-    {
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php b/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php
deleted file mode 100644
index bfd20e232bba460f910e7c4ed7315e9a244ffad2..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Exception;
-
-final class InvalidArgumentException extends \InvalidArgumentException implements GuzzleException
-{
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php b/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
deleted file mode 100644
index 12dd081eb6c2b99f9561e5bb37ffd51bd968ea7f..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
+++ /dev/null
@@ -1,192 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use GuzzleHttp\Promise\PromiseInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * HTTP Request exception
- */
-class RequestException extends TransferException
-{
-    /** @var RequestInterface */
-    private $request;
-
-    /** @var ResponseInterface|null */
-    private $response;
-
-    /** @var array */
-    private $handlerContext;
-
-    public function __construct(
-        $message,
-        RequestInterface $request,
-        ResponseInterface $response = null,
-        \Exception $previous = null,
-        array $handlerContext = []
-    ) {
-        // Set the code of the exception if the response is set and not future.
-        $code = $response && !($response instanceof PromiseInterface)
-            ? $response->getStatusCode()
-            : 0;
-        parent::__construct($message, $code, $previous);
-        $this->request = $request;
-        $this->response = $response;
-        $this->handlerContext = $handlerContext;
-    }
-
-    /**
-     * Wrap non-RequestExceptions with a RequestException
-     *
-     * @param RequestInterface $request
-     * @param \Exception       $e
-     *
-     * @return RequestException
-     */
-    public static function wrapException(RequestInterface $request, \Exception $e)
-    {
-        return $e instanceof RequestException
-            ? $e
-            : new RequestException($e->getMessage(), $request, null, $e);
-    }
-
-    /**
-     * Factory method to create a new exception with a normalized error message
-     *
-     * @param RequestInterface  $request  Request
-     * @param ResponseInterface $response Response received
-     * @param \Exception        $previous Previous exception
-     * @param array             $ctx      Optional handler context.
-     *
-     * @return self
-     */
-    public static function create(
-        RequestInterface $request,
-        ResponseInterface $response = null,
-        \Exception $previous = null,
-        array $ctx = []
-    ) {
-        if (!$response) {
-            return new self(
-                'Error completing request',
-                $request,
-                null,
-                $previous,
-                $ctx
-            );
-        }
-
-        $level = (int) floor($response->getStatusCode() / 100);
-        if ($level === 4) {
-            $label = 'Client error';
-            $className = ClientException::class;
-        } elseif ($level === 5) {
-            $label = 'Server error';
-            $className = ServerException::class;
-        } else {
-            $label = 'Unsuccessful request';
-            $className = __CLASS__;
-        }
-
-        $uri = $request->getUri();
-        $uri = static::obfuscateUri($uri);
-
-        // Client Error: `GET /` resulted in a `404 Not Found` response:
-        // <html> ... (truncated)
-        $message = sprintf(
-            '%s: `%s %s` resulted in a `%s %s` response',
-            $label,
-            $request->getMethod(),
-            $uri,
-            $response->getStatusCode(),
-            $response->getReasonPhrase()
-        );
-
-        $summary = static::getResponseBodySummary($response);
-
-        if ($summary !== null) {
-            $message .= ":\n{$summary}\n";
-        }
-
-        return new $className($message, $request, $response, $previous, $ctx);
-    }
-
-    /**
-     * Get a short summary of the response
-     *
-     * Will return `null` if the response is not printable.
-     *
-     * @param ResponseInterface $response
-     *
-     * @return string|null
-     */
-    public static function getResponseBodySummary(ResponseInterface $response)
-    {
-        return \GuzzleHttp\Psr7\get_message_body_summary($response);
-    }
-
-    /**
-     * Obfuscates URI if there is a username and a password present
-     *
-     * @param UriInterface $uri
-     *
-     * @return UriInterface
-     */
-    private static function obfuscateUri(UriInterface $uri)
-    {
-        $userInfo = $uri->getUserInfo();
-
-        if (false !== ($pos = strpos($userInfo, ':'))) {
-            return $uri->withUserInfo(substr($userInfo, 0, $pos), '***');
-        }
-
-        return $uri;
-    }
-
-    /**
-     * Get the request that caused the exception
-     *
-     * @return RequestInterface
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-
-    /**
-     * Get the associated response
-     *
-     * @return ResponseInterface|null
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-
-    /**
-     * Check if a response was received
-     *
-     * @return bool
-     */
-    public function hasResponse()
-    {
-        return $this->response !== null;
-    }
-
-    /**
-     * Get contextual information about the error from the underlying handler.
-     *
-     * The contents of this array will vary depending on which handler you are
-     * using. It may also be just an empty array. Relying on this data will
-     * couple you to a specific handler, but can give more debug information
-     * when needed.
-     *
-     * @return array
-     */
-    public function getHandlerContext()
-    {
-        return $this->handlerContext;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php b/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
deleted file mode 100644
index a77c28926cf94c4232feeda5d3062b87b15dce53..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Exception thrown when a seek fails on a stream.
- */
-class SeekException extends \RuntimeException implements GuzzleException
-{
-    private $stream;
-
-    public function __construct(StreamInterface $stream, $pos = 0, $msg = '')
-    {
-        $this->stream = $stream;
-        $msg = $msg ?: 'Could not seek the stream to position ' . $pos;
-        parent::__construct($msg);
-    }
-
-    /**
-     * @return StreamInterface
-     */
-    public function getStream()
-    {
-        return $this->stream;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
deleted file mode 100644
index 127094c149959a8c95be188f699bc3e5219e0e19..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-/**
- * Exception when a server error is encountered (5xx codes)
- */
-class ServerException extends BadResponseException
-{
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php b/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
deleted file mode 100644
index fff05251d502c010be4ad114381f8b5aa179d37f..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-class TooManyRedirectsException extends RequestException
-{
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php b/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
deleted file mode 100644
index 7c11db3abc1d8b5c5ec60c9f9b9d4fa9d5603817..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-class TransferException extends \RuntimeException implements GuzzleException
-{
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
deleted file mode 100644
index 4a28a96ebce6dbd41d31c2e24c1216052644344c..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
+++ /dev/null
@@ -1,585 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Exception\ConnectException;
-use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Promise\FulfilledPromise;
-use GuzzleHttp\Psr7;
-use GuzzleHttp\Psr7\LazyOpenStream;
-use GuzzleHttp\TransferStats;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Creates curl resources from a request
- */
-class CurlFactory implements CurlFactoryInterface
-{
-    const CURL_VERSION_STR = 'curl_version';
-    const LOW_CURL_VERSION_NUMBER = '7.21.2';
-
-    /** @var array */
-    private $handles = [];
-
-    /** @var int Total number of idle handles to keep in cache */
-    private $maxHandles;
-
-    /**
-     * @param int $maxHandles Maximum number of idle handles.
-     */
-    public function __construct($maxHandles)
-    {
-        $this->maxHandles = $maxHandles;
-    }
-
-    public function create(RequestInterface $request, array $options)
-    {
-        if (isset($options['curl']['body_as_string'])) {
-            $options['_body_as_string'] = $options['curl']['body_as_string'];
-            unset($options['curl']['body_as_string']);
-        }
-
-        $easy = new EasyHandle;
-        $easy->request = $request;
-        $easy->options = $options;
-        $conf = $this->getDefaultConf($easy);
-        $this->applyMethod($easy, $conf);
-        $this->applyHandlerOptions($easy, $conf);
-        $this->applyHeaders($easy, $conf);
-        unset($conf['_headers']);
-
-        // Add handler options from the request configuration options
-        if (isset($options['curl'])) {
-            $conf = array_replace($conf, $options['curl']);
-        }
-
-        $conf[CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy);
-        $easy->handle = $this->handles
-            ? array_pop($this->handles)
-            : curl_init();
-        curl_setopt_array($easy->handle, $conf);
-
-        return $easy;
-    }
-
-    public function release(EasyHandle $easy)
-    {
-        $resource = $easy->handle;
-        unset($easy->handle);
-
-        if (count($this->handles) >= $this->maxHandles) {
-            curl_close($resource);
-        } else {
-            // Remove all callback functions as they can hold onto references
-            // and are not cleaned up by curl_reset. Using curl_setopt_array
-            // does not work for some reason, so removing each one
-            // individually.
-            curl_setopt($resource, CURLOPT_HEADERFUNCTION, null);
-            curl_setopt($resource, CURLOPT_READFUNCTION, null);
-            curl_setopt($resource, CURLOPT_WRITEFUNCTION, null);
-            curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null);
-            curl_reset($resource);
-            $this->handles[] = $resource;
-        }
-    }
-
-    /**
-     * Completes a cURL transaction, either returning a response promise or a
-     * rejected promise.
-     *
-     * @param callable             $handler
-     * @param EasyHandle           $easy
-     * @param CurlFactoryInterface $factory Dictates how the handle is released
-     *
-     * @return \GuzzleHttp\Promise\PromiseInterface
-     */
-    public static function finish(
-        callable $handler,
-        EasyHandle $easy,
-        CurlFactoryInterface $factory
-    ) {
-        if (isset($easy->options['on_stats'])) {
-            self::invokeStats($easy);
-        }
-
-        if (!$easy->response || $easy->errno) {
-            return self::finishError($handler, $easy, $factory);
-        }
-
-        // Return the response if it is present and there is no error.
-        $factory->release($easy);
-
-        // Rewind the body of the response if possible.
-        $body = $easy->response->getBody();
-        if ($body->isSeekable()) {
-            $body->rewind();
-        }
-
-        return new FulfilledPromise($easy->response);
-    }
-
-    private static function invokeStats(EasyHandle $easy)
-    {
-        $curlStats = curl_getinfo($easy->handle);
-        $curlStats['appconnect_time'] = curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME);
-        $stats = new TransferStats(
-            $easy->request,
-            $easy->response,
-            $curlStats['total_time'],
-            $easy->errno,
-            $curlStats
-        );
-        call_user_func($easy->options['on_stats'], $stats);
-    }
-
-    private static function finishError(
-        callable $handler,
-        EasyHandle $easy,
-        CurlFactoryInterface $factory
-    ) {
-        // Get error information and release the handle to the factory.
-        $ctx = [
-            'errno' => $easy->errno,
-            'error' => curl_error($easy->handle),
-            'appconnect_time' => curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME),
-        ] + curl_getinfo($easy->handle);
-        $ctx[self::CURL_VERSION_STR] = curl_version()['version'];
-        $factory->release($easy);
-
-        // Retry when nothing is present or when curl failed to rewind.
-        if (empty($easy->options['_err_message'])
-            && (!$easy->errno || $easy->errno == 65)
-        ) {
-            return self::retryFailedRewind($handler, $easy, $ctx);
-        }
-
-        return self::createRejection($easy, $ctx);
-    }
-
-    private static function createRejection(EasyHandle $easy, array $ctx)
-    {
-        static $connectionErrors = [
-            CURLE_OPERATION_TIMEOUTED  => true,
-            CURLE_COULDNT_RESOLVE_HOST => true,
-            CURLE_COULDNT_CONNECT      => true,
-            CURLE_SSL_CONNECT_ERROR    => true,
-            CURLE_GOT_NOTHING          => true,
-        ];
-
-        // If an exception was encountered during the onHeaders event, then
-        // return a rejected promise that wraps that exception.
-        if ($easy->onHeadersException) {
-            return \GuzzleHttp\Promise\rejection_for(
-                new RequestException(
-                    'An error was encountered during the on_headers event',
-                    $easy->request,
-                    $easy->response,
-                    $easy->onHeadersException,
-                    $ctx
-                )
-            );
-        }
-        if (version_compare($ctx[self::CURL_VERSION_STR], self::LOW_CURL_VERSION_NUMBER)) {
-            $message = sprintf(
-                'cURL error %s: %s (%s)',
-                $ctx['errno'],
-                $ctx['error'],
-                'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
-            );
-        } else {
-            $message = sprintf(
-                'cURL error %s: %s (%s) for %s',
-                $ctx['errno'],
-                $ctx['error'],
-                'see https://curl.haxx.se/libcurl/c/libcurl-errors.html',
-                $easy->request->getUri()
-            );
-        }
-
-        // Create a connection exception if it was a specific error code.
-        $error = isset($connectionErrors[$easy->errno])
-            ? new ConnectException($message, $easy->request, null, $ctx)
-            : new RequestException($message, $easy->request, $easy->response, null, $ctx);
-
-        return \GuzzleHttp\Promise\rejection_for($error);
-    }
-
-    private function getDefaultConf(EasyHandle $easy)
-    {
-        $conf = [
-            '_headers'             => $easy->request->getHeaders(),
-            CURLOPT_CUSTOMREQUEST  => $easy->request->getMethod(),
-            CURLOPT_URL            => (string) $easy->request->getUri()->withFragment(''),
-            CURLOPT_RETURNTRANSFER => false,
-            CURLOPT_HEADER         => false,
-            CURLOPT_CONNECTTIMEOUT => 150,
-        ];
-
-        if (defined('CURLOPT_PROTOCOLS')) {
-            $conf[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
-        }
-
-        $version = $easy->request->getProtocolVersion();
-        if ($version == 1.1) {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1;
-        } elseif ($version == 2.0) {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2_0;
-        } else {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0;
-        }
-
-        return $conf;
-    }
-
-    private function applyMethod(EasyHandle $easy, array &$conf)
-    {
-        $body = $easy->request->getBody();
-        $size = $body->getSize();
-
-        if ($size === null || $size > 0) {
-            $this->applyBody($easy->request, $easy->options, $conf);
-            return;
-        }
-
-        $method = $easy->request->getMethod();
-        if ($method === 'PUT' || $method === 'POST') {
-            // See http://tools.ietf.org/html/rfc7230#section-3.3.2
-            if (!$easy->request->hasHeader('Content-Length')) {
-                $conf[CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
-            }
-        } elseif ($method === 'HEAD') {
-            $conf[CURLOPT_NOBODY] = true;
-            unset(
-                $conf[CURLOPT_WRITEFUNCTION],
-                $conf[CURLOPT_READFUNCTION],
-                $conf[CURLOPT_FILE],
-                $conf[CURLOPT_INFILE]
-            );
-        }
-    }
-
-    private function applyBody(RequestInterface $request, array $options, array &$conf)
-    {
-        $size = $request->hasHeader('Content-Length')
-            ? (int) $request->getHeaderLine('Content-Length')
-            : null;
-
-        // Send the body as a string if the size is less than 1MB OR if the
-        // [curl][body_as_string] request value is set.
-        if (($size !== null && $size < 1000000) ||
-            !empty($options['_body_as_string'])
-        ) {
-            $conf[CURLOPT_POSTFIELDS] = (string) $request->getBody();
-            // Don't duplicate the Content-Length header
-            $this->removeHeader('Content-Length', $conf);
-            $this->removeHeader('Transfer-Encoding', $conf);
-        } else {
-            $conf[CURLOPT_UPLOAD] = true;
-            if ($size !== null) {
-                $conf[CURLOPT_INFILESIZE] = $size;
-                $this->removeHeader('Content-Length', $conf);
-            }
-            $body = $request->getBody();
-            if ($body->isSeekable()) {
-                $body->rewind();
-            }
-            $conf[CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use ($body) {
-                return $body->read($length);
-            };
-        }
-
-        // If the Expect header is not present, prevent curl from adding it
-        if (!$request->hasHeader('Expect')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Expect:';
-        }
-
-        // cURL sometimes adds a content-type by default. Prevent this.
-        if (!$request->hasHeader('Content-Type')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Content-Type:';
-        }
-    }
-
-    private function applyHeaders(EasyHandle $easy, array &$conf)
-    {
-        foreach ($conf['_headers'] as $name => $values) {
-            foreach ($values as $value) {
-                $value = (string) $value;
-                if ($value === '') {
-                    // cURL requires a special format for empty headers.
-                    // See https://github.com/guzzle/guzzle/issues/1882 for more details.
-                    $conf[CURLOPT_HTTPHEADER][] = "$name;";
-                } else {
-                    $conf[CURLOPT_HTTPHEADER][] = "$name: $value";
-                }
-            }
-        }
-
-        // Remove the Accept header if one was not set
-        if (!$easy->request->hasHeader('Accept')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Accept:';
-        }
-    }
-
-    /**
-     * Remove a header from the options array.
-     *
-     * @param string $name    Case-insensitive header to remove
-     * @param array  $options Array of options to modify
-     */
-    private function removeHeader($name, array &$options)
-    {
-        foreach (array_keys($options['_headers']) as $key) {
-            if (!strcasecmp($key, $name)) {
-                unset($options['_headers'][$key]);
-                return;
-            }
-        }
-    }
-
-    private function applyHandlerOptions(EasyHandle $easy, array &$conf)
-    {
-        $options = $easy->options;
-        if (isset($options['verify'])) {
-            if ($options['verify'] === false) {
-                unset($conf[CURLOPT_CAINFO]);
-                $conf[CURLOPT_SSL_VERIFYHOST] = 0;
-                $conf[CURLOPT_SSL_VERIFYPEER] = false;
-            } else {
-                $conf[CURLOPT_SSL_VERIFYHOST] = 2;
-                $conf[CURLOPT_SSL_VERIFYPEER] = true;
-                if (is_string($options['verify'])) {
-                    // Throw an error if the file/folder/link path is not valid or doesn't exist.
-                    if (!file_exists($options['verify'])) {
-                        throw new \InvalidArgumentException(
-                            "SSL CA bundle not found: {$options['verify']}"
-                        );
-                    }
-                    // If it's a directory or a link to a directory use CURLOPT_CAPATH.
-                    // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO.
-                    if (is_dir($options['verify']) ||
-                        (is_link($options['verify']) && is_dir(readlink($options['verify'])))) {
-                        $conf[CURLOPT_CAPATH] = $options['verify'];
-                    } else {
-                        $conf[CURLOPT_CAINFO] = $options['verify'];
-                    }
-                }
-            }
-        }
-
-        if (!empty($options['decode_content'])) {
-            $accept = $easy->request->getHeaderLine('Accept-Encoding');
-            if ($accept) {
-                $conf[CURLOPT_ENCODING] = $accept;
-            } else {
-                $conf[CURLOPT_ENCODING] = '';
-                // Don't let curl send the header over the wire
-                $conf[CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
-            }
-        }
-
-        if (isset($options['sink'])) {
-            $sink = $options['sink'];
-            if (!is_string($sink)) {
-                $sink = \GuzzleHttp\Psr7\stream_for($sink);
-            } elseif (!is_dir(dirname($sink))) {
-                // Ensure that the directory exists before failing in curl.
-                throw new \RuntimeException(sprintf(
-                    'Directory %s does not exist for sink value of %s',
-                    dirname($sink),
-                    $sink
-                ));
-            } else {
-                $sink = new LazyOpenStream($sink, 'w+');
-            }
-            $easy->sink = $sink;
-            $conf[CURLOPT_WRITEFUNCTION] = function ($ch, $write) use ($sink) {
-                return $sink->write($write);
-            };
-        } else {
-            // Use a default temp stream if no sink was set.
-            $conf[CURLOPT_FILE] = fopen('php://temp', 'w+');
-            $easy->sink = Psr7\stream_for($conf[CURLOPT_FILE]);
-        }
-        $timeoutRequiresNoSignal = false;
-        if (isset($options['timeout'])) {
-            $timeoutRequiresNoSignal |= $options['timeout'] < 1;
-            $conf[CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000;
-        }
-
-        // CURL default value is CURL_IPRESOLVE_WHATEVER
-        if (isset($options['force_ip_resolve'])) {
-            if ('v4' === $options['force_ip_resolve']) {
-                $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4;
-            } elseif ('v6' === $options['force_ip_resolve']) {
-                $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V6;
-            }
-        }
-
-        if (isset($options['connect_timeout'])) {
-            $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1;
-            $conf[CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000;
-        }
-
-        if ($timeoutRequiresNoSignal && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
-            $conf[CURLOPT_NOSIGNAL] = true;
-        }
-
-        if (isset($options['proxy'])) {
-            if (!is_array($options['proxy'])) {
-                $conf[CURLOPT_PROXY] = $options['proxy'];
-            } else {
-                $scheme = $easy->request->getUri()->getScheme();
-                if (isset($options['proxy'][$scheme])) {
-                    $host = $easy->request->getUri()->getHost();
-                    if (!isset($options['proxy']['no']) ||
-                        !\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no'])
-                    ) {
-                        $conf[CURLOPT_PROXY] = $options['proxy'][$scheme];
-                    }
-                }
-            }
-        }
-
-        if (isset($options['cert'])) {
-            $cert = $options['cert'];
-            if (is_array($cert)) {
-                $conf[CURLOPT_SSLCERTPASSWD] = $cert[1];
-                $cert = $cert[0];
-            }
-            if (!file_exists($cert)) {
-                throw new \InvalidArgumentException(
-                    "SSL certificate not found: {$cert}"
-                );
-            }
-            $conf[CURLOPT_SSLCERT] = $cert;
-        }
-
-        if (isset($options['ssl_key'])) {
-            if (is_array($options['ssl_key'])) {
-                if (count($options['ssl_key']) === 2) {
-                    list($sslKey, $conf[CURLOPT_SSLKEYPASSWD]) = $options['ssl_key'];
-                } else {
-                    list($sslKey) = $options['ssl_key'];
-                }
-            }
-
-            $sslKey = isset($sslKey) ? $sslKey: $options['ssl_key'];
-
-            if (!file_exists($sslKey)) {
-                throw new \InvalidArgumentException(
-                    "SSL private key not found: {$sslKey}"
-                );
-            }
-            $conf[CURLOPT_SSLKEY] = $sslKey;
-        }
-
-        if (isset($options['progress'])) {
-            $progress = $options['progress'];
-            if (!is_callable($progress)) {
-                throw new \InvalidArgumentException(
-                    'progress client option must be callable'
-                );
-            }
-            $conf[CURLOPT_NOPROGRESS] = false;
-            $conf[CURLOPT_PROGRESSFUNCTION] = function () use ($progress) {
-                $args = func_get_args();
-                // PHP 5.5 pushed the handle onto the start of the args
-                if (is_resource($args[0])) {
-                    array_shift($args);
-                }
-                call_user_func_array($progress, $args);
-            };
-        }
-
-        if (!empty($options['debug'])) {
-            $conf[CURLOPT_STDERR] = \GuzzleHttp\debug_resource($options['debug']);
-            $conf[CURLOPT_VERBOSE] = true;
-        }
-    }
-
-    /**
-     * This function ensures that a response was set on a transaction. If one
-     * was not set, then the request is retried if possible. This error
-     * typically means you are sending a payload, curl encountered a
-     * "Connection died, retrying a fresh connect" error, tried to rewind the
-     * stream, and then encountered a "necessary data rewind wasn't possible"
-     * error, causing the request to be sent through curl_multi_info_read()
-     * without an error status.
-     */
-    private static function retryFailedRewind(
-        callable $handler,
-        EasyHandle $easy,
-        array $ctx
-    ) {
-        try {
-            // Only rewind if the body has been read from.
-            $body = $easy->request->getBody();
-            if ($body->tell() > 0) {
-                $body->rewind();
-            }
-        } catch (\RuntimeException $e) {
-            $ctx['error'] = 'The connection unexpectedly failed without '
-                . 'providing an error. The request would have been retried, '
-                . 'but attempting to rewind the request body failed. '
-                . 'Exception: ' . $e;
-            return self::createRejection($easy, $ctx);
-        }
-
-        // Retry no more than 3 times before giving up.
-        if (!isset($easy->options['_curl_retries'])) {
-            $easy->options['_curl_retries'] = 1;
-        } elseif ($easy->options['_curl_retries'] == 2) {
-            $ctx['error'] = 'The cURL request was retried 3 times '
-                . 'and did not succeed. The most likely reason for the failure '
-                . 'is that cURL was unable to rewind the body of the request '
-                . 'and subsequent retries resulted in the same error. Turn on '
-                . 'the debug option to see what went wrong. See '
-                . 'https://bugs.php.net/bug.php?id=47204 for more information.';
-            return self::createRejection($easy, $ctx);
-        } else {
-            $easy->options['_curl_retries']++;
-        }
-
-        return $handler($easy->request, $easy->options);
-    }
-
-    private function createHeaderFn(EasyHandle $easy)
-    {
-        if (isset($easy->options['on_headers'])) {
-            $onHeaders = $easy->options['on_headers'];
-
-            if (!is_callable($onHeaders)) {
-                throw new \InvalidArgumentException('on_headers must be callable');
-            }
-        } else {
-            $onHeaders = null;
-        }
-
-        return function ($ch, $h) use (
-            $onHeaders,
-            $easy,
-            &$startingResponse
-        ) {
-            $value = trim($h);
-            if ($value === '') {
-                $startingResponse = true;
-                $easy->createResponse();
-                if ($onHeaders !== null) {
-                    try {
-                        $onHeaders($easy->response);
-                    } catch (\Exception $e) {
-                        // Associate the exception with the handle and trigger
-                        // a curl header write error by returning 0.
-                        $easy->onHeadersException = $e;
-                        return -1;
-                    }
-                }
-            } elseif ($startingResponse) {
-                $startingResponse = false;
-                $easy->headers = [$value];
-            } else {
-                $easy->headers[] = $value;
-            }
-            return strlen($h);
-        };
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
deleted file mode 100644
index b0fc236850b5db204532665f3db1f39ae907c4fa..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use Psr\Http\Message\RequestInterface;
-
-interface CurlFactoryInterface
-{
-    /**
-     * Creates a cURL handle resource.
-     *
-     * @param RequestInterface $request Request
-     * @param array            $options Transfer options
-     *
-     * @return EasyHandle
-     * @throws \RuntimeException when an option cannot be applied
-     */
-    public function create(RequestInterface $request, array $options);
-
-    /**
-     * Release an easy handle, allowing it to be reused or closed.
-     *
-     * This function must call unset on the easy handle's "handle" property.
-     *
-     * @param EasyHandle $easy
-     */
-    public function release(EasyHandle $easy);
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
deleted file mode 100644
index 43577da66e25de9e8ab4f9f4fb74ebe20b4afd4a..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * HTTP handler that uses cURL easy handles as a transport layer.
- *
- * When using the CurlHandler, custom curl options can be specified as an
- * associative array of curl option constants mapping to values in the
- * **curl** key of the "client" key of the request.
- */
-class CurlHandler
-{
-    /** @var CurlFactoryInterface */
-    private $factory;
-
-    /**
-     * Accepts an associative array of options:
-     *
-     * - factory: Optional curl factory used to create cURL handles.
-     *
-     * @param array $options Array of options to use with the handler
-     */
-    public function __construct(array $options = [])
-    {
-        $this->factory = isset($options['handle_factory'])
-            ? $options['handle_factory']
-            : new CurlFactory(3);
-    }
-
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        if (isset($options['delay'])) {
-            usleep($options['delay'] * 1000);
-        }
-
-        $easy = $this->factory->create($request, $options);
-        curl_exec($easy->handle);
-        $easy->errno = curl_errno($easy->handle);
-
-        return CurlFactory::finish($this, $easy, $this->factory);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
deleted file mode 100644
index 564c95f481e65fca0dc7b7631888f82fc3827044..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
+++ /dev/null
@@ -1,219 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Promise as P;
-use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Utils;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Returns an asynchronous response using curl_multi_* functions.
- *
- * When using the CurlMultiHandler, custom curl options can be specified as an
- * associative array of curl option constants mapping to values in the
- * **curl** key of the provided request options.
- *
- * @property resource $_mh Internal use only. Lazy loaded multi-handle.
- */
-class CurlMultiHandler
-{
-    /** @var CurlFactoryInterface */
-    private $factory;
-    private $selectTimeout;
-    private $active;
-    private $handles = [];
-    private $delays = [];
-    private $options = [];
-
-    /**
-     * This handler accepts the following options:
-     *
-     * - handle_factory: An optional factory  used to create curl handles
-     * - select_timeout: Optional timeout (in seconds) to block before timing
-     *   out while selecting curl handles. Defaults to 1 second.
-     * - options: An associative array of CURLMOPT_* options and
-     *   corresponding values for curl_multi_setopt()
-     *
-     * @param array $options
-     */
-    public function __construct(array $options = [])
-    {
-        $this->factory = isset($options['handle_factory'])
-            ? $options['handle_factory'] : new CurlFactory(50);
-
-        if (isset($options['select_timeout'])) {
-            $this->selectTimeout = $options['select_timeout'];
-        } elseif ($selectTimeout = getenv('GUZZLE_CURL_SELECT_TIMEOUT')) {
-            $this->selectTimeout = $selectTimeout;
-        } else {
-            $this->selectTimeout = 1;
-        }
-
-        $this->options = isset($options['options']) ? $options['options'] : [];
-    }
-
-    public function __get($name)
-    {
-        if ($name === '_mh') {
-            $this->_mh = curl_multi_init();
-
-            foreach ($this->options as $option => $value) {
-                // A warning is raised in case of a wrong option.
-                curl_multi_setopt($this->_mh, $option, $value);
-            }
-
-            // Further calls to _mh will return the value directly, without entering the
-            // __get() method at all.
-            return $this->_mh;
-        }
-
-        throw new \BadMethodCallException();
-    }
-
-    public function __destruct()
-    {
-        if (isset($this->_mh)) {
-            curl_multi_close($this->_mh);
-            unset($this->_mh);
-        }
-    }
-
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        $easy = $this->factory->create($request, $options);
-        $id = (int) $easy->handle;
-
-        $promise = new Promise(
-            [$this, 'execute'],
-            function () use ($id) {
-                return $this->cancel($id);
-            }
-        );
-
-        $this->addRequest(['easy' => $easy, 'deferred' => $promise]);
-
-        return $promise;
-    }
-
-    /**
-     * Ticks the curl event loop.
-     */
-    public function tick()
-    {
-        // Add any delayed handles if needed.
-        if ($this->delays) {
-            $currentTime = Utils::currentTime();
-            foreach ($this->delays as $id => $delay) {
-                if ($currentTime >= $delay) {
-                    unset($this->delays[$id]);
-                    curl_multi_add_handle(
-                        $this->_mh,
-                        $this->handles[$id]['easy']->handle
-                    );
-                }
-            }
-        }
-
-        // Step through the task queue which may add additional requests.
-        P\queue()->run();
-
-        if ($this->active &&
-            curl_multi_select($this->_mh, $this->selectTimeout) === -1
-        ) {
-            // Perform a usleep if a select returns -1.
-            // See: https://bugs.php.net/bug.php?id=61141
-            usleep(250);
-        }
-
-        while (curl_multi_exec($this->_mh, $this->active) === CURLM_CALL_MULTI_PERFORM);
-
-        $this->processMessages();
-    }
-
-    /**
-     * Runs until all outstanding connections have completed.
-     */
-    public function execute()
-    {
-        $queue = P\queue();
-
-        while ($this->handles || !$queue->isEmpty()) {
-            // If there are no transfers, then sleep for the next delay
-            if (!$this->active && $this->delays) {
-                usleep($this->timeToNext());
-            }
-            $this->tick();
-        }
-    }
-
-    private function addRequest(array $entry)
-    {
-        $easy = $entry['easy'];
-        $id = (int) $easy->handle;
-        $this->handles[$id] = $entry;
-        if (empty($easy->options['delay'])) {
-            curl_multi_add_handle($this->_mh, $easy->handle);
-        } else {
-            $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000);
-        }
-    }
-
-    /**
-     * Cancels a handle from sending and removes references to it.
-     *
-     * @param int $id Handle ID to cancel and remove.
-     *
-     * @return bool True on success, false on failure.
-     */
-    private function cancel($id)
-    {
-        // Cannot cancel if it has been processed.
-        if (!isset($this->handles[$id])) {
-            return false;
-        }
-
-        $handle = $this->handles[$id]['easy']->handle;
-        unset($this->delays[$id], $this->handles[$id]);
-        curl_multi_remove_handle($this->_mh, $handle);
-        curl_close($handle);
-
-        return true;
-    }
-
-    private function processMessages()
-    {
-        while ($done = curl_multi_info_read($this->_mh)) {
-            $id = (int) $done['handle'];
-            curl_multi_remove_handle($this->_mh, $done['handle']);
-
-            if (!isset($this->handles[$id])) {
-                // Probably was cancelled.
-                continue;
-            }
-
-            $entry = $this->handles[$id];
-            unset($this->handles[$id], $this->delays[$id]);
-            $entry['easy']->errno = $done['result'];
-            $entry['deferred']->resolve(
-                CurlFactory::finish(
-                    $this,
-                    $entry['easy'],
-                    $this->factory
-                )
-            );
-        }
-    }
-
-    private function timeToNext()
-    {
-        $currentTime = Utils::currentTime();
-        $nextTime = PHP_INT_MAX;
-        foreach ($this->delays as $time) {
-            if ($time < $nextTime) {
-                $nextTime = $time;
-            }
-        }
-
-        return max(0, $nextTime - $currentTime) * 1000000;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
deleted file mode 100644
index 7754e9111b7a18add1a188aa9efff05e2eebe550..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Psr7\Response;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Represents a cURL easy handle and the data it populates.
- *
- * @internal
- */
-final class EasyHandle
-{
-    /** @var resource cURL resource */
-    public $handle;
-
-    /** @var StreamInterface Where data is being written */
-    public $sink;
-
-    /** @var array Received HTTP headers so far */
-    public $headers = [];
-
-    /** @var ResponseInterface Received response (if any) */
-    public $response;
-
-    /** @var RequestInterface Request being sent */
-    public $request;
-
-    /** @var array Request options */
-    public $options = [];
-
-    /** @var int cURL error number (if any) */
-    public $errno = 0;
-
-    /** @var \Exception Exception during on_headers (if any) */
-    public $onHeadersException;
-
-    /**
-     * Attach a response to the easy handle based on the received headers.
-     *
-     * @throws \RuntimeException if no headers have been received.
-     */
-    public function createResponse()
-    {
-        if (empty($this->headers)) {
-            throw new \RuntimeException('No headers have been received');
-        }
-
-        // HTTP-version SP status-code SP reason-phrase
-        $startLine = explode(' ', array_shift($this->headers), 3);
-        $headers = \GuzzleHttp\headers_from_lines($this->headers);
-        $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
-
-        if (!empty($this->options['decode_content'])
-            && isset($normalizedKeys['content-encoding'])
-        ) {
-            $headers['x-encoded-content-encoding']
-                = $headers[$normalizedKeys['content-encoding']];
-            unset($headers[$normalizedKeys['content-encoding']]);
-            if (isset($normalizedKeys['content-length'])) {
-                $headers['x-encoded-content-length']
-                    = $headers[$normalizedKeys['content-length']];
-
-                $bodyLength = (int) $this->sink->getSize();
-                if ($bodyLength) {
-                    $headers[$normalizedKeys['content-length']] = $bodyLength;
-                } else {
-                    unset($headers[$normalizedKeys['content-length']]);
-                }
-            }
-        }
-
-        // Attach a response to the easy handle with the parsed headers.
-        $this->response = new Response(
-            $startLine[1],
-            $headers,
-            $this->sink,
-            substr($startLine[0], 5),
-            isset($startLine[2]) ? (string) $startLine[2] : null
-        );
-    }
-
-    public function __get($name)
-    {
-        $msg = $name === 'handle'
-            ? 'The EasyHandle has been released'
-            : 'Invalid property: ' . $name;
-        throw new \BadMethodCallException($msg);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
deleted file mode 100644
index 5b312bc0428ab910c00bfdbf4f962beba08c75b1..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
+++ /dev/null
@@ -1,195 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\HandlerStack;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\TransferStats;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Handler that returns responses or throw exceptions from a queue.
- */
-class MockHandler implements \Countable
-{
-    private $queue = [];
-    private $lastRequest;
-    private $lastOptions;
-    private $onFulfilled;
-    private $onRejected;
-
-    /**
-     * Creates a new MockHandler that uses the default handler stack list of
-     * middlewares.
-     *
-     * @param array $queue Array of responses, callables, or exceptions.
-     * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
-     * @param callable $onRejected  Callback to invoke when the return value is rejected.
-     *
-     * @return HandlerStack
-     */
-    public static function createWithMiddleware(
-        array $queue = null,
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        return HandlerStack::create(new self($queue, $onFulfilled, $onRejected));
-    }
-
-    /**
-     * The passed in value must be an array of
-     * {@see Psr7\Http\Message\ResponseInterface} objects, Exceptions,
-     * callables, or Promises.
-     *
-     * @param array $queue
-     * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
-     * @param callable $onRejected  Callback to invoke when the return value is rejected.
-     */
-    public function __construct(
-        array $queue = null,
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        $this->onFulfilled = $onFulfilled;
-        $this->onRejected = $onRejected;
-
-        if ($queue) {
-            call_user_func_array([$this, 'append'], $queue);
-        }
-    }
-
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        if (!$this->queue) {
-            throw new \OutOfBoundsException('Mock queue is empty');
-        }
-
-        if (isset($options['delay']) && is_numeric($options['delay'])) {
-            usleep($options['delay'] * 1000);
-        }
-
-        $this->lastRequest = $request;
-        $this->lastOptions = $options;
-        $response = array_shift($this->queue);
-
-        if (isset($options['on_headers'])) {
-            if (!is_callable($options['on_headers'])) {
-                throw new \InvalidArgumentException('on_headers must be callable');
-            }
-            try {
-                $options['on_headers']($response);
-            } catch (\Exception $e) {
-                $msg = 'An error was encountered during the on_headers event';
-                $response = new RequestException($msg, $request, $response, $e);
-            }
-        }
-
-        if (is_callable($response)) {
-            $response = call_user_func($response, $request, $options);
-        }
-
-        $response = $response instanceof \Exception
-            ? \GuzzleHttp\Promise\rejection_for($response)
-            : \GuzzleHttp\Promise\promise_for($response);
-
-        return $response->then(
-            function ($value) use ($request, $options) {
-                $this->invokeStats($request, $options, $value);
-                if ($this->onFulfilled) {
-                    call_user_func($this->onFulfilled, $value);
-                }
-                if (isset($options['sink'])) {
-                    $contents = (string) $value->getBody();
-                    $sink = $options['sink'];
-
-                    if (is_resource($sink)) {
-                        fwrite($sink, $contents);
-                    } elseif (is_string($sink)) {
-                        file_put_contents($sink, $contents);
-                    } elseif ($sink instanceof \Psr\Http\Message\StreamInterface) {
-                        $sink->write($contents);
-                    }
-                }
-
-                return $value;
-            },
-            function ($reason) use ($request, $options) {
-                $this->invokeStats($request, $options, null, $reason);
-                if ($this->onRejected) {
-                    call_user_func($this->onRejected, $reason);
-                }
-                return \GuzzleHttp\Promise\rejection_for($reason);
-            }
-        );
-    }
-
-    /**
-     * Adds one or more variadic requests, exceptions, callables, or promises
-     * to the queue.
-     */
-    public function append()
-    {
-        foreach (func_get_args() as $value) {
-            if ($value instanceof ResponseInterface
-                || $value instanceof \Exception
-                || $value instanceof PromiseInterface
-                || is_callable($value)
-            ) {
-                $this->queue[] = $value;
-            } else {
-                throw new \InvalidArgumentException('Expected a response or '
-                    . 'exception. Found ' . \GuzzleHttp\describe_type($value));
-            }
-        }
-    }
-
-    /**
-     * Get the last received request.
-     *
-     * @return RequestInterface
-     */
-    public function getLastRequest()
-    {
-        return $this->lastRequest;
-    }
-
-    /**
-     * Get the last received request options.
-     *
-     * @return array
-     */
-    public function getLastOptions()
-    {
-        return $this->lastOptions;
-    }
-
-    /**
-     * Returns the number of remaining items in the queue.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return count($this->queue);
-    }
-
-    public function reset()
-    {
-        $this->queue = [];
-    }
-
-    private function invokeStats(
-        RequestInterface $request,
-        array $options,
-        ResponseInterface $response = null,
-        $reason = null
-    ) {
-        if (isset($options['on_stats'])) {
-            $transferTime = isset($options['transfer_time']) ? $options['transfer_time'] : 0;
-            $stats = new TransferStats($request, $response, $transferTime, $reason);
-            call_user_func($options['on_stats'], $stats);
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php b/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
deleted file mode 100644
index f8b00be0b99ed4b5de18098ca153fa1b44d41685..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\RequestOptions;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Provides basic proxies for handlers.
- */
-class Proxy
-{
-    /**
-     * Sends synchronous requests to a specific handler while sending all other
-     * requests to another handler.
-     *
-     * @param callable $default Handler used for normal responses
-     * @param callable $sync    Handler used for synchronous responses.
-     *
-     * @return callable Returns the composed handler.
-     */
-    public static function wrapSync(
-        callable $default,
-        callable $sync
-    ) {
-        return function (RequestInterface $request, array $options) use ($default, $sync) {
-            return empty($options[RequestOptions::SYNCHRONOUS])
-                ? $default($request, $options)
-                : $sync($request, $options);
-        };
-    }
-
-    /**
-     * Sends streaming requests to a streaming compatible handler while sending
-     * all other requests to a default handler.
-     *
-     * This, for example, could be useful for taking advantage of the
-     * performance benefits of curl while still supporting true streaming
-     * through the StreamHandler.
-     *
-     * @param callable $default   Handler used for non-streaming responses
-     * @param callable $streaming Handler used for streaming responses
-     *
-     * @return callable Returns the composed handler.
-     */
-    public static function wrapStreaming(
-        callable $default,
-        callable $streaming
-    ) {
-        return function (RequestInterface $request, array $options) use ($default, $streaming) {
-            return empty($options['stream'])
-                ? $default($request, $options)
-                : $streaming($request, $options);
-        };
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
deleted file mode 100644
index a15734a44de44695121f0d4827d04bbb360ef1bf..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
+++ /dev/null
@@ -1,545 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Exception\ConnectException;
-use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Promise\FulfilledPromise;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
-use GuzzleHttp\TransferStats;
-use GuzzleHttp\Utils;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * HTTP handler that uses PHP's HTTP stream wrapper.
- */
-class StreamHandler
-{
-    private $lastHeaders = [];
-
-    /**
-     * Sends an HTTP request.
-     *
-     * @param RequestInterface $request Request to send.
-     * @param array            $options Request transfer options.
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        // Sleep if there is a delay specified.
-        if (isset($options['delay'])) {
-            usleep($options['delay'] * 1000);
-        }
-
-        $startTime = isset($options['on_stats']) ? Utils::currentTime() : null;
-
-        try {
-            // Does not support the expect header.
-            $request = $request->withoutHeader('Expect');
-
-            // Append a content-length header if body size is zero to match
-            // cURL's behavior.
-            if (0 === $request->getBody()->getSize()) {
-                $request = $request->withHeader('Content-Length', '0');
-            }
-
-            return $this->createResponse(
-                $request,
-                $options,
-                $this->createStream($request, $options),
-                $startTime
-            );
-        } catch (\InvalidArgumentException $e) {
-            throw $e;
-        } catch (\Exception $e) {
-            // Determine if the error was a networking error.
-            $message = $e->getMessage();
-            // This list can probably get more comprehensive.
-            if (strpos($message, 'getaddrinfo') // DNS lookup failed
-                || strpos($message, 'Connection refused')
-                || strpos($message, "couldn't connect to host") // error on HHVM
-                || strpos($message, "connection attempt failed")
-            ) {
-                $e = new ConnectException($e->getMessage(), $request, $e);
-            }
-            $e = RequestException::wrapException($request, $e);
-            $this->invokeStats($options, $request, $startTime, null, $e);
-
-            return \GuzzleHttp\Promise\rejection_for($e);
-        }
-    }
-
-    private function invokeStats(
-        array $options,
-        RequestInterface $request,
-        $startTime,
-        ResponseInterface $response = null,
-        $error = null
-    ) {
-        if (isset($options['on_stats'])) {
-            $stats = new TransferStats(
-                $request,
-                $response,
-                Utils::currentTime() - $startTime,
-                $error,
-                []
-            );
-            call_user_func($options['on_stats'], $stats);
-        }
-    }
-
-    private function createResponse(
-        RequestInterface $request,
-        array $options,
-        $stream,
-        $startTime
-    ) {
-        $hdrs = $this->lastHeaders;
-        $this->lastHeaders = [];
-        $parts = explode(' ', array_shift($hdrs), 3);
-        $ver = explode('/', $parts[0])[1];
-        $status = $parts[1];
-        $reason = isset($parts[2]) ? $parts[2] : null;
-        $headers = \GuzzleHttp\headers_from_lines($hdrs);
-        list($stream, $headers) = $this->checkDecode($options, $headers, $stream);
-        $stream = Psr7\stream_for($stream);
-        $sink = $stream;
-
-        if (strcasecmp('HEAD', $request->getMethod())) {
-            $sink = $this->createSink($stream, $options);
-        }
-
-        $response = new Psr7\Response($status, $headers, $sink, $ver, $reason);
-
-        if (isset($options['on_headers'])) {
-            try {
-                $options['on_headers']($response);
-            } catch (\Exception $e) {
-                $msg = 'An error was encountered during the on_headers event';
-                $ex = new RequestException($msg, $request, $response, $e);
-                return \GuzzleHttp\Promise\rejection_for($ex);
-            }
-        }
-
-        // Do not drain when the request is a HEAD request because they have
-        // no body.
-        if ($sink !== $stream) {
-            $this->drain(
-                $stream,
-                $sink,
-                $response->getHeaderLine('Content-Length')
-            );
-        }
-
-        $this->invokeStats($options, $request, $startTime, $response, null);
-
-        return new FulfilledPromise($response);
-    }
-
-    private function createSink(StreamInterface $stream, array $options)
-    {
-        if (!empty($options['stream'])) {
-            return $stream;
-        }
-
-        $sink = isset($options['sink'])
-            ? $options['sink']
-            : fopen('php://temp', 'r+');
-
-        return is_string($sink)
-            ? new Psr7\LazyOpenStream($sink, 'w+')
-            : Psr7\stream_for($sink);
-    }
-
-    private function checkDecode(array $options, array $headers, $stream)
-    {
-        // Automatically decode responses when instructed.
-        if (!empty($options['decode_content'])) {
-            $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
-            if (isset($normalizedKeys['content-encoding'])) {
-                $encoding = $headers[$normalizedKeys['content-encoding']];
-                if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') {
-                    $stream = new Psr7\InflateStream(
-                        Psr7\stream_for($stream)
-                    );
-                    $headers['x-encoded-content-encoding']
-                        = $headers[$normalizedKeys['content-encoding']];
-                    // Remove content-encoding header
-                    unset($headers[$normalizedKeys['content-encoding']]);
-                    // Fix content-length header
-                    if (isset($normalizedKeys['content-length'])) {
-                        $headers['x-encoded-content-length']
-                            = $headers[$normalizedKeys['content-length']];
-
-                        $length = (int) $stream->getSize();
-                        if ($length === 0) {
-                            unset($headers[$normalizedKeys['content-length']]);
-                        } else {
-                            $headers[$normalizedKeys['content-length']] = [$length];
-                        }
-                    }
-                }
-            }
-        }
-
-        return [$stream, $headers];
-    }
-
-    /**
-     * Drains the source stream into the "sink" client option.
-     *
-     * @param StreamInterface $source
-     * @param StreamInterface $sink
-     * @param string          $contentLength Header specifying the amount of
-     *                                       data to read.
-     *
-     * @return StreamInterface
-     * @throws \RuntimeException when the sink option is invalid.
-     */
-    private function drain(
-        StreamInterface $source,
-        StreamInterface $sink,
-        $contentLength
-    ) {
-        // If a content-length header is provided, then stop reading once
-        // that number of bytes has been read. This can prevent infinitely
-        // reading from a stream when dealing with servers that do not honor
-        // Connection: Close headers.
-        Psr7\copy_to_stream(
-            $source,
-            $sink,
-            (strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1
-        );
-
-        $sink->seek(0);
-        $source->close();
-
-        return $sink;
-    }
-
-    /**
-     * Create a resource and check to ensure it was created successfully
-     *
-     * @param callable $callback Callable that returns stream resource
-     *
-     * @return resource
-     * @throws \RuntimeException on error
-     */
-    private function createResource(callable $callback)
-    {
-        $errors = null;
-        set_error_handler(function ($_, $msg, $file, $line) use (&$errors) {
-            $errors[] = [
-                'message' => $msg,
-                'file'    => $file,
-                'line'    => $line
-            ];
-            return true;
-        });
-
-        $resource = $callback();
-        restore_error_handler();
-
-        if (!$resource) {
-            $message = 'Error creating resource: ';
-            foreach ($errors as $err) {
-                foreach ($err as $key => $value) {
-                    $message .= "[$key] $value" . PHP_EOL;
-                }
-            }
-            throw new \RuntimeException(trim($message));
-        }
-
-        return $resource;
-    }
-
-    private function createStream(RequestInterface $request, array $options)
-    {
-        static $methods;
-        if (!$methods) {
-            $methods = array_flip(get_class_methods(__CLASS__));
-        }
-
-        // HTTP/1.1 streams using the PHP stream wrapper require a
-        // Connection: close header
-        if ($request->getProtocolVersion() == '1.1'
-            && !$request->hasHeader('Connection')
-        ) {
-            $request = $request->withHeader('Connection', 'close');
-        }
-
-        // Ensure SSL is verified by default
-        if (!isset($options['verify'])) {
-            $options['verify'] = true;
-        }
-
-        $params = [];
-        $context = $this->getDefaultContext($request);
-
-        if (isset($options['on_headers']) && !is_callable($options['on_headers'])) {
-            throw new \InvalidArgumentException('on_headers must be callable');
-        }
-
-        if (!empty($options)) {
-            foreach ($options as $key => $value) {
-                $method = "add_{$key}";
-                if (isset($methods[$method])) {
-                    $this->{$method}($request, $context, $value, $params);
-                }
-            }
-        }
-
-        if (isset($options['stream_context'])) {
-            if (!is_array($options['stream_context'])) {
-                throw new \InvalidArgumentException('stream_context must be an array');
-            }
-            $context = array_replace_recursive(
-                $context,
-                $options['stream_context']
-            );
-        }
-
-        // Microsoft NTLM authentication only supported with curl handler
-        if (isset($options['auth'])
-            && is_array($options['auth'])
-            && isset($options['auth'][2])
-            && 'ntlm' == $options['auth'][2]
-        ) {
-            throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler');
-        }
-
-        $uri = $this->resolveHost($request, $options);
-
-        $context = $this->createResource(
-            function () use ($context, $params) {
-                return stream_context_create($context, $params);
-            }
-        );
-
-        return $this->createResource(
-            function () use ($uri, &$http_response_header, $context, $options) {
-                $resource = fopen((string) $uri, 'r', null, $context);
-                $this->lastHeaders = $http_response_header;
-
-                if (isset($options['read_timeout'])) {
-                    $readTimeout = $options['read_timeout'];
-                    $sec = (int) $readTimeout;
-                    $usec = ($readTimeout - $sec) * 100000;
-                    stream_set_timeout($resource, $sec, $usec);
-                }
-
-                return $resource;
-            }
-        );
-    }
-
-    private function resolveHost(RequestInterface $request, array $options)
-    {
-        $uri = $request->getUri();
-
-        if (isset($options['force_ip_resolve']) && !filter_var($uri->getHost(), FILTER_VALIDATE_IP)) {
-            if ('v4' === $options['force_ip_resolve']) {
-                $records = dns_get_record($uri->getHost(), DNS_A);
-                if (!isset($records[0]['ip'])) {
-                    throw new ConnectException(
-                        sprintf(
-                            "Could not resolve IPv4 address for host '%s'",
-                            $uri->getHost()
-                        ),
-                        $request
-                    );
-                }
-                $uri = $uri->withHost($records[0]['ip']);
-            } elseif ('v6' === $options['force_ip_resolve']) {
-                $records = dns_get_record($uri->getHost(), DNS_AAAA);
-                if (!isset($records[0]['ipv6'])) {
-                    throw new ConnectException(
-                        sprintf(
-                            "Could not resolve IPv6 address for host '%s'",
-                            $uri->getHost()
-                        ),
-                        $request
-                    );
-                }
-                $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']');
-            }
-        }
-
-        return $uri;
-    }
-
-    private function getDefaultContext(RequestInterface $request)
-    {
-        $headers = '';
-        foreach ($request->getHeaders() as $name => $value) {
-            foreach ($value as $val) {
-                $headers .= "$name: $val\r\n";
-            }
-        }
-
-        $context = [
-            'http' => [
-                'method'           => $request->getMethod(),
-                'header'           => $headers,
-                'protocol_version' => $request->getProtocolVersion(),
-                'ignore_errors'    => true,
-                'follow_location'  => 0,
-            ],
-        ];
-
-        $body = (string) $request->getBody();
-
-        if (!empty($body)) {
-            $context['http']['content'] = $body;
-            // Prevent the HTTP handler from adding a Content-Type header.
-            if (!$request->hasHeader('Content-Type')) {
-                $context['http']['header'] .= "Content-Type:\r\n";
-            }
-        }
-
-        $context['http']['header'] = rtrim($context['http']['header']);
-
-        return $context;
-    }
-
-    private function add_proxy(RequestInterface $request, &$options, $value, &$params)
-    {
-        if (!is_array($value)) {
-            $options['http']['proxy'] = $value;
-        } else {
-            $scheme = $request->getUri()->getScheme();
-            if (isset($value[$scheme])) {
-                if (!isset($value['no'])
-                    || !\GuzzleHttp\is_host_in_noproxy(
-                        $request->getUri()->getHost(),
-                        $value['no']
-                    )
-                ) {
-                    $options['http']['proxy'] = $value[$scheme];
-                }
-            }
-        }
-    }
-
-    private function add_timeout(RequestInterface $request, &$options, $value, &$params)
-    {
-        if ($value > 0) {
-            $options['http']['timeout'] = $value;
-        }
-    }
-
-    private function add_verify(RequestInterface $request, &$options, $value, &$params)
-    {
-        if ($value === true) {
-            // PHP 5.6 or greater will find the system cert by default. When
-            // < 5.6, use the Guzzle bundled cacert.
-            if (PHP_VERSION_ID < 50600) {
-                $options['ssl']['cafile'] = \GuzzleHttp\default_ca_bundle();
-            }
-        } elseif (is_string($value)) {
-            $options['ssl']['cafile'] = $value;
-            if (!file_exists($value)) {
-                throw new \RuntimeException("SSL CA bundle not found: $value");
-            }
-        } elseif ($value === false) {
-            $options['ssl']['verify_peer'] = false;
-            $options['ssl']['verify_peer_name'] = false;
-            return;
-        } else {
-            throw new \InvalidArgumentException('Invalid verify request option');
-        }
-
-        $options['ssl']['verify_peer'] = true;
-        $options['ssl']['verify_peer_name'] = true;
-        $options['ssl']['allow_self_signed'] = false;
-    }
-
-    private function add_cert(RequestInterface $request, &$options, $value, &$params)
-    {
-        if (is_array($value)) {
-            $options['ssl']['passphrase'] = $value[1];
-            $value = $value[0];
-        }
-
-        if (!file_exists($value)) {
-            throw new \RuntimeException("SSL certificate not found: {$value}");
-        }
-
-        $options['ssl']['local_cert'] = $value;
-    }
-
-    private function add_progress(RequestInterface $request, &$options, $value, &$params)
-    {
-        $this->addNotification(
-            $params,
-            function ($code, $a, $b, $c, $transferred, $total) use ($value) {
-                if ($code == STREAM_NOTIFY_PROGRESS) {
-                    $value($total, $transferred, null, null);
-                }
-            }
-        );
-    }
-
-    private function add_debug(RequestInterface $request, &$options, $value, &$params)
-    {
-        if ($value === false) {
-            return;
-        }
-
-        static $map = [
-            STREAM_NOTIFY_CONNECT       => 'CONNECT',
-            STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED',
-            STREAM_NOTIFY_AUTH_RESULT   => 'AUTH_RESULT',
-            STREAM_NOTIFY_MIME_TYPE_IS  => 'MIME_TYPE_IS',
-            STREAM_NOTIFY_FILE_SIZE_IS  => 'FILE_SIZE_IS',
-            STREAM_NOTIFY_REDIRECTED    => 'REDIRECTED',
-            STREAM_NOTIFY_PROGRESS      => 'PROGRESS',
-            STREAM_NOTIFY_FAILURE       => 'FAILURE',
-            STREAM_NOTIFY_COMPLETED     => 'COMPLETED',
-            STREAM_NOTIFY_RESOLVE       => 'RESOLVE',
-        ];
-        static $args = ['severity', 'message', 'message_code',
-            'bytes_transferred', 'bytes_max'];
-
-        $value = \GuzzleHttp\debug_resource($value);
-        $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment('');
-        $this->addNotification(
-            $params,
-            function () use ($ident, $value, $map, $args) {
-                $passed = func_get_args();
-                $code = array_shift($passed);
-                fprintf($value, '<%s> [%s] ', $ident, $map[$code]);
-                foreach (array_filter($passed) as $i => $v) {
-                    fwrite($value, $args[$i] . ': "' . $v . '" ');
-                }
-                fwrite($value, "\n");
-            }
-        );
-    }
-
-    private function addNotification(array &$params, callable $notify)
-    {
-        // Wrap the existing function if needed.
-        if (!isset($params['notification'])) {
-            $params['notification'] = $notify;
-        } else {
-            $params['notification'] = $this->callArray([
-                $params['notification'],
-                $notify
-            ]);
-        }
-    }
-
-    private function callArray(array $functions)
-    {
-        return function () use ($functions) {
-            $args = func_get_args();
-            foreach ($functions as $fn) {
-                call_user_func_array($fn, $args);
-            }
-        };
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/vendor/guzzlehttp/guzzle/src/HandlerStack.php
deleted file mode 100644
index 6a49cc0690cb0fa24b8987957aa8e4ba43b7cf05..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/HandlerStack.php
+++ /dev/null
@@ -1,277 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\PromiseInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Creates a composed Guzzle handler function by stacking middlewares on top of
- * an HTTP handler function.
- */
-class HandlerStack
-{
-    /** @var callable|null */
-    private $handler;
-
-    /** @var array */
-    private $stack = [];
-
-    /** @var callable|null */
-    private $cached;
-
-    /**
-     * Creates a default handler stack that can be used by clients.
-     *
-     * The returned handler will wrap the provided handler or use the most
-     * appropriate default handler for your system. The returned HandlerStack has
-     * support for cookies, redirects, HTTP error exceptions, and preparing a body
-     * before sending.
-     *
-     * The returned handler stack can be passed to a client in the "handler"
-     * option.
-     *
-     * @param callable $handler HTTP handler function to use with the stack. If no
-     *                          handler is provided, the best handler for your
-     *                          system will be utilized.
-     *
-     * @return HandlerStack
-     */
-    public static function create(callable $handler = null)
-    {
-        $stack = new self($handler ?: choose_handler());
-        $stack->push(Middleware::httpErrors(), 'http_errors');
-        $stack->push(Middleware::redirect(), 'allow_redirects');
-        $stack->push(Middleware::cookies(), 'cookies');
-        $stack->push(Middleware::prepareBody(), 'prepare_body');
-
-        return $stack;
-    }
-
-    /**
-     * @param callable $handler Underlying HTTP handler.
-     */
-    public function __construct(callable $handler = null)
-    {
-        $this->handler = $handler;
-    }
-
-    /**
-     * Invokes the handler stack as a composed handler
-     *
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return ResponseInterface|PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        $handler = $this->resolve();
-
-        return $handler($request, $options);
-    }
-
-    /**
-     * Dumps a string representation of the stack.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        $depth = 0;
-        $stack = [];
-        if ($this->handler) {
-            $stack[] = "0) Handler: " . $this->debugCallable($this->handler);
-        }
-
-        $result = '';
-        foreach (array_reverse($this->stack) as $tuple) {
-            $depth++;
-            $str = "{$depth}) Name: '{$tuple[1]}', ";
-            $str .= "Function: " . $this->debugCallable($tuple[0]);
-            $result = "> {$str}\n{$result}";
-            $stack[] = $str;
-        }
-
-        foreach (array_keys($stack) as $k) {
-            $result .= "< {$stack[$k]}\n";
-        }
-
-        return $result;
-    }
-
-    /**
-     * Set the HTTP handler that actually returns a promise.
-     *
-     * @param callable $handler Accepts a request and array of options and
-     *                          returns a Promise.
-     */
-    public function setHandler(callable $handler)
-    {
-        $this->handler = $handler;
-        $this->cached = null;
-    }
-
-    /**
-     * Returns true if the builder has a handler.
-     *
-     * @return bool
-     */
-    public function hasHandler()
-    {
-        return (bool) $this->handler;
-    }
-
-    /**
-     * Unshift a middleware to the bottom of the stack.
-     *
-     * @param callable $middleware Middleware function
-     * @param string   $name       Name to register for this middleware.
-     */
-    public function unshift(callable $middleware, $name = null)
-    {
-        array_unshift($this->stack, [$middleware, $name]);
-        $this->cached = null;
-    }
-
-    /**
-     * Push a middleware to the top of the stack.
-     *
-     * @param callable $middleware Middleware function
-     * @param string   $name       Name to register for this middleware.
-     */
-    public function push(callable $middleware, $name = '')
-    {
-        $this->stack[] = [$middleware, $name];
-        $this->cached = null;
-    }
-
-    /**
-     * Add a middleware before another middleware by name.
-     *
-     * @param string   $findName   Middleware to find
-     * @param callable $middleware Middleware function
-     * @param string   $withName   Name to register for this middleware.
-     */
-    public function before($findName, callable $middleware, $withName = '')
-    {
-        $this->splice($findName, $withName, $middleware, true);
-    }
-
-    /**
-     * Add a middleware after another middleware by name.
-     *
-     * @param string   $findName   Middleware to find
-     * @param callable $middleware Middleware function
-     * @param string   $withName   Name to register for this middleware.
-     */
-    public function after($findName, callable $middleware, $withName = '')
-    {
-        $this->splice($findName, $withName, $middleware, false);
-    }
-
-    /**
-     * Remove a middleware by instance or name from the stack.
-     *
-     * @param callable|string $remove Middleware to remove by instance or name.
-     */
-    public function remove($remove)
-    {
-        $this->cached = null;
-        $idx = is_callable($remove) ? 0 : 1;
-        $this->stack = array_values(array_filter(
-            $this->stack,
-            function ($tuple) use ($idx, $remove) {
-                return $tuple[$idx] !== $remove;
-            }
-        ));
-    }
-
-    /**
-     * Compose the middleware and handler into a single callable function.
-     *
-     * @return callable
-     */
-    public function resolve()
-    {
-        if (!$this->cached) {
-            if (!($prev = $this->handler)) {
-                throw new \LogicException('No handler has been specified');
-            }
-
-            foreach (array_reverse($this->stack) as $fn) {
-                $prev = $fn[0]($prev);
-            }
-
-            $this->cached = $prev;
-        }
-
-        return $this->cached;
-    }
-
-    /**
-     * @param string $name
-     * @return int
-     */
-    private function findByName($name)
-    {
-        foreach ($this->stack as $k => $v) {
-            if ($v[1] === $name) {
-                return $k;
-            }
-        }
-
-        throw new \InvalidArgumentException("Middleware not found: $name");
-    }
-
-    /**
-     * Splices a function into the middleware list at a specific position.
-     *
-     * @param string   $findName
-     * @param string   $withName
-     * @param callable $middleware
-     * @param bool     $before
-     */
-    private function splice($findName, $withName, callable $middleware, $before)
-    {
-        $this->cached = null;
-        $idx = $this->findByName($findName);
-        $tuple = [$middleware, $withName];
-
-        if ($before) {
-            if ($idx === 0) {
-                array_unshift($this->stack, $tuple);
-            } else {
-                $replacement = [$tuple, $this->stack[$idx]];
-                array_splice($this->stack, $idx, 1, $replacement);
-            }
-        } elseif ($idx === count($this->stack) - 1) {
-            $this->stack[] = $tuple;
-        } else {
-            $replacement = [$this->stack[$idx], $tuple];
-            array_splice($this->stack, $idx, 1, $replacement);
-        }
-    }
-
-    /**
-     * Provides a debug string for a given callable.
-     *
-     * @param array|callable $fn Function to write as a string.
-     *
-     * @return string
-     */
-    private function debugCallable($fn)
-    {
-        if (is_string($fn)) {
-            return "callable({$fn})";
-        }
-
-        if (is_array($fn)) {
-            return is_string($fn[0])
-                ? "callable({$fn[0]}::{$fn[1]})"
-                : "callable(['" . get_class($fn[0]) . "', '{$fn[1]}'])";
-        }
-
-        return 'callable(' . spl_object_hash($fn) . ')';
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
deleted file mode 100644
index dc36bb524d4b7f2515e9ce053c20557169c990aa..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
+++ /dev/null
@@ -1,185 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use Psr\Http\Message\MessageInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Formats log messages using variable substitutions for requests, responses,
- * and other transactional data.
- *
- * The following variable substitutions are supported:
- *
- * - {request}:        Full HTTP request message
- * - {response}:       Full HTTP response message
- * - {ts}:             ISO 8601 date in GMT
- * - {date_iso_8601}   ISO 8601 date in GMT
- * - {date_common_log} Apache common log date using the configured timezone.
- * - {host}:           Host of the request
- * - {method}:         Method of the request
- * - {uri}:            URI of the request
- * - {version}:        Protocol version
- * - {target}:         Request target of the request (path + query + fragment)
- * - {hostname}:       Hostname of the machine that sent the request
- * - {code}:           Status code of the response (if available)
- * - {phrase}:         Reason phrase of the response  (if available)
- * - {error}:          Any error messages (if available)
- * - {req_header_*}:   Replace `*` with the lowercased name of a request header to add to the message
- * - {res_header_*}:   Replace `*` with the lowercased name of a response header to add to the message
- * - {req_headers}:    Request headers
- * - {res_headers}:    Response headers
- * - {req_body}:       Request body
- * - {res_body}:       Response body
- */
-class MessageFormatter
-{
-    /**
-     * Apache Common Log Format.
-     * @link http://httpd.apache.org/docs/2.4/logs.html#common
-     * @var string
-     */
-    const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}";
-    const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
-    const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
-
-    /** @var string Template used to format log messages */
-    private $template;
-
-    /**
-     * @param string $template Log message template
-     */
-    public function __construct($template = self::CLF)
-    {
-        $this->template = $template ?: self::CLF;
-    }
-
-    /**
-     * Returns a formatted message string.
-     *
-     * @param RequestInterface  $request  Request that was sent
-     * @param ResponseInterface $response Response that was received
-     * @param \Exception        $error    Exception that was received
-     *
-     * @return string
-     */
-    public function format(
-        RequestInterface $request,
-        ResponseInterface $response = null,
-        \Exception $error = null
-    ) {
-        $cache = [];
-
-        return preg_replace_callback(
-            '/{\s*([A-Za-z_\-\.0-9]+)\s*}/',
-            function (array $matches) use ($request, $response, $error, &$cache) {
-                if (isset($cache[$matches[1]])) {
-                    return $cache[$matches[1]];
-                }
-
-                $result = '';
-                switch ($matches[1]) {
-                    case 'request':
-                        $result = Psr7\str($request);
-                        break;
-                    case 'response':
-                        $result = $response ? Psr7\str($response) : '';
-                        break;
-                    case 'req_headers':
-                        $result = trim($request->getMethod()
-                                . ' ' . $request->getRequestTarget())
-                            . ' HTTP/' . $request->getProtocolVersion() . "\r\n"
-                            . $this->headers($request);
-                        break;
-                    case 'res_headers':
-                        $result = $response ?
-                            sprintf(
-                                'HTTP/%s %d %s',
-                                $response->getProtocolVersion(),
-                                $response->getStatusCode(),
-                                $response->getReasonPhrase()
-                            ) . "\r\n" . $this->headers($response)
-                            : 'NULL';
-                        break;
-                    case 'req_body':
-                        $result = $request->getBody();
-                        break;
-                    case 'res_body':
-                        $result = $response ? $response->getBody() : 'NULL';
-                        break;
-                    case 'ts':
-                    case 'date_iso_8601':
-                        $result = gmdate('c');
-                        break;
-                    case 'date_common_log':
-                        $result = date('d/M/Y:H:i:s O');
-                        break;
-                    case 'method':
-                        $result = $request->getMethod();
-                        break;
-                    case 'version':
-                        $result = $request->getProtocolVersion();
-                        break;
-                    case 'uri':
-                    case 'url':
-                        $result = $request->getUri();
-                        break;
-                    case 'target':
-                        $result = $request->getRequestTarget();
-                        break;
-                    case 'req_version':
-                        $result = $request->getProtocolVersion();
-                        break;
-                    case 'res_version':
-                        $result = $response
-                            ? $response->getProtocolVersion()
-                            : 'NULL';
-                        break;
-                    case 'host':
-                        $result = $request->getHeaderLine('Host');
-                        break;
-                    case 'hostname':
-                        $result = gethostname();
-                        break;
-                    case 'code':
-                        $result = $response ? $response->getStatusCode() : 'NULL';
-                        break;
-                    case 'phrase':
-                        $result = $response ? $response->getReasonPhrase() : 'NULL';
-                        break;
-                    case 'error':
-                        $result = $error ? $error->getMessage() : 'NULL';
-                        break;
-                    default:
-                        // handle prefixed dynamic headers
-                        if (strpos($matches[1], 'req_header_') === 0) {
-                            $result = $request->getHeaderLine(substr($matches[1], 11));
-                        } elseif (strpos($matches[1], 'res_header_') === 0) {
-                            $result = $response
-                                ? $response->getHeaderLine(substr($matches[1], 11))
-                                : 'NULL';
-                        }
-                }
-
-                $cache[$matches[1]] = $result;
-                return $result;
-            },
-            $this->template
-        );
-    }
-
-    /**
-     * Get headers from message as string
-     *
-     * @return string
-     */
-    private function headers(MessageInterface $message)
-    {
-        $result = '';
-        foreach ($message->getHeaders() as $name => $values) {
-            $result .= $name . ': ' . implode(', ', $values) . "\r\n";
-        }
-
-        return trim($result);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Middleware.php b/vendor/guzzlehttp/guzzle/src/Middleware.php
deleted file mode 100644
index bffc1974bbe0d94287ff580d0cfe657e32cf041e..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Middleware.php
+++ /dev/null
@@ -1,254 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Cookie\CookieJarInterface;
-use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Log\LoggerInterface;
-
-/**
- * Functions used to create and wrap handlers with handler middleware.
- */
-final class Middleware
-{
-    /**
-     * Middleware that adds cookies to requests.
-     *
-     * The options array must be set to a CookieJarInterface in order to use
-     * cookies. This is typically handled for you by a client.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function cookies()
-    {
-        return function (callable $handler) {
-            return function ($request, array $options) use ($handler) {
-                if (empty($options['cookies'])) {
-                    return $handler($request, $options);
-                } elseif (!($options['cookies'] instanceof CookieJarInterface)) {
-                    throw new \InvalidArgumentException('cookies must be an instance of GuzzleHttp\Cookie\CookieJarInterface');
-                }
-                $cookieJar = $options['cookies'];
-                $request = $cookieJar->withCookieHeader($request);
-                return $handler($request, $options)
-                    ->then(
-                        function ($response) use ($cookieJar, $request) {
-                            $cookieJar->extractCookies($request, $response);
-                            return $response;
-                        }
-                    );
-            };
-        };
-    }
-
-    /**
-     * Middleware that throws exceptions for 4xx or 5xx responses when the
-     * "http_error" request option is set to true.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function httpErrors()
-    {
-        return function (callable $handler) {
-            return function ($request, array $options) use ($handler) {
-                if (empty($options['http_errors'])) {
-                    return $handler($request, $options);
-                }
-                return $handler($request, $options)->then(
-                    function (ResponseInterface $response) use ($request) {
-                        $code = $response->getStatusCode();
-                        if ($code < 400) {
-                            return $response;
-                        }
-                        throw RequestException::create($request, $response);
-                    }
-                );
-            };
-        };
-    }
-
-    /**
-     * Middleware that pushes history data to an ArrayAccess container.
-     *
-     * @param array|\ArrayAccess $container Container to hold the history (by reference).
-     *
-     * @return callable Returns a function that accepts the next handler.
-     * @throws \InvalidArgumentException if container is not an array or ArrayAccess.
-     */
-    public static function history(&$container)
-    {
-        if (!is_array($container) && !$container instanceof \ArrayAccess) {
-            throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess');
-        }
-
-        return function (callable $handler) use (&$container) {
-            return function ($request, array $options) use ($handler, &$container) {
-                return $handler($request, $options)->then(
-                    function ($value) use ($request, &$container, $options) {
-                        $container[] = [
-                            'request'  => $request,
-                            'response' => $value,
-                            'error'    => null,
-                            'options'  => $options
-                        ];
-                        return $value;
-                    },
-                    function ($reason) use ($request, &$container, $options) {
-                        $container[] = [
-                            'request'  => $request,
-                            'response' => null,
-                            'error'    => $reason,
-                            'options'  => $options
-                        ];
-                        return \GuzzleHttp\Promise\rejection_for($reason);
-                    }
-                );
-            };
-        };
-    }
-
-    /**
-     * Middleware that invokes a callback before and after sending a request.
-     *
-     * The provided listener cannot modify or alter the response. It simply
-     * "taps" into the chain to be notified before returning the promise. The
-     * before listener accepts a request and options array, and the after
-     * listener accepts a request, options array, and response promise.
-     *
-     * @param callable $before Function to invoke before forwarding the request.
-     * @param callable $after  Function invoked after forwarding.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function tap(callable $before = null, callable $after = null)
-    {
-        return function (callable $handler) use ($before, $after) {
-            return function ($request, array $options) use ($handler, $before, $after) {
-                if ($before) {
-                    $before($request, $options);
-                }
-                $response = $handler($request, $options);
-                if ($after) {
-                    $after($request, $options, $response);
-                }
-                return $response;
-            };
-        };
-    }
-
-    /**
-     * Middleware that handles request redirects.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function redirect()
-    {
-        return function (callable $handler) {
-            return new RedirectMiddleware($handler);
-        };
-    }
-
-    /**
-     * Middleware that retries requests based on the boolean result of
-     * invoking the provided "decider" function.
-     *
-     * If no delay function is provided, a simple implementation of exponential
-     * backoff will be utilized.
-     *
-     * @param callable $decider Function that accepts the number of retries,
-     *                          a request, [response], and [exception] and
-     *                          returns true if the request is to be retried.
-     * @param callable $delay   Function that accepts the number of retries and
-     *                          returns the number of milliseconds to delay.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function retry(callable $decider, callable $delay = null)
-    {
-        return function (callable $handler) use ($decider, $delay) {
-            return new RetryMiddleware($decider, $handler, $delay);
-        };
-    }
-
-    /**
-     * Middleware that logs requests, responses, and errors using a message
-     * formatter.
-     *
-     * @param LoggerInterface  $logger Logs messages.
-     * @param MessageFormatter $formatter Formatter used to create message strings.
-     * @param string           $logLevel Level at which to log requests.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = 'info' /* \Psr\Log\LogLevel::INFO */)
-    {
-        return function (callable $handler) use ($logger, $formatter, $logLevel) {
-            return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) {
-                return $handler($request, $options)->then(
-                    function ($response) use ($logger, $request, $formatter, $logLevel) {
-                        $message = $formatter->format($request, $response);
-                        $logger->log($logLevel, $message);
-                        return $response;
-                    },
-                    function ($reason) use ($logger, $request, $formatter) {
-                        $response = $reason instanceof RequestException
-                            ? $reason->getResponse()
-                            : null;
-                        $message = $formatter->format($request, $response, $reason);
-                        $logger->notice($message);
-                        return \GuzzleHttp\Promise\rejection_for($reason);
-                    }
-                );
-            };
-        };
-    }
-
-    /**
-     * This middleware adds a default content-type if possible, a default
-     * content-length or transfer-encoding header, and the expect header.
-     *
-     * @return callable
-     */
-    public static function prepareBody()
-    {
-        return function (callable $handler) {
-            return new PrepareBodyMiddleware($handler);
-        };
-    }
-
-    /**
-     * Middleware that applies a map function to the request before passing to
-     * the next handler.
-     *
-     * @param callable $fn Function that accepts a RequestInterface and returns
-     *                     a RequestInterface.
-     * @return callable
-     */
-    public static function mapRequest(callable $fn)
-    {
-        return function (callable $handler) use ($fn) {
-            return function ($request, array $options) use ($handler, $fn) {
-                return $handler($fn($request), $options);
-            };
-        };
-    }
-
-    /**
-     * Middleware that applies a map function to the resolved promise's
-     * response.
-     *
-     * @param callable $fn Function that accepts a ResponseInterface and
-     *                     returns a ResponseInterface.
-     * @return callable
-     */
-    public static function mapResponse(callable $fn)
-    {
-        return function (callable $handler) use ($fn) {
-            return function ($request, array $options) use ($handler, $fn) {
-                return $handler($request, $options)->then($fn);
-            };
-        };
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Pool.php b/vendor/guzzlehttp/guzzle/src/Pool.php
deleted file mode 100644
index 5838db4f4cf9a7e3596891a8dcf8c80ad5eef3ed..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Pool.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\EachPromise;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\PromisorInterface;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Sends an iterator of requests concurrently using a capped pool size.
- *
- * The pool will read from an iterator until it is cancelled or until the
- * iterator is consumed. When a request is yielded, the request is sent after
- * applying the "request_options" request options (if provided in the ctor).
- *
- * When a function is yielded by the iterator, the function is provided the
- * "request_options" array that should be merged on top of any existing
- * options, and the function MUST then return a wait-able promise.
- */
-class Pool implements PromisorInterface
-{
-    /** @var EachPromise */
-    private $each;
-
-    /**
-     * @param ClientInterface $client   Client used to send the requests.
-     * @param array|\Iterator $requests Requests or functions that return
-     *                                  requests to send concurrently.
-     * @param array           $config   Associative array of options
-     *     - concurrency: (int) Maximum number of requests to send concurrently
-     *     - options: Array of request options to apply to each request.
-     *     - fulfilled: (callable) Function to invoke when a request completes.
-     *     - rejected: (callable) Function to invoke when a request is rejected.
-     */
-    public function __construct(
-        ClientInterface $client,
-        $requests,
-        array $config = []
-    ) {
-        // Backwards compatibility.
-        if (isset($config['pool_size'])) {
-            $config['concurrency'] = $config['pool_size'];
-        } elseif (!isset($config['concurrency'])) {
-            $config['concurrency'] = 25;
-        }
-
-        if (isset($config['options'])) {
-            $opts = $config['options'];
-            unset($config['options']);
-        } else {
-            $opts = [];
-        }
-
-        $iterable = \GuzzleHttp\Promise\iter_for($requests);
-        $requests = function () use ($iterable, $client, $opts) {
-            foreach ($iterable as $key => $rfn) {
-                if ($rfn instanceof RequestInterface) {
-                    yield $key => $client->sendAsync($rfn, $opts);
-                } elseif (is_callable($rfn)) {
-                    yield $key => $rfn($opts);
-                } else {
-                    throw new \InvalidArgumentException('Each value yielded by '
-                        . 'the iterator must be a Psr7\Http\Message\RequestInterface '
-                        . 'or a callable that returns a promise that fulfills '
-                        . 'with a Psr7\Message\Http\ResponseInterface object.');
-                }
-            }
-        };
-
-        $this->each = new EachPromise($requests(), $config);
-    }
-
-    /**
-     * Get promise
-     *
-     * @return PromiseInterface
-     */
-    public function promise()
-    {
-        return $this->each->promise();
-    }
-
-    /**
-     * Sends multiple requests concurrently and returns an array of responses
-     * and exceptions that uses the same ordering as the provided requests.
-     *
-     * IMPORTANT: This method keeps every request and response in memory, and
-     * as such, is NOT recommended when sending a large number or an
-     * indeterminate number of requests concurrently.
-     *
-     * @param ClientInterface $client   Client used to send the requests
-     * @param array|\Iterator $requests Requests to send concurrently.
-     * @param array           $options  Passes through the options available in
-     *                                  {@see GuzzleHttp\Pool::__construct}
-     *
-     * @return array Returns an array containing the response or an exception
-     *               in the same order that the requests were sent.
-     * @throws \InvalidArgumentException if the event format is incorrect.
-     */
-    public static function batch(
-        ClientInterface $client,
-        $requests,
-        array $options = []
-    ) {
-        $res = [];
-        self::cmpCallback($options, 'fulfilled', $res);
-        self::cmpCallback($options, 'rejected', $res);
-        $pool = new static($client, $requests, $options);
-        $pool->promise()->wait();
-        ksort($res);
-
-        return $res;
-    }
-
-    /**
-     * Execute callback(s)
-     *
-     * @return void
-     */
-    private static function cmpCallback(array &$options, $name, array &$results)
-    {
-        if (!isset($options[$name])) {
-            $options[$name] = function ($v, $k) use (&$results) {
-                $results[$k] = $v;
-            };
-        } else {
-            $currentFn = $options[$name];
-            $options[$name] = function ($v, $k) use (&$results, $currentFn) {
-                $currentFn($v, $k);
-                $results[$k] = $v;
-            };
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
deleted file mode 100644
index 568a1e906c97071c5d7220439278fc9aaf4058f2..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Prepares requests that contain a body, adding the Content-Length,
- * Content-Type, and Expect headers.
- */
-class PrepareBodyMiddleware
-{
-    /** @var callable  */
-    private $nextHandler;
-
-    /**
-     * @param callable $nextHandler Next handler to invoke.
-     */
-    public function __construct(callable $nextHandler)
-    {
-        $this->nextHandler = $nextHandler;
-    }
-
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        $fn = $this->nextHandler;
-
-        // Don't do anything if the request has no body.
-        if ($request->getBody()->getSize() === 0) {
-            return $fn($request, $options);
-        }
-
-        $modify = [];
-
-        // Add a default content-type if possible.
-        if (!$request->hasHeader('Content-Type')) {
-            if ($uri = $request->getBody()->getMetadata('uri')) {
-                if ($type = Psr7\mimetype_from_filename($uri)) {
-                    $modify['set_headers']['Content-Type'] = $type;
-                }
-            }
-        }
-
-        // Add a default content-length or transfer-encoding header.
-        if (!$request->hasHeader('Content-Length')
-            && !$request->hasHeader('Transfer-Encoding')
-        ) {
-            $size = $request->getBody()->getSize();
-            if ($size !== null) {
-                $modify['set_headers']['Content-Length'] = $size;
-            } else {
-                $modify['set_headers']['Transfer-Encoding'] = 'chunked';
-            }
-        }
-
-        // Add the expect header if needed.
-        $this->addExpectHeader($request, $options, $modify);
-
-        return $fn(Psr7\modify_request($request, $modify), $options);
-    }
-
-    /**
-     * Add expect header
-     *
-     * @return void
-     */
-    private function addExpectHeader(
-        RequestInterface $request,
-        array $options,
-        array &$modify
-    ) {
-        // Determine if the Expect header should be used
-        if ($request->hasHeader('Expect')) {
-            return;
-        }
-
-        $expect = isset($options['expect']) ? $options['expect'] : null;
-
-        // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0
-        if ($expect === false || $request->getProtocolVersion() < 1.1) {
-            return;
-        }
-
-        // The expect header is unconditionally enabled
-        if ($expect === true) {
-            $modify['set_headers']['Expect'] = '100-Continue';
-            return;
-        }
-
-        // By default, send the expect header when the payload is > 1mb
-        if ($expect === null) {
-            $expect = 1048576;
-        }
-
-        // Always add if the body cannot be rewound, the size cannot be
-        // determined, or the size is greater than the cutoff threshold
-        $body = $request->getBody();
-        $size = $body->getSize();
-
-        if ($size === null || $size >= (int) $expect || !$body->isSeekable()) {
-            $modify['set_headers']['Expect'] = '100-Continue';
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
deleted file mode 100644
index e4644b7ac1d9dcf44cf31d1bf4f13742da3990ab..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
+++ /dev/null
@@ -1,255 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Exception\BadResponseException;
-use GuzzleHttp\Exception\TooManyRedirectsException;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Request redirect middleware.
- *
- * Apply this middleware like other middleware using
- * {@see \GuzzleHttp\Middleware::redirect()}.
- */
-class RedirectMiddleware
-{
-    const HISTORY_HEADER = 'X-Guzzle-Redirect-History';
-
-    const STATUS_HISTORY_HEADER = 'X-Guzzle-Redirect-Status-History';
-
-    public static $defaultSettings = [
-        'max'             => 5,
-        'protocols'       => ['http', 'https'],
-        'strict'          => false,
-        'referer'         => false,
-        'track_redirects' => false,
-    ];
-
-    /** @var callable  */
-    private $nextHandler;
-
-    /**
-     * @param callable $nextHandler Next handler to invoke.
-     */
-    public function __construct(callable $nextHandler)
-    {
-        $this->nextHandler = $nextHandler;
-    }
-
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        $fn = $this->nextHandler;
-
-        if (empty($options['allow_redirects'])) {
-            return $fn($request, $options);
-        }
-
-        if ($options['allow_redirects'] === true) {
-            $options['allow_redirects'] = self::$defaultSettings;
-        } elseif (!is_array($options['allow_redirects'])) {
-            throw new \InvalidArgumentException('allow_redirects must be true, false, or array');
-        } else {
-            // Merge the default settings with the provided settings
-            $options['allow_redirects'] += self::$defaultSettings;
-        }
-
-        if (empty($options['allow_redirects']['max'])) {
-            return $fn($request, $options);
-        }
-
-        return $fn($request, $options)
-            ->then(function (ResponseInterface $response) use ($request, $options) {
-                return $this->checkRedirect($request, $options, $response);
-            });
-    }
-
-    /**
-     * @param RequestInterface  $request
-     * @param array             $options
-     * @param ResponseInterface $response
-     *
-     * @return ResponseInterface|PromiseInterface
-     */
-    public function checkRedirect(
-        RequestInterface $request,
-        array $options,
-        ResponseInterface $response
-    ) {
-        if (substr($response->getStatusCode(), 0, 1) != '3'
-            || !$response->hasHeader('Location')
-        ) {
-            return $response;
-        }
-
-        $this->guardMax($request, $options);
-        $nextRequest = $this->modifyRequest($request, $options, $response);
-
-        if (isset($options['allow_redirects']['on_redirect'])) {
-            call_user_func(
-                $options['allow_redirects']['on_redirect'],
-                $request,
-                $response,
-                $nextRequest->getUri()
-            );
-        }
-
-        /** @var PromiseInterface|ResponseInterface $promise */
-        $promise = $this($nextRequest, $options);
-
-        // Add headers to be able to track history of redirects.
-        if (!empty($options['allow_redirects']['track_redirects'])) {
-            return $this->withTracking(
-                $promise,
-                (string) $nextRequest->getUri(),
-                $response->getStatusCode()
-            );
-        }
-
-        return $promise;
-    }
-
-    /**
-     * Enable tracking on promise.
-     *
-     * @return PromiseInterface
-     */
-    private function withTracking(PromiseInterface $promise, $uri, $statusCode)
-    {
-        return $promise->then(
-            function (ResponseInterface $response) use ($uri, $statusCode) {
-                // Note that we are pushing to the front of the list as this
-                // would be an earlier response than what is currently present
-                // in the history header.
-                $historyHeader = $response->getHeader(self::HISTORY_HEADER);
-                $statusHeader = $response->getHeader(self::STATUS_HISTORY_HEADER);
-                array_unshift($historyHeader, $uri);
-                array_unshift($statusHeader, $statusCode);
-                return $response->withHeader(self::HISTORY_HEADER, $historyHeader)
-                                ->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader);
-            }
-        );
-    }
-
-    /**
-     * Check for too many redirects
-     *
-     * @return void
-     *
-     * @throws TooManyRedirectsException Too many redirects.
-     */
-    private function guardMax(RequestInterface $request, array &$options)
-    {
-        $current = isset($options['__redirect_count'])
-            ? $options['__redirect_count']
-            : 0;
-        $options['__redirect_count'] = $current + 1;
-        $max = $options['allow_redirects']['max'];
-
-        if ($options['__redirect_count'] > $max) {
-            throw new TooManyRedirectsException(
-                "Will not follow more than {$max} redirects",
-                $request
-            );
-        }
-    }
-
-    /**
-     * @param RequestInterface  $request
-     * @param array             $options
-     * @param ResponseInterface $response
-     *
-     * @return RequestInterface
-     */
-    public function modifyRequest(
-        RequestInterface $request,
-        array $options,
-        ResponseInterface $response
-    ) {
-        // Request modifications to apply.
-        $modify = [];
-        $protocols = $options['allow_redirects']['protocols'];
-
-        // Use a GET request if this is an entity enclosing request and we are
-        // not forcing RFC compliance, but rather emulating what all browsers
-        // would do.
-        $statusCode = $response->getStatusCode();
-        if ($statusCode == 303 ||
-            ($statusCode <= 302 && !$options['allow_redirects']['strict'])
-        ) {
-            $modify['method'] = 'GET';
-            $modify['body'] = '';
-        }
-
-        $uri = $this->redirectUri($request, $response, $protocols);
-        if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
-            $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
-            $uri = Utils::idnUriConvert($uri, $idnOptions);
-        }
-
-        $modify['uri'] = $uri;
-        Psr7\rewind_body($request);
-
-        // Add the Referer header if it is told to do so and only
-        // add the header if we are not redirecting from https to http.
-        if ($options['allow_redirects']['referer']
-            && $modify['uri']->getScheme() === $request->getUri()->getScheme()
-        ) {
-            $uri = $request->getUri()->withUserInfo('');
-            $modify['set_headers']['Referer'] = (string) $uri;
-        } else {
-            $modify['remove_headers'][] = 'Referer';
-        }
-
-        // Remove Authorization header if host is different.
-        if ($request->getUri()->getHost() !== $modify['uri']->getHost()) {
-            $modify['remove_headers'][] = 'Authorization';
-        }
-
-        return Psr7\modify_request($request, $modify);
-    }
-
-    /**
-     * Set the appropriate URL on the request based on the location header
-     *
-     * @param RequestInterface  $request
-     * @param ResponseInterface $response
-     * @param array             $protocols
-     *
-     * @return UriInterface
-     */
-    private function redirectUri(
-        RequestInterface $request,
-        ResponseInterface $response,
-        array $protocols
-    ) {
-        $location = Psr7\UriResolver::resolve(
-            $request->getUri(),
-            new Psr7\Uri($response->getHeaderLine('Location'))
-        );
-
-        // Ensure that the redirect URI is allowed based on the protocols.
-        if (!in_array($location->getScheme(), $protocols)) {
-            throw new BadResponseException(
-                sprintf(
-                    'Redirect URI, %s, does not use one of the allowed redirect protocols: %s',
-                    $location,
-                    implode(', ', $protocols)
-                ),
-                $request,
-                $response
-            );
-        }
-
-        return $location;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/vendor/guzzlehttp/guzzle/src/RequestOptions.php
deleted file mode 100644
index 355f658f03457e48a615ec368a4fc6d31b83f1ad..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/RequestOptions.php
+++ /dev/null
@@ -1,263 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-/**
- * This class contains a list of built-in Guzzle request options.
- *
- * More documentation for each option can be found at http://guzzlephp.org/.
- *
- * @link http://docs.guzzlephp.org/en/v6/request-options.html
- */
-final class RequestOptions
-{
-    /**
-     * allow_redirects: (bool|array) Controls redirect behavior. Pass false
-     * to disable redirects, pass true to enable redirects, pass an
-     * associative to provide custom redirect settings. Defaults to "false".
-     * This option only works if your handler has the RedirectMiddleware. When
-     * passing an associative array, you can provide the following key value
-     * pairs:
-     *
-     * - max: (int, default=5) maximum number of allowed redirects.
-     * - strict: (bool, default=false) Set to true to use strict redirects
-     *   meaning redirect POST requests with POST requests vs. doing what most
-     *   browsers do which is redirect POST requests with GET requests
-     * - referer: (bool, default=false) Set to true to enable the Referer
-     *   header.
-     * - protocols: (array, default=['http', 'https']) Allowed redirect
-     *   protocols.
-     * - on_redirect: (callable) PHP callable that is invoked when a redirect
-     *   is encountered. The callable is invoked with the request, the redirect
-     *   response that was received, and the effective URI. Any return value
-     *   from the on_redirect function is ignored.
-     */
-    const ALLOW_REDIRECTS = 'allow_redirects';
-
-    /**
-     * auth: (array) Pass an array of HTTP authentication parameters to use
-     * with the request. The array must contain the username in index [0],
-     * the password in index [1], and you can optionally provide a built-in
-     * authentication type in index [2]. Pass null to disable authentication
-     * for a request.
-     */
-    const AUTH = 'auth';
-
-    /**
-     * body: (resource|string|null|int|float|StreamInterface|callable|\Iterator)
-     * Body to send in the request.
-     */
-    const BODY = 'body';
-
-    /**
-     * cert: (string|array) Set to a string to specify the path to a file
-     * containing a PEM formatted SSL client side certificate. If a password
-     * is required, then set cert to an array containing the path to the PEM
-     * file in the first array element followed by the certificate password
-     * in the second array element.
-     */
-    const CERT = 'cert';
-
-    /**
-     * cookies: (bool|GuzzleHttp\Cookie\CookieJarInterface, default=false)
-     * Specifies whether or not cookies are used in a request or what cookie
-     * jar to use or what cookies to send. This option only works if your
-     * handler has the `cookie` middleware. Valid values are `false` and
-     * an instance of {@see GuzzleHttp\Cookie\CookieJarInterface}.
-     */
-    const COOKIES = 'cookies';
-
-    /**
-     * connect_timeout: (float, default=0) Float describing the number of
-     * seconds to wait while trying to connect to a server. Use 0 to wait
-     * indefinitely (the default behavior).
-     */
-    const CONNECT_TIMEOUT = 'connect_timeout';
-
-    /**
-     * debug: (bool|resource) Set to true or set to a PHP stream returned by
-     * fopen()  enable debug output with the HTTP handler used to send a
-     * request.
-     */
-    const DEBUG = 'debug';
-
-    /**
-     * decode_content: (bool, default=true) Specify whether or not
-     * Content-Encoding responses (gzip, deflate, etc.) are automatically
-     * decoded.
-     */
-    const DECODE_CONTENT = 'decode_content';
-
-    /**
-     * delay: (int) The amount of time to delay before sending in milliseconds.
-     */
-    const DELAY = 'delay';
-
-    /**
-     * expect: (bool|integer) Controls the behavior of the
-     * "Expect: 100-Continue" header.
-     *
-     * Set to `true` to enable the "Expect: 100-Continue" header for all
-     * requests that sends a body. Set to `false` to disable the
-     * "Expect: 100-Continue" header for all requests. Set to a number so that
-     * the size of the payload must be greater than the number in order to send
-     * the Expect header. Setting to a number will send the Expect header for
-     * all requests in which the size of the payload cannot be determined or
-     * where the body is not rewindable.
-     *
-     * By default, Guzzle will add the "Expect: 100-Continue" header when the
-     * size of the body of a request is greater than 1 MB and a request is
-     * using HTTP/1.1.
-     */
-    const EXPECT = 'expect';
-
-    /**
-     * form_params: (array) Associative array of form field names to values
-     * where each value is a string or array of strings. Sets the Content-Type
-     * header to application/x-www-form-urlencoded when no Content-Type header
-     * is already present.
-     */
-    const FORM_PARAMS = 'form_params';
-
-    /**
-     * headers: (array) Associative array of HTTP headers. Each value MUST be
-     * a string or array of strings.
-     */
-    const HEADERS = 'headers';
-
-    /**
-     * http_errors: (bool, default=true) Set to false to disable exceptions
-     * when a non- successful HTTP response is received. By default,
-     * exceptions will be thrown for 4xx and 5xx responses. This option only
-     * works if your handler has the `httpErrors` middleware.
-     */
-    const HTTP_ERRORS = 'http_errors';
-
-    /**
-     * idn: (bool|int, default=true) A combination of IDNA_* constants for
-     * idn_to_ascii() PHP's function (see "options" parameter). Set to false to
-     * disable IDN support completely, or to true to use the default
-     * configuration (IDNA_DEFAULT constant).
-     */
-    const IDN_CONVERSION = 'idn_conversion';
-
-    /**
-     * json: (mixed) Adds JSON data to a request. The provided value is JSON
-     * encoded and a Content-Type header of application/json will be added to
-     * the request if no Content-Type header is already present.
-     */
-    const JSON = 'json';
-
-    /**
-     * multipart: (array) Array of associative arrays, each containing a
-     * required "name" key mapping to the form field, name, a required
-     * "contents" key mapping to a StreamInterface|resource|string, an
-     * optional "headers" associative array of custom headers, and an
-     * optional "filename" key mapping to a string to send as the filename in
-     * the part. If no "filename" key is present, then no "filename" attribute
-     * will be added to the part.
-     */
-    const MULTIPART = 'multipart';
-
-    /**
-     * on_headers: (callable) A callable that is invoked when the HTTP headers
-     * of the response have been received but the body has not yet begun to
-     * download.
-     */
-    const ON_HEADERS = 'on_headers';
-
-    /**
-     * on_stats: (callable) allows you to get access to transfer statistics of
-     * a request and access the lower level transfer details of the handler
-     * associated with your client. ``on_stats`` is a callable that is invoked
-     * when a handler has finished sending a request. The callback is invoked
-     * with transfer statistics about the request, the response received, or
-     * the error encountered. Included in the data is the total amount of time
-     * taken to send the request.
-     */
-    const ON_STATS = 'on_stats';
-
-    /**
-     * progress: (callable) Defines a function to invoke when transfer
-     * progress is made. The function accepts the following positional
-     * arguments: the total number of bytes expected to be downloaded, the
-     * number of bytes downloaded so far, the number of bytes expected to be
-     * uploaded, the number of bytes uploaded so far.
-     */
-    const PROGRESS = 'progress';
-
-    /**
-     * proxy: (string|array) Pass a string to specify an HTTP proxy, or an
-     * array to specify different proxies for different protocols (where the
-     * key is the protocol and the value is a proxy string).
-     */
-    const PROXY = 'proxy';
-
-    /**
-     * query: (array|string) Associative array of query string values to add
-     * to the request. This option uses PHP's http_build_query() to create
-     * the string representation. Pass a string value if you need more
-     * control than what this method provides
-     */
-    const QUERY = 'query';
-
-    /**
-     * sink: (resource|string|StreamInterface) Where the data of the
-     * response is written to. Defaults to a PHP temp stream. Providing a
-     * string will write data to a file by the given name.
-     */
-    const SINK = 'sink';
-
-    /**
-     * synchronous: (bool) Set to true to inform HTTP handlers that you intend
-     * on waiting on the response. This can be useful for optimizations. Note
-     * that a promise is still returned if you are using one of the async
-     * client methods.
-     */
-    const SYNCHRONOUS = 'synchronous';
-
-    /**
-     * ssl_key: (array|string) Specify the path to a file containing a private
-     * SSL key in PEM format. If a password is required, then set to an array
-     * containing the path to the SSL key in the first array element followed
-     * by the password required for the certificate in the second element.
-     */
-    const SSL_KEY = 'ssl_key';
-
-    /**
-     * stream: Set to true to attempt to stream a response rather than
-     * download it all up-front.
-     */
-    const STREAM = 'stream';
-
-    /**
-     * verify: (bool|string, default=true) Describes the SSL certificate
-     * verification behavior of a request. Set to true to enable SSL
-     * certificate verification using the system CA bundle when available
-     * (the default). Set to false to disable certificate verification (this
-     * is insecure!). Set to a string to provide the path to a CA bundle on
-     * disk to enable verification using a custom certificate.
-     */
-    const VERIFY = 'verify';
-
-    /**
-     * timeout: (float, default=0) Float describing the timeout of the
-     * request in seconds. Use 0 to wait indefinitely (the default behavior).
-     */
-    const TIMEOUT = 'timeout';
-
-    /**
-     * read_timeout: (float, default=default_socket_timeout ini setting) Float describing
-     * the body read timeout, for stream requests.
-     */
-    const READ_TIMEOUT = 'read_timeout';
-
-    /**
-     * version: (float) Specifies the HTTP protocol version to attempt to use.
-     */
-    const VERSION = 'version';
-
-    /**
-     * force_ip_resolve: (bool) Force client to use only ipv4 or ipv6 protocol
-     */
-    const FORCE_IP_RESOLVE = 'force_ip_resolve';
-}
diff --git a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php b/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
deleted file mode 100644
index 5acc8c5c392eb717c00d0fc5643dacaf670b9149..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Middleware that retries requests based on the boolean result of
- * invoking the provided "decider" function.
- */
-class RetryMiddleware
-{
-    /** @var callable  */
-    private $nextHandler;
-
-    /** @var callable */
-    private $decider;
-
-    /** @var callable */
-    private $delay;
-
-    /**
-     * @param callable $decider     Function that accepts the number of retries,
-     *                              a request, [response], and [exception] and
-     *                              returns true if the request is to be
-     *                              retried.
-     * @param callable $nextHandler Next handler to invoke.
-     * @param callable $delay       Function that accepts the number of retries
-     *                              and [response] and returns the number of
-     *                              milliseconds to delay.
-     */
-    public function __construct(
-        callable $decider,
-        callable $nextHandler,
-        callable $delay = null
-    ) {
-        $this->decider = $decider;
-        $this->nextHandler = $nextHandler;
-        $this->delay = $delay ?: __CLASS__ . '::exponentialDelay';
-    }
-
-    /**
-     * Default exponential backoff delay function.
-     *
-     * @param int $retries
-     *
-     * @return int milliseconds.
-     */
-    public static function exponentialDelay($retries)
-    {
-        return (int) pow(2, $retries - 1) * 1000;
-    }
-
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        if (!isset($options['retries'])) {
-            $options['retries'] = 0;
-        }
-
-        $fn = $this->nextHandler;
-        return $fn($request, $options)
-            ->then(
-                $this->onFulfilled($request, $options),
-                $this->onRejected($request, $options)
-            );
-    }
-
-    /**
-     * Execute fulfilled closure
-     *
-     * @return mixed
-     */
-    private function onFulfilled(RequestInterface $req, array $options)
-    {
-        return function ($value) use ($req, $options) {
-            if (!call_user_func(
-                $this->decider,
-                $options['retries'],
-                $req,
-                $value,
-                null
-            )) {
-                return $value;
-            }
-            return $this->doRetry($req, $options, $value);
-        };
-    }
-
-    /**
-     * Execute rejected closure
-     *
-     * @return callable
-     */
-    private function onRejected(RequestInterface $req, array $options)
-    {
-        return function ($reason) use ($req, $options) {
-            if (!call_user_func(
-                $this->decider,
-                $options['retries'],
-                $req,
-                null,
-                $reason
-            )) {
-                return \GuzzleHttp\Promise\rejection_for($reason);
-            }
-            return $this->doRetry($req, $options);
-        };
-    }
-
-    /**
-     * @return self
-     */
-    private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null)
-    {
-        $options['delay'] = call_user_func($this->delay, ++$options['retries'], $response);
-
-        return $this($request, $options);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/TransferStats.php b/vendor/guzzlehttp/guzzle/src/TransferStats.php
deleted file mode 100644
index 87fb3c00164d274d9b5cec535339bcfb059efc84..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/TransferStats.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Represents data at the point after it was transferred either successfully
- * or after a network error.
- */
-final class TransferStats
-{
-    private $request;
-    private $response;
-    private $transferTime;
-    private $handlerStats;
-    private $handlerErrorData;
-
-    /**
-     * @param RequestInterface       $request          Request that was sent.
-     * @param ResponseInterface|null $response         Response received (if any)
-     * @param float|null             $transferTime     Total handler transfer time.
-     * @param mixed                  $handlerErrorData Handler error data.
-     * @param array                  $handlerStats     Handler specific stats.
-     */
-    public function __construct(
-        RequestInterface $request,
-        ResponseInterface $response = null,
-        $transferTime = null,
-        $handlerErrorData = null,
-        $handlerStats = []
-    ) {
-        $this->request = $request;
-        $this->response = $response;
-        $this->transferTime = $transferTime;
-        $this->handlerErrorData = $handlerErrorData;
-        $this->handlerStats = $handlerStats;
-    }
-
-    /**
-     * @return RequestInterface
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-
-    /**
-     * Returns the response that was received (if any).
-     *
-     * @return ResponseInterface|null
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-
-    /**
-     * Returns true if a response was received.
-     *
-     * @return bool
-     */
-    public function hasResponse()
-    {
-        return $this->response !== null;
-    }
-
-    /**
-     * Gets handler specific error data.
-     *
-     * This might be an exception, a integer representing an error code, or
-     * anything else. Relying on this value assumes that you know what handler
-     * you are using.
-     *
-     * @return mixed
-     */
-    public function getHandlerErrorData()
-    {
-        return $this->handlerErrorData;
-    }
-
-    /**
-     * Get the effective URI the request was sent to.
-     *
-     * @return UriInterface
-     */
-    public function getEffectiveUri()
-    {
-        return $this->request->getUri();
-    }
-
-    /**
-     * Get the estimated time the request was being transferred by the handler.
-     *
-     * @return float|null Time in seconds.
-     */
-    public function getTransferTime()
-    {
-        return $this->transferTime;
-    }
-
-    /**
-     * Gets an array of all of the handler specific transfer data.
-     *
-     * @return array
-     */
-    public function getHandlerStats()
-    {
-        return $this->handlerStats;
-    }
-
-    /**
-     * Get a specific handler statistic from the handler by name.
-     *
-     * @param string $stat Handler specific transfer stat to retrieve.
-     *
-     * @return mixed|null
-     */
-    public function getHandlerStat($stat)
-    {
-        return isset($this->handlerStats[$stat])
-            ? $this->handlerStats[$stat]
-            : null;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/UriTemplate.php b/vendor/guzzlehttp/guzzle/src/UriTemplate.php
deleted file mode 100644
index 96dcfd09cd71fb4a2c40b38445faee78568ba0cc..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/UriTemplate.php
+++ /dev/null
@@ -1,237 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-/**
- * Expands URI templates. Userland implementation of PECL uri_template.
- *
- * @link http://tools.ietf.org/html/rfc6570
- */
-class UriTemplate
-{
-    /** @var string URI template */
-    private $template;
-
-    /** @var array Variables to use in the template expansion */
-    private $variables;
-
-    /** @var array Hash for quick operator lookups */
-    private static $operatorHash = [
-        ''  => ['prefix' => '',  'joiner' => ',', 'query' => false],
-        '+' => ['prefix' => '',  'joiner' => ',', 'query' => false],
-        '#' => ['prefix' => '#', 'joiner' => ',', 'query' => false],
-        '.' => ['prefix' => '.', 'joiner' => '.', 'query' => false],
-        '/' => ['prefix' => '/', 'joiner' => '/', 'query' => false],
-        ';' => ['prefix' => ';', 'joiner' => ';', 'query' => true],
-        '?' => ['prefix' => '?', 'joiner' => '&', 'query' => true],
-        '&' => ['prefix' => '&', 'joiner' => '&', 'query' => true]
-    ];
-
-    /** @var array Delimiters */
-    private static $delims = [':', '/', '?', '#', '[', ']', '@', '!', '$',
-        '&', '\'', '(', ')', '*', '+', ',', ';', '='];
-
-    /** @var array Percent encoded delimiters */
-    private static $delimsPct = ['%3A', '%2F', '%3F', '%23', '%5B', '%5D',
-        '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C',
-        '%3B', '%3D'];
-
-    public function expand($template, array $variables)
-    {
-        if (false === strpos($template, '{')) {
-            return $template;
-        }
-
-        $this->template = $template;
-        $this->variables = $variables;
-
-        return preg_replace_callback(
-            '/\{([^\}]+)\}/',
-            [$this, 'expandMatch'],
-            $this->template
-        );
-    }
-
-    /**
-     * Parse an expression into parts
-     *
-     * @param string $expression Expression to parse
-     *
-     * @return array Returns an associative array of parts
-     */
-    private function parseExpression($expression)
-    {
-        $result = [];
-
-        if (isset(self::$operatorHash[$expression[0]])) {
-            $result['operator'] = $expression[0];
-            $expression = substr($expression, 1);
-        } else {
-            $result['operator'] = '';
-        }
-
-        foreach (explode(',', $expression) as $value) {
-            $value = trim($value);
-            $varspec = [];
-            if ($colonPos = strpos($value, ':')) {
-                $varspec['value'] = substr($value, 0, $colonPos);
-                $varspec['modifier'] = ':';
-                $varspec['position'] = (int) substr($value, $colonPos + 1);
-            } elseif (substr($value, -1) === '*') {
-                $varspec['modifier'] = '*';
-                $varspec['value'] = substr($value, 0, -1);
-            } else {
-                $varspec['value'] = (string) $value;
-                $varspec['modifier'] = '';
-            }
-            $result['values'][] = $varspec;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Process an expansion
-     *
-     * @param array $matches Matches met in the preg_replace_callback
-     *
-     * @return string Returns the replacement string
-     */
-    private function expandMatch(array $matches)
-    {
-        static $rfc1738to3986 = ['+' => '%20', '%7e' => '~'];
-
-        $replacements = [];
-        $parsed = self::parseExpression($matches[1]);
-        $prefix = self::$operatorHash[$parsed['operator']]['prefix'];
-        $joiner = self::$operatorHash[$parsed['operator']]['joiner'];
-        $useQuery = self::$operatorHash[$parsed['operator']]['query'];
-
-        foreach ($parsed['values'] as $value) {
-            if (!isset($this->variables[$value['value']])) {
-                continue;
-            }
-
-            $variable = $this->variables[$value['value']];
-            $actuallyUseQuery = $useQuery;
-            $expanded = '';
-
-            if (is_array($variable)) {
-                $isAssoc = $this->isAssoc($variable);
-                $kvp = [];
-                foreach ($variable as $key => $var) {
-                    if ($isAssoc) {
-                        $key = rawurlencode($key);
-                        $isNestedArray = is_array($var);
-                    } else {
-                        $isNestedArray = false;
-                    }
-
-                    if (!$isNestedArray) {
-                        $var = rawurlencode($var);
-                        if ($parsed['operator'] === '+' ||
-                            $parsed['operator'] === '#'
-                        ) {
-                            $var = $this->decodeReserved($var);
-                        }
-                    }
-
-                    if ($value['modifier'] === '*') {
-                        if ($isAssoc) {
-                            if ($isNestedArray) {
-                                // Nested arrays must allow for deeply nested
-                                // structures.
-                                $var = strtr(
-                                    http_build_query([$key => $var]),
-                                    $rfc1738to3986
-                                );
-                            } else {
-                                $var = $key . '=' . $var;
-                            }
-                        } elseif ($key > 0 && $actuallyUseQuery) {
-                            $var = $value['value'] . '=' . $var;
-                        }
-                    }
-
-                    $kvp[$key] = $var;
-                }
-
-                if (empty($variable)) {
-                    $actuallyUseQuery = false;
-                } elseif ($value['modifier'] === '*') {
-                    $expanded = implode($joiner, $kvp);
-                    if ($isAssoc) {
-                        // Don't prepend the value name when using the explode
-                        // modifier with an associative array.
-                        $actuallyUseQuery = false;
-                    }
-                } else {
-                    if ($isAssoc) {
-                        // When an associative array is encountered and the
-                        // explode modifier is not set, then the result must be
-                        // a comma separated list of keys followed by their
-                        // respective values.
-                        foreach ($kvp as $k => &$v) {
-                            $v = $k . ',' . $v;
-                        }
-                    }
-                    $expanded = implode(',', $kvp);
-                }
-            } else {
-                if ($value['modifier'] === ':') {
-                    $variable = substr($variable, 0, $value['position']);
-                }
-                $expanded = rawurlencode($variable);
-                if ($parsed['operator'] === '+' || $parsed['operator'] === '#') {
-                    $expanded = $this->decodeReserved($expanded);
-                }
-            }
-
-            if ($actuallyUseQuery) {
-                if (!$expanded && $joiner !== '&') {
-                    $expanded = $value['value'];
-                } else {
-                    $expanded = $value['value'] . '=' . $expanded;
-                }
-            }
-
-            $replacements[] = $expanded;
-        }
-
-        $ret = implode($joiner, $replacements);
-        if ($ret && $prefix) {
-            return $prefix . $ret;
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Determines if an array is associative.
-     *
-     * This makes the assumption that input arrays are sequences or hashes.
-     * This assumption is a tradeoff for accuracy in favor of speed, but it
-     * should work in almost every case where input is supplied for a URI
-     * template.
-     *
-     * @param array $array Array to check
-     *
-     * @return bool
-     */
-    private function isAssoc(array $array)
-    {
-        return $array && array_keys($array)[0] !== 0;
-    }
-
-    /**
-     * Removes percent encoding on reserved characters (used with + and #
-     * modifiers).
-     *
-     * @param string $string String to fix
-     *
-     * @return string
-     */
-    private function decodeReserved($string)
-    {
-        return str_replace(self::$delimsPct, self::$delims, $string);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Utils.php b/vendor/guzzlehttp/guzzle/src/Utils.php
deleted file mode 100644
index c698acbf02fbebad93d2e8ec014617f37b23360c..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/Utils.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Exception\InvalidArgumentException;
-use Psr\Http\Message\UriInterface;
-use Symfony\Polyfill\Intl\Idn\Idn;
-
-final class Utils
-{
-    /**
-     * Wrapper for the hrtime() or microtime() functions
-     * (depending on the PHP version, one of the two is used)
-     *
-     * @return float|mixed UNIX timestamp
-     *
-     * @internal
-     */
-    public static function currentTime()
-    {
-        return function_exists('hrtime') ? hrtime(true) / 1e9 : microtime(true);
-    }
-
-    /**
-     * @param int $options
-     *
-     * @return UriInterface
-     * @throws InvalidArgumentException
-     *
-     * @internal
-     */
-    public static function idnUriConvert(UriInterface $uri, $options = 0)
-    {
-        if ($uri->getHost()) {
-            $asciiHost = self::idnToAsci($uri->getHost(), $options, $info);
-            if ($asciiHost === false) {
-                $errorBitSet = isset($info['errors']) ? $info['errors'] : 0;
-
-                $errorConstants = array_filter(array_keys(get_defined_constants()), function ($name) {
-                    return substr($name, 0, 11) === 'IDNA_ERROR_';
-                });
-
-                $errors = [];
-                foreach ($errorConstants as $errorConstant) {
-                    if ($errorBitSet & constant($errorConstant)) {
-                        $errors[] = $errorConstant;
-                    }
-                }
-
-                $errorMessage = 'IDN conversion failed';
-                if ($errors) {
-                    $errorMessage .= ' (errors: ' . implode(', ', $errors) . ')';
-                }
-
-                throw new InvalidArgumentException($errorMessage);
-            } else {
-                if ($uri->getHost() !== $asciiHost) {
-                    // Replace URI only if the ASCII version is different
-                    $uri = $uri->withHost($asciiHost);
-                }
-            }
-        }
-
-        return $uri;
-    }
-
-    /**
-     * @param string $domain
-     * @param int    $options
-     * @param array  $info
-     *
-     * @return string|false
-     */
-    private static function idnToAsci($domain, $options, &$info = [])
-    {
-        if (\preg_match('%^[ -~]+$%', $domain) === 1) {
-            return $domain;
-        }
-
-        if (\extension_loaded('intl') && defined('INTL_IDNA_VARIANT_UTS46')) {
-            return \idn_to_ascii($domain, $options, INTL_IDNA_VARIANT_UTS46, $info);
-        }
-
-        /*
-         * The Idn class is marked as @internal. Verify that class and method exists.
-         */
-        if (method_exists(Idn::class, 'idn_to_ascii')) {
-            return Idn::idn_to_ascii($domain, $options, Idn::INTL_IDNA_VARIANT_UTS46, $info);
-        }
-
-        throw new \RuntimeException('ext-intl or symfony/polyfill-intl-idn not loaded or too old');
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/functions.php b/vendor/guzzlehttp/guzzle/src/functions.php
deleted file mode 100644
index c2afd8c7bb19d1fa4e14f02da995348abd1414ab..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/functions.php
+++ /dev/null
@@ -1,334 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Handler\CurlHandler;
-use GuzzleHttp\Handler\CurlMultiHandler;
-use GuzzleHttp\Handler\Proxy;
-use GuzzleHttp\Handler\StreamHandler;
-
-/**
- * Expands a URI template
- *
- * @param string $template  URI template
- * @param array  $variables Template variables
- *
- * @return string
- */
-function uri_template($template, array $variables)
-{
-    if (extension_loaded('uri_template')) {
-        // @codeCoverageIgnoreStart
-        return \uri_template($template, $variables);
-        // @codeCoverageIgnoreEnd
-    }
-
-    static $uriTemplate;
-    if (!$uriTemplate) {
-        $uriTemplate = new UriTemplate();
-    }
-
-    return $uriTemplate->expand($template, $variables);
-}
-
-/**
- * Debug function used to describe the provided value type and class.
- *
- * @param mixed $input
- *
- * @return string Returns a string containing the type of the variable and
- *                if a class is provided, the class name.
- */
-function describe_type($input)
-{
-    switch (gettype($input)) {
-        case 'object':
-            return 'object(' . get_class($input) . ')';
-        case 'array':
-            return 'array(' . count($input) . ')';
-        default:
-            ob_start();
-            var_dump($input);
-            // normalize float vs double
-            return str_replace('double(', 'float(', rtrim(ob_get_clean()));
-    }
-}
-
-/**
- * Parses an array of header lines into an associative array of headers.
- *
- * @param iterable $lines Header lines array of strings in the following
- *                     format: "Name: Value"
- * @return array
- */
-function headers_from_lines($lines)
-{
-    $headers = [];
-
-    foreach ($lines as $line) {
-        $parts = explode(':', $line, 2);
-        $headers[trim($parts[0])][] = isset($parts[1])
-            ? trim($parts[1])
-            : null;
-    }
-
-    return $headers;
-}
-
-/**
- * Returns a debug stream based on the provided variable.
- *
- * @param mixed $value Optional value
- *
- * @return resource
- */
-function debug_resource($value = null)
-{
-    if (is_resource($value)) {
-        return $value;
-    } elseif (defined('STDOUT')) {
-        return STDOUT;
-    }
-
-    return fopen('php://output', 'w');
-}
-
-/**
- * Chooses and creates a default handler to use based on the environment.
- *
- * The returned handler is not wrapped by any default middlewares.
- *
- * @return callable Returns the best handler for the given system.
- * @throws \RuntimeException if no viable Handler is available.
- */
-function choose_handler()
-{
-    $handler = null;
-    if (function_exists('curl_multi_exec') && function_exists('curl_exec')) {
-        $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
-    } elseif (function_exists('curl_exec')) {
-        $handler = new CurlHandler();
-    } elseif (function_exists('curl_multi_exec')) {
-        $handler = new CurlMultiHandler();
-    }
-
-    if (ini_get('allow_url_fopen')) {
-        $handler = $handler
-            ? Proxy::wrapStreaming($handler, new StreamHandler())
-            : new StreamHandler();
-    } elseif (!$handler) {
-        throw new \RuntimeException('GuzzleHttp requires cURL, the '
-            . 'allow_url_fopen ini setting, or a custom HTTP handler.');
-    }
-
-    return $handler;
-}
-
-/**
- * Get the default User-Agent string to use with Guzzle
- *
- * @return string
- */
-function default_user_agent()
-{
-    static $defaultAgent = '';
-
-    if (!$defaultAgent) {
-        $defaultAgent = 'GuzzleHttp/' . Client::VERSION;
-        if (extension_loaded('curl') && function_exists('curl_version')) {
-            $defaultAgent .= ' curl/' . \curl_version()['version'];
-        }
-        $defaultAgent .= ' PHP/' . PHP_VERSION;
-    }
-
-    return $defaultAgent;
-}
-
-/**
- * Returns the default cacert bundle for the current system.
- *
- * First, the openssl.cafile and curl.cainfo php.ini settings are checked.
- * If those settings are not configured, then the common locations for
- * bundles found on Red Hat, CentOS, Fedora, Ubuntu, Debian, FreeBSD, OS X
- * and Windows are checked. If any of these file locations are found on
- * disk, they will be utilized.
- *
- * Note: the result of this function is cached for subsequent calls.
- *
- * @return string
- * @throws \RuntimeException if no bundle can be found.
- */
-function default_ca_bundle()
-{
-    static $cached = null;
-    static $cafiles = [
-        // Red Hat, CentOS, Fedora (provided by the ca-certificates package)
-        '/etc/pki/tls/certs/ca-bundle.crt',
-        // Ubuntu, Debian (provided by the ca-certificates package)
-        '/etc/ssl/certs/ca-certificates.crt',
-        // FreeBSD (provided by the ca_root_nss package)
-        '/usr/local/share/certs/ca-root-nss.crt',
-        // SLES 12 (provided by the ca-certificates package)
-        '/var/lib/ca-certificates/ca-bundle.pem',
-        // OS X provided by homebrew (using the default path)
-        '/usr/local/etc/openssl/cert.pem',
-        // Google app engine
-        '/etc/ca-certificates.crt',
-        // Windows?
-        'C:\\windows\\system32\\curl-ca-bundle.crt',
-        'C:\\windows\\curl-ca-bundle.crt',
-    ];
-
-    if ($cached) {
-        return $cached;
-    }
-
-    if ($ca = ini_get('openssl.cafile')) {
-        return $cached = $ca;
-    }
-
-    if ($ca = ini_get('curl.cainfo')) {
-        return $cached = $ca;
-    }
-
-    foreach ($cafiles as $filename) {
-        if (file_exists($filename)) {
-            return $cached = $filename;
-        }
-    }
-
-    throw new \RuntimeException(
-        <<< EOT
-No system CA bundle could be found in any of the the common system locations.
-PHP versions earlier than 5.6 are not properly configured to use the system's
-CA bundle by default. In order to verify peer certificates, you will need to
-supply the path on disk to a certificate bundle to the 'verify' request
-option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not
-need a specific certificate bundle, then Mozilla provides a commonly used CA
-bundle which can be downloaded here (provided by the maintainer of cURL):
-https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt. Once
-you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP
-ini setting to point to the path to the file, allowing you to omit the 'verify'
-request option. See http://curl.haxx.se/docs/sslcerts.html for more
-information.
-EOT
-    );
-}
-
-/**
- * Creates an associative array of lowercase header names to the actual
- * header casing.
- *
- * @param array $headers
- *
- * @return array
- */
-function normalize_header_keys(array $headers)
-{
-    $result = [];
-    foreach (array_keys($headers) as $key) {
-        $result[strtolower($key)] = $key;
-    }
-
-    return $result;
-}
-
-/**
- * Returns true if the provided host matches any of the no proxy areas.
- *
- * This method will strip a port from the host if it is present. Each pattern
- * can be matched with an exact match (e.g., "foo.com" == "foo.com") or a
- * partial match: (e.g., "foo.com" == "baz.foo.com" and ".foo.com" ==
- * "baz.foo.com", but ".foo.com" != "foo.com").
- *
- * Areas are matched in the following cases:
- * 1. "*" (without quotes) always matches any hosts.
- * 2. An exact match.
- * 3. The area starts with "." and the area is the last part of the host. e.g.
- *    '.mit.edu' will match any host that ends with '.mit.edu'.
- *
- * @param string $host         Host to check against the patterns.
- * @param array  $noProxyArray An array of host patterns.
- *
- * @return bool
- */
-function is_host_in_noproxy($host, array $noProxyArray)
-{
-    if (strlen($host) === 0) {
-        throw new \InvalidArgumentException('Empty host provided');
-    }
-
-    // Strip port if present.
-    if (strpos($host, ':')) {
-        $host = explode($host, ':', 2)[0];
-    }
-
-    foreach ($noProxyArray as $area) {
-        // Always match on wildcards.
-        if ($area === '*') {
-            return true;
-        } elseif (empty($area)) {
-            // Don't match on empty values.
-            continue;
-        } elseif ($area === $host) {
-            // Exact matches.
-            return true;
-        } else {
-            // Special match if the area when prefixed with ".". Remove any
-            // existing leading "." and add a new leading ".".
-            $area = '.' . ltrim($area, '.');
-            if (substr($host, -(strlen($area))) === $area) {
-                return true;
-            }
-        }
-    }
-
-    return false;
-}
-
-/**
- * Wrapper for json_decode that throws when an error occurs.
- *
- * @param string $json    JSON data to parse
- * @param bool $assoc     When true, returned objects will be converted
- *                        into associative arrays.
- * @param int    $depth   User specified recursion depth.
- * @param int    $options Bitmask of JSON decode options.
- *
- * @return mixed
- * @throws Exception\InvalidArgumentException if the JSON cannot be decoded.
- * @link http://www.php.net/manual/en/function.json-decode.php
- */
-function json_decode($json, $assoc = false, $depth = 512, $options = 0)
-{
-    $data = \json_decode($json, $assoc, $depth, $options);
-    if (JSON_ERROR_NONE !== json_last_error()) {
-        throw new Exception\InvalidArgumentException(
-            'json_decode error: ' . json_last_error_msg()
-        );
-    }
-
-    return $data;
-}
-
-/**
- * Wrapper for JSON encoding that throws when an error occurs.
- *
- * @param mixed $value   The value being encoded
- * @param int    $options JSON encode option bitmask
- * @param int    $depth   Set the maximum depth. Must be greater than zero.
- *
- * @return string
- * @throws Exception\InvalidArgumentException if the JSON cannot be encoded.
- * @link http://www.php.net/manual/en/function.json-encode.php
- */
-function json_encode($value, $options = 0, $depth = 512)
-{
-    $json = \json_encode($value, $options, $depth);
-    if (JSON_ERROR_NONE !== json_last_error()) {
-        throw new Exception\InvalidArgumentException(
-            'json_encode error: ' . json_last_error_msg()
-        );
-    }
-
-    return $json;
-}
diff --git a/vendor/guzzlehttp/guzzle/src/functions_include.php b/vendor/guzzlehttp/guzzle/src/functions_include.php
deleted file mode 100644
index a93393acc4e7c5e6021f070ad65dbbf2e3924241..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/guzzle/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-// Don't redefine the functions if included multiple times.
-if (!function_exists('GuzzleHttp\uri_template')) {
-    require __DIR__ . '/functions.php';
-}
diff --git a/vendor/guzzlehttp/promises/.php_cs.dist b/vendor/guzzlehttp/promises/.php_cs.dist
deleted file mode 100644
index a321876e8ff421aa20026c0f5a72fb6f626a2c1f..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/.php_cs.dist
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-$config = PhpCsFixer\Config::create()
-    ->setRiskyAllowed(true)
-    ->setRules([
-        '@PSR2' => true,
-        'array_syntax' => ['syntax' => 'short'],
-        'binary_operator_spaces' => ['operators' => ['=>' => null]],
-        'blank_line_after_opening_tag' => true,
-        'class_attributes_separation' => ['elements' => ['method']],
-        'compact_nullable_typehint' => true,
-        'concat_space' => ['spacing' => 'one'],
-        'declare_equal_normalize' => ['space' => 'none'],
-        'declare_strict_types' => false,
-        'dir_constant' => true,
-        'final_static_access' => true,
-        'fully_qualified_strict_types' => true,
-        'function_to_constant' => true,
-        'function_typehint_space' => true,
-        'header_comment' => false,
-        'is_null' => ['use_yoda_style' => false],
-        'list_syntax' => ['syntax' => 'short'],
-        'lowercase_cast' => true,
-        'magic_method_casing' => true,
-        'modernize_types_casting' => true,
-        'multiline_comment_opening_closing' => true,
-        //'native_constant_invocation' => true,
-        'no_alias_functions' => true,
-        'no_alternative_syntax' => true,
-        'no_blank_lines_after_phpdoc' => true,
-        'no_empty_comment' => true,
-        'no_empty_phpdoc' => true,
-        'no_extra_blank_lines' => true,
-        'no_leading_import_slash' => true,
-        'no_leading_namespace_whitespace' => true,
-        'no_spaces_around_offset' => true,
-        'no_superfluous_phpdoc_tags' => ['allow_mixed' => true],
-        'no_trailing_comma_in_singleline_array' => true,
-        'no_unneeded_control_parentheses' => true,
-        'no_unset_cast' => true,
-        'no_unused_imports' => true,
-        'no_useless_else' => true,
-        'no_useless_return' => true,
-        'no_whitespace_in_blank_line' => true,
-        'normalize_index_brace' => true,
-        'ordered_imports' => true,
-        'php_unit_construct' => true,
-        'php_unit_dedicate_assert' => ['target' => 'newest'],
-        'php_unit_dedicate_assert_internal_type' => ['target' => 'newest'],
-        'php_unit_expectation' => ['target' => 'newest'],
-        'php_unit_mock' => ['target' => 'newest'],
-        'php_unit_mock_short_will_return' => true,
-        'php_unit_no_expectation_annotation' => ['target' => 'newest'],
-        'php_unit_test_annotation' => ['style' => 'prefix'],
-        //'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
-        'phpdoc_align' => ['align' => 'vertical'],
-        //'phpdoc_line_span' => ['method' => 'multi', 'property' => 'multi'],
-        'phpdoc_no_package' => true,
-        'phpdoc_no_useless_inheritdoc' => true,
-        'phpdoc_scalar' => true,
-        'phpdoc_separation' => true,
-        'phpdoc_single_line_var_spacing' => true,
-        'phpdoc_trim' => true,
-        'phpdoc_trim_consecutive_blank_line_separation' => true,
-        'phpdoc_types' => true,
-        'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'],
-        'phpdoc_var_without_name' => true,
-        'return_assignment' => true,
-        'short_scalar_cast' => true,
-        'single_trait_insert_per_statement' => true,
-        'standardize_not_equals' => true,
-        //'static_lambda' => true,
-        'ternary_to_null_coalescing' => true,
-        'trim_array_spaces' => true,
-        'visibility_required' => true,
-        'yoda_style' => false,
-        // 'native_function_invocation' => true,
-        'braces' => ['allow_single_line_closure'=>true],
-    ])
-    ->setFinder(
-        PhpCsFixer\Finder::create()
-            ->in(__DIR__.'/src')
-            ->in(__DIR__.'/tests')
-            ->name('*.php')
-    )
-;
-
-return $config;
diff --git a/vendor/guzzlehttp/promises/CHANGELOG.md b/vendor/guzzlehttp/promises/CHANGELOG.md
deleted file mode 100644
index 4b63b2c749ab56f21961f4700f0a991966e4da16..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/CHANGELOG.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# CHANGELOG
-
-
-## 1.4.0 - 2020-09-30
-
-### Added
-
-- Support for PHP 8
-- Optional `$recursive` flag to `all`
-- Replaced functions by static methods
-
-### Fixed
-
-- Fix empty `each` processing
-- Fix promise handling for Iterators of non-unique keys
-- Fixed `method_exists` crashes on PHP 8
-- Memory leak on exceptions
-
-
-## 1.3.1 - 2016-12-20
-
-### Fixed
-
-- `wait()` foreign promise compatibility
-
-
-## 1.3.0 - 2016-11-18
-
-### Added
-
-- Adds support for custom task queues.
-
-### Fixed
-
-- Fixed coroutine promise memory leak.
-
-
-## 1.2.0 - 2016-05-18
-
-### Changed
-
-- Update to now catch `\Throwable` on PHP 7+
-
-
-## 1.1.0 - 2016-03-07
-
-### Changed
-
-- Update EachPromise to prevent recurring on a iterator when advancing, as this
-  could trigger fatal generator errors.
-- Update Promise to allow recursive waiting without unwrapping exceptions.
-
-
-## 1.0.3 - 2015-10-15
-
-### Changed
-
-- Update EachPromise to immediately resolve when the underlying promise iterator
-  is empty. Previously, such a promise would throw an exception when its `wait`
-  function was called.
-
-
-## 1.0.2 - 2015-05-15
-
-### Changed
-
-- Conditionally require functions.php.
-
-
-## 1.0.1 - 2015-06-24
-
-### Changed
-
-- Updating EachPromise to call next on the underlying promise iterator as late
-  as possible to ensure that generators that generate new requests based on
-  callbacks are not iterated until after callbacks are invoked.
-
-
-## 1.0.0 - 2015-05-12
-
-- Initial release
diff --git a/vendor/guzzlehttp/promises/LICENSE b/vendor/guzzlehttp/promises/LICENSE
deleted file mode 100644
index 67f91a14c0057818f23322c77e80daa80ae9d751..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015-2016 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/guzzlehttp/promises/Makefile b/vendor/guzzlehttp/promises/Makefile
deleted file mode 100644
index 8d5b3ef95eb4679a3998176bcc96fa88f5d60cdd..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-all: clean test
-
-test:
-	vendor/bin/phpunit
-
-coverage:
-	vendor/bin/phpunit --coverage-html=artifacts/coverage
-
-view-coverage:
-	open artifacts/coverage/index.html
-
-clean:
-	rm -rf artifacts/*
diff --git a/vendor/guzzlehttp/promises/README.md b/vendor/guzzlehttp/promises/README.md
deleted file mode 100644
index a95c6059477798f589fc795654c5f2e02b8a055f..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/README.md
+++ /dev/null
@@ -1,532 +0,0 @@
-# Guzzle Promises
-
-[Promises/A+](https://promisesaplus.com/) implementation that handles promise
-chaining and resolution iteratively, allowing for "infinite" promise chaining
-while keeping the stack size constant. Read [this blog post](https://blog.domenic.me/youre-missing-the-point-of-promises/)
-for a general introduction to promises.
-
-- [Features](#features)
-- [Quick start](#quick-start)
-- [Synchronous wait](#synchronous-wait)
-- [Cancellation](#cancellation)
-- [API](#api)
-  - [Promise](#promise)
-  - [FulfilledPromise](#fulfilledpromise)
-  - [RejectedPromise](#rejectedpromise)
-- [Promise interop](#promise-interop)
-- [Implementation notes](#implementation-notes)
-
-
-# Features
-
-- [Promises/A+](https://promisesaplus.com/) implementation.
-- Promise resolution and chaining is handled iteratively, allowing for
-  "infinite" promise chaining.
-- Promises have a synchronous `wait` method.
-- Promises can be cancelled.
-- Works with any object that has a `then` function.
-- C# style async/await coroutine promises using
-  `GuzzleHttp\Promise\Coroutine::of()`.
-
-
-# Quick start
-
-A *promise* represents the eventual result of an asynchronous operation. The
-primary way of interacting with a promise is through its `then` method, which
-registers callbacks to receive either a promise's eventual value or the reason
-why the promise cannot be fulfilled.
-
-
-## Callbacks
-
-Callbacks are registered with the `then` method by providing an optional 
-`$onFulfilled` followed by an optional `$onRejected` function.
-
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(
-    // $onFulfilled
-    function ($value) {
-        echo 'The promise was fulfilled.';
-    },
-    // $onRejected
-    function ($reason) {
-        echo 'The promise was rejected.';
-    }
-);
-```
-
-*Resolving* a promise means that you either fulfill a promise with a *value* or
-reject a promise with a *reason*. Resolving a promises triggers callbacks
-registered with the promises's `then` method. These callbacks are triggered
-only once and in the order in which they were added.
-
-
-## Resolving a promise
-
-Promises are fulfilled using the `resolve($value)` method. Resolving a promise
-with any value other than a `GuzzleHttp\Promise\RejectedPromise` will trigger
-all of the onFulfilled callbacks (resolving a promise with a rejected promise
-will reject the promise and trigger the `$onRejected` callbacks).
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise
-    ->then(function ($value) {
-        // Return a value and don't break the chain
-        return "Hello, " . $value;
-    })
-    // This then is executed after the first then and receives the value
-    // returned from the first then.
-    ->then(function ($value) {
-        echo $value;
-    });
-
-// Resolving the promise triggers the $onFulfilled callbacks and outputs
-// "Hello, reader."
-$promise->resolve('reader.');
-```
-
-
-## Promise forwarding
-
-Promises can be chained one after the other. Each then in the chain is a new
-promise. The return value of a promise is what's forwarded to the next
-promise in the chain. Returning a promise in a `then` callback will cause the
-subsequent promises in the chain to only be fulfilled when the returned promise
-has been fulfilled. The next promise in the chain will be invoked with the
-resolved value of the promise.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$nextPromise = new Promise();
-
-$promise
-    ->then(function ($value) use ($nextPromise) {
-        echo $value;
-        return $nextPromise;
-    })
-    ->then(function ($value) {
-        echo $value;
-    });
-
-// Triggers the first callback and outputs "A"
-$promise->resolve('A');
-// Triggers the second callback and outputs "B"
-$nextPromise->resolve('B');
-```
-
-## Promise rejection
-
-When a promise is rejected, the `$onRejected` callbacks are invoked with the
-rejection reason.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
-    echo $reason;
-});
-
-$promise->reject('Error!');
-// Outputs "Error!"
-```
-
-## Rejection forwarding
-
-If an exception is thrown in an `$onRejected` callback, subsequent
-`$onRejected` callbacks are invoked with the thrown exception as the reason.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
-    throw new Exception($reason);
-})->then(null, function ($reason) {
-    assert($reason->getMessage() === 'Error!');
-});
-
-$promise->reject('Error!');
-```
-
-You can also forward a rejection down the promise chain by returning a
-`GuzzleHttp\Promise\RejectedPromise` in either an `$onFulfilled` or
-`$onRejected` callback.
-
-```php
-use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Promise\RejectedPromise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
-    return new RejectedPromise($reason);
-})->then(null, function ($reason) {
-    assert($reason === 'Error!');
-});
-
-$promise->reject('Error!');
-```
-
-If an exception is not thrown in a `$onRejected` callback and the callback
-does not return a rejected promise, downstream `$onFulfilled` callbacks are
-invoked using the value returned from the `$onRejected` callback.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise
-    ->then(null, function ($reason) {
-        return "It's ok";
-    })
-    ->then(function ($value) {
-        assert($value === "It's ok");
-    });
-
-$promise->reject('Error!');
-```
-
-# Synchronous wait
-
-You can synchronously force promises to complete using a promise's `wait`
-method. When creating a promise, you can provide a wait function that is used
-to synchronously force a promise to complete. When a wait function is invoked
-it is expected to deliver a value to the promise or reject the promise. If the
-wait function does not deliver a value, then an exception is thrown. The wait
-function provided to a promise constructor is invoked when the `wait` function
-of the promise is called.
-
-```php
-$promise = new Promise(function () use (&$promise) {
-    $promise->resolve('foo');
-});
-
-// Calling wait will return the value of the promise.
-echo $promise->wait(); // outputs "foo"
-```
-
-If an exception is encountered while invoking the wait function of a promise,
-the promise is rejected with the exception and the exception is thrown.
-
-```php
-$promise = new Promise(function () use (&$promise) {
-    throw new Exception('foo');
-});
-
-$promise->wait(); // throws the exception.
-```
-
-Calling `wait` on a promise that has been fulfilled will not trigger the wait
-function. It will simply return the previously resolved value.
-
-```php
-$promise = new Promise(function () { die('this is not called!'); });
-$promise->resolve('foo');
-echo $promise->wait(); // outputs "foo"
-```
-
-Calling `wait` on a promise that has been rejected will throw an exception. If
-the rejection reason is an instance of `\Exception` the reason is thrown.
-Otherwise, a `GuzzleHttp\Promise\RejectionException` is thrown and the reason
-can be obtained by calling the `getReason` method of the exception.
-
-```php
-$promise = new Promise();
-$promise->reject('foo');
-$promise->wait();
-```
-
-> PHP Fatal error:  Uncaught exception 'GuzzleHttp\Promise\RejectionException' with message 'The promise was rejected with value: foo'
-
-
-## Unwrapping a promise
-
-When synchronously waiting on a promise, you are joining the state of the
-promise into the current state of execution (i.e., return the value of the
-promise if it was fulfilled or throw an exception if it was rejected). This is
-called "unwrapping" the promise. Waiting on a promise will by default unwrap
-the promise state.
-
-You can force a promise to resolve and *not* unwrap the state of the promise
-by passing `false` to the first argument of the `wait` function:
-
-```php
-$promise = new Promise();
-$promise->reject('foo');
-// This will not throw an exception. It simply ensures the promise has
-// been resolved.
-$promise->wait(false);
-```
-
-When unwrapping a promise, the resolved value of the promise will be waited
-upon until the unwrapped value is not a promise. This means that if you resolve
-promise A with a promise B and unwrap promise A, the value returned by the
-wait function will be the value delivered to promise B.
-
-**Note**: when you do not unwrap the promise, no value is returned.
-
-
-# Cancellation
-
-You can cancel a promise that has not yet been fulfilled using the `cancel()`
-method of a promise. When creating a promise you can provide an optional
-cancel function that when invoked cancels the action of computing a resolution
-of the promise.
-
-
-# API
-
-
-## Promise
-
-When creating a promise object, you can provide an optional `$waitFn` and
-`$cancelFn`. `$waitFn` is a function that is invoked with no arguments and is
-expected to resolve the promise. `$cancelFn` is a function with no arguments
-that is expected to cancel the computation of a promise. It is invoked when the
-`cancel()` method of a promise is called.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise(
-    function () use (&$promise) {
-        $promise->resolve('waited');
-    },
-    function () {
-        // do something that will cancel the promise computation (e.g., close
-        // a socket, cancel a database query, etc...)
-    }
-);
-
-assert('waited' === $promise->wait());
-```
-
-A promise has the following methods:
-
-- `then(callable $onFulfilled, callable $onRejected) : PromiseInterface`
-  
-  Appends fulfillment and rejection handlers to the promise, and returns a new promise resolving to the return value of the called handler.
-
-- `otherwise(callable $onRejected) : PromiseInterface`
-  
-  Appends a rejection handler callback to the promise, and returns a new promise resolving to the return value of the callback if it is called, or to its original fulfillment value if the promise is instead fulfilled.
-
-- `wait($unwrap = true) : mixed`
-
-  Synchronously waits on the promise to complete.
-  
-  `$unwrap` controls whether or not the value of the promise is returned for a
-  fulfilled promise or if an exception is thrown if the promise is rejected.
-  This is set to `true` by default.
-
-- `cancel()`
-
-  Attempts to cancel the promise if possible. The promise being cancelled and
-  the parent most ancestor that has not yet been resolved will also be
-  cancelled. Any promises waiting on the cancelled promise to resolve will also
-  be cancelled.
-
-- `getState() : string`
-
-  Returns the state of the promise. One of `pending`, `fulfilled`, or
-  `rejected`.
-
-- `resolve($value)`
-
-  Fulfills the promise with the given `$value`.
-
-- `reject($reason)`
-
-  Rejects the promise with the given `$reason`.
-
-
-## FulfilledPromise
-
-A fulfilled promise can be created to represent a promise that has been
-fulfilled.
-
-```php
-use GuzzleHttp\Promise\FulfilledPromise;
-
-$promise = new FulfilledPromise('value');
-
-// Fulfilled callbacks are immediately invoked.
-$promise->then(function ($value) {
-    echo $value;
-});
-```
-
-
-## RejectedPromise
-
-A rejected promise can be created to represent a promise that has been
-rejected.
-
-```php
-use GuzzleHttp\Promise\RejectedPromise;
-
-$promise = new RejectedPromise('Error');
-
-// Rejected callbacks are immediately invoked.
-$promise->then(null, function ($reason) {
-    echo $reason;
-});
-```
-
-
-# Promise interop
-
-This library works with foreign promises that have a `then` method. This means
-you can use Guzzle promises with [React promises](https://github.com/reactphp/promise)
-for example. When a foreign promise is returned inside of a then method
-callback, promise resolution will occur recursively.
-
-```php
-// Create a React promise
-$deferred = new React\Promise\Deferred();
-$reactPromise = $deferred->promise();
-
-// Create a Guzzle promise that is fulfilled with a React promise.
-$guzzlePromise = new GuzzleHttp\Promise\Promise();
-$guzzlePromise->then(function ($value) use ($reactPromise) {
-    // Do something something with the value...
-    // Return the React promise
-    return $reactPromise;
-});
-```
-
-Please note that wait and cancel chaining is no longer possible when forwarding
-a foreign promise. You will need to wrap a third-party promise with a Guzzle
-promise in order to utilize wait and cancel functions with foreign promises.
-
-
-## Event Loop Integration
-
-In order to keep the stack size constant, Guzzle promises are resolved
-asynchronously using a task queue. When waiting on promises synchronously, the
-task queue will be automatically run to ensure that the blocking promise and
-any forwarded promises are resolved. When using promises asynchronously in an
-event loop, you will need to run the task queue on each tick of the loop. If
-you do not run the task queue, then promises will not be resolved.
-
-You can run the task queue using the `run()` method of the global task queue
-instance.
-
-```php
-// Get the global task queue
-$queue = GuzzleHttp\Promise\Utils::queue();
-$queue->run();
-```
-
-For example, you could use Guzzle promises with React using a periodic timer:
-
-```php
-$loop = React\EventLoop\Factory::create();
-$loop->addPeriodicTimer(0, [$queue, 'run']);
-```
-
-*TODO*: Perhaps adding a `futureTick()` on each tick would be faster?
-
-
-# Implementation notes
-
-
-## Promise resolution and chaining is handled iteratively
-
-By shuffling pending handlers from one owner to another, promises are
-resolved iteratively, allowing for "infinite" then chaining.
-
-```php
-<?php
-require 'vendor/autoload.php';
-
-use GuzzleHttp\Promise\Promise;
-
-$parent = new Promise();
-$p = $parent;
-
-for ($i = 0; $i < 1000; $i++) {
-    $p = $p->then(function ($v) {
-        // The stack size remains constant (a good thing)
-        echo xdebug_get_stack_depth() . ', ';
-        return $v + 1;
-    });
-}
-
-$parent->resolve(0);
-var_dump($p->wait()); // int(1000)
-
-```
-
-When a promise is fulfilled or rejected with a non-promise value, the promise
-then takes ownership of the handlers of each child promise and delivers values
-down the chain without using recursion.
-
-When a promise is resolved with another promise, the original promise transfers
-all of its pending handlers to the new promise. When the new promise is
-eventually resolved, all of the pending handlers are delivered the forwarded
-value.
-
-
-## A promise is the deferred.
-
-Some promise libraries implement promises using a deferred object to represent
-a computation and a promise object to represent the delivery of the result of
-the computation. This is a nice separation of computation and delivery because
-consumers of the promise cannot modify the value that will be eventually
-delivered.
-
-One side effect of being able to implement promise resolution and chaining
-iteratively is that you need to be able for one promise to reach into the state
-of another promise to shuffle around ownership of handlers. In order to achieve
-this without making the handlers of a promise publicly mutable, a promise is
-also the deferred value, allowing promises of the same parent class to reach
-into and modify the private properties of promises of the same type. While this
-does allow consumers of the value to modify the resolution or rejection of the
-deferred, it is a small price to pay for keeping the stack size constant.
-
-```php
-$promise = new Promise();
-$promise->then(function ($value) { echo $value; });
-// The promise is the deferred value, so you can deliver a value to it.
-$promise->resolve('foo');
-// prints "foo"
-```
-
-
-## Upgrading from Function API
-
-A static API was first introduced in 1.4.0, in order to mitigate problems with functions conflicting between global and local copies of the package. The function API will be removed in 2.0.0. A migration table has been provided here for your convenience:
-
-| Original Function | Replacement Method |
-|----------------|----------------|
-| `queue` | `Utils::queue` |
-| `task` | `Utils::task` |
-| `promise_for` | `Create::promiseFor` |
-| `rejection_for` | `Create::rejectionFor` |
-| `exception_for` | `Create::exceptionFor` |
-| `iter_for` | `Create::iterFor` |
-| `inspect` | `Utils::inspect` |
-| `inspect_all` | `Utils::inspectAll` |
-| `unwrap` | `Utils::unwrap` |
-| `all` | `Utils::all` |
-| `some` | `Utils::some` |
-| `any` | `Utils::any` |
-| `settle` | `Utils::settle` |
-| `each` | `Each::of` |
-| `each_limit` | `Each::ofLimit` |
-| `each_limit_all` | `Each::ofLimitAll` |
-| `!is_fulfilled` | `Is::pending` |
-| `is_fulfilled` | `Is::fulfilled` |
-| `is_rejected` | `Is::rejected` |
-| `is_settled` | `Is::settled` |
-| `coroutine` | `Coroutine::of` |
diff --git a/vendor/guzzlehttp/promises/composer.json b/vendor/guzzlehttp/promises/composer.json
deleted file mode 100644
index db44d9e3f6834d3f3b422ec581d6d624c371a90d..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/composer.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-    "name": "guzzlehttp/promises",
-    "description": "Guzzle promises library",
-    "keywords": ["promise"],
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Michael Dowling",
-            "email": "mtdowling@gmail.com",
-            "homepage": "https://github.com/mtdowling"
-        }
-    ],
-    "require": {
-        "php": ">=5.5"
-    },
-    "require-dev": {
-        "symfony/phpunit-bridge": "^4.4 || ^5.1"
-    },
-    "autoload": {
-        "psr-4": {
-            "GuzzleHttp\\Promise\\": "src/"
-        },
-        "files": ["src/functions_include.php"]
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "GuzzleHttp\\Promise\\Tests\\": "tests/"
-        }
-    },
-    "scripts": {
-        "test": "vendor/bin/simple-phpunit",
-        "test-ci": "vendor/bin/simple-phpunit --coverage-text"
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.4-dev"
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/promises/phpstan-baseline.neon b/vendor/guzzlehttp/promises/phpstan-baseline.neon
deleted file mode 100644
index 26012c2d426b23df5302a3d8c5573e18c1efe9fb..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/phpstan-baseline.neon
+++ /dev/null
@@ -1,7 +0,0 @@
-parameters:
-	ignoreErrors:
-		-
-			message: "#^Parameter \\#1 \\$function of function register_shutdown_function expects callable\\(\\)\\: void, Closure\\(\\)\\: mixed given\\.$#"
-			count: 1
-			path: src/TaskQueue.php
-
diff --git a/vendor/guzzlehttp/promises/phpstan.neon.dist b/vendor/guzzlehttp/promises/phpstan.neon.dist
deleted file mode 100644
index b533a8c991876ec9bc18d86e07d7746cae21233a..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/phpstan.neon.dist
+++ /dev/null
@@ -1,10 +0,0 @@
-includes:
-    - phpstan-baseline.neon
-
-parameters:
-    level: 5
-    paths:
-        - src
-
-    ignoreErrors:
-        - "#^Dead catch - Exception is already caught by Throwable above\\.$#"
diff --git a/vendor/guzzlehttp/promises/psalm.xml b/vendor/guzzlehttp/promises/psalm.xml
deleted file mode 100644
index 3e4e3d085371aad1a37904e41382b35652ac30ae..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/psalm.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0"?>
-<psalm
-    errorLevel="4"
-    resolveFromConfigFile="true"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns="https://getpsalm.org/schema/config"
-    xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
->
-    <projectFiles>
-        <directory name="src" />
-        <ignoreFiles>
-            <directory name="vendor" />
-        </ignoreFiles>
-    </projectFiles>
-</psalm>
diff --git a/vendor/guzzlehttp/promises/src/AggregateException.php b/vendor/guzzlehttp/promises/src/AggregateException.php
deleted file mode 100644
index d2b5712b925c8acad50676cbb5c95c00044a47da..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/AggregateException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-/**
- * Exception thrown when too many errors occur in the some() or any() methods.
- */
-class AggregateException extends RejectionException
-{
-    public function __construct($msg, array $reasons)
-    {
-        parent::__construct(
-            $reasons,
-            sprintf('%s; %d rejected promises', $msg, count($reasons))
-        );
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/CancellationException.php b/vendor/guzzlehttp/promises/src/CancellationException.php
deleted file mode 100644
index 56a1ed65bc340f08e62ef07de67b78f5fc6a446e..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/CancellationException.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-/**
- * Exception that is set as the reason for a promise that has been cancelled.
- */
-class CancellationException extends RejectionException
-{
-}
diff --git a/vendor/guzzlehttp/promises/src/Coroutine.php b/vendor/guzzlehttp/promises/src/Coroutine.php
deleted file mode 100644
index 670da47739a15f7f0d97d67eb6d206110024c512..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/Coroutine.php
+++ /dev/null
@@ -1,169 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-use Exception;
-use Generator;
-use Throwable;
-
-/**
- * Creates a promise that is resolved using a generator that yields values or
- * promises (somewhat similar to C#'s async keyword).
- *
- * When called, the Coroutine::of method will start an instance of the generator
- * and returns a promise that is fulfilled with its final yielded value.
- *
- * Control is returned back to the generator when the yielded promise settles.
- * This can lead to less verbose code when doing lots of sequential async calls
- * with minimal processing in between.
- *
- *     use GuzzleHttp\Promise;
- *
- *     function createPromise($value) {
- *         return new Promise\FulfilledPromise($value);
- *     }
- *
- *     $promise = Promise\Coroutine::of(function () {
- *         $value = (yield createPromise('a'));
- *         try {
- *             $value = (yield createPromise($value . 'b'));
- *         } catch (\Exception $e) {
- *             // The promise was rejected.
- *         }
- *         yield $value . 'c';
- *     });
- *
- *     // Outputs "abc"
- *     $promise->then(function ($v) { echo $v; });
- *
- * @param callable $generatorFn Generator function to wrap into a promise.
- *
- * @return Promise
- *
- * @link https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration
- */
-final class Coroutine implements PromiseInterface
-{
-    /**
-     * @var PromiseInterface|null
-     */
-    private $currentPromise;
-
-    /**
-     * @var Generator
-     */
-    private $generator;
-
-    /**
-     * @var Promise
-     */
-    private $result;
-
-    public function __construct(callable $generatorFn)
-    {
-        $this->generator = $generatorFn();
-        $this->result = new Promise(function () {
-            while (isset($this->currentPromise)) {
-                $this->currentPromise->wait();
-            }
-        });
-        try {
-            $this->nextCoroutine($this->generator->current());
-        } catch (\Exception $exception) {
-            $this->result->reject($exception);
-        } catch (Throwable $throwable) {
-            $this->result->reject($throwable);
-        }
-    }
-
-    /**
-     * Create a new coroutine.
-     *
-     * @return self
-     */
-    public static function of(callable $generatorFn)
-    {
-        return new self($generatorFn);
-    }
-
-    public function then(
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        return $this->result->then($onFulfilled, $onRejected);
-    }
-
-    public function otherwise(callable $onRejected)
-    {
-        return $this->result->otherwise($onRejected);
-    }
-
-    public function wait($unwrap = true)
-    {
-        return $this->result->wait($unwrap);
-    }
-
-    public function getState()
-    {
-        return $this->result->getState();
-    }
-
-    public function resolve($value)
-    {
-        $this->result->resolve($value);
-    }
-
-    public function reject($reason)
-    {
-        $this->result->reject($reason);
-    }
-
-    public function cancel()
-    {
-        $this->currentPromise->cancel();
-        $this->result->cancel();
-    }
-
-    private function nextCoroutine($yielded)
-    {
-        $this->currentPromise = Create::promiseFor($yielded)
-            ->then([$this, '_handleSuccess'], [$this, '_handleFailure']);
-    }
-
-    /**
-     * @internal
-     */
-    public function _handleSuccess($value)
-    {
-        unset($this->currentPromise);
-        try {
-            $next = $this->generator->send($value);
-            if ($this->generator->valid()) {
-                $this->nextCoroutine($next);
-            } else {
-                $this->result->resolve($value);
-            }
-        } catch (Exception $exception) {
-            $this->result->reject($exception);
-        } catch (Throwable $throwable) {
-            $this->result->reject($throwable);
-        }
-    }
-
-    /**
-     * @internal
-     */
-    public function _handleFailure($reason)
-    {
-        unset($this->currentPromise);
-        try {
-            $nextYield = $this->generator->throw(Create::exceptionFor($reason));
-            // The throw was caught, so keep iterating on the coroutine
-            $this->nextCoroutine($nextYield);
-        } catch (Exception $exception) {
-            $this->result->reject($exception);
-        } catch (Throwable $throwable) {
-            $this->result->reject($throwable);
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/Create.php b/vendor/guzzlehttp/promises/src/Create.php
deleted file mode 100644
index 8d038e9c1ceb9d8da8f3bf2dc5b31a3b5eebb8ac..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/Create.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-final class Create
-{
-    /**
-     * Creates a promise for a value if the value is not a promise.
-     *
-     * @param mixed $value Promise or value.
-     *
-     * @return PromiseInterface
-     */
-    public static function promiseFor($value)
-    {
-        if ($value instanceof PromiseInterface) {
-            return $value;
-        }
-
-        // Return a Guzzle promise that shadows the given promise.
-        if (is_object($value) && method_exists($value, 'then')) {
-            $wfn = method_exists($value, 'wait') ? [$value, 'wait'] : null;
-            $cfn = method_exists($value, 'cancel') ? [$value, 'cancel'] : null;
-            $promise = new Promise($wfn, $cfn);
-            $value->then([$promise, 'resolve'], [$promise, 'reject']);
-            return $promise;
-        }
-
-        return new FulfilledPromise($value);
-    }
-
-    /**
-     * Creates a rejected promise for a reason if the reason is not a promise.
-     * If the provided reason is a promise, then it is returned as-is.
-     *
-     * @param mixed $reason Promise or reason.
-     *
-     * @return PromiseInterface
-     */
-    public static function rejectionFor($reason)
-    {
-        if ($reason instanceof PromiseInterface) {
-            return $reason;
-        }
-
-        return new RejectedPromise($reason);
-    }
-
-    /**
-     * Create an exception for a rejected promise value.
-     *
-     * @param mixed $reason
-     *
-     * @return \Exception|\Throwable
-     */
-    public static function exceptionFor($reason)
-    {
-        if ($reason instanceof \Exception || $reason instanceof \Throwable) {
-            return $reason;
-        }
-
-        return new RejectionException($reason);
-    }
-
-    /**
-     * Returns an iterator for the given value.
-     *
-     * @param mixed $value
-     *
-     * @return \Iterator
-     */
-    public static function iterFor($value)
-    {
-        if ($value instanceof \Iterator) {
-            return $value;
-        }
-
-        if (is_array($value)) {
-            return new \ArrayIterator($value);
-        }
-
-        return new \ArrayIterator([$value]);
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/Each.php b/vendor/guzzlehttp/promises/src/Each.php
deleted file mode 100644
index 1dda3549932f50402af746f4933c6c34011e98ec..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/Each.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-final class Each
-{
-    /**
-     * Given an iterator that yields promises or values, returns a promise that
-     * is fulfilled with a null value when the iterator has been consumed or
-     * the aggregate promise has been fulfilled or rejected.
-     *
-     * $onFulfilled is a function that accepts the fulfilled value, iterator
-     * index, and the aggregate promise. The callback can invoke any necessary
-     * side effects and choose to resolve or reject the aggregate if needed.
-     *
-     * $onRejected is a function that accepts the rejection reason, iterator
-     * index, and the aggregate promise. The callback can invoke any necessary
-     * side effects and choose to resolve or reject the aggregate if needed.
-     *
-     * @param mixed    $iterable    Iterator or array to iterate over.
-     * @param callable $onFulfilled
-     * @param callable $onRejected
-     *
-     * @return PromiseInterface
-     */
-    public static function of(
-        $iterable,
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        return (new EachPromise($iterable, [
-            'fulfilled' => $onFulfilled,
-            'rejected'  => $onRejected
-        ]))->promise();
-    }
-
-    /**
-     * Like of, but only allows a certain number of outstanding promises at any
-     * given time.
-     *
-     * $concurrency may be an integer or a function that accepts the number of
-     * pending promises and returns a numeric concurrency limit value to allow
-     * for dynamic a concurrency size.
-     *
-     * @param mixed        $iterable
-     * @param int|callable $concurrency
-     * @param callable     $onFulfilled
-     * @param callable     $onRejected
-     *
-     * @return PromiseInterface
-     */
-    public static function ofLimit(
-        $iterable,
-        $concurrency,
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        return (new EachPromise($iterable, [
-            'fulfilled'   => $onFulfilled,
-            'rejected'    => $onRejected,
-            'concurrency' => $concurrency
-        ]))->promise();
-    }
-
-    /**
-     * Like limit, but ensures that no promise in the given $iterable argument
-     * is rejected. If any promise is rejected, then the aggregate promise is
-     * rejected with the encountered rejection.
-     *
-     * @param mixed        $iterable
-     * @param int|callable $concurrency
-     * @param callable     $onFulfilled
-     *
-     * @return PromiseInterface
-     */
-    public static function ofLimitAll(
-        $iterable,
-        $concurrency,
-        callable $onFulfilled = null
-    ) {
-        return each_limit(
-            $iterable,
-            $concurrency,
-            $onFulfilled,
-            function ($reason, $idx, PromiseInterface $aggregate) {
-                $aggregate->reject($reason);
-            }
-        );
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/EachPromise.php b/vendor/guzzlehttp/promises/src/EachPromise.php
deleted file mode 100644
index fbb8876c763fc96d6ce6a2e6dca7974f470a3f52..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/EachPromise.php
+++ /dev/null
@@ -1,253 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-/**
- * Represents a promise that iterates over many promises and invokes
- * side-effect functions in the process.
- */
-class EachPromise implements PromisorInterface
-{
-    private $pending = [];
-
-    /** @var \Iterator|null */
-    private $iterable;
-
-    /** @var callable|int|null */
-    private $concurrency;
-
-    /** @var callable|null */
-    private $onFulfilled;
-
-    /** @var callable|null */
-    private $onRejected;
-
-    /** @var Promise|null */
-    private $aggregate;
-
-    /** @var bool|null */
-    private $mutex;
-
-    /**
-     * Configuration hash can include the following key value pairs:
-     *
-     * - fulfilled: (callable) Invoked when a promise fulfills. The function
-     *   is invoked with three arguments: the fulfillment value, the index
-     *   position from the iterable list of the promise, and the aggregate
-     *   promise that manages all of the promises. The aggregate promise may
-     *   be resolved from within the callback to short-circuit the promise.
-     * - rejected: (callable) Invoked when a promise is rejected. The
-     *   function is invoked with three arguments: the rejection reason, the
-     *   index position from the iterable list of the promise, and the
-     *   aggregate promise that manages all of the promises. The aggregate
-     *   promise may be resolved from within the callback to short-circuit
-     *   the promise.
-     * - concurrency: (integer) Pass this configuration option to limit the
-     *   allowed number of outstanding concurrently executing promises,
-     *   creating a capped pool of promises. There is no limit by default.
-     *
-     * @param mixed $iterable Promises or values to iterate.
-     * @param array $config   Configuration options
-     */
-    public function __construct($iterable, array $config = [])
-    {
-        $this->iterable = Create::iterFor($iterable);
-
-        if (isset($config['concurrency'])) {
-            $this->concurrency = $config['concurrency'];
-        }
-
-        if (isset($config['fulfilled'])) {
-            $this->onFulfilled = $config['fulfilled'];
-        }
-
-        if (isset($config['rejected'])) {
-            $this->onRejected = $config['rejected'];
-        }
-    }
-
-    /** @psalm-suppress InvalidNullableReturnType */
-    public function promise()
-    {
-        if ($this->aggregate) {
-            return $this->aggregate;
-        }
-
-        try {
-            $this->createPromise();
-            /** @psalm-assert Promise $this->aggregate */
-            $this->iterable->rewind();
-            if (!$this->checkIfFinished()) {
-                $this->refillPending();
-            }
-        } catch (\Throwable $e) {
-            /**
-             * @psalm-suppress NullReference
-             * @phpstan-ignore-next-line
-             */
-            $this->aggregate->reject($e);
-        } catch (\Exception $e) {
-            /**
-             * @psalm-suppress NullReference
-             * @phpstan-ignore-next-line
-             */
-            $this->aggregate->reject($e);
-        }
-
-        /**
-         * @psalm-suppress NullableReturnStatement
-         * @phpstan-ignore-next-line
-         */
-        return $this->aggregate;
-    }
-
-    private function createPromise()
-    {
-        $this->mutex = false;
-        $this->aggregate = new Promise(function () {
-            reset($this->pending);
-            // Consume a potentially fluctuating list of promises while
-            // ensuring that indexes are maintained (precluding array_shift).
-            while ($promise = current($this->pending)) {
-                next($this->pending);
-                $promise->wait();
-                if (Is::settled($this->aggregate)) {
-                    return;
-                }
-            }
-        });
-
-        // Clear the references when the promise is resolved.
-        $clearFn = function () {
-            $this->iterable = $this->concurrency = $this->pending = null;
-            $this->onFulfilled = $this->onRejected = null;
-        };
-
-        $this->aggregate->then($clearFn, $clearFn);
-    }
-
-    private function refillPending()
-    {
-        if (!$this->concurrency) {
-            // Add all pending promises.
-            while ($this->addPending() && $this->advanceIterator());
-            return;
-        }
-
-        // Add only up to N pending promises.
-        $concurrency = is_callable($this->concurrency)
-            ? call_user_func($this->concurrency, count($this->pending))
-            : $this->concurrency;
-        $concurrency = max($concurrency - count($this->pending), 0);
-        // Concurrency may be set to 0 to disallow new promises.
-        if (!$concurrency) {
-            return;
-        }
-        // Add the first pending promise.
-        $this->addPending();
-        // Note this is special handling for concurrency=1 so that we do
-        // not advance the iterator after adding the first promise. This
-        // helps work around issues with generators that might not have the
-        // next value to yield until promise callbacks are called.
-        while (--$concurrency
-            && $this->advanceIterator()
-            && $this->addPending());
-    }
-
-    private function addPending()
-    {
-        if (!$this->iterable || !$this->iterable->valid()) {
-            return false;
-        }
-
-        $promise = Create::promiseFor($this->iterable->current());
-        $key = $this->iterable->key();
-
-        // Iterable keys may not be unique, so we add the promises at the end
-        // of the pending array and retrieve the array index being used
-        $this->pending[] = null;
-        end($this->pending);
-        $idx = key($this->pending);
-
-        $this->pending[$idx] = $promise->then(
-            function ($value) use ($idx, $key) {
-                if ($this->onFulfilled) {
-                    call_user_func(
-                        $this->onFulfilled,
-                        $value,
-                        $key,
-                        $this->aggregate
-                    );
-                }
-                $this->step($idx);
-            },
-            function ($reason) use ($idx, $key) {
-                if ($this->onRejected) {
-                    call_user_func(
-                        $this->onRejected,
-                        $reason,
-                        $key,
-                        $this->aggregate
-                    );
-                }
-                $this->step($idx);
-            }
-        );
-
-        return true;
-    }
-
-    private function advanceIterator()
-    {
-        // Place a lock on the iterator so that we ensure to not recurse,
-        // preventing fatal generator errors.
-        if ($this->mutex) {
-            return false;
-        }
-
-        $this->mutex = true;
-
-        try {
-            $this->iterable->next();
-            $this->mutex = false;
-            return true;
-        } catch (\Throwable $e) {
-            $this->aggregate->reject($e);
-            $this->mutex = false;
-            return false;
-        } catch (\Exception $e) {
-            $this->aggregate->reject($e);
-            $this->mutex = false;
-            return false;
-        }
-    }
-
-    private function step($idx)
-    {
-        // If the promise was already resolved, then ignore this step.
-        if (Is::settled($this->aggregate)) {
-            return;
-        }
-
-        unset($this->pending[$idx]);
-
-        // Only refill pending promises if we are not locked, preventing the
-        // EachPromise to recursively invoke the provided iterator, which
-        // cause a fatal error: "Cannot resume an already running generator"
-        if ($this->advanceIterator() && !$this->checkIfFinished()) {
-            // Add more pending promises if possible.
-            $this->refillPending();
-        }
-    }
-
-    private function checkIfFinished()
-    {
-        if (!$this->pending && !$this->iterable->valid()) {
-            // Resolve the promise if there's nothing left to do.
-            $this->aggregate->resolve(null);
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/FulfilledPromise.php b/vendor/guzzlehttp/promises/src/FulfilledPromise.php
deleted file mode 100644
index 98f72a62a6f878eb2cdaa11306669cc234b3a8ba..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/FulfilledPromise.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-/**
- * A promise that has been fulfilled.
- *
- * Thenning off of this promise will invoke the onFulfilled callback
- * immediately and ignore other callbacks.
- */
-class FulfilledPromise implements PromiseInterface
-{
-    private $value;
-
-    public function __construct($value)
-    {
-        if (is_object($value) && method_exists($value, 'then')) {
-            throw new \InvalidArgumentException(
-                'You cannot create a FulfilledPromise with a promise.'
-            );
-        }
-
-        $this->value = $value;
-    }
-
-    public function then(
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        // Return itself if there is no onFulfilled function.
-        if (!$onFulfilled) {
-            return $this;
-        }
-
-        $queue = Utils::queue();
-        $p = new Promise([$queue, 'run']);
-        $value = $this->value;
-        $queue->add(static function () use ($p, $value, $onFulfilled) {
-            if (Is::pending($p)) {
-                try {
-                    $p->resolve($onFulfilled($value));
-                } catch (\Throwable $e) {
-                    $p->reject($e);
-                } catch (\Exception $e) {
-                    $p->reject($e);
-                }
-            }
-        });
-
-        return $p;
-    }
-
-    public function otherwise(callable $onRejected)
-    {
-        return $this->then(null, $onRejected);
-    }
-
-    public function wait($unwrap = true, $defaultDelivery = null)
-    {
-        return $unwrap ? $this->value : null;
-    }
-
-    public function getState()
-    {
-        return self::FULFILLED;
-    }
-
-    public function resolve($value)
-    {
-        if ($value !== $this->value) {
-            throw new \LogicException("Cannot resolve a fulfilled promise");
-        }
-    }
-
-    public function reject($reason)
-    {
-        throw new \LogicException("Cannot reject a fulfilled promise");
-    }
-
-    public function cancel()
-    {
-        // pass
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/Is.php b/vendor/guzzlehttp/promises/src/Is.php
deleted file mode 100644
index c3ed8d0143315ee5bf95ef5cca85d217c5e66d18..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/Is.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-final class Is
-{
-    /**
-     * Returns true if a promise is pending.
-     *
-     * @return bool
-     */
-    public static function pending(PromiseInterface $promise)
-    {
-        return $promise->getState() === PromiseInterface::PENDING;
-    }
-
-    /**
-     * Returns true if a promise is fulfilled or rejected.
-     *
-     * @return bool
-     */
-    public static function settled(PromiseInterface $promise)
-    {
-        return $promise->getState() !== PromiseInterface::PENDING;
-    }
-
-    /**
-     * Returns true if a promise is fulfilled.
-     *
-     * @return bool
-     */
-    public static function fulfilled(PromiseInterface $promise)
-    {
-        return $promise->getState() === PromiseInterface::FULFILLED;
-    }
-
-    /**
-     * Returns true if a promise is rejected.
-     *
-     * @return bool
-     */
-    public static function rejected(PromiseInterface $promise)
-    {
-        return $promise->getState() === PromiseInterface::REJECTED;
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/Promise.php b/vendor/guzzlehttp/promises/src/Promise.php
deleted file mode 100644
index 75939057b645ebd0c0bd71ac693024782911f5f0..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/Promise.php
+++ /dev/null
@@ -1,278 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-/**
- * Promises/A+ implementation that avoids recursion when possible.
- *
- * @link https://promisesaplus.com/
- */
-class Promise implements PromiseInterface
-{
-    private $state = self::PENDING;
-    private $result;
-    private $cancelFn;
-    private $waitFn;
-    private $waitList;
-    private $handlers = [];
-
-    /**
-     * @param callable $waitFn   Fn that when invoked resolves the promise.
-     * @param callable $cancelFn Fn that when invoked cancels the promise.
-     */
-    public function __construct(
-        callable $waitFn = null,
-        callable $cancelFn = null
-    ) {
-        $this->waitFn = $waitFn;
-        $this->cancelFn = $cancelFn;
-    }
-
-    public function then(
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        if ($this->state === self::PENDING) {
-            $p = new Promise(null, [$this, 'cancel']);
-            $this->handlers[] = [$p, $onFulfilled, $onRejected];
-            $p->waitList = $this->waitList;
-            $p->waitList[] = $this;
-            return $p;
-        }
-
-        // Return a fulfilled promise and immediately invoke any callbacks.
-        if ($this->state === self::FULFILLED) {
-            $promise = Create::promiseFor($this->result);
-            return $onFulfilled ? $promise->then($onFulfilled) : $promise;
-        }
-
-        // It's either cancelled or rejected, so return a rejected promise
-        // and immediately invoke any callbacks.
-        $rejection = Create::rejectionFor($this->result);
-        return $onRejected ? $rejection->then(null, $onRejected) : $rejection;
-    }
-
-    public function otherwise(callable $onRejected)
-    {
-        return $this->then(null, $onRejected);
-    }
-
-    public function wait($unwrap = true)
-    {
-        $this->waitIfPending();
-
-        if ($this->result instanceof PromiseInterface) {
-            return $this->result->wait($unwrap);
-        }
-        if ($unwrap) {
-            if ($this->state === self::FULFILLED) {
-                return $this->result;
-            }
-            // It's rejected so "unwrap" and throw an exception.
-            throw Create::exceptionFor($this->result);
-        }
-    }
-
-    public function getState()
-    {
-        return $this->state;
-    }
-
-    public function cancel()
-    {
-        if ($this->state !== self::PENDING) {
-            return;
-        }
-
-        $this->waitFn = $this->waitList = null;
-
-        if ($this->cancelFn) {
-            $fn = $this->cancelFn;
-            $this->cancelFn = null;
-            try {
-                $fn();
-            } catch (\Throwable $e) {
-                $this->reject($e);
-            } catch (\Exception $e) {
-                $this->reject($e);
-            }
-        }
-
-        // Reject the promise only if it wasn't rejected in a then callback.
-        /** @psalm-suppress RedundantCondition */
-        if ($this->state === self::PENDING) {
-            $this->reject(new CancellationException('Promise has been cancelled'));
-        }
-    }
-
-    public function resolve($value)
-    {
-        $this->settle(self::FULFILLED, $value);
-    }
-
-    public function reject($reason)
-    {
-        $this->settle(self::REJECTED, $reason);
-    }
-
-    private function settle($state, $value)
-    {
-        if ($this->state !== self::PENDING) {
-            // Ignore calls with the same resolution.
-            if ($state === $this->state && $value === $this->result) {
-                return;
-            }
-            throw $this->state === $state
-                ? new \LogicException("The promise is already {$state}.")
-                : new \LogicException("Cannot change a {$this->state} promise to {$state}");
-        }
-
-        if ($value === $this) {
-            throw new \LogicException('Cannot fulfill or reject a promise with itself');
-        }
-
-        // Clear out the state of the promise but stash the handlers.
-        $this->state = $state;
-        $this->result = $value;
-        $handlers = $this->handlers;
-        $this->handlers = null;
-        $this->waitList = $this->waitFn = null;
-        $this->cancelFn = null;
-
-        if (!$handlers) {
-            return;
-        }
-
-        // If the value was not a settled promise or a thenable, then resolve
-        // it in the task queue using the correct ID.
-        if (!is_object($value) || !method_exists($value, 'then')) {
-            $id = $state === self::FULFILLED ? 1 : 2;
-            // It's a success, so resolve the handlers in the queue.
-            Utils::queue()->add(static function () use ($id, $value, $handlers) {
-                foreach ($handlers as $handler) {
-                    self::callHandler($id, $value, $handler);
-                }
-            });
-        } elseif ($value instanceof Promise && Is::pending($value)) {
-            // We can just merge our handlers onto the next promise.
-            $value->handlers = array_merge($value->handlers, $handlers);
-        } else {
-            // Resolve the handlers when the forwarded promise is resolved.
-            $value->then(
-                static function ($value) use ($handlers) {
-                    foreach ($handlers as $handler) {
-                        self::callHandler(1, $value, $handler);
-                    }
-                },
-                static function ($reason) use ($handlers) {
-                    foreach ($handlers as $handler) {
-                        self::callHandler(2, $reason, $handler);
-                    }
-                }
-            );
-        }
-    }
-
-    /**
-     * Call a stack of handlers using a specific callback index and value.
-     *
-     * @param int   $index   1 (resolve) or 2 (reject).
-     * @param mixed $value   Value to pass to the callback.
-     * @param array $handler Array of handler data (promise and callbacks).
-     */
-    private static function callHandler($index, $value, array $handler)
-    {
-        /** @var PromiseInterface $promise */
-        $promise = $handler[0];
-
-        // The promise may have been cancelled or resolved before placing
-        // this thunk in the queue.
-        if (Is::settled($promise)) {
-            return;
-        }
-
-        try {
-            if (isset($handler[$index])) {
-                /*
-                 * If $f throws an exception, then $handler will be in the exception
-                 * stack trace. Since $handler contains a reference to the callable
-                 * itself we get a circular reference. We clear the $handler
-                 * here to avoid that memory leak.
-                 */
-                $f = $handler[$index];
-                unset($handler);
-                $promise->resolve($f($value));
-            } elseif ($index === 1) {
-                // Forward resolution values as-is.
-                $promise->resolve($value);
-            } else {
-                // Forward rejections down the chain.
-                $promise->reject($value);
-            }
-        } catch (\Throwable $reason) {
-            $promise->reject($reason);
-        } catch (\Exception $reason) {
-            $promise->reject($reason);
-        }
-    }
-
-    private function waitIfPending()
-    {
-        if ($this->state !== self::PENDING) {
-            return;
-        } elseif ($this->waitFn) {
-            $this->invokeWaitFn();
-        } elseif ($this->waitList) {
-            $this->invokeWaitList();
-        } else {
-            // If there's no wait function, then reject the promise.
-            $this->reject('Cannot wait on a promise that has '
-                . 'no internal wait function. You must provide a wait '
-                . 'function when constructing the promise to be able to '
-                . 'wait on a promise.');
-        }
-
-        Utils::queue()->run();
-
-        /** @psalm-suppress RedundantCondition */
-        if ($this->state === self::PENDING) {
-            $this->reject('Invoking the wait callback did not resolve the promise');
-        }
-    }
-
-    private function invokeWaitFn()
-    {
-        try {
-            $wfn = $this->waitFn;
-            $this->waitFn = null;
-            $wfn(true);
-        } catch (\Exception $reason) {
-            if ($this->state === self::PENDING) {
-                // The promise has not been resolved yet, so reject the promise
-                // with the exception.
-                $this->reject($reason);
-            } else {
-                // The promise was already resolved, so there's a problem in
-                // the application.
-                throw $reason;
-            }
-        }
-    }
-
-    private function invokeWaitList()
-    {
-        $waitList = $this->waitList;
-        $this->waitList = null;
-
-        foreach ($waitList as $result) {
-            do {
-                $result->waitIfPending();
-                $result = $result->result;
-            } while ($result instanceof Promise);
-
-            if ($result instanceof PromiseInterface) {
-                $result->wait(false);
-            }
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/PromiseInterface.php b/vendor/guzzlehttp/promises/src/PromiseInterface.php
deleted file mode 100644
index e598331435aedfc5213100f2d410e715c81cb163..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/PromiseInterface.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-/**
- * A promise represents the eventual result of an asynchronous operation.
- *
- * The primary way of interacting with a promise is through its then method,
- * which registers callbacks to receive either a promise’s eventual value or
- * the reason why the promise cannot be fulfilled.
- *
- * @link https://promisesaplus.com/
- */
-interface PromiseInterface
-{
-    const PENDING = 'pending';
-    const FULFILLED = 'fulfilled';
-    const REJECTED = 'rejected';
-
-    /**
-     * Appends fulfillment and rejection handlers to the promise, and returns
-     * a new promise resolving to the return value of the called handler.
-     *
-     * @param callable $onFulfilled Invoked when the promise fulfills.
-     * @param callable $onRejected  Invoked when the promise is rejected.
-     *
-     * @return PromiseInterface
-     */
-    public function then(
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    );
-
-    /**
-     * Appends a rejection handler callback to the promise, and returns a new
-     * promise resolving to the return value of the callback if it is called,
-     * or to its original fulfillment value if the promise is instead
-     * fulfilled.
-     *
-     * @param callable $onRejected Invoked when the promise is rejected.
-     *
-     * @return PromiseInterface
-     */
-    public function otherwise(callable $onRejected);
-
-    /**
-     * Get the state of the promise ("pending", "rejected", or "fulfilled").
-     *
-     * The three states can be checked against the constants defined on
-     * PromiseInterface: PENDING, FULFILLED, and REJECTED.
-     *
-     * @return string
-     */
-    public function getState();
-
-    /**
-     * Resolve the promise with the given value.
-     *
-     * @param mixed $value
-     *
-     * @throws \RuntimeException if the promise is already resolved.
-     */
-    public function resolve($value);
-
-    /**
-     * Reject the promise with the given reason.
-     *
-     * @param mixed $reason
-     *
-     * @throws \RuntimeException if the promise is already resolved.
-     */
-    public function reject($reason);
-
-    /**
-     * Cancels the promise if possible.
-     *
-     * @link https://github.com/promises-aplus/cancellation-spec/issues/7
-     */
-    public function cancel();
-
-    /**
-     * Waits until the promise completes if possible.
-     *
-     * Pass $unwrap as true to unwrap the result of the promise, either
-     * returning the resolved value or throwing the rejected exception.
-     *
-     * If the promise cannot be waited on, then the promise will be rejected.
-     *
-     * @param bool $unwrap
-     *
-     * @return mixed
-     *
-     * @throws \LogicException if the promise has no wait function or if the
-     *                         promise does not settle after waiting.
-     */
-    public function wait($unwrap = true);
-}
diff --git a/vendor/guzzlehttp/promises/src/PromisorInterface.php b/vendor/guzzlehttp/promises/src/PromisorInterface.php
deleted file mode 100644
index 2d2e3422ba4046067e934c96d309661f8b18e631..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/PromisorInterface.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-/**
- * Interface used with classes that return a promise.
- */
-interface PromisorInterface
-{
-    /**
-     * Returns a promise.
-     *
-     * @return PromiseInterface
-     */
-    public function promise();
-}
diff --git a/vendor/guzzlehttp/promises/src/RejectedPromise.php b/vendor/guzzlehttp/promises/src/RejectedPromise.php
deleted file mode 100644
index d2918468cf3822100e2c68f309cde26100659edc..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/RejectedPromise.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-/**
- * A promise that has been rejected.
- *
- * Thenning off of this promise will invoke the onRejected callback
- * immediately and ignore other callbacks.
- */
-class RejectedPromise implements PromiseInterface
-{
-    private $reason;
-
-    public function __construct($reason)
-    {
-        if (is_object($reason) && method_exists($reason, 'then')) {
-            throw new \InvalidArgumentException(
-                'You cannot create a RejectedPromise with a promise.'
-            );
-        }
-
-        $this->reason = $reason;
-    }
-
-    public function then(
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        // If there's no onRejected callback then just return self.
-        if (!$onRejected) {
-            return $this;
-        }
-
-        $queue = Utils::queue();
-        $reason = $this->reason;
-        $p = new Promise([$queue, 'run']);
-        $queue->add(static function () use ($p, $reason, $onRejected) {
-            if (Is::pending($p)) {
-                try {
-                    // Return a resolved promise if onRejected does not throw.
-                    $p->resolve($onRejected($reason));
-                } catch (\Throwable $e) {
-                    // onRejected threw, so return a rejected promise.
-                    $p->reject($e);
-                } catch (\Exception $e) {
-                    // onRejected threw, so return a rejected promise.
-                    $p->reject($e);
-                }
-            }
-        });
-
-        return $p;
-    }
-
-    public function otherwise(callable $onRejected)
-    {
-        return $this->then(null, $onRejected);
-    }
-
-    public function wait($unwrap = true, $defaultDelivery = null)
-    {
-        if ($unwrap) {
-            throw Create::exceptionFor($this->reason);
-        }
-
-        return null;
-    }
-
-    public function getState()
-    {
-        return self::REJECTED;
-    }
-
-    public function resolve($value)
-    {
-        throw new \LogicException("Cannot resolve a rejected promise");
-    }
-
-    public function reject($reason)
-    {
-        if ($reason !== $this->reason) {
-            throw new \LogicException("Cannot reject a rejected promise");
-        }
-    }
-
-    public function cancel()
-    {
-        // pass
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/RejectionException.php b/vendor/guzzlehttp/promises/src/RejectionException.php
deleted file mode 100644
index e2f137707df12f028cafb0968c43a41537004019..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/RejectionException.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-/**
- * A special exception that is thrown when waiting on a rejected promise.
- *
- * The reason value is available via the getReason() method.
- */
-class RejectionException extends \RuntimeException
-{
-    /** @var mixed Rejection reason. */
-    private $reason;
-
-    /**
-     * @param mixed  $reason      Rejection reason.
-     * @param string $description Optional description
-     */
-    public function __construct($reason, $description = null)
-    {
-        $this->reason = $reason;
-
-        $message = 'The promise was rejected';
-
-        if ($description) {
-            $message .= ' with reason: ' . $description;
-        } elseif (is_string($reason)
-            || (is_object($reason) && method_exists($reason, '__toString'))
-        ) {
-            $message .= ' with reason: ' . $this->reason;
-        } elseif ($reason instanceof \JsonSerializable) {
-            $message .= ' with reason: '
-                . json_encode($this->reason, JSON_PRETTY_PRINT);
-        }
-
-        parent::__construct($message);
-    }
-
-    /**
-     * Returns the rejection reason.
-     *
-     * @return mixed
-     */
-    public function getReason()
-    {
-        return $this->reason;
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/TaskQueue.php b/vendor/guzzlehttp/promises/src/TaskQueue.php
deleted file mode 100644
index f0fba2c594a89baa0abb4fc952de319e9cfb577b..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/TaskQueue.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-/**
- * A task queue that executes tasks in a FIFO order.
- *
- * This task queue class is used to settle promises asynchronously and
- * maintains a constant stack size. You can use the task queue asynchronously
- * by calling the `run()` function of the global task queue in an event loop.
- *
- *     GuzzleHttp\Promise\Utils::queue()->run();
- */
-class TaskQueue implements TaskQueueInterface
-{
-    private $enableShutdown = true;
-    private $queue = [];
-
-    public function __construct($withShutdown = true)
-    {
-        if ($withShutdown) {
-            register_shutdown_function(function () {
-                if ($this->enableShutdown) {
-                    // Only run the tasks if an E_ERROR didn't occur.
-                    $err = error_get_last();
-                    if (!$err || ($err['type'] ^ E_ERROR)) {
-                        $this->run();
-                    }
-                }
-            });
-        }
-    }
-
-    public function isEmpty()
-    {
-        return !$this->queue;
-    }
-
-    public function add(callable $task)
-    {
-        $this->queue[] = $task;
-    }
-
-    public function run()
-    {
-        while ($task = array_shift($this->queue)) {
-            /** @var callable $task */
-            $task();
-        }
-    }
-
-    /**
-     * The task queue will be run and exhausted by default when the process
-     * exits IFF the exit is not the result of a PHP E_ERROR error.
-     *
-     * You can disable running the automatic shutdown of the queue by calling
-     * this function. If you disable the task queue shutdown process, then you
-     * MUST either run the task queue (as a result of running your event loop
-     * or manually using the run() method) or wait on each outstanding promise.
-     *
-     * Note: This shutdown will occur before any destructors are triggered.
-     */
-    public function disableShutdown()
-    {
-        $this->enableShutdown = false;
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php b/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
deleted file mode 100644
index 723d4d54eb15aa97aab769dce2810b8d7a7b118f..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-interface TaskQueueInterface
-{
-    /**
-     * Returns true if the queue is empty.
-     *
-     * @return bool
-     */
-    public function isEmpty();
-
-    /**
-     * Adds a task to the queue that will be executed the next time run is
-     * called.
-     */
-    public function add(callable $task);
-
-    /**
-     * Execute all of the pending task in the queue.
-     */
-    public function run();
-}
diff --git a/vendor/guzzlehttp/promises/src/Utils.php b/vendor/guzzlehttp/promises/src/Utils.php
deleted file mode 100644
index 1cee86202a90d14da0751097b8dd859fbe0a7dc9..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/Utils.php
+++ /dev/null
@@ -1,274 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-final class Utils
-{
-    /**
-     * Get the global task queue used for promise resolution.
-     *
-     * This task queue MUST be run in an event loop in order for promises to be
-     * settled asynchronously. It will be automatically run when synchronously
-     * waiting on a promise.
-     *
-     * <code>
-     * while ($eventLoop->isRunning()) {
-     *     GuzzleHttp\Promise\Utils::queue()->run();
-     * }
-     * </code>
-     *
-     * @param TaskQueueInterface $assign Optionally specify a new queue instance.
-     *
-     * @return TaskQueueInterface
-     */
-    public static function queue(TaskQueueInterface $assign = null)
-    {
-        static $queue;
-
-        if ($assign) {
-            $queue = $assign;
-        } elseif (!$queue) {
-            $queue = new TaskQueue();
-        }
-
-        return $queue;
-    }
-
-    /**
-     * Adds a function to run in the task queue when it is next `run()` and
-     * returns a promise that is fulfilled or rejected with the result.
-     *
-     * @param callable $task Task function to run.
-     *
-     * @return PromiseInterface
-     */
-    public static function task(callable $task)
-    {
-        $queue = self::queue();
-        $promise = new Promise([$queue, 'run']);
-        $queue->add(function () use ($task, $promise) {
-            try {
-                $promise->resolve($task());
-            } catch (\Throwable $e) {
-                $promise->reject($e);
-            } catch (\Exception $e) {
-                $promise->reject($e);
-            }
-        });
-
-        return $promise;
-    }
-
-    /**
-     * Synchronously waits on a promise to resolve and returns an inspection
-     * state array.
-     *
-     * Returns a state associative array containing a "state" key mapping to a
-     * valid promise state. If the state of the promise is "fulfilled", the
-     * array will contain a "value" key mapping to the fulfilled value of the
-     * promise. If the promise is rejected, the array will contain a "reason"
-     * key mapping to the rejection reason of the promise.
-     *
-     * @param PromiseInterface $promise Promise or value.
-     *
-     * @return array
-     */
-    public static function inspect(PromiseInterface $promise)
-    {
-        try {
-            return [
-                'state' => PromiseInterface::FULFILLED,
-                'value' => $promise->wait()
-            ];
-        } catch (RejectionException $e) {
-            return ['state' => PromiseInterface::REJECTED, 'reason' => $e->getReason()];
-        } catch (\Throwable $e) {
-            return ['state' => PromiseInterface::REJECTED, 'reason' => $e];
-        } catch (\Exception $e) {
-            return ['state' => PromiseInterface::REJECTED, 'reason' => $e];
-        }
-    }
-
-    /**
-     * Waits on all of the provided promises, but does not unwrap rejected
-     * promises as thrown exception.
-     *
-     * Returns an array of inspection state arrays.
-     *
-     * @see inspect for the inspection state array format.
-     *
-     * @param PromiseInterface[] $promises Traversable of promises to wait upon.
-     *
-     * @return array
-     */
-    public static function inspectAll($promises)
-    {
-        $results = [];
-        foreach ($promises as $key => $promise) {
-            $results[$key] = inspect($promise);
-        }
-
-        return $results;
-    }
-
-    /**
-     * Waits on all of the provided promises and returns the fulfilled values.
-     *
-     * Returns an array that contains the value of each promise (in the same
-     * order the promises were provided). An exception is thrown if any of the
-     * promises are rejected.
-     *
-     * @param iterable<PromiseInterface> $promises Iterable of PromiseInterface objects to wait on.
-     *
-     * @return array
-     *
-     * @throws \Exception on error
-     * @throws \Throwable on error in PHP >=7
-     */
-    public static function unwrap($promises)
-    {
-        $results = [];
-        foreach ($promises as $key => $promise) {
-            $results[$key] = $promise->wait();
-        }
-
-        return $results;
-    }
-
-    /**
-     * Given an array of promises, return a promise that is fulfilled when all
-     * the items in the array are fulfilled.
-     *
-     * The promise's fulfillment value is an array with fulfillment values at
-     * respective positions to the original array. If any promise in the array
-     * rejects, the returned promise is rejected with the rejection reason.
-     *
-     * @param mixed $promises  Promises or values.
-     * @param bool  $recursive If true, resolves new promises that might have been added to the stack during its own resolution.
-     *
-     * @return PromiseInterface
-     */
-    public static function all($promises, $recursive = false)
-    {
-        $results = [];
-        $promise = Each::of(
-            $promises,
-            function ($value, $idx) use (&$results) {
-                $results[$idx] = $value;
-            },
-            function ($reason, $idx, Promise $aggregate) {
-                $aggregate->reject($reason);
-            }
-        )->then(function () use (&$results) {
-            ksort($results);
-            return $results;
-        });
-
-        if (true === $recursive) {
-            $promise = $promise->then(function ($results) use ($recursive, &$promises) {
-                foreach ($promises as $promise) {
-                    if (Is::pending($promise)) {
-                        return self::all($promises, $recursive);
-                    }
-                }
-                return $results;
-            });
-        }
-
-        return $promise;
-    }
-
-    /**
-     * Initiate a competitive race between multiple promises or values (values
-     * will become immediately fulfilled promises).
-     *
-     * When count amount of promises have been fulfilled, the returned promise
-     * is fulfilled with an array that contains the fulfillment values of the
-     * winners in order of resolution.
-     *
-     * This promise is rejected with a {@see AggregateException} if the number
-     * of fulfilled promises is less than the desired $count.
-     *
-     * @param int   $count    Total number of promises.
-     * @param mixed $promises Promises or values.
-     *
-     * @return PromiseInterface
-     */
-    public static function some($count, $promises)
-    {
-        $results = [];
-        $rejections = [];
-
-        return Each::of(
-            $promises,
-            function ($value, $idx, PromiseInterface $p) use (&$results, $count) {
-                if (Is::settled($p)) {
-                    return;
-                }
-                $results[$idx] = $value;
-                if (count($results) >= $count) {
-                    $p->resolve(null);
-                }
-            },
-            function ($reason) use (&$rejections) {
-                $rejections[] = $reason;
-            }
-        )->then(
-            function () use (&$results, &$rejections, $count) {
-                if (count($results) !== $count) {
-                    throw new AggregateException(
-                        'Not enough promises to fulfill count',
-                        $rejections
-                    );
-                }
-                ksort($results);
-                return array_values($results);
-            }
-        );
-    }
-
-    /**
-     * Like some(), with 1 as count. However, if the promise fulfills, the
-     * fulfillment value is not an array of 1 but the value directly.
-     *
-     * @param mixed $promises Promises or values.
-     *
-     * @return PromiseInterface
-     */
-    public static function any($promises)
-    {
-        return self::some(1, $promises)->then(function ($values) {
-            return $values[0];
-        });
-    }
-
-    /**
-     * Returns a promise that is fulfilled when all of the provided promises have
-     * been fulfilled or rejected.
-     *
-     * The returned promise is fulfilled with an array of inspection state arrays.
-     *
-     * @see inspect for the inspection state array format.
-     *
-     * @param mixed $promises Promises or values.
-     *
-     * @return PromiseInterface
-     */
-    public static function settle($promises)
-    {
-        $results = [];
-
-        return Each::of(
-            $promises,
-            function ($value, $idx) use (&$results) {
-                $results[$idx] = ['state' => PromiseInterface::FULFILLED, 'value' => $value];
-            },
-            function ($reason, $idx) use (&$results) {
-                $results[$idx] = ['state' => PromiseInterface::REJECTED, 'reason' => $reason];
-            }
-        )->then(function () use (&$results) {
-            ksort($results);
-            return $results;
-        });
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/functions.php b/vendor/guzzlehttp/promises/src/functions.php
deleted file mode 100644
index c03d39d02107836ccdd9205c6d62b98ac5d5a53a..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/functions.php
+++ /dev/null
@@ -1,363 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Promise;
-
-/**
- * Get the global task queue used for promise resolution.
- *
- * This task queue MUST be run in an event loop in order for promises to be
- * settled asynchronously. It will be automatically run when synchronously
- * waiting on a promise.
- *
- * <code>
- * while ($eventLoop->isRunning()) {
- *     GuzzleHttp\Promise\queue()->run();
- * }
- * </code>
- *
- * @param TaskQueueInterface $assign Optionally specify a new queue instance.
- *
- * @return TaskQueueInterface
- *
- * @deprecated queue will be removed in guzzlehttp/promises:2.0. Use Utils::queue instead.
- */
-function queue(TaskQueueInterface $assign = null)
-{
-    return Utils::queue($assign);
-}
-
-/**
- * Adds a function to run in the task queue when it is next `run()` and returns
- * a promise that is fulfilled or rejected with the result.
- *
- * @param callable $task Task function to run.
- *
- * @return PromiseInterface
- *
- * @deprecated task will be removed in guzzlehttp/promises:2.0. Use Utils::task instead.
- */
-function task(callable $task)
-{
-    return Utils::task($task);
-}
-
-/**
- * Creates a promise for a value if the value is not a promise.
- *
- * @param mixed $value Promise or value.
- *
- * @return PromiseInterface
- *
- * @deprecated promise_for will be removed in guzzlehttp/promises:2.0. Use Create::promiseFor instead.
- */
-function promise_for($value)
-{
-    return Create::promiseFor($value);
-}
-
-/**
- * Creates a rejected promise for a reason if the reason is not a promise. If
- * the provided reason is a promise, then it is returned as-is.
- *
- * @param mixed $reason Promise or reason.
- *
- * @return PromiseInterface
- *
- * @deprecated rejection_for will be removed in guzzlehttp/promises:2.0. Use Create::rejectionFor instead.
- */
-function rejection_for($reason)
-{
-    return Create::rejectionFor($reason);
-}
-
-/**
- * Create an exception for a rejected promise value.
- *
- * @param mixed $reason
- *
- * @return \Exception|\Throwable
- *
- * @deprecated exception_for will be removed in guzzlehttp/promises:2.0. Use Create::exceptionFor instead.
- */
-function exception_for($reason)
-{
-    return Create::exceptionFor($reason);
-}
-
-/**
- * Returns an iterator for the given value.
- *
- * @param mixed $value
- *
- * @return \Iterator
- *
- * @deprecated iter_for will be removed in guzzlehttp/promises:2.0. Use Create::iterFor instead.
- */
-function iter_for($value)
-{
-    return Create::iterFor($value);
-}
-
-/**
- * Synchronously waits on a promise to resolve and returns an inspection state
- * array.
- *
- * Returns a state associative array containing a "state" key mapping to a
- * valid promise state. If the state of the promise is "fulfilled", the array
- * will contain a "value" key mapping to the fulfilled value of the promise. If
- * the promise is rejected, the array will contain a "reason" key mapping to
- * the rejection reason of the promise.
- *
- * @param PromiseInterface $promise Promise or value.
- *
- * @return array
- *
- * @deprecated inspect will be removed in guzzlehttp/promises:2.0. Use Utils::inspect instead.
- */
-function inspect(PromiseInterface $promise)
-{
-    return Utils::inspect($promise);
-}
-
-/**
- * Waits on all of the provided promises, but does not unwrap rejected promises
- * as thrown exception.
- *
- * Returns an array of inspection state arrays.
- *
- * @see inspect for the inspection state array format.
- *
- * @param PromiseInterface[] $promises Traversable of promises to wait upon.
- *
- * @return array
- *
- * @deprecated inspect will be removed in guzzlehttp/promises:2.0. Use Utils::inspectAll instead.
- */
-function inspect_all($promises)
-{
-    return Utils::inspectAll($promises);
-}
-
-/**
- * Waits on all of the provided promises and returns the fulfilled values.
- *
- * Returns an array that contains the value of each promise (in the same order
- * the promises were provided). An exception is thrown if any of the promises
- * are rejected.
- *
- * @param iterable<PromiseInterface> $promises Iterable of PromiseInterface objects to wait on.
- *
- * @return array
- *
- * @throws \Exception on error
- * @throws \Throwable on error in PHP >=7
- *
- * @deprecated unwrap will be removed in guzzlehttp/promises:2.0. Use Utils::unwrap instead.
- */
-function unwrap($promises)
-{
-    return Utils::unwrap($promises);
-}
-
-/**
- * Given an array of promises, return a promise that is fulfilled when all the
- * items in the array are fulfilled.
- *
- * The promise's fulfillment value is an array with fulfillment values at
- * respective positions to the original array. If any promise in the array
- * rejects, the returned promise is rejected with the rejection reason.
- *
- * @param mixed $promises  Promises or values.
- * @param bool  $recursive If true, resolves new promises that might have been added to the stack during its own resolution.
- *
- * @return PromiseInterface
- *
- * @deprecated all will be removed in guzzlehttp/promises:2.0. Use Utils::all instead.
- */
-function all($promises, $recursive = false)
-{
-    return Utils::all($promises, $recursive);
-}
-
-/**
- * Initiate a competitive race between multiple promises or values (values will
- * become immediately fulfilled promises).
- *
- * When count amount of promises have been fulfilled, the returned promise is
- * fulfilled with an array that contains the fulfillment values of the winners
- * in order of resolution.
- *
- * This promise is rejected with a {@see AggregateException} if the number of
- * fulfilled promises is less than the desired $count.
- *
- * @param int   $count    Total number of promises.
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- *
- * @deprecated some will be removed in guzzlehttp/promises:2.0. Use Utils::some instead.
- */
-function some($count, $promises)
-{
-    return Utils::some($count, $promises);
-}
-
-/**
- * Like some(), with 1 as count. However, if the promise fulfills, the
- * fulfillment value is not an array of 1 but the value directly.
- *
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- *
- * @deprecated any will be removed in guzzlehttp/promises:2.0. Use Utils::any instead.
- */
-function any($promises)
-{
-    return Utils::any($promises);
-}
-
-/**
- * Returns a promise that is fulfilled when all of the provided promises have
- * been fulfilled or rejected.
- *
- * The returned promise is fulfilled with an array of inspection state arrays.
- *
- * @see inspect for the inspection state array format.
- *
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- *
- * @deprecated settle will be removed in guzzlehttp/promises:2.0. Use Utils::settle instead.
- */
-function settle($promises)
-{
-    return Utils::settle($promises);
-}
-
-/**
- * Given an iterator that yields promises or values, returns a promise that is
- * fulfilled with a null value when the iterator has been consumed or the
- * aggregate promise has been fulfilled or rejected.
- *
- * $onFulfilled is a function that accepts the fulfilled value, iterator index,
- * and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate if needed.
- *
- * $onRejected is a function that accepts the rejection reason, iterator index,
- * and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate if needed.
- *
- * @param mixed    $iterable    Iterator or array to iterate over.
- * @param callable $onFulfilled
- * @param callable $onRejected
- *
- * @return PromiseInterface
- *
- * @deprecated each will be removed in guzzlehttp/promises:2.0. Use Each::of instead.
- */
-function each(
-    $iterable,
-    callable $onFulfilled = null,
-    callable $onRejected = null
-) {
-    return Each::of($iterable, $onFulfilled, $onRejected);
-}
-
-/**
- * Like each, but only allows a certain number of outstanding promises at any
- * given time.
- *
- * $concurrency may be an integer or a function that accepts the number of
- * pending promises and returns a numeric concurrency limit value to allow for
- * dynamic a concurrency size.
- *
- * @param mixed        $iterable
- * @param int|callable $concurrency
- * @param callable     $onFulfilled
- * @param callable     $onRejected
- *
- * @return PromiseInterface
- *
- * @deprecated each_limit will be removed in guzzlehttp/promises:2.0. Use Each::ofLimit instead.
- */
-function each_limit(
-    $iterable,
-    $concurrency,
-    callable $onFulfilled = null,
-    callable $onRejected = null
-) {
-    return Each::ofLimit($iterable, $concurrency, $onFulfilled, $onRejected);
-}
-
-/**
- * Like each_limit, but ensures that no promise in the given $iterable argument
- * is rejected. If any promise is rejected, then the aggregate promise is
- * rejected with the encountered rejection.
- *
- * @param mixed        $iterable
- * @param int|callable $concurrency
- * @param callable     $onFulfilled
- *
- * @return PromiseInterface
- *
- * @deprecated each_limit_all will be removed in guzzlehttp/promises:2.0. Use Each::ofLimitAll instead.
- */
-function each_limit_all(
-    $iterable,
-    $concurrency,
-    callable $onFulfilled = null
-) {
-    return Each::ofLimitAll($iterable, $concurrency, $onFulfilled);
-}
-
-/**
- * Returns true if a promise is fulfilled.
- *
- * @return bool
- *
- * @deprecated is_fulfilled will be removed in guzzlehttp/promises:2.0. Use Is::fulfilled instead.
- */
-function is_fulfilled(PromiseInterface $promise)
-{
-    return Is::fulfilled($promise);
-}
-
-/**
- * Returns true if a promise is rejected.
- *
- * @return bool
- *
- * @deprecated is_rejected will be removed in guzzlehttp/promises:2.0. Use Is::rejected instead.
- */
-function is_rejected(PromiseInterface $promise)
-{
-    return Is::rejected($promise);
-}
-
-/**
- * Returns true if a promise is fulfilled or rejected.
- *
- * @return bool
- *
- * @deprecated is_settled will be removed in guzzlehttp/promises:2.0. Use Is::settled instead.
- */
-function is_settled(PromiseInterface $promise)
-{
-    return Is::settled($promise);
-}
-
-/**
- * Create a new coroutine.
- *
- * @see Coroutine
- *
- * @return PromiseInterface
- *
- * @deprecated coroutine will be removed in guzzlehttp/promises:2.0. Use Coroutine::of instead.
- */
-function coroutine(callable $generatorFn)
-{
-    return Coroutine::of($generatorFn);
-}
diff --git a/vendor/guzzlehttp/promises/src/functions_include.php b/vendor/guzzlehttp/promises/src/functions_include.php
deleted file mode 100644
index 34cd1710aa220b6e7ee59a7bda1ea0c6ab52ef80..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/promises/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-// Don't redefine the functions if included multiple times.
-if (!function_exists('GuzzleHttp\Promise\promise_for')) {
-    require __DIR__ . '/functions.php';
-}
diff --git a/vendor/guzzlehttp/psr7/CHANGELOG.md b/vendor/guzzlehttp/psr7/CHANGELOG.md
deleted file mode 100644
index b441d36668e1ccdf386cf2ac74d51b30ba450ba9..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/CHANGELOG.md
+++ /dev/null
@@ -1,270 +0,0 @@
-# Change Log
-
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
-
-
-## [Unreleased]
-
-## [1.7.0] - 2020-09-30
-
-### Added
-
-- Replaced functions by static methods
-
-### Fixed
-
-- Converting a non-seekable stream to a string
-- Handle multiple Set-Cookie correctly
-- Ignore array keys in header values when merging
-- Allow multibyte characters to be parsed in `Message:bodySummary()`
-
-### Changed
-
-- Restored partial HHVM 3 support
-
-
-## [1.6.1] - 2019-07-02
-
-### Fixed
-
-- Accept null and bool header values again
-
-
-## [1.6.0] - 2019-06-30
-
-### Added
-
-- Allowed version `^3.0` of `ralouphie/getallheaders` dependency (#244)
-- Added MIME type for WEBP image format (#246)
-- Added more validation of values according to PSR-7 and RFC standards, e.g. status code range (#250, #272)
-
-### Changed
-
-- Tests don't pass with HHVM 4.0, so HHVM support got dropped. Other libraries like composer have done the same. (#262)
-- Accept port number 0 to be valid (#270)
-
-### Fixed
-
-- Fixed subsequent reads from `php://input` in ServerRequest (#247)
-- Fixed readable/writable detection for certain stream modes (#248)
-- Fixed encoding of special characters in the `userInfo` component of an URI (#253)
-
-
-## [1.5.2] - 2018-12-04
-
-### Fixed
-
-- Check body size when getting the message summary
-
-
-## [1.5.1] - 2018-12-04
-
-### Fixed
-
-- Get the summary of a body only if it is readable
-
-
-## [1.5.0] - 2018-12-03
-
-### Added
-
-- Response first-line to response string exception (fixes #145)
-- A test for #129 behavior
-- `get_message_body_summary` function in order to get the message summary
-- `3gp` and `mkv` mime types
-
-### Changed
-
-- Clarify exception message when stream is detached
-
-### Deprecated
-
-- Deprecated parsing folded header lines as per RFC 7230
-
-### Fixed
-
-- Fix `AppendStream::detach` to not close streams
-- `InflateStream` preserves `isSeekable` attribute of the underlying stream
-- `ServerRequest::getUriFromGlobals` to support URLs in query parameters
-
-
-Several other fixes and improvements.
-
-
-## [1.4.2] - 2017-03-20
-
-### Fixed
-
-- Reverted BC break to `Uri::resolve` and `Uri::removeDotSegments` by removing
-  calls to `trigger_error` when deprecated methods are invoked.
-
-
-## [1.4.1] - 2017-02-27
-
-### Added
-
-- Rriggering of silenced deprecation warnings.
-
-### Fixed
-
-- Reverted BC break by reintroducing behavior to automagically fix a URI with a
-  relative path and an authority by adding a leading slash to the path. It's only
-  deprecated now.
-
-
-## [1.4.0] - 2017-02-21
-
-### Added
-
-- Added common URI utility methods based on RFC 3986 (see documentation in the readme):
-  - `Uri::isDefaultPort`
-  - `Uri::isAbsolute`
-  - `Uri::isNetworkPathReference`
-  - `Uri::isAbsolutePathReference`
-  - `Uri::isRelativePathReference`
-  - `Uri::isSameDocumentReference`
-  - `Uri::composeComponents`
-  - `UriNormalizer::normalize`
-  - `UriNormalizer::isEquivalent`
-  - `UriResolver::relativize`
-
-### Changed
-
-- Ensure `ServerRequest::getUriFromGlobals` returns a URI in absolute form.
-- Allow `parse_response` to parse a response without delimiting space and reason.
-- Ensure each URI modification results in a valid URI according to PSR-7 discussions.
-  Invalid modifications will throw an exception instead of returning a wrong URI or
-  doing some magic.
-  - `(new Uri)->withPath('foo')->withHost('example.com')` will throw an exception
-    because the path of a URI with an authority must start with a slash "/" or be empty
-  - `(new Uri())->withScheme('http')` will return `'http://localhost'`
-
-### Deprecated
-
-- `Uri::resolve` in favor of `UriResolver::resolve`
-- `Uri::removeDotSegments` in favor of `UriResolver::removeDotSegments`
-
-### Fixed
-
-- `Stream::read` when length parameter <= 0.
-- `copy_to_stream` reads bytes in chunks instead of `maxLen` into memory.
-- `ServerRequest::getUriFromGlobals` when `Host` header contains port.
-- Compatibility of URIs with `file` scheme and empty host.
-
-
-## [1.3.1] - 2016-06-25
-
-### Fixed
-
-- `Uri::__toString` for network path references, e.g. `//example.org`.
-- Missing lowercase normalization for host.
-- Handling of URI components in case they are `'0'` in a lot of places,
-  e.g. as a user info password.
-- `Uri::withAddedHeader` to correctly merge headers with different case.
-- Trimming of header values in `Uri::withAddedHeader`. Header values may
-  be surrounded by whitespace which should be ignored according to RFC 7230
-  Section 3.2.4. This does not apply to header names.
-- `Uri::withAddedHeader` with an array of header values.
-- `Uri::resolve` when base path has no slash and handling of fragment.
-- Handling of encoding in `Uri::with(out)QueryValue` so one can pass the
-  key/value both in encoded as well as decoded form to those methods. This is
-  consistent with withPath, withQuery etc.
-- `ServerRequest::withoutAttribute` when attribute value is null.
-
-
-## [1.3.0] - 2016-04-13
-
-### Added
-
-- Remaining interfaces needed for full PSR7 compatibility
-  (ServerRequestInterface, UploadedFileInterface, etc.).
-- Support for stream_for from scalars.
-
-### Changed
-
-- Can now extend Uri.
-
-### Fixed
-- A bug in validating request methods by making it more permissive.
-
-
-## [1.2.3] - 2016-02-18
-
-### Fixed
-
-- Support in `GuzzleHttp\Psr7\CachingStream` for seeking forward on remote
-  streams, which can sometimes return fewer bytes than requested with `fread`.
-- Handling of gzipped responses with FNAME headers.
-
-
-## [1.2.2] - 2016-01-22
-
-### Added
-
-- Support for URIs without any authority.
-- Support for HTTP 451 'Unavailable For Legal Reasons.'
-- Support for using '0' as a filename.
-- Support for including non-standard ports in Host headers.
-
-
-## [1.2.1] - 2015-11-02
-
-### Changes
-
-- Now supporting negative offsets when seeking to SEEK_END.
-
-
-## [1.2.0] - 2015-08-15
-
-### Changed
-
-- Body as `"0"` is now properly added to a response.
-- Now allowing forward seeking in CachingStream.
-- Now properly parsing HTTP requests that contain proxy targets in
-  `parse_request`.
-- functions.php is now conditionally required.
-- user-info is no longer dropped when resolving URIs.
-
-
-## [1.1.0] - 2015-06-24
-
-### Changed
-
-- URIs can now be relative.
-- `multipart/form-data` headers are now overridden case-insensitively.
-- URI paths no longer encode the following characters because they are allowed
-  in URIs: "(", ")", "*", "!", "'"
-- A port is no longer added to a URI when the scheme is missing and no port is
-  present.
-
-
-## 1.0.0 - 2015-05-19
-
-Initial release.
-
-Currently unsupported:
-
-- `Psr\Http\Message\ServerRequestInterface`
-- `Psr\Http\Message\UploadedFileInterface`
-
-
-
-[Unreleased]: https://github.com/guzzle/psr7/compare/1.6.0...HEAD
-[1.6.0]: https://github.com/guzzle/psr7/compare/1.5.2...1.6.0
-[1.5.2]: https://github.com/guzzle/psr7/compare/1.5.1...1.5.2
-[1.5.1]: https://github.com/guzzle/psr7/compare/1.5.0...1.5.1
-[1.5.0]: https://github.com/guzzle/psr7/compare/1.4.2...1.5.0
-[1.4.2]: https://github.com/guzzle/psr7/compare/1.4.1...1.4.2
-[1.4.1]: https://github.com/guzzle/psr7/compare/1.4.0...1.4.1
-[1.4.0]: https://github.com/guzzle/psr7/compare/1.3.1...1.4.0
-[1.3.1]: https://github.com/guzzle/psr7/compare/1.3.0...1.3.1
-[1.3.0]: https://github.com/guzzle/psr7/compare/1.2.3...1.3.0
-[1.2.3]: https://github.com/guzzle/psr7/compare/1.2.2...1.2.3
-[1.2.2]: https://github.com/guzzle/psr7/compare/1.2.1...1.2.2
-[1.2.1]: https://github.com/guzzle/psr7/compare/1.2.0...1.2.1
-[1.2.0]: https://github.com/guzzle/psr7/compare/1.1.0...1.2.0
-[1.1.0]: https://github.com/guzzle/psr7/compare/1.0.0...1.1.0
diff --git a/vendor/guzzlehttp/psr7/LICENSE b/vendor/guzzlehttp/psr7/LICENSE
deleted file mode 100644
index 581d95f92024be7c805599690867b4d1e2e10f40..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/guzzlehttp/psr7/README.md b/vendor/guzzlehttp/psr7/README.md
deleted file mode 100644
index acfabfdcbe31b20849706a77bead39872589d397..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/README.md
+++ /dev/null
@@ -1,809 +0,0 @@
-# PSR-7 Message Implementation
-
-This repository contains a full [PSR-7](http://www.php-fig.org/psr/psr-7/)
-message implementation, several stream decorators, and some helpful
-functionality like query string parsing.
-
-
-[![Build Status](https://travis-ci.org/guzzle/psr7.svg?branch=master)](https://travis-ci.org/guzzle/psr7)
-
-
-# Stream implementation
-
-This package comes with a number of stream implementations and stream
-decorators.
-
-
-## AppendStream
-
-`GuzzleHttp\Psr7\AppendStream`
-
-Reads from multiple streams, one after the other.
-
-```php
-use GuzzleHttp\Psr7;
-
-$a = Psr7\Utils::streamFor('abc, ');
-$b = Psr7\Utils::streamFor('123.');
-$composed = new Psr7\AppendStream([$a, $b]);
-
-$composed->addStream(Psr7\Utils::streamFor(' Above all listen to me'));
-
-echo $composed; // abc, 123. Above all listen to me.
-```
-
-
-## BufferStream
-
-`GuzzleHttp\Psr7\BufferStream`
-
-Provides a buffer stream that can be written to fill a buffer, and read
-from to remove bytes from the buffer.
-
-This stream returns a "hwm" metadata value that tells upstream consumers
-what the configured high water mark of the stream is, or the maximum
-preferred size of the buffer.
-
-```php
-use GuzzleHttp\Psr7;
-
-// When more than 1024 bytes are in the buffer, it will begin returning
-// false to writes. This is an indication that writers should slow down.
-$buffer = new Psr7\BufferStream(1024);
-```
-
-
-## CachingStream
-
-The CachingStream is used to allow seeking over previously read bytes on
-non-seekable streams. This can be useful when transferring a non-seekable
-entity body fails due to needing to rewind the stream (for example, resulting
-from a redirect). Data that is read from the remote stream will be buffered in
-a PHP temp stream so that previously read bytes are cached first in memory,
-then on disk.
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\Utils::streamFor(fopen('http://www.google.com', 'r'));
-$stream = new Psr7\CachingStream($original);
-
-$stream->read(1024);
-echo $stream->tell();
-// 1024
-
-$stream->seek(0);
-echo $stream->tell();
-// 0
-```
-
-
-## DroppingStream
-
-`GuzzleHttp\Psr7\DroppingStream`
-
-Stream decorator that begins dropping data once the size of the underlying
-stream becomes too full.
-
-```php
-use GuzzleHttp\Psr7;
-
-// Create an empty stream
-$stream = Psr7\Utils::streamFor();
-
-// Start dropping data when the stream has more than 10 bytes
-$dropping = new Psr7\DroppingStream($stream, 10);
-
-$dropping->write('01234567890123456789');
-echo $stream; // 0123456789
-```
-
-
-## FnStream
-
-`GuzzleHttp\Psr7\FnStream`
-
-Compose stream implementations based on a hash of functions.
-
-Allows for easy testing and extension of a provided stream without needing
-to create a concrete class for a simple extension point.
-
-```php
-
-use GuzzleHttp\Psr7;
-
-$stream = Psr7\Utils::streamFor('hi');
-$fnStream = Psr7\FnStream::decorate($stream, [
-    'rewind' => function () use ($stream) {
-        echo 'About to rewind - ';
-        $stream->rewind();
-        echo 'rewound!';
-    }
-]);
-
-$fnStream->rewind();
-// Outputs: About to rewind - rewound!
-```
-
-
-## InflateStream
-
-`GuzzleHttp\Psr7\InflateStream`
-
-Uses PHP's zlib.inflate filter to inflate deflate or gzipped content.
-
-This stream decorator skips the first 10 bytes of the given stream to remove
-the gzip header, converts the provided stream to a PHP stream resource,
-then appends the zlib.inflate filter. The stream is then converted back
-to a Guzzle stream resource to be used as a Guzzle stream.
-
-
-## LazyOpenStream
-
-`GuzzleHttp\Psr7\LazyOpenStream`
-
-Lazily reads or writes to a file that is opened only after an IO operation
-take place on the stream.
-
-```php
-use GuzzleHttp\Psr7;
-
-$stream = new Psr7\LazyOpenStream('/path/to/file', 'r');
-// The file has not yet been opened...
-
-echo $stream->read(10);
-// The file is opened and read from only when needed.
-```
-
-
-## LimitStream
-
-`GuzzleHttp\Psr7\LimitStream`
-
-LimitStream can be used to read a subset or slice of an existing stream object.
-This can be useful for breaking a large file into smaller pieces to be sent in
-chunks (e.g. Amazon S3's multipart upload API).
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\Utils::streamFor(fopen('/tmp/test.txt', 'r+'));
-echo $original->getSize();
-// >>> 1048576
-
-// Limit the size of the body to 1024 bytes and start reading from byte 2048
-$stream = new Psr7\LimitStream($original, 1024, 2048);
-echo $stream->getSize();
-// >>> 1024
-echo $stream->tell();
-// >>> 0
-```
-
-
-## MultipartStream
-
-`GuzzleHttp\Psr7\MultipartStream`
-
-Stream that when read returns bytes for a streaming multipart or
-multipart/form-data stream.
-
-
-## NoSeekStream
-
-`GuzzleHttp\Psr7\NoSeekStream`
-
-NoSeekStream wraps a stream and does not allow seeking.
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\Utils::streamFor('foo');
-$noSeek = new Psr7\NoSeekStream($original);
-
-echo $noSeek->read(3);
-// foo
-var_export($noSeek->isSeekable());
-// false
-$noSeek->seek(0);
-var_export($noSeek->read(3));
-// NULL
-```
-
-
-## PumpStream
-
-`GuzzleHttp\Psr7\PumpStream`
-
-Provides a read only stream that pumps data from a PHP callable.
-
-When invoking the provided callable, the PumpStream will pass the amount of
-data requested to read to the callable. The callable can choose to ignore
-this value and return fewer or more bytes than requested. Any extra data
-returned by the provided callable is buffered internally until drained using
-the read() function of the PumpStream. The provided callable MUST return
-false when there is no more data to read.
-
-
-## Implementing stream decorators
-
-Creating a stream decorator is very easy thanks to the
-`GuzzleHttp\Psr7\StreamDecoratorTrait`. This trait provides methods that
-implement `Psr\Http\Message\StreamInterface` by proxying to an underlying
-stream. Just `use` the `StreamDecoratorTrait` and implement your custom
-methods.
-
-For example, let's say we wanted to call a specific function each time the last
-byte is read from a stream. This could be implemented by overriding the
-`read()` method.
-
-```php
-use Psr\Http\Message\StreamInterface;
-use GuzzleHttp\Psr7\StreamDecoratorTrait;
-
-class EofCallbackStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    private $callback;
-
-    public function __construct(StreamInterface $stream, callable $cb)
-    {
-        $this->stream = $stream;
-        $this->callback = $cb;
-    }
-
-    public function read($length)
-    {
-        $result = $this->stream->read($length);
-
-        // Invoke the callback when EOF is hit.
-        if ($this->eof()) {
-            call_user_func($this->callback);
-        }
-
-        return $result;
-    }
-}
-```
-
-This decorator could be added to any existing stream and used like so:
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\Utils::streamFor('foo');
-
-$eofStream = new EofCallbackStream($original, function () {
-    echo 'EOF!';
-});
-
-$eofStream->read(2);
-$eofStream->read(1);
-// echoes "EOF!"
-$eofStream->seek(0);
-$eofStream->read(3);
-// echoes "EOF!"
-```
-
-
-## PHP StreamWrapper
-
-You can use the `GuzzleHttp\Psr7\StreamWrapper` class if you need to use a
-PSR-7 stream as a PHP stream resource.
-
-Use the `GuzzleHttp\Psr7\StreamWrapper::getResource()` method to create a PHP
-stream from a PSR-7 stream.
-
-```php
-use GuzzleHttp\Psr7\StreamWrapper;
-
-$stream = GuzzleHttp\Psr7\Utils::streamFor('hello!');
-$resource = StreamWrapper::getResource($stream);
-echo fread($resource, 6); // outputs hello!
-```
-
-
-# Static API
-
-There are various static methods available under the `GuzzleHttp\Psr7` namespace.
-
-
-## `GuzzleHttp\Psr7\Message::toString`
-
-`public static function toString(MessageInterface $message): string`
-
-Returns the string representation of an HTTP message.
-
-```php
-$request = new GuzzleHttp\Psr7\Request('GET', 'http://example.com');
-echo GuzzleHttp\Psr7\Message::toString($request);
-```
-
-
-## `GuzzleHttp\Psr7\Message::bodySummary`
-
-`public static function bodySummary(MessageInterface $message, int $truncateAt = 120): string|null`
-
-Get a short summary of the message body.
-
-Will return `null` if the response is not printable.
-
-
-## `GuzzleHttp\Psr7\Message::rewindBody`
-
-`public static function rewindBody(MessageInterface $message): void`
-
-Attempts to rewind a message body and throws an exception on failure.
-
-The body of the message will only be rewound if a call to `tell()`
-returns a value other than `0`.
-
-
-## `GuzzleHttp\Psr7\Message::parseMessage`
-
-`public static function parseMessage(string $message): array`
-
-Parses an HTTP message into an associative array.
-
-The array contains the "start-line" key containing the start line of
-the message, "headers" key containing an associative array of header
-array values, and a "body" key containing the body of the message.
-
-
-## `GuzzleHttp\Psr7\Message::parseRequestUri`
-
-`public static function parseRequestUri(string $path, array $headers): string`
-
-Constructs a URI for an HTTP request message.
-
-
-## `GuzzleHttp\Psr7\Message::parseRequest`
-
-`public static function parseRequest(string $message): Request`
-
-Parses a request message string into a request object.
-
-
-## `GuzzleHttp\Psr7\Message::parseResponse`
-
-`public static function parseResponse(string $message): Response`
-
-Parses a response message string into a response object.
-
-
-## `GuzzleHttp\Psr7\Header::parse`
-
-`public static function parse(string|array $header): array`
-
-Parse an array of header values containing ";" separated data into an
-array of associative arrays representing the header key value pair data
-of the header. When a parameter does not contain a value, but just
-contains a key, this function will inject a key with a '' string value.
-
-
-## `GuzzleHttp\Psr7\Header::normalize`
-
-`public static function normalize(string|array $header): array`
-
-Converts an array of header values that may contain comma separated
-headers into an array of headers with no comma separated values.
-
-
-## `GuzzleHttp\Psr7\Query::parse`
-
-`public static function parse(string $str, int|bool $urlEncoding = true): array`
-
-Parse a query string into an associative array.
-
-If multiple values are found for the same key, the value of that key
-value pair will become an array. This function does not parse nested
-PHP style arrays into an associative array (e.g., `foo[a]=1&foo[b]=2`
-will be parsed into `['foo[a]' => '1', 'foo[b]' => '2'])`.
-
-
-## `GuzzleHttp\Psr7\Query::build`
-
-`public static function build(array $params, int|false $encoding = PHP_QUERY_RFC3986): string`
-
-Build a query string from an array of key value pairs.
-
-This function can use the return value of `parse()` to build a query
-string. This function does not modify the provided keys when an array is
-encountered (like `http_build_query()` would).
-
-
-## `GuzzleHttp\Psr7\Utils::caselessRemove`
-
-`public static function caselessRemove(iterable<string> $keys, $keys, array $data): array`
-
-Remove the items given by the keys, case insensitively from the data.
-
-
-## `GuzzleHttp\Psr7\Utils::copyToStream`
-
-`public static function copyToStream(StreamInterface $source, StreamInterface $dest, int $maxLen = -1): void`
-
-Copy the contents of a stream into another stream until the given number
-of bytes have been read.
-
-
-## `GuzzleHttp\Psr7\Utils::copyToString`
-
-`public static function copyToString(StreamInterface $stream, int $maxLen = -1): string`
-
-Copy the contents of a stream into a string until the given number of
-bytes have been read.
-
-
-## `GuzzleHttp\Psr7\Utils::hash`
-
-`public static function hash(StreamInterface $stream, string $algo, bool $rawOutput = false): string`
-
-Calculate a hash of a stream.
-
-This method reads the entire stream to calculate a rolling hash, based on
-PHP's `hash_init` functions.
-
-
-## `GuzzleHttp\Psr7\Utils::modifyRequest`
-
-`public static function modifyRequest(RequestInterface $request, array $changes): RequestInterface`
-
-Clone and modify a request with the given changes.
-
-This method is useful for reducing the number of clones needed to mutate
-a message.
-
-- method: (string) Changes the HTTP method.
-- set_headers: (array) Sets the given headers.
-- remove_headers: (array) Remove the given headers.
-- body: (mixed) Sets the given body.
-- uri: (UriInterface) Set the URI.
-- query: (string) Set the query string value of the URI.
-- version: (string) Set the protocol version.
-
-
-## `GuzzleHttp\Psr7\Utils::readLine`
-
-`public static function readLine(StreamInterface $stream, int $maxLength = null): string`
-
-Read a line from the stream up to the maximum allowed buffer length.
-
-
-## `GuzzleHttp\Psr7\Utils::streamFor`
-
-`public static function streamFor(resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource = '', array $options = []): StreamInterface`
-
-Create a new stream based on the input type.
-
-Options is an associative array that can contain the following keys:
-
-- metadata: Array of custom metadata.
-- size: Size of the stream.
-
-This method accepts the following `$resource` types:
-
-- `Psr\Http\Message\StreamInterface`: Returns the value as-is.
-- `string`: Creates a stream object that uses the given string as the contents.
-- `resource`: Creates a stream object that wraps the given PHP stream resource.
-- `Iterator`: If the provided value implements `Iterator`, then a read-only
-  stream object will be created that wraps the given iterable. Each time the
-  stream is read from, data from the iterator will fill a buffer and will be
-  continuously called until the buffer is equal to the requested read size.
-  Subsequent read calls will first read from the buffer and then call `next`
-  on the underlying iterator until it is exhausted.
-- `object` with `__toString()`: If the object has the `__toString()` method,
-  the object will be cast to a string and then a stream will be returned that
-  uses the string value.
-- `NULL`: When `null` is passed, an empty stream object is returned.
-- `callable` When a callable is passed, a read-only stream object will be
-  created that invokes the given callable. The callable is invoked with the
-  number of suggested bytes to read. The callable can return any number of
-  bytes, but MUST return `false` when there is no more data to return. The
-  stream object that wraps the callable will invoke the callable until the
-  number of requested bytes are available. Any additional bytes will be
-  buffered and used in subsequent reads.
-
-```php
-$stream = GuzzleHttp\Psr7\Utils::streamFor('foo');
-$stream = GuzzleHttp\Psr7\Utils::streamFor(fopen('/path/to/file', 'r'));
-
-$generator = function ($bytes) {
-    for ($i = 0; $i < $bytes; $i++) {
-        yield ' ';
-    }
-}
-
-$stream = GuzzleHttp\Psr7\Utils::streamFor($generator(100));
-```
-
-
-## `GuzzleHttp\Psr7\Utils::tryFopen`
-
-`public static function tryFopen(string $filename, string $mode): resource`
-
-Safely opens a PHP stream resource using a filename.
-
-When fopen fails, PHP normally raises a warning. This function adds an
-error handler that checks for errors and throws an exception instead.
-
-
-## `GuzzleHttp\Psr7\Utils::uriFor`
-
-`public static function uriFor(string|UriInterface $uri): UriInterface`
-
-Returns a UriInterface for the given value.
-
-This function accepts a string or UriInterface and returns a
-UriInterface for the given value. If the value is already a
-UriInterface, it is returned as-is.
-
-
-## `GuzzleHttp\Psr7\MimeType::fromFilename`
-
-`public static function fromFilename(string $filename): string|null`
-
-Determines the mimetype of a file by looking at its extension.
-
-
-## `GuzzleHttp\Psr7\MimeType::fromExtension`
-
-`public static function fromExtension(string $extension): string|null`
-
-Maps a file extensions to a mimetype.
-
-
-## Upgrading from Function API
-
-The static API was first introduced in 1.7.0, in order to mitigate problems with functions conflicting between global and local copies of the package. The function API will be removed in 2.0.0. A migration table has been provided here for your convenience:
-
-| Original Function | Replacement Method |
-|----------------|----------------|
-| `str` | `Message::toString` |
-| `uri_for` | `Utils::uriFor` |
-| `stream_for` | `Utils::streamFor` |
-| `parse_header` | `Header::parse` |
-| `normalize_header` | `Header::normalize` |
-| `modify_request` | `Utils::modifyRequest` |
-| `rewind_body` | `Message::rewindBody` |
-| `try_fopen` | `Utils::tryFopen` |
-| `copy_to_string` | `Utils::copyToString` |
-| `copy_to_stream` | `Utils::copyToStream` |
-| `hash` | `Utils::hash` |
-| `readline` | `Utils::readLine` |
-| `parse_request` | `Message::parseRequest` |
-| `parse_response` | `Message::parseResponse` |
-| `parse_query` | `Query::parse` |
-| `build_query` | `Query::build` |
-| `mimetype_from_filename` | `MimeType::fromFilename` |
-| `mimetype_from_extension` | `MimeType::fromExtension` |
-| `_parse_message` | `Message::parseMessage` |
-| `_parse_request_uri` | `Message::parseRequestUri` |
-| `get_message_body_summary` | `Message::bodySummary` |
-| `_caseless_remove` | `Utils::caselessRemove` |
-
-
-# Additional URI Methods
-
-Aside from the standard `Psr\Http\Message\UriInterface` implementation in form of the `GuzzleHttp\Psr7\Uri` class,
-this library also provides additional functionality when working with URIs as static methods.
-
-## URI Types
-
-An instance of `Psr\Http\Message\UriInterface` can either be an absolute URI or a relative reference.
-An absolute URI has a scheme. A relative reference is used to express a URI relative to another URI,
-the base URI. Relative references can be divided into several forms according to
-[RFC 3986 Section 4.2](https://tools.ietf.org/html/rfc3986#section-4.2):
-
-- network-path references, e.g. `//example.com/path`
-- absolute-path references, e.g. `/path`
-- relative-path references, e.g. `subpath`
-
-The following methods can be used to identify the type of the URI.
-
-### `GuzzleHttp\Psr7\Uri::isAbsolute`
-
-`public static function isAbsolute(UriInterface $uri): bool`
-
-Whether the URI is absolute, i.e. it has a scheme.
-
-### `GuzzleHttp\Psr7\Uri::isNetworkPathReference`
-
-`public static function isNetworkPathReference(UriInterface $uri): bool`
-
-Whether the URI is a network-path reference. A relative reference that begins with two slash characters is
-termed an network-path reference.
-
-### `GuzzleHttp\Psr7\Uri::isAbsolutePathReference`
-
-`public static function isAbsolutePathReference(UriInterface $uri): bool`
-
-Whether the URI is a absolute-path reference. A relative reference that begins with a single slash character is
-termed an absolute-path reference.
-
-### `GuzzleHttp\Psr7\Uri::isRelativePathReference`
-
-`public static function isRelativePathReference(UriInterface $uri): bool`
-
-Whether the URI is a relative-path reference. A relative reference that does not begin with a slash character is
-termed a relative-path reference.
-
-### `GuzzleHttp\Psr7\Uri::isSameDocumentReference`
-
-`public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null): bool`
-
-Whether the URI is a same-document reference. A same-document reference refers to a URI that is, aside from its
-fragment component, identical to the base URI. When no base URI is given, only an empty URI reference
-(apart from its fragment) is considered a same-document reference.
-
-## URI Components
-
-Additional methods to work with URI components.
-
-### `GuzzleHttp\Psr7\Uri::isDefaultPort`
-
-`public static function isDefaultPort(UriInterface $uri): bool`
-
-Whether the URI has the default port of the current scheme. `Psr\Http\Message\UriInterface::getPort` may return null
-or the standard port. This method can be used independently of the implementation.
-
-### `GuzzleHttp\Psr7\Uri::composeComponents`
-
-`public static function composeComponents($scheme, $authority, $path, $query, $fragment): string`
-
-Composes a URI reference string from its various components according to
-[RFC 3986 Section 5.3](https://tools.ietf.org/html/rfc3986#section-5.3). Usually this method does not need to be called
-manually but instead is used indirectly via `Psr\Http\Message\UriInterface::__toString`.
-
-### `GuzzleHttp\Psr7\Uri::fromParts`
-
-`public static function fromParts(array $parts): UriInterface`
-
-Creates a URI from a hash of [`parse_url`](http://php.net/manual/en/function.parse-url.php) components.
-
-
-### `GuzzleHttp\Psr7\Uri::withQueryValue`
-
-`public static function withQueryValue(UriInterface $uri, $key, $value): UriInterface`
-
-Creates a new URI with a specific query string value. Any existing query string values that exactly match the
-provided key are removed and replaced with the given key value pair. A value of null will set the query string
-key without a value, e.g. "key" instead of "key=value".
-
-### `GuzzleHttp\Psr7\Uri::withQueryValues`
-
-`public static function withQueryValues(UriInterface $uri, array $keyValueArray): UriInterface`
-
-Creates a new URI with multiple query string values. It has the same behavior as `withQueryValue()` but for an
-associative array of key => value.
-
-### `GuzzleHttp\Psr7\Uri::withoutQueryValue`
-
-`public static function withoutQueryValue(UriInterface $uri, $key): UriInterface`
-
-Creates a new URI with a specific query string value removed. Any existing query string values that exactly match the
-provided key are removed.
-
-## Reference Resolution
-
-`GuzzleHttp\Psr7\UriResolver` provides methods to resolve a URI reference in the context of a base URI according
-to [RFC 3986 Section 5](https://tools.ietf.org/html/rfc3986#section-5). This is for example also what web browsers
-do when resolving a link in a website based on the current request URI.
-
-### `GuzzleHttp\Psr7\UriResolver::resolve`
-
-`public static function resolve(UriInterface $base, UriInterface $rel): UriInterface`
-
-Converts the relative URI into a new URI that is resolved against the base URI.
-
-### `GuzzleHttp\Psr7\UriResolver::removeDotSegments`
-
-`public static function removeDotSegments(string $path): string`
-
-Removes dot segments from a path and returns the new path according to
-[RFC 3986 Section 5.2.4](https://tools.ietf.org/html/rfc3986#section-5.2.4).
-
-### `GuzzleHttp\Psr7\UriResolver::relativize`
-
-`public static function relativize(UriInterface $base, UriInterface $target): UriInterface`
-
-Returns the target URI as a relative reference from the base URI. This method is the counterpart to resolve():
-
-```php
-(string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target))
-```
-
-One use-case is to use the current request URI as base URI and then generate relative links in your documents
-to reduce the document size or offer self-contained downloadable document archives.
-
-```php
-$base = new Uri('http://example.com/a/b/');
-echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c'));  // prints 'c'.
-echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y'));  // prints '../x/y'.
-echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'.
-echo UriResolver::relativize($base, new Uri('http://example.org/a/b/'));   // prints '//example.org/a/b/'.
-```
-
-## Normalization and Comparison
-
-`GuzzleHttp\Psr7\UriNormalizer` provides methods to normalize and compare URIs according to
-[RFC 3986 Section 6](https://tools.ietf.org/html/rfc3986#section-6).
-
-### `GuzzleHttp\Psr7\UriNormalizer::normalize`
-
-`public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NORMALIZATIONS): UriInterface`
-
-Returns a normalized URI. The scheme and host component are already normalized to lowercase per PSR-7 UriInterface.
-This methods adds additional normalizations that can be configured with the `$flags` parameter which is a bitmask
-of normalizations to apply. The following normalizations are available:
-
-- `UriNormalizer::PRESERVING_NORMALIZATIONS`
-
-    Default normalizations which only include the ones that preserve semantics.
-
-- `UriNormalizer::CAPITALIZE_PERCENT_ENCODING`
-
-    All letters within a percent-encoding triplet (e.g., "%3A") are case-insensitive, and should be capitalized.
-
-    Example: `http://example.org/a%c2%b1b` → `http://example.org/a%C2%B1b`
-
-- `UriNormalizer::DECODE_UNRESERVED_CHARACTERS`
-
-    Decodes percent-encoded octets of unreserved characters. For consistency, percent-encoded octets in the ranges of
-    ALPHA (%41–%5A and %61–%7A), DIGIT (%30–%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should
-    not be created by URI producers and, when found in a URI, should be decoded to their corresponding unreserved
-    characters by URI normalizers.
-
-    Example: `http://example.org/%7Eusern%61me/` → `http://example.org/~username/`
-
-- `UriNormalizer::CONVERT_EMPTY_PATH`
-
-    Converts the empty path to "/" for http and https URIs.
-
-    Example: `http://example.org` → `http://example.org/`
-
-- `UriNormalizer::REMOVE_DEFAULT_HOST`
-
-    Removes the default host of the given URI scheme from the URI. Only the "file" scheme defines the default host
-    "localhost". All of `file:/myfile`, `file:///myfile`, and `file://localhost/myfile` are equivalent according to
-    RFC 3986.
-
-    Example: `file://localhost/myfile` → `file:///myfile`
-
-- `UriNormalizer::REMOVE_DEFAULT_PORT`
-
-    Removes the default port of the given URI scheme from the URI.
-
-    Example: `http://example.org:80/` → `http://example.org/`
-
-- `UriNormalizer::REMOVE_DOT_SEGMENTS`
-
-    Removes unnecessary dot-segments. Dot-segments in relative-path references are not removed as it would
-    change the semantics of the URI reference.
-
-    Example: `http://example.org/../a/b/../c/./d.html` → `http://example.org/a/c/d.html`
-
-- `UriNormalizer::REMOVE_DUPLICATE_SLASHES`
-
-    Paths which include two or more adjacent slashes are converted to one. Webservers usually ignore duplicate slashes
-    and treat those URIs equivalent. But in theory those URIs do not need to be equivalent. So this normalization
-    may change the semantics. Encoded slashes (%2F) are not removed.
-
-    Example: `http://example.org//foo///bar.html` → `http://example.org/foo/bar.html`
-
-- `UriNormalizer::SORT_QUERY_PARAMETERS`
-
-    Sort query parameters with their values in alphabetical order. However, the order of parameters in a URI may be
-    significant (this is not defined by the standard). So this normalization is not safe and may change the semantics
-    of the URI.
-
-    Example: `?lang=en&article=fred` → `?article=fred&lang=en`
-
-### `GuzzleHttp\Psr7\UriNormalizer::isEquivalent`
-
-`public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS): bool`
-
-Whether two URIs can be considered equivalent. Both URIs are normalized automatically before comparison with the given
-`$normalizations` bitmask. The method also accepts relative URI references and returns true when they are equivalent.
-This of course assumes they will be resolved against the same base URI. If this is not the case, determination of
-equivalence or difference of relative references does not mean anything.
diff --git a/vendor/guzzlehttp/psr7/composer.json b/vendor/guzzlehttp/psr7/composer.json
deleted file mode 100644
index 58dcb07e4c6d34ef12cd6caf13fa8996a13ce463..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/composer.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-    "name": "guzzlehttp/psr7",
-    "type": "library",
-    "description": "PSR-7 message implementation that also provides common utility methods",
-    "keywords": ["request", "response", "message", "stream", "http", "uri", "url", "psr-7"],
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Michael Dowling",
-            "email": "mtdowling@gmail.com",
-            "homepage": "https://github.com/mtdowling"
-        },
-        {
-            "name": "Tobias Schultze",
-            "homepage": "https://github.com/Tobion"
-        }
-    ],
-    "require": {
-        "php": ">=5.4.0",
-        "psr/http-message": "~1.0",
-        "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10",
-        "ext-zlib": "*"
-    },
-    "provide": {
-        "psr/http-message-implementation": "1.0"
-    },
-    "suggest": {
-        "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
-    },
-    "autoload": {
-        "psr-4": {
-            "GuzzleHttp\\Psr7\\": "src/"
-        },
-        "files": ["src/functions_include.php"]
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "GuzzleHttp\\Tests\\Psr7\\": "tests/"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.7-dev"
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/AppendStream.php b/vendor/guzzlehttp/psr7/src/AppendStream.php
deleted file mode 100644
index 86e7a23ba3f1a762d0e3c3fb4c924be8a4be1c2c..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/AppendStream.php
+++ /dev/null
@@ -1,244 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Reads from multiple streams, one after the other.
- *
- * This is a read-only stream decorator.
- */
-class AppendStream implements StreamInterface
-{
-    /** @var StreamInterface[] Streams being decorated */
-    private $streams = [];
-
-    private $seekable = true;
-    private $current = 0;
-    private $pos = 0;
-
-    /**
-     * @param StreamInterface[] $streams Streams to decorate. Each stream must
-     *                                   be readable.
-     */
-    public function __construct(array $streams = [])
-    {
-        foreach ($streams as $stream) {
-            $this->addStream($stream);
-        }
-    }
-
-    public function __toString()
-    {
-        try {
-            $this->rewind();
-            return $this->getContents();
-        } catch (\Exception $e) {
-            return '';
-        }
-    }
-
-    /**
-     * Add a stream to the AppendStream
-     *
-     * @param StreamInterface $stream Stream to append. Must be readable.
-     *
-     * @throws \InvalidArgumentException if the stream is not readable
-     */
-    public function addStream(StreamInterface $stream)
-    {
-        if (!$stream->isReadable()) {
-            throw new \InvalidArgumentException('Each stream must be readable');
-        }
-
-        // The stream is only seekable if all streams are seekable
-        if (!$stream->isSeekable()) {
-            $this->seekable = false;
-        }
-
-        $this->streams[] = $stream;
-    }
-
-    public function getContents()
-    {
-        return Utils::copyToString($this);
-    }
-
-    /**
-     * Closes each attached stream.
-     *
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        $this->pos = $this->current = 0;
-        $this->seekable = true;
-
-        foreach ($this->streams as $stream) {
-            $stream->close();
-        }
-
-        $this->streams = [];
-    }
-
-    /**
-     * Detaches each attached stream.
-     *
-     * Returns null as it's not clear which underlying stream resource to return.
-     *
-     * {@inheritdoc}
-     */
-    public function detach()
-    {
-        $this->pos = $this->current = 0;
-        $this->seekable = true;
-
-        foreach ($this->streams as $stream) {
-            $stream->detach();
-        }
-
-        $this->streams = [];
-
-        return null;
-    }
-
-    public function tell()
-    {
-        return $this->pos;
-    }
-
-    /**
-     * Tries to calculate the size by adding the size of each stream.
-     *
-     * If any of the streams do not return a valid number, then the size of the
-     * append stream cannot be determined and null is returned.
-     *
-     * {@inheritdoc}
-     */
-    public function getSize()
-    {
-        $size = 0;
-
-        foreach ($this->streams as $stream) {
-            $s = $stream->getSize();
-            if ($s === null) {
-                return null;
-            }
-            $size += $s;
-        }
-
-        return $size;
-    }
-
-    public function eof()
-    {
-        return !$this->streams ||
-            ($this->current >= count($this->streams) - 1 &&
-             $this->streams[$this->current]->eof());
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    /**
-     * Attempts to seek to the given position. Only supports SEEK_SET.
-     *
-     * {@inheritdoc}
-     */
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        if (!$this->seekable) {
-            throw new \RuntimeException('This AppendStream is not seekable');
-        } elseif ($whence !== SEEK_SET) {
-            throw new \RuntimeException('The AppendStream can only seek with SEEK_SET');
-        }
-
-        $this->pos = $this->current = 0;
-
-        // Rewind each stream
-        foreach ($this->streams as $i => $stream) {
-            try {
-                $stream->rewind();
-            } catch (\Exception $e) {
-                throw new \RuntimeException('Unable to seek stream '
-                    . $i . ' of the AppendStream', 0, $e);
-            }
-        }
-
-        // Seek to the actual position by reading from each stream
-        while ($this->pos < $offset && !$this->eof()) {
-            $result = $this->read(min(8096, $offset - $this->pos));
-            if ($result === '') {
-                break;
-            }
-        }
-    }
-
-    /**
-     * Reads from all of the appended streams until the length is met or EOF.
-     *
-     * {@inheritdoc}
-     */
-    public function read($length)
-    {
-        $buffer = '';
-        $total = count($this->streams) - 1;
-        $remaining = $length;
-        $progressToNext = false;
-
-        while ($remaining > 0) {
-
-            // Progress to the next stream if needed.
-            if ($progressToNext || $this->streams[$this->current]->eof()) {
-                $progressToNext = false;
-                if ($this->current === $total) {
-                    break;
-                }
-                $this->current++;
-            }
-
-            $result = $this->streams[$this->current]->read($remaining);
-
-            // Using a loose comparison here to match on '', false, and null
-            if ($result == null) {
-                $progressToNext = true;
-                continue;
-            }
-
-            $buffer .= $result;
-            $remaining = $length - strlen($buffer);
-        }
-
-        $this->pos += strlen($buffer);
-
-        return $buffer;
-    }
-
-    public function isReadable()
-    {
-        return true;
-    }
-
-    public function isWritable()
-    {
-        return false;
-    }
-
-    public function isSeekable()
-    {
-        return $this->seekable;
-    }
-
-    public function write($string)
-    {
-        throw new \RuntimeException('Cannot write to an AppendStream');
-    }
-
-    public function getMetadata($key = null)
-    {
-        return $key ? null : [];
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/BufferStream.php b/vendor/guzzlehttp/psr7/src/BufferStream.php
deleted file mode 100644
index 627e4a5f146a8a165267bac4e068d4175b492e86..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/BufferStream.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Provides a buffer stream that can be written to to fill a buffer, and read
- * from to remove bytes from the buffer.
- *
- * This stream returns a "hwm" metadata value that tells upstream consumers
- * what the configured high water mark of the stream is, or the maximum
- * preferred size of the buffer.
- */
-class BufferStream implements StreamInterface
-{
-    private $hwm;
-    private $buffer = '';
-
-    /**
-     * @param int $hwm High water mark, representing the preferred maximum
-     *                 buffer size. If the size of the buffer exceeds the high
-     *                 water mark, then calls to write will continue to succeed
-     *                 but will return false to inform writers to slow down
-     *                 until the buffer has been drained by reading from it.
-     */
-    public function __construct($hwm = 16384)
-    {
-        $this->hwm = $hwm;
-    }
-
-    public function __toString()
-    {
-        return $this->getContents();
-    }
-
-    public function getContents()
-    {
-        $buffer = $this->buffer;
-        $this->buffer = '';
-
-        return $buffer;
-    }
-
-    public function close()
-    {
-        $this->buffer = '';
-    }
-
-    public function detach()
-    {
-        $this->close();
-
-        return null;
-    }
-
-    public function getSize()
-    {
-        return strlen($this->buffer);
-    }
-
-    public function isReadable()
-    {
-        return true;
-    }
-
-    public function isWritable()
-    {
-        return true;
-    }
-
-    public function isSeekable()
-    {
-        return false;
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        throw new \RuntimeException('Cannot seek a BufferStream');
-    }
-
-    public function eof()
-    {
-        return strlen($this->buffer) === 0;
-    }
-
-    public function tell()
-    {
-        throw new \RuntimeException('Cannot determine the position of a BufferStream');
-    }
-
-    /**
-     * Reads data from the buffer.
-     */
-    public function read($length)
-    {
-        $currentLength = strlen($this->buffer);
-
-        if ($length >= $currentLength) {
-            // No need to slice the buffer because we don't have enough data.
-            $result = $this->buffer;
-            $this->buffer = '';
-        } else {
-            // Slice up the result to provide a subset of the buffer.
-            $result = substr($this->buffer, 0, $length);
-            $this->buffer = substr($this->buffer, $length);
-        }
-
-        return $result;
-    }
-
-    /**
-     * Writes data to the buffer.
-     */
-    public function write($string)
-    {
-        $this->buffer .= $string;
-
-        // TODO: What should happen here?
-        if (strlen($this->buffer) >= $this->hwm) {
-            return false;
-        }
-
-        return strlen($string);
-    }
-
-    public function getMetadata($key = null)
-    {
-        if ($key == 'hwm') {
-            return $this->hwm;
-        }
-
-        return $key ? null : [];
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/CachingStream.php b/vendor/guzzlehttp/psr7/src/CachingStream.php
deleted file mode 100644
index 244d2a063accd8adcd001b46029dfbd1a59d2464..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/CachingStream.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator that can cache previously read bytes from a sequentially
- * read stream.
- */
-class CachingStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    /** @var StreamInterface Stream being wrapped */
-    private $remoteStream;
-
-    /** @var int Number of bytes to skip reading due to a write on the buffer */
-    private $skipReadBytes = 0;
-
-    /**
-     * We will treat the buffer object as the body of the stream
-     *
-     * @param StreamInterface $stream Stream to cache
-     * @param StreamInterface $target Optionally specify where data is cached
-     */
-    public function __construct(
-        StreamInterface $stream,
-        StreamInterface $target = null
-    ) {
-        $this->remoteStream = $stream;
-        $this->stream = $target ?: new Stream(fopen('php://temp', 'r+'));
-    }
-
-    public function getSize()
-    {
-        return max($this->stream->getSize(), $this->remoteStream->getSize());
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        if ($whence == SEEK_SET) {
-            $byte = $offset;
-        } elseif ($whence == SEEK_CUR) {
-            $byte = $offset + $this->tell();
-        } elseif ($whence == SEEK_END) {
-            $size = $this->remoteStream->getSize();
-            if ($size === null) {
-                $size = $this->cacheEntireStream();
-            }
-            $byte = $size + $offset;
-        } else {
-            throw new \InvalidArgumentException('Invalid whence');
-        }
-
-        $diff = $byte - $this->stream->getSize();
-
-        if ($diff > 0) {
-            // Read the remoteStream until we have read in at least the amount
-            // of bytes requested, or we reach the end of the file.
-            while ($diff > 0 && !$this->remoteStream->eof()) {
-                $this->read($diff);
-                $diff = $byte - $this->stream->getSize();
-            }
-        } else {
-            // We can just do a normal seek since we've already seen this byte.
-            $this->stream->seek($byte);
-        }
-    }
-
-    public function read($length)
-    {
-        // Perform a regular read on any previously read data from the buffer
-        $data = $this->stream->read($length);
-        $remaining = $length - strlen($data);
-
-        // More data was requested so read from the remote stream
-        if ($remaining) {
-            // If data was written to the buffer in a position that would have
-            // been filled from the remote stream, then we must skip bytes on
-            // the remote stream to emulate overwriting bytes from that
-            // position. This mimics the behavior of other PHP stream wrappers.
-            $remoteData = $this->remoteStream->read(
-                $remaining + $this->skipReadBytes
-            );
-
-            if ($this->skipReadBytes) {
-                $len = strlen($remoteData);
-                $remoteData = substr($remoteData, $this->skipReadBytes);
-                $this->skipReadBytes = max(0, $this->skipReadBytes - $len);
-            }
-
-            $data .= $remoteData;
-            $this->stream->write($remoteData);
-        }
-
-        return $data;
-    }
-
-    public function write($string)
-    {
-        // When appending to the end of the currently read stream, you'll want
-        // to skip bytes from being read from the remote stream to emulate
-        // other stream wrappers. Basically replacing bytes of data of a fixed
-        // length.
-        $overflow = (strlen($string) + $this->tell()) - $this->remoteStream->tell();
-        if ($overflow > 0) {
-            $this->skipReadBytes += $overflow;
-        }
-
-        return $this->stream->write($string);
-    }
-
-    public function eof()
-    {
-        return $this->stream->eof() && $this->remoteStream->eof();
-    }
-
-    /**
-     * Close both the remote stream and buffer stream
-     */
-    public function close()
-    {
-        $this->remoteStream->close() && $this->stream->close();
-    }
-
-    private function cacheEntireStream()
-    {
-        $target = new FnStream(['write' => 'strlen']);
-        Utils::copyToStream($this, $target);
-
-        return $this->tell();
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/DroppingStream.php b/vendor/guzzlehttp/psr7/src/DroppingStream.php
deleted file mode 100644
index e125642d3e94642388d2cd8b141dbcb55957fdec..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/DroppingStream.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator that begins dropping data once the size of the underlying
- * stream becomes too full.
- */
-class DroppingStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    private $maxLength;
-
-    /**
-     * @param StreamInterface $stream    Underlying stream to decorate.
-     * @param int             $maxLength Maximum size before dropping data.
-     */
-    public function __construct(StreamInterface $stream, $maxLength)
-    {
-        $this->stream = $stream;
-        $this->maxLength = $maxLength;
-    }
-
-    public function write($string)
-    {
-        $diff = $this->maxLength - $this->stream->getSize();
-
-        // Begin returning 0 when the underlying stream is too large.
-        if ($diff <= 0) {
-            return 0;
-        }
-
-        // Write the stream or a subset of the stream if needed.
-        if (strlen($string) < $diff) {
-            return $this->stream->write($string);
-        }
-
-        return $this->stream->write(substr($string, 0, $diff));
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/FnStream.php b/vendor/guzzlehttp/psr7/src/FnStream.php
deleted file mode 100644
index 407577a379fde10704cfb5590615fe34eda40bd8..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/FnStream.php
+++ /dev/null
@@ -1,160 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Compose stream implementations based on a hash of functions.
- *
- * Allows for easy testing and extension of a provided stream without needing
- * to create a concrete class for a simple extension point.
- */
-class FnStream implements StreamInterface
-{
-    /** @var array */
-    private $methods;
-
-    /** @var array Methods that must be implemented in the given array */
-    private static $slots = ['__toString', 'close', 'detach', 'rewind',
-        'getSize', 'tell', 'eof', 'isSeekable', 'seek', 'isWritable', 'write',
-        'isReadable', 'read', 'getContents', 'getMetadata'];
-
-    /**
-     * @param array $methods Hash of method name to a callable.
-     */
-    public function __construct(array $methods)
-    {
-        $this->methods = $methods;
-
-        // Create the functions on the class
-        foreach ($methods as $name => $fn) {
-            $this->{'_fn_' . $name} = $fn;
-        }
-    }
-
-    /**
-     * Lazily determine which methods are not implemented.
-     *
-     * @throws \BadMethodCallException
-     */
-    public function __get($name)
-    {
-        throw new \BadMethodCallException(str_replace('_fn_', '', $name)
-            . '() is not implemented in the FnStream');
-    }
-
-    /**
-     * The close method is called on the underlying stream only if possible.
-     */
-    public function __destruct()
-    {
-        if (isset($this->_fn_close)) {
-            call_user_func($this->_fn_close);
-        }
-    }
-
-    /**
-     * An unserialize would allow the __destruct to run when the unserialized value goes out of scope.
-     * @throws \LogicException
-     */
-    public function __wakeup()
-    {
-        throw new \LogicException('FnStream should never be unserialized');
-    }
-
-    /**
-     * Adds custom functionality to an underlying stream by intercepting
-     * specific method calls.
-     *
-     * @param StreamInterface $stream  Stream to decorate
-     * @param array           $methods Hash of method name to a closure
-     *
-     * @return FnStream
-     */
-    public static function decorate(StreamInterface $stream, array $methods)
-    {
-        // If any of the required methods were not provided, then simply
-        // proxy to the decorated stream.
-        foreach (array_diff(self::$slots, array_keys($methods)) as $diff) {
-            $methods[$diff] = [$stream, $diff];
-        }
-
-        return new self($methods);
-    }
-
-    public function __toString()
-    {
-        return call_user_func($this->_fn___toString);
-    }
-
-    public function close()
-    {
-        return call_user_func($this->_fn_close);
-    }
-
-    public function detach()
-    {
-        return call_user_func($this->_fn_detach);
-    }
-
-    public function getSize()
-    {
-        return call_user_func($this->_fn_getSize);
-    }
-
-    public function tell()
-    {
-        return call_user_func($this->_fn_tell);
-    }
-
-    public function eof()
-    {
-        return call_user_func($this->_fn_eof);
-    }
-
-    public function isSeekable()
-    {
-        return call_user_func($this->_fn_isSeekable);
-    }
-
-    public function rewind()
-    {
-        call_user_func($this->_fn_rewind);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        call_user_func($this->_fn_seek, $offset, $whence);
-    }
-
-    public function isWritable()
-    {
-        return call_user_func($this->_fn_isWritable);
-    }
-
-    public function write($string)
-    {
-        return call_user_func($this->_fn_write, $string);
-    }
-
-    public function isReadable()
-    {
-        return call_user_func($this->_fn_isReadable);
-    }
-
-    public function read($length)
-    {
-        return call_user_func($this->_fn_read, $length);
-    }
-
-    public function getContents()
-    {
-        return call_user_func($this->_fn_getContents);
-    }
-
-    public function getMetadata($key = null)
-    {
-        return call_user_func($this->_fn_getMetadata, $key);
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Header.php b/vendor/guzzlehttp/psr7/src/Header.php
deleted file mode 100644
index 865d7421429418f380cf9b0b7a40604e1e24db75..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/Header.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-final class Header
-{
-    /**
-     * Parse an array of header values containing ";" separated data into an
-     * array of associative arrays representing the header key value pair data
-     * of the header. When a parameter does not contain a value, but just
-     * contains a key, this function will inject a key with a '' string value.
-     *
-     * @param string|array $header Header to parse into components.
-     *
-     * @return array Returns the parsed header values.
-     */
-    public static function parse($header)
-    {
-        static $trimmed = "\"'  \n\t\r";
-        $params = $matches = [];
-
-        foreach (self::normalize($header) as $val) {
-            $part = [];
-            foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) {
-                if (preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {
-                    $m = $matches[0];
-                    if (isset($m[1])) {
-                        $part[trim($m[0], $trimmed)] = trim($m[1], $trimmed);
-                    } else {
-                        $part[] = trim($m[0], $trimmed);
-                    }
-                }
-            }
-            if ($part) {
-                $params[] = $part;
-            }
-        }
-
-        return $params;
-    }
-
-    /**
-     * Converts an array of header values that may contain comma separated
-     * headers into an array of headers with no comma separated values.
-     *
-     * @param string|array $header Header to normalize.
-     *
-     * @return array Returns the normalized header field values.
-     */
-    public static function normalize($header)
-    {
-        if (!is_array($header)) {
-            return array_map('trim', explode(',', $header));
-        }
-
-        $result = [];
-        foreach ($header as $value) {
-            foreach ((array) $value as $v) {
-                if (strpos($v, ',') === false) {
-                    $result[] = $v;
-                    continue;
-                }
-                foreach (preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) {
-                    $result[] = trim($vv);
-                }
-            }
-        }
-
-        return $result;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/InflateStream.php b/vendor/guzzlehttp/psr7/src/InflateStream.php
deleted file mode 100644
index c98b96f2587be89bb01181a5fb889f47dbdab544..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/InflateStream.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Uses PHP's zlib.inflate filter to inflate deflate or gzipped content.
- *
- * This stream decorator skips the first 10 bytes of the given stream to remove
- * the gzip header, converts the provided stream to a PHP stream resource,
- * then appends the zlib.inflate filter. The stream is then converted back
- * to a Guzzle stream resource to be used as a Guzzle stream.
- *
- * @link http://tools.ietf.org/html/rfc1952
- * @link http://php.net/manual/en/filters.compression.php
- */
-class InflateStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    public function __construct(StreamInterface $stream)
-    {
-        // read the first 10 bytes, ie. gzip header
-        $header = $stream->read(10);
-        $filenameHeaderLength = $this->getLengthOfPossibleFilenameHeader($stream, $header);
-        // Skip the header, that is 10 + length of filename + 1 (nil) bytes
-        $stream = new LimitStream($stream, -1, 10 + $filenameHeaderLength);
-        $resource = StreamWrapper::getResource($stream);
-        stream_filter_append($resource, 'zlib.inflate', STREAM_FILTER_READ);
-        $this->stream = $stream->isSeekable() ? new Stream($resource) : new NoSeekStream(new Stream($resource));
-    }
-
-    /**
-     * @param StreamInterface $stream
-     * @param $header
-     * @return int
-     */
-    private function getLengthOfPossibleFilenameHeader(StreamInterface $stream, $header)
-    {
-        $filename_header_length = 0;
-
-        if (substr(bin2hex($header), 6, 2) === '08') {
-            // we have a filename, read until nil
-            $filename_header_length = 1;
-            while ($stream->read(1) !== chr(0)) {
-                $filename_header_length++;
-            }
-        }
-
-        return $filename_header_length;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php b/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
deleted file mode 100644
index 13c7af5c8b35c89e1feb52399aab8d01f2838532..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Lazily reads or writes to a file that is opened only after an IO operation
- * take place on the stream.
- */
-class LazyOpenStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    /** @var string File to open */
-    private $filename;
-
-    /** @var string $mode */
-    private $mode;
-
-    /**
-     * @param string $filename File to lazily open
-     * @param string $mode     fopen mode to use when opening the stream
-     */
-    public function __construct($filename, $mode)
-    {
-        $this->filename = $filename;
-        $this->mode = $mode;
-    }
-
-    /**
-     * Creates the underlying stream lazily when required.
-     *
-     * @return StreamInterface
-     */
-    protected function createStream()
-    {
-        return Utils::streamFor(Utils::tryFopen($this->filename, $this->mode));
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/LimitStream.php b/vendor/guzzlehttp/psr7/src/LimitStream.php
deleted file mode 100644
index bef9161eadc8a2f616ace0ca2966a0b6c287dc92..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/LimitStream.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-
-/**
- * Decorator used to return only a subset of a stream
- */
-class LimitStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    /** @var int Offset to start reading from */
-    private $offset;
-
-    /** @var int Limit the number of bytes that can be read */
-    private $limit;
-
-    /**
-     * @param StreamInterface $stream Stream to wrap
-     * @param int             $limit  Total number of bytes to allow to be read
-     *                                from the stream. Pass -1 for no limit.
-     * @param int             $offset Position to seek to before reading (only
-     *                                works on seekable streams).
-     */
-    public function __construct(
-        StreamInterface $stream,
-        $limit = -1,
-        $offset = 0
-    ) {
-        $this->stream = $stream;
-        $this->setLimit($limit);
-        $this->setOffset($offset);
-    }
-
-    public function eof()
-    {
-        // Always return true if the underlying stream is EOF
-        if ($this->stream->eof()) {
-            return true;
-        }
-
-        // No limit and the underlying stream is not at EOF
-        if ($this->limit == -1) {
-            return false;
-        }
-
-        return $this->stream->tell() >= $this->offset + $this->limit;
-    }
-
-    /**
-     * Returns the size of the limited subset of data
-     * {@inheritdoc}
-     */
-    public function getSize()
-    {
-        if (null === ($length = $this->stream->getSize())) {
-            return null;
-        } elseif ($this->limit == -1) {
-            return $length - $this->offset;
-        } else {
-            return min($this->limit, $length - $this->offset);
-        }
-    }
-
-    /**
-     * Allow for a bounded seek on the read limited stream
-     * {@inheritdoc}
-     */
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        if ($whence !== SEEK_SET || $offset < 0) {
-            throw new \RuntimeException(sprintf(
-                'Cannot seek to offset %s with whence %s',
-                $offset,
-                $whence
-            ));
-        }
-
-        $offset += $this->offset;
-
-        if ($this->limit !== -1) {
-            if ($offset > $this->offset + $this->limit) {
-                $offset = $this->offset + $this->limit;
-            }
-        }
-
-        $this->stream->seek($offset);
-    }
-
-    /**
-     * Give a relative tell()
-     * {@inheritdoc}
-     */
-    public function tell()
-    {
-        return $this->stream->tell() - $this->offset;
-    }
-
-    /**
-     * Set the offset to start limiting from
-     *
-     * @param int $offset Offset to seek to and begin byte limiting from
-     *
-     * @throws \RuntimeException if the stream cannot be seeked.
-     */
-    public function setOffset($offset)
-    {
-        $current = $this->stream->tell();
-
-        if ($current !== $offset) {
-            // If the stream cannot seek to the offset position, then read to it
-            if ($this->stream->isSeekable()) {
-                $this->stream->seek($offset);
-            } elseif ($current > $offset) {
-                throw new \RuntimeException("Could not seek to stream offset $offset");
-            } else {
-                $this->stream->read($offset - $current);
-            }
-        }
-
-        $this->offset = $offset;
-    }
-
-    /**
-     * Set the limit of bytes that the decorator allows to be read from the
-     * stream.
-     *
-     * @param int $limit Number of bytes to allow to be read from the stream.
-     *                   Use -1 for no limit.
-     */
-    public function setLimit($limit)
-    {
-        $this->limit = $limit;
-    }
-
-    public function read($length)
-    {
-        if ($this->limit == -1) {
-            return $this->stream->read($length);
-        }
-
-        // Check if the current position is less than the total allowed
-        // bytes + original offset
-        $remaining = ($this->offset + $this->limit) - $this->stream->tell();
-        if ($remaining > 0) {
-            // Only return the amount of requested data, ensuring that the byte
-            // limit is not exceeded
-            return $this->stream->read(min($remaining, $length));
-        }
-
-        return '';
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Message.php b/vendor/guzzlehttp/psr7/src/Message.php
deleted file mode 100644
index 516d1cb84acddf4598be90c57dbe216dff1063f6..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/Message.php
+++ /dev/null
@@ -1,252 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\MessageInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-final class Message
-{
-    /**
-     * Returns the string representation of an HTTP message.
-     *
-     * @param MessageInterface $message Message to convert to a string.
-     *
-     * @return string
-     */
-    public static function toString(MessageInterface $message)
-    {
-        if ($message instanceof RequestInterface) {
-            $msg = trim($message->getMethod() . ' '
-                    . $message->getRequestTarget())
-                . ' HTTP/' . $message->getProtocolVersion();
-            if (!$message->hasHeader('host')) {
-                $msg .= "\r\nHost: " . $message->getUri()->getHost();
-            }
-        } elseif ($message instanceof ResponseInterface) {
-            $msg = 'HTTP/' . $message->getProtocolVersion() . ' '
-                . $message->getStatusCode() . ' '
-                . $message->getReasonPhrase();
-        } else {
-            throw new \InvalidArgumentException('Unknown message type');
-        }
-
-        foreach ($message->getHeaders() as $name => $values) {
-            if (strtolower($name) === 'set-cookie') {
-                foreach ($values as $value) {
-                    $msg .= "\r\n{$name}: " . $value;
-                }
-            } else {
-                $msg .= "\r\n{$name}: " . implode(', ', $values);
-            }
-        }
-
-        return "{$msg}\r\n\r\n" . $message->getBody();
-    }
-
-    /**
-     * Get a short summary of the message body.
-     *
-     * Will return `null` if the response is not printable.
-     *
-     * @param MessageInterface $message    The message to get the body summary
-     * @param int              $truncateAt The maximum allowed size of the summary
-     *
-     * @return string|null
-     */
-    public static function bodySummary(MessageInterface $message, $truncateAt = 120)
-    {
-        $body = $message->getBody();
-
-        if (!$body->isSeekable() || !$body->isReadable()) {
-            return null;
-        }
-
-        $size = $body->getSize();
-
-        if ($size === 0) {
-            return null;
-        }
-
-        $summary = $body->read($truncateAt);
-        $body->rewind();
-
-        if ($size > $truncateAt) {
-            $summary .= ' (truncated...)';
-        }
-
-        // Matches any printable character, including unicode characters:
-        // letters, marks, numbers, punctuation, spacing, and separators.
-        if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/u', $summary)) {
-            return null;
-        }
-
-        return $summary;
-    }
-
-    /**
-     * Attempts to rewind a message body and throws an exception on failure.
-     *
-     * The body of the message will only be rewound if a call to `tell()`
-     * returns a value other than `0`.
-     *
-     * @param MessageInterface $message Message to rewind
-     *
-     * @throws \RuntimeException
-     */
-    public static function rewindBody(MessageInterface $message)
-    {
-        $body = $message->getBody();
-
-        if ($body->tell()) {
-            $body->rewind();
-        }
-    }
-
-    /**
-     * Parses an HTTP message into an associative array.
-     *
-     * The array contains the "start-line" key containing the start line of
-     * the message, "headers" key containing an associative array of header
-     * array values, and a "body" key containing the body of the message.
-     *
-     * @param string $message HTTP request or response to parse.
-     *
-     * @return array
-     */
-    public static function parseMessage($message)
-    {
-        if (!$message) {
-            throw new \InvalidArgumentException('Invalid message');
-        }
-
-        $message = ltrim($message, "\r\n");
-
-        $messageParts = preg_split("/\r?\n\r?\n/", $message, 2);
-
-        if ($messageParts === false || count($messageParts) !== 2) {
-            throw new \InvalidArgumentException('Invalid message: Missing header delimiter');
-        }
-
-        list($rawHeaders, $body) = $messageParts;
-        $rawHeaders .= "\r\n"; // Put back the delimiter we split previously
-        $headerParts = preg_split("/\r?\n/", $rawHeaders, 2);
-
-        if ($headerParts === false || count($headerParts) !== 2) {
-            throw new \InvalidArgumentException('Invalid message: Missing status line');
-        }
-
-        list($startLine, $rawHeaders) = $headerParts;
-
-        if (preg_match("/(?:^HTTP\/|^[A-Z]+ \S+ HTTP\/)(\d+(?:\.\d+)?)/i", $startLine, $matches) && $matches[1] === '1.0') {
-            // Header folding is deprecated for HTTP/1.1, but allowed in HTTP/1.0
-            $rawHeaders = preg_replace(Rfc7230::HEADER_FOLD_REGEX, ' ', $rawHeaders);
-        }
-
-        /** @var array[] $headerLines */
-        $count = preg_match_all(Rfc7230::HEADER_REGEX, $rawHeaders, $headerLines, PREG_SET_ORDER);
-
-        // If these aren't the same, then one line didn't match and there's an invalid header.
-        if ($count !== substr_count($rawHeaders, "\n")) {
-            // Folding is deprecated, see https://tools.ietf.org/html/rfc7230#section-3.2.4
-            if (preg_match(Rfc7230::HEADER_FOLD_REGEX, $rawHeaders)) {
-                throw new \InvalidArgumentException('Invalid header syntax: Obsolete line folding');
-            }
-
-            throw new \InvalidArgumentException('Invalid header syntax');
-        }
-
-        $headers = [];
-
-        foreach ($headerLines as $headerLine) {
-            $headers[$headerLine[1]][] = $headerLine[2];
-        }
-
-        return [
-            'start-line' => $startLine,
-            'headers' => $headers,
-            'body' => $body,
-        ];
-    }
-
-    /**
-     * Constructs a URI for an HTTP request message.
-     *
-     * @param string $path    Path from the start-line
-     * @param array  $headers Array of headers (each value an array).
-     *
-     * @return string
-     */
-    public static function parseRequestUri($path, array $headers)
-    {
-        $hostKey = array_filter(array_keys($headers), function ($k) {
-            return strtolower($k) === 'host';
-        });
-
-        // If no host is found, then a full URI cannot be constructed.
-        if (!$hostKey) {
-            return $path;
-        }
-
-        $host = $headers[reset($hostKey)][0];
-        $scheme = substr($host, -4) === ':443' ? 'https' : 'http';
-
-        return $scheme . '://' . $host . '/' . ltrim($path, '/');
-    }
-
-    /**
-     * Parses a request message string into a request object.
-     *
-     * @param string $message Request message string.
-     *
-     * @return Request
-     */
-    public static function parseRequest($message)
-    {
-        $data = self::parseMessage($message);
-        $matches = [];
-        if (!preg_match('/^[\S]+\s+([a-zA-Z]+:\/\/|\/).*/', $data['start-line'], $matches)) {
-            throw new \InvalidArgumentException('Invalid request string');
-        }
-        $parts = explode(' ', $data['start-line'], 3);
-        $version = isset($parts[2]) ? explode('/', $parts[2])[1] : '1.1';
-
-        $request = new Request(
-            $parts[0],
-            $matches[1] === '/' ? self::parseRequestUri($parts[1], $data['headers']) : $parts[1],
-            $data['headers'],
-            $data['body'],
-            $version
-        );
-
-        return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]);
-    }
-
-    /**
-     * Parses a response message string into a response object.
-     *
-     * @param string $message Response message string.
-     *
-     * @return Response
-     */
-    public static function parseResponse($message)
-    {
-        $data = self::parseMessage($message);
-        // According to https://tools.ietf.org/html/rfc7230#section-3.1.2 the space
-        // between status-code and reason-phrase is required. But browsers accept
-        // responses without space and reason as well.
-        if (!preg_match('/^HTTP\/.* [0-9]{3}( .*|$)/', $data['start-line'])) {
-            throw new \InvalidArgumentException('Invalid response string: ' . $data['start-line']);
-        }
-        $parts = explode(' ', $data['start-line'], 3);
-
-        return new Response(
-            (int) $parts[1],
-            $data['headers'],
-            $data['body'],
-            explode('/', $parts[0])[1],
-            isset($parts[2]) ? $parts[2] : null
-        );
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/MessageTrait.php b/vendor/guzzlehttp/psr7/src/MessageTrait.php
deleted file mode 100644
index 99203bb43a42fba3ec6bd2e158d1f671619fbb6e..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/MessageTrait.php
+++ /dev/null
@@ -1,214 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Trait implementing functionality common to requests and responses.
- */
-trait MessageTrait
-{
-    /** @var array Map of all registered headers, as original name => array of values */
-    private $headers = [];
-
-    /** @var array Map of lowercase header name => original name at registration */
-    private $headerNames  = [];
-
-    /** @var string */
-    private $protocol = '1.1';
-
-    /** @var StreamInterface|null */
-    private $stream;
-
-    public function getProtocolVersion()
-    {
-        return $this->protocol;
-    }
-
-    public function withProtocolVersion($version)
-    {
-        if ($this->protocol === $version) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->protocol = $version;
-        return $new;
-    }
-
-    public function getHeaders()
-    {
-        return $this->headers;
-    }
-
-    public function hasHeader($header)
-    {
-        return isset($this->headerNames[strtolower($header)]);
-    }
-
-    public function getHeader($header)
-    {
-        $header = strtolower($header);
-
-        if (!isset($this->headerNames[$header])) {
-            return [];
-        }
-
-        $header = $this->headerNames[$header];
-
-        return $this->headers[$header];
-    }
-
-    public function getHeaderLine($header)
-    {
-        return implode(', ', $this->getHeader($header));
-    }
-
-    public function withHeader($header, $value)
-    {
-        $this->assertHeader($header);
-        $value = $this->normalizeHeaderValue($value);
-        $normalized = strtolower($header);
-
-        $new = clone $this;
-        if (isset($new->headerNames[$normalized])) {
-            unset($new->headers[$new->headerNames[$normalized]]);
-        }
-        $new->headerNames[$normalized] = $header;
-        $new->headers[$header] = $value;
-
-        return $new;
-    }
-
-    public function withAddedHeader($header, $value)
-    {
-        $this->assertHeader($header);
-        $value = $this->normalizeHeaderValue($value);
-        $normalized = strtolower($header);
-
-        $new = clone $this;
-        if (isset($new->headerNames[$normalized])) {
-            $header = $this->headerNames[$normalized];
-            $new->headers[$header] = array_merge($this->headers[$header], $value);
-        } else {
-            $new->headerNames[$normalized] = $header;
-            $new->headers[$header] = $value;
-        }
-
-        return $new;
-    }
-
-    public function withoutHeader($header)
-    {
-        $normalized = strtolower($header);
-
-        if (!isset($this->headerNames[$normalized])) {
-            return $this;
-        }
-
-        $header = $this->headerNames[$normalized];
-
-        $new = clone $this;
-        unset($new->headers[$header], $new->headerNames[$normalized]);
-
-        return $new;
-    }
-
-    public function getBody()
-    {
-        if (!$this->stream) {
-            $this->stream = Utils::streamFor('');
-        }
-
-        return $this->stream;
-    }
-
-    public function withBody(StreamInterface $body)
-    {
-        if ($body === $this->stream) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->stream = $body;
-        return $new;
-    }
-
-    private function setHeaders(array $headers)
-    {
-        $this->headerNames = $this->headers = [];
-        foreach ($headers as $header => $value) {
-            if (is_int($header)) {
-                // Numeric array keys are converted to int by PHP but having a header name '123' is not forbidden by the spec
-                // and also allowed in withHeader(). So we need to cast it to string again for the following assertion to pass.
-                $header = (string) $header;
-            }
-            $this->assertHeader($header);
-            $value = $this->normalizeHeaderValue($value);
-            $normalized = strtolower($header);
-            if (isset($this->headerNames[$normalized])) {
-                $header = $this->headerNames[$normalized];
-                $this->headers[$header] = array_merge($this->headers[$header], $value);
-            } else {
-                $this->headerNames[$normalized] = $header;
-                $this->headers[$header] = $value;
-            }
-        }
-    }
-
-    private function normalizeHeaderValue($value)
-    {
-        if (!is_array($value)) {
-            return $this->trimHeaderValues([$value]);
-        }
-
-        if (count($value) === 0) {
-            throw new \InvalidArgumentException('Header value can not be an empty array.');
-        }
-
-        return $this->trimHeaderValues($value);
-    }
-
-    /**
-     * Trims whitespace from the header values.
-     *
-     * Spaces and tabs ought to be excluded by parsers when extracting the field value from a header field.
-     *
-     * header-field = field-name ":" OWS field-value OWS
-     * OWS          = *( SP / HTAB )
-     *
-     * @param string[] $values Header values
-     *
-     * @return string[] Trimmed header values
-     *
-     * @see https://tools.ietf.org/html/rfc7230#section-3.2.4
-     */
-    private function trimHeaderValues(array $values)
-    {
-        return array_map(function ($value) {
-            if (!is_scalar($value) && null !== $value) {
-                throw new \InvalidArgumentException(sprintf(
-                    'Header value must be scalar or null but %s provided.',
-                    is_object($value) ? get_class($value) : gettype($value)
-                ));
-            }
-
-            return trim((string) $value, " \t");
-        }, array_values($values));
-    }
-
-    private function assertHeader($header)
-    {
-        if (!is_string($header)) {
-            throw new \InvalidArgumentException(sprintf(
-                'Header name must be a string but %s provided.',
-                is_object($header) ? get_class($header) : gettype($header)
-            ));
-        }
-
-        if ($header === '') {
-            throw new \InvalidArgumentException('Header name can not be empty.');
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/MimeType.php b/vendor/guzzlehttp/psr7/src/MimeType.php
deleted file mode 100644
index 205c7b1fa676814fa52f389761fb830949f3e332..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/MimeType.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-final class MimeType
-{
-    /**
-     * Determines the mimetype of a file by looking at its extension.
-     *
-     * @param string $filename
-     *
-     * @return string|null
-     */
-    public static function fromFilename($filename)
-    {
-        return self::fromExtension(pathinfo($filename, PATHINFO_EXTENSION));
-    }
-
-    /**
-     * Maps a file extensions to a mimetype.
-     *
-     * @param string $extension string The file extension.
-     *
-     * @return string|null
-     *
-     * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types
-     */
-    public static function fromExtension($extension)
-    {
-        static $mimetypes = [
-            '3gp' => 'video/3gpp',
-            '7z' => 'application/x-7z-compressed',
-            'aac' => 'audio/x-aac',
-            'ai' => 'application/postscript',
-            'aif' => 'audio/x-aiff',
-            'asc' => 'text/plain',
-            'asf' => 'video/x-ms-asf',
-            'atom' => 'application/atom+xml',
-            'avi' => 'video/x-msvideo',
-            'bmp' => 'image/bmp',
-            'bz2' => 'application/x-bzip2',
-            'cer' => 'application/pkix-cert',
-            'crl' => 'application/pkix-crl',
-            'crt' => 'application/x-x509-ca-cert',
-            'css' => 'text/css',
-            'csv' => 'text/csv',
-            'cu' => 'application/cu-seeme',
-            'deb' => 'application/x-debian-package',
-            'doc' => 'application/msword',
-            'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
-            'dvi' => 'application/x-dvi',
-            'eot' => 'application/vnd.ms-fontobject',
-            'eps' => 'application/postscript',
-            'epub' => 'application/epub+zip',
-            'etx' => 'text/x-setext',
-            'flac' => 'audio/flac',
-            'flv' => 'video/x-flv',
-            'gif' => 'image/gif',
-            'gz' => 'application/gzip',
-            'htm' => 'text/html',
-            'html' => 'text/html',
-            'ico' => 'image/x-icon',
-            'ics' => 'text/calendar',
-            'ini' => 'text/plain',
-            'iso' => 'application/x-iso9660-image',
-            'jar' => 'application/java-archive',
-            'jpe' => 'image/jpeg',
-            'jpeg' => 'image/jpeg',
-            'jpg' => 'image/jpeg',
-            'js' => 'text/javascript',
-            'json' => 'application/json',
-            'latex' => 'application/x-latex',
-            'log' => 'text/plain',
-            'm4a' => 'audio/mp4',
-            'm4v' => 'video/mp4',
-            'mid' => 'audio/midi',
-            'midi' => 'audio/midi',
-            'mov' => 'video/quicktime',
-            'mkv' => 'video/x-matroska',
-            'mp3' => 'audio/mpeg',
-            'mp4' => 'video/mp4',
-            'mp4a' => 'audio/mp4',
-            'mp4v' => 'video/mp4',
-            'mpe' => 'video/mpeg',
-            'mpeg' => 'video/mpeg',
-            'mpg' => 'video/mpeg',
-            'mpg4' => 'video/mp4',
-            'oga' => 'audio/ogg',
-            'ogg' => 'audio/ogg',
-            'ogv' => 'video/ogg',
-            'ogx' => 'application/ogg',
-            'pbm' => 'image/x-portable-bitmap',
-            'pdf' => 'application/pdf',
-            'pgm' => 'image/x-portable-graymap',
-            'png' => 'image/png',
-            'pnm' => 'image/x-portable-anymap',
-            'ppm' => 'image/x-portable-pixmap',
-            'ppt' => 'application/vnd.ms-powerpoint',
-            'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
-            'ps' => 'application/postscript',
-            'qt' => 'video/quicktime',
-            'rar' => 'application/x-rar-compressed',
-            'ras' => 'image/x-cmu-raster',
-            'rss' => 'application/rss+xml',
-            'rtf' => 'application/rtf',
-            'sgm' => 'text/sgml',
-            'sgml' => 'text/sgml',
-            'svg' => 'image/svg+xml',
-            'swf' => 'application/x-shockwave-flash',
-            'tar' => 'application/x-tar',
-            'tif' => 'image/tiff',
-            'tiff' => 'image/tiff',
-            'torrent' => 'application/x-bittorrent',
-            'ttf' => 'application/x-font-ttf',
-            'txt' => 'text/plain',
-            'wav' => 'audio/x-wav',
-            'webm' => 'video/webm',
-            'webp' => 'image/webp',
-            'wma' => 'audio/x-ms-wma',
-            'wmv' => 'video/x-ms-wmv',
-            'woff' => 'application/x-font-woff',
-            'wsdl' => 'application/wsdl+xml',
-            'xbm' => 'image/x-xbitmap',
-            'xls' => 'application/vnd.ms-excel',
-            'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
-            'xml' => 'application/xml',
-            'xpm' => 'image/x-xpixmap',
-            'xwd' => 'image/x-xwindowdump',
-            'yaml' => 'text/yaml',
-            'yml' => 'text/yaml',
-            'zip' => 'application/zip',
-        ];
-
-        $extension = strtolower($extension);
-
-        return isset($mimetypes[$extension])
-            ? $mimetypes[$extension]
-            : null;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/MultipartStream.php b/vendor/guzzlehttp/psr7/src/MultipartStream.php
deleted file mode 100644
index 0cbfea35d682f4e621ff3fcd4ebd1355e2fa0cf1..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/MultipartStream.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream that when read returns bytes for a streaming multipart or
- * multipart/form-data stream.
- */
-class MultipartStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    private $boundary;
-
-    /**
-     * @param array  $elements Array of associative arrays, each containing a
-     *                         required "name" key mapping to the form field,
-     *                         name, a required "contents" key mapping to a
-     *                         StreamInterface/resource/string, an optional
-     *                         "headers" associative array of custom headers,
-     *                         and an optional "filename" key mapping to a
-     *                         string to send as the filename in the part.
-     * @param string $boundary You can optionally provide a specific boundary
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function __construct(array $elements = [], $boundary = null)
-    {
-        $this->boundary = $boundary ?: sha1(uniqid('', true));
-        $this->stream = $this->createStream($elements);
-    }
-
-    /**
-     * Get the boundary
-     *
-     * @return string
-     */
-    public function getBoundary()
-    {
-        return $this->boundary;
-    }
-
-    public function isWritable()
-    {
-        return false;
-    }
-
-    /**
-     * Get the headers needed before transferring the content of a POST file
-     */
-    private function getHeaders(array $headers)
-    {
-        $str = '';
-        foreach ($headers as $key => $value) {
-            $str .= "{$key}: {$value}\r\n";
-        }
-
-        return "--{$this->boundary}\r\n" . trim($str) . "\r\n\r\n";
-    }
-
-    /**
-     * Create the aggregate stream that will be used to upload the POST data
-     */
-    protected function createStream(array $elements)
-    {
-        $stream = new AppendStream();
-
-        foreach ($elements as $element) {
-            $this->addElement($stream, $element);
-        }
-
-        // Add the trailing boundary with CRLF
-        $stream->addStream(Utils::streamFor("--{$this->boundary}--\r\n"));
-
-        return $stream;
-    }
-
-    private function addElement(AppendStream $stream, array $element)
-    {
-        foreach (['contents', 'name'] as $key) {
-            if (!array_key_exists($key, $element)) {
-                throw new \InvalidArgumentException("A '{$key}' key is required");
-            }
-        }
-
-        $element['contents'] = Utils::streamFor($element['contents']);
-
-        if (empty($element['filename'])) {
-            $uri = $element['contents']->getMetadata('uri');
-            if (substr($uri, 0, 6) !== 'php://') {
-                $element['filename'] = $uri;
-            }
-        }
-
-        list($body, $headers) = $this->createElement(
-            $element['name'],
-            $element['contents'],
-            isset($element['filename']) ? $element['filename'] : null,
-            isset($element['headers']) ? $element['headers'] : []
-        );
-
-        $stream->addStream(Utils::streamFor($this->getHeaders($headers)));
-        $stream->addStream($body);
-        $stream->addStream(Utils::streamFor("\r\n"));
-    }
-
-    /**
-     * @return array
-     */
-    private function createElement($name, StreamInterface $stream, $filename, array $headers)
-    {
-        // Set a default content-disposition header if one was no provided
-        $disposition = $this->getHeader($headers, 'content-disposition');
-        if (!$disposition) {
-            $headers['Content-Disposition'] = ($filename === '0' || $filename)
-                ? sprintf('form-data; name="%s"; filename="%s"',
-                    $name,
-                    basename($filename))
-                : "form-data; name=\"{$name}\"";
-        }
-
-        // Set a default content-length header if one was no provided
-        $length = $this->getHeader($headers, 'content-length');
-        if (!$length) {
-            if ($length = $stream->getSize()) {
-                $headers['Content-Length'] = (string) $length;
-            }
-        }
-
-        // Set a default Content-Type if one was not supplied
-        $type = $this->getHeader($headers, 'content-type');
-        if (!$type && ($filename === '0' || $filename)) {
-            if ($type = MimeType::fromFilename($filename)) {
-                $headers['Content-Type'] = $type;
-            }
-        }
-
-        return [$stream, $headers];
-    }
-
-    private function getHeader(array $headers, $key)
-    {
-        $lowercaseHeader = strtolower($key);
-        foreach ($headers as $k => $v) {
-            if (strtolower($k) === $lowercaseHeader) {
-                return $v;
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/NoSeekStream.php b/vendor/guzzlehttp/psr7/src/NoSeekStream.php
deleted file mode 100644
index 4b04b4c0a49b2024d6f0c31a0a5ea210ec5c5a1f..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/NoSeekStream.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator that prevents a stream from being seeked
- */
-class NoSeekStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        throw new \RuntimeException('Cannot seek a NoSeekStream');
-    }
-
-    public function isSeekable()
-    {
-        return false;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/PumpStream.php b/vendor/guzzlehttp/psr7/src/PumpStream.php
deleted file mode 100644
index fbd8726b46de72708b0e7411417667f815a4c482..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/PumpStream.php
+++ /dev/null
@@ -1,168 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Provides a read only stream that pumps data from a PHP callable.
- *
- * When invoking the provided callable, the PumpStream will pass the amount of
- * data requested to read to the callable. The callable can choose to ignore
- * this value and return fewer or more bytes than requested. Any extra data
- * returned by the provided callable is buffered internally until drained using
- * the read() function of the PumpStream. The provided callable MUST return
- * false when there is no more data to read.
- */
-class PumpStream implements StreamInterface
-{
-    /** @var callable */
-    private $source;
-
-    /** @var int */
-    private $size;
-
-    /** @var int */
-    private $tellPos = 0;
-
-    /** @var array */
-    private $metadata;
-
-    /** @var BufferStream */
-    private $buffer;
-
-    /**
-     * @param callable $source Source of the stream data. The callable MAY
-     *                         accept an integer argument used to control the
-     *                         amount of data to return. The callable MUST
-     *                         return a string when called, or false on error
-     *                         or EOF.
-     * @param array $options   Stream options:
-     *                         - metadata: Hash of metadata to use with stream.
-     *                         - size: Size of the stream, if known.
-     */
-    public function __construct(callable $source, array $options = [])
-    {
-        $this->source = $source;
-        $this->size = isset($options['size']) ? $options['size'] : null;
-        $this->metadata = isset($options['metadata']) ? $options['metadata'] : [];
-        $this->buffer = new BufferStream();
-    }
-
-    public function __toString()
-    {
-        try {
-            return Utils::copyToString($this);
-        } catch (\Exception $e) {
-            return '';
-        }
-    }
-
-    public function close()
-    {
-        $this->detach();
-    }
-
-    public function detach()
-    {
-        $this->tellPos = false;
-        $this->source = null;
-
-        return null;
-    }
-
-    public function getSize()
-    {
-        return $this->size;
-    }
-
-    public function tell()
-    {
-        return $this->tellPos;
-    }
-
-    public function eof()
-    {
-        return !$this->source;
-    }
-
-    public function isSeekable()
-    {
-        return false;
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        throw new \RuntimeException('Cannot seek a PumpStream');
-    }
-
-    public function isWritable()
-    {
-        return false;
-    }
-
-    public function write($string)
-    {
-        throw new \RuntimeException('Cannot write to a PumpStream');
-    }
-
-    public function isReadable()
-    {
-        return true;
-    }
-
-    public function read($length)
-    {
-        $data = $this->buffer->read($length);
-        $readLen = strlen($data);
-        $this->tellPos += $readLen;
-        $remaining = $length - $readLen;
-
-        if ($remaining) {
-            $this->pump($remaining);
-            $data .= $this->buffer->read($remaining);
-            $this->tellPos += strlen($data) - $readLen;
-        }
-
-        return $data;
-    }
-
-    public function getContents()
-    {
-        $result = '';
-        while (!$this->eof()) {
-            $result .= $this->read(1000000);
-        }
-
-        return $result;
-    }
-
-    public function getMetadata($key = null)
-    {
-        if (!$key) {
-            return $this->metadata;
-        }
-
-        return isset($this->metadata[$key]) ? $this->metadata[$key] : null;
-    }
-
-    private function pump($length)
-    {
-        if ($this->source) {
-            do {
-                $data = call_user_func($this->source, $length);
-                if ($data === false || $data === null) {
-                    $this->source = null;
-                    return;
-                }
-                $this->buffer->write($data);
-                $length -= strlen($data);
-            } while ($length > 0);
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Query.php b/vendor/guzzlehttp/psr7/src/Query.php
deleted file mode 100644
index 99e093050935546bd57e24ca84c6e6652b65bce9..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/Query.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-final class Query
-{
-    /**
-     * Parse a query string into an associative array.
-     *
-     * If multiple values are found for the same key, the value of that key
-     * value pair will become an array. This function does not parse nested
-     * PHP style arrays into an associative array (e.g., `foo[a]=1&foo[b]=2`
-     * will be parsed into `['foo[a]' => '1', 'foo[b]' => '2'])`.
-     *
-     * @param string   $str         Query string to parse
-     * @param int|bool $urlEncoding How the query string is encoded
-     *
-     * @return array
-     */
-    public static function parse($str, $urlEncoding = true)
-    {
-        $result = [];
-
-        if ($str === '') {
-            return $result;
-        }
-
-        if ($urlEncoding === true) {
-            $decoder = function ($value) {
-                return rawurldecode(str_replace('+', ' ', $value));
-            };
-        } elseif ($urlEncoding === PHP_QUERY_RFC3986) {
-            $decoder = 'rawurldecode';
-        } elseif ($urlEncoding === PHP_QUERY_RFC1738) {
-            $decoder = 'urldecode';
-        } else {
-            $decoder = function ($str) { return $str; };
-        }
-
-        foreach (explode('&', $str) as $kvp) {
-            $parts = explode('=', $kvp, 2);
-            $key = $decoder($parts[0]);
-            $value = isset($parts[1]) ? $decoder($parts[1]) : null;
-            if (!isset($result[$key])) {
-                $result[$key] = $value;
-            } else {
-                if (!is_array($result[$key])) {
-                    $result[$key] = [$result[$key]];
-                }
-                $result[$key][] = $value;
-            }
-        }
-
-        return $result;
-    }
-
-    /**
-     * Build a query string from an array of key value pairs.
-     *
-     * This function can use the return value of `parse()` to build a query
-     * string. This function does not modify the provided keys when an array is
-     * encountered (like `http_build_query()` would).
-     *
-     * @param array     $params   Query string parameters.
-     * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
-     *                            to encode using RFC3986, or PHP_QUERY_RFC1738
-     *                            to encode using RFC1738.
-     * @return string
-     */
-    public static function build(array $params, $encoding = PHP_QUERY_RFC3986)
-    {
-        if (!$params) {
-            return '';
-        }
-
-        if ($encoding === false) {
-            $encoder = function ($str) { return $str; };
-        } elseif ($encoding === PHP_QUERY_RFC3986) {
-            $encoder = 'rawurlencode';
-        } elseif ($encoding === PHP_QUERY_RFC1738) {
-            $encoder = 'urlencode';
-        } else {
-            throw new \InvalidArgumentException('Invalid type');
-        }
-
-        $qs = '';
-        foreach ($params as $k => $v) {
-            $k = $encoder($k);
-            if (!is_array($v)) {
-                $qs .= $k;
-                if ($v !== null) {
-                    $qs .= '=' . $encoder($v);
-                }
-                $qs .= '&';
-            } else {
-                foreach ($v as $vv) {
-                    $qs .= $k;
-                    if ($vv !== null) {
-                        $qs .= '=' . $encoder($vv);
-                    }
-                    $qs .= '&';
-                }
-            }
-        }
-
-        return $qs ? (string) substr($qs, 0, -1) : '';
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Request.php b/vendor/guzzlehttp/psr7/src/Request.php
deleted file mode 100644
index 89fbb1e62e8a90b69d7b9b4cd8198fbf52a9eb04..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/Request.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use InvalidArgumentException;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * PSR-7 request implementation.
- */
-class Request implements RequestInterface
-{
-    use MessageTrait;
-
-    /** @var string */
-    private $method;
-
-    /** @var null|string */
-    private $requestTarget;
-
-    /** @var UriInterface */
-    private $uri;
-
-    /**
-     * @param string                               $method  HTTP method
-     * @param string|UriInterface                  $uri     URI
-     * @param array                                $headers Request headers
-     * @param string|null|resource|StreamInterface $body    Request body
-     * @param string                               $version Protocol version
-     */
-    public function __construct(
-        $method,
-        $uri,
-        array $headers = [],
-        $body = null,
-        $version = '1.1'
-    ) {
-        $this->assertMethod($method);
-        if (!($uri instanceof UriInterface)) {
-            $uri = new Uri($uri);
-        }
-
-        $this->method = strtoupper($method);
-        $this->uri = $uri;
-        $this->setHeaders($headers);
-        $this->protocol = $version;
-
-        if (!isset($this->headerNames['host'])) {
-            $this->updateHostFromUri();
-        }
-
-        if ($body !== '' && $body !== null) {
-            $this->stream = Utils::streamFor($body);
-        }
-    }
-
-    public function getRequestTarget()
-    {
-        if ($this->requestTarget !== null) {
-            return $this->requestTarget;
-        }
-
-        $target = $this->uri->getPath();
-        if ($target == '') {
-            $target = '/';
-        }
-        if ($this->uri->getQuery() != '') {
-            $target .= '?' . $this->uri->getQuery();
-        }
-
-        return $target;
-    }
-
-    public function withRequestTarget($requestTarget)
-    {
-        if (preg_match('#\s#', $requestTarget)) {
-            throw new InvalidArgumentException(
-                'Invalid request target provided; cannot contain whitespace'
-            );
-        }
-
-        $new = clone $this;
-        $new->requestTarget = $requestTarget;
-        return $new;
-    }
-
-    public function getMethod()
-    {
-        return $this->method;
-    }
-
-    public function withMethod($method)
-    {
-        $this->assertMethod($method);
-        $new = clone $this;
-        $new->method = strtoupper($method);
-        return $new;
-    }
-
-    public function getUri()
-    {
-        return $this->uri;
-    }
-
-    public function withUri(UriInterface $uri, $preserveHost = false)
-    {
-        if ($uri === $this->uri) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->uri = $uri;
-
-        if (!$preserveHost || !isset($this->headerNames['host'])) {
-            $new->updateHostFromUri();
-        }
-
-        return $new;
-    }
-
-    private function updateHostFromUri()
-    {
-        $host = $this->uri->getHost();
-
-        if ($host == '') {
-            return;
-        }
-
-        if (($port = $this->uri->getPort()) !== null) {
-            $host .= ':' . $port;
-        }
-
-        if (isset($this->headerNames['host'])) {
-            $header = $this->headerNames['host'];
-        } else {
-            $header = 'Host';
-            $this->headerNames['host'] = 'Host';
-        }
-        // Ensure Host is the first header.
-        // See: http://tools.ietf.org/html/rfc7230#section-5.4
-        $this->headers = [$header => [$host]] + $this->headers;
-    }
-
-    private function assertMethod($method)
-    {
-        if (!is_string($method) || $method === '') {
-            throw new \InvalidArgumentException('Method must be a non-empty string.');
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Response.php b/vendor/guzzlehttp/psr7/src/Response.php
deleted file mode 100644
index 36b85fb7834fff648aef96b3b6e0af627d879651..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/Response.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * PSR-7 response implementation.
- */
-class Response implements ResponseInterface
-{
-    use MessageTrait;
-
-    /** @var array Map of standard HTTP status code/reason phrases */
-    private static $phrases = [
-        100 => 'Continue',
-        101 => 'Switching Protocols',
-        102 => 'Processing',
-        200 => 'OK',
-        201 => 'Created',
-        202 => 'Accepted',
-        203 => 'Non-Authoritative Information',
-        204 => 'No Content',
-        205 => 'Reset Content',
-        206 => 'Partial Content',
-        207 => 'Multi-status',
-        208 => 'Already Reported',
-        300 => 'Multiple Choices',
-        301 => 'Moved Permanently',
-        302 => 'Found',
-        303 => 'See Other',
-        304 => 'Not Modified',
-        305 => 'Use Proxy',
-        306 => 'Switch Proxy',
-        307 => 'Temporary Redirect',
-        400 => 'Bad Request',
-        401 => 'Unauthorized',
-        402 => 'Payment Required',
-        403 => 'Forbidden',
-        404 => 'Not Found',
-        405 => 'Method Not Allowed',
-        406 => 'Not Acceptable',
-        407 => 'Proxy Authentication Required',
-        408 => 'Request Time-out',
-        409 => 'Conflict',
-        410 => 'Gone',
-        411 => 'Length Required',
-        412 => 'Precondition Failed',
-        413 => 'Request Entity Too Large',
-        414 => 'Request-URI Too Large',
-        415 => 'Unsupported Media Type',
-        416 => 'Requested range not satisfiable',
-        417 => 'Expectation Failed',
-        418 => 'I\'m a teapot',
-        422 => 'Unprocessable Entity',
-        423 => 'Locked',
-        424 => 'Failed Dependency',
-        425 => 'Unordered Collection',
-        426 => 'Upgrade Required',
-        428 => 'Precondition Required',
-        429 => 'Too Many Requests',
-        431 => 'Request Header Fields Too Large',
-        451 => 'Unavailable For Legal Reasons',
-        500 => 'Internal Server Error',
-        501 => 'Not Implemented',
-        502 => 'Bad Gateway',
-        503 => 'Service Unavailable',
-        504 => 'Gateway Time-out',
-        505 => 'HTTP Version not supported',
-        506 => 'Variant Also Negotiates',
-        507 => 'Insufficient Storage',
-        508 => 'Loop Detected',
-        511 => 'Network Authentication Required',
-    ];
-
-    /** @var string */
-    private $reasonPhrase = '';
-
-    /** @var int */
-    private $statusCode = 200;
-
-    /**
-     * @param int                                  $status  Status code
-     * @param array                                $headers Response headers
-     * @param string|null|resource|StreamInterface $body    Response body
-     * @param string                               $version Protocol version
-     * @param string|null                          $reason  Reason phrase (when empty a default will be used based on the status code)
-     */
-    public function __construct(
-        $status = 200,
-        array $headers = [],
-        $body = null,
-        $version = '1.1',
-        $reason = null
-    ) {
-        $this->assertStatusCodeIsInteger($status);
-        $status = (int) $status;
-        $this->assertStatusCodeRange($status);
-
-        $this->statusCode = $status;
-
-        if ($body !== '' && $body !== null) {
-            $this->stream = Utils::streamFor($body);
-        }
-
-        $this->setHeaders($headers);
-        if ($reason == '' && isset(self::$phrases[$this->statusCode])) {
-            $this->reasonPhrase = self::$phrases[$this->statusCode];
-        } else {
-            $this->reasonPhrase = (string) $reason;
-        }
-
-        $this->protocol = $version;
-    }
-
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-
-    public function getReasonPhrase()
-    {
-        return $this->reasonPhrase;
-    }
-
-    public function withStatus($code, $reasonPhrase = '')
-    {
-        $this->assertStatusCodeIsInteger($code);
-        $code = (int) $code;
-        $this->assertStatusCodeRange($code);
-
-        $new = clone $this;
-        $new->statusCode = $code;
-        if ($reasonPhrase == '' && isset(self::$phrases[$new->statusCode])) {
-            $reasonPhrase = self::$phrases[$new->statusCode];
-        }
-        $new->reasonPhrase = (string) $reasonPhrase;
-        return $new;
-    }
-
-    private function assertStatusCodeIsInteger($statusCode)
-    {
-        if (filter_var($statusCode, FILTER_VALIDATE_INT) === false) {
-            throw new \InvalidArgumentException('Status code must be an integer value.');
-        }
-    }
-
-    private function assertStatusCodeRange($statusCode)
-    {
-        if ($statusCode < 100 || $statusCode >= 600) {
-            throw new \InvalidArgumentException('Status code must be an integer value between 1xx and 5xx.');
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Rfc7230.php b/vendor/guzzlehttp/psr7/src/Rfc7230.php
deleted file mode 100644
index 505e4742b6e749f85e69499c013617df20f7232e..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/Rfc7230.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-final class Rfc7230
-{
-    /**
-     * Header related regular expressions (copied from amphp/http package)
-     * (Note: once we require PHP 7.x we could just depend on the upstream package)
-     *
-     * Note: header delimiter (\r\n) is modified to \r?\n to accept line feed only delimiters for BC reasons.
-     *
-     * @link    https://github.com/amphp/http/blob/v1.0.1/src/Rfc7230.php#L12-L15
-     * @license https://github.com/amphp/http/blob/v1.0.1/LICENSE
-     */
-    const HEADER_REGEX = "(^([^()<>@,;:\\\"/[\]?={}\x01-\x20\x7F]++):[ \t]*+((?:[ \t]*+[\x21-\x7E\x80-\xFF]++)*+)[ \t]*+\r?\n)m";
-    const HEADER_FOLD_REGEX = "(\r?\n[ \t]++)";
-}
diff --git a/vendor/guzzlehttp/psr7/src/ServerRequest.php b/vendor/guzzlehttp/psr7/src/ServerRequest.php
deleted file mode 100644
index 72c5566cfab28999ebd5ed60255a6a2e57fe1a84..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/ServerRequest.php
+++ /dev/null
@@ -1,378 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use InvalidArgumentException;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\UriInterface;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UploadedFileInterface;
-
-/**
- * Server-side HTTP request
- *
- * Extends the Request definition to add methods for accessing incoming data,
- * specifically server parameters, cookies, matched path parameters, query
- * string arguments, body parameters, and upload file information.
- *
- * "Attributes" are discovered via decomposing the request (and usually
- * specifically the URI path), and typically will be injected by the application.
- *
- * Requests are considered immutable; all methods that might change state are
- * implemented such that they retain the internal state of the current
- * message and return a new instance that contains the changed state.
- */
-class ServerRequest extends Request implements ServerRequestInterface
-{
-    /**
-     * @var array
-     */
-    private $attributes = [];
-
-    /**
-     * @var array
-     */
-    private $cookieParams = [];
-
-    /**
-     * @var null|array|object
-     */
-    private $parsedBody;
-
-    /**
-     * @var array
-     */
-    private $queryParams = [];
-
-    /**
-     * @var array
-     */
-    private $serverParams;
-
-    /**
-     * @var array
-     */
-    private $uploadedFiles = [];
-
-    /**
-     * @param string                               $method       HTTP method
-     * @param string|UriInterface                  $uri          URI
-     * @param array                                $headers      Request headers
-     * @param string|null|resource|StreamInterface $body         Request body
-     * @param string                               $version      Protocol version
-     * @param array                                $serverParams Typically the $_SERVER superglobal
-     */
-    public function __construct(
-        $method,
-        $uri,
-        array $headers = [],
-        $body = null,
-        $version = '1.1',
-        array $serverParams = []
-    ) {
-        $this->serverParams = $serverParams;
-
-        parent::__construct($method, $uri, $headers, $body, $version);
-    }
-
-    /**
-     * Return an UploadedFile instance array.
-     *
-     * @param array $files A array which respect $_FILES structure
-     *
-     * @return array
-     *
-     * @throws InvalidArgumentException for unrecognized values
-     */
-    public static function normalizeFiles(array $files)
-    {
-        $normalized = [];
-
-        foreach ($files as $key => $value) {
-            if ($value instanceof UploadedFileInterface) {
-                $normalized[$key] = $value;
-            } elseif (is_array($value) && isset($value['tmp_name'])) {
-                $normalized[$key] = self::createUploadedFileFromSpec($value);
-            } elseif (is_array($value)) {
-                $normalized[$key] = self::normalizeFiles($value);
-                continue;
-            } else {
-                throw new InvalidArgumentException('Invalid value in files specification');
-            }
-        }
-
-        return $normalized;
-    }
-
-    /**
-     * Create and return an UploadedFile instance from a $_FILES specification.
-     *
-     * If the specification represents an array of values, this method will
-     * delegate to normalizeNestedFileSpec() and return that return value.
-     *
-     * @param array $value $_FILES struct
-     * @return array|UploadedFileInterface
-     */
-    private static function createUploadedFileFromSpec(array $value)
-    {
-        if (is_array($value['tmp_name'])) {
-            return self::normalizeNestedFileSpec($value);
-        }
-
-        return new UploadedFile(
-            $value['tmp_name'],
-            (int) $value['size'],
-            (int) $value['error'],
-            $value['name'],
-            $value['type']
-        );
-    }
-
-    /**
-     * Normalize an array of file specifications.
-     *
-     * Loops through all nested files and returns a normalized array of
-     * UploadedFileInterface instances.
-     *
-     * @param array $files
-     * @return UploadedFileInterface[]
-     */
-    private static function normalizeNestedFileSpec(array $files = [])
-    {
-        $normalizedFiles = [];
-
-        foreach (array_keys($files['tmp_name']) as $key) {
-            $spec = [
-                'tmp_name' => $files['tmp_name'][$key],
-                'size'     => $files['size'][$key],
-                'error'    => $files['error'][$key],
-                'name'     => $files['name'][$key],
-                'type'     => $files['type'][$key],
-            ];
-            $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec);
-        }
-
-        return $normalizedFiles;
-    }
-
-    /**
-     * Return a ServerRequest populated with superglobals:
-     * $_GET
-     * $_POST
-     * $_COOKIE
-     * $_FILES
-     * $_SERVER
-     *
-     * @return ServerRequestInterface
-     */
-    public static function fromGlobals()
-    {
-        $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET';
-        $headers = getallheaders();
-        $uri = self::getUriFromGlobals();
-        $body = new CachingStream(new LazyOpenStream('php://input', 'r+'));
-        $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1';
-
-        $serverRequest = new ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER);
-
-        return $serverRequest
-            ->withCookieParams($_COOKIE)
-            ->withQueryParams($_GET)
-            ->withParsedBody($_POST)
-            ->withUploadedFiles(self::normalizeFiles($_FILES));
-    }
-
-    private static function extractHostAndPortFromAuthority($authority)
-    {
-        $uri = 'http://'.$authority;
-        $parts = parse_url($uri);
-        if (false === $parts) {
-            return [null, null];
-        }
-
-        $host = isset($parts['host']) ? $parts['host'] : null;
-        $port = isset($parts['port']) ? $parts['port'] : null;
-
-        return [$host, $port];
-    }
-
-    /**
-     * Get a Uri populated with values from $_SERVER.
-     *
-     * @return UriInterface
-     */
-    public static function getUriFromGlobals()
-    {
-        $uri = new Uri('');
-
-        $uri = $uri->withScheme(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http');
-
-        $hasPort = false;
-        if (isset($_SERVER['HTTP_HOST'])) {
-            list($host, $port) = self::extractHostAndPortFromAuthority($_SERVER['HTTP_HOST']);
-            if ($host !== null) {
-                $uri = $uri->withHost($host);
-            }
-
-            if ($port !== null) {
-                $hasPort = true;
-                $uri = $uri->withPort($port);
-            }
-        } elseif (isset($_SERVER['SERVER_NAME'])) {
-            $uri = $uri->withHost($_SERVER['SERVER_NAME']);
-        } elseif (isset($_SERVER['SERVER_ADDR'])) {
-            $uri = $uri->withHost($_SERVER['SERVER_ADDR']);
-        }
-
-        if (!$hasPort && isset($_SERVER['SERVER_PORT'])) {
-            $uri = $uri->withPort($_SERVER['SERVER_PORT']);
-        }
-
-        $hasQuery = false;
-        if (isset($_SERVER['REQUEST_URI'])) {
-            $requestUriParts = explode('?', $_SERVER['REQUEST_URI'], 2);
-            $uri = $uri->withPath($requestUriParts[0]);
-            if (isset($requestUriParts[1])) {
-                $hasQuery = true;
-                $uri = $uri->withQuery($requestUriParts[1]);
-            }
-        }
-
-        if (!$hasQuery && isset($_SERVER['QUERY_STRING'])) {
-            $uri = $uri->withQuery($_SERVER['QUERY_STRING']);
-        }
-
-        return $uri;
-    }
-
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getServerParams()
-    {
-        return $this->serverParams;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getUploadedFiles()
-    {
-        return $this->uploadedFiles;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withUploadedFiles(array $uploadedFiles)
-    {
-        $new = clone $this;
-        $new->uploadedFiles = $uploadedFiles;
-
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCookieParams()
-    {
-        return $this->cookieParams;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withCookieParams(array $cookies)
-    {
-        $new = clone $this;
-        $new->cookieParams = $cookies;
-
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getQueryParams()
-    {
-        return $this->queryParams;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withQueryParams(array $query)
-    {
-        $new = clone $this;
-        $new->queryParams = $query;
-
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getParsedBody()
-    {
-        return $this->parsedBody;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withParsedBody($data)
-    {
-        $new = clone $this;
-        $new->parsedBody = $data;
-
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getAttributes()
-    {
-        return $this->attributes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getAttribute($attribute, $default = null)
-    {
-        if (false === array_key_exists($attribute, $this->attributes)) {
-            return $default;
-        }
-
-        return $this->attributes[$attribute];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withAttribute($attribute, $value)
-    {
-        $new = clone $this;
-        $new->attributes[$attribute] = $value;
-
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withoutAttribute($attribute)
-    {
-        if (false === array_key_exists($attribute, $this->attributes)) {
-            return $this;
-        }
-
-        $new = clone $this;
-        unset($new->attributes[$attribute]);
-
-        return $new;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Stream.php b/vendor/guzzlehttp/psr7/src/Stream.php
deleted file mode 100644
index 3865d6d6a1394793d5c3f1e31cf9c5b3e1cc748c..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/Stream.php
+++ /dev/null
@@ -1,270 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * PHP stream implementation.
- *
- * @var $stream
- */
-class Stream implements StreamInterface
-{
-    /**
-     * Resource modes.
-     *
-     * @var string
-     *
-     * @see http://php.net/manual/function.fopen.php
-     * @see http://php.net/manual/en/function.gzopen.php
-     */
-    const READABLE_MODES = '/r|a\+|ab\+|w\+|wb\+|x\+|xb\+|c\+|cb\+/';
-    const WRITABLE_MODES = '/a|w|r\+|rb\+|rw|x|c/';
-
-    private $stream;
-    private $size;
-    private $seekable;
-    private $readable;
-    private $writable;
-    private $uri;
-    private $customMetadata;
-
-    /**
-     * This constructor accepts an associative array of options.
-     *
-     * - size: (int) If a read stream would otherwise have an indeterminate
-     *   size, but the size is known due to foreknowledge, then you can
-     *   provide that size, in bytes.
-     * - metadata: (array) Any additional metadata to return when the metadata
-     *   of the stream is accessed.
-     *
-     * @param resource $stream  Stream resource to wrap.
-     * @param array    $options Associative array of options.
-     *
-     * @throws \InvalidArgumentException if the stream is not a stream resource
-     */
-    public function __construct($stream, $options = [])
-    {
-        if (!is_resource($stream)) {
-            throw new \InvalidArgumentException('Stream must be a resource');
-        }
-
-        if (isset($options['size'])) {
-            $this->size = $options['size'];
-        }
-
-        $this->customMetadata = isset($options['metadata'])
-            ? $options['metadata']
-            : [];
-
-        $this->stream = $stream;
-        $meta = stream_get_meta_data($this->stream);
-        $this->seekable = $meta['seekable'];
-        $this->readable = (bool)preg_match(self::READABLE_MODES, $meta['mode']);
-        $this->writable = (bool)preg_match(self::WRITABLE_MODES, $meta['mode']);
-        $this->uri = $this->getMetadata('uri');
-    }
-
-    /**
-     * Closes the stream when the destructed
-     */
-    public function __destruct()
-    {
-        $this->close();
-    }
-
-    public function __toString()
-    {
-        try {
-            if ($this->isSeekable()) {
-                $this->seek(0);
-            }
-            return $this->getContents();
-        } catch (\Exception $e) {
-            return '';
-        }
-    }
-
-    public function getContents()
-    {
-        if (!isset($this->stream)) {
-            throw new \RuntimeException('Stream is detached');
-        }
-
-        $contents = stream_get_contents($this->stream);
-
-        if ($contents === false) {
-            throw new \RuntimeException('Unable to read stream contents');
-        }
-
-        return $contents;
-    }
-
-    public function close()
-    {
-        if (isset($this->stream)) {
-            if (is_resource($this->stream)) {
-                fclose($this->stream);
-            }
-            $this->detach();
-        }
-    }
-
-    public function detach()
-    {
-        if (!isset($this->stream)) {
-            return null;
-        }
-
-        $result = $this->stream;
-        unset($this->stream);
-        $this->size = $this->uri = null;
-        $this->readable = $this->writable = $this->seekable = false;
-
-        return $result;
-    }
-
-    public function getSize()
-    {
-        if ($this->size !== null) {
-            return $this->size;
-        }
-
-        if (!isset($this->stream)) {
-            return null;
-        }
-
-        // Clear the stat cache if the stream has a URI
-        if ($this->uri) {
-            clearstatcache(true, $this->uri);
-        }
-
-        $stats = fstat($this->stream);
-        if (isset($stats['size'])) {
-            $this->size = $stats['size'];
-            return $this->size;
-        }
-
-        return null;
-    }
-
-    public function isReadable()
-    {
-        return $this->readable;
-    }
-
-    public function isWritable()
-    {
-        return $this->writable;
-    }
-
-    public function isSeekable()
-    {
-        return $this->seekable;
-    }
-
-    public function eof()
-    {
-        if (!isset($this->stream)) {
-            throw new \RuntimeException('Stream is detached');
-        }
-
-        return feof($this->stream);
-    }
-
-    public function tell()
-    {
-        if (!isset($this->stream)) {
-            throw new \RuntimeException('Stream is detached');
-        }
-
-        $result = ftell($this->stream);
-
-        if ($result === false) {
-            throw new \RuntimeException('Unable to determine stream position');
-        }
-
-        return $result;
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        $whence = (int) $whence;
-
-        if (!isset($this->stream)) {
-            throw new \RuntimeException('Stream is detached');
-        }
-        if (!$this->seekable) {
-            throw new \RuntimeException('Stream is not seekable');
-        }
-        if (fseek($this->stream, $offset, $whence) === -1) {
-            throw new \RuntimeException('Unable to seek to stream position '
-                . $offset . ' with whence ' . var_export($whence, true));
-        }
-    }
-
-    public function read($length)
-    {
-        if (!isset($this->stream)) {
-            throw new \RuntimeException('Stream is detached');
-        }
-        if (!$this->readable) {
-            throw new \RuntimeException('Cannot read from non-readable stream');
-        }
-        if ($length < 0) {
-            throw new \RuntimeException('Length parameter cannot be negative');
-        }
-
-        if (0 === $length) {
-            return '';
-        }
-
-        $string = fread($this->stream, $length);
-        if (false === $string) {
-            throw new \RuntimeException('Unable to read from stream');
-        }
-
-        return $string;
-    }
-
-    public function write($string)
-    {
-        if (!isset($this->stream)) {
-            throw new \RuntimeException('Stream is detached');
-        }
-        if (!$this->writable) {
-            throw new \RuntimeException('Cannot write to a non-writable stream');
-        }
-
-        // We can't know the size after writing anything
-        $this->size = null;
-        $result = fwrite($this->stream, $string);
-
-        if ($result === false) {
-            throw new \RuntimeException('Unable to write to stream');
-        }
-
-        return $result;
-    }
-
-    public function getMetadata($key = null)
-    {
-        if (!isset($this->stream)) {
-            return $key ? null : [];
-        } elseif (!$key) {
-            return $this->customMetadata + stream_get_meta_data($this->stream);
-        } elseif (isset($this->customMetadata[$key])) {
-            return $this->customMetadata[$key];
-        }
-
-        $meta = stream_get_meta_data($this->stream);
-
-        return isset($meta[$key]) ? $meta[$key] : null;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
deleted file mode 100644
index 093023b1c9ad3d6a19f8b85114939e37ba4d1c36..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator trait
- * @property StreamInterface stream
- */
-trait StreamDecoratorTrait
-{
-    /**
-     * @param StreamInterface $stream Stream to decorate
-     */
-    public function __construct(StreamInterface $stream)
-    {
-        $this->stream = $stream;
-    }
-
-    /**
-     * Magic method used to create a new stream if streams are not added in
-     * the constructor of a decorator (e.g., LazyOpenStream).
-     *
-     * @param string $name Name of the property (allows "stream" only).
-     *
-     * @return StreamInterface
-     */
-    public function __get($name)
-    {
-        if ($name == 'stream') {
-            $this->stream = $this->createStream();
-            return $this->stream;
-        }
-
-        throw new \UnexpectedValueException("$name not found on class");
-    }
-
-    public function __toString()
-    {
-        try {
-            if ($this->isSeekable()) {
-                $this->seek(0);
-            }
-            return $this->getContents();
-        } catch (\Exception $e) {
-            // Really, PHP? https://bugs.php.net/bug.php?id=53648
-            trigger_error('StreamDecorator::__toString exception: '
-                . (string) $e, E_USER_ERROR);
-            return '';
-        }
-    }
-
-    public function getContents()
-    {
-        return Utils::copyToString($this);
-    }
-
-    /**
-     * Allow decorators to implement custom methods
-     *
-     * @param string $method Missing method name
-     * @param array  $args   Method arguments
-     *
-     * @return mixed
-     */
-    public function __call($method, array $args)
-    {
-        $result = call_user_func_array([$this->stream, $method], $args);
-
-        // Always return the wrapped object if the result is a return $this
-        return $result === $this->stream ? $this : $result;
-    }
-
-    public function close()
-    {
-        $this->stream->close();
-    }
-
-    public function getMetadata($key = null)
-    {
-        return $this->stream->getMetadata($key);
-    }
-
-    public function detach()
-    {
-        return $this->stream->detach();
-    }
-
-    public function getSize()
-    {
-        return $this->stream->getSize();
-    }
-
-    public function eof()
-    {
-        return $this->stream->eof();
-    }
-
-    public function tell()
-    {
-        return $this->stream->tell();
-    }
-
-    public function isReadable()
-    {
-        return $this->stream->isReadable();
-    }
-
-    public function isWritable()
-    {
-        return $this->stream->isWritable();
-    }
-
-    public function isSeekable()
-    {
-        return $this->stream->isSeekable();
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        $this->stream->seek($offset, $whence);
-    }
-
-    public function read($length)
-    {
-        return $this->stream->read($length);
-    }
-
-    public function write($string)
-    {
-        return $this->stream->write($string);
-    }
-
-    /**
-     * Implement in subclasses to dynamically create streams when requested.
-     *
-     * @return StreamInterface
-     *
-     * @throws \BadMethodCallException
-     */
-    protected function createStream()
-    {
-        throw new \BadMethodCallException('Not implemented');
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/StreamWrapper.php b/vendor/guzzlehttp/psr7/src/StreamWrapper.php
deleted file mode 100644
index eac6535397986f710f233a158e3e5293e2d4cdf3..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/StreamWrapper.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Converts Guzzle streams into PHP stream resources.
- */
-class StreamWrapper
-{
-    /** @var resource */
-    public $context;
-
-    /** @var StreamInterface */
-    private $stream;
-
-    /** @var string r, r+, or w */
-    private $mode;
-
-    /**
-     * Returns a resource representing the stream.
-     *
-     * @param StreamInterface $stream The stream to get a resource for
-     *
-     * @return resource
-     *
-     * @throws \InvalidArgumentException if stream is not readable or writable
-     */
-    public static function getResource(StreamInterface $stream)
-    {
-        self::register();
-
-        if ($stream->isReadable()) {
-            $mode = $stream->isWritable() ? 'r+' : 'r';
-        } elseif ($stream->isWritable()) {
-            $mode = 'w';
-        } else {
-            throw new \InvalidArgumentException('The stream must be readable, '
-                . 'writable, or both.');
-        }
-
-        return fopen('guzzle://stream', $mode, null, self::createStreamContext($stream));
-    }
-
-    /**
-     * Creates a stream context that can be used to open a stream as a php stream resource.
-     *
-     * @param StreamInterface $stream
-     *
-     * @return resource
-     */
-    public static function createStreamContext(StreamInterface $stream)
-    {
-        return stream_context_create([
-            'guzzle' => ['stream' => $stream]
-        ]);
-    }
-
-    /**
-     * Registers the stream wrapper if needed
-     */
-    public static function register()
-    {
-        if (!in_array('guzzle', stream_get_wrappers())) {
-            stream_wrapper_register('guzzle', __CLASS__);
-        }
-    }
-
-    public function stream_open($path, $mode, $options, &$opened_path)
-    {
-        $options = stream_context_get_options($this->context);
-
-        if (!isset($options['guzzle']['stream'])) {
-            return false;
-        }
-
-        $this->mode = $mode;
-        $this->stream = $options['guzzle']['stream'];
-
-        return true;
-    }
-
-    public function stream_read($count)
-    {
-        return $this->stream->read($count);
-    }
-
-    public function stream_write($data)
-    {
-        return (int) $this->stream->write($data);
-    }
-
-    public function stream_tell()
-    {
-        return $this->stream->tell();
-    }
-
-    public function stream_eof()
-    {
-        return $this->stream->eof();
-    }
-
-    public function stream_seek($offset, $whence)
-    {
-        $this->stream->seek($offset, $whence);
-
-        return true;
-    }
-
-    public function stream_cast($cast_as)
-    {
-        $stream = clone($this->stream);
-
-        return $stream->detach();
-    }
-
-    public function stream_stat()
-    {
-        static $modeMap = [
-            'r'  => 33060,
-            'rb' => 33060,
-            'r+' => 33206,
-            'w'  => 33188,
-            'wb' => 33188
-        ];
-
-        return [
-            'dev'     => 0,
-            'ino'     => 0,
-            'mode'    => $modeMap[$this->mode],
-            'nlink'   => 0,
-            'uid'     => 0,
-            'gid'     => 0,
-            'rdev'    => 0,
-            'size'    => $this->stream->getSize() ?: 0,
-            'atime'   => 0,
-            'mtime'   => 0,
-            'ctime'   => 0,
-            'blksize' => 0,
-            'blocks'  => 0
-        ];
-    }
-
-    public function url_stat($path, $flags)
-    {
-        return [
-            'dev'     => 0,
-            'ino'     => 0,
-            'mode'    => 0,
-            'nlink'   => 0,
-            'uid'     => 0,
-            'gid'     => 0,
-            'rdev'    => 0,
-            'size'    => 0,
-            'atime'   => 0,
-            'mtime'   => 0,
-            'ctime'   => 0,
-            'blksize' => 0,
-            'blocks'  => 0
-        ];
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/UploadedFile.php b/vendor/guzzlehttp/psr7/src/UploadedFile.php
deleted file mode 100644
index a0ea59e09bcb95391a410ee2a227afa1447de3fe..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/UploadedFile.php
+++ /dev/null
@@ -1,325 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use InvalidArgumentException;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UploadedFileInterface;
-use RuntimeException;
-
-class UploadedFile implements UploadedFileInterface
-{
-    /**
-     * @var int[]
-     */
-    private static $errors = [
-        UPLOAD_ERR_OK,
-        UPLOAD_ERR_INI_SIZE,
-        UPLOAD_ERR_FORM_SIZE,
-        UPLOAD_ERR_PARTIAL,
-        UPLOAD_ERR_NO_FILE,
-        UPLOAD_ERR_NO_TMP_DIR,
-        UPLOAD_ERR_CANT_WRITE,
-        UPLOAD_ERR_EXTENSION,
-    ];
-
-    /**
-     * @var string
-     */
-    private $clientFilename;
-
-    /**
-     * @var string
-     */
-    private $clientMediaType;
-
-    /**
-     * @var int
-     */
-    private $error;
-
-    /**
-     * @var null|string
-     */
-    private $file;
-
-    /**
-     * @var bool
-     */
-    private $moved = false;
-
-    /**
-     * @var int
-     */
-    private $size;
-
-    /**
-     * @var StreamInterface|null
-     */
-    private $stream;
-
-    /**
-     * @param StreamInterface|string|resource $streamOrFile
-     * @param int $size
-     * @param int $errorStatus
-     * @param string|null $clientFilename
-     * @param string|null $clientMediaType
-     */
-    public function __construct(
-        $streamOrFile,
-        $size,
-        $errorStatus,
-        $clientFilename = null,
-        $clientMediaType = null
-    ) {
-        $this->setError($errorStatus);
-        $this->setSize($size);
-        $this->setClientFilename($clientFilename);
-        $this->setClientMediaType($clientMediaType);
-
-        if ($this->isOk()) {
-            $this->setStreamOrFile($streamOrFile);
-        }
-    }
-
-    /**
-     * Depending on the value set file or stream variable
-     *
-     * @param mixed $streamOrFile
-     *
-     * @throws InvalidArgumentException
-     */
-    private function setStreamOrFile($streamOrFile)
-    {
-        if (is_string($streamOrFile)) {
-            $this->file = $streamOrFile;
-        } elseif (is_resource($streamOrFile)) {
-            $this->stream = new Stream($streamOrFile);
-        } elseif ($streamOrFile instanceof StreamInterface) {
-            $this->stream = $streamOrFile;
-        } else {
-            throw new InvalidArgumentException(
-                'Invalid stream or file provided for UploadedFile'
-            );
-        }
-    }
-
-    /**
-     * @param int $error
-     *
-     * @throws InvalidArgumentException
-     */
-    private function setError($error)
-    {
-        if (false === is_int($error)) {
-            throw new InvalidArgumentException(
-                'Upload file error status must be an integer'
-            );
-        }
-
-        if (false === in_array($error, UploadedFile::$errors)) {
-            throw new InvalidArgumentException(
-                'Invalid error status for UploadedFile'
-            );
-        }
-
-        $this->error = $error;
-    }
-
-    /**
-     * @param int $size
-     *
-     * @throws InvalidArgumentException
-     */
-    private function setSize($size)
-    {
-        if (false === is_int($size)) {
-            throw new InvalidArgumentException(
-                'Upload file size must be an integer'
-            );
-        }
-
-        $this->size = $size;
-    }
-
-    /**
-     * @param mixed $param
-     * @return boolean
-     */
-    private function isStringOrNull($param)
-    {
-        return in_array(gettype($param), ['string', 'NULL']);
-    }
-
-    /**
-     * @param mixed $param
-     * @return boolean
-     */
-    private function isStringNotEmpty($param)
-    {
-        return is_string($param) && false === empty($param);
-    }
-
-    /**
-     * @param string|null $clientFilename
-     *
-     * @throws InvalidArgumentException
-     */
-    private function setClientFilename($clientFilename)
-    {
-        if (false === $this->isStringOrNull($clientFilename)) {
-            throw new InvalidArgumentException(
-                'Upload file client filename must be a string or null'
-            );
-        }
-
-        $this->clientFilename = $clientFilename;
-    }
-
-    /**
-     * @param string|null $clientMediaType
-     *
-     * @throws InvalidArgumentException
-     */
-    private function setClientMediaType($clientMediaType)
-    {
-        if (false === $this->isStringOrNull($clientMediaType)) {
-            throw new InvalidArgumentException(
-                'Upload file client media type must be a string or null'
-            );
-        }
-
-        $this->clientMediaType = $clientMediaType;
-    }
-
-    /**
-     * Return true if there is no upload error
-     *
-     * @return boolean
-     */
-    private function isOk()
-    {
-        return $this->error === UPLOAD_ERR_OK;
-    }
-
-    /**
-     * @return boolean
-     */
-    public function isMoved()
-    {
-        return $this->moved;
-    }
-
-    /**
-     * @throws RuntimeException if is moved or not ok
-     */
-    private function validateActive()
-    {
-        if (false === $this->isOk()) {
-            throw new RuntimeException('Cannot retrieve stream due to upload error');
-        }
-
-        if ($this->isMoved()) {
-            throw new RuntimeException('Cannot retrieve stream after it has already been moved');
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws RuntimeException if the upload was not successful.
-     */
-    public function getStream()
-    {
-        $this->validateActive();
-
-        if ($this->stream instanceof StreamInterface) {
-            return $this->stream;
-        }
-
-        return new LazyOpenStream($this->file, 'r+');
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @see http://php.net/is_uploaded_file
-     * @see http://php.net/move_uploaded_file
-     *
-     * @param string $targetPath Path to which to move the uploaded file.
-     *
-     * @throws RuntimeException if the upload was not successful.
-     * @throws InvalidArgumentException if the $path specified is invalid.
-     * @throws RuntimeException on any error during the move operation, or on
-     *     the second or subsequent call to the method.
-     */
-    public function moveTo($targetPath)
-    {
-        $this->validateActive();
-
-        if (false === $this->isStringNotEmpty($targetPath)) {
-            throw new InvalidArgumentException(
-                'Invalid path provided for move operation; must be a non-empty string'
-            );
-        }
-
-        if ($this->file) {
-            $this->moved = php_sapi_name() == 'cli'
-                ? rename($this->file, $targetPath)
-                : move_uploaded_file($this->file, $targetPath);
-        } else {
-            Utils::copyToStream(
-                $this->getStream(),
-                new LazyOpenStream($targetPath, 'w')
-            );
-
-            $this->moved = true;
-        }
-
-        if (false === $this->moved) {
-            throw new RuntimeException(
-                sprintf('Uploaded file could not be moved to %s', $targetPath)
-            );
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @return int|null The file size in bytes or null if unknown.
-     */
-    public function getSize()
-    {
-        return $this->size;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @see http://php.net/manual/en/features.file-upload.errors.php
-     * @return int One of PHP's UPLOAD_ERR_XXX constants.
-     */
-    public function getError()
-    {
-        return $this->error;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @return string|null The filename sent by the client or null if none
-     *     was provided.
-     */
-    public function getClientFilename()
-    {
-        return $this->clientFilename;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getClientMediaType()
-    {
-        return $this->clientMediaType;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Uri.php b/vendor/guzzlehttp/psr7/src/Uri.php
deleted file mode 100644
index a0d73917e2a2466f52738c03271cf69f49412a3f..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/Uri.php
+++ /dev/null
@@ -1,761 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\UriInterface;
-
-/**
- * PSR-7 URI implementation.
- *
- * @author Michael Dowling
- * @author Tobias Schultze
- * @author Matthew Weier O'Phinney
- */
-class Uri implements UriInterface
-{
-    /**
-     * Absolute http and https URIs require a host per RFC 7230 Section 2.7
-     * but in generic URIs the host can be empty. So for http(s) URIs
-     * we apply this default host when no host is given yet to form a
-     * valid URI.
-     */
-    const HTTP_DEFAULT_HOST = 'localhost';
-
-    private static $defaultPorts = [
-        'http'  => 80,
-        'https' => 443,
-        'ftp' => 21,
-        'gopher' => 70,
-        'nntp' => 119,
-        'news' => 119,
-        'telnet' => 23,
-        'tn3270' => 23,
-        'imap' => 143,
-        'pop' => 110,
-        'ldap' => 389,
-    ];
-
-    private static $charUnreserved = 'a-zA-Z0-9_\-\.~';
-    private static $charSubDelims = '!\$&\'\(\)\*\+,;=';
-    private static $replaceQuery = ['=' => '%3D', '&' => '%26'];
-
-    /** @var string Uri scheme. */
-    private $scheme = '';
-
-    /** @var string Uri user info. */
-    private $userInfo = '';
-
-    /** @var string Uri host. */
-    private $host = '';
-
-    /** @var int|null Uri port. */
-    private $port;
-
-    /** @var string Uri path. */
-    private $path = '';
-
-    /** @var string Uri query string. */
-    private $query = '';
-
-    /** @var string Uri fragment. */
-    private $fragment = '';
-
-    /**
-     * @param string $uri URI to parse
-     */
-    public function __construct($uri = '')
-    {
-        // weak type check to also accept null until we can add scalar type hints
-        if ($uri != '') {
-            $parts = parse_url($uri);
-            if ($parts === false) {
-                throw new \InvalidArgumentException("Unable to parse URI: $uri");
-            }
-            $this->applyParts($parts);
-        }
-    }
-
-    public function __toString()
-    {
-        return self::composeComponents(
-            $this->scheme,
-            $this->getAuthority(),
-            $this->path,
-            $this->query,
-            $this->fragment
-        );
-    }
-
-    /**
-     * Composes a URI reference string from its various components.
-     *
-     * Usually this method does not need to be called manually but instead is used indirectly via
-     * `Psr\Http\Message\UriInterface::__toString`.
-     *
-     * PSR-7 UriInterface treats an empty component the same as a missing component as
-     * getQuery(), getFragment() etc. always return a string. This explains the slight
-     * difference to RFC 3986 Section 5.3.
-     *
-     * Another adjustment is that the authority separator is added even when the authority is missing/empty
-     * for the "file" scheme. This is because PHP stream functions like `file_get_contents` only work with
-     * `file:///myfile` but not with `file:/myfile` although they are equivalent according to RFC 3986. But
-     * `file:///` is the more common syntax for the file scheme anyway (Chrome for example redirects to
-     * that format).
-     *
-     * @param string $scheme
-     * @param string $authority
-     * @param string $path
-     * @param string $query
-     * @param string $fragment
-     *
-     * @return string
-     *
-     * @link https://tools.ietf.org/html/rfc3986#section-5.3
-     */
-    public static function composeComponents($scheme, $authority, $path, $query, $fragment)
-    {
-        $uri = '';
-
-        // weak type checks to also accept null until we can add scalar type hints
-        if ($scheme != '') {
-            $uri .= $scheme . ':';
-        }
-
-        if ($authority != ''|| $scheme === 'file') {
-            $uri .= '//' . $authority;
-        }
-
-        $uri .= $path;
-
-        if ($query != '') {
-            $uri .= '?' . $query;
-        }
-
-        if ($fragment != '') {
-            $uri .= '#' . $fragment;
-        }
-
-        return $uri;
-    }
-
-    /**
-     * Whether the URI has the default port of the current scheme.
-     *
-     * `Psr\Http\Message\UriInterface::getPort` may return null or the standard port. This method can be used
-     * independently of the implementation.
-     *
-     * @param UriInterface $uri
-     *
-     * @return bool
-     */
-    public static function isDefaultPort(UriInterface $uri)
-    {
-        return $uri->getPort() === null
-            || (isset(self::$defaultPorts[$uri->getScheme()]) && $uri->getPort() === self::$defaultPorts[$uri->getScheme()]);
-    }
-
-    /**
-     * Whether the URI is absolute, i.e. it has a scheme.
-     *
-     * An instance of UriInterface can either be an absolute URI or a relative reference. This method returns true
-     * if it is the former. An absolute URI has a scheme. A relative reference is used to express a URI relative
-     * to another URI, the base URI. Relative references can be divided into several forms:
-     * - network-path references, e.g. '//example.com/path'
-     * - absolute-path references, e.g. '/path'
-     * - relative-path references, e.g. 'subpath'
-     *
-     * @param UriInterface $uri
-     *
-     * @return bool
-     * @see Uri::isNetworkPathReference
-     * @see Uri::isAbsolutePathReference
-     * @see Uri::isRelativePathReference
-     * @link https://tools.ietf.org/html/rfc3986#section-4
-     */
-    public static function isAbsolute(UriInterface $uri)
-    {
-        return $uri->getScheme() !== '';
-    }
-
-    /**
-     * Whether the URI is a network-path reference.
-     *
-     * A relative reference that begins with two slash characters is termed an network-path reference.
-     *
-     * @param UriInterface $uri
-     *
-     * @return bool
-     * @link https://tools.ietf.org/html/rfc3986#section-4.2
-     */
-    public static function isNetworkPathReference(UriInterface $uri)
-    {
-        return $uri->getScheme() === '' && $uri->getAuthority() !== '';
-    }
-
-    /**
-     * Whether the URI is a absolute-path reference.
-     *
-     * A relative reference that begins with a single slash character is termed an absolute-path reference.
-     *
-     * @param UriInterface $uri
-     *
-     * @return bool
-     * @link https://tools.ietf.org/html/rfc3986#section-4.2
-     */
-    public static function isAbsolutePathReference(UriInterface $uri)
-    {
-        return $uri->getScheme() === ''
-            && $uri->getAuthority() === ''
-            && isset($uri->getPath()[0])
-            && $uri->getPath()[0] === '/';
-    }
-
-    /**
-     * Whether the URI is a relative-path reference.
-     *
-     * A relative reference that does not begin with a slash character is termed a relative-path reference.
-     *
-     * @param UriInterface $uri
-     *
-     * @return bool
-     * @link https://tools.ietf.org/html/rfc3986#section-4.2
-     */
-    public static function isRelativePathReference(UriInterface $uri)
-    {
-        return $uri->getScheme() === ''
-            && $uri->getAuthority() === ''
-            && (!isset($uri->getPath()[0]) || $uri->getPath()[0] !== '/');
-    }
-
-    /**
-     * Whether the URI is a same-document reference.
-     *
-     * A same-document reference refers to a URI that is, aside from its fragment
-     * component, identical to the base URI. When no base URI is given, only an empty
-     * URI reference (apart from its fragment) is considered a same-document reference.
-     *
-     * @param UriInterface      $uri  The URI to check
-     * @param UriInterface|null $base An optional base URI to compare against
-     *
-     * @return bool
-     * @link https://tools.ietf.org/html/rfc3986#section-4.4
-     */
-    public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null)
-    {
-        if ($base !== null) {
-            $uri = UriResolver::resolve($base, $uri);
-
-            return ($uri->getScheme() === $base->getScheme())
-                && ($uri->getAuthority() === $base->getAuthority())
-                && ($uri->getPath() === $base->getPath())
-                && ($uri->getQuery() === $base->getQuery());
-        }
-
-        return $uri->getScheme() === '' && $uri->getAuthority() === '' && $uri->getPath() === '' && $uri->getQuery() === '';
-    }
-
-    /**
-     * Removes dot segments from a path and returns the new path.
-     *
-     * @param string $path
-     *
-     * @return string
-     *
-     * @deprecated since version 1.4. Use UriResolver::removeDotSegments instead.
-     * @see UriResolver::removeDotSegments
-     */
-    public static function removeDotSegments($path)
-    {
-        return UriResolver::removeDotSegments($path);
-    }
-
-    /**
-     * Converts the relative URI into a new URI that is resolved against the base URI.
-     *
-     * @param UriInterface        $base Base URI
-     * @param string|UriInterface $rel  Relative URI
-     *
-     * @return UriInterface
-     *
-     * @deprecated since version 1.4. Use UriResolver::resolve instead.
-     * @see UriResolver::resolve
-     */
-    public static function resolve(UriInterface $base, $rel)
-    {
-        if (!($rel instanceof UriInterface)) {
-            $rel = new self($rel);
-        }
-
-        return UriResolver::resolve($base, $rel);
-    }
-
-    /**
-     * Creates a new URI with a specific query string value removed.
-     *
-     * Any existing query string values that exactly match the provided key are
-     * removed.
-     *
-     * @param UriInterface $uri URI to use as a base.
-     * @param string       $key Query string key to remove.
-     *
-     * @return UriInterface
-     */
-    public static function withoutQueryValue(UriInterface $uri, $key)
-    {
-        $result = self::getFilteredQueryString($uri, [$key]);
-
-        return $uri->withQuery(implode('&', $result));
-    }
-
-    /**
-     * Creates a new URI with a specific query string value.
-     *
-     * Any existing query string values that exactly match the provided key are
-     * removed and replaced with the given key value pair.
-     *
-     * A value of null will set the query string key without a value, e.g. "key"
-     * instead of "key=value".
-     *
-     * @param UriInterface $uri   URI to use as a base.
-     * @param string       $key   Key to set.
-     * @param string|null  $value Value to set
-     *
-     * @return UriInterface
-     */
-    public static function withQueryValue(UriInterface $uri, $key, $value)
-    {
-        $result = self::getFilteredQueryString($uri, [$key]);
-
-        $result[] = self::generateQueryString($key, $value);
-
-        return $uri->withQuery(implode('&', $result));
-    }
-
-    /**
-     * Creates a new URI with multiple specific query string values.
-     *
-     * It has the same behavior as withQueryValue() but for an associative array of key => value.
-     *
-     * @param UriInterface $uri           URI to use as a base.
-     * @param array        $keyValueArray Associative array of key and values
-     *
-     * @return UriInterface
-     */
-    public static function withQueryValues(UriInterface $uri, array $keyValueArray)
-    {
-        $result = self::getFilteredQueryString($uri, array_keys($keyValueArray));
-
-        foreach ($keyValueArray as $key => $value) {
-            $result[] = self::generateQueryString($key, $value);
-        }
-
-        return $uri->withQuery(implode('&', $result));
-    }
-
-    /**
-     * Creates a URI from a hash of `parse_url` components.
-     *
-     * @param array $parts
-     *
-     * @return UriInterface
-     * @link http://php.net/manual/en/function.parse-url.php
-     *
-     * @throws \InvalidArgumentException If the components do not form a valid URI.
-     */
-    public static function fromParts(array $parts)
-    {
-        $uri = new self();
-        $uri->applyParts($parts);
-        $uri->validateState();
-
-        return $uri;
-    }
-
-    public function getScheme()
-    {
-        return $this->scheme;
-    }
-
-    public function getAuthority()
-    {
-        $authority = $this->host;
-        if ($this->userInfo !== '') {
-            $authority = $this->userInfo . '@' . $authority;
-        }
-
-        if ($this->port !== null) {
-            $authority .= ':' . $this->port;
-        }
-
-        return $authority;
-    }
-
-    public function getUserInfo()
-    {
-        return $this->userInfo;
-    }
-
-    public function getHost()
-    {
-        return $this->host;
-    }
-
-    public function getPort()
-    {
-        return $this->port;
-    }
-
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    public function getQuery()
-    {
-        return $this->query;
-    }
-
-    public function getFragment()
-    {
-        return $this->fragment;
-    }
-
-    public function withScheme($scheme)
-    {
-        $scheme = $this->filterScheme($scheme);
-
-        if ($this->scheme === $scheme) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->scheme = $scheme;
-        $new->removeDefaultPort();
-        $new->validateState();
-
-        return $new;
-    }
-
-    public function withUserInfo($user, $password = null)
-    {
-        $info = $this->filterUserInfoComponent($user);
-        if ($password !== null) {
-            $info .= ':' . $this->filterUserInfoComponent($password);
-        }
-
-        if ($this->userInfo === $info) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->userInfo = $info;
-        $new->validateState();
-
-        return $new;
-    }
-
-    public function withHost($host)
-    {
-        $host = $this->filterHost($host);
-
-        if ($this->host === $host) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->host = $host;
-        $new->validateState();
-
-        return $new;
-    }
-
-    public function withPort($port)
-    {
-        $port = $this->filterPort($port);
-
-        if ($this->port === $port) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->port = $port;
-        $new->removeDefaultPort();
-        $new->validateState();
-
-        return $new;
-    }
-
-    public function withPath($path)
-    {
-        $path = $this->filterPath($path);
-
-        if ($this->path === $path) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->path = $path;
-        $new->validateState();
-
-        return $new;
-    }
-
-    public function withQuery($query)
-    {
-        $query = $this->filterQueryAndFragment($query);
-
-        if ($this->query === $query) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->query = $query;
-
-        return $new;
-    }
-
-    public function withFragment($fragment)
-    {
-        $fragment = $this->filterQueryAndFragment($fragment);
-
-        if ($this->fragment === $fragment) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->fragment = $fragment;
-
-        return $new;
-    }
-
-    /**
-     * Apply parse_url parts to a URI.
-     *
-     * @param array $parts Array of parse_url parts to apply.
-     */
-    private function applyParts(array $parts)
-    {
-        $this->scheme = isset($parts['scheme'])
-            ? $this->filterScheme($parts['scheme'])
-            : '';
-        $this->userInfo = isset($parts['user'])
-            ? $this->filterUserInfoComponent($parts['user'])
-            : '';
-        $this->host = isset($parts['host'])
-            ? $this->filterHost($parts['host'])
-            : '';
-        $this->port = isset($parts['port'])
-            ? $this->filterPort($parts['port'])
-            : null;
-        $this->path = isset($parts['path'])
-            ? $this->filterPath($parts['path'])
-            : '';
-        $this->query = isset($parts['query'])
-            ? $this->filterQueryAndFragment($parts['query'])
-            : '';
-        $this->fragment = isset($parts['fragment'])
-            ? $this->filterQueryAndFragment($parts['fragment'])
-            : '';
-        if (isset($parts['pass'])) {
-            $this->userInfo .= ':' . $this->filterUserInfoComponent($parts['pass']);
-        }
-
-        $this->removeDefaultPort();
-    }
-
-    /**
-     * @param string $scheme
-     *
-     * @return string
-     *
-     * @throws \InvalidArgumentException If the scheme is invalid.
-     */
-    private function filterScheme($scheme)
-    {
-        if (!is_string($scheme)) {
-            throw new \InvalidArgumentException('Scheme must be a string');
-        }
-
-        return strtolower($scheme);
-    }
-
-    /**
-     * @param string $component
-     *
-     * @return string
-     *
-     * @throws \InvalidArgumentException If the user info is invalid.
-     */
-    private function filterUserInfoComponent($component)
-    {
-        if (!is_string($component)) {
-            throw new \InvalidArgumentException('User info must be a string');
-        }
-
-        return preg_replace_callback(
-            '/(?:[^%' . self::$charUnreserved . self::$charSubDelims . ']+|%(?![A-Fa-f0-9]{2}))/',
-            [$this, 'rawurlencodeMatchZero'],
-            $component
-        );
-    }
-
-    /**
-     * @param string $host
-     *
-     * @return string
-     *
-     * @throws \InvalidArgumentException If the host is invalid.
-     */
-    private function filterHost($host)
-    {
-        if (!is_string($host)) {
-            throw new \InvalidArgumentException('Host must be a string');
-        }
-
-        return strtolower($host);
-    }
-
-    /**
-     * @param int|null $port
-     *
-     * @return int|null
-     *
-     * @throws \InvalidArgumentException If the port is invalid.
-     */
-    private function filterPort($port)
-    {
-        if ($port === null) {
-            return null;
-        }
-
-        $port = (int) $port;
-        if (0 > $port || 0xffff < $port) {
-            throw new \InvalidArgumentException(
-                sprintf('Invalid port: %d. Must be between 0 and 65535', $port)
-            );
-        }
-
-        return $port;
-    }
-
-    /**
-     * @param UriInterface $uri
-     * @param array        $keys
-     * 
-     * @return array
-     */
-    private static function getFilteredQueryString(UriInterface $uri, array $keys)
-    {
-        $current = $uri->getQuery();
-
-        if ($current === '') {
-            return [];
-        }
-
-        $decodedKeys = array_map('rawurldecode', $keys);
-
-        return array_filter(explode('&', $current), function ($part) use ($decodedKeys) {
-            return !in_array(rawurldecode(explode('=', $part)[0]), $decodedKeys, true);
-        });
-    }
-
-    /**
-     * @param string      $key
-     * @param string|null $value
-     * 
-     * @return string
-     */
-    private static function generateQueryString($key, $value)
-    {
-        // Query string separators ("=", "&") within the key or value need to be encoded
-        // (while preventing double-encoding) before setting the query string. All other
-        // chars that need percent-encoding will be encoded by withQuery().
-        $queryString = strtr($key, self::$replaceQuery);
-
-        if ($value !== null) {
-            $queryString .= '=' . strtr($value, self::$replaceQuery);
-        }
-
-        return $queryString;
-    }
-
-    private function removeDefaultPort()
-    {
-        if ($this->port !== null && self::isDefaultPort($this)) {
-            $this->port = null;
-        }
-    }
-
-    /**
-     * Filters the path of a URI
-     *
-     * @param string $path
-     *
-     * @return string
-     *
-     * @throws \InvalidArgumentException If the path is invalid.
-     */
-    private function filterPath($path)
-    {
-        if (!is_string($path)) {
-            throw new \InvalidArgumentException('Path must be a string');
-        }
-
-        return preg_replace_callback(
-            '/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\/]++|%(?![A-Fa-f0-9]{2}))/',
-            [$this, 'rawurlencodeMatchZero'],
-            $path
-        );
-    }
-
-    /**
-     * Filters the query string or fragment of a URI.
-     *
-     * @param string $str
-     *
-     * @return string
-     *
-     * @throws \InvalidArgumentException If the query or fragment is invalid.
-     */
-    private function filterQueryAndFragment($str)
-    {
-        if (!is_string($str)) {
-            throw new \InvalidArgumentException('Query and fragment must be a string');
-        }
-
-        return preg_replace_callback(
-            '/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\/\?]++|%(?![A-Fa-f0-9]{2}))/',
-            [$this, 'rawurlencodeMatchZero'],
-            $str
-        );
-    }
-
-    private function rawurlencodeMatchZero(array $match)
-    {
-        return rawurlencode($match[0]);
-    }
-
-    private function validateState()
-    {
-        if ($this->host === '' && ($this->scheme === 'http' || $this->scheme === 'https')) {
-            $this->host = self::HTTP_DEFAULT_HOST;
-        }
-
-        if ($this->getAuthority() === '') {
-            if (0 === strpos($this->path, '//')) {
-                throw new \InvalidArgumentException('The path of a URI without an authority must not start with two slashes "//"');
-            }
-            if ($this->scheme === '' && false !== strpos(explode('/', $this->path, 2)[0], ':')) {
-                throw new \InvalidArgumentException('A relative URI must not have a path beginning with a segment containing a colon');
-            }
-        } elseif (isset($this->path[0]) && $this->path[0] !== '/') {
-            @trigger_error(
-                'The path of a URI with an authority must start with a slash "/" or be empty. Automagically fixing the URI ' .
-                'by adding a leading slash to the path is deprecated since version 1.4 and will throw an exception instead.',
-                E_USER_DEPRECATED
-            );
-            $this->path = '/'. $this->path;
-            //throw new \InvalidArgumentException('The path of a URI with an authority must start with a slash "/" or be empty');
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/UriNormalizer.php b/vendor/guzzlehttp/psr7/src/UriNormalizer.php
deleted file mode 100644
index 2b9174a5e7e2705eff7313d841902617a8a58b25..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/UriNormalizer.php
+++ /dev/null
@@ -1,217 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\UriInterface;
-
-/**
- * Provides methods to normalize and compare URIs.
- *
- * @author Tobias Schultze
- *
- * @link https://tools.ietf.org/html/rfc3986#section-6
- */
-final class UriNormalizer
-{
-    /**
-     * Default normalizations which only include the ones that preserve semantics.
-     *
-     * self::CAPITALIZE_PERCENT_ENCODING | self::DECODE_UNRESERVED_CHARACTERS | self::CONVERT_EMPTY_PATH |
-     * self::REMOVE_DEFAULT_HOST | self::REMOVE_DEFAULT_PORT | self::REMOVE_DOT_SEGMENTS
-     */
-    const PRESERVING_NORMALIZATIONS = 63;
-
-    /**
-     * All letters within a percent-encoding triplet (e.g., "%3A") are case-insensitive, and should be capitalized.
-     *
-     * Example: http://example.org/a%c2%b1b → http://example.org/a%C2%B1b
-     */
-    const CAPITALIZE_PERCENT_ENCODING = 1;
-
-    /**
-     * Decodes percent-encoded octets of unreserved characters.
-     *
-     * For consistency, percent-encoded octets in the ranges of ALPHA (%41–%5A and %61–%7A), DIGIT (%30–%39),
-     * hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should not be created by URI producers and,
-     * when found in a URI, should be decoded to their corresponding unreserved characters by URI normalizers.
-     *
-     * Example: http://example.org/%7Eusern%61me/ → http://example.org/~username/
-     */
-    const DECODE_UNRESERVED_CHARACTERS = 2;
-
-    /**
-     * Converts the empty path to "/" for http and https URIs.
-     *
-     * Example: http://example.org → http://example.org/
-     */
-    const CONVERT_EMPTY_PATH = 4;
-
-    /**
-     * Removes the default host of the given URI scheme from the URI.
-     *
-     * Only the "file" scheme defines the default host "localhost".
-     * All of `file:/myfile`, `file:///myfile`, and `file://localhost/myfile`
-     * are equivalent according to RFC 3986. The first format is not accepted
-     * by PHPs stream functions and thus already normalized implicitly to the
-     * second format in the Uri class. See `GuzzleHttp\Psr7\Uri::composeComponents`.
-     *
-     * Example: file://localhost/myfile → file:///myfile
-     */
-    const REMOVE_DEFAULT_HOST = 8;
-
-    /**
-     * Removes the default port of the given URI scheme from the URI.
-     *
-     * Example: http://example.org:80/ → http://example.org/
-     */
-    const REMOVE_DEFAULT_PORT = 16;
-
-    /**
-     * Removes unnecessary dot-segments.
-     *
-     * Dot-segments in relative-path references are not removed as it would
-     * change the semantics of the URI reference.
-     *
-     * Example: http://example.org/../a/b/../c/./d.html → http://example.org/a/c/d.html
-     */
-    const REMOVE_DOT_SEGMENTS = 32;
-
-    /**
-     * Paths which include two or more adjacent slashes are converted to one.
-     *
-     * Webservers usually ignore duplicate slashes and treat those URIs equivalent.
-     * But in theory those URIs do not need to be equivalent. So this normalization
-     * may change the semantics. Encoded slashes (%2F) are not removed.
-     *
-     * Example: http://example.org//foo///bar.html → http://example.org/foo/bar.html
-     */
-    const REMOVE_DUPLICATE_SLASHES = 64;
-
-    /**
-     * Sort query parameters with their values in alphabetical order.
-     *
-     * However, the order of parameters in a URI may be significant (this is not defined by the standard).
-     * So this normalization is not safe and may change the semantics of the URI.
-     *
-     * Example: ?lang=en&article=fred → ?article=fred&lang=en
-     *
-     * Note: The sorting is neither locale nor Unicode aware (the URI query does not get decoded at all) as the
-     * purpose is to be able to compare URIs in a reproducible way, not to have the params sorted perfectly.
-     */
-    const SORT_QUERY_PARAMETERS = 128;
-
-    /**
-     * Returns a normalized URI.
-     *
-     * The scheme and host component are already normalized to lowercase per PSR-7 UriInterface.
-     * This methods adds additional normalizations that can be configured with the $flags parameter.
-     *
-     * PSR-7 UriInterface cannot distinguish between an empty component and a missing component as
-     * getQuery(), getFragment() etc. always return a string. This means the URIs "/?#" and "/" are
-     * treated equivalent which is not necessarily true according to RFC 3986. But that difference
-     * is highly uncommon in reality. So this potential normalization is implied in PSR-7 as well.
-     *
-     * @param UriInterface $uri   The URI to normalize
-     * @param int          $flags A bitmask of normalizations to apply, see constants
-     *
-     * @return UriInterface The normalized URI
-     * @link https://tools.ietf.org/html/rfc3986#section-6.2
-     */
-    public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NORMALIZATIONS)
-    {
-        if ($flags & self::CAPITALIZE_PERCENT_ENCODING) {
-            $uri = self::capitalizePercentEncoding($uri);
-        }
-
-        if ($flags & self::DECODE_UNRESERVED_CHARACTERS) {
-            $uri = self::decodeUnreservedCharacters($uri);
-        }
-
-        if ($flags & self::CONVERT_EMPTY_PATH && $uri->getPath() === '' &&
-            ($uri->getScheme() === 'http' || $uri->getScheme() === 'https')
-        ) {
-            $uri = $uri->withPath('/');
-        }
-
-        if ($flags & self::REMOVE_DEFAULT_HOST && $uri->getScheme() === 'file' && $uri->getHost() === 'localhost') {
-            $uri = $uri->withHost('');
-        }
-
-        if ($flags & self::REMOVE_DEFAULT_PORT && $uri->getPort() !== null && Uri::isDefaultPort($uri)) {
-            $uri = $uri->withPort(null);
-        }
-
-        if ($flags & self::REMOVE_DOT_SEGMENTS && !Uri::isRelativePathReference($uri)) {
-            $uri = $uri->withPath(UriResolver::removeDotSegments($uri->getPath()));
-        }
-
-        if ($flags & self::REMOVE_DUPLICATE_SLASHES) {
-            $uri = $uri->withPath(preg_replace('#//++#', '/', $uri->getPath()));
-        }
-
-        if ($flags & self::SORT_QUERY_PARAMETERS && $uri->getQuery() !== '') {
-            $queryKeyValues = explode('&', $uri->getQuery());
-            sort($queryKeyValues);
-            $uri = $uri->withQuery(implode('&', $queryKeyValues));
-        }
-
-        return $uri;
-    }
-
-    /**
-     * Whether two URIs can be considered equivalent.
-     *
-     * Both URIs are normalized automatically before comparison with the given $normalizations bitmask. The method also
-     * accepts relative URI references and returns true when they are equivalent. This of course assumes they will be
-     * resolved against the same base URI. If this is not the case, determination of equivalence or difference of
-     * relative references does not mean anything.
-     *
-     * @param UriInterface $uri1           An URI to compare
-     * @param UriInterface $uri2           An URI to compare
-     * @param int          $normalizations A bitmask of normalizations to apply, see constants
-     *
-     * @return bool
-     * @link https://tools.ietf.org/html/rfc3986#section-6.1
-     */
-    public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS)
-    {
-        return (string) self::normalize($uri1, $normalizations) === (string) self::normalize($uri2, $normalizations);
-    }
-
-    private static function capitalizePercentEncoding(UriInterface $uri)
-    {
-        $regex = '/(?:%[A-Fa-f0-9]{2})++/';
-
-        $callback = function (array $match) {
-            return strtoupper($match[0]);
-        };
-
-        return
-            $uri->withPath(
-                preg_replace_callback($regex, $callback, $uri->getPath())
-            )->withQuery(
-                preg_replace_callback($regex, $callback, $uri->getQuery())
-            );
-    }
-
-    private static function decodeUnreservedCharacters(UriInterface $uri)
-    {
-        $regex = '/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i';
-
-        $callback = function (array $match) {
-            return rawurldecode($match[0]);
-        };
-
-        return
-            $uri->withPath(
-                preg_replace_callback($regex, $callback, $uri->getPath())
-            )->withQuery(
-                preg_replace_callback($regex, $callback, $uri->getQuery())
-            );
-    }
-
-    private function __construct()
-    {
-        // cannot be instantiated
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/UriResolver.php b/vendor/guzzlehttp/psr7/src/UriResolver.php
deleted file mode 100644
index 26cecd53a11f8bd1a3bb567160ab25ef7934f700..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/UriResolver.php
+++ /dev/null
@@ -1,220 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\UriInterface;
-
-/**
- * Resolves a URI reference in the context of a base URI and the opposite way.
- *
- * @author Tobias Schultze
- *
- * @link https://tools.ietf.org/html/rfc3986#section-5
- */
-final class UriResolver
-{
-    /**
-     * Removes dot segments from a path and returns the new path.
-     *
-     * @param string $path
-     *
-     * @return string
-     * @link http://tools.ietf.org/html/rfc3986#section-5.2.4
-     */
-    public static function removeDotSegments($path)
-    {
-        if ($path === '' || $path === '/') {
-            return $path;
-        }
-
-        $results = [];
-        $segments = explode('/', $path);
-        foreach ($segments as $segment) {
-            if ($segment === '..') {
-                array_pop($results);
-            } elseif ($segment !== '.') {
-                $results[] = $segment;
-            }
-        }
-
-        $newPath = implode('/', $results);
-
-        if ($path[0] === '/' && (!isset($newPath[0]) || $newPath[0] !== '/')) {
-            // Re-add the leading slash if necessary for cases like "/.."
-            $newPath = '/' . $newPath;
-        } elseif ($newPath !== '' && ($segment === '.' || $segment === '..')) {
-            // Add the trailing slash if necessary
-            // If newPath is not empty, then $segment must be set and is the last segment from the foreach
-            $newPath .= '/';
-        }
-
-        return $newPath;
-    }
-
-    /**
-     * Converts the relative URI into a new URI that is resolved against the base URI.
-     *
-     * @param UriInterface $base Base URI
-     * @param UriInterface $rel  Relative URI
-     *
-     * @return UriInterface
-     * @link http://tools.ietf.org/html/rfc3986#section-5.2
-     */
-    public static function resolve(UriInterface $base, UriInterface $rel)
-    {
-        if ((string) $rel === '') {
-            // we can simply return the same base URI instance for this same-document reference
-            return $base;
-        }
-
-        if ($rel->getScheme() != '') {
-            return $rel->withPath(self::removeDotSegments($rel->getPath()));
-        }
-
-        if ($rel->getAuthority() != '') {
-            $targetAuthority = $rel->getAuthority();
-            $targetPath = self::removeDotSegments($rel->getPath());
-            $targetQuery = $rel->getQuery();
-        } else {
-            $targetAuthority = $base->getAuthority();
-            if ($rel->getPath() === '') {
-                $targetPath = $base->getPath();
-                $targetQuery = $rel->getQuery() != '' ? $rel->getQuery() : $base->getQuery();
-            } else {
-                if ($rel->getPath()[0] === '/') {
-                    $targetPath = $rel->getPath();
-                } else {
-                    if ($targetAuthority != '' && $base->getPath() === '') {
-                        $targetPath = '/' . $rel->getPath();
-                    } else {
-                        $lastSlashPos = strrpos($base->getPath(), '/');
-                        if ($lastSlashPos === false) {
-                            $targetPath = $rel->getPath();
-                        } else {
-                            $targetPath = substr($base->getPath(), 0, $lastSlashPos + 1) . $rel->getPath();
-                        }
-                    }
-                }
-                $targetPath = self::removeDotSegments($targetPath);
-                $targetQuery = $rel->getQuery();
-            }
-        }
-
-        return new Uri(Uri::composeComponents(
-            $base->getScheme(),
-            $targetAuthority,
-            $targetPath,
-            $targetQuery,
-            $rel->getFragment()
-        ));
-    }
-
-    /**
-     * Returns the target URI as a relative reference from the base URI.
-     *
-     * This method is the counterpart to resolve():
-     *
-     *    (string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target))
-     *
-     * One use-case is to use the current request URI as base URI and then generate relative links in your documents
-     * to reduce the document size or offer self-contained downloadable document archives.
-     *
-     *    $base = new Uri('http://example.com/a/b/');
-     *    echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c'));  // prints 'c'.
-     *    echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y'));  // prints '../x/y'.
-     *    echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'.
-     *    echo UriResolver::relativize($base, new Uri('http://example.org/a/b/'));   // prints '//example.org/a/b/'.
-     *
-     * This method also accepts a target that is already relative and will try to relativize it further. Only a
-     * relative-path reference will be returned as-is.
-     *
-     *    echo UriResolver::relativize($base, new Uri('/a/b/c'));  // prints 'c' as well
-     *
-     * @param UriInterface $base   Base URI
-     * @param UriInterface $target Target URI
-     *
-     * @return UriInterface The relative URI reference
-     */
-    public static function relativize(UriInterface $base, UriInterface $target)
-    {
-        if ($target->getScheme() !== '' &&
-            ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '')
-        ) {
-            return $target;
-        }
-
-        if (Uri::isRelativePathReference($target)) {
-            // As the target is already highly relative we return it as-is. It would be possible to resolve
-            // the target with `$target = self::resolve($base, $target);` and then try make it more relative
-            // by removing a duplicate query. But let's not do that automatically.
-            return $target;
-        }
-
-        if ($target->getAuthority() !== '' && $base->getAuthority() !== $target->getAuthority()) {
-            return $target->withScheme('');
-        }
-
-        // We must remove the path before removing the authority because if the path starts with two slashes, the URI
-        // would turn invalid. And we also cannot set a relative path before removing the authority, as that is also
-        // invalid.
-        $emptyPathUri = $target->withScheme('')->withPath('')->withUserInfo('')->withPort(null)->withHost('');
-
-        if ($base->getPath() !== $target->getPath()) {
-            return $emptyPathUri->withPath(self::getRelativePath($base, $target));
-        }
-
-        if ($base->getQuery() === $target->getQuery()) {
-            // Only the target fragment is left. And it must be returned even if base and target fragment are the same.
-            return $emptyPathUri->withQuery('');
-        }
-
-        // If the base URI has a query but the target has none, we cannot return an empty path reference as it would
-        // inherit the base query component when resolving.
-        if ($target->getQuery() === '') {
-            $segments = explode('/', $target->getPath());
-            $lastSegment = end($segments);
-
-            return $emptyPathUri->withPath($lastSegment === '' ? './' : $lastSegment);
-        }
-
-        return $emptyPathUri;
-    }
-
-    private static function getRelativePath(UriInterface $base, UriInterface $target)
-    {
-        $sourceSegments = explode('/', $base->getPath());
-        $targetSegments = explode('/', $target->getPath());
-        array_pop($sourceSegments);
-        $targetLastSegment = array_pop($targetSegments);
-        foreach ($sourceSegments as $i => $segment) {
-            if (isset($targetSegments[$i]) && $segment === $targetSegments[$i]) {
-                unset($sourceSegments[$i], $targetSegments[$i]);
-            } else {
-                break;
-            }
-        }
-        $targetSegments[] = $targetLastSegment;
-        $relativePath = str_repeat('../', count($sourceSegments)) . implode('/', $targetSegments);
-
-        // A reference to am empty last segment or an empty first sub-segment must be prefixed with "./".
-        // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used
-        // as the first segment of a relative-path reference, as it would be mistaken for a scheme name.
-        if ('' === $relativePath || false !== strpos(explode('/', $relativePath, 2)[0], ':')) {
-            $relativePath = "./$relativePath";
-        } elseif ('/' === $relativePath[0]) {
-            if ($base->getAuthority() != '' && $base->getPath() === '') {
-                // In this case an extra slash is added by resolve() automatically. So we must not add one here.
-                $relativePath = ".$relativePath";
-            } else {
-                $relativePath = "./$relativePath";
-            }
-        }
-
-        return $relativePath;
-    }
-
-    private function __construct()
-    {
-        // cannot be instantiated
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Utils.php b/vendor/guzzlehttp/psr7/src/Utils.php
deleted file mode 100644
index 86960dde2e98e3fe1c64cb975bef5dc9cbea19f5..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/Utils.php
+++ /dev/null
@@ -1,398 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UriInterface;
-
-final class Utils
-{
-    /**
-     * Remove the items given by the keys, case insensitively from the data.
-     *
-     * @param iterable<string> $keys
-     *
-     * @return array
-     */
-    public static function caselessRemove($keys, array $data)
-    {
-        $result = [];
-
-        foreach ($keys as &$key) {
-            $key = strtolower($key);
-        }
-
-        foreach ($data as $k => $v) {
-            if (!in_array(strtolower($k), $keys)) {
-                $result[$k] = $v;
-            }
-        }
-
-        return $result;
-    }
-
-    /**
-     * Copy the contents of a stream into another stream until the given number
-     * of bytes have been read.
-     *
-     * @param StreamInterface $source Stream to read from
-     * @param StreamInterface $dest   Stream to write to
-     * @param int             $maxLen Maximum number of bytes to read. Pass -1
-     *                                to read the entire stream.
-     *
-     * @throws \RuntimeException on error.
-     */
-    public static function copyToStream(StreamInterface $source, StreamInterface $dest, $maxLen = -1)
-    {
-        $bufferSize = 8192;
-
-        if ($maxLen === -1) {
-            while (!$source->eof()) {
-                if (!$dest->write($source->read($bufferSize))) {
-                    break;
-                }
-            }
-        } else {
-            $remaining = $maxLen;
-            while ($remaining > 0 && !$source->eof()) {
-                $buf = $source->read(min($bufferSize, $remaining));
-                $len = strlen($buf);
-                if (!$len) {
-                    break;
-                }
-                $remaining -= $len;
-                $dest->write($buf);
-            }
-        }
-    }
-
-    /**
-     * Copy the contents of a stream into a string until the given number of
-     * bytes have been read.
-     *
-     * @param StreamInterface $stream Stream to read
-     * @param int             $maxLen Maximum number of bytes to read. Pass -1
-     *                                to read the entire stream.
-     * @return string
-     *
-     * @throws \RuntimeException on error.
-     */
-    public static function copyToString(StreamInterface $stream, $maxLen = -1)
-    {
-        $buffer = '';
-
-        if ($maxLen === -1) {
-            while (!$stream->eof()) {
-                $buf = $stream->read(1048576);
-                // Using a loose equality here to match on '' and false.
-                if ($buf == null) {
-                    break;
-                }
-                $buffer .= $buf;
-            }
-            return $buffer;
-        }
-
-        $len = 0;
-        while (!$stream->eof() && $len < $maxLen) {
-            $buf = $stream->read($maxLen - $len);
-            // Using a loose equality here to match on '' and false.
-            if ($buf == null) {
-                break;
-            }
-            $buffer .= $buf;
-            $len = strlen($buffer);
-        }
-
-        return $buffer;
-    }
-
-    /**
-     * Calculate a hash of a stream.
-     *
-     * This method reads the entire stream to calculate a rolling hash, based
-     * on PHP's `hash_init` functions.
-     *
-     * @param StreamInterface $stream    Stream to calculate the hash for
-     * @param string          $algo      Hash algorithm (e.g. md5, crc32, etc)
-     * @param bool            $rawOutput Whether or not to use raw output
-     *
-     * @return string Returns the hash of the stream
-     *
-     * @throws \RuntimeException on error.
-     */
-    public static function hash(StreamInterface $stream, $algo, $rawOutput = false)
-    {
-        $pos = $stream->tell();
-
-        if ($pos > 0) {
-            $stream->rewind();
-        }
-
-        $ctx = hash_init($algo);
-        while (!$stream->eof()) {
-            hash_update($ctx, $stream->read(1048576));
-        }
-
-        $out = hash_final($ctx, (bool) $rawOutput);
-        $stream->seek($pos);
-
-        return $out;
-    }
-
-    /**
-     * Clone and modify a request with the given changes.
-     *
-     * This method is useful for reducing the number of clones needed to mutate
-     * a message.
-     *
-     * The changes can be one of:
-     * - method: (string) Changes the HTTP method.
-     * - set_headers: (array) Sets the given headers.
-     * - remove_headers: (array) Remove the given headers.
-     * - body: (mixed) Sets the given body.
-     * - uri: (UriInterface) Set the URI.
-     * - query: (string) Set the query string value of the URI.
-     * - version: (string) Set the protocol version.
-     *
-     * @param RequestInterface $request Request to clone and modify.
-     * @param array            $changes Changes to apply.
-     *
-     * @return RequestInterface
-     */
-    public static function modifyRequest(RequestInterface $request, array $changes)
-    {
-        if (!$changes) {
-            return $request;
-        }
-
-        $headers = $request->getHeaders();
-
-        if (!isset($changes['uri'])) {
-            $uri = $request->getUri();
-        } else {
-            // Remove the host header if one is on the URI
-            if ($host = $changes['uri']->getHost()) {
-                $changes['set_headers']['Host'] = $host;
-
-                if ($port = $changes['uri']->getPort()) {
-                    $standardPorts = ['http' => 80, 'https' => 443];
-                    $scheme = $changes['uri']->getScheme();
-                    if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) {
-                        $changes['set_headers']['Host'] .= ':'.$port;
-                    }
-                }
-            }
-            $uri = $changes['uri'];
-        }
-
-        if (!empty($changes['remove_headers'])) {
-            $headers = self::caselessRemove($changes['remove_headers'], $headers);
-        }
-
-        if (!empty($changes['set_headers'])) {
-            $headers = self::caselessRemove(array_keys($changes['set_headers']), $headers);
-            $headers = $changes['set_headers'] + $headers;
-        }
-
-        if (isset($changes['query'])) {
-            $uri = $uri->withQuery($changes['query']);
-        }
-
-        if ($request instanceof ServerRequestInterface) {
-            return (new ServerRequest(
-                isset($changes['method']) ? $changes['method'] : $request->getMethod(),
-                $uri,
-                $headers,
-                isset($changes['body']) ? $changes['body'] : $request->getBody(),
-                isset($changes['version'])
-                    ? $changes['version']
-                    : $request->getProtocolVersion(),
-                $request->getServerParams()
-            ))
-            ->withParsedBody($request->getParsedBody())
-            ->withQueryParams($request->getQueryParams())
-            ->withCookieParams($request->getCookieParams())
-            ->withUploadedFiles($request->getUploadedFiles());
-        }
-
-        return new Request(
-            isset($changes['method']) ? $changes['method'] : $request->getMethod(),
-            $uri,
-            $headers,
-            isset($changes['body']) ? $changes['body'] : $request->getBody(),
-            isset($changes['version'])
-                ? $changes['version']
-                : $request->getProtocolVersion()
-        );
-    }
-
-    /**
-     * Read a line from the stream up to the maximum allowed buffer length.
-     *
-     * @param StreamInterface $stream    Stream to read from
-     * @param int|null        $maxLength Maximum buffer length
-     *
-     * @return string
-     */
-    public static function readLine(StreamInterface $stream, $maxLength = null)
-    {
-        $buffer = '';
-        $size = 0;
-
-        while (!$stream->eof()) {
-            // Using a loose equality here to match on '' and false.
-            if (null == ($byte = $stream->read(1))) {
-                return $buffer;
-            }
-            $buffer .= $byte;
-            // Break when a new line is found or the max length - 1 is reached
-            if ($byte === "\n" || ++$size === $maxLength - 1) {
-                break;
-            }
-        }
-
-        return $buffer;
-    }
-
-    /**
-     * Create a new stream based on the input type.
-     *
-     * Options is an associative array that can contain the following keys:
-     * - metadata: Array of custom metadata.
-     * - size: Size of the stream.
-     *
-     * This method accepts the following `$resource` types:
-     * - `Psr\Http\Message\StreamInterface`: Returns the value as-is.
-     * - `string`: Creates a stream object that uses the given string as the contents.
-     * - `resource`: Creates a stream object that wraps the given PHP stream resource.
-     * - `Iterator`: If the provided value implements `Iterator`, then a read-only
-     *   stream object will be created that wraps the given iterable. Each time the
-     *   stream is read from, data from the iterator will fill a buffer and will be
-     *   continuously called until the buffer is equal to the requested read size.
-     *   Subsequent read calls will first read from the buffer and then call `next`
-     *   on the underlying iterator until it is exhausted.
-     * - `object` with `__toString()`: If the object has the `__toString()` method,
-     *   the object will be cast to a string and then a stream will be returned that
-     *   uses the string value.
-     * - `NULL`: When `null` is passed, an empty stream object is returned.
-     * - `callable` When a callable is passed, a read-only stream object will be
-     *   created that invokes the given callable. The callable is invoked with the
-     *   number of suggested bytes to read. The callable can return any number of
-     *   bytes, but MUST return `false` when there is no more data to return. The
-     *   stream object that wraps the callable will invoke the callable until the
-     *   number of requested bytes are available. Any additional bytes will be
-     *   buffered and used in subsequent reads.
-     *
-     * @param resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource Entity body data
-     * @param array                                                                  $options  Additional options
-     *
-     * @return StreamInterface
-     *
-     * @throws \InvalidArgumentException if the $resource arg is not valid.
-     */
-    public static function streamFor($resource = '', array $options = [])
-    {
-        if (is_scalar($resource)) {
-            $stream = fopen('php://temp', 'r+');
-            if ($resource !== '') {
-                fwrite($stream, $resource);
-                fseek($stream, 0);
-            }
-            return new Stream($stream, $options);
-        }
-
-        switch (gettype($resource)) {
-            case 'resource':
-                return new Stream($resource, $options);
-            case 'object':
-                if ($resource instanceof StreamInterface) {
-                    return $resource;
-                } elseif ($resource instanceof \Iterator) {
-                    return new PumpStream(function () use ($resource) {
-                        if (!$resource->valid()) {
-                            return false;
-                        }
-                        $result = $resource->current();
-                        $resource->next();
-                        return $result;
-                    }, $options);
-                } elseif (method_exists($resource, '__toString')) {
-                    return Utils::streamFor((string) $resource, $options);
-                }
-                break;
-            case 'NULL':
-                return new Stream(fopen('php://temp', 'r+'), $options);
-        }
-
-        if (is_callable($resource)) {
-            return new PumpStream($resource, $options);
-        }
-
-        throw new \InvalidArgumentException('Invalid resource type: ' . gettype($resource));
-    }
-
-    /**
-     * Safely opens a PHP stream resource using a filename.
-     *
-     * When fopen fails, PHP normally raises a warning. This function adds an
-     * error handler that checks for errors and throws an exception instead.
-     *
-     * @param string $filename File to open
-     * @param string $mode     Mode used to open the file
-     *
-     * @return resource
-     *
-     * @throws \RuntimeException if the file cannot be opened
-     */
-    public static function tryFopen($filename, $mode)
-    {
-        $ex = null;
-        set_error_handler(function () use ($filename, $mode, &$ex) {
-            $ex = new \RuntimeException(sprintf(
-                'Unable to open %s using mode %s: %s',
-                $filename,
-                $mode,
-                func_get_args()[1]
-            ));
-        });
-
-        $handle = fopen($filename, $mode);
-        restore_error_handler();
-
-        if ($ex) {
-            /** @var $ex \RuntimeException */
-            throw $ex;
-        }
-
-        return $handle;
-    }
-
-    /**
-     * Returns a UriInterface for the given value.
-     *
-     * This function accepts a string or UriInterface and returns a
-     * UriInterface for the given value. If the value is already a
-     * UriInterface, it is returned as-is.
-     *
-     * @param string|UriInterface $uri
-     *
-     * @return UriInterface
-     *
-     * @throws \InvalidArgumentException
-     */
-    public static function uriFor($uri)
-    {
-        if ($uri instanceof UriInterface) {
-            return $uri;
-        }
-
-        if (is_string($uri)) {
-            return new Uri($uri);
-        }
-
-        throw new \InvalidArgumentException('URI must be a string or UriInterface');
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/functions.php b/vendor/guzzlehttp/psr7/src/functions.php
deleted file mode 100644
index e4cc13619683e1da71256c486b63aa992bd6a800..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/functions.php
+++ /dev/null
@@ -1,417 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\MessageInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Returns the string representation of an HTTP message.
- *
- * @param MessageInterface $message Message to convert to a string.
- *
- * @return string
- *
- * @deprecated str will be removed in guzzlehttp/psr7:2.0. Use Message::toString instead.
- */
-function str(MessageInterface $message)
-{
-    return Message::toString($message);
-}
-
-/**
- * Returns a UriInterface for the given value.
- *
- * This function accepts a string or UriInterface and returns a
- * UriInterface for the given value. If the value is already a
- * UriInterface, it is returned as-is.
- *
- * @param string|UriInterface $uri
- *
- * @return UriInterface
- *
- * @throws \InvalidArgumentException
- *
- * @deprecated uri_for will be removed in guzzlehttp/psr7:2.0. Use Utils::uriFor instead.
- */
-function uri_for($uri)
-{
-    return Utils::uriFor($uri);
-}
-
-/**
- * Create a new stream based on the input type.
- *
- * Options is an associative array that can contain the following keys:
- * - metadata: Array of custom metadata.
- * - size: Size of the stream.
- *
- * This method accepts the following `$resource` types:
- * - `Psr\Http\Message\StreamInterface`: Returns the value as-is.
- * - `string`: Creates a stream object that uses the given string as the contents.
- * - `resource`: Creates a stream object that wraps the given PHP stream resource.
- * - `Iterator`: If the provided value implements `Iterator`, then a read-only
- *   stream object will be created that wraps the given iterable. Each time the
- *   stream is read from, data from the iterator will fill a buffer and will be
- *   continuously called until the buffer is equal to the requested read size.
- *   Subsequent read calls will first read from the buffer and then call `next`
- *   on the underlying iterator until it is exhausted.
- * - `object` with `__toString()`: If the object has the `__toString()` method,
- *   the object will be cast to a string and then a stream will be returned that
- *   uses the string value.
- * - `NULL`: When `null` is passed, an empty stream object is returned.
- * - `callable` When a callable is passed, a read-only stream object will be
- *   created that invokes the given callable. The callable is invoked with the
- *   number of suggested bytes to read. The callable can return any number of
- *   bytes, but MUST return `false` when there is no more data to return. The
- *   stream object that wraps the callable will invoke the callable until the
- *   number of requested bytes are available. Any additional bytes will be
- *   buffered and used in subsequent reads.
- *
- * @param resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource Entity body data
- * @param array                                                                  $options  Additional options
- *
- * @return StreamInterface
- *
- * @throws \InvalidArgumentException if the $resource arg is not valid.
- *
- * @deprecated stream_for will be removed in guzzlehttp/psr7:2.0. Use Utils::streamFor instead.
- */
-function stream_for($resource = '', array $options = [])
-{
-    return Utils::streamFor($resource, $options);
-}
-
-/**
- * Parse an array of header values containing ";" separated data into an
- * array of associative arrays representing the header key value pair data
- * of the header. When a parameter does not contain a value, but just
- * contains a key, this function will inject a key with a '' string value.
- *
- * @param string|array $header Header to parse into components.
- *
- * @return array Returns the parsed header values.
- *
- * @deprecated parse_header will be removed in guzzlehttp/psr7:2.0. Use Header::parse instead.
- */
-function parse_header($header)
-{
-    return Header::parse($header);
-}
-
-/**
- * Converts an array of header values that may contain comma separated
- * headers into an array of headers with no comma separated values.
- *
- * @param string|array $header Header to normalize.
- *
- * @return array Returns the normalized header field values.
- *
- * @deprecated normalize_header will be removed in guzzlehttp/psr7:2.0. Use Header::normalize instead.
- */
-function normalize_header($header)
-{
-    return Header::normalize($header);
-}
-
-/**
- * Clone and modify a request with the given changes.
- *
- * This method is useful for reducing the number of clones needed to mutate a
- * message.
- *
- * The changes can be one of:
- * - method: (string) Changes the HTTP method.
- * - set_headers: (array) Sets the given headers.
- * - remove_headers: (array) Remove the given headers.
- * - body: (mixed) Sets the given body.
- * - uri: (UriInterface) Set the URI.
- * - query: (string) Set the query string value of the URI.
- * - version: (string) Set the protocol version.
- *
- * @param RequestInterface $request Request to clone and modify.
- * @param array            $changes Changes to apply.
- *
- * @return RequestInterface
- *
- * @deprecated modify_request will be removed in guzzlehttp/psr7:2.0. Use Utils::modifyRequest instead.
- */
-function modify_request(RequestInterface $request, array $changes)
-{
-    return Utils::modifyRequest($request, $changes);
-}
-
-/**
- * Attempts to rewind a message body and throws an exception on failure.
- *
- * The body of the message will only be rewound if a call to `tell()` returns a
- * value other than `0`.
- *
- * @param MessageInterface $message Message to rewind
- *
- * @throws \RuntimeException
- *
- * @deprecated rewind_body will be removed in guzzlehttp/psr7:2.0. Use Message::rewindBody instead.
- */
-function rewind_body(MessageInterface $message)
-{
-    Message::rewindBody($message);
-}
-
-/**
- * Safely opens a PHP stream resource using a filename.
- *
- * When fopen fails, PHP normally raises a warning. This function adds an
- * error handler that checks for errors and throws an exception instead.
- *
- * @param string $filename File to open
- * @param string $mode     Mode used to open the file
- *
- * @return resource
- *
- * @throws \RuntimeException if the file cannot be opened
- *
- * @deprecated try_fopen will be removed in guzzlehttp/psr7:2.0. Use Utils::tryFopen instead.
- */
-function try_fopen($filename, $mode)
-{
-    return Utils::tryFopen($filename, $mode);
-}
-
-/**
- * Copy the contents of a stream into a string until the given number of
- * bytes have been read.
- *
- * @param StreamInterface $stream Stream to read
- * @param int             $maxLen Maximum number of bytes to read. Pass -1
- *                                to read the entire stream.
- * @return string
- *
- * @throws \RuntimeException on error.
- *
- * @deprecated copy_to_string will be removed in guzzlehttp/psr7:2.0. Use Utils::copyToString instead.
- */
-function copy_to_string(StreamInterface $stream, $maxLen = -1)
-{
-    return Utils::copyToString($stream, $maxLen);
-}
-
-/**
- * Copy the contents of a stream into another stream until the given number
- * of bytes have been read.
- *
- * @param StreamInterface $source Stream to read from
- * @param StreamInterface $dest   Stream to write to
- * @param int             $maxLen Maximum number of bytes to read. Pass -1
- *                                to read the entire stream.
- *
- * @throws \RuntimeException on error.
- *
- * @deprecated copy_to_stream will be removed in guzzlehttp/psr7:2.0. Use Utils::copyToStream instead.
- */
-function copy_to_stream(StreamInterface $source, StreamInterface $dest, $maxLen = -1)
-{
-    return Utils::copyToStream($source, $dest, $maxLen);
-}
-
-/**
- * Calculate a hash of a stream.
- *
- * This method reads the entire stream to calculate a rolling hash, based on
- * PHP's `hash_init` functions.
- *
- * @param StreamInterface $stream    Stream to calculate the hash for
- * @param string          $algo      Hash algorithm (e.g. md5, crc32, etc)
- * @param bool            $rawOutput Whether or not to use raw output
- *
- * @return string Returns the hash of the stream
- *
- * @throws \RuntimeException on error.
- *
- * @deprecated hash will be removed in guzzlehttp/psr7:2.0. Use Utils::hash instead.
- */
-function hash(StreamInterface $stream, $algo, $rawOutput = false)
-{
-    return Utils::hash($stream, $algo, $rawOutput);
-}
-
-/**
- * Read a line from the stream up to the maximum allowed buffer length.
- *
- * @param StreamInterface $stream    Stream to read from
- * @param int|null        $maxLength Maximum buffer length
- *
- * @return string
- *
- * @deprecated readline will be removed in guzzlehttp/psr7:2.0. Use Utils::readLine instead.
- */
-function readline(StreamInterface $stream, $maxLength = null)
-{
-    return Utils::readLine($stream, $maxLength);
-}
-
-/**
- * Parses a request message string into a request object.
- *
- * @param string $message Request message string.
- *
- * @return Request
- *
- * @deprecated parse_request will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequest instead.
- */
-function parse_request($message)
-{
-    return Message::parseRequest($message);
-}
-
-/**
- * Parses a response message string into a response object.
- *
- * @param string $message Response message string.
- *
- * @return Response
- *
- * @deprecated parse_response will be removed in guzzlehttp/psr7:2.0. Use Message::parseResponse instead.
- */
-function parse_response($message)
-{
-    return Message::parseResponse($message);
-}
-
-/**
- * Parse a query string into an associative array.
- *
- * If multiple values are found for the same key, the value of that key value
- * pair will become an array. This function does not parse nested PHP style
- * arrays into an associative array (e.g., `foo[a]=1&foo[b]=2` will be parsed
- * into `['foo[a]' => '1', 'foo[b]' => '2'])`.
- *
- * @param string   $str         Query string to parse
- * @param int|bool $urlEncoding How the query string is encoded
- *
- * @return array
- *
- * @deprecated parse_query will be removed in guzzlehttp/psr7:2.0. Use Query::parse instead.
- */
-function parse_query($str, $urlEncoding = true)
-{
-    return Query::parse($str, $urlEncoding);
-}
-
-/**
- * Build a query string from an array of key value pairs.
- *
- * This function can use the return value of `parse_query()` to build a query
- * string. This function does not modify the provided keys when an array is
- * encountered (like `http_build_query()` would).
- *
- * @param array     $params   Query string parameters.
- * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
- *                            to encode using RFC3986, or PHP_QUERY_RFC1738
- *                            to encode using RFC1738.
- * @return string
- *
- * @deprecated build_query will be removed in guzzlehttp/psr7:2.0. Use Query::build instead.
- */
-function build_query(array $params, $encoding = PHP_QUERY_RFC3986)
-{
-    return Query::build($params, $encoding);
-}
-
-/**
- * Determines the mimetype of a file by looking at its extension.
- *
- * @param string $filename
- *
- * @return string|null
- *
- * @deprecated mimetype_from_filename will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromFilename instead.
- */
-function mimetype_from_filename($filename)
-{
-    return MimeType::fromFilename($filename);
-}
-
-/**
- * Maps a file extensions to a mimetype.
- *
- * @param $extension string The file extension.
- *
- * @return string|null
- *
- * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types
- * @deprecated mimetype_from_extension will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromExtension instead.
- */
-function mimetype_from_extension($extension)
-{
-    return MimeType::fromExtension($extension);
-}
-
-/**
- * Parses an HTTP message into an associative array.
- *
- * The array contains the "start-line" key containing the start line of
- * the message, "headers" key containing an associative array of header
- * array values, and a "body" key containing the body of the message.
- *
- * @param string $message HTTP request or response to parse.
- *
- * @return array
- *
- * @internal
- * @deprecated _parse_message will be removed in guzzlehttp/psr7:2.0. Use Message::parseMessage instead.
- */
-function _parse_message($message)
-{
-    return Message::parseMessage($message);
-}
-
-/**
- * Constructs a URI for an HTTP request message.
- *
- * @param string $path    Path from the start-line
- * @param array  $headers Array of headers (each value an array).
- *
- * @return string
- *
- * @internal
- * @deprecated _parse_request_uri will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequestUri instead.
- */
-function _parse_request_uri($path, array $headers)
-{
-    return Message::parseRequestUri($path, $headers);
-}
-
-/**
- * Get a short summary of the message body.
- *
- * Will return `null` if the response is not printable.
- *
- * @param MessageInterface $message    The message to get the body summary
- * @param int              $truncateAt The maximum allowed size of the summary
- *
- * @return string|null
- *
- * @deprecated get_message_body_summary will be removed in guzzlehttp/psr7:2.0. Use Message::bodySummary instead.
- */
-function get_message_body_summary(MessageInterface $message, $truncateAt = 120)
-{
-    return Message::bodySummary($message, $truncateAt);
-}
-
-/**
- * Remove the items given by the keys, case insensitively from the data.
- *
- * @param iterable<string> $keys
- *
- * @return array
- *
- * @internal
- * @deprecated _caseless_remove will be removed in guzzlehttp/psr7:2.0. Use Utils::caselessRemove instead.
- */
-function _caseless_remove($keys, array $data)
-{
-    return Utils::caselessRemove($keys, $data);
-}
diff --git a/vendor/guzzlehttp/psr7/src/functions_include.php b/vendor/guzzlehttp/psr7/src/functions_include.php
deleted file mode 100644
index 96a4a83a01aac6412572b74fd9b0abc339f6ad0f..0000000000000000000000000000000000000000
--- a/vendor/guzzlehttp/psr7/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-// Don't redefine the functions if included multiple times.
-if (!function_exists('GuzzleHttp\Psr7\str')) {
-    require __DIR__ . '/functions.php';
-}
diff --git a/vendor/hab/paginator b/vendor/hab/paginator
deleted file mode 160000
index 82429eeee25412b638da3b18d519fc9cb9b4568a..0000000000000000000000000000000000000000
--- a/vendor/hab/paginator
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 82429eeee25412b638da3b18d519fc9cb9b4568a
diff --git a/vendor/hab/solr b/vendor/hab/solr
deleted file mode 160000
index ef528a52d57493ad2ae575037e42442075135f62..0000000000000000000000000000000000000000
--- a/vendor/hab/solr
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit ef528a52d57493ad2ae575037e42442075135f62
diff --git a/vendor/pimple/pimple/.gitignore b/vendor/pimple/pimple/.gitignore
deleted file mode 100644
index c089b09520c224f7fedcfcef90e5cbd3e4199c33..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-phpunit.xml
-composer.lock
-/vendor/
diff --git a/vendor/pimple/pimple/.php_cs.dist b/vendor/pimple/pimple/.php_cs.dist
deleted file mode 100644
index 2787bb4070095380703c37f58dbcab1fea152603..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/.php_cs.dist
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-return PhpCsFixer\Config::create()
-    ->setRules([
-        '@Symfony' => true,
-        '@Symfony:risky' => true,
-        '@PHPUnit75Migration:risky' => true,
-        'php_unit_dedicate_assert' => true,
-        'array_syntax' => ['syntax' => 'short'],
-        'php_unit_fqcn_annotation' => true,
-        'no_unreachable_default_argument_value' => false,
-        'braces' => ['allow_single_line_closure' => true],
-        'heredoc_to_nowdoc' => false,
-        'ordered_imports' => true,
-        'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'],
-        'native_function_invocation' => ['include' => ['@compiler_optimized'], 'scope' => 'all'],
-    ])
-    ->setRiskyAllowed(true)
-    ->setFinder(PhpCsFixer\Finder::create()->in(__DIR__.'/src'))
-;
diff --git a/vendor/pimple/pimple/.travis.yml b/vendor/pimple/pimple/.travis.yml
deleted file mode 100644
index 723904a78d67d1af4d4defde1c096d3f4db15391..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/.travis.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-language: php
-
-env:
-  global:
-    - REPORT_EXIT_STATUS=1
-
-php:
-  - 7.2
-  - 7.3
-  - 7.4
-
-before_script:
-  - composer self-update
-  - COMPOSER_ROOT_VERSION=dev-master composer install
-
-script:
-  - ./vendor/bin/simple-phpunit
diff --git a/vendor/pimple/pimple/CHANGELOG b/vendor/pimple/pimple/CHANGELOG
deleted file mode 100644
index 219895740b08eeebd89701a9171eb41a2662b31f..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/CHANGELOG
+++ /dev/null
@@ -1,64 +0,0 @@
-* 3.3.0 (2020-03-03)
-
- * Drop PHP extension
- * Bump min PHP version to 7.2.5
-
-* 3.2.3 (2018-01-21)
-
- * prefixed all function calls with \ for extra speed
-
-* 3.2.2 (2017-07-23)
-
- * reverted extending a protected closure throws an exception (deprecated it instead)
-
-* 3.2.1 (2017-07-17)
-
- * fixed PHP error
-
-* 3.2.0 (2017-07-17)
-
- * added a PSR-11 service locator
- * added a PSR-11 wrapper
- * added ServiceIterator
- * fixed extending a protected closure (now throws InvalidServiceIdentifierException)
-
-* 3.1.0 (2017-07-03)
-
- * deprecated the C extension
- * added support for PSR-11 exceptions
-
-* 3.0.2 (2015-09-11)
-
- * refactored the C extension
- * minor non-significant changes
-
-* 3.0.1 (2015-07-30)
-
- * simplified some code
- * fixed a segfault in the C extension
-
-* 3.0.0 (2014-07-24)
-
- * removed the Pimple class alias (use Pimple\Container instead)
-
-* 2.1.1 (2014-07-24)
-
- * fixed compiler warnings for the C extension
- * fixed code when dealing with circular references
-
-* 2.1.0 (2014-06-24)
-
- * moved the Pimple to Pimple\Container (with a BC layer -- Pimple is now a
-   deprecated alias which will be removed in Pimple 3.0)
- * added Pimple\ServiceProviderInterface (and Pimple::register())
-
-* 2.0.0 (2014-02-10)
-
- * changed extend to automatically re-assign the extended service and keep it as shared or factory
-   (to keep BC, extend still returns the extended service)
- * changed services to be shared by default (use factory() for factory
-   services)
-
-* 1.0.0
-
- * initial version
diff --git a/vendor/pimple/pimple/LICENSE b/vendor/pimple/pimple/LICENSE
deleted file mode 100644
index 3e2a9e1e6d226236afa9f5f8fffd78db265cd2b7..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2009-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/pimple/pimple/README.rst b/vendor/pimple/pimple/README.rst
deleted file mode 100644
index a03b6d3a49925bd9cb3bdbe19b040109f30af2a0..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/README.rst
+++ /dev/null
@@ -1,326 +0,0 @@
-Pimple
-======
-
-.. caution::
-
-    This is the documentation for Pimple 3.x. If you are using Pimple 1.x, read
-    the `Pimple 1.x documentation`_. Reading the Pimple 1.x code is also a good
-    way to learn more about how to create a simple Dependency Injection
-    Container (recent versions of Pimple are more focused on performance).
-
-Pimple is a small Dependency Injection Container for PHP.
-
-Installation
-------------
-
-Before using Pimple in your project, add it to your ``composer.json`` file:
-
-.. code-block:: bash
-
-    $ ./composer.phar require pimple/pimple "^3.0"
-
-Usage
------
-
-Creating a container is a matter of creating a ``Container`` instance:
-
-.. code-block:: php
-
-    use Pimple\Container;
-
-    $container = new Container();
-
-As many other dependency injection containers, Pimple manages two different
-kind of data: **services** and **parameters**.
-
-Defining Services
-~~~~~~~~~~~~~~~~~
-
-A service is an object that does something as part of a larger system. Examples
-of services: a database connection, a templating engine, or a mailer. Almost
-any **global** object can be a service.
-
-Services are defined by **anonymous functions** that return an instance of an
-object:
-
-.. code-block:: php
-
-    // define some services
-    $container['session_storage'] = function ($c) {
-        return new SessionStorage('SESSION_ID');
-    };
-
-    $container['session'] = function ($c) {
-        return new Session($c['session_storage']);
-    };
-
-Notice that the anonymous function has access to the current container
-instance, allowing references to other services or parameters.
-
-As objects are only created when you get them, the order of the definitions
-does not matter.
-
-Using the defined services is also very easy:
-
-.. code-block:: php
-
-    // get the session object
-    $session = $container['session'];
-
-    // the above call is roughly equivalent to the following code:
-    // $storage = new SessionStorage('SESSION_ID');
-    // $session = new Session($storage);
-
-Defining Factory Services
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-By default, each time you get a service, Pimple returns the **same instance**
-of it. If you want a different instance to be returned for all calls, wrap your
-anonymous function with the ``factory()`` method
-
-.. code-block:: php
-
-    $container['session'] = $container->factory(function ($c) {
-        return new Session($c['session_storage']);
-    });
-
-Now, each call to ``$container['session']`` returns a new instance of the
-session.
-
-Defining Parameters
-~~~~~~~~~~~~~~~~~~~
-
-Defining a parameter allows to ease the configuration of your container from
-the outside and to store global values:
-
-.. code-block:: php
-
-    // define some parameters
-    $container['cookie_name'] = 'SESSION_ID';
-    $container['session_storage_class'] = 'SessionStorage';
-
-If you change the ``session_storage`` service definition like below:
-
-.. code-block:: php
-
-    $container['session_storage'] = function ($c) {
-        return new $c['session_storage_class']($c['cookie_name']);
-    };
-
-You can now easily change the cookie name by overriding the
-``cookie_name`` parameter instead of redefining the service
-definition.
-
-Protecting Parameters
-~~~~~~~~~~~~~~~~~~~~~
-
-Because Pimple sees anonymous functions as service definitions, you need to
-wrap anonymous functions with the ``protect()`` method to store them as
-parameters:
-
-.. code-block:: php
-
-    $container['random_func'] = $container->protect(function () {
-        return rand();
-    });
-
-Modifying Services after Definition
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In some cases you may want to modify a service definition after it has been
-defined. You can use the ``extend()`` method to define additional code to be
-run on your service just after it is created:
-
-.. code-block:: php
-
-    $container['session_storage'] = function ($c) {
-        return new $c['session_storage_class']($c['cookie_name']);
-    };
-
-    $container->extend('session_storage', function ($storage, $c) {
-        $storage->...();
-
-        return $storage;
-    });
-
-The first argument is the name of the service to extend, the second a function
-that gets access to the object instance and the container.
-
-Extending a Container
-~~~~~~~~~~~~~~~~~~~~~
-
-If you use the same libraries over and over, you might want to reuse some
-services from one project to the next one; package your services into a
-**provider** by implementing ``Pimple\ServiceProviderInterface``:
-
-.. code-block:: php
-
-    use Pimple\Container;
-
-    class FooProvider implements Pimple\ServiceProviderInterface
-    {
-        public function register(Container $pimple)
-        {
-            // register some services and parameters
-            // on $pimple
-        }
-    }
-
-Then, register the provider on a Container:
-
-.. code-block:: php
-
-    $pimple->register(new FooProvider());
-
-Fetching the Service Creation Function
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When you access an object, Pimple automatically calls the anonymous function
-that you defined, which creates the service object for you. If you want to get
-raw access to this function, you can use the ``raw()`` method:
-
-.. code-block:: php
-
-    $container['session'] = function ($c) {
-        return new Session($c['session_storage']);
-    };
-
-    $sessionFunction = $container->raw('session');
-
-PSR-11 compatibility
---------------------
-
-For historical reasons, the ``Container`` class does not implement the PSR-11
-``ContainerInterface``. However, Pimple provides a helper class that will let
-you decouple your code from the Pimple container class.
-
-The PSR-11 container class
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The ``Pimple\Psr11\Container`` class lets you access the content of an
-underlying Pimple container using ``Psr\Container\ContainerInterface``
-methods:
-
-.. code-block:: php
-
-    use Pimple\Container;
-    use Pimple\Psr11\Container as PsrContainer;
-
-    $container = new Container();
-    $container['service'] = function ($c) {
-        return new Service();
-    };
-    $psr11 = new PsrContainer($container);
-
-    $controller = function (PsrContainer $container) {
-        $service = $container->get('service');
-    };
-    $controller($psr11);
-
-Using the PSR-11 ServiceLocator
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Sometimes, a service needs access to several other services without being sure
-that all of them will actually be used. In those cases, you may want the
-instantiation of the services to be lazy.
-
-The traditional solution is to inject the entire service container to get only
-the services really needed. However, this is not recommended because it gives
-services a too broad access to the rest of the application and it hides their
-actual dependencies.
-
-The ``ServiceLocator`` is intended to solve this problem by giving access to a
-set of predefined services while instantiating them only when actually needed.
-
-It also allows you to make your services available under a different name than
-the one used to register them. For instance, you may want to use an object
-that expects an instance of ``EventDispatcherInterface`` to be available under
-the name ``event_dispatcher`` while your event dispatcher has been
-registered under the name ``dispatcher``:
-
-.. code-block:: php
-
-    use Monolog\Logger;
-    use Pimple\Psr11\ServiceLocator;
-    use Psr\Container\ContainerInterface;
-    use Symfony\Component\EventDispatcher\EventDispatcher;
-
-    class MyService
-    {
-        /**
-         * "logger" must be an instance of Psr\Log\LoggerInterface
-         * "event_dispatcher" must be an instance of Symfony\Component\EventDispatcher\EventDispatcherInterface
-         */
-        private $services;
-
-        public function __construct(ContainerInterface $services)
-        {
-            $this->services = $services;
-        }
-    }
-
-    $container['logger'] = function ($c) {
-        return new Monolog\Logger();
-    };
-    $container['dispatcher'] = function () {
-        return new EventDispatcher();
-    };
-
-    $container['service'] = function ($c) {
-        $locator = new ServiceLocator($c, array('logger', 'event_dispatcher' => 'dispatcher'));
-
-        return new MyService($locator);
-    };
-
-Referencing a Collection of Services Lazily
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Passing a collection of services instances in an array may prove inefficient
-if the class that consumes the collection only needs to iterate over it at a
-later stage, when one of its method is called. It can also lead to problems
-if there is a circular dependency between one of the services stored in the
-collection and the class that consumes it.
-
-The ``ServiceIterator`` class helps you solve these issues. It receives a
-list of service names during instantiation and will retrieve the services
-when iterated over:
-
-.. code-block:: php
-
-    use Pimple\Container;
-    use Pimple\ServiceIterator;
-
-    class AuthorizationService
-    {
-        private $voters;
-
-        public function __construct($voters)
-        {
-            $this->voters = $voters;
-        }
-
-        public function canAccess($resource)
-        {
-            foreach ($this->voters as $voter) {
-                if (true === $voter->canAccess($resource) {
-                    return true;
-                }
-            }
-
-            return false;
-        }
-    }
-
-    $container = new Container();
-
-    $container['voter1'] = function ($c) {
-        return new SomeVoter();
-    }
-    $container['voter2'] = function ($c) {
-        return new SomeOtherVoter($c['auth']);
-    }
-    $container['auth'] = function ($c) {
-        return new AuthorizationService(new ServiceIterator($c, array('voter1', 'voter2'));
-    }
-
-.. _Pimple 1.x documentation: https://github.com/silexphp/Pimple/tree/1.1
diff --git a/vendor/pimple/pimple/composer.json b/vendor/pimple/pimple/composer.json
deleted file mode 100644
index ef8a83db3d26d45822524cdee39086e11df09000..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "name": "pimple/pimple",
-    "type": "library",
-    "description": "Pimple, a simple Dependency Injection Container",
-    "keywords": ["dependency injection", "container"],
-    "homepage": "https://pimple.symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        }
-    ],
-    "require": {
-        "php": "^7.2.5",
-        "psr/container": "^1.0"
-    },
-    "require-dev": {
-        "symfony/phpunit-bridge": "^3.4|^4.4|^5.0"
-    },
-    "autoload": {
-        "psr-0": { "Pimple": "src/" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "3.3.x-dev"
-        }
-    }
-}
diff --git a/vendor/pimple/pimple/phpunit.xml.dist b/vendor/pimple/pimple/phpunit.xml.dist
deleted file mode 100644
index 89902022a0eeb5d0bf9345423c69459d6a1b098c..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/phpunit.xml.dist
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <testsuites>
-        <testsuite name="Pimple Test Suite">
-            <directory>./src/Pimple/Tests</directory>
-        </testsuite>
-    </testsuites>
-
-    <listeners>
-        <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
-    </listeners>
-</phpunit>
diff --git a/vendor/pimple/pimple/src/Pimple/Container.php b/vendor/pimple/pimple/src/Pimple/Container.php
deleted file mode 100644
index 1234f0bdc0dbab9760677ef1b3f2f405da9edbf6..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Container.php
+++ /dev/null
@@ -1,298 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple;
-
-use Pimple\Exception\ExpectedInvokableException;
-use Pimple\Exception\FrozenServiceException;
-use Pimple\Exception\InvalidServiceIdentifierException;
-use Pimple\Exception\UnknownIdentifierException;
-
-/**
- * Container main class.
- *
- * @author Fabien Potencier
- */
-class Container implements \ArrayAccess
-{
-    private $values = [];
-    private $factories;
-    private $protected;
-    private $frozen = [];
-    private $raw = [];
-    private $keys = [];
-
-    /**
-     * Instantiates the container.
-     *
-     * Objects and parameters can be passed as argument to the constructor.
-     *
-     * @param array $values The parameters or objects
-     */
-    public function __construct(array $values = [])
-    {
-        $this->factories = new \SplObjectStorage();
-        $this->protected = new \SplObjectStorage();
-
-        foreach ($values as $key => $value) {
-            $this->offsetSet($key, $value);
-        }
-    }
-
-    /**
-     * Sets a parameter or an object.
-     *
-     * Objects must be defined as Closures.
-     *
-     * Allowing any PHP callable leads to difficult to debug problems
-     * as function names (strings) are callable (creating a function with
-     * the same name as an existing parameter would break your container).
-     *
-     * @param string $id    The unique identifier for the parameter or object
-     * @param mixed  $value The value of the parameter or a closure to define an object
-     *
-     * @throws FrozenServiceException Prevent override of a frozen service
-     */
-    public function offsetSet($id, $value)
-    {
-        if (isset($this->frozen[$id])) {
-            throw new FrozenServiceException($id);
-        }
-
-        $this->values[$id] = $value;
-        $this->keys[$id] = true;
-    }
-
-    /**
-     * Gets a parameter or an object.
-     *
-     * @param string $id The unique identifier for the parameter or object
-     *
-     * @return mixed The value of the parameter or an object
-     *
-     * @throws UnknownIdentifierException If the identifier is not defined
-     */
-    public function offsetGet($id)
-    {
-        if (!isset($this->keys[$id])) {
-            throw new UnknownIdentifierException($id);
-        }
-
-        if (
-            isset($this->raw[$id])
-            || !\is_object($this->values[$id])
-            || isset($this->protected[$this->values[$id]])
-            || !\method_exists($this->values[$id], '__invoke')
-        ) {
-            return $this->values[$id];
-        }
-
-        if (isset($this->factories[$this->values[$id]])) {
-            return $this->values[$id]($this);
-        }
-
-        $raw = $this->values[$id];
-        $val = $this->values[$id] = $raw($this);
-        $this->raw[$id] = $raw;
-
-        $this->frozen[$id] = true;
-
-        return $val;
-    }
-
-    /**
-     * Checks if a parameter or an object is set.
-     *
-     * @param string $id The unique identifier for the parameter or object
-     *
-     * @return bool
-     */
-    public function offsetExists($id)
-    {
-        return isset($this->keys[$id]);
-    }
-
-    /**
-     * Unsets a parameter or an object.
-     *
-     * @param string $id The unique identifier for the parameter or object
-     */
-    public function offsetUnset($id)
-    {
-        if (isset($this->keys[$id])) {
-            if (\is_object($this->values[$id])) {
-                unset($this->factories[$this->values[$id]], $this->protected[$this->values[$id]]);
-            }
-
-            unset($this->values[$id], $this->frozen[$id], $this->raw[$id], $this->keys[$id]);
-        }
-    }
-
-    /**
-     * Marks a callable as being a factory service.
-     *
-     * @param callable $callable A service definition to be used as a factory
-     *
-     * @return callable The passed callable
-     *
-     * @throws ExpectedInvokableException Service definition has to be a closure or an invokable object
-     */
-    public function factory($callable)
-    {
-        if (!\method_exists($callable, '__invoke')) {
-            throw new ExpectedInvokableException('Service definition is not a Closure or invokable object.');
-        }
-
-        $this->factories->attach($callable);
-
-        return $callable;
-    }
-
-    /**
-     * Protects a callable from being interpreted as a service.
-     *
-     * This is useful when you want to store a callable as a parameter.
-     *
-     * @param callable $callable A callable to protect from being evaluated
-     *
-     * @return callable The passed callable
-     *
-     * @throws ExpectedInvokableException Service definition has to be a closure or an invokable object
-     */
-    public function protect($callable)
-    {
-        if (!\method_exists($callable, '__invoke')) {
-            throw new ExpectedInvokableException('Callable is not a Closure or invokable object.');
-        }
-
-        $this->protected->attach($callable);
-
-        return $callable;
-    }
-
-    /**
-     * Gets a parameter or the closure defining an object.
-     *
-     * @param string $id The unique identifier for the parameter or object
-     *
-     * @return mixed The value of the parameter or the closure defining an object
-     *
-     * @throws UnknownIdentifierException If the identifier is not defined
-     */
-    public function raw($id)
-    {
-        if (!isset($this->keys[$id])) {
-            throw new UnknownIdentifierException($id);
-        }
-
-        if (isset($this->raw[$id])) {
-            return $this->raw[$id];
-        }
-
-        return $this->values[$id];
-    }
-
-    /**
-     * Extends an object definition.
-     *
-     * Useful when you want to extend an existing object definition,
-     * without necessarily loading that object.
-     *
-     * @param string   $id       The unique identifier for the object
-     * @param callable $callable A service definition to extend the original
-     *
-     * @return callable The wrapped callable
-     *
-     * @throws UnknownIdentifierException        If the identifier is not defined
-     * @throws FrozenServiceException            If the service is frozen
-     * @throws InvalidServiceIdentifierException If the identifier belongs to a parameter
-     * @throws ExpectedInvokableException        If the extension callable is not a closure or an invokable object
-     */
-    public function extend($id, $callable)
-    {
-        if (!isset($this->keys[$id])) {
-            throw new UnknownIdentifierException($id);
-        }
-
-        if (isset($this->frozen[$id])) {
-            throw new FrozenServiceException($id);
-        }
-
-        if (!\is_object($this->values[$id]) || !\method_exists($this->values[$id], '__invoke')) {
-            throw new InvalidServiceIdentifierException($id);
-        }
-
-        if (isset($this->protected[$this->values[$id]])) {
-            @\trigger_error(\sprintf('How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "%s" should be protected?', $id), E_USER_DEPRECATED);
-        }
-
-        if (!\is_object($callable) || !\method_exists($callable, '__invoke')) {
-            throw new ExpectedInvokableException('Extension service definition is not a Closure or invokable object.');
-        }
-
-        $factory = $this->values[$id];
-
-        $extended = function ($c) use ($callable, $factory) {
-            return $callable($factory($c), $c);
-        };
-
-        if (isset($this->factories[$factory])) {
-            $this->factories->detach($factory);
-            $this->factories->attach($extended);
-        }
-
-        return $this[$id] = $extended;
-    }
-
-    /**
-     * Returns all defined value names.
-     *
-     * @return array An array of value names
-     */
-    public function keys()
-    {
-        return \array_keys($this->values);
-    }
-
-    /**
-     * Registers a service provider.
-     *
-     * @param ServiceProviderInterface $provider A ServiceProviderInterface instance
-     * @param array                    $values   An array of values that customizes the provider
-     *
-     * @return static
-     */
-    public function register(ServiceProviderInterface $provider, array $values = [])
-    {
-        $provider->register($this);
-
-        foreach ($values as $key => $value) {
-            $this[$key] = $value;
-        }
-
-        return $this;
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php b/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php
deleted file mode 100644
index 7228421b15ad44a729bec2f277a5890fe6fea908..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Exception;
-
-use Psr\Container\ContainerExceptionInterface;
-
-/**
- * A closure or invokable object was expected.
- *
- * @author Pascal Luna <skalpa@zetareticuli.org>
- */
-class ExpectedInvokableException extends \InvalidArgumentException implements ContainerExceptionInterface
-{
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php b/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php
deleted file mode 100644
index e4d2f6d366aed87cd68de558b257b7e16e216124..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Exception;
-
-use Psr\Container\ContainerExceptionInterface;
-
-/**
- * An attempt to modify a frozen service was made.
- *
- * @author Pascal Luna <skalpa@zetareticuli.org>
- */
-class FrozenServiceException extends \RuntimeException implements ContainerExceptionInterface
-{
-    /**
-     * @param string $id Identifier of the frozen service
-     */
-    public function __construct($id)
-    {
-        parent::__construct(\sprintf('Cannot override frozen service "%s".', $id));
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php b/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php
deleted file mode 100644
index 91e82f98c3f87b67771e9f3460b1fd1087a6e9dd..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Exception;
-
-use Psr\Container\NotFoundExceptionInterface;
-
-/**
- * An attempt to perform an operation that requires a service identifier was made.
- *
- * @author Pascal Luna <skalpa@zetareticuli.org>
- */
-class InvalidServiceIdentifierException extends \InvalidArgumentException implements NotFoundExceptionInterface
-{
-    /**
-     * @param string $id The invalid identifier
-     */
-    public function __construct($id)
-    {
-        parent::__construct(\sprintf('Identifier "%s" does not contain an object definition.', $id));
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php b/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php
deleted file mode 100644
index fb6b626e25758e80566fd962062e1aeb80cad25f..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Exception;
-
-use Psr\Container\NotFoundExceptionInterface;
-
-/**
- * The identifier of a valid service or parameter was expected.
- *
- * @author Pascal Luna <skalpa@zetareticuli.org>
- */
-class UnknownIdentifierException extends \InvalidArgumentException implements NotFoundExceptionInterface
-{
-    /**
-     * @param string $id The unknown identifier
-     */
-    public function __construct($id)
-    {
-        parent::__construct(\sprintf('Identifier "%s" is not defined.', $id));
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Psr11/Container.php b/vendor/pimple/pimple/src/Pimple/Psr11/Container.php
deleted file mode 100644
index cadbfffad3e3ae34a9339e078d04a227a64cab82..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Psr11/Container.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009-2017 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Psr11;
-
-use Pimple\Container as PimpleContainer;
-use Psr\Container\ContainerInterface;
-
-/**
- * PSR-11 compliant wrapper.
- *
- * @author Pascal Luna <skalpa@zetareticuli.org>
- */
-final class Container implements ContainerInterface
-{
-    private $pimple;
-
-    public function __construct(PimpleContainer $pimple)
-    {
-        $this->pimple = $pimple;
-    }
-
-    public function get($id)
-    {
-        return $this->pimple[$id];
-    }
-
-    public function has($id)
-    {
-        return isset($this->pimple[$id]);
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php b/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
deleted file mode 100644
index f10727cca2673895b9dd9f536dd81312f95acaed..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Psr11;
-
-use Pimple\Container as PimpleContainer;
-use Pimple\Exception\UnknownIdentifierException;
-use Psr\Container\ContainerInterface;
-
-/**
- * Pimple PSR-11 service locator.
- *
- * @author Pascal Luna <skalpa@zetareticuli.org>
- */
-class ServiceLocator implements ContainerInterface
-{
-    private $container;
-    private $aliases = [];
-
-    /**
-     * @param PimpleContainer $container The Container instance used to locate services
-     * @param array           $ids       Array of service ids that can be located. String keys can be used to define aliases
-     */
-    public function __construct(PimpleContainer $container, array $ids)
-    {
-        $this->container = $container;
-
-        foreach ($ids as $key => $id) {
-            $this->aliases[\is_int($key) ? $id : $key] = $id;
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($id)
-    {
-        if (!isset($this->aliases[$id])) {
-            throw new UnknownIdentifierException($id);
-        }
-
-        return $this->container[$this->aliases[$id]];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($id)
-    {
-        return isset($this->aliases[$id]) && isset($this->container[$this->aliases[$id]]);
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/ServiceIterator.php b/vendor/pimple/pimple/src/Pimple/ServiceIterator.php
deleted file mode 100644
index 5cde5188faec6eb7f2dd3d7d87f4fdf1182fdc0d..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/ServiceIterator.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple;
-
-/**
- * Lazy service iterator.
- *
- * @author Pascal Luna <skalpa@zetareticuli.org>
- */
-final class ServiceIterator implements \Iterator
-{
-    private $container;
-    private $ids;
-
-    public function __construct(Container $container, array $ids)
-    {
-        $this->container = $container;
-        $this->ids = $ids;
-    }
-
-    public function rewind()
-    {
-        \reset($this->ids);
-    }
-
-    public function current()
-    {
-        return $this->container[\current($this->ids)];
-    }
-
-    public function key()
-    {
-        return \current($this->ids);
-    }
-
-    public function next()
-    {
-        \next($this->ids);
-    }
-
-    public function valid()
-    {
-        return null !== \key($this->ids);
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php b/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php
deleted file mode 100644
index c004594baf04dee2eeafd606787f15ce4b303ba5..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple;
-
-/**
- * Pimple service provider interface.
- *
- * @author  Fabien Potencier
- * @author  Dominik Zogg
- */
-interface ServiceProviderInterface
-{
-    /**
-     * Registers services on the given container.
-     *
-     * This method should only be used to configure services and parameters.
-     * It should not get services.
-     *
-     * @param Container $pimple A container instance
-     */
-    public function register(Container $pimple);
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php b/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php
deleted file mode 100644
index aba453bfc6e11764ee098ea2a3467c2ac017e2f6..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Tests\Fixtures;
-
-class Invokable
-{
-    public function __invoke($value = null)
-    {
-        $service = new Service();
-        $service->value = $value;
-
-        return $service;
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php b/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php
deleted file mode 100644
index 33cd4e548640c088a68babebe0f10ddc85540ee4..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Tests\Fixtures;
-
-class NonInvokable
-{
-    public function __call($a, $b)
-    {
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php b/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php
deleted file mode 100644
index 0c910af7cefe887ce00491d19c9f5d5c30f09e62..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Tests\Fixtures;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-
-class PimpleServiceProvider implements ServiceProviderInterface
-{
-    /**
-     * Registers services on the given container.
-     *
-     * This method should only be used to configure services and parameters.
-     * It should not get services.
-     *
-     * @param Container $pimple An Container instance
-     */
-    public function register(Container $pimple)
-    {
-        $pimple['param'] = 'value';
-
-        $pimple['service'] = function () {
-            return new Service();
-        };
-
-        $pimple['factory'] = $pimple->factory(function () {
-            return new Service();
-        });
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php b/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php
deleted file mode 100644
index d71b184ddf7f104a0c75d64d6330c5e0ef5b6dfc..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Tests\Fixtures;
-
-/**
- * @author  Igor Wiedler <igor@wiedler.ch>
- */
-class Service
-{
-    public $value;
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php b/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
deleted file mode 100644
index 097a7fd96f6ec896a4d771cd02582b821b2dca29..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Pimple\Container;
-
-/**
- * @author Dominik Zogg <dominik.zogg@gmail.com>
- */
-class PimpleServiceProviderInterfaceTest extends TestCase
-{
-    public function testProvider()
-    {
-        $pimple = new Container();
-
-        $pimpleServiceProvider = new Fixtures\PimpleServiceProvider();
-        $pimpleServiceProvider->register($pimple);
-
-        $this->assertEquals('value', $pimple['param']);
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
-
-        $serviceOne = $pimple['factory'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
-        $serviceTwo = $pimple['factory'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
-        $this->assertNotSame($serviceOne, $serviceTwo);
-    }
-
-    public function testProviderWithRegisterMethod()
-    {
-        $pimple = new Container();
-
-        $pimple->register(new Fixtures\PimpleServiceProvider(), [
-            'anotherParameter' => 'anotherValue',
-        ]);
-
-        $this->assertEquals('value', $pimple['param']);
-        $this->assertEquals('anotherValue', $pimple['anotherParameter']);
-
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
-
-        $serviceOne = $pimple['factory'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
-        $serviceTwo = $pimple['factory'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
-        $this->assertNotSame($serviceOne, $serviceTwo);
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php b/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
deleted file mode 100644
index ffa50a6a74dbc4c1f547a68c8994cadff786a5ec..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
+++ /dev/null
@@ -1,610 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Pimple\Container;
-
-/**
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class PimpleTest extends TestCase
-{
-    public function testWithString()
-    {
-        $pimple = new Container();
-        $pimple['param'] = 'value';
-
-        $this->assertEquals('value', $pimple['param']);
-    }
-
-    public function testWithClosure()
-    {
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
-    }
-
-    public function testServicesShouldBeDifferent()
-    {
-        $pimple = new Container();
-        $pimple['service'] = $pimple->factory(function () {
-            return new Fixtures\Service();
-        });
-
-        $serviceOne = $pimple['service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
-        $serviceTwo = $pimple['service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
-        $this->assertNotSame($serviceOne, $serviceTwo);
-    }
-
-    public function testShouldPassContainerAsParameter()
-    {
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-        $pimple['container'] = function ($container) {
-            return $container;
-        };
-
-        $this->assertNotSame($pimple, $pimple['service']);
-        $this->assertSame($pimple, $pimple['container']);
-    }
-
-    public function testIsset()
-    {
-        $pimple = new Container();
-        $pimple['param'] = 'value';
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-
-        $pimple['null'] = null;
-
-        $this->assertTrue(isset($pimple['param']));
-        $this->assertTrue(isset($pimple['service']));
-        $this->assertTrue(isset($pimple['null']));
-        $this->assertFalse(isset($pimple['non_existent']));
-    }
-
-    public function testConstructorInjection()
-    {
-        $params = ['param' => 'value'];
-        $pimple = new Container($params);
-
-        $this->assertSame($params['param'], $pimple['param']);
-    }
-
-    public function testOffsetGetValidatesKeyIsPresent()
-    {
-        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
-        $this->expectExceptionMessage('Identifier "foo" is not defined.');
-
-        $pimple = new Container();
-        echo $pimple['foo'];
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyOffsetGetValidatesKeyIsPresent()
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        $this->expectExceptionMessage('Identifier "foo" is not defined.');
-
-        $pimple = new Container();
-        echo $pimple['foo'];
-    }
-
-    public function testOffsetGetHonorsNullValues()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = null;
-        $this->assertNull($pimple['foo']);
-    }
-
-    public function testUnset()
-    {
-        $pimple = new Container();
-        $pimple['param'] = 'value';
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-
-        unset($pimple['param'], $pimple['service']);
-        $this->assertFalse(isset($pimple['param']));
-        $this->assertFalse(isset($pimple['service']));
-    }
-
-    /**
-     * @dataProvider serviceDefinitionProvider
-     */
-    public function testShare($service)
-    {
-        $pimple = new Container();
-        $pimple['shared_service'] = $service;
-
-        $serviceOne = $pimple['shared_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
-        $serviceTwo = $pimple['shared_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
-        $this->assertSame($serviceOne, $serviceTwo);
-    }
-
-    /**
-     * @dataProvider serviceDefinitionProvider
-     */
-    public function testProtect($service)
-    {
-        $pimple = new Container();
-        $pimple['protected'] = $pimple->protect($service);
-
-        $this->assertSame($service, $pimple['protected']);
-    }
-
-    public function testGlobalFunctionNameAsParameterValue()
-    {
-        $pimple = new Container();
-        $pimple['global_function'] = 'strlen';
-        $this->assertSame('strlen', $pimple['global_function']);
-    }
-
-    public function testRaw()
-    {
-        $pimple = new Container();
-        $pimple['service'] = $definition = $pimple->factory(function () {
-            return 'foo';
-        });
-        $this->assertSame($definition, $pimple->raw('service'));
-    }
-
-    public function testRawHonorsNullValues()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = null;
-        $this->assertNull($pimple->raw('foo'));
-    }
-
-    public function testFluentRegister()
-    {
-        $pimple = new Container();
-        $this->assertSame($pimple, $pimple->register($this->getMockBuilder('Pimple\ServiceProviderInterface')->getMock()));
-    }
-
-    public function testRawValidatesKeyIsPresent()
-    {
-        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
-        $this->expectExceptionMessage('Identifier "foo" is not defined.');
-
-        $pimple = new Container();
-        $pimple->raw('foo');
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyRawValidatesKeyIsPresent()
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        $this->expectExceptionMessage('Identifier "foo" is not defined.');
-
-        $pimple = new Container();
-        $pimple->raw('foo');
-    }
-
-    /**
-     * @dataProvider serviceDefinitionProvider
-     */
-    public function testExtend($service)
-    {
-        $pimple = new Container();
-        $pimple['shared_service'] = function () {
-            return new Fixtures\Service();
-        };
-        $pimple['factory_service'] = $pimple->factory(function () {
-            return new Fixtures\Service();
-        });
-
-        $pimple->extend('shared_service', $service);
-        $serviceOne = $pimple['shared_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-        $serviceTwo = $pimple['shared_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-        $this->assertSame($serviceOne, $serviceTwo);
-        $this->assertSame($serviceOne->value, $serviceTwo->value);
-
-        $pimple->extend('factory_service', $service);
-        $serviceOne = $pimple['factory_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-        $serviceTwo = $pimple['factory_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-        $this->assertNotSame($serviceOne, $serviceTwo);
-        $this->assertNotSame($serviceOne->value, $serviceTwo->value);
-    }
-
-    public function testExtendDoesNotLeakWithFactories()
-    {
-        if (\extension_loaded('pimple')) {
-            $this->markTestSkipped('Pimple extension does not support this test');
-        }
-        $pimple = new Container();
-
-        $pimple['foo'] = $pimple->factory(function () {
-            return;
-        });
-        $pimple['foo'] = $pimple->extend('foo', function ($foo, $pimple) {
-            return;
-        });
-        unset($pimple['foo']);
-
-        $p = new \ReflectionProperty($pimple, 'values');
-        $p->setAccessible(true);
-        $this->assertEmpty($p->getValue($pimple));
-
-        $p = new \ReflectionProperty($pimple, 'factories');
-        $p->setAccessible(true);
-        $this->assertCount(0, $p->getValue($pimple));
-    }
-
-    public function testExtendValidatesKeyIsPresent()
-    {
-        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
-        $this->expectExceptionMessage('Identifier "foo" is not defined.');
-
-        $pimple = new Container();
-        $pimple->extend('foo', function () {
-        });
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyExtendValidatesKeyIsPresent()
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        $this->expectExceptionMessage('Identifier "foo" is not defined.');
-
-        $pimple = new Container();
-        $pimple->extend('foo', function () {
-        });
-    }
-
-    public function testKeys()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = 123;
-        $pimple['bar'] = 123;
-
-        $this->assertEquals(['foo', 'bar'], $pimple->keys());
-    }
-
-    /** @test */
-    public function settingAnInvokableObjectShouldTreatItAsFactory()
-    {
-        $pimple = new Container();
-        $pimple['invokable'] = new Fixtures\Invokable();
-
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['invokable']);
-    }
-
-    /** @test */
-    public function settingNonInvokableObjectShouldTreatItAsParameter()
-    {
-        $pimple = new Container();
-        $pimple['non_invokable'] = new Fixtures\NonInvokable();
-
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\NonInvokable', $pimple['non_invokable']);
-    }
-
-    /**
-     * @dataProvider badServiceDefinitionProvider
-     */
-    public function testFactoryFailsForInvalidServiceDefinitions($service)
-    {
-        $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
-        $this->expectExceptionMessage('Service definition is not a Closure or invokable object.');
-
-        $pimple = new Container();
-        $pimple->factory($service);
-    }
-
-    /**
-     * @group legacy
-     * @dataProvider badServiceDefinitionProvider
-     */
-    public function testLegacyFactoryFailsForInvalidServiceDefinitions($service)
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        $this->expectExceptionMessage('Service definition is not a Closure or invokable object.');
-
-        $pimple = new Container();
-        $pimple->factory($service);
-    }
-
-    /**
-     * @dataProvider badServiceDefinitionProvider
-     */
-    public function testProtectFailsForInvalidServiceDefinitions($service)
-    {
-        $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
-        $this->expectExceptionMessage('Callable is not a Closure or invokable object.');
-
-        $pimple = new Container();
-        $pimple->protect($service);
-    }
-
-    /**
-     * @group legacy
-     * @dataProvider badServiceDefinitionProvider
-     */
-    public function testLegacyProtectFailsForInvalidServiceDefinitions($service)
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        $this->expectExceptionMessage('Callable is not a Closure or invokable object.');
-
-        $pimple = new Container();
-        $pimple->protect($service);
-    }
-
-    /**
-     * @dataProvider badServiceDefinitionProvider
-     */
-    public function testExtendFailsForKeysNotContainingServiceDefinitions($service)
-    {
-        $this->expectException(\Pimple\Exception\InvalidServiceIdentifierException::class);
-        $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.');
-
-        $pimple = new Container();
-        $pimple['foo'] = $service;
-        $pimple->extend('foo', function () {
-        });
-    }
-
-    /**
-     * @group legacy
-     * @dataProvider badServiceDefinitionProvider
-     */
-    public function testLegacyExtendFailsForKeysNotContainingServiceDefinitions($service)
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.');
-
-        $pimple = new Container();
-        $pimple['foo'] = $service;
-        $pimple->extend('foo', function () {
-        });
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "foo" should be protected?
-     */
-    public function testExtendingProtectedClosureDeprecation()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = $pimple->protect(function () {
-            return 'bar';
-        });
-
-        $pimple->extend('foo', function ($value) {
-            return $value.'-baz';
-        });
-
-        $this->assertSame('bar-baz', $pimple['foo']);
-    }
-
-    /**
-     * @dataProvider badServiceDefinitionProvider
-     */
-    public function testExtendFailsForInvalidServiceDefinitions($service)
-    {
-        $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
-        $this->expectExceptionMessage('Extension service definition is not a Closure or invokable object.');
-
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-        };
-        $pimple->extend('foo', $service);
-    }
-
-    /**
-     * @group legacy
-     * @dataProvider badServiceDefinitionProvider
-     */
-    public function testLegacyExtendFailsForInvalidServiceDefinitions($service)
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        $this->expectExceptionMessage('Extension service definition is not a Closure or invokable object.');
-
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-        };
-        $pimple->extend('foo', $service);
-    }
-
-    public function testExtendFailsIfFrozenServiceIsNonInvokable()
-    {
-        $this->expectException(\Pimple\Exception\FrozenServiceException::class);
-        $this->expectExceptionMessage('Cannot override frozen service "foo".');
-
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return new Fixtures\NonInvokable();
-        };
-        $foo = $pimple['foo'];
-
-        $pimple->extend('foo', function () {
-        });
-    }
-
-    public function testExtendFailsIfFrozenServiceIsInvokable()
-    {
-        $this->expectException(\Pimple\Exception\FrozenServiceException::class);
-        $this->expectExceptionMessage('Cannot override frozen service "foo".');
-
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return new Fixtures\Invokable();
-        };
-        $foo = $pimple['foo'];
-
-        $pimple->extend('foo', function () {
-        });
-    }
-
-    /**
-     * Provider for invalid service definitions.
-     */
-    public function badServiceDefinitionProvider()
-    {
-        return [
-          [123],
-          [new Fixtures\NonInvokable()],
-        ];
-    }
-
-    /**
-     * Provider for service definitions.
-     */
-    public function serviceDefinitionProvider()
-    {
-        return [
-            [function ($value) {
-                $service = new Fixtures\Service();
-                $service->value = $value;
-
-                return $service;
-            }],
-            [new Fixtures\Invokable()],
-        ];
-    }
-
-    public function testDefiningNewServiceAfterFreeze()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return 'foo';
-        };
-        $foo = $pimple['foo'];
-
-        $pimple['bar'] = function () {
-            return 'bar';
-        };
-        $this->assertSame('bar', $pimple['bar']);
-    }
-
-    public function testOverridingServiceAfterFreeze()
-    {
-        $this->expectException(\Pimple\Exception\FrozenServiceException::class);
-        $this->expectExceptionMessage('Cannot override frozen service "foo".');
-
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return 'foo';
-        };
-        $foo = $pimple['foo'];
-
-        $pimple['foo'] = function () {
-            return 'bar';
-        };
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyOverridingServiceAfterFreeze()
-    {
-        $this->expectException(\RuntimeException::class);
-        $this->expectExceptionMessage('Cannot override frozen service "foo".');
-
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return 'foo';
-        };
-        $foo = $pimple['foo'];
-
-        $pimple['foo'] = function () {
-            return 'bar';
-        };
-    }
-
-    public function testRemovingServiceAfterFreeze()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return 'foo';
-        };
-        $foo = $pimple['foo'];
-
-        unset($pimple['foo']);
-        $pimple['foo'] = function () {
-            return 'bar';
-        };
-        $this->assertSame('bar', $pimple['foo']);
-    }
-
-    public function testExtendingService()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return 'foo';
-        };
-        $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) {
-            return "$foo.bar";
-        });
-        $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) {
-            return "$foo.baz";
-        });
-        $this->assertSame('foo.bar.baz', $pimple['foo']);
-    }
-
-    public function testExtendingServiceAfterOtherServiceFreeze()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return 'foo';
-        };
-        $pimple['bar'] = function () {
-            return 'bar';
-        };
-        $foo = $pimple['foo'];
-
-        $pimple['bar'] = $pimple->extend('bar', function ($bar, $app) {
-            return "$bar.baz";
-        });
-        $this->assertSame('bar.baz', $pimple['bar']);
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php b/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
deleted file mode 100644
index d47b9c3f009e0a84627056595ced557a9efbdf99..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009-2017 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Tests\Psr11;
-
-use PHPUnit\Framework\TestCase;
-use Pimple\Container;
-use Pimple\Psr11\Container as PsrContainer;
-use Pimple\Tests\Fixtures\Service;
-
-class ContainerTest extends TestCase
-{
-    public function testGetReturnsExistingService()
-    {
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Service();
-        };
-        $psr = new PsrContainer($pimple);
-
-        $this->assertSame($pimple['service'], $psr->get('service'));
-    }
-
-    public function testGetThrowsExceptionIfServiceIsNotFound()
-    {
-        $this->expectException(\Psr\Container\NotFoundExceptionInterface::class);
-        $this->expectExceptionMessage('Identifier "service" is not defined.');
-
-        $pimple = new Container();
-        $psr = new PsrContainer($pimple);
-
-        $psr->get('service');
-    }
-
-    public function testHasReturnsTrueIfServiceExists()
-    {
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Service();
-        };
-        $psr = new PsrContainer($pimple);
-
-        $this->assertTrue($psr->has('service'));
-    }
-
-    public function testHasReturnsFalseIfServiceDoesNotExist()
-    {
-        $pimple = new Container();
-        $psr = new PsrContainer($pimple);
-
-        $this->assertFalse($psr->has('service'));
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php b/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
deleted file mode 100644
index bd2d335be67374063cb6b270936c556832cf2a92..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Tests\Psr11;
-
-use PHPUnit\Framework\TestCase;
-use Pimple\Container;
-use Pimple\Psr11\ServiceLocator;
-use Pimple\Tests\Fixtures;
-
-/**
- * ServiceLocator test case.
- *
- * @author Pascal Luna <skalpa@zetareticuli.org>
- */
-class ServiceLocatorTest extends TestCase
-{
-    public function testCanAccessServices()
-    {
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-        $locator = new ServiceLocator($pimple, ['service']);
-
-        $this->assertSame($pimple['service'], $locator->get('service'));
-    }
-
-    public function testCanAccessAliasedServices()
-    {
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-        $locator = new ServiceLocator($pimple, ['alias' => 'service']);
-
-        $this->assertSame($pimple['service'], $locator->get('alias'));
-    }
-
-    public function testCannotAccessAliasedServiceUsingRealIdentifier()
-    {
-        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
-        $this->expectExceptionMessage('Identifier "service" is not defined.');
-
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-        $locator = new ServiceLocator($pimple, ['alias' => 'service']);
-
-        $service = $locator->get('service');
-    }
-
-    public function testGetValidatesServiceCanBeLocated()
-    {
-        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
-        $this->expectExceptionMessage('Identifier "foo" is not defined.');
-
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-        $locator = new ServiceLocator($pimple, ['alias' => 'service']);
-
-        $service = $locator->get('foo');
-    }
-
-    public function testGetValidatesTargetServiceExists()
-    {
-        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
-        $this->expectExceptionMessage('Identifier "invalid" is not defined.');
-
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-        $locator = new ServiceLocator($pimple, ['alias' => 'invalid']);
-
-        $service = $locator->get('alias');
-    }
-
-    public function testHasValidatesServiceCanBeLocated()
-    {
-        $pimple = new Container();
-        $pimple['service1'] = function () {
-            return new Fixtures\Service();
-        };
-        $pimple['service2'] = function () {
-            return new Fixtures\Service();
-        };
-        $locator = new ServiceLocator($pimple, ['service1']);
-
-        $this->assertTrue($locator->has('service1'));
-        $this->assertFalse($locator->has('service2'));
-    }
-
-    public function testHasChecksIfTargetServiceExists()
-    {
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-        $locator = new ServiceLocator($pimple, ['foo' => 'service', 'bar' => 'invalid']);
-
-        $this->assertTrue($locator->has('foo'));
-        $this->assertFalse($locator->has('bar'));
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php b/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
deleted file mode 100644
index 2bb935f312ab09545cc2faba242e7634531b8e71..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 Fabien Potencier
- *
- * 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.
- */
-
-namespace Pimple\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Pimple\Container;
-use Pimple\ServiceIterator;
-use Pimple\Tests\Fixtures\Service;
-
-class ServiceIteratorTest extends TestCase
-{
-    public function testIsIterable()
-    {
-        $pimple = new Container();
-        $pimple['service1'] = function () {
-            return new Service();
-        };
-        $pimple['service2'] = function () {
-            return new Service();
-        };
-        $pimple['service3'] = function () {
-            return new Service();
-        };
-        $iterator = new ServiceIterator($pimple, ['service1', 'service2']);
-
-        $this->assertSame(['service1' => $pimple['service1'], 'service2' => $pimple['service2']], iterator_to_array($iterator));
-    }
-}
diff --git a/vendor/psr/container/.gitignore b/vendor/psr/container/.gitignore
deleted file mode 100644
index b2395aa05541e1e90c84bdc3ce67115c8b84c385..0000000000000000000000000000000000000000
--- a/vendor/psr/container/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-composer.lock
-composer.phar
-/vendor/
diff --git a/vendor/psr/container/LICENSE b/vendor/psr/container/LICENSE
deleted file mode 100644
index 2877a4894ee539cf6ead668a1ea696823d506687..0000000000000000000000000000000000000000
--- a/vendor/psr/container/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013-2016 container-interop
-Copyright (c) 2016 PHP Framework Interoperability Group
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/psr/container/README.md b/vendor/psr/container/README.md
deleted file mode 100644
index 084f6df51b21868be82bfc59ef361a6d803d7d3d..0000000000000000000000000000000000000000
--- a/vendor/psr/container/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# PSR Container
-
-This repository holds all interfaces/classes/traits related to [PSR-11](https://github.com/container-interop/fig-standards/blob/master/proposed/container.md).
-
-Note that this is not a container implementation of its own. See the specification for more details.
diff --git a/vendor/psr/container/composer.json b/vendor/psr/container/composer.json
deleted file mode 100644
index b8ee01265dee64bc8b911a6eece972353b7db2f3..0000000000000000000000000000000000000000
--- a/vendor/psr/container/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-    "name": "psr/container",
-    "type": "library",
-    "description": "Common Container Interface (PHP FIG PSR-11)",
-    "keywords": ["psr", "psr-11", "container", "container-interop", "container-interface"],
-    "homepage": "https://github.com/php-fig/container",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "PHP-FIG",
-            "homepage": "http://www.php-fig.org/"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.0"
-    },
-    "autoload": {
-        "psr-4": {
-            "Psr\\Container\\": "src/"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0.x-dev"
-        }
-    }
-}
diff --git a/vendor/psr/container/src/ContainerExceptionInterface.php b/vendor/psr/container/src/ContainerExceptionInterface.php
deleted file mode 100644
index d35c6b4d864d9870f1517f47c2917b9e7e2b9a35..0000000000000000000000000000000000000000
--- a/vendor/psr/container/src/ContainerExceptionInterface.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-/**
- * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
- */
-
-namespace Psr\Container;
-
-/**
- * Base interface representing a generic exception in a container.
- */
-interface ContainerExceptionInterface
-{
-}
diff --git a/vendor/psr/container/src/ContainerInterface.php b/vendor/psr/container/src/ContainerInterface.php
deleted file mode 100644
index c3a7206fa00b0db45bbaa2cf47fa9698d578d363..0000000000000000000000000000000000000000
--- a/vendor/psr/container/src/ContainerInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/**
- * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
- */
-
-namespace Psr\Container;
-
-/**
- * Describes the interface of a container that exposes methods to read its entries.
- */
-interface ContainerInterface
-{
-    /**
-     * Finds an entry of the container by its identifier and returns it.
-     *
-     * @param string $id Identifier of the entry to look for.
-     *
-     * @throws NotFoundExceptionInterface  No entry was found for **this** identifier.
-     * @throws ContainerExceptionInterface Error while retrieving the entry.
-     *
-     * @return mixed Entry.
-     */
-    public function get($id);
-
-    /**
-     * Returns true if the container can return an entry for the given identifier.
-     * Returns false otherwise.
-     *
-     * `has($id)` returning true does not mean that `get($id)` will not throw an exception.
-     * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
-     *
-     * @param string $id Identifier of the entry to look for.
-     *
-     * @return bool
-     */
-    public function has($id);
-}
diff --git a/vendor/psr/container/src/NotFoundExceptionInterface.php b/vendor/psr/container/src/NotFoundExceptionInterface.php
deleted file mode 100644
index 6566704eda1d0f551641d38d7c944bffd7d530d9..0000000000000000000000000000000000000000
--- a/vendor/psr/container/src/NotFoundExceptionInterface.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-/**
- * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
- */
-
-namespace Psr\Container;
-
-/**
- * No entry was found in the container.
- */
-interface NotFoundExceptionInterface extends ContainerExceptionInterface
-{
-}
diff --git a/vendor/psr/http-message/CHANGELOG.md b/vendor/psr/http-message/CHANGELOG.md
deleted file mode 100644
index 74b1ef923c1616bd2c544953ac776c6ca3c59286..0000000000000000000000000000000000000000
--- a/vendor/psr/http-message/CHANGELOG.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file, in reverse chronological order by release.
-
-## 1.0.1 - 2016-08-06
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Updated all `@return self` annotation references in interfaces to use
-  `@return static`, which more closelly follows the semantics of the
-  specification.
-- Updated the `MessageInterface::getHeaders()` return annotation to use the
-  value `string[][]`, indicating the format is a nested array of strings.
-- Updated the `@link` annotation for `RequestInterface::withRequestTarget()`
-  to point to the correct section of RFC 7230.
-- Updated the `ServerRequestInterface::withUploadedFiles()` parameter annotation
-  to add the parameter name (`$uploadedFiles`).
-- Updated a `@throws` annotation for the `UploadedFileInterface::moveTo()`
-  method to correctly reference the method parameter (it was referencing an
-  incorrect parameter name previously).
-
-## 1.0.0 - 2016-05-18
-
-Initial stable release; reflects accepted PSR-7 specification.
diff --git a/vendor/psr/http-message/LICENSE b/vendor/psr/http-message/LICENSE
deleted file mode 100644
index c2d8e452de1bc5fc64680e356e7508e12527a02a..0000000000000000000000000000000000000000
--- a/vendor/psr/http-message/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 PHP Framework Interoperability Group
-
-Permission is hereby granted, free of charge, to any person obtaining a copy 
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights 
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
-copies of the Software, and to permit persons to whom the Software is 
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in 
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/psr/http-message/README.md b/vendor/psr/http-message/README.md
deleted file mode 100644
index 28185338f72381295cdd8b5762b00c707ca05da7..0000000000000000000000000000000000000000
--- a/vendor/psr/http-message/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-PSR Http Message
-================
-
-This repository holds all interfaces/classes/traits related to
-[PSR-7](http://www.php-fig.org/psr/psr-7/).
-
-Note that this is not a HTTP message implementation of its own. It is merely an
-interface that describes a HTTP message. See the specification for more details.
-
-Usage
------
-
-We'll certainly need some stuff in here.
\ No newline at end of file
diff --git a/vendor/psr/http-message/composer.json b/vendor/psr/http-message/composer.json
deleted file mode 100644
index b0d2937a03a5fbe5219a3ff7a2470fb92b851942..0000000000000000000000000000000000000000
--- a/vendor/psr/http-message/composer.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "name": "psr/http-message",
-    "description": "Common interface for HTTP messages",
-    "keywords": ["psr", "psr-7", "http", "http-message", "request", "response"],
-    "homepage": "https://github.com/php-fig/http-message",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "PHP-FIG",
-            "homepage": "http://www.php-fig.org/"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.0"
-    },
-    "autoload": {
-        "psr-4": {
-            "Psr\\Http\\Message\\": "src/"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0.x-dev"
-        }
-    }
-}
diff --git a/vendor/psr/http-message/src/MessageInterface.php b/vendor/psr/http-message/src/MessageInterface.php
deleted file mode 100644
index dd46e5ec81eef701ccb6e61c08debe86570dcb8e..0000000000000000000000000000000000000000
--- a/vendor/psr/http-message/src/MessageInterface.php
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * HTTP messages consist of requests from a client to a server and responses
- * from a server to a client. This interface defines the methods common to
- * each.
- *
- * Messages are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- *
- * @link http://www.ietf.org/rfc/rfc7230.txt
- * @link http://www.ietf.org/rfc/rfc7231.txt
- */
-interface MessageInterface
-{
-    /**
-     * Retrieves the HTTP protocol version as a string.
-     *
-     * The string MUST contain only the HTTP version number (e.g., "1.1", "1.0").
-     *
-     * @return string HTTP protocol version.
-     */
-    public function getProtocolVersion();
-
-    /**
-     * Return an instance with the specified HTTP protocol version.
-     *
-     * The version string MUST contain only the HTTP version number (e.g.,
-     * "1.1", "1.0").
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new protocol version.
-     *
-     * @param string $version HTTP protocol version
-     * @return static
-     */
-    public function withProtocolVersion($version);
-
-    /**
-     * Retrieves all message header values.
-     *
-     * The keys represent the header name as it will be sent over the wire, and
-     * each value is an array of strings associated with the header.
-     *
-     *     // Represent the headers as a string
-     *     foreach ($message->getHeaders() as $name => $values) {
-     *         echo $name . ": " . implode(", ", $values);
-     *     }
-     *
-     *     // Emit headers iteratively:
-     *     foreach ($message->getHeaders() as $name => $values) {
-     *         foreach ($values as $value) {
-     *             header(sprintf('%s: %s', $name, $value), false);
-     *         }
-     *     }
-     *
-     * While header names are not case-sensitive, getHeaders() will preserve the
-     * exact case in which headers were originally specified.
-     *
-     * @return string[][] Returns an associative array of the message's headers. Each
-     *     key MUST be a header name, and each value MUST be an array of strings
-     *     for that header.
-     */
-    public function getHeaders();
-
-    /**
-     * Checks if a header exists by the given case-insensitive name.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return bool Returns true if any header names match the given header
-     *     name using a case-insensitive string comparison. Returns false if
-     *     no matching header name is found in the message.
-     */
-    public function hasHeader($name);
-
-    /**
-     * Retrieves a message header value by the given case-insensitive name.
-     *
-     * This method returns an array of all the header values of the given
-     * case-insensitive header name.
-     *
-     * If the header does not appear in the message, this method MUST return an
-     * empty array.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return string[] An array of string values as provided for the given
-     *    header. If the header does not appear in the message, this method MUST
-     *    return an empty array.
-     */
-    public function getHeader($name);
-
-    /**
-     * Retrieves a comma-separated string of the values for a single header.
-     *
-     * This method returns all of the header values of the given
-     * case-insensitive header name as a string concatenated together using
-     * a comma.
-     *
-     * NOTE: Not all header values may be appropriately represented using
-     * comma concatenation. For such headers, use getHeader() instead
-     * and supply your own delimiter when concatenating.
-     *
-     * If the header does not appear in the message, this method MUST return
-     * an empty string.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return string A string of values as provided for the given header
-     *    concatenated together using a comma. If the header does not appear in
-     *    the message, this method MUST return an empty string.
-     */
-    public function getHeaderLine($name);
-
-    /**
-     * Return an instance with the provided value replacing the specified header.
-     *
-     * While header names are case-insensitive, the casing of the header will
-     * be preserved by this function, and returned from getHeaders().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new and/or updated header and value.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @param string|string[] $value Header value(s).
-     * @return static
-     * @throws \InvalidArgumentException for invalid header names or values.
-     */
-    public function withHeader($name, $value);
-
-    /**
-     * Return an instance with the specified header appended with the given value.
-     *
-     * Existing values for the specified header will be maintained. The new
-     * value(s) will be appended to the existing list. If the header did not
-     * exist previously, it will be added.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new header and/or value.
-     *
-     * @param string $name Case-insensitive header field name to add.
-     * @param string|string[] $value Header value(s).
-     * @return static
-     * @throws \InvalidArgumentException for invalid header names or values.
-     */
-    public function withAddedHeader($name, $value);
-
-    /**
-     * Return an instance without the specified header.
-     *
-     * Header resolution MUST be done without case-sensitivity.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that removes
-     * the named header.
-     *
-     * @param string $name Case-insensitive header field name to remove.
-     * @return static
-     */
-    public function withoutHeader($name);
-
-    /**
-     * Gets the body of the message.
-     *
-     * @return StreamInterface Returns the body as a stream.
-     */
-    public function getBody();
-
-    /**
-     * Return an instance with the specified message body.
-     *
-     * The body MUST be a StreamInterface object.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return a new instance that has the
-     * new body stream.
-     *
-     * @param StreamInterface $body Body.
-     * @return static
-     * @throws \InvalidArgumentException When the body is not valid.
-     */
-    public function withBody(StreamInterface $body);
-}
diff --git a/vendor/psr/http-message/src/RequestInterface.php b/vendor/psr/http-message/src/RequestInterface.php
deleted file mode 100644
index a96d4fd6366790ec833502cefd2e1ec91a5c440f..0000000000000000000000000000000000000000
--- a/vendor/psr/http-message/src/RequestInterface.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an outgoing, client-side request.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - HTTP method
- * - URI
- * - Headers
- * - Message body
- *
- * During construction, implementations MUST attempt to set the Host header from
- * a provided URI if no Host header is provided.
- *
- * Requests are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface RequestInterface extends MessageInterface
-{
-    /**
-     * Retrieves the message's request target.
-     *
-     * Retrieves the message's request-target either as it will appear (for
-     * clients), as it appeared at request (for servers), or as it was
-     * specified for the instance (see withRequestTarget()).
-     *
-     * In most cases, this will be the origin-form of the composed URI,
-     * unless a value was provided to the concrete implementation (see
-     * withRequestTarget() below).
-     *
-     * If no URI is available, and no request-target has been specifically
-     * provided, this method MUST return the string "/".
-     *
-     * @return string
-     */
-    public function getRequestTarget();
-
-    /**
-     * Return an instance with the specific request-target.
-     *
-     * If the request needs a non-origin-form request-target — e.g., for
-     * specifying an absolute-form, authority-form, or asterisk-form —
-     * this method may be used to create an instance with the specified
-     * request-target, verbatim.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * changed request target.
-     *
-     * @link http://tools.ietf.org/html/rfc7230#section-5.3 (for the various
-     *     request-target forms allowed in request messages)
-     * @param mixed $requestTarget
-     * @return static
-     */
-    public function withRequestTarget($requestTarget);
-
-    /**
-     * Retrieves the HTTP method of the request.
-     *
-     * @return string Returns the request method.
-     */
-    public function getMethod();
-
-    /**
-     * Return an instance with the provided HTTP method.
-     *
-     * While HTTP method names are typically all uppercase characters, HTTP
-     * method names are case-sensitive and thus implementations SHOULD NOT
-     * modify the given string.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * changed request method.
-     *
-     * @param string $method Case-sensitive method.
-     * @return static
-     * @throws \InvalidArgumentException for invalid HTTP methods.
-     */
-    public function withMethod($method);
-
-    /**
-     * Retrieves the URI instance.
-     *
-     * This method MUST return a UriInterface instance.
-     *
-     * @link http://tools.ietf.org/html/rfc3986#section-4.3
-     * @return UriInterface Returns a UriInterface instance
-     *     representing the URI of the request.
-     */
-    public function getUri();
-
-    /**
-     * Returns an instance with the provided URI.
-     *
-     * This method MUST update the Host header of the returned request by
-     * default if the URI contains a host component. If the URI does not
-     * contain a host component, any pre-existing Host header MUST be carried
-     * over to the returned request.
-     *
-     * You can opt-in to preserving the original state of the Host header by
-     * setting `$preserveHost` to `true`. When `$preserveHost` is set to
-     * `true`, this method interacts with the Host header in the following ways:
-     *
-     * - If the Host header is missing or empty, and the new URI contains
-     *   a host component, this method MUST update the Host header in the returned
-     *   request.
-     * - If the Host header is missing or empty, and the new URI does not contain a
-     *   host component, this method MUST NOT update the Host header in the returned
-     *   request.
-     * - If a Host header is present and non-empty, this method MUST NOT update
-     *   the Host header in the returned request.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new UriInterface instance.
-     *
-     * @link http://tools.ietf.org/html/rfc3986#section-4.3
-     * @param UriInterface $uri New request URI to use.
-     * @param bool $preserveHost Preserve the original state of the Host header.
-     * @return static
-     */
-    public function withUri(UriInterface $uri, $preserveHost = false);
-}
diff --git a/vendor/psr/http-message/src/ResponseInterface.php b/vendor/psr/http-message/src/ResponseInterface.php
deleted file mode 100644
index c306514e6bbdf07282bda9e3dc61d91f6554e642..0000000000000000000000000000000000000000
--- a/vendor/psr/http-message/src/ResponseInterface.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an outgoing, server-side response.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - Status code and reason phrase
- * - Headers
- * - Message body
- *
- * Responses are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface ResponseInterface extends MessageInterface
-{
-    /**
-     * Gets the response status code.
-     *
-     * The status code is a 3-digit integer result code of the server's attempt
-     * to understand and satisfy the request.
-     *
-     * @return int Status code.
-     */
-    public function getStatusCode();
-
-    /**
-     * Return an instance with the specified status code and, optionally, reason phrase.
-     *
-     * If no reason phrase is specified, implementations MAY choose to default
-     * to the RFC 7231 or IANA recommended reason phrase for the response's
-     * status code.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated status and reason phrase.
-     *
-     * @link http://tools.ietf.org/html/rfc7231#section-6
-     * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
-     * @param int $code The 3-digit integer result code to set.
-     * @param string $reasonPhrase The reason phrase to use with the
-     *     provided status code; if none is provided, implementations MAY
-     *     use the defaults as suggested in the HTTP specification.
-     * @return static
-     * @throws \InvalidArgumentException For invalid status code arguments.
-     */
-    public function withStatus($code, $reasonPhrase = '');
-
-    /**
-     * Gets the response reason phrase associated with the status code.
-     *
-     * Because a reason phrase is not a required element in a response
-     * status line, the reason phrase value MAY be null. Implementations MAY
-     * choose to return the default RFC 7231 recommended reason phrase (or those
-     * listed in the IANA HTTP Status Code Registry) for the response's
-     * status code.
-     *
-     * @link http://tools.ietf.org/html/rfc7231#section-6
-     * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
-     * @return string Reason phrase; must return an empty string if none present.
-     */
-    public function getReasonPhrase();
-}
diff --git a/vendor/psr/http-message/src/ServerRequestInterface.php b/vendor/psr/http-message/src/ServerRequestInterface.php
deleted file mode 100644
index 02512340ad853714bca1e25b619fa9097154f103..0000000000000000000000000000000000000000
--- a/vendor/psr/http-message/src/ServerRequestInterface.php
+++ /dev/null
@@ -1,261 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an incoming, server-side HTTP request.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - HTTP method
- * - URI
- * - Headers
- * - Message body
- *
- * Additionally, it encapsulates all data as it has arrived to the
- * application from the CGI and/or PHP environment, including:
- *
- * - The values represented in $_SERVER.
- * - Any cookies provided (generally via $_COOKIE)
- * - Query string arguments (generally via $_GET, or as parsed via parse_str())
- * - Upload files, if any (as represented by $_FILES)
- * - Deserialized body parameters (generally from $_POST)
- *
- * $_SERVER values MUST be treated as immutable, as they represent application
- * state at the time of request; as such, no methods are provided to allow
- * modification of those values. The other values provide such methods, as they
- * can be restored from $_SERVER or the request body, and may need treatment
- * during the application (e.g., body parameters may be deserialized based on
- * content type).
- *
- * Additionally, this interface recognizes the utility of introspecting a
- * request to derive and match additional parameters (e.g., via URI path
- * matching, decrypting cookie values, deserializing non-form-encoded body
- * content, matching authorization headers to users, etc). These parameters
- * are stored in an "attributes" property.
- *
- * Requests are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface ServerRequestInterface extends RequestInterface
-{
-    /**
-     * Retrieve server parameters.
-     *
-     * Retrieves data related to the incoming request environment,
-     * typically derived from PHP's $_SERVER superglobal. The data IS NOT
-     * REQUIRED to originate from $_SERVER.
-     *
-     * @return array
-     */
-    public function getServerParams();
-
-    /**
-     * Retrieve cookies.
-     *
-     * Retrieves cookies sent by the client to the server.
-     *
-     * The data MUST be compatible with the structure of the $_COOKIE
-     * superglobal.
-     *
-     * @return array
-     */
-    public function getCookieParams();
-
-    /**
-     * Return an instance with the specified cookies.
-     *
-     * The data IS NOT REQUIRED to come from the $_COOKIE superglobal, but MUST
-     * be compatible with the structure of $_COOKIE. Typically, this data will
-     * be injected at instantiation.
-     *
-     * This method MUST NOT update the related Cookie header of the request
-     * instance, nor related values in the server params.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated cookie values.
-     *
-     * @param array $cookies Array of key/value pairs representing cookies.
-     * @return static
-     */
-    public function withCookieParams(array $cookies);
-
-    /**
-     * Retrieve query string arguments.
-     *
-     * Retrieves the deserialized query string arguments, if any.
-     *
-     * Note: the query params might not be in sync with the URI or server
-     * params. If you need to ensure you are only getting the original
-     * values, you may need to parse the query string from `getUri()->getQuery()`
-     * or from the `QUERY_STRING` server param.
-     *
-     * @return array
-     */
-    public function getQueryParams();
-
-    /**
-     * Return an instance with the specified query string arguments.
-     *
-     * These values SHOULD remain immutable over the course of the incoming
-     * request. They MAY be injected during instantiation, such as from PHP's
-     * $_GET superglobal, or MAY be derived from some other value such as the
-     * URI. In cases where the arguments are parsed from the URI, the data
-     * MUST be compatible with what PHP's parse_str() would return for
-     * purposes of how duplicate query parameters are handled, and how nested
-     * sets are handled.
-     *
-     * Setting query string arguments MUST NOT change the URI stored by the
-     * request, nor the values in the server params.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated query string arguments.
-     *
-     * @param array $query Array of query string arguments, typically from
-     *     $_GET.
-     * @return static
-     */
-    public function withQueryParams(array $query);
-
-    /**
-     * Retrieve normalized file upload data.
-     *
-     * This method returns upload metadata in a normalized tree, with each leaf
-     * an instance of Psr\Http\Message\UploadedFileInterface.
-     *
-     * These values MAY be prepared from $_FILES or the message body during
-     * instantiation, or MAY be injected via withUploadedFiles().
-     *
-     * @return array An array tree of UploadedFileInterface instances; an empty
-     *     array MUST be returned if no data is present.
-     */
-    public function getUploadedFiles();
-
-    /**
-     * Create a new instance with the specified uploaded files.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated body parameters.
-     *
-     * @param array $uploadedFiles An array tree of UploadedFileInterface instances.
-     * @return static
-     * @throws \InvalidArgumentException if an invalid structure is provided.
-     */
-    public function withUploadedFiles(array $uploadedFiles);
-
-    /**
-     * Retrieve any parameters provided in the request body.
-     *
-     * If the request Content-Type is either application/x-www-form-urlencoded
-     * or multipart/form-data, and the request method is POST, this method MUST
-     * return the contents of $_POST.
-     *
-     * Otherwise, this method may return any results of deserializing
-     * the request body content; as parsing returns structured content, the
-     * potential types MUST be arrays or objects only. A null value indicates
-     * the absence of body content.
-     *
-     * @return null|array|object The deserialized body parameters, if any.
-     *     These will typically be an array or object.
-     */
-    public function getParsedBody();
-
-    /**
-     * Return an instance with the specified body parameters.
-     *
-     * These MAY be injected during instantiation.
-     *
-     * If the request Content-Type is either application/x-www-form-urlencoded
-     * or multipart/form-data, and the request method is POST, use this method
-     * ONLY to inject the contents of $_POST.
-     *
-     * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of
-     * deserializing the request body content. Deserialization/parsing returns
-     * structured data, and, as such, this method ONLY accepts arrays or objects,
-     * or a null value if nothing was available to parse.
-     *
-     * As an example, if content negotiation determines that the request data
-     * is a JSON payload, this method could be used to create a request
-     * instance with the deserialized parameters.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated body parameters.
-     *
-     * @param null|array|object $data The deserialized body data. This will
-     *     typically be in an array or object.
-     * @return static
-     * @throws \InvalidArgumentException if an unsupported argument type is
-     *     provided.
-     */
-    public function withParsedBody($data);
-
-    /**
-     * Retrieve attributes derived from the request.
-     *
-     * The request "attributes" may be used to allow injection of any
-     * parameters derived from the request: e.g., the results of path
-     * match operations; the results of decrypting cookies; the results of
-     * deserializing non-form-encoded message bodies; etc. Attributes
-     * will be application and request specific, and CAN be mutable.
-     *
-     * @return array Attributes derived from the request.
-     */
-    public function getAttributes();
-
-    /**
-     * Retrieve a single derived request attribute.
-     *
-     * Retrieves a single derived request attribute as described in
-     * getAttributes(). If the attribute has not been previously set, returns
-     * the default value as provided.
-     *
-     * This method obviates the need for a hasAttribute() method, as it allows
-     * specifying a default value to return if the attribute is not found.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @param mixed $default Default value to return if the attribute does not exist.
-     * @return mixed
-     */
-    public function getAttribute($name, $default = null);
-
-    /**
-     * Return an instance with the specified derived request attribute.
-     *
-     * This method allows setting a single derived request attribute as
-     * described in getAttributes().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated attribute.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @param mixed $value The value of the attribute.
-     * @return static
-     */
-    public function withAttribute($name, $value);
-
-    /**
-     * Return an instance that removes the specified derived request attribute.
-     *
-     * This method allows removing a single derived request attribute as
-     * described in getAttributes().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that removes
-     * the attribute.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @return static
-     */
-    public function withoutAttribute($name);
-}
diff --git a/vendor/psr/http-message/src/StreamInterface.php b/vendor/psr/http-message/src/StreamInterface.php
deleted file mode 100644
index f68f391269b472ec9d9828d2725c12019fa99903..0000000000000000000000000000000000000000
--- a/vendor/psr/http-message/src/StreamInterface.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Describes a data stream.
- *
- * Typically, an instance will wrap a PHP stream; this interface provides
- * a wrapper around the most common operations, including serialization of
- * the entire stream to a string.
- */
-interface StreamInterface
-{
-    /**
-     * Reads all data from the stream into a string, from the beginning to end.
-     *
-     * This method MUST attempt to seek to the beginning of the stream before
-     * reading data and read the stream until the end is reached.
-     *
-     * Warning: This could attempt to load a large amount of data into memory.
-     *
-     * This method MUST NOT raise an exception in order to conform with PHP's
-     * string casting operations.
-     *
-     * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring
-     * @return string
-     */
-    public function __toString();
-
-    /**
-     * Closes the stream and any underlying resources.
-     *
-     * @return void
-     */
-    public function close();
-
-    /**
-     * Separates any underlying resources from the stream.
-     *
-     * After the stream has been detached, the stream is in an unusable state.
-     *
-     * @return resource|null Underlying PHP stream, if any
-     */
-    public function detach();
-
-    /**
-     * Get the size of the stream if known.
-     *
-     * @return int|null Returns the size in bytes if known, or null if unknown.
-     */
-    public function getSize();
-
-    /**
-     * Returns the current position of the file read/write pointer
-     *
-     * @return int Position of the file pointer
-     * @throws \RuntimeException on error.
-     */
-    public function tell();
-
-    /**
-     * Returns true if the stream is at the end of the stream.
-     *
-     * @return bool
-     */
-    public function eof();
-
-    /**
-     * Returns whether or not the stream is seekable.
-     *
-     * @return bool
-     */
-    public function isSeekable();
-
-    /**
-     * Seek to a position in the stream.
-     *
-     * @link http://www.php.net/manual/en/function.fseek.php
-     * @param int $offset Stream offset
-     * @param int $whence Specifies how the cursor position will be calculated
-     *     based on the seek offset. Valid values are identical to the built-in
-     *     PHP $whence values for `fseek()`.  SEEK_SET: Set position equal to
-     *     offset bytes SEEK_CUR: Set position to current location plus offset
-     *     SEEK_END: Set position to end-of-stream plus offset.
-     * @throws \RuntimeException on failure.
-     */
-    public function seek($offset, $whence = SEEK_SET);
-
-    /**
-     * Seek to the beginning of the stream.
-     *
-     * If the stream is not seekable, this method will raise an exception;
-     * otherwise, it will perform a seek(0).
-     *
-     * @see seek()
-     * @link http://www.php.net/manual/en/function.fseek.php
-     * @throws \RuntimeException on failure.
-     */
-    public function rewind();
-
-    /**
-     * Returns whether or not the stream is writable.
-     *
-     * @return bool
-     */
-    public function isWritable();
-
-    /**
-     * Write data to the stream.
-     *
-     * @param string $string The string that is to be written.
-     * @return int Returns the number of bytes written to the stream.
-     * @throws \RuntimeException on failure.
-     */
-    public function write($string);
-
-    /**
-     * Returns whether or not the stream is readable.
-     *
-     * @return bool
-     */
-    public function isReadable();
-
-    /**
-     * Read data from the stream.
-     *
-     * @param int $length Read up to $length bytes from the object and return
-     *     them. Fewer than $length bytes may be returned if underlying stream
-     *     call returns fewer bytes.
-     * @return string Returns the data read from the stream, or an empty string
-     *     if no bytes are available.
-     * @throws \RuntimeException if an error occurs.
-     */
-    public function read($length);
-
-    /**
-     * Returns the remaining contents in a string
-     *
-     * @return string
-     * @throws \RuntimeException if unable to read or an error occurs while
-     *     reading.
-     */
-    public function getContents();
-
-    /**
-     * Get stream metadata as an associative array or retrieve a specific key.
-     *
-     * The keys returned are identical to the keys returned from PHP's
-     * stream_get_meta_data() function.
-     *
-     * @link http://php.net/manual/en/function.stream-get-meta-data.php
-     * @param string $key Specific metadata to retrieve.
-     * @return array|mixed|null Returns an associative array if no key is
-     *     provided. Returns a specific key value if a key is provided and the
-     *     value is found, or null if the key is not found.
-     */
-    public function getMetadata($key = null);
-}
diff --git a/vendor/psr/http-message/src/UploadedFileInterface.php b/vendor/psr/http-message/src/UploadedFileInterface.php
deleted file mode 100644
index f8a6901e014477f5bcbd2bbbe525b0c0b34d3b97..0000000000000000000000000000000000000000
--- a/vendor/psr/http-message/src/UploadedFileInterface.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Value object representing a file uploaded through an HTTP request.
- *
- * Instances of this interface are considered immutable; all methods that
- * might change state MUST be implemented such that they retain the internal
- * state of the current instance and return an instance that contains the
- * changed state.
- */
-interface UploadedFileInterface
-{
-    /**
-     * Retrieve a stream representing the uploaded file.
-     *
-     * This method MUST return a StreamInterface instance, representing the
-     * uploaded file. The purpose of this method is to allow utilizing native PHP
-     * stream functionality to manipulate the file upload, such as
-     * stream_copy_to_stream() (though the result will need to be decorated in a
-     * native PHP stream wrapper to work with such functions).
-     *
-     * If the moveTo() method has been called previously, this method MUST raise
-     * an exception.
-     *
-     * @return StreamInterface Stream representation of the uploaded file.
-     * @throws \RuntimeException in cases when no stream is available or can be
-     *     created.
-     */
-    public function getStream();
-
-    /**
-     * Move the uploaded file to a new location.
-     *
-     * Use this method as an alternative to move_uploaded_file(). This method is
-     * guaranteed to work in both SAPI and non-SAPI environments.
-     * Implementations must determine which environment they are in, and use the
-     * appropriate method (move_uploaded_file(), rename(), or a stream
-     * operation) to perform the operation.
-     *
-     * $targetPath may be an absolute path, or a relative path. If it is a
-     * relative path, resolution should be the same as used by PHP's rename()
-     * function.
-     *
-     * The original file or stream MUST be removed on completion.
-     *
-     * If this method is called more than once, any subsequent calls MUST raise
-     * an exception.
-     *
-     * When used in an SAPI environment where $_FILES is populated, when writing
-     * files via moveTo(), is_uploaded_file() and move_uploaded_file() SHOULD be
-     * used to ensure permissions and upload status are verified correctly.
-     *
-     * If you wish to move to a stream, use getStream(), as SAPI operations
-     * cannot guarantee writing to stream destinations.
-     *
-     * @see http://php.net/is_uploaded_file
-     * @see http://php.net/move_uploaded_file
-     * @param string $targetPath Path to which to move the uploaded file.
-     * @throws \InvalidArgumentException if the $targetPath specified is invalid.
-     * @throws \RuntimeException on any error during the move operation, or on
-     *     the second or subsequent call to the method.
-     */
-    public function moveTo($targetPath);
-    
-    /**
-     * Retrieve the file size.
-     *
-     * Implementations SHOULD return the value stored in the "size" key of
-     * the file in the $_FILES array if available, as PHP calculates this based
-     * on the actual size transmitted.
-     *
-     * @return int|null The file size in bytes or null if unknown.
-     */
-    public function getSize();
-    
-    /**
-     * Retrieve the error associated with the uploaded file.
-     *
-     * The return value MUST be one of PHP's UPLOAD_ERR_XXX constants.
-     *
-     * If the file was uploaded successfully, this method MUST return
-     * UPLOAD_ERR_OK.
-     *
-     * Implementations SHOULD return the value stored in the "error" key of
-     * the file in the $_FILES array.
-     *
-     * @see http://php.net/manual/en/features.file-upload.errors.php
-     * @return int One of PHP's UPLOAD_ERR_XXX constants.
-     */
-    public function getError();
-    
-    /**
-     * Retrieve the filename sent by the client.
-     *
-     * Do not trust the value returned by this method. A client could send
-     * a malicious filename with the intention to corrupt or hack your
-     * application.
-     *
-     * Implementations SHOULD return the value stored in the "name" key of
-     * the file in the $_FILES array.
-     *
-     * @return string|null The filename sent by the client or null if none
-     *     was provided.
-     */
-    public function getClientFilename();
-    
-    /**
-     * Retrieve the media type sent by the client.
-     *
-     * Do not trust the value returned by this method. A client could send
-     * a malicious media type with the intention to corrupt or hack your
-     * application.
-     *
-     * Implementations SHOULD return the value stored in the "type" key of
-     * the file in the $_FILES array.
-     *
-     * @return string|null The media type sent by the client or null if none
-     *     was provided.
-     */
-    public function getClientMediaType();
-}
diff --git a/vendor/psr/http-message/src/UriInterface.php b/vendor/psr/http-message/src/UriInterface.php
deleted file mode 100644
index 9d7ab9eae8f29060899cf2f9904e2bd0409af515..0000000000000000000000000000000000000000
--- a/vendor/psr/http-message/src/UriInterface.php
+++ /dev/null
@@ -1,323 +0,0 @@
-<?php
-namespace Psr\Http\Message;
-
-/**
- * Value object representing a URI.
- *
- * This interface is meant to represent URIs according to RFC 3986 and to
- * provide methods for most common operations. Additional functionality for
- * working with URIs can be provided on top of the interface or externally.
- * Its primary use is for HTTP requests, but may also be used in other
- * contexts.
- *
- * Instances of this interface are considered immutable; all methods that
- * might change state MUST be implemented such that they retain the internal
- * state of the current instance and return an instance that contains the
- * changed state.
- *
- * Typically the Host header will be also be present in the request message.
- * For server-side requests, the scheme will typically be discoverable in the
- * server parameters.
- *
- * @link http://tools.ietf.org/html/rfc3986 (the URI specification)
- */
-interface UriInterface
-{
-    /**
-     * Retrieve the scheme component of the URI.
-     *
-     * If no scheme is present, this method MUST return an empty string.
-     *
-     * The value returned MUST be normalized to lowercase, per RFC 3986
-     * Section 3.1.
-     *
-     * The trailing ":" character is not part of the scheme and MUST NOT be
-     * added.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-3.1
-     * @return string The URI scheme.
-     */
-    public function getScheme();
-
-    /**
-     * Retrieve the authority component of the URI.
-     *
-     * If no authority information is present, this method MUST return an empty
-     * string.
-     *
-     * The authority syntax of the URI is:
-     *
-     * <pre>
-     * [user-info@]host[:port]
-     * </pre>
-     *
-     * If the port component is not set or is the standard port for the current
-     * scheme, it SHOULD NOT be included.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-3.2
-     * @return string The URI authority, in "[user-info@]host[:port]" format.
-     */
-    public function getAuthority();
-
-    /**
-     * Retrieve the user information component of the URI.
-     *
-     * If no user information is present, this method MUST return an empty
-     * string.
-     *
-     * If a user is present in the URI, this will return that value;
-     * additionally, if the password is also present, it will be appended to the
-     * user value, with a colon (":") separating the values.
-     *
-     * The trailing "@" character is not part of the user information and MUST
-     * NOT be added.
-     *
-     * @return string The URI user information, in "username[:password]" format.
-     */
-    public function getUserInfo();
-
-    /**
-     * Retrieve the host component of the URI.
-     *
-     * If no host is present, this method MUST return an empty string.
-     *
-     * The value returned MUST be normalized to lowercase, per RFC 3986
-     * Section 3.2.2.
-     *
-     * @see http://tools.ietf.org/html/rfc3986#section-3.2.2
-     * @return string The URI host.
-     */
-    public function getHost();
-
-    /**
-     * Retrieve the port component of the URI.
-     *
-     * If a port is present, and it is non-standard for the current scheme,
-     * this method MUST return it as an integer. If the port is the standard port
-     * used with the current scheme, this method SHOULD return null.
-     *
-     * If no port is present, and no scheme is present, this method MUST return
-     * a null value.
-     *
-     * If no port is present, but a scheme is present, this method MAY return
-     * the standard port for that scheme, but SHOULD return null.
-     *
-     * @return null|int The URI port.
-     */
-    public function getPort();
-
-    /**
-     * Retrieve the path component of the URI.
-     *
-     * The path can either be empty or absolute (starting with a slash) or
-     * rootless (not starting with a slash). Implementations MUST support all
-     * three syntaxes.
-     *
-     * Normally, the empty path "" and absolute path "/" are considered equal as
-     * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically
-     * do this normalization because in contexts with a trimmed base path, e.g.
-     * the front controller, this difference becomes significant. It's the task
-     * of the user to handle both "" and "/".
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.3.
-     *
-     * As an example, if the value should include a slash ("/") not intended as
-     * delimiter between path segments, that value MUST be passed in encoded
-     * form (e.g., "%2F") to the instance.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.3
-     * @return string The URI path.
-     */
-    public function getPath();
-
-    /**
-     * Retrieve the query string of the URI.
-     *
-     * If no query string is present, this method MUST return an empty string.
-     *
-     * The leading "?" character is not part of the query and MUST NOT be
-     * added.
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.4.
-     *
-     * As an example, if a value in a key/value pair of the query string should
-     * include an ampersand ("&") not intended as a delimiter between values,
-     * that value MUST be passed in encoded form (e.g., "%26") to the instance.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.4
-     * @return string The URI query string.
-     */
-    public function getQuery();
-
-    /**
-     * Retrieve the fragment component of the URI.
-     *
-     * If no fragment is present, this method MUST return an empty string.
-     *
-     * The leading "#" character is not part of the fragment and MUST NOT be
-     * added.
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.5.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.5
-     * @return string The URI fragment.
-     */
-    public function getFragment();
-
-    /**
-     * Return an instance with the specified scheme.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified scheme.
-     *
-     * Implementations MUST support the schemes "http" and "https" case
-     * insensitively, and MAY accommodate other schemes if required.
-     *
-     * An empty scheme is equivalent to removing the scheme.
-     *
-     * @param string $scheme The scheme to use with the new instance.
-     * @return static A new instance with the specified scheme.
-     * @throws \InvalidArgumentException for invalid or unsupported schemes.
-     */
-    public function withScheme($scheme);
-
-    /**
-     * Return an instance with the specified user information.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified user information.
-     *
-     * Password is optional, but the user information MUST include the
-     * user; an empty string for the user is equivalent to removing user
-     * information.
-     *
-     * @param string $user The user name to use for authority.
-     * @param null|string $password The password associated with $user.
-     * @return static A new instance with the specified user information.
-     */
-    public function withUserInfo($user, $password = null);
-
-    /**
-     * Return an instance with the specified host.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified host.
-     *
-     * An empty host value is equivalent to removing the host.
-     *
-     * @param string $host The hostname to use with the new instance.
-     * @return static A new instance with the specified host.
-     * @throws \InvalidArgumentException for invalid hostnames.
-     */
-    public function withHost($host);
-
-    /**
-     * Return an instance with the specified port.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified port.
-     *
-     * Implementations MUST raise an exception for ports outside the
-     * established TCP and UDP port ranges.
-     *
-     * A null value provided for the port is equivalent to removing the port
-     * information.
-     *
-     * @param null|int $port The port to use with the new instance; a null value
-     *     removes the port information.
-     * @return static A new instance with the specified port.
-     * @throws \InvalidArgumentException for invalid ports.
-     */
-    public function withPort($port);
-
-    /**
-     * Return an instance with the specified path.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified path.
-     *
-     * The path can either be empty or absolute (starting with a slash) or
-     * rootless (not starting with a slash). Implementations MUST support all
-     * three syntaxes.
-     *
-     * If the path is intended to be domain-relative rather than path relative then
-     * it must begin with a slash ("/"). Paths not starting with a slash ("/")
-     * are assumed to be relative to some base path known to the application or
-     * consumer.
-     *
-     * Users can provide both encoded and decoded path characters.
-     * Implementations ensure the correct encoding as outlined in getPath().
-     *
-     * @param string $path The path to use with the new instance.
-     * @return static A new instance with the specified path.
-     * @throws \InvalidArgumentException for invalid paths.
-     */
-    public function withPath($path);
-
-    /**
-     * Return an instance with the specified query string.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified query string.
-     *
-     * Users can provide both encoded and decoded query characters.
-     * Implementations ensure the correct encoding as outlined in getQuery().
-     *
-     * An empty query string value is equivalent to removing the query string.
-     *
-     * @param string $query The query string to use with the new instance.
-     * @return static A new instance with the specified query string.
-     * @throws \InvalidArgumentException for invalid query strings.
-     */
-    public function withQuery($query);
-
-    /**
-     * Return an instance with the specified URI fragment.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified URI fragment.
-     *
-     * Users can provide both encoded and decoded fragment characters.
-     * Implementations ensure the correct encoding as outlined in getFragment().
-     *
-     * An empty fragment value is equivalent to removing the fragment.
-     *
-     * @param string $fragment The fragment to use with the new instance.
-     * @return static A new instance with the specified fragment.
-     */
-    public function withFragment($fragment);
-
-    /**
-     * Return the string representation as a URI reference.
-     *
-     * Depending on which components of the URI are present, the resulting
-     * string is either a full URI or relative reference according to RFC 3986,
-     * Section 4.1. The method concatenates the various components of the URI,
-     * using the appropriate delimiters:
-     *
-     * - If a scheme is present, it MUST be suffixed by ":".
-     * - If an authority is present, it MUST be prefixed by "//".
-     * - The path can be concatenated without delimiters. But there are two
-     *   cases where the path has to be adjusted to make the URI reference
-     *   valid as PHP does not allow to throw an exception in __toString():
-     *     - If the path is rootless and an authority is present, the path MUST
-     *       be prefixed by "/".
-     *     - If the path is starting with more than one "/" and no authority is
-     *       present, the starting slashes MUST be reduced to one.
-     * - If a query is present, it MUST be prefixed by "?".
-     * - If a fragment is present, it MUST be prefixed by "#".
-     *
-     * @see http://tools.ietf.org/html/rfc3986#section-4.1
-     * @return string
-     */
-    public function __toString();
-}
diff --git a/vendor/psr/log/LICENSE b/vendor/psr/log/LICENSE
deleted file mode 100644
index 474c952b4b50c761c9b031f410ac0dfbc1daac4c..0000000000000000000000000000000000000000
--- a/vendor/psr/log/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2012 PHP Framework Interoperability Group
-
-Permission is hereby granted, free of charge, to any person obtaining a copy 
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights 
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
-copies of the Software, and to permit persons to whom the Software is 
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in 
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/psr/log/Psr/Log/AbstractLogger.php b/vendor/psr/log/Psr/Log/AbstractLogger.php
deleted file mode 100644
index 90e721af2d37716f0984a6b17b2385c223a248ed..0000000000000000000000000000000000000000
--- a/vendor/psr/log/Psr/Log/AbstractLogger.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * This is a simple Logger implementation that other Loggers can inherit from.
- *
- * It simply delegates all log-level-specific methods to the `log` method to
- * reduce boilerplate code that a simple Logger that does the same thing with
- * messages regardless of the error level has to implement.
- */
-abstract class AbstractLogger implements LoggerInterface
-{
-    /**
-     * System is unusable.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function emergency($message, array $context = array())
-    {
-        $this->log(LogLevel::EMERGENCY, $message, $context);
-    }
-
-    /**
-     * Action must be taken immediately.
-     *
-     * Example: Entire website down, database unavailable, etc. This should
-     * trigger the SMS alerts and wake you up.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function alert($message, array $context = array())
-    {
-        $this->log(LogLevel::ALERT, $message, $context);
-    }
-
-    /**
-     * Critical conditions.
-     *
-     * Example: Application component unavailable, unexpected exception.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function critical($message, array $context = array())
-    {
-        $this->log(LogLevel::CRITICAL, $message, $context);
-    }
-
-    /**
-     * Runtime errors that do not require immediate action but should typically
-     * be logged and monitored.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function error($message, array $context = array())
-    {
-        $this->log(LogLevel::ERROR, $message, $context);
-    }
-
-    /**
-     * Exceptional occurrences that are not errors.
-     *
-     * Example: Use of deprecated APIs, poor use of an API, undesirable things
-     * that are not necessarily wrong.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function warning($message, array $context = array())
-    {
-        $this->log(LogLevel::WARNING, $message, $context);
-    }
-
-    /**
-     * Normal but significant events.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function notice($message, array $context = array())
-    {
-        $this->log(LogLevel::NOTICE, $message, $context);
-    }
-
-    /**
-     * Interesting events.
-     *
-     * Example: User logs in, SQL logs.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function info($message, array $context = array())
-    {
-        $this->log(LogLevel::INFO, $message, $context);
-    }
-
-    /**
-     * Detailed debug information.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function debug($message, array $context = array())
-    {
-        $this->log(LogLevel::DEBUG, $message, $context);
-    }
-}
diff --git a/vendor/psr/log/Psr/Log/InvalidArgumentException.php b/vendor/psr/log/Psr/Log/InvalidArgumentException.php
deleted file mode 100644
index 67f852d1dbc660ba05e703fe9b727727da2b3f78..0000000000000000000000000000000000000000
--- a/vendor/psr/log/Psr/Log/InvalidArgumentException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-class InvalidArgumentException extends \InvalidArgumentException
-{
-}
diff --git a/vendor/psr/log/Psr/Log/LogLevel.php b/vendor/psr/log/Psr/Log/LogLevel.php
deleted file mode 100644
index 9cebcace652f5bc52ee4c20497162df4ef00b16d..0000000000000000000000000000000000000000
--- a/vendor/psr/log/Psr/Log/LogLevel.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * Describes log levels.
- */
-class LogLevel
-{
-    const EMERGENCY = 'emergency';
-    const ALERT     = 'alert';
-    const CRITICAL  = 'critical';
-    const ERROR     = 'error';
-    const WARNING   = 'warning';
-    const NOTICE    = 'notice';
-    const INFO      = 'info';
-    const DEBUG     = 'debug';
-}
diff --git a/vendor/psr/log/Psr/Log/LoggerAwareInterface.php b/vendor/psr/log/Psr/Log/LoggerAwareInterface.php
deleted file mode 100644
index 4d64f4786adb9b25259533304542302ca687eba2..0000000000000000000000000000000000000000
--- a/vendor/psr/log/Psr/Log/LoggerAwareInterface.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * Describes a logger-aware instance.
- */
-interface LoggerAwareInterface
-{
-    /**
-     * Sets a logger instance on the object.
-     *
-     * @param LoggerInterface $logger
-     *
-     * @return void
-     */
-    public function setLogger(LoggerInterface $logger);
-}
diff --git a/vendor/psr/log/Psr/Log/LoggerAwareTrait.php b/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
deleted file mode 100644
index 639f79bdaa5a007de241f4d902b679c51980eaca..0000000000000000000000000000000000000000
--- a/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * Basic Implementation of LoggerAwareInterface.
- */
-trait LoggerAwareTrait
-{
-    /**
-     * The logger instance.
-     *
-     * @var LoggerInterface
-     */
-    protected $logger;
-
-    /**
-     * Sets a logger.
-     *
-     * @param LoggerInterface $logger
-     */
-    public function setLogger(LoggerInterface $logger)
-    {
-        $this->logger = $logger;
-    }
-}
diff --git a/vendor/psr/log/Psr/Log/LoggerInterface.php b/vendor/psr/log/Psr/Log/LoggerInterface.php
deleted file mode 100644
index 2206cfde41aec794089817f90269a03d251db018..0000000000000000000000000000000000000000
--- a/vendor/psr/log/Psr/Log/LoggerInterface.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * Describes a logger instance.
- *
- * The message MUST be a string or object implementing __toString().
- *
- * The message MAY contain placeholders in the form: {foo} where foo
- * will be replaced by the context data in key "foo".
- *
- * The context array can contain arbitrary data. The only assumption that
- * can be made by implementors is that if an Exception instance is given
- * to produce a stack trace, it MUST be in a key named "exception".
- *
- * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
- * for the full interface specification.
- */
-interface LoggerInterface
-{
-    /**
-     * System is unusable.
-     *
-     * @param string  $message
-     * @param mixed[] $context
-     *
-     * @return void
-     */
-    public function emergency($message, array $context = array());
-
-    /**
-     * Action must be taken immediately.
-     *
-     * Example: Entire website down, database unavailable, etc. This should
-     * trigger the SMS alerts and wake you up.
-     *
-     * @param string  $message
-     * @param mixed[] $context
-     *
-     * @return void
-     */
-    public function alert($message, array $context = array());
-
-    /**
-     * Critical conditions.
-     *
-     * Example: Application component unavailable, unexpected exception.
-     *
-     * @param string  $message
-     * @param mixed[] $context
-     *
-     * @return void
-     */
-    public function critical($message, array $context = array());
-
-    /**
-     * Runtime errors that do not require immediate action but should typically
-     * be logged and monitored.
-     *
-     * @param string  $message
-     * @param mixed[] $context
-     *
-     * @return void
-     */
-    public function error($message, array $context = array());
-
-    /**
-     * Exceptional occurrences that are not errors.
-     *
-     * Example: Use of deprecated APIs, poor use of an API, undesirable things
-     * that are not necessarily wrong.
-     *
-     * @param string  $message
-     * @param mixed[] $context
-     *
-     * @return void
-     */
-    public function warning($message, array $context = array());
-
-    /**
-     * Normal but significant events.
-     *
-     * @param string  $message
-     * @param mixed[] $context
-     *
-     * @return void
-     */
-    public function notice($message, array $context = array());
-
-    /**
-     * Interesting events.
-     *
-     * Example: User logs in, SQL logs.
-     *
-     * @param string  $message
-     * @param mixed[] $context
-     *
-     * @return void
-     */
-    public function info($message, array $context = array());
-
-    /**
-     * Detailed debug information.
-     *
-     * @param string  $message
-     * @param mixed[] $context
-     *
-     * @return void
-     */
-    public function debug($message, array $context = array());
-
-    /**
-     * Logs with an arbitrary level.
-     *
-     * @param mixed   $level
-     * @param string  $message
-     * @param mixed[] $context
-     *
-     * @return void
-     *
-     * @throws \Psr\Log\InvalidArgumentException
-     */
-    public function log($level, $message, array $context = array());
-}
diff --git a/vendor/psr/log/Psr/Log/LoggerTrait.php b/vendor/psr/log/Psr/Log/LoggerTrait.php
deleted file mode 100644
index e392fef0a0cb0a6653ab2a2a887e8811937ef51f..0000000000000000000000000000000000000000
--- a/vendor/psr/log/Psr/Log/LoggerTrait.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * This is a simple Logger trait that classes unable to extend AbstractLogger
- * (because they extend another class, etc) can include.
- *
- * It simply delegates all log-level-specific methods to the `log` method to
- * reduce boilerplate code that a simple Logger that does the same thing with
- * messages regardless of the error level has to implement.
- */
-trait LoggerTrait
-{
-    /**
-     * System is unusable.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function emergency($message, array $context = array())
-    {
-        $this->log(LogLevel::EMERGENCY, $message, $context);
-    }
-
-    /**
-     * Action must be taken immediately.
-     *
-     * Example: Entire website down, database unavailable, etc. This should
-     * trigger the SMS alerts and wake you up.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function alert($message, array $context = array())
-    {
-        $this->log(LogLevel::ALERT, $message, $context);
-    }
-
-    /**
-     * Critical conditions.
-     *
-     * Example: Application component unavailable, unexpected exception.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function critical($message, array $context = array())
-    {
-        $this->log(LogLevel::CRITICAL, $message, $context);
-    }
-
-    /**
-     * Runtime errors that do not require immediate action but should typically
-     * be logged and monitored.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function error($message, array $context = array())
-    {
-        $this->log(LogLevel::ERROR, $message, $context);
-    }
-
-    /**
-     * Exceptional occurrences that are not errors.
-     *
-     * Example: Use of deprecated APIs, poor use of an API, undesirable things
-     * that are not necessarily wrong.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function warning($message, array $context = array())
-    {
-        $this->log(LogLevel::WARNING, $message, $context);
-    }
-
-    /**
-     * Normal but significant events.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function notice($message, array $context = array())
-    {
-        $this->log(LogLevel::NOTICE, $message, $context);
-    }
-
-    /**
-     * Interesting events.
-     *
-     * Example: User logs in, SQL logs.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function info($message, array $context = array())
-    {
-        $this->log(LogLevel::INFO, $message, $context);
-    }
-
-    /**
-     * Detailed debug information.
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     */
-    public function debug($message, array $context = array())
-    {
-        $this->log(LogLevel::DEBUG, $message, $context);
-    }
-
-    /**
-     * Logs with an arbitrary level.
-     *
-     * @param mixed  $level
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     *
-     * @throws \Psr\Log\InvalidArgumentException
-     */
-    abstract public function log($level, $message, array $context = array());
-}
diff --git a/vendor/psr/log/Psr/Log/NullLogger.php b/vendor/psr/log/Psr/Log/NullLogger.php
deleted file mode 100644
index c8f7293b1c66886bcb2d47f30f5a8decc67712ba..0000000000000000000000000000000000000000
--- a/vendor/psr/log/Psr/Log/NullLogger.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * This Logger can be used to avoid conditional log calls.
- *
- * Logging should always be optional, and if no logger is provided to your
- * library creating a NullLogger instance to have something to throw logs at
- * is a good way to avoid littering your code with `if ($this->logger) { }`
- * blocks.
- */
-class NullLogger extends AbstractLogger
-{
-    /**
-     * Logs with an arbitrary level.
-     *
-     * @param mixed  $level
-     * @param string $message
-     * @param array  $context
-     *
-     * @return void
-     *
-     * @throws \Psr\Log\InvalidArgumentException
-     */
-    public function log($level, $message, array $context = array())
-    {
-        // noop
-    }
-}
diff --git a/vendor/psr/log/Psr/Log/Test/DummyTest.php b/vendor/psr/log/Psr/Log/Test/DummyTest.php
deleted file mode 100644
index 9638c11018611d55562401c5159513211ca1c377..0000000000000000000000000000000000000000
--- a/vendor/psr/log/Psr/Log/Test/DummyTest.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Psr\Log\Test;
-
-/**
- * This class is internal and does not follow the BC promise.
- *
- * Do NOT use this class in any way.
- *
- * @internal
- */
-class DummyTest
-{
-    public function __toString()
-    {
-        return 'DummyTest';
-    }
-}
diff --git a/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php b/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
deleted file mode 100644
index e1e5354d2c8b008e46aa93fdac3a2c9a824fc451..0000000000000000000000000000000000000000
--- a/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-
-namespace Psr\Log\Test;
-
-use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
-use PHPUnit\Framework\TestCase;
-
-/**
- * Provides a base test class for ensuring compliance with the LoggerInterface.
- *
- * Implementors can extend the class and implement abstract methods to run this
- * as part of their test suite.
- */
-abstract class LoggerInterfaceTest extends TestCase
-{
-    /**
-     * @return LoggerInterface
-     */
-    abstract public function getLogger();
-
-    /**
-     * This must return the log messages in order.
-     *
-     * The simple formatting of the messages is: "<LOG LEVEL> <MESSAGE>".
-     *
-     * Example ->error('Foo') would yield "error Foo".
-     *
-     * @return string[]
-     */
-    abstract public function getLogs();
-
-    public function testImplements()
-    {
-        $this->assertInstanceOf('Psr\Log\LoggerInterface', $this->getLogger());
-    }
-
-    /**
-     * @dataProvider provideLevelsAndMessages
-     */
-    public function testLogsAtAllLevels($level, $message)
-    {
-        $logger = $this->getLogger();
-        $logger->{$level}($message, array('user' => 'Bob'));
-        $logger->log($level, $message, array('user' => 'Bob'));
-
-        $expected = array(
-            $level.' message of level '.$level.' with context: Bob',
-            $level.' message of level '.$level.' with context: Bob',
-        );
-        $this->assertEquals($expected, $this->getLogs());
-    }
-
-    public function provideLevelsAndMessages()
-    {
-        return array(
-            LogLevel::EMERGENCY => array(LogLevel::EMERGENCY, 'message of level emergency with context: {user}'),
-            LogLevel::ALERT => array(LogLevel::ALERT, 'message of level alert with context: {user}'),
-            LogLevel::CRITICAL => array(LogLevel::CRITICAL, 'message of level critical with context: {user}'),
-            LogLevel::ERROR => array(LogLevel::ERROR, 'message of level error with context: {user}'),
-            LogLevel::WARNING => array(LogLevel::WARNING, 'message of level warning with context: {user}'),
-            LogLevel::NOTICE => array(LogLevel::NOTICE, 'message of level notice with context: {user}'),
-            LogLevel::INFO => array(LogLevel::INFO, 'message of level info with context: {user}'),
-            LogLevel::DEBUG => array(LogLevel::DEBUG, 'message of level debug with context: {user}'),
-        );
-    }
-
-    /**
-     * @expectedException \Psr\Log\InvalidArgumentException
-     */
-    public function testThrowsOnInvalidLevel()
-    {
-        $logger = $this->getLogger();
-        $logger->log('invalid level', 'Foo');
-    }
-
-    public function testContextReplacement()
-    {
-        $logger = $this->getLogger();
-        $logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar'));
-
-        $expected = array('info {Message {nothing} Bob Bar a}');
-        $this->assertEquals($expected, $this->getLogs());
-    }
-
-    public function testObjectCastToString()
-    {
-        if (method_exists($this, 'createPartialMock')) {
-            $dummy = $this->createPartialMock('Psr\Log\Test\DummyTest', array('__toString'));
-        } else {
-            $dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString'));
-        }
-        $dummy->expects($this->once())
-            ->method('__toString')
-            ->will($this->returnValue('DUMMY'));
-
-        $this->getLogger()->warning($dummy);
-
-        $expected = array('warning DUMMY');
-        $this->assertEquals($expected, $this->getLogs());
-    }
-
-    public function testContextCanContainAnything()
-    {
-        $closed = fopen('php://memory', 'r');
-        fclose($closed);
-
-        $context = array(
-            'bool' => true,
-            'null' => null,
-            'string' => 'Foo',
-            'int' => 0,
-            'float' => 0.5,
-            'nested' => array('with object' => new DummyTest),
-            'object' => new \DateTime,
-            'resource' => fopen('php://memory', 'r'),
-            'closed' => $closed,
-        );
-
-        $this->getLogger()->warning('Crazy context data', $context);
-
-        $expected = array('warning Crazy context data');
-        $this->assertEquals($expected, $this->getLogs());
-    }
-
-    public function testContextExceptionKeyCanBeExceptionOrOtherValues()
-    {
-        $logger = $this->getLogger();
-        $logger->warning('Random message', array('exception' => 'oops'));
-        $logger->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail')));
-
-        $expected = array(
-            'warning Random message',
-            'critical Uncaught Exception!'
-        );
-        $this->assertEquals($expected, $this->getLogs());
-    }
-}
diff --git a/vendor/psr/log/Psr/Log/Test/TestLogger.php b/vendor/psr/log/Psr/Log/Test/TestLogger.php
deleted file mode 100644
index 1be3230496b704fe90bc5e6cf69e7a615863c7d1..0000000000000000000000000000000000000000
--- a/vendor/psr/log/Psr/Log/Test/TestLogger.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-
-namespace Psr\Log\Test;
-
-use Psr\Log\AbstractLogger;
-
-/**
- * Used for testing purposes.
- *
- * It records all records and gives you access to them for verification.
- *
- * @method bool hasEmergency($record)
- * @method bool hasAlert($record)
- * @method bool hasCritical($record)
- * @method bool hasError($record)
- * @method bool hasWarning($record)
- * @method bool hasNotice($record)
- * @method bool hasInfo($record)
- * @method bool hasDebug($record)
- *
- * @method bool hasEmergencyRecords()
- * @method bool hasAlertRecords()
- * @method bool hasCriticalRecords()
- * @method bool hasErrorRecords()
- * @method bool hasWarningRecords()
- * @method bool hasNoticeRecords()
- * @method bool hasInfoRecords()
- * @method bool hasDebugRecords()
- *
- * @method bool hasEmergencyThatContains($message)
- * @method bool hasAlertThatContains($message)
- * @method bool hasCriticalThatContains($message)
- * @method bool hasErrorThatContains($message)
- * @method bool hasWarningThatContains($message)
- * @method bool hasNoticeThatContains($message)
- * @method bool hasInfoThatContains($message)
- * @method bool hasDebugThatContains($message)
- *
- * @method bool hasEmergencyThatMatches($message)
- * @method bool hasAlertThatMatches($message)
- * @method bool hasCriticalThatMatches($message)
- * @method bool hasErrorThatMatches($message)
- * @method bool hasWarningThatMatches($message)
- * @method bool hasNoticeThatMatches($message)
- * @method bool hasInfoThatMatches($message)
- * @method bool hasDebugThatMatches($message)
- *
- * @method bool hasEmergencyThatPasses($message)
- * @method bool hasAlertThatPasses($message)
- * @method bool hasCriticalThatPasses($message)
- * @method bool hasErrorThatPasses($message)
- * @method bool hasWarningThatPasses($message)
- * @method bool hasNoticeThatPasses($message)
- * @method bool hasInfoThatPasses($message)
- * @method bool hasDebugThatPasses($message)
- */
-class TestLogger extends AbstractLogger
-{
-    /**
-     * @var array
-     */
-    public $records = [];
-
-    public $recordsByLevel = [];
-
-    /**
-     * @inheritdoc
-     */
-    public function log($level, $message, array $context = [])
-    {
-        $record = [
-            'level' => $level,
-            'message' => $message,
-            'context' => $context,
-        ];
-
-        $this->recordsByLevel[$record['level']][] = $record;
-        $this->records[] = $record;
-    }
-
-    public function hasRecords($level)
-    {
-        return isset($this->recordsByLevel[$level]);
-    }
-
-    public function hasRecord($record, $level)
-    {
-        if (is_string($record)) {
-            $record = ['message' => $record];
-        }
-        return $this->hasRecordThatPasses(function ($rec) use ($record) {
-            if ($rec['message'] !== $record['message']) {
-                return false;
-            }
-            if (isset($record['context']) && $rec['context'] !== $record['context']) {
-                return false;
-            }
-            return true;
-        }, $level);
-    }
-
-    public function hasRecordThatContains($message, $level)
-    {
-        return $this->hasRecordThatPasses(function ($rec) use ($message) {
-            return strpos($rec['message'], $message) !== false;
-        }, $level);
-    }
-
-    public function hasRecordThatMatches($regex, $level)
-    {
-        return $this->hasRecordThatPasses(function ($rec) use ($regex) {
-            return preg_match($regex, $rec['message']) > 0;
-        }, $level);
-    }
-
-    public function hasRecordThatPasses(callable $predicate, $level)
-    {
-        if (!isset($this->recordsByLevel[$level])) {
-            return false;
-        }
-        foreach ($this->recordsByLevel[$level] as $i => $rec) {
-            if (call_user_func($predicate, $rec, $i)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public function __call($method, $args)
-    {
-        if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) {
-            $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3];
-            $level = strtolower($matches[2]);
-            if (method_exists($this, $genericMethod)) {
-                $args[] = $level;
-                return call_user_func_array([$this, $genericMethod], $args);
-            }
-        }
-        throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()');
-    }
-
-    public function reset()
-    {
-        $this->records = [];
-        $this->recordsByLevel = [];
-    }
-}
diff --git a/vendor/psr/log/README.md b/vendor/psr/log/README.md
deleted file mode 100644
index a9f20c437b385e5afab15096bde84c51e31bc812..0000000000000000000000000000000000000000
--- a/vendor/psr/log/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-PSR Log
-=======
-
-This repository holds all interfaces/classes/traits related to
-[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md).
-
-Note that this is not a logger of its own. It is merely an interface that
-describes a logger. See the specification for more details.
-
-Installation
-------------
-
-```bash
-composer require psr/log
-```
-
-Usage
------
-
-If you need a logger, you can use the interface like this:
-
-```php
-<?php
-
-use Psr\Log\LoggerInterface;
-
-class Foo
-{
-    private $logger;
-
-    public function __construct(LoggerInterface $logger = null)
-    {
-        $this->logger = $logger;
-    }
-
-    public function doSomething()
-    {
-        if ($this->logger) {
-            $this->logger->info('Doing work');
-        }
-           
-        try {
-            $this->doSomethingElse();
-        } catch (Exception $exception) {
-            $this->logger->error('Oh no!', array('exception' => $exception));
-        }
-
-        // do something useful
-    }
-}
-```
-
-You can then pick one of the implementations of the interface to get a logger.
-
-If you want to implement the interface, you can require this package and
-implement `Psr\Log\LoggerInterface` in your code. Please read the
-[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
-for details.
diff --git a/vendor/psr/log/composer.json b/vendor/psr/log/composer.json
deleted file mode 100644
index 3f6d4eea4cb348c964c7642291dd7c608697c028..0000000000000000000000000000000000000000
--- a/vendor/psr/log/composer.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "name": "psr/log",
-    "description": "Common interface for logging libraries",
-    "keywords": ["psr", "psr-3", "log"],
-    "homepage": "https://github.com/php-fig/log",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "PHP-FIG",
-            "homepage": "http://www.php-fig.org/"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.0"
-    },
-    "autoload": {
-        "psr-4": {
-            "Psr\\Log\\": "Psr/Log/"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.1.x-dev"
-        }
-    }
-}
diff --git a/vendor/ralouphie/getallheaders/LICENSE b/vendor/ralouphie/getallheaders/LICENSE
deleted file mode 100644
index be5540c2af759b6e32172cbdcda5ccdf58816f2a..0000000000000000000000000000000000000000
--- a/vendor/ralouphie/getallheaders/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Ralph Khattar
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/ralouphie/getallheaders/README.md b/vendor/ralouphie/getallheaders/README.md
deleted file mode 100644
index 9430d76bbc2ff17f6626b7da94c6588fc8bc4c12..0000000000000000000000000000000000000000
--- a/vendor/ralouphie/getallheaders/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-getallheaders
-=============
-
-PHP `getallheaders()` polyfill. Compatible with PHP >= 5.3.
-
-[![Build Status](https://travis-ci.org/ralouphie/getallheaders.svg?branch=master)](https://travis-ci.org/ralouphie/getallheaders)
-[![Coverage Status](https://coveralls.io/repos/ralouphie/getallheaders/badge.png?branch=master)](https://coveralls.io/r/ralouphie/getallheaders?branch=master)
-[![Latest Stable Version](https://poser.pugx.org/ralouphie/getallheaders/v/stable.png)](https://packagist.org/packages/ralouphie/getallheaders)
-[![Latest Unstable Version](https://poser.pugx.org/ralouphie/getallheaders/v/unstable.png)](https://packagist.org/packages/ralouphie/getallheaders)
-[![License](https://poser.pugx.org/ralouphie/getallheaders/license.png)](https://packagist.org/packages/ralouphie/getallheaders)
-
-
-This is a simple polyfill for [`getallheaders()`](http://www.php.net/manual/en/function.getallheaders.php).
-
-## Install
-
-For PHP version **`>= 5.6`**:
-
-```
-composer require ralouphie/getallheaders
-```
-
-For PHP version **`< 5.6`**:
-
-```
-composer require ralouphie/getallheaders "^2"
-```
diff --git a/vendor/ralouphie/getallheaders/composer.json b/vendor/ralouphie/getallheaders/composer.json
deleted file mode 100644
index de8ce62e45dc6d37f9021969baed2830ac6537ae..0000000000000000000000000000000000000000
--- a/vendor/ralouphie/getallheaders/composer.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-	"name": "ralouphie/getallheaders",
-	"description": "A polyfill for getallheaders.",
-	"license": "MIT",
-	"authors": [
-		{
-			"name": "Ralph Khattar",
-			"email": "ralph.khattar@gmail.com"
-		}
-	],
-	"require": {
-		"php": ">=5.6"
-	},
-	"require-dev": {
-		"phpunit/phpunit": "^5 || ^6.5",
-		"php-coveralls/php-coveralls": "^2.1"
-	},
-	"autoload": {
-		"files": ["src/getallheaders.php"]
-	},
-	"autoload-dev": {
-		"psr-4": {
-			"getallheaders\\Tests\\": "tests/"
-		}
-	}
-}
diff --git a/vendor/ralouphie/getallheaders/src/getallheaders.php b/vendor/ralouphie/getallheaders/src/getallheaders.php
deleted file mode 100644
index c7285a5ba166616c89ea98d7ac3ce5cb05b382aa..0000000000000000000000000000000000000000
--- a/vendor/ralouphie/getallheaders/src/getallheaders.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-if (!function_exists('getallheaders')) {
-
-    /**
-     * Get all HTTP header key/values as an associative array for the current request.
-     *
-     * @return string[string] The HTTP header key/value pairs.
-     */
-    function getallheaders()
-    {
-        $headers = array();
-
-        $copy_server = array(
-            'CONTENT_TYPE'   => 'Content-Type',
-            'CONTENT_LENGTH' => 'Content-Length',
-            'CONTENT_MD5'    => 'Content-Md5',
-        );
-
-        foreach ($_SERVER as $key => $value) {
-            if (substr($key, 0, 5) === 'HTTP_') {
-                $key = substr($key, 5);
-                if (!isset($copy_server[$key]) || !isset($_SERVER[$key])) {
-                    $key = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $key))));
-                    $headers[$key] = $value;
-                }
-            } elseif (isset($copy_server[$key])) {
-                $headers[$copy_server[$key]] = $value;
-            }
-        }
-
-        if (!isset($headers['Authorization'])) {
-            if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
-                $headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
-            } elseif (isset($_SERVER['PHP_AUTH_USER'])) {
-                $basic_pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : '';
-                $headers['Authorization'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $basic_pass);
-            } elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) {
-                $headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST'];
-            }
-        }
-
-        return $headers;
-    }
-
-}
diff --git a/vendor/silex/silex/.gitignore b/vendor/silex/silex/.gitignore
deleted file mode 100644
index 3d4ff050e21cba9f232fe962b2564d552a8fbe12..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/phpunit.xml
-/vendor
-/build
-/composer.lock
-
diff --git a/vendor/silex/silex/.php_cs.dist b/vendor/silex/silex/.php_cs.dist
deleted file mode 100644
index b82c8aedd81424388273033251f76e45b7100d6c..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/.php_cs.dist
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-return PhpCsFixer\Config::create()
-    ->setRules(array(
-        '@Symfony' => true,
-        '@Symfony:risky' => true,
-        '@PHPUnit48Migration:risky' => true,
-        'php_unit_no_expectation_annotation' => false, // part of `PHPUnitXYMigration:risky` ruleset, to be enabled when PHPUnit 4.x support will be dropped, as we don't want to rewrite exceptions handling twice
-        'array_syntax' => array('syntax' => 'short'),
-        'protected_to_private' => false,
-    ))
-    ->setRiskyAllowed(true)
-    ->setFinder(
-        PhpCsFixer\Finder::create()
-            ->in(__DIR__.'/src/')
-            ->in(__DIR__.'/tests/')
-            ->name('*.php')
-    )
-;
diff --git a/vendor/silex/silex/.travis.yml b/vendor/silex/silex/.travis.yml
deleted file mode 100644
index e89b7bb95f4c692c9c5e48b4b76fb350d3c00cf0..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/.travis.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-language: php
-
-sudo: false
-
-env:
-    global:
-        - SYMFONY_DEPRECATIONS_HELPER=weak
-        - SYMFONY_PHPUNIT_DIR=$HOME/.symfony-phpunit
-
-cache:
-    directories:
-      - $HOME/.composer/cache/files
-      - $HOME/.symfony-phpunit
-
-before_install:
-    - phpenv config-rm xdebug.ini
-    - composer update --no-suggest
-
-install:
-    - ./vendor/bin/simple-phpunit install
-
-script: ./vendor/bin/simple-phpunit
-
-matrix:
-    include:
-        - php: 7.1
-        - php: 7.2
diff --git a/vendor/silex/silex/LICENSE b/vendor/silex/silex/LICENSE
deleted file mode 100644
index b420d7195911b2ee5ab9eb7f1c4fcbe263b8732b..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010-2017 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/silex/silex/README.rst b/vendor/silex/silex/README.rst
deleted file mode 100644
index 77e067dddbae7ee35914938a5d6e3c0022821023..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/README.rst
+++ /dev/null
@@ -1,71 +0,0 @@
-Silex, a simple Web Framework
-=============================
-
-**WARNING**: Silex is in maintenance mode only. Ends of life is set to June
-2018. Read more on `Symfony's blog <http://symfony.com/blog/the-end-of-silex>`_.
-
-Silex is a PHP micro-framework to develop websites based on `Symfony
-components`_:
-
-.. code-block:: php
-
-    <?php
-
-    require_once __DIR__.'/../vendor/autoload.php';
-
-    $app = new Silex\Application();
-
-    $app->get('/hello/{name}', function ($name) use ($app) {
-      return 'Hello '.$app->escape($name);
-    });
-
-    $app->run();
-
-Silex works with PHP 7.1.3 or later.
-
-Installation
-------------
-
-The recommended way to install Silex is through `Composer`_:
-
-.. code-block:: bash
-
-    composer require silex/silex "~2.0"
-
-Alternatively, you can download the `silex.zip`_ file and extract it.
-
-More Information
-----------------
-
-Read the `documentation`_ for more information and `changelog
-<doc/changelog.rst>`_ for upgrading information.
-
-Tests
------
-
-To run the test suite, you need `Composer`_ and `PHPUnit`_:
-
-.. code-block:: bash
-
-    composer install
-    phpunit
-
-Support
--------
-
-If you have a configuration problem use the `silex tag`_ on StackOverflow to ask a question.
-
-If you think there is an actual problem in Silex, please `open an issue`_ if there isn't one already created.
-
-License
--------
-
-Silex is licensed under the MIT license.
-
-.. _Symfony components: http://symfony.com
-.. _Composer:           http://getcomposer.org
-.. _PHPUnit:            https://phpunit.de
-.. _silex.zip:          http://silex.sensiolabs.org/download
-.. _documentation:      http://silex.sensiolabs.org/documentation
-.. _silex tag:          https://stackoverflow.com/questions/tagged/silex
-.. _open an issue:      https://github.com/silexphp/Silex/issues/new
diff --git a/vendor/silex/silex/composer.json b/vendor/silex/silex/composer.json
deleted file mode 100644
index 77d19b5ac988f23884fd55781d86850f70d7778c..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/composer.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
-    "name": "silex/silex",
-    "description": "The PHP micro-framework based on the Symfony Components",
-    "keywords": ["microframework"],
-    "homepage": "http://silex.sensiolabs.org",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Igor Wiedler",
-            "email": "igor@wiedler.ch"
-        }
-    ],
-    "require": {
-        "php": ">=7.1.3",
-        "pimple/pimple": "^3.0",
-        "symfony/event-dispatcher": "^4.0",
-        "symfony/http-foundation": "^4.0",
-        "symfony/http-kernel": "^4.0",
-        "symfony/routing": "^4.0"
-    },
-    "require-dev": {
-        "symfony/asset": "^4.0",
-        "symfony/expression-language": "^4.0",
-        "symfony/security": "^4.0",
-        "symfony/config": "^4.0",
-        "symfony/form": "^4.0",
-        "symfony/browser-kit": "^4.0",
-        "symfony/css-selector": "^4.0",
-        "symfony/debug": "^4.0",
-        "symfony/dom-crawler": "^4.0",
-        "symfony/finder": "^4.0",
-        "symfony/intl": "^4.0",
-        "symfony/monolog-bridge": "^4.0",
-        "symfony/doctrine-bridge": "^4.0",
-        "symfony/options-resolver": "^4.0",
-        "symfony/phpunit-bridge": "^3.2",
-        "symfony/process": "^4.0",
-        "symfony/serializer": "^4.0",
-        "symfony/translation": "^4.0",
-        "symfony/twig-bridge": "^4.0",
-        "symfony/validator": "^4.0",
-        "symfony/var-dumper": "^4.0",
-        "twig/twig": "^2.0",
-        "doctrine/dbal": "^2.2",
-        "swiftmailer/swiftmailer": "^5",
-        "monolog/monolog": "^1.4.1",
-        "symfony/web-link": "^4.0"
-    },
-    "replace": {
-        "silex/api": "self.version",
-        "silex/providers": "self.version"
-    },
-    "autoload": {
-        "psr-4": { "Silex\\": "src/Silex" }
-    },
-    "autoload-dev" : {
-        "psr-4": { "Silex\\Tests\\" : "tests/Silex/Tests" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.3.x-dev"
-        }
-    }
-}
diff --git a/vendor/silex/silex/doc/changelog.rst b/vendor/silex/silex/doc/changelog.rst
deleted file mode 100644
index c39b3c5c7e2824abbf53e65fd7429b41303d3523..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/changelog.rst
+++ /dev/null
@@ -1,419 +0,0 @@
-Changelog
-=========
-
-2.3.0 (2018-04-20)
-------------------
-
- * added support for defining users provider as a service ID
- * fixed error when HttpKernelRuntime is not available
- * allow setting custom status code on exception response with Symfony 3.3+
- * made CSRF extension work with Validator translations domain
- * fixed Security provider context usage
- * dropped support for Twig < 2.0
- * dropped support for PHP < 7.1
- * dropped support for Symfony 2.x and 3.x
- * added support for Symfony 4
- * added support PSR-3 log levels in MonologServiceProvider
- * exposed AuthenticationUtils in SecurityServiceProvider
-
-2.2.3 (2018-02-25)
-------------------
-
- * fixed validator integration into the security provider (order of registration of the validator and security providers does not matter anymore)
- * fixed compatibility issues with Symfony 3.4
-
-2.2.2 (2018-01-12)
-------------------
-
-* [SECURITY] fixed before handlers not executed under mounts
-
-2.2.1 (2017-12-14)
-------------------
-
-* added support for Swiftmailer SSL stream_context_options option
-* fixed usage of namespaces for Twig paths
-
-2.2.0 (2017-07-23)
-------------------
-
-* added json manifest version strategy support
-* fixed EsiFragment constructor
-* fixed RedirectableUrlMatcher compatibility with Symfony
-* fixed compatibility with Pimple 3.2
-* fixed WebTestCase compatibility with PHPUnit 6+
-
-2.1.0 (2017-05-03)
-------------------
-
-* added more options to security.firewalls
-* added WebLink component integration
-* added parameters to configure the Twig core extension behavior
-* fixed deprecation notices with symfony/twig-bridge 3.2+ in TwigServiceProvider
-* added FormRegistry as a service to enable the extension point
-* removed the build scripts
-* fixed some deprecation warnings
-* added support for registering Swiftmailer plugins
-
-2.0.4 (2016-11-06)
-------------------
-
-* fixed twig.app_variable definition
-* added support for latest versions of Twig 1.x and 2.0 (Twig runtime loaders)
-* added support for Symfony 2.3
-
-2.0.3 (2016-08-22)
-------------------
-
-* fixed lazy evaluation of 'monolog.use_error_handler'
-* fixed PHP7 type hint on controllers
-
-2.0.2 (2016-06-14)
-------------------
-
-* fixed Symfony 3.1 deprecations
-
-2.0.1 (2016-05-27)
-------------------
-
-* fixed the silex form extension registration to allow overriding default ones
-* removed support for the obsolete Locale Symfony component (uses the Intl one now)
-* added support for Symfony 3.1
-
-2.0.0 (2016-05-18)
-------------------
-
-* decoupled the exception handler from HttpKernelServiceProvider
-* Switched to BCrypt as the default encoder in the security provider
-* added full support for RequestMatcher
-* added support for Symfony Guard
-* added support for callables in CallbackResolver
-* added FormTrait::namedForm()
-* added support for delivery_addresses, delivery_whitelist, and sender_address
-* added support to register form types / form types extensions / form types guessers as services
-* added support for callable in mounts (allow nested route collection to be built easily)
-* added support for conditions on routes
-* added support for the Symfony VarDumper Component
-* added a global Twig variable (an AppVariable instance)
-* [BC BREAK] CSRF has been moved to a standalone provider (``form.secret`` is not available anymore)
-* added support for the Symfony HttpFoundation Twig bridge extension
-* added support for the Symfony Asset Component
-* bumped minimum version of Symfony to 2.8
-* bumped minimum version of PHP to 5.5.0
-* Updated Pimple to 3.0
-* Updated session listeners to extends HttpKernel ones
-* [BC BREAK] Locale management has been moved to LocaleServiceProvider which must be registered
-  if you want Silex to manage your locale (must also be registered for the translation service provider)
-* [BC BREAK] Provider interfaces moved to Silex\Api namespace, published as
-  separate package via subtree split
-* [BC BREAK] ServiceProviderInterface split in to EventListenerProviderInterface
-  and BootableProviderInterface
-* [BC BREAK] Service Provider support files moved under Silex\Provider
-  namespace, allowing publishing as separate package via sub-tree split
-* ``monolog.exception.logger_filter`` option added to Monolog service provider
-* [BC BREAK] ``$app['request']`` service removed, use ``$app['request_stack']`` instead
-
-1.3.6 (2016-XX-XX)
-------------------
-
-* n/a
-
-1.3.5 (2016-01-06)
-------------------
-
-* fixed typo in SecurityServiceProvider
-
-1.3.4 (2015-09-15)
-------------------
-
-* fixed some new deprecations
-* fixed translation registration for the validators
-
-1.3.3 (2015-09-08)
-------------------
-
-* added support for Symfony 3.0 and Twig 2.0
-* fixed some Form deprecations
-* removed deprecated method call in the exception handler
-* fixed Swiftmailer spool flushing when spool is not enabled
-
-1.3.2 (2015-08-24)
-------------------
-
-* no changes
-
-1.3.1 (2015-08-04)
-------------------
-
-* added missing support for the Expression constraint
-* fixed the possibility to override translations for validator error messages
-* fixed sub-mounts with same name clash
-* fixed session logout handler when a firewall is stateless
-
-1.3.0 (2015-06-05)
-------------------
-
-* added a `$app['user']` to get the current user (security provider)
-* added view handlers
-* added support for the OPTIONS HTTP method
-* added caching for the Translator provider
-* deprecated `$app['exception_handler']->disable()` in favor of `unset($app['exception_handler'])`
-* made Silex compatible with Symfony 2.7 an 2.8 (and keep compatibility with Symfony 2.3, 2.5, and 2.6)
-* removed deprecated TwigCoreExtension class (register the new HttpFragmentServiceProvider instead)
-* bumped minimum version of PHP to 5.3.9
-
-1.2.5 (2015-06-04)
-------------------
-
-* no code changes (last version of the 1.2 branch)
-
-1.2.4 (2015-04-11)
-------------------
-
-* fixed the exception message when mounting a collection that doesn't return a ControllerCollection
-* fixed Symfony dependencies (Silex 1.2 is not compatible with Symfony 2.7)
-
-1.2.3 (2015-01-20)
-------------------
-
-* fixed remember me listener
-* fixed translation files loading when they do not exist
-* allowed global after middlewares to return responses like route specific ones
-
-1.2.2 (2014-09-26)
-------------------
-
-* fixed Translator locale management
-* added support for the $app argument in application middlewares (to make it consistent with route middlewares)
-* added form.types to the Form provider
-
-1.2.1 (2014-07-01)
-------------------
-
-* added support permissions in the Monolog provider
-* fixed Switfmailer spool where the event dispatcher is different from the other ones
-* fixed locale when changing it on the translator itself
-
-1.2.0 (2014-03-29)
-------------------
-
-* Allowed disabling the boot logic of MonologServiceProvider
-* Reverted "convert attributes on the request that actually exist"
-* [BC BREAK] Routes are now always added in the order of their registration (even for mounted routes)
-* Added run() on Route to be able to define the controller code
-* Deprecated TwigCoreExtension (register the new HttpFragmentServiceProvider instead)
-* Added HttpFragmentServiceProvider
-* Allowed a callback to be a method call on a service (before, after, finish, error, on Application; convert, before, after on Controller)
-
-1.1.3 (2013-XX-XX)
-------------------
-
-* Fixed translator locale management
-
-1.1.2 (2013-10-30)
-------------------
-
-* Added missing "security.hide_user_not_found" support in SecurityServiceProvider
-* Fixed event listeners that are registered after the boot via the on() method
-
-1.0.2 (2013-10-30)
-------------------
-
-* Fixed SecurityServiceProvider to use null as a fake controller so that routes can be dumped
-
-1.1.1 (2013-10-11)
-------------------
-
-* Removed or replaced deprecated Symfony code
-* Updated code to take advantages of 2.3 new features
-* Only convert attributes on the request that actually exist.
-
-1.1.0 (2013-07-04)
-------------------
-
-* Support for any ``Psr\Log\LoggerInterface`` as opposed to the monolog-bridge
-  one.
-* Made dispatcher proxy methods ``on``, ``before``, ``after`` and ``error``
-  lazy, so that they will not instantiate the dispatcher early.
-* Dropped support for 2.1 and 2.2 versions of Symfony.
-
-1.0.1 (2013-07-04)
-------------------
-
-* Fixed RedirectableUrlMatcher::redirect() when Silex is configured to use a logger
-* Make ``DoctrineServiceProvider`` multi-db support lazy.
-
-1.0.0 (2013-05-03)
-------------------
-
-* **2013-04-12**: Added support for validators as services.
-
-* **2013-04-01**: Added support for host matching with symfony 2.2::
-
-      $app->match('/', function() {
-          // app-specific action
-      })->host('example.com');
-
-      $app->match('/', function ($user) {
-          // user-specific action
-      })->host('{user}.example.com');
-
-* **2013-03-08**: Added support for form type extensions and guessers as
-  services.
-
-* **2013-03-08**: Added support for remember-me via the
-  ``RememberMeServiceProvider``.
-
-* **2013-02-07**: Added ``Application::sendFile()`` to ease sending
-  ``BinaryFileResponse``.
-
-* **2012-11-05**: Filters have been renamed to application middlewares in the
-  documentation.
-
-* **2012-11-05**: The ``before()``, ``after()``, ``error()``, and ``finish()``
-  listener priorities now set the priority of the underlying Symfony event
-  instead of a custom one before.
-
-* **2012-11-05**: Removing the default exception handler should now be done
-  via its ``disable()`` method:
-
-    Before:
-
-        unset($app['exception_handler']);
-
-    After:
-
-        $app['exception_handler']->disable();
-
-* **2012-07-15**: removed the ``monolog.configure`` service. Use the
-  ``extend`` method instead:
-
-    Before::
-
-        $app['monolog.configure'] = $app->protect(function ($monolog) use ($app) {
-            // do something
-        });
-
-    After::
-
-        $app['monolog'] = $app->share($app->extend('monolog', function($monolog, $app) {
-            // do something
-
-            return $monolog;
-        }));
-
-
-* **2012-06-17**: ``ControllerCollection`` now takes a required route instance
-  as a constructor argument.
-
-    Before::
-
-        $controllers = new ControllerCollection();
-
-    After::
-
-        $controllers = new ControllerCollection(new Route());
-
-        // or even better
-        $controllers = $app['controllers_factory'];
-
-* **2012-06-17**: added application traits for PHP 5.4
-
-* **2012-06-16**: renamed ``request.default_locale`` to ``locale``
-
-* **2012-06-16**: Removed the ``translator.loader`` service. See documentation
-  for how to use XLIFF or YAML-based translation files.
-
-* **2012-06-15**: removed the ``twig.configure`` service. Use the ``extend``
-  method instead:
-
-    Before::
-
-        $app['twig.configure'] = $app->protect(function ($twig) use ($app) {
-            // do something
-        });
-
-    After::
-
-        $app['twig'] = $app->share($app->extend('twig', function($twig, $app) {
-            // do something
-
-            return $twig;
-        }));
-
-* **2012-06-13**: Added a route ``before`` middleware
-
-* **2012-06-13**: Renamed the route ``middleware`` to ``before``
-
-* **2012-06-13**: Added an extension for the Symfony Security component
-
-* **2012-05-31**: Made the ``BrowserKit``, ``CssSelector``, ``DomCrawler``,
-  ``Finder`` and ``Process`` components optional dependencies. Projects that
-  depend on them (e.g. through functional tests) should add those dependencies
-  to their ``composer.json``.
-
-* **2012-05-26**: added ``boot()`` to ``ServiceProviderInterface``.
-
-* **2012-05-26**: Removed ``SymfonyBridgesServiceProvider``. It is now implicit
-  by checking the existence of the bridge.
-
-* **2012-05-26**: Removed the ``translator.messages`` parameter (use
-  ``translator.domains`` instead).
-
-* **2012-05-24**: Removed the ``autoloader`` service (use composer instead).
-  The ``*.class_path`` settings on all the built-in providers have also been
-  removed in favor of Composer.
-
-* **2012-05-21**: Changed error() to allow handling specific exceptions.
-
-* **2012-05-20**: Added a way to define settings on a controller collection.
-
-* **2012-05-20**: The Request instance is not available anymore from the
-  Application after it has been handled.
-
-* **2012-04-01**: Added ``finish`` filters.
-
-* **2012-03-20**: Added ``json`` helper::
-
-        $data = array('some' => 'data');
-        $response = $app->json($data);
-
-* **2012-03-11**: Added route middlewares.
-
-* **2012-03-02**: Switched to use Composer for dependency management.
-
-* **2012-02-27**: Updated to Symfony 2.1 session handling.
-
-* **2012-01-02**: Introduced support for streaming responses.
-
-* **2011-09-22**: ``ExtensionInterface`` has been renamed to
-  ``ServiceProviderInterface``. All built-in extensions have been renamed
-  accordingly (for instance, ``Silex\Extension\TwigExtension`` has been
-  renamed to ``Silex\Provider\TwigServiceProvider``).
-
-* **2011-09-22**: The way reusable applications work has changed. The
-  ``mount()`` method now takes an instance of ``ControllerCollection`` instead
-  of an ``Application`` one.
-
-    Before::
-
-        $app = new Application();
-        $app->get('/bar', function() { return 'foo'; });
-
-        return $app;
-
-    After::
-
-        $app = new ControllerCollection();
-        $app->get('/bar', function() { return 'foo'; });
-
-        return $app;
-
-* **2011-08-08**: The controller method configuration is now done on the Controller itself
-
-    Before::
-
-        $app->match('/', function () { echo 'foo'; }, 'GET|POST');
-
-    After::
-
-        $app->match('/', function () { echo 'foo'; })->method('GET|POST');
diff --git a/vendor/silex/silex/doc/conf.py b/vendor/silex/silex/doc/conf.py
deleted file mode 100644
index dfe355c77ed69f07ff469554892a9b039d8b5346..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/conf.py
+++ /dev/null
@@ -1,17 +0,0 @@
-import sys, os
-from sphinx.highlighting import lexers
-from pygments.lexers.web import PhpLexer
-
-sys.path.append(os.path.abspath('_exts'))
-
-extensions = []
-master_doc = 'index'
-highlight_language = 'php'
-
-project = u'Silex'
-copyright = u'2010 Fabien Potencier'
-
-version = '0'
-release = '0.0.0'
-
-lexers['php'] = PhpLexer(startinline=True)
diff --git a/vendor/silex/silex/doc/contributing.rst b/vendor/silex/silex/doc/contributing.rst
deleted file mode 100644
index 34a339d8647f6c64521a59427efae3a2466f88a5..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/contributing.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-Contributing
-============
-
-We are open to contributions to the Silex code. If you find a bug or want to
-contribute a provider, just follow these steps:
-
-* Fork `the Silex repository <https://github.com/silexphp/Silex>`_;
-
-* Make your feature addition or bug fix;
-
-* Add tests for it;
-
-* Optionally, add some documentation;
-
-* `Send a pull request
-  <https://help.github.com/articles/creating-a-pull-request>`_, to the correct
-  target branch (1.3 for bug fixes, master for new features).
-
-.. note::
-
-    Any code you contribute must be licensed under the MIT
-    License.
-
-Writing Documentation
-=====================
-
-The documentation is written in `reStructuredText
-<http://docutils.sourceforge.net/rst.html>`_ and can be generated using `sphinx
-<http://sphinx-doc.org>`_.
-
-.. code-block:: bash
-
-    $ cd doc
-    $ sphinx-build -b html . build
diff --git a/vendor/silex/silex/doc/cookbook/error_handler.rst b/vendor/silex/silex/doc/cookbook/error_handler.rst
deleted file mode 100644
index d43ca18f46bd7144ac4f73e2cd47b6c743e5a27f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/cookbook/error_handler.rst
+++ /dev/null
@@ -1,50 +0,0 @@
-Converting Errors to Exceptions
-===============================
-
-Silex catches exceptions that are thrown from within a request/response cycle.
-However, it does *not* catch PHP errors and notices. This recipe tells you how
-to catch them by converting them to exceptions.
-
-Registering the ErrorHandler
-----------------------------
-
-The ``Symfony/Debug`` package has an ``ErrorHandler`` class that solves this
-problem. It converts all errors to exceptions, and exceptions are then caught
-by Silex.
-
-Register it by calling the static ``register`` method::
-
-    use Symfony\Component\Debug\ErrorHandler;
-
-    ErrorHandler::register();
-
-It is recommended that you do this as early as possible.
-
-Handling fatal errors
----------------------
-
-To handle fatal errors, you can additionally register a global
-``ExceptionHandler``::
-
-    use Symfony\Component\Debug\ExceptionHandler;
-
-    ExceptionHandler::register();
-
-In production you may want to disable the debug output by passing ``false`` as
-the ``$debug`` argument::
-
-    use Symfony\Component\Debug\ExceptionHandler;
-
-    ExceptionHandler::register(false);
-
-.. note::
-
-    Important caveat when using Silex on a command-line interface:
-    The ``ExceptionHandler`` should not be enabled as it would convert an error
-    to HTML output and return a non-zero exit code::
-
-        use Symfony\Component\Debug\ExceptionHandler;
-
-        if (!in_array(PHP_SAPI, ['cli', 'phpdbg'])) {
-            ExceptionHandler::register();
-        }
diff --git a/vendor/silex/silex/doc/cookbook/form_no_csrf.rst b/vendor/silex/silex/doc/cookbook/form_no_csrf.rst
deleted file mode 100644
index e9bf595e40b9ddb9f04a563386c1f26924472e08..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/cookbook/form_no_csrf.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-Disabling CSRF Protection on a Form using the FormExtension
-===========================================================
-
-The *FormExtension* provides a service for building form in your application
-with the Symfony Form component. When the :doc:`CSRF Service Provider
-</providers/csrf>` is registered, the *FormExtension* uses the CSRF Protection
-avoiding Cross-site request forgery, a method by which a malicious user
-attempts to make your legitimate users unknowingly submit data that they don't
-intend to submit.
-
-You can find more details about CSRF Protection and CSRF token in the
-`Symfony Book
-<http://symfony.com/doc/current/book/forms.html#csrf-protection>`_.
-
-In some cases (for example, when embedding a form in an html email) you might
-want not to use this protection. The easiest way to avoid this is to
-understand that it is possible to give specific options to your form builder
-through the ``createBuilder()`` function.
-
-Example
--------
-
-.. code-block:: php
-
-    $form = $app['form.factory']->createBuilder('form', null, array('csrf_protection' => false));
-
-That's it, your form could be submitted from everywhere without CSRF Protection.
-
-Going further
--------------
-
-This specific example showed how to change the ``csrf_protection`` in the
-``$options`` parameter of the ``createBuilder()`` function. More of them could
-be passed through this parameter, it is as simple as using the Symfony
-``getDefaultOptions()`` method in your form classes. `See more here
-<http://symfony.com/doc/current/book/forms.html#book-form-creating-form-classes>`_.
diff --git a/vendor/silex/silex/doc/cookbook/guard_authentication.rst b/vendor/silex/silex/doc/cookbook/guard_authentication.rst
deleted file mode 100644
index d57d145403b38b968ee03b5d4d5abd3e875eee34..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/cookbook/guard_authentication.rst
+++ /dev/null
@@ -1,184 +0,0 @@
-How to Create a Custom Authentication System with Guard
-=======================================================
-
-Whether you need to build a traditional login form, an API token
-authentication system or you need to integrate with some proprietary
-single-sign-on system, the Guard component can make it easy... and fun!
-
-In this example, you'll build an API token authentication system and
-learn how to work with Guard.
-
-Step 1) Create the Authenticator Class
---------------------------------------
-
-Suppose you have an API where your clients will send an X-AUTH-TOKEN
-header on each request. This token is composed of the username followed
-by a password, separated by a colon (e.g. ``X-AUTH-TOKEN: coolguy:awesomepassword``).
-Your job is to read this, find the associated user (if any) and check
-the password.
-
-To create a custom authentication system, just create a class and make
-it implement GuardAuthenticatorInterface. Or, extend the simpler
-AbstractGuardAuthenticator. This requires you to implement six methods:
-
-.. code-block:: php
-
-    <?php
-
-    namespace App\Security;
-
-    use Symfony\Component\HttpFoundation\Request;
-    use Symfony\Component\HttpFoundation\JsonResponse;
-    use Symfony\Component\Security\Core\User\UserInterface;
-    use Symfony\Component\Security\Core\User\UserProviderInterface;
-    use Symfony\Component\Security\Guard\AbstractGuardAuthenticator;
-    use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
-    use Symfony\Component\Security\Core\Exception\AuthenticationException;
-    use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface;
-
-    class TokenAuthenticator extends AbstractGuardAuthenticator
-    {
-        private $encoderFactory;
-
-        public function __construct(EncoderFactoryInterface $encoderFactory)
-        {
-            $this->encoderFactory = $encoderFactory;
-        }
-
-        public function getCredentials(Request $request)
-        {
-            // Checks if the credential header is provided
-            if (!$token = $request->headers->get('X-AUTH-TOKEN')) {
-                return;
-            }
-
-            // Parse the header or ignore it if the format is incorrect.
-            if (false === strpos($token, ':')) {
-                return;
-            }
-            list($username, $secret) = explode(':', $token, 2);
-
-            return array(
-                'username' => $username,
-                'secret' => $secret,
-            );
-        }
-
-        public function getUser($credentials, UserProviderInterface $userProvider)
-        {
-            return $userProvider->loadUserByUsername($credentials['username']);
-        }
-
-        public function checkCredentials($credentials, UserInterface $user)
-        {
-            // check credentials - e.g. make sure the password is valid
-            // return true to cause authentication success
-
-            $encoder = $this->encoderFactory->getEncoder($user);
-
-            return $encoder->isPasswordValid(
-                $user->getPassword(),
-                $credentials['secret'],
-                $user->getSalt()
-            );
-        }
-
-        public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
-        {
-            // on success, let the request continue
-            return;
-        }
-
-        public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
-        {
-            $data = array(
-                'message' => strtr($exception->getMessageKey(), $exception->getMessageData()),
-
-                // or to translate this message
-                // $this->translator->trans($exception->getMessageKey(), $exception->getMessageData())
-            );
-
-            return new JsonResponse($data, 403);
-        }
-
-        /**
-         * Called when authentication is needed, but it's not sent
-         */
-        public function start(Request $request, AuthenticationException $authException = null)
-        {
-            $data = array(
-                // you might translate this message
-                'message' => 'Authentication Required',
-            );
-
-            return new JsonResponse($data, 401);
-        }
-
-        public function supportsRememberMe()
-        {
-            return false;
-        }
-    }
-
-
-Step 2) Configure the Authenticator
------------------------------------
-
-To finish this, register the class as a service:
-
-.. code-block:: php
-
-    $app['app.token_authenticator'] = function ($app) {
-        return new App\Security\TokenAuthenticator($app['security.encoder_factory']);
-    };
-
-
-Finally, configure your `security.firewalls` key to use this authenticator:
-
-.. code-block:: php
-
-    $app['security.firewalls'] = array(
-        'main' => array(
-            'guard' => array(
-                'authenticators' => array(
-                    'app.token_authenticator'
-                ),
-
-                // Using more than 1 authenticator, you must specify
-                // which one is used as entry point.
-                // 'entry_point' => 'app.token_authenticator',
-            ),
-            // configure where your users come from. Hardcode them, or load them from somewhere
-            // http://silex.sensiolabs.org/doc/providers/security.html#defining-a-custom-user-provider
-            'users' => array(
-            //raw password = foo
-                'victoria' => array('ROLE_USER', '$2y$10$3i9/lVd8UOFIJ6PAMFt8gu3/r5g0qeCJvoSlLCsvMTythye19F77a'),
-            ),
-            // 'anonymous' => true
-        ),
-    );
-
-.. note::
-    You can use many authenticators, they are executed by the order
-    they are configured.
-
-You did it! You now have a fully-working API token authentication
-system. If your homepage required ROLE_USER, then you could test it
-under different conditions:
-
-.. code-block:: bash
-
-    # test with no token
-    curl http://localhost:8000/
-    # {"message":"Authentication Required"}
-
-    # test with a bad token
-    curl -H "X-AUTH-TOKEN: alan" http://localhost:8000/
-    # {"message":"Username could not be found."}
-
-    # test with a working token
-    curl -H "X-AUTH-TOKEN: victoria:foo" http://localhost:8000/
-    # the homepage controller is executed: the page loads normally
-
-For more details read the Symfony cookbook entry on
-`How to Create a Custom Authentication System with Guard <http://symfony.com/doc/current/cookbook/security/guard-authentication.html>`_.
diff --git a/vendor/silex/silex/doc/cookbook/index.rst b/vendor/silex/silex/doc/cookbook/index.rst
deleted file mode 100644
index 53b10fe2cdbed3194db011ff2445c8d58a326ccd..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/cookbook/index.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-Cookbook
-========
-
-The cookbook section contains recipes for solving specific problems.
-
-.. toctree::
-    :maxdepth: 1
-    :hidden:
-
-    json_request_body
-    session_storage
-    form_no_csrf
-    validator_yaml
-    sub_requests
-    error_handler
-    multiple_loggers
-    guard_authentication
-
-Recipes
--------
-
-* :doc:`Accepting a JSON Request Body <json_request_body>` A common need when
-  building a restful API is the ability to accept a JSON encoded entity from
-  the request body.
-
-* :doc:`Using PdoSessionStorage to store Sessions in the Database
-  <session_storage>`.
-
-* :doc:`Disabling the CSRF Protection on a Form using the FormExtension
-  <form_no_csrf>`.
-
-* :doc:`Using YAML to configure Validation <validator_yaml>`.
-
-* :doc:`Making sub-Requests <sub_requests>`.
-
-* :doc:`Converting Errors to Exceptions <error_handler>`.
-
-* :doc:`Using multiple Monolog Loggers <multiple_loggers>`.
-
-* :doc:`How to Create a Custom Authentication System with Guard <guard_authentication>`.
diff --git a/vendor/silex/silex/doc/cookbook/json_request_body.rst b/vendor/silex/silex/doc/cookbook/json_request_body.rst
deleted file mode 100644
index 4715900823e05718395d8b5a252ccd9fbed90165..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/cookbook/json_request_body.rst
+++ /dev/null
@@ -1,95 +0,0 @@
-Accepting a JSON Request Body
-=============================
-
-A common need when building a restful API is the ability to accept a JSON
-encoded entity from the request body.
-
-An example for such an API could be a blog post creation.
-
-Example API
------------
-
-In this example we will create an API for creating a blog post. The following
-is a spec of how we want it to work.
-
-Request
-~~~~~~~
-
-In the request we send the data for the blog post as a JSON object. We also
-indicate that using the ``Content-Type`` header:
-
-.. code-block:: text
-
-    POST /blog/posts
-    Accept: application/json
-    Content-Type: application/json
-    Content-Length: 57
-
-    {"title":"Hello World!","body":"This is my first post!"}
-
-Response
-~~~~~~~~
-
-The server responds with a 201 status code, telling us that the post was
-created. It tells us the ``Content-Type`` of the response, which is also
-JSON:
-
-.. code-block:: text
-
-    HTTP/1.1 201 Created
-    Content-Type: application/json
-    Content-Length: 65
-    Connection: close
-
-    {"id":"1","title":"Hello World!","body":"This is my first post!"}
-
-Parsing the request body
-------------------------
-
-The request body should only be parsed as JSON if the ``Content-Type`` header
-begins with ``application/json``. Since we want to do this for every request,
-the easiest solution is to use an application before middleware.
-
-We simply use ``json_decode`` to parse the content of the request and then
-replace the request data on the ``$request`` object::
-
-    use Symfony\Component\HttpFoundation\Request;
-    use Symfony\Component\HttpFoundation\ParameterBag;
-
-    $app->before(function (Request $request) {
-        if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
-            $data = json_decode($request->getContent(), true);
-            $request->request->replace(is_array($data) ? $data : array());
-        }
-    });
-
-Controller implementation
--------------------------
-
-Our controller will create a new blog post from the data provided and will
-return the post object, including its ``id``, as JSON::
-
-    use Symfony\Component\HttpFoundation\Request;
-    use Symfony\Component\HttpFoundation\Response;
-
-    $app->post('/blog/posts', function (Request $request) use ($app) {
-        $post = array(
-            'title' => $request->request->get('title'),
-            'body'  => $request->request->get('body'),
-        );
-
-        $post['id'] = createPost($post);
-
-        return $app->json($post, 201);
-    });
-
-Manual testing
---------------
-
-In order to manually test our API, we can use the ``curl`` command line
-utility, which allows sending HTTP requests:
-
-.. code-block:: bash
-
-    $ curl http://blog.lo/blog/posts -d '{"title":"Hello World!","body":"This is my first post!"}' -H 'Content-Type: application/json'
-    {"id":"1","title":"Hello World!","body":"This is my first post!"}
diff --git a/vendor/silex/silex/doc/cookbook/multiple_loggers.rst b/vendor/silex/silex/doc/cookbook/multiple_loggers.rst
deleted file mode 100644
index cb10395307d16317652383b4c2069445e44abcfa..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/cookbook/multiple_loggers.rst
+++ /dev/null
@@ -1,69 +0,0 @@
-Using multiple Monolog Loggers
-==============================
-
-Having separate instances of Monolog for different parts of your system is
-often desirable and allows you to configure them independently, allowing for fine
-grained control of where your logging goes and in what detail.
-
-This simple example allows you to quickly configure several monolog instances,
-using the bundled handler, but each with a different channel.
-
-.. code-block:: php
-
-    $app['monolog.factory'] = $app->protect(function ($name) use ($app) {
-        $log = new $app['monolog.logger.class']($name);
-        $log->pushHandler($app['monolog.handler']);
-
-        return $log;
-    });
-
-    foreach (array('auth', 'payments', 'stats') as $channel) {
-        $app['monolog.'.$channel] = function ($app) use ($channel) {
-            return $app['monolog.factory']($channel);
-        };
-    }
-
-As your application grows, or your logging needs for certain areas of the
-system become apparent, it should be straightforward to then configure that
-particular service separately, including your customizations.
-
-.. code-block:: php
-
-    use Monolog\Handler\StreamHandler;
-
-    $app['monolog.payments'] = function ($app) {
-        $log = new $app['monolog.logger.class']('payments');
-        $handler = new StreamHandler($app['monolog.payments.logfile'], $app['monolog.payment.level']);
-        $log->pushHandler($handler);
-
-        return $log;
-    };
-
-Alternatively, you could attempt to make the factory more complicated, and rely
-on some conventions, such as checking for an array of handlers registered with
-the container with the channel name, defaulting to the bundled handler.
-
-.. code-block:: php
-
-    use Monolog\Handler\StreamHandler;
-    use Monolog\Logger;
-
-    $app['monolog.factory'] = $app->protect(function ($name) use ($app) {
-        $log = new $app['monolog.logger.class']($name);
-
-        $handlers = isset($app['monolog.'.$name.'.handlers'])
-            ? $app['monolog.'.$name.'.handlers']
-            : array($app['monolog.handler']);
-
-        foreach ($handlers as $handler) {
-            $log->pushHandler($handler);
-        }
-
-        return $log;
-    });
-
-    $app['monolog.payments.handlers'] = function ($app) {
-        return array(
-            new StreamHandler(__DIR__.'/../payments.log', Logger::DEBUG),
-        );
-    };
diff --git a/vendor/silex/silex/doc/cookbook/session_storage.rst b/vendor/silex/silex/doc/cookbook/session_storage.rst
deleted file mode 100644
index 8c439366c11068b11354dc264777d6ec468c990d..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/cookbook/session_storage.rst
+++ /dev/null
@@ -1,89 +0,0 @@
-Using PdoSessionStorage to store Sessions in the Database
-=========================================================
-
-By default, the :doc:`SessionServiceProvider </providers/session>` writes
-session information in files using Symfony NativeFileSessionStorage. Most
-medium to large websites use a database to store sessions instead of files,
-because databases are easier to use and scale in a multi-webserver environment.
-
-Symfony's `NativeSessionStorage
-<http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.html>`_
-has multiple storage handlers and one of them uses PDO to store sessions,
-`PdoSessionHandler
-<http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.html>`_.
-To use it, replace the ``session.storage.handler`` service in your application
-like explained below.
-
-With a dedicated PDO service
-----------------------------
-
-.. code-block:: php
-
-    use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
-
-    $app->register(new Silex\Provider\SessionServiceProvider());
-
-    $app['pdo.dsn'] = 'mysql:dbname=mydatabase';
-    $app['pdo.user'] = 'myuser';
-    $app['pdo.password'] = 'mypassword';
-
-    $app['session.db_options'] = array(
-        'db_table'    => 'session',
-        'db_id_col'   => 'session_id',
-        'db_data_col' => 'session_value',
-        'db_time_col' => 'session_time',
-    );
-
-    $app['pdo'] = function () use ($app) {
-        return new PDO(
-            $app['pdo.dsn'],
-            $app['pdo.user'],
-            $app['pdo.password']
-        );
-    };
-
-    $app['session.storage.handler'] = function () use ($app) {
-        return new PdoSessionHandler(
-            $app['pdo'],
-            $app['session.db_options']
-        );
-    };
-
-Using the DoctrineServiceProvider
----------------------------------
-
-When using the :doc:`DoctrineServiceProvider </providers/doctrine>` You don't
-have to make another database connection, simply pass the getWrappedConnection method.
-
-.. code-block:: php
-
-    use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
-
-    $app->register(new Silex\Provider\SessionServiceProvider());
-
-    $app['session.storage.handler'] = function () use ($app) {
-        return new PdoSessionHandler(
-            $app['db']->getWrappedConnection(),
-            array(
-                'db_table'        => 'session',
-                'db_id_col'       => 'session_id',
-                'db_data_col'     => 'session_value',
-                'db_lifetime_col' => 'session_lifetime',
-                'db_time_col'     => 'session_time',
-            )
-        );
-    };
-
-Database structure
-------------------
-
-PdoSessionStorage needs a database table with 3 columns:
-
-* ``session_id``: ID column (VARCHAR(255) or larger)
-* ``session_value``: Value column (TEXT or CLOB)
-* ``session_lifetime``: Lifetime column (INTEGER)
-* ``session_time``: Time column (INTEGER)
-
-You can find examples of SQL statements to create the session table in the
-`Symfony cookbook
-<http://symfony.com/doc/current/cookbook/configuration/pdo_session_storage.html#example-sql-statements>`_
diff --git a/vendor/silex/silex/doc/cookbook/sub_requests.rst b/vendor/silex/silex/doc/cookbook/sub_requests.rst
deleted file mode 100644
index 95d3913624f8cce5f91dbfb89fd7153ac9149b8b..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/cookbook/sub_requests.rst
+++ /dev/null
@@ -1,137 +0,0 @@
-Making sub-Requests
-===================
-
-Since Silex is based on the ``HttpKernelInterface``, it allows you to simulate
-requests against your application. This means that you can embed a page within
-another, it also allows you to forward a request which is essentially an
-internal redirect that does not change the URL.
-
-Basics
-------
-
-You can make a sub-request by calling the ``handle`` method on the
-``Application``. This method takes three arguments:
-
-* ``$request``: An instance of the ``Request`` class which represents the
-   HTTP request.
-
-* ``$type``: Must be either ``HttpKernelInterface::MASTER_REQUEST`` or
-  ``HttpKernelInterface::SUB_REQUEST``. Certain listeners are only executed for
-  the master request, so it's important that this is set to ``SUB_REQUEST``.
-
-* ``$catch``: Catches exceptions and turns them into a response with status code
-  ``500``. This argument defaults to ``true``. For sub-requests you will most
-  likely want to set it to ``false``.
-
-By calling ``handle``, you can make a sub-request manually. Here's an example::
-
-    use Symfony\Component\HttpFoundation\Request;
-    use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-    $subRequest = Request::create('/');
-    $response = $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST, false);
-
-There's some more things that you need to keep in mind though. In most cases
-you will want to forward some parts of the current master request to the
-sub-request like cookies, server information, or the session.
-
-Here is a more advanced example that forwards said information (``$request``
-holds the master request)::
-
-    use Symfony\Component\HttpFoundation\Request;
-    use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-    $subRequest = Request::create('/', 'GET', array(), $request->cookies->all(), array(), $request->server->all());
-    if ($request->getSession()) {
-        $subRequest->setSession($request->getSession());
-    }
-
-    $response = $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST, false);
-
-To forward this response to the client, you can simply return it from a
-controller::
-
-    use Silex\Application;
-    use Symfony\Component\HttpFoundation\Request;
-    use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-    $app->get('/foo', function (Application $app, Request $request) {
-        $subRequest = Request::create('/', ...);
-        $response = $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST, false);
-
-        return $response;
-    });
-
-If you want to embed the response as part of a larger page you can call
-``Response::getContent``::
-
-    $header = ...;
-    $footer = ...;
-    $body = $response->getContent();
-
-    return $header.$body.$footer;
-
-Rendering pages in Twig templates
----------------------------------
-
-The :doc:`TwigServiceProvider </providers/twig>` provides a ``render``
-function that you can use in Twig templates. It gives you a convenient way to
-embed pages.
-
-.. code-block:: jinja
-
-    {{ render('/sidebar') }}
-
-For details, refer to the :doc:`TwigServiceProvider </providers/twig>` docs.
-
-Edge Side Includes
-------------------
-
-You can use ESI either through the :doc:`HttpCacheServiceProvider
-</providers/http_cache>` or a reverse proxy cache such as Varnish. This also
-allows you to embed pages, however it also gives you the benefit of caching
-parts of the page.
-
-Here is an example of how you would embed a page via ESI:
-
-.. code-block:: jinja
-
-    <esi:include src="/sidebar" />
-
-For details, refer to the :doc:`HttpCacheServiceProvider
-</providers/http_cache>` docs.
-
-Dealing with the request base URL
----------------------------------
-
-One thing to watch out for is the base URL. If your application is not
-hosted at the webroot of your web server, then you may have an URL like
-``http://example.org/foo/index.php/articles/42``.
-
-In this case, ``/foo/index.php`` is your request base path. Silex accounts for
-this path prefix in the routing process, it reads it from
-``$request->server``. In the context of sub-requests this can lead to issues,
-because if you do not prepend the base path the request could mistake a part
-of the path you want to match as the base path and cut it off.
-
-You can prevent that from happening by always prepending the base path when
-constructing a request::
-
-    $url = $request->getUriForPath('/');
-    $subRequest = Request::create($url, 'GET', array(), $request->cookies->all(), array(), $request->server->all());
-
-This is something to be aware of when making sub-requests by hand.
-
-Services depending on the Request
----------------------------------
-
-The container is a concept that is global to a Silex application, since the
-application object **is** the container. Any request that is run against an
-application will re-use the same set of services. Since these services are
-mutable, code in a master request can affect the sub-requests and vice versa.
-Any services depending on the ``request`` service will store the first request
-that they get (could be master or sub-request), and keep using it, even if
-that request is already over.
-
-Instead of injecting the ``request`` service, you should always inject the
-``request_stack`` one instead.
diff --git a/vendor/silex/silex/doc/cookbook/validator_yaml.rst b/vendor/silex/silex/doc/cookbook/validator_yaml.rst
deleted file mode 100644
index 10a41fcfa963835e25fb672b96e8c006b830e5aa..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/cookbook/validator_yaml.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-Using YAML to configure Validation
-==================================
-
-Simplicity is at the heart of Silex so there is no out of the box solution to
-use YAML files for validation. But this doesn't mean that this is not
-possible. Let's see how to do it.
-
-First, you need to install the YAML Component:
-
-.. code-block:: bash
-
-    composer require symfony/yaml
-
-Next, you need to tell the Validation Service that you are not using
-``StaticMethodLoader`` to load your class metadata but a YAML file::
-
-    $app->register(new ValidatorServiceProvider());
-
-    $app['validator.mapping.class_metadata_factory'] = new Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory(
-        new Symfony\Component\Validator\Mapping\Loader\YamlFileLoader(__DIR__.'/validation.yml')
-    );
-
-Now, we can replace the usage of the static method and move all the validation
-rules to ``validation.yml``:
-
-.. code-block:: yaml
-
-    # validation.yml
-    Post:
-      properties:
-        title:
-          - NotNull: ~
-          - NotBlank: ~
-        body:
-          - Min: 100
diff --git a/vendor/silex/silex/doc/index.rst b/vendor/silex/silex/doc/index.rst
deleted file mode 100644
index d1a851d0a532ae28bad9cc45439fdbae5026a9f0..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/index.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-The Book
-========
-
-.. toctree::
-    :maxdepth: 1
-
-    intro
-    usage
-    middlewares
-    organizing_controllers
-    services
-    providers
-    testing
-    cookbook/index
-    internals
-    contributing
-    providers/index
-    web_servers
-    changelog
diff --git a/vendor/silex/silex/doc/internals.rst b/vendor/silex/silex/doc/internals.rst
deleted file mode 100644
index c7ffac8cec696f57d1ac6616a9fd7e2979bbce55..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/internals.rst
+++ /dev/null
@@ -1,84 +0,0 @@
-Internals
-=========
-
-This chapter will tell you how Silex works internally.
-
-Silex
------
-
-Application
-~~~~~~~~~~~
-
-The application is the main interface to Silex. It implements Symfony's
-`HttpKernelInterface
-<http://api.symfony.com/master/Symfony/Component/HttpKernel/HttpKernelInterface.html>`_,
-so you can pass a `Request
-<http://api.symfony.com/master/Symfony/Component/HttpFoundation/Request.html>`_
-to the ``handle`` method and it will return a `Response
-<http://api.symfony.com/master/Symfony/Component/HttpFoundation/Response.html>`_.
-
-It extends the ``Pimple`` service container, allowing for flexibility on the
-outside as well as the inside. You could replace any service, and you are also
-able to read them.
-
-The application makes strong use of the `EventDispatcher
-<http://api.symfony.com/master/Symfony/Component/EventDispatcher/EventDispatcher
-.html>`_ to hook into the Symfony `HttpKernel
-<http://api.symfony.com/master/Symfony/Component/HttpKernel/HttpKernel.html>`_
-events. This allows fetching the ``Request``, converting string responses into
-``Response`` objects and handling Exceptions. We also use it to dispatch some
-custom events like before/after middlewares and errors.
-
-Controller
-~~~~~~~~~~
-
-The Symfony `Route
-<http://api.symfony.com/master/Symfony/Component/Routing/Route.html>`_ is
-actually quite powerful. Routes can be named, which allows for URL generation.
-They can also have requirements for the variable parts. In order to allow
-setting these through a nice interface, the ``match`` method (which is used by
-``get``, ``post``, etc.) returns an instance of the ``Controller``, which
-wraps a route.
-
-ControllerCollection
-~~~~~~~~~~~~~~~~~~~~
-
-One of the goals of exposing the `RouteCollection
-<http://api.symfony.com/master/Symfony/Component/Routing/RouteCollection.html>`_
-was to make it mutable, so providers could add stuff to it. The challenge here
-is the fact that routes know nothing about their name. The name only has
-meaning in context of the ``RouteCollection`` and cannot be changed.
-
-To solve this challenge we came up with a staging area for routes. The
-``ControllerCollection`` holds the controllers until ``flush`` is called, at
-which point the routes are added to the ``RouteCollection``. Also, the
-controllers are then frozen. This means that they can no longer be modified
-and will throw an Exception if you try to do so.
-
-Unfortunately no good way for flushing implicitly could be found, which is why
-flushing is now always explicit. The Application will flush, but if you want
-to read the ``ControllerCollection`` before the request takes place, you will
-have to call flush yourself.
-
-The ``Application`` provides a shortcut ``flush`` method for flushing the
-``ControllerCollection``.
-
-.. tip::
-
-    Instead of creating an instance of ``RouteCollection`` yourself, use the
-    ``$app['controllers_factory']`` factory instead.
-
-Symfony
--------
-
-Following Symfony components are used by Silex:
-
-* **HttpFoundation**: For ``Request`` and ``Response``.
-
-* **HttpKernel**: Because we need a heart.
-
-* **Routing**: For matching defined routes.
-
-* **EventDispatcher**: For hooking into the HttpKernel.
-
-For more information, `check out the Symfony website <http://symfony.com/>`_.
diff --git a/vendor/silex/silex/doc/intro.rst b/vendor/silex/silex/doc/intro.rst
deleted file mode 100644
index 2ab2bc3000847d85c7881e2a9c32b8fb95c5d65f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/intro.rst
+++ /dev/null
@@ -1,50 +0,0 @@
-Introduction
-============
-
-Silex is a PHP microframework. It is built on the shoulders of `Symfony`_ and
-`Pimple`_ and also inspired by `Sinatra`_.
-
-Silex aims to be:
-
-* *Concise*: Silex exposes an intuitive and concise API.
-
-* *Extensible*: Silex has an extension system based around the Pimple
-  service-container that makes it easy to tie in third party libraries.
-
-* *Testable*: Silex uses Symfony's HttpKernel which abstracts request and
-  response. This makes it very easy to test apps and the framework itself. It
-  also respects the HTTP specification and encourages its proper use.
-
-In a nutshell, you define controllers and map them to routes, all in one step.
-
-Usage
------
-
-.. code-block:: php
-
-    <?php
-
-    // web/index.php
-    require_once __DIR__.'/../vendor/autoload.php';
-
-    $app = new Silex\Application();
-
-    $app->get('/hello/{name}', function ($name) use ($app) {
-        return 'Hello '.$app->escape($name);
-    });
-
-    $app->run();
-
-All that is needed to get access to the Framework is to include the
-autoloader.
-
-Next, a route for ``/hello/{name}`` that matches for ``GET`` requests is
-defined. When the route matches, the function is executed and the return value
-is sent back to the client.
-
-Finally, the app is run. Visit ``/hello/world`` to see the result. It's really
-that easy!
-
-.. _Symfony: http://symfony.com/
-.. _Pimple: http://pimple.sensiolabs.org/
-.. _Sinatra: http://www.sinatrarb.com/
diff --git a/vendor/silex/silex/doc/middlewares.rst b/vendor/silex/silex/doc/middlewares.rst
deleted file mode 100644
index c5c17cf0d4583011958ac7bfbfd060da983d63a4..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/middlewares.rst
+++ /dev/null
@@ -1,162 +0,0 @@
-Middleware
-==========
-
-Silex allows you to run code, that changes the default Silex behavior, at
-different stages during the handling of a request through *middleware*:
-
-* *Application middleware* is triggered independently of the current handled
-  request;
-
-* *Route middleware* is triggered when its associated route is matched.
-
-Application Middleware
-----------------------
-
-Application middleware is only run for the "master" Request.
-
-Before Middleware
-~~~~~~~~~~~~~~~~~
-
-A *before* application middleware allows you to tweak the Request before the
-controller is executed::
-
-    $app->before(function (Request $request, Application $app) {
-        // ...
-    });
-
-By default, the middleware is run after the routing and the security.
-
-If you want your middleware to be run even if an exception is thrown early on
-(on a 404 or 403 error for instance), then, you need to register it as an
-early event::
-
-    $app->before(function (Request $request, Application $app) {
-        // ...
-    }, Application::EARLY_EVENT);
-
-In this case, the routing and the security won't have been executed, and so you
-won't have access to the locale, the current route, or the security user.
-
-.. note::
-
-    The before middleware is an event registered on the Symfony *request*
-    event.
-
-After Middleware
-~~~~~~~~~~~~~~~~
-
-An *after* application middleware allows you to tweak the Response before it
-is sent to the client::
-
-    $app->after(function (Request $request, Response $response) {
-        // ...
-    });
-
-.. note::
-
-    The after middleware is an event registered on the Symfony *response*
-    event.
-
-Finish Middleware
-~~~~~~~~~~~~~~~~~
-
-A *finish* application middleware allows you to execute tasks after the
-Response has been sent to the client (like sending emails or logging)::
-
-    $app->finish(function (Request $request, Response $response) {
-        // ...
-        // Warning: modifications to the Request or Response will be ignored
-    });
-
-.. note::
-
-    The finish middleware is an event registered on the Symfony *terminate*
-    event.
-
-Route Middleware
-----------------
-
-Route middleware is added to routes or route collections and it is only
-triggered when the corresponding route is matched. You can also stack them::
-
-    $app->get('/somewhere', function () {
-        // ...
-    })
-    ->before($before1)
-    ->before($before2)
-    ->after($after1)
-    ->after($after2)
-    ;
-
-Before Middleware
-~~~~~~~~~~~~~~~~~
-
-A *before* route middleware is fired just before the route callback, but after
-the *before* application middleware::
-
-    $before = function (Request $request, Application $app) {
-        // ...
-    };
-
-    $app->get('/somewhere', function () {
-        // ...
-    })
-    ->before($before);
-
-After Middleware
-~~~~~~~~~~~~~~~~
-
-An *after* route middleware is fired just after the route callback, but before
-the application *after* application middleware::
-
-    $after = function (Request $request, Response $response, Application $app) {
-        // ...
-    };
-
-    $app->get('/somewhere', function () {
-        // ...
-    })
-    ->after($after);
-
-Middleware Priority
--------------------
-
-You can add as much middleware as you want, in which case they are triggered
-in the same order as you added them.
-
-You can explicitly control the priority of your middleware by passing an
-additional argument to the registration methods::
-
-    $app->before(function (Request $request) {
-        // ...
-    }, 32);
-
-As a convenience, two constants allow you to register an event as early as
-possible or as late as possible::
-
-    $app->before(function (Request $request) {
-        // ...
-    }, Application::EARLY_EVENT);
-
-    $app->before(function (Request $request) {
-        // ...
-    }, Application::LATE_EVENT);
-
-Short-circuiting the Controller
--------------------------------
-
-If a *before* middleware returns a ``Response`` object, the request handling is
-short-circuited (the next middleware won't be run, nor the route
-callback), and the Response is passed to the *after* middleware right away::
-
-    $app->before(function (Request $request) {
-        // redirect the user to the login screen if access to the Resource is protected
-        if (...) {
-            return new RedirectResponse('/login');
-        }
-    });
-
-.. note::
-
-    A ``RuntimeException`` is thrown if a before middleware does not return a
-    Response or ``null``.
diff --git a/vendor/silex/silex/doc/organizing_controllers.rst b/vendor/silex/silex/doc/organizing_controllers.rst
deleted file mode 100644
index 89fc68674a5e70570794e59ee26c908ff6c4b4d4..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/organizing_controllers.rst
+++ /dev/null
@@ -1,84 +0,0 @@
-Organizing Controllers
-======================
-
-When your application starts to define too many controllers, you might want to
-group them logically::
-
-    // define controllers for a blog
-    $blog = $app['controllers_factory'];
-    $blog->get('/', function () {
-        return 'Blog home page';
-    });
-    // ...
-
-    // define controllers for a forum
-    $forum = $app['controllers_factory'];
-    $forum->get('/', function () {
-        return 'Forum home page';
-    });
-
-    // define "global" controllers
-    $app->get('/', function () {
-        return 'Main home page';
-    });
-
-    $app->mount('/blog', $blog);
-    $app->mount('/forum', $forum);
-
-    // define controllers for an admin
-    $app->mount('/admin', function ($admin) {
-        // recursively mount
-        $admin->mount('/blog', function ($user) {
-            $user->get('/', function () {
-                return 'Admin Blog home page';
-            });
-        });
-    });
-
-.. note::
-
-    ``$app['controllers_factory']`` is a factory that returns a new instance
-    of ``ControllerCollection`` when used.
-
-``mount()`` prefixes all routes with the given prefix and merges them into the
-main Application. So, ``/`` will map to the main home page, ``/blog/`` to the
-blog home page, ``/forum/`` to the forum home page, and ``/admin/blog/`` to the
-admin blog home page.
-
-.. caution::
-
-    When mounting a route collection under ``/blog``, it is not possible to
-    define a route for the ``/blog`` URL. The shortest possible URL is
-    ``/blog/``.
-
-.. note::
-
-    When calling ``get()``, ``match()``, or any other HTTP methods on the
-    Application, you are in fact calling them on a default instance of
-    ``ControllerCollection`` (stored in ``$app['controllers']``).
-
-Another benefit is the ability to apply settings on a set of controllers very
-easily. Building on the example from the middleware section, here is how you
-would secure all controllers for the backend collection::
-
-    $backend = $app['controllers_factory'];
-
-    // ensure that all controllers require logged-in users
-    $backend->before($mustBeLogged);
-
-.. tip::
-
-    For a better readability, you can split each controller collection into a
-    separate file::
-
-        // blog.php
-        $blog = $app['controllers_factory'];
-        $blog->get('/', function () { return 'Blog home page'; });
-
-        return $blog;
-
-        // app.php
-        $app->mount('/blog', include 'blog.php');
-
-    Instead of requiring a file, you can also create a :ref:`Controller
-    provider <controller-providers>`.
diff --git a/vendor/silex/silex/doc/providers.rst b/vendor/silex/silex/doc/providers.rst
deleted file mode 100644
index c3d049db7559e687ab89e60d5d95cd79ad4323ff..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers.rst
+++ /dev/null
@@ -1,262 +0,0 @@
-Providers
-=========
-
-Providers allow the developer to reuse parts of an application into another
-one. Silex provides two types of providers defined by two interfaces:
-``ServiceProviderInterface`` for services and ``ControllerProviderInterface``
-for controllers.
-
-Service Providers
------------------
-
-Loading providers
-~~~~~~~~~~~~~~~~~
-
-In order to load and use a service provider, you must register it on the
-application::
-
-    $app = new Silex\Application();
-
-    $app->register(new Acme\DatabaseServiceProvider());
-
-You can also provide some parameters as a second argument. These will be set
-**after** the provider is registered, but **before** it is booted::
-
-    $app->register(new Acme\DatabaseServiceProvider(), array(
-        'database.dsn'      => 'mysql:host=localhost;dbname=myapp',
-        'database.user'     => 'root',
-        'database.password' => 'secret_root_password',
-    ));
-
-Conventions
-~~~~~~~~~~~
-
-You need to watch out in what order you do certain things when interacting
-with providers. Just keep these rules in mind:
-
-* Overriding existing services must occur **after** the provider is
-  registered.
-
-  *Reason: If the service already exists, the provider will overwrite it.*
-
-* You can set parameters any time **after** the provider is registered, but
-  **before** the service is accessed.
-
-  *Reason: Providers can set default values for parameters. Just like with
-  services, the provider will overwrite existing values.*
-
-Included providers
-~~~~~~~~~~~~~~~~~~
-
-There are a few providers that you get out of the box. All of these are within
-the ``Silex\Provider`` namespace:
-
-* :doc:`AssetServiceProvider <providers/asset>`
-* :doc:`CsrfServiceProvider <providers/csrf>`
-* :doc:`DoctrineServiceProvider <providers/doctrine>`
-* :doc:`FormServiceProvider <providers/form>`
-* :doc:`HttpCacheServiceProvider <providers/http_cache>`
-* :doc:`HttpFragmentServiceProvider <providers/http_fragment>`
-* :doc:`LocaleServiceProvider <providers/locale>`
-* :doc:`MonologServiceProvider <providers/monolog>`
-* :doc:`RememberMeServiceProvider <providers/remember_me>`
-* :doc:`SecurityServiceProvider <providers/security>`
-* :doc:`SerializerServiceProvider <providers/serializer>`
-* :doc:`ServiceControllerServiceProvider <providers/service_controller>`
-* :doc:`SessionServiceProvider <providers/session>`
-* :doc:`SwiftmailerServiceProvider <providers/swiftmailer>`
-* :doc:`TranslationServiceProvider <providers/translation>`
-* :doc:`TwigServiceProvider <providers/twig>`
-* :doc:`ValidatorServiceProvider <providers/validator>`
-* :doc:`VarDumperServiceProvider <providers/var_dumper>`
-
-.. note::
-
-    The Silex core team maintains a `WebProfiler
-    <https://github.com/silexphp/Silex-WebProfiler>`_ provider that helps debug
-    code in the development environment thanks to the Symfony web debug toolbar
-    and the Symfony profiler.
-
-Third party providers
-~~~~~~~~~~~~~~~~~~~~~
-
-Some service providers are developed by the community. Those third-party
-providers are listed on `Silex' repository wiki
-<https://github.com/silexphp/Silex/wiki/Third-Party-ServiceProviders-for-Silex-2.x>`_.
-
-You are encouraged to share yours.
-
-Creating a provider
-~~~~~~~~~~~~~~~~~~~
-
-Providers must implement the ``Pimple\ServiceProviderInterface``::
-
-    interface ServiceProviderInterface
-    {
-        public function register(Container $container);
-    }
-
-This is very straight forward, just create a new class that implements the
-register method. In the ``register()`` method, you can define services on the
-application which then may make use of other services and parameters.
-
-.. tip::
-
-    The ``Pimple\ServiceProviderInterface`` belongs to the Pimple package, so
-    take care to only use the API of ``Pimple\Container`` within your
-    ``register`` method. Not only is this a good practice due to the way Pimple
-    and Silex work, but may allow your provider to be used outside of Silex.
-
-Optionally, your service provider can implement the
-``Silex\Api\BootableProviderInterface``. A bootable provider must
-implement the ``boot()`` method, with which you can configure the application, just
-before it handles a request::
-
-    interface BootableProviderInterface
-    {
-        function boot(Application $app);
-    }
-
-Another optional interface, is the ``Silex\Api\EventListenerProviderInterface``.
-This interface contains the ``subscribe()`` method, which allows your provider to
-subscribe event listener with Silex's EventDispatcher, just before it handles a
-request::
-
-    interface EventListenerProviderInterface
-    {
-        function subscribe(Container $app, EventDispatcherInterface $dispatcher);
-    }
-
-Here is an example of such a provider::
-
-    namespace Acme;
-
-    use Pimple\Container;
-    use Pimple\ServiceProviderInterface;
-    use Silex\Application;
-    use Silex\Api\BootableProviderInterface;
-    use Silex\Api\EventListenerProviderInterface;
-    use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-    use Symfony\Component\HttpKernel\KernelEvents;
-    use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-
-    class HelloServiceProvider implements ServiceProviderInterface, BootableProviderInterface, EventListenerProviderInterface
-    {
-        public function register(Container $app)
-        {
-            $app['hello'] = $app->protect(function ($name) use ($app) {
-                $default = $app['hello.default_name'] ? $app['hello.default_name'] : '';
-                $name = $name ?: $default;
-
-                return 'Hello '.$app->escape($name);
-            });
-        }
-
-        public function boot(Application $app)
-        {
-            // do something
-        }
-
-        public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-        {
-            $dispatcher->addListener(KernelEvents::REQUEST, function(FilterResponseEvent $event) use ($app) {
-                // do something
-            });
-        }
-    }
-
-This class provides a ``hello`` service which is a protected closure. It takes
-a ``name`` argument and will return ``hello.default_name`` if no name is
-given. If the default is also missing, it will use an empty string.
-
-You can now use this provider as follows::
-
-    use Symfony\Component\HttpFoundation\Request;
-
-    $app = new Silex\Application();
-
-    $app->register(new Acme\HelloServiceProvider(), array(
-        'hello.default_name' => 'Igor',
-    ));
-
-    $app->get('/hello', function (Request $request) use ($app) {
-        $name = $request->get('name');
-
-        return $app['hello']($name);
-    });
-
-In this example we are getting the ``name`` parameter from the query string,
-so the request path would have to be ``/hello?name=Fabien``.
-
-.. _controller-providers:
-
-Controller Providers
---------------------
-
-Loading providers
-~~~~~~~~~~~~~~~~~
-
-In order to load and use a controller provider, you must "mount" its
-controllers under a path::
-
-    $app = new Silex\Application();
-
-    $app->mount('/blog', new Acme\BlogControllerProvider());
-
-All controllers defined by the provider will now be available under the
-``/blog`` path.
-
-Creating a provider
-~~~~~~~~~~~~~~~~~~~
-
-Providers must implement the ``Silex\Api\ControllerProviderInterface``::
-
-    interface ControllerProviderInterface
-    {
-        public function connect(Application $app);
-    }
-
-Here is an example of such a provider::
-
-    namespace Acme;
-
-    use Silex\Application;
-    use Silex\Api\ControllerProviderInterface;
-
-    class HelloControllerProvider implements ControllerProviderInterface
-    {
-        public function connect(Application $app)
-        {
-            // creates a new controller based on the default route
-            $controllers = $app['controllers_factory'];
-
-            $controllers->get('/', function (Application $app) {
-                return $app->redirect('/hello');
-            });
-
-            return $controllers;
-        }
-    }
-
-The ``connect`` method must return an instance of ``ControllerCollection``.
-``ControllerCollection`` is the class where all controller related methods are
-defined (like ``get``, ``post``, ``match``, ...).
-
-.. tip::
-
-    The ``Application`` class acts in fact as a proxy for these methods.
-
-You can use this provider as follows::
-
-    $app = new Silex\Application();
-
-    $app->mount('/blog', new Acme\HelloControllerProvider());
-
-In this example, the ``/blog/`` path now references the controller defined in
-the provider.
-
-.. tip::
-
-    You can also define a provider that implements both the service and the
-    controller provider interface and package in the same class the services
-    needed to make your controllers work.
diff --git a/vendor/silex/silex/doc/providers/asset.rst b/vendor/silex/silex/doc/providers/asset.rst
deleted file mode 100644
index 17b49c8be0cc2c26e44e70a5269dc7bd06824196..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/asset.rst
+++ /dev/null
@@ -1,79 +0,0 @@
-Asset
-=====
-
-The *AssetServiceProvider* provides a way to manage URL generation and
-versioning of web assets such as CSS stylesheets, JavaScript files and image
-files.
-
-Parameters
-----------
-
-* **assets.version**: Default version for assets.
-
-* **assets.version_format** (optional): Default format for assets.
-
-* **assets.base_path**: Default path to prepend to all assets without a package.
-
-* **assets.base_urls**: (Alternative to ``assets.base_path``) List of base URLs
-  to choose from to prepend to assets without a package.
-
-* **assets.named_packages** (optional): Named packages. Keys are the package
-  names and values the configuration (supported keys are ``version``,
-  ``version_format``, ``base_urls``, and ``base_path``).
-
-* **assets.json_manifest_path** (optional): Absolute path to a `JSON version manifest
-  <https://symfony.com/blog/new-in-symfony-3-3-manifest-based-asset-versioning>`_.
-
-Services
---------
-
-* **assets.packages**: The asset service.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\AssetServiceProvider(), array(
-        'assets.version' => 'v1',
-        'assets.version_format' => '%s?version=%s',
-        'assets.named_packages' => array(
-            'css' => array('version' => 'css2', 'base_path' => '/whatever-makes-sense'),
-            'images' => array('base_urls' => array('https://img.example.com')),
-        ),
-    ));
-
-.. note::
-
-    Add the Symfony Asset Component as a dependency:
-
-    .. code-block:: bash
-
-        composer require symfony/asset
-
-    If you want to use assets in your Twig templates, you must also install the
-    Symfony Twig Bridge:
-
-    .. code-block:: bash
-
-        composer require symfony/twig-bridge
-
-Usage
------
-
-The AssetServiceProvider is mostly useful with the Twig provider using the
-``asset()`` method. It takes two arguments. In the case of named
-packages, the first is the path relative to the base_path specified in the
-package definition and the second is the package name. For unmamed packages,
-there is only one argument, the path relative to the assets folder:
-
-.. code-block:: jinja
-
-    {{ asset('/css/foo.png') }}
-    {{ asset('/css/foo.css', 'css') }}
-    {{ asset('/img/foo.png', 'images') }}
-
-    {{ asset_version('/css/foo.png') }}
-
-For more information, check out the `Asset Component documentation
-<https://symfony.com/doc/current/components/asset/introduction.html>`_.
diff --git a/vendor/silex/silex/doc/providers/csrf.rst b/vendor/silex/silex/doc/providers/csrf.rst
deleted file mode 100644
index 057e79d52791aa3ead7d08c973f482f3013eb5a8..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/csrf.rst
+++ /dev/null
@@ -1,54 +0,0 @@
-CSRF
-====
-
-The *CsrfServiceProvider* provides a service for building forms in your
-application with the Symfony Form component.
-
-Parameters
-----------
-
-* **csrf.session_namespace** (optional): The namespace under which the token
-  is stored in the session. Defaults to ``_csrf``.
-
-Services
---------
-
-* **csrf.token_manager**: An instance of an implementation of the
-  `CsrfTokenManagerInterface
-  <http://api.symfony.com/master/Symfony/Component/Security/Csrf/CsrfTokenManagerInterface.html>`_,
-
-Registering
------------
-
-.. code-block:: php
-
-    use Silex\Provider\CsrfServiceProvider;
-
-    $app->register(new CsrfServiceProvider());
-
-.. note::
-
-    Add the Symfony's `Security CSRF Component
-    <http://symfony.com/doc/current/components/security/index.html>`_ as a
-    dependency:
-
-    .. code-block:: bash
-
-        composer require symfony/security-csrf
-
-Usage
------
-
-When the CSRF Service Provider is registered, all forms created via the Form
-Service Provider are protected against CSRF by default.
-
-You can also use the CSRF protection without using the Symfony Form component.
-If, for example, you're doing a DELETE action, create a CSRF token to use in
-your code::
-
-    use Symfony\Component\Security\Csrf\CsrfToken;
-    $csrfToken = $app['csrf.token_manager']->getToken('token_id'); //'TOKEN'
-
-Then check it::
-
-    $app['csrf.token_manager']->isTokenValid(new CsrfToken('token_id', 'TOKEN'));
diff --git a/vendor/silex/silex/doc/providers/doctrine.rst b/vendor/silex/silex/doc/providers/doctrine.rst
deleted file mode 100644
index 0ef167b7815cada61444df48c5dc5efe1d03ad4e..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/doctrine.rst
+++ /dev/null
@@ -1,137 +0,0 @@
-Doctrine
-========
-
-The *DoctrineServiceProvider* provides integration with the `Doctrine DBAL
-<http://www.doctrine-project.org/projects/dbal>`_ for easy database access
-(Doctrine ORM integration is **not** supplied).
-
-Parameters
-----------
-
-* **db.options**: Array of Doctrine DBAL options.
-
-  These options are available:
-
-  * **driver**: The database driver to use, defaults to ``pdo_mysql``.
-    Can be any of: ``pdo_mysql``, ``pdo_sqlite``, ``pdo_pgsql``,
-    ``pdo_oci``, ``oci8``, ``ibm_db2``, ``pdo_ibm``, ``pdo_sqlsrv``.
-
-  * **dbname**: The name of the database to connect to.
-
-  * **host**: The host of the database to connect to. Defaults to
-    localhost.
-
-  * **user**: The user of the database to connect to. Defaults to
-    root.
-
-  * **password**: The password of the database to connect to.
-
-  * **charset**: Only relevant for ``pdo_mysql``, and ``pdo_oci/oci8``,
-    specifies the charset used when connecting to the database.
-
-  * **path**: Only relevant for ``pdo_sqlite``, specifies the path to
-    the SQLite database.
-
-  * **port**: Only relevant for ``pdo_mysql``, ``pdo_pgsql``, and ``pdo_oci/oci8``,
-    specifies the port of the database to connect to.
-
-  These and additional options are described in detail in the `Doctrine DBAL
-  configuration documentation <http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html>`_.
-
-Services
---------
-
-* **db**: The database connection, instance of
-  ``Doctrine\DBAL\Connection``.
-
-* **db.config**: Configuration object for Doctrine. Defaults to
-  an empty ``Doctrine\DBAL\Configuration``.
-
-* **db.event_manager**: Event Manager for Doctrine.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\DoctrineServiceProvider(), array(
-        'db.options' => array(
-            'driver'   => 'pdo_sqlite',
-            'path'     => __DIR__.'/app.db',
-        ),
-    ));
-
-.. note::
-
-    Add the Doctrine DBAL as a dependency:
-
-    .. code-block:: bash
-
-        composer require "doctrine/dbal:~2.2"
-
-Usage
------
-
-The Doctrine provider provides a ``db`` service. Here is a usage
-example::
-
-    $app->get('/blog/{id}', function ($id) use ($app) {
-        $sql = "SELECT * FROM posts WHERE id = ?";
-        $post = $app['db']->fetchAssoc($sql, array((int) $id));
-
-        return  "<h1>{$post['title']}</h1>".
-                "<p>{$post['body']}</p>";
-    });
-
-Using multiple databases
-------------------------
-
-The Doctrine provider can allow access to multiple databases. In order to
-configure the data sources, replace the **db.options** with **dbs.options**.
-**dbs.options** is an array of configurations where keys are connection names
-and values are options::
-
-    $app->register(new Silex\Provider\DoctrineServiceProvider(), array(
-        'dbs.options' => array (
-            'mysql_read' => array(
-                'driver'    => 'pdo_mysql',
-                'host'      => 'mysql_read.someplace.tld',
-                'dbname'    => 'my_database',
-                'user'      => 'my_username',
-                'password'  => 'my_password',
-                'charset'   => 'utf8mb4',
-            ),
-            'mysql_write' => array(
-                'driver'    => 'pdo_mysql',
-                'host'      => 'mysql_write.someplace.tld',
-                'dbname'    => 'my_database',
-                'user'      => 'my_username',
-                'password'  => 'my_password',
-                'charset'   => 'utf8mb4',
-            ),
-        ),
-    ));
-
-The first registered connection is the default and can simply be accessed as
-you would if there was only one connection. Given the above configuration,
-these two lines are equivalent::
-
-    $app['db']->fetchAll('SELECT * FROM table');
-
-    $app['dbs']['mysql_read']->fetchAll('SELECT * FROM table');
-
-Using multiple connections::
-
-    $app->get('/blog/{id}', function ($id) use ($app) {
-        $sql = "SELECT * FROM posts WHERE id = ?";
-        $post = $app['dbs']['mysql_read']->fetchAssoc($sql, array((int) $id));
-
-        $sql = "UPDATE posts SET value = ? WHERE id = ?";
-        $app['dbs']['mysql_write']->executeUpdate($sql, array('newValue', (int) $id));
-
-        return  "<h1>{$post['title']}</h1>".
-                "<p>{$post['body']}</p>";
-    });
-
-For more information, consult the `Doctrine DBAL documentation
-<http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/>`_.
diff --git a/vendor/silex/silex/doc/providers/form.rst b/vendor/silex/silex/doc/providers/form.rst
deleted file mode 100644
index 159408102bd5f9954aeac87b359fc380ddcf7635..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/form.rst
+++ /dev/null
@@ -1,216 +0,0 @@
-Form
-====
-
-The *FormServiceProvider* provides a service for building forms in
-your application with the Symfony Form component.
-
-Parameters
-----------
-
-* none
-
-Services
---------
-
-* **form.factory**: An instance of `FormFactory
-  <http://api.symfony.com/master/Symfony/Component/Form/FormFactory.html>`_,
-  that is used to build a form.
-
-Registering
------------
-
-.. code-block:: php
-
-    use Silex\Provider\FormServiceProvider;
-
-    $app->register(new FormServiceProvider());
-
-.. note::
-
-    If you don't want to create your own form layout, it's fine: a default one
-    will be used. But you will have to register the :doc:`translation provider
-    <translation>` as the default form layout requires it::
-
-        $app->register(new Silex\Provider\TranslationServiceProvider(), array(
-            'translator.domains' => array(),
-        ));
-
-    If you want to use validation with forms, do not forget to register the
-    :doc:`Validator provider <validator>`.
-
-.. note::
-
-    Add the Symfony Form Component as a dependency:
-
-    .. code-block:: bash
-
-        composer require symfony/form
-
-    If you are going to use the validation extension with forms, you must also
-    add a dependency to the ``symfony/validator`` and ``symfony/config``
-    components:
-
-    .. code-block:: bash
-
-        composer require symfony/validator symfony/config
-
-    If you want to use forms in your Twig templates, you can also install the
-    Symfony Twig Bridge. Make sure to install, if you didn't do that already,
-    the Translation component in order for the bridge to work:
-
-    .. code-block:: bash
-
-        composer require symfony/twig-bridge
-
-Usage
------
-
-The FormServiceProvider provides a ``form.factory`` service. Here is a usage
-example::
-
-    use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
-    use Symfony\Component\Form\Extension\Core\Type\FormType;
-    use Symfony\Component\Form\Extension\Core\Type\SubmitType;
-
-    $app->match('/form', function (Request $request) use ($app) {
-        // some default data for when the form is displayed the first time
-        $data = array(
-            'name' => 'Your name',
-            'email' => 'Your email',
-        );
-
-        $form = $app['form.factory']->createBuilder(FormType::class, $data)
-            ->add('name')
-            ->add('email')
-            ->add('billing_plan', ChoiceType::class, array(
-                'choices' => array('free' => 1, 'small business' => 2, 'corporate' => 3),
-                'expanded' => true,
-            ))
-            ->add('submit', SubmitType::class, [
-                'label' => 'Save',
-            ])
-            ->getForm();
-
-        $form->handleRequest($request);
-
-        if ($form->isValid()) {
-            $data = $form->getData();
-
-            // do something with the data
-
-            // redirect somewhere
-            return $app->redirect('...');
-        }
-
-        // display the form
-        return $app['twig']->render('index.twig', array('form' => $form->createView()));
-    });
-
-And here is the ``index.twig`` form template (requires ``symfony/twig-bridge``):
-
-.. code-block:: jinja
-
-    <form action="#" method="post">
-        {{ form_widget(form) }}
-
-        <input type="submit" name="submit" />
-    </form>
-
-If you are using the validator provider, you can also add validation to your
-form by adding constraints on the fields::
-
-    use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
-    use Symfony\Component\Form\Extension\Core\Type\FormType;
-    use Symfony\Component\Form\Extension\Core\Type\SubmitType;
-    use Symfony\Component\Form\Extension\Core\Type\TextType;
-    use Symfony\Component\Validator\Constraints as Assert;
-
-    $app->register(new Silex\Provider\ValidatorServiceProvider());
-    $app->register(new Silex\Provider\TranslationServiceProvider(), array(
-        'translator.domains' => array(),
-    ));
-
-    $form = $app['form.factory']->createBuilder(FormType::class)
-        ->add('name', TextType::class, array(
-            'constraints' => array(new Assert\NotBlank(), new Assert\Length(array('min' => 5)))
-        ))
-        ->add('email', TextType::class, array(
-            'constraints' => new Assert\Email()
-        ))
-        ->add('billing_plan', ChoiceType::class, array(
-            'choices' => array('free' => 1, 'small business' => 2, 'corporate' => 3),
-            'expanded' => true,
-            'constraints' => new Assert\Choice(array(1, 2, 3)),
-        ))
-        ->add('submit', SubmitType::class, [
-            'label' => 'Save',
-        ])
-        ->getForm();
-
-You can register form types by extending ``form.types``::
-
-    $app['your.type.service'] = function ($app) {
-        return new YourServiceFormType();
-    };
-    $app->extend('form.types', function ($types) use ($app) {
-        $types[] = new YourFormType();
-        $types[] = 'your.type.service';
-
-        return $types;
-    });
-
-You can register form extensions by extending ``form.extensions``::
-
-    $app->extend('form.extensions', function ($extensions) use ($app) {
-        $extensions[] = new YourTopFormExtension();
-
-        return $extensions;
-    });
-
-
-You can register form type extensions by extending ``form.type.extensions``::
-
-    $app['your.type.extension.service'] = function ($app) {
-        return new YourServiceFormTypeExtension();
-    };
-    $app->extend('form.type.extensions', function ($extensions) use ($app) {
-        $extensions[] = new YourFormTypeExtension();
-        $extensions[] = 'your.type.extension.service';
-
-        return $extensions;
-    });
-
-You can register form type guessers by extending ``form.type.guessers``::
-
-    $app['your.type.guesser.service'] = function ($app) {
-        return new YourServiceFormTypeGuesser();
-    };
-    $app->extend('form.type.guessers', function ($guessers) use ($app) {
-        $guessers[] = new YourFormTypeGuesser();
-        $guessers[] = 'your.type.guesser.service';
-
-        return $guessers;
-    });
-
-.. warning::
-
-    CSRF protection is only available and automatically enabled when the
-    :doc:`CSRF Service Provider </providers/csrf>` is registered.
-
-Traits
-------
-
-``Silex\Application\FormTrait`` adds the following shortcuts:
-
-* **form**: Creates a FormBuilderInterface instance.
-
-* **namedForm**: Creates a FormBuilderInterface instance (named).
-
-.. code-block:: php
-
-    $app->form($data);
-
-    $app->namedForm($name, $data, $options, $type);
-
-For more information, consult the `Symfony Forms documentation
-<http://symfony.com/doc/current/forms.html>`_.
diff --git a/vendor/silex/silex/doc/providers/http_cache.rst b/vendor/silex/silex/doc/providers/http_cache.rst
deleted file mode 100644
index 8bc98f67ac42b9428a578e22064010b7f046b8ba..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/http_cache.rst
+++ /dev/null
@@ -1,128 +0,0 @@
-HTTP Cache
-==========
-
-The *HttpCacheServiceProvider* provides support for the Symfony Reverse
-Proxy.
-
-Parameters
-----------
-
-* **http_cache.cache_dir**: The cache directory to store the HTTP cache data.
-
-* **http_cache.options** (optional): An array of options for the `HttpCache
-  <http://api.symfony.com/master/Symfony/Component/HttpKernel/HttpCache/HttpCache.html>`_
-  constructor.
-
-Services
---------
-
-* **http_cache**: An instance of `HttpCache
-  <http://api.symfony.com/master/Symfony/Component/HttpKernel/HttpCache/HttpCache.html>`_.
-
-* **http_cache.esi**: An instance of `Esi
-  <http://api.symfony.com/master/Symfony/Component/HttpKernel/HttpCache/Esi.html>`_,
-  that implements the ESI capabilities to Request and Response instances.
-
-* **http_cache.store**: An instance of `Store
-  <http://api.symfony.com/master/Symfony/Component/HttpKernel/HttpCache/Store.html>`_,
-  that implements all the logic for storing cache metadata (Request and Response
-  headers).
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\HttpCacheServiceProvider(), array(
-        'http_cache.cache_dir' => __DIR__.'/cache/',
-    ));
-
-Usage
------
-
-Silex already supports any reverse proxy like Varnish out of the box by
-setting Response HTTP cache headers::
-
-    use Symfony\Component\HttpFoundation\Response;
-
-    $app->get('/', function() {
-        return new Response('Foo', 200, array(
-            'Cache-Control' => 's-maxage=5',
-        ));
-    });
-
-.. tip::
-
-    If you want Silex to trust the ``X-Forwarded-For*`` headers from your
-    reverse proxy at address $ip, you will need to whitelist it as documented
-    in `Trusting Proxies
-    <http://symfony.com/doc/current/components/http_foundation/trusting_proxies.html>`_.
-
-    If you would be running Varnish in front of your application on the same machine::
-
-        use Symfony\Component\HttpFoundation\Request;
-        
-        Request::setTrustedProxies(array('127.0.0.1', '::1'));
-        $app->run();
-
-This provider allows you to use the Symfony reverse proxy natively with
-Silex applications by using the ``http_cache`` service. The Symfony reverse proxy
-acts much like any other proxy would, so you will want to whitelist it::
-
-    use Symfony\Component\HttpFoundation\Request;
-        
-    Request::setTrustedProxies(array('127.0.0.1'));
-    $app['http_cache']->run();
-
-The provider also provides ESI support::
-
-    $app->get('/', function() {
-        $response = new Response(<<<EOF
-    <html>
-        <body>
-            Hello
-            <esi:include src="/included" />
-        </body>
-    </html>
-
-    EOF
-        , 200, array(
-            'Surrogate-Control' => 'content="ESI/1.0"',
-        ));
-
-        $response->setTtl(20);
-
-        return $response;
-    });
-
-    $app->get('/included', function() {
-        $response = new Response('Foo');
-        $response->setTtl(5);
-
-        return $response;
-    });
-
-    $app['http_cache']->run();
-
-If your application doesn't use ESI, you can disable it to slightly improve the
-overall performance::
-
-    $app->register(new Silex\Provider\HttpCacheServiceProvider(), array(
-       'http_cache.cache_dir' => __DIR__.'/cache/',
-       'http_cache.esi'       => null,
-    ));
-
-.. tip::
-
-    To help you debug caching issues, set your application ``debug`` to true.
-    Symfony automatically adds a ``X-Symfony-Cache`` header to each response
-    with useful information about cache hits and misses.
-
-    If you are *not* using the Symfony Session provider, you might want to set
-    the PHP ``session.cache_limiter`` setting to an empty value to avoid the
-    default PHP behavior.
-
-    Finally, check that your Web server does not override your caching strategy.
-
-For more information, consult the `Symfony HTTP Cache documentation
-<http://symfony.com/doc/current/book/http_cache.html>`_.
diff --git a/vendor/silex/silex/doc/providers/http_fragment.rst b/vendor/silex/silex/doc/providers/http_fragment.rst
deleted file mode 100644
index 8e681853a33f97a497c7d2991e594b2792dd1975..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/http_fragment.rst
+++ /dev/null
@@ -1,70 +0,0 @@
-HTTP Fragment
-=============
-
-The *HttpFragmentServiceProvider* provides support for the Symfony fragment
-sub-framework, which allows you to embed fragments of HTML in a template.
-
-Parameters
-----------
-
-* **fragment.path**: The path to use for the URL generated for ESI and
-  HInclude URLs (``/_fragment`` by default).
-
-* **uri_signer.secret**: The secret to use for the URI signer service (used
-  for the HInclude renderer).
-
-* **fragment.renderers.hinclude.global_template**: The content or Twig
-  template to use for the default content when using the HInclude renderer.
-
-Services
---------
-
-* **fragment.handler**: An instance of `FragmentHandler
-  <http://api.symfony.com/master/Symfony/Component/HttpKernel/Fragment/FragmentHandler.html>`_.
-
-* **fragment.renderers**: An array of fragment renderers (by default, the
-  inline, ESI, and HInclude renderers are pre-configured).
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\HttpFragmentServiceProvider());
-
-Usage
------
-
-.. note::
-
-    This section assumes that you are using Twig for your templates.
-
-Instead of building a page out of a single request/controller/template, the
-fragment framework allows you to build a page from several
-controllers/sub-requests/sub-templates by using **fragments**.
-
-Including "sub-pages" in the main page can be done with the Twig ``render()``
-function:
-
-.. code-block:: jinja
-
-    The main page content.
-
-    {{ render('/foo') }}
-
-    The main page content resumes here.
-
-The ``render()`` call is replaced by the content of the ``/foo`` URL
-(internally, a sub-request is handled by Silex to render the sub-page).
-
-Instead of making internal sub-requests, you can also use the ESI (the
-sub-request is handled by a reverse proxy) or the HInclude strategies (the
-sub-request is handled by a web browser):
-
-.. code-block:: jinja
-
-    {{ render(url('route_name')) }}
-
-    {{ render_esi(url('route_name')) }}
-
-    {{ render_hinclude(url('route_name')) }}
diff --git a/vendor/silex/silex/doc/providers/index.rst b/vendor/silex/silex/doc/providers/index.rst
deleted file mode 100644
index 8989d494dfae1728361cbc6b6f25875e563d4979..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/index.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-Built-in Service Providers
-==========================
-
-.. toctree::
-    :maxdepth: 1
-
-    twig
-    asset
-    monolog
-    session
-    swiftmailer
-    locale
-    translation
-    validator
-    form
-    csrf
-    http_cache
-    http_fragment
-    security
-    remember_me
-    serializer
-    service_controller
-    var_dumper
-    doctrine
-    routing
diff --git a/vendor/silex/silex/doc/providers/locale.rst b/vendor/silex/silex/doc/providers/locale.rst
deleted file mode 100644
index 8f6cd675faea5c5c3bbf233fd0f38aff129ac67d..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/locale.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-Locale
-======
-
-The *LocaleServiceProvider* manages the locale of an application.
-
-Parameters
-----------
-
-* **locale**: The locale of the user. When set before any request handling, it
-  defines the default locale (``en`` by default). When a request is being
-  handled, it is automatically set according to the ``_locale`` request
-  attribute of the current route.
-
-Services
---------
-
-* n/a
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\LocaleServiceProvider());
diff --git a/vendor/silex/silex/doc/providers/monolog.rst b/vendor/silex/silex/doc/providers/monolog.rst
deleted file mode 100644
index 6a73cfd4c528e454abc57cfdeab92504d248b82a..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/monolog.rst
+++ /dev/null
@@ -1,117 +0,0 @@
-Monolog
-=======
-
-The *MonologServiceProvider* provides a default logging mechanism through
-Jordi Boggiano's `Monolog <https://github.com/Seldaek/monolog>`_ library.
-
-It will log requests and errors and allow you to add logging to your
-application. This allows you to debug and monitor the behaviour,
-even in production.
-
-Parameters
-----------
-
-* **monolog.logfile**: File where logs are written to.
-* **monolog.bubble** (optional): Whether the messages that are handled can bubble up the stack or not.
-* **monolog.permission** (optional): File permissions default (null), nothing change.
-
-* **monolog.level** (optional): Level of logging, defaults
-  to ``DEBUG``. Must be one of ``Logger::DEBUG``, ``Logger::INFO``,
-  ``Logger::WARNING``, ``Logger::ERROR``. ``DEBUG`` will log
-  everything, ``INFO`` will log everything except ``DEBUG``,
-  etc.
-
-  In addition to the ``Logger::`` constants, it is also possible to supply the
-  level in string form, for example: ``"DEBUG"``, ``"INFO"``, ``"WARNING"``,
-  ``"ERROR"``.
-
-  PSR-3 log levels from ``\Psr\Log\LogLevel::`` constants are also supported.
-
-* **monolog.name** (optional): Name of the monolog channel,
-  defaults to ``myapp``.
-
-* **monolog.exception.logger_filter** (optional): An anonymous function that
-  returns an error level for on uncaught exception that should be logged.
-
-* **monolog.use_error_handler** (optional): Whether errors and uncaught exceptions
-  should be handled by the Monolog ``ErrorHandler`` class and added to the log.
-  By default the error handler is enabled unless the application ``debug`` parameter
-  is set to true.
-
-  Please note that enabling the error handler may silence some errors,
-  ignoring the PHP ``display_errors`` configuration setting.
-
-Services
---------
-
-* **monolog**: The monolog logger instance.
-
-  Example usage::
-
-    $app['monolog']->debug('Testing the Monolog logging.');
-
-* **monolog.listener**: An event listener to log requests, responses and errors.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\MonologServiceProvider(), array(
-        'monolog.logfile' => __DIR__.'/development.log',
-    ));
-
-.. note::
-
-    Add Monolog as a dependency:
-
-    .. code-block:: bash
-
-        composer require monolog/monolog
-
-Usage
------
-
-The MonologServiceProvider provides a ``monolog`` service. You can use it to
-add log entries for any logging level through ``debug()``, ``info()``,
-``warning()`` and ``error()``::
-
-    use Symfony\Component\HttpFoundation\Response;
-
-    $app->post('/user', function () use ($app) {
-        // ...
-
-        $app['monolog']->info(sprintf("User '%s' registered.", $username));
-
-        return new Response('', 201);
-    });
-
-Customization
--------------
-
-You can configure Monolog (like adding or changing the handlers) before using
-it by extending the ``monolog`` service::
-
-    $app->extend('monolog', function($monolog, $app) {
-        $monolog->pushHandler(...);
-
-        return $monolog;
-    });
-
-By default, all requests, responses and errors are logged by an event listener
-registered as a service called `monolog.listener`. You can replace or remove
-this service if you want to modify or disable the logged information.
-
-Traits
-------
-
-``Silex\Application\MonologTrait`` adds the following shortcuts:
-
-* **log**: Logs a message.
-
-.. code-block:: php
-
-    $app->log(sprintf("User '%s' registered.", $username));
-
-For more information, check out the `Monolog documentation
-<https://github.com/Seldaek/monolog>`_.
diff --git a/vendor/silex/silex/doc/providers/remember_me.rst b/vendor/silex/silex/doc/providers/remember_me.rst
deleted file mode 100644
index 7fdaaabad3cf31a634fd2639281caffc36468dfb..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/remember_me.rst
+++ /dev/null
@@ -1,69 +0,0 @@
-Remember Me
-===========
-
-The *RememberMeServiceProvider* adds "Remember-Me" authentication to the
-*SecurityServiceProvider*.
-
-Parameters
-----------
-
-n/a
-
-Services
---------
-
-n/a
-
-.. note::
-
-    The service provider defines many other services that are used internally
-    but rarely need to be customized.
-
-Registering
------------
-
-Before registering this service provider, you must register the
-*SecurityServiceProvider*::
-
-    $app->register(new Silex\Provider\SecurityServiceProvider());
-    $app->register(new Silex\Provider\RememberMeServiceProvider());
-
-    $app['security.firewalls'] = array(
-        'my-firewall' => array(
-            'pattern'     => '^/secure$',
-            'form'        => true,
-            'logout'      => true,
-            'remember_me' => array(
-                'key'                => 'Choose_A_Unique_Random_Key',
-                'always_remember_me' => true,
-                /* Other options */
-            ),
-            'users' => array( /* ... */ ),
-        ),
-    );
-
-Options
--------
-
-* **key**: A secret key to generate tokens (you should generate a random
-  string).
-
-* **name**: Cookie name (default: ``REMEMBERME``).
-
-* **lifetime**: Cookie lifetime (default: ``31536000`` ~ 1 year).
-
-* **path**: Cookie path (default: ``/``).
-
-* **domain**: Cookie domain (default: ``null`` = request domain).
-
-* **secure**: Cookie is secure (default: ``false``).
-
-* **httponly**: Cookie is HTTP only (default: ``true``).
-
-* **always_remember_me**: Enable remember me (default: ``false``).
-
-* **remember_me_parameter**: Name of the request parameter enabling remember_me
-  on login. To add the checkbox to the login form. You can find more
-  information in the `Symfony cookbook
-  <http://symfony.com/doc/current/cookbook/security/remember_me.html>`_
-  (default: ``_remember_me``).
diff --git a/vendor/silex/silex/doc/providers/routing.rst b/vendor/silex/silex/doc/providers/routing.rst
deleted file mode 100644
index 4ff104107c195afa282c4bab7dae40d071e3b1f8..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/routing.rst
+++ /dev/null
@@ -1,80 +0,0 @@
-Routing
-=======
-
-The *RoutingServiceProvider* provides a service for generating URLs for
-named routes.
-
-Parameters
-----------
-
-* **route_class**: (optional): The default route class used by the route
-  factory (defaults to ``Silex\Route``).
-
-Services
---------
-
-* **url_generator**: An instance of `UrlGenerator
-  <http://api.symfony.com/master/Symfony/Component/Routing/Generator/UrlGenerator.html>`_,
-  using the `RouteCollection
-  <http://api.symfony.com/master/Symfony/Component/Routing/RouteCollection.html>`_
-  that is provided through the ``routes`` service. It has a ``generate``
-  method, which takes the route name as an argument, followed by an array of
-  route parameters.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\RoutingServiceProvider());
-
-Usage
------
-
-The Routing provider provides a ``url_generator`` service::
-
-    $app->get('/', function () {
-        return 'welcome to the homepage';
-    })
-    ->bind('homepage');
-
-    $app->get('/hello/{name}', function ($name) {
-        return "Hello $name!";
-    })
-    ->bind('hello');
-
-    $app->get('/navigation', function () use ($app) {
-        return '<a href="'.$app['url_generator']->generate('homepage').'">Home</a>'.
-               ' | '.
-               '<a href="'.$app['url_generator']->generate('hello', array('name' => 'Igor')).'">Hello Igor</a>';
-    });
-
-When using Twig, the service can be used like this:
-
-.. code-block:: jinja
-
-    {{ app.url_generator.generate('homepage') }}
-
-Moreover, if you have ``twig-bridge`` as a Composer dep, you will have access
-to the ``path()`` and ``url()`` functions:
-
-.. code-block:: jinja
-
-    {{ path('homepage') }}
-    {{ url('homepage') }} {# generates the absolute url http://example.org/ #}
-    {{ path('hello', {name: 'Fabien'}) }}
-    {{ url('hello', {name: 'Fabien'}) }} {# generates the absolute url http://example.org/hello/Fabien #}
-
-Traits
-------
-
-``Silex\Application\UrlGeneratorTrait`` adds the following shortcuts:
-
-* **path**: Generates a path.
-
-* **url**: Generates an absolute URL.
-
-.. code-block:: php
-
-    $app->path('homepage');
-    $app->url('homepage');
diff --git a/vendor/silex/silex/doc/providers/security.rst b/vendor/silex/silex/doc/providers/security.rst
deleted file mode 100644
index ffeabc41a0a3a17787f4054b6193c8c1486c2cfb..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/security.rst
+++ /dev/null
@@ -1,755 +0,0 @@
-Security
-========
-
-The *SecurityServiceProvider* manages authentication and authorization for
-your applications.
-
-Parameters
-----------
-
-* **security.hide_user_not_found** (optional): Defines whether to hide user not
-  found exception or not. Defaults to ``true``.
-
-* **security.encoder.bcrypt.cost** (optional): Defines BCrypt password encoder cost. Defaults to 13.
-
-* **security.role_hierarchy**:(optional): Defines a map of roles including other roles.
-
-* **security.access_rules** (optional): Defines rules based on paths and roles.
-  See `Defining Access Rule <#defining-access-rules>`_.
-
-Services
---------
-
-* **security.token_storage**: Gives access to the user token.
-
-* **security.authorization_checker**: Allows to check authorizations for the
-  users.
-
-* **security.authentication_manager**: An instance of
-  `AuthenticationProviderManager
-  <http://api.symfony.com/master/Symfony/Component/Security/Core/Authentication/AuthenticationProviderManager.html>`_,
-  responsible for authentication.
-
-* **security.access_manager**: An instance of `AccessDecisionManager
-  <http://api.symfony.com/master/Symfony/Component/Security/Core/Authorization/AccessDecisionManager.html>`_,
-  responsible for authorization.
-
-* **security.session_strategy**: Define the session strategy used for
-  authentication (default to a migration strategy).
-
-* **security.user_checker**: Checks user flags after authentication.
-
-* **security.last_error**: Returns the last authentication error message when
-  given a Request object.
-
-* **security.authentication_utils**: Returns the AuthenticationUtils service
-  allowing you to get last authentication exception or last username.
-
-* **security.encoder_factory**: Defines the encoding strategies for user
-  passwords (uses ``security.default_encoder``).
-
-* **security.default_encoder**: The encoder to use by default for all users (BCrypt).
-
-* **security.encoder.digest**: Digest password encoder.
-
-* **security.encoder.bcrypt**: BCrypt password encoder.
-
-* **security.encoder.pbkdf2**: Pbkdf2 password encoder.
-
-* **user**: Returns the current user
-
-.. note::
-
-    The service provider defines many other services that are used internally
-    but rarely need to be customized.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\SecurityServiceProvider(), array(
-        'security.firewalls' => // see below
-    ));
-
-.. note::
-
-    Add the Symfony Security Component as a dependency:
-
-    .. code-block:: bash
-
-        composer require symfony/security
-
-.. caution::
-
-    If you're using a form to authenticate users, you need to enable
-    ``SessionServiceProvider``.
-
-.. caution::
-
-    The security features are only available after the Application has been
-    booted. So, if you want to use it outside of the handling of a request,
-    don't forget to call ``boot()`` first::
-
-        $app->boot();
-
-Usage
------
-
-The Symfony Security component is powerful. To learn more about it, read the
-`Symfony Security documentation
-<http://symfony.com/doc/current/security.html>`_.
-
-.. tip::
-
-    When a security configuration does not behave as expected, enable logging
-    (with the Monolog extension for instance) as the Security Component logs a
-    lot of interesting information about what it does and why.
-
-Below is a list of recipes that cover some common use cases.
-
-Accessing the current User
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The current user information is stored in a token that is accessible via the
-``security`` service::
-
-    $token = $app['security.token_storage']->getToken();
-
-If there is no information about the user, the token is ``null``. If the user
-is known, you can get it with a call to ``getUser()``::
-
-    if (null !== $token) {
-        $user = $token->getUser();
-    }
-
-The user can be a string, an object with a ``__toString()`` method, or an
-instance of `UserInterface
-<http://api.symfony.com/master/Symfony/Component/Security/Core/User/UserInterface.html>`_.
-
-Securing a Path with HTTP Authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following configuration uses HTTP basic authentication to secure URLs
-under ``/admin/``::
-
-    $app['security.firewalls'] = array(
-        'admin' => array(
-            'pattern' => '^/admin',
-            'http' => true,
-            'users' => array(
-                // raw password is foo
-                'admin' => array('ROLE_ADMIN', '$2y$10$3i9/lVd8UOFIJ6PAMFt8gu3/r5g0qeCJvoSlLCsvMTythye19F77a'),
-            ),
-        ),
-    );
-
-The ``pattern`` is a regular expression on the URL path; the ``http`` setting
-tells the security layer to use HTTP basic authentication and the ``users``
-entry defines valid users.
-
-If you want to restrict the firewall by more than the URL pattern (like the
-HTTP method, the client IP, the hostname, or any Request attributes), use an
-instance of a `RequestMatcher
-<http://api.symfony.com/master/Symfony/Component/HttpFoundation/RequestMatcher.html>`_
-for the ``pattern`` option::
-
-    use Symfony\Component\HttpFoundation\RequestMatcher;
-
-    $app['security.firewalls'] = array(
-        'admin' => array(
-            'pattern' => new RequestMatcher('^/admin', 'example.com', 'POST'),
-            // ...
-        ),
-    );
-
-Each user is defined with the following information:
-
-* The role or an array of roles for the user (roles are strings beginning with
-  ``ROLE_`` and ending with anything you want);
-
-* The user encoded password.
-
-.. caution::
-
-    All users must at least have one role associated with them.
-
-The default configuration of the extension enforces encoded passwords. To
-generate a valid encoded password from a raw password, use the
-``security.encoder_factory`` service::
-
-    // find the encoder for a UserInterface instance
-    $encoder = $app['security.encoder_factory']->getEncoder($user);
-
-    // compute the encoded password for foo
-    $password = $encoder->encodePassword('foo', $user->getSalt());
-
-When the user is authenticated, the user stored in the token is an instance of
-`User
-<http://api.symfony.com/master/Symfony/Component/Security/Core/User/User.html>`_
-
-.. caution::
-
-    If you are using php-cgi under Apache, you need to add this configuration
-    to make things work correctly:
-
-    .. code-block:: apache
-
-        RewriteEngine On
-        RewriteCond %{HTTP:Authorization} ^(.+)$
-        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
-        RewriteCond %{REQUEST_FILENAME} !-f
-        RewriteRule ^(.*)$ app.php [QSA,L]
-
-Securing a Path with a Form
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Using a form to authenticate users is very similar to the above configuration.
-Instead of using the ``http`` setting, use the ``form`` one and define these
-two parameters:
-
-* **login_path**: The login path where the user is redirected when they are
-  accessing a secured area without being authenticated so that they can enter
-  their credentials;
-
-* **check_path**: The check URL used by Symfony to validate the credentials of
-  the user.
-
-Here is how to secure all URLs under ``/admin/`` with a form::
-
-    $app['security.firewalls'] = array(
-        'admin' => array(
-            'pattern' => '^/admin/',
-            'form' => array('login_path' => '/login', 'check_path' => '/admin/login_check'),
-            'users' => array(
-                'admin' => array('ROLE_ADMIN', '$2y$10$3i9/lVd8UOFIJ6PAMFt8gu3/r5g0qeCJvoSlLCsvMTythye19F77a'),
-            ),
-        ),
-    );
-
-Always keep in mind the following two golden rules:
-
-* The ``login_path`` path must always be defined **outside** the secured area
-  (or if it is in the secured area, the ``anonymous`` authentication mechanism
-  must be enabled -- see below);
-
-* The ``check_path`` path must always be defined **inside** the secured area.
-
-For the login form to work, create a controller like the following::
-
-    use Symfony\Component\HttpFoundation\Request;
-
-    $app->get('/login', function(Request $request) use ($app) {
-        return $app['twig']->render('login.html', array(
-            'error'         => $app['security.last_error']($request),
-            'last_username' => $app['session']->get('_security.last_username'),
-        ));
-    });
-
-The ``error`` and ``last_username`` variables contain the last authentication
-error and the last username entered by the user in case of an authentication
-error.
-
-If you want to have the last error message translated, you would need to use
-the ``security.authentication_utils`` service and retrieve
-the actual ``AuthenticationException`` instance.
-
-Create the associated template:
-
-.. code-block:: jinja
-
-    <form action="{{ path('admin_login_check') }}" method="post">
-        {{ error }}
-        <input type="text" name="_username" value="{{ last_username }}" />
-        <input type="password" name="_password" value="" />
-        <input type="submit" />
-    </form>
-
-.. note::
-
-    The ``admin_login_check`` route is automatically defined by Silex and its
-    name is derived from the ``check_path`` value (all ``/`` are replaced with
-    ``_`` and the leading ``/`` is stripped).
-
-Defining more than one Firewall
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You are not limited to define one firewall per project.
-
-Configuring several firewalls is useful when you want to secure different
-parts of your website with different authentication strategies or for
-different users (like using an HTTP basic authentication for the website API
-and a form to secure your website administration area).
-
-It's also useful when you want to secure all URLs except the login form::
-
-    $app['security.firewalls'] = array(
-        'login' => array(
-            'pattern' => '^/login$',
-        ),
-        'secured' => array(
-            'pattern' => '^.*$',
-            'form' => array('login_path' => '/login', 'check_path' => '/login_check'),
-            'users' => array(
-                'admin' => array('ROLE_ADMIN', '$2y$10$3i9/lVd8UOFIJ6PAMFt8gu3/r5g0qeCJvoSlLCsvMTythye19F77a'),
-            ),
-        ),
-    );
-
-The order of the firewall configurations is significant as the first one to
-match wins. The above configuration first ensures that the ``/login`` URL is
-not secured (no authentication settings), and then it secures all other URLs.
-
-.. tip::
-
-    You can toggle all registered authentication mechanisms for a particular
-    area on and off with the ``security`` flag::
-
-        $app['security.firewalls'] = array(
-            'api' => array(
-                'pattern' => '^/api',
-                'security' => $app['debug'] ? false : true,
-                'wsse' => true,
-
-                // ...
-            ),
-        );
-
-Adding a Logout
-~~~~~~~~~~~~~~~
-
-When using a form for authentication, you can let users log out if you add the
-``logout`` setting, where ``logout_path`` must match the main firewall
-pattern::
-
-    $app['security.firewalls'] = array(
-        'secured' => array(
-            'pattern' => '^/admin/',
-            'form' => array('login_path' => '/login', 'check_path' => '/admin/login_check'),
-            'logout' => array('logout_path' => '/admin/logout', 'invalidate_session' => true),
-
-            // ...
-        ),
-    );
-
-A route is automatically generated, based on the configured path (all ``/``
-are replaced with ``_`` and the leading ``/`` is stripped):
-
-.. code-block:: jinja
-
-    <a href="{{ path('admin_logout') }}">Logout</a>
-
-Allowing Anonymous Users
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-When securing only some parts of your website, the user information are not
-available in non-secured areas. To make the user accessible in such areas,
-enabled the ``anonymous`` authentication mechanism::
-
-    $app['security.firewalls'] = array(
-        'unsecured' => array(
-            'anonymous' => true,
-
-            // ...
-        ),
-    );
-
-When enabling the anonymous setting, a user will always be accessible from the
-security context; if the user is not authenticated, it returns the ``anon.``
-string.
-
-Checking User Roles
-~~~~~~~~~~~~~~~~~~~
-
-To check if a user is granted some role, use the ``isGranted()`` method on the
-security context::
-
-    if ($app['security.authorization_checker']->isGranted('ROLE_ADMIN')) {
-        // ...
-    }
-
-You can check roles in Twig templates too:
-
-.. code-block:: jinja
-
-    {% if is_granted('ROLE_ADMIN') %}
-        <a href="/secured?_switch_user=fabien">Switch to Fabien</a>
-    {% endif %}
-
-You can check if a user is "fully authenticated" (not an anonymous user for
-instance) with the special ``IS_AUTHENTICATED_FULLY`` role:
-
-.. code-block:: jinja
-
-    {% if is_granted('IS_AUTHENTICATED_FULLY') %}
-        <a href="{{ path('logout') }}">Logout</a>
-    {% else %}
-        <a href="{{ path('login') }}">Login</a>
-    {% endif %}
-
-Of course you will need to define a ``login`` route for this to work.
-
-.. tip::
-
-    Don't use the ``getRoles()`` method to check user roles.
-
-.. caution::
-
-    ``isGranted()`` throws an exception when no authentication information is
-    available (which is the case on non-secured area).
-
-Impersonating a User
-~~~~~~~~~~~~~~~~~~~~
-
-If you want to be able to switch to another user (without knowing the user
-credentials), enable the ``switch_user`` authentication strategy::
-
-    $app['security.firewalls'] = array(
-        'unsecured' => array(
-            'switch_user' => array('parameter' => '_switch_user', 'role' => 'ROLE_ALLOWED_TO_SWITCH'),
-
-            // ...
-        ),
-    );
-
-Switching to another user is now a matter of adding the ``_switch_user`` query
-parameter to any URL when logged in as a user who has the
-``ROLE_ALLOWED_TO_SWITCH`` role:
-
-.. code-block:: jinja
-
-    {% if is_granted('ROLE_ALLOWED_TO_SWITCH') %}
-        <a href="?_switch_user=fabien">Switch to user Fabien</a>
-    {% endif %}
-
-You can check that you are impersonating a user by checking the special
-``ROLE_PREVIOUS_ADMIN``. This is useful for instance to allow the user to
-switch back to their primary account:
-
-.. code-block:: jinja
-
-    {% if is_granted('ROLE_PREVIOUS_ADMIN') %}
-        You are an admin but you've switched to another user,
-        <a href="?_switch_user=_exit"> exit</a> the switch.
-    {% endif %}
-    
-Sharing Security Context between multiple Firewalls
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-By default, all the firewalls have a different **security context**. In case you
-need to share the same security context between multiple firewalls you can set
-the ``context`` setting for each firewall you want the context to be shared
-with.
-
-.. code-block:: php
-
-    $app['security.firewalls'] = array(
-        'login' => array(
-            'context' => 'admin_security',
-            'pattern' => '^/login',
-            // ...
-        ),
-        'secured' => array(
-            'context' => 'admin_security',
-            'pattern' => '^/admin/',
-            'form' => array('login_path' => '/login', 'check_path' => '/admin/login_check'),
-            'users' => array(
-                'admin' => array('ROLE_ADMIN', '$2y$10$3i9/lVd8UOFIJ6PAMFt8gu3/r5g0qeCJvoSlLCsvMTythye19F77a'),
-            ),
-            // ...
-        ),
-    );
-
-Above configuration ensures that you have the same security context
-``admin_security`` inside both, ``login`` and ``admin`` firewalls. This might be
-useful for instance to redirect already logged in users to the secured area of
-your website when they visit the login form, as you have the possibility to
-check if the user has been granted the ``ROLE_ADMIN`` role inside the ``login``
-firewall.
-
-Defining a Role Hierarchy
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Defining a role hierarchy allows to automatically grant users some additional
-roles::
-
-    $app['security.role_hierarchy'] = array(
-        'ROLE_ADMIN' => array('ROLE_USER', 'ROLE_ALLOWED_TO_SWITCH'),
-    );
-
-With this configuration, all users with the ``ROLE_ADMIN`` role also
-automatically have the ``ROLE_USER`` and ``ROLE_ALLOWED_TO_SWITCH`` roles.
-
-Defining Access Rules
-~~~~~~~~~~~~~~~~~~~~~
-
-Roles are a great way to adapt the behavior of your website depending on
-groups of users, but they can also be used to further secure some areas by
-defining access rules::
-
-    $app['security.access_rules'] = array(
-        array('^/admin', 'ROLE_ADMIN', 'https'),
-        array('^.*$', 'ROLE_USER'),
-    );
-
-With the above configuration, users must have the ``ROLE_ADMIN`` to access the
-``/admin`` section of the website, and ``ROLE_USER`` for everything else.
-Furthermore, the admin section can only be accessible via HTTPS (if that's not
-the case, the user will be automatically redirected).
-
-.. note::
-
-    The first argument can also be a `RequestMatcher
-    <http://api.symfony.com/master/Symfony/Component/HttpFoundation/RequestMatcher.html>`_
-    instance.
-
-Defining a custom User Provider
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Using an array of users is simple and useful when securing an admin section of
-a personal website, but you can override this default mechanism with you own.
-
-The ``users`` setting can be defined as a service or a service id that returns
-an instance of `UserProviderInterface
-<http://api.symfony.com/master/Symfony/Component/Security/Core/User/UserProviderInterface.html>`_::
-
-    'users' => function () use ($app) {
-        return new UserProvider($app['db']);
-    },
-
-Here is a simple example of a user provider, where Doctrine DBAL is used to
-store the users::
-
-    use Symfony\Component\Security\Core\User\UserProviderInterface;
-    use Symfony\Component\Security\Core\User\UserInterface;
-    use Symfony\Component\Security\Core\User\User;
-    use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
-    use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
-    use Doctrine\DBAL\Connection;
-
-    class UserProvider implements UserProviderInterface
-    {
-        private $conn;
-
-        public function __construct(Connection $conn)
-        {
-            $this->conn = $conn;
-        }
-
-        public function loadUserByUsername($username)
-        {
-            $stmt = $this->conn->executeQuery('SELECT * FROM users WHERE username = ?', array(strtolower($username)));
-
-            if (!$user = $stmt->fetch()) {
-                throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
-            }
-
-            return new User($user['username'], $user['password'], explode(',', $user['roles']), true, true, true, true);
-        }
-
-        public function refreshUser(UserInterface $user)
-        {
-            if (!$user instanceof User) {
-                throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));
-            }
-
-            return $this->loadUserByUsername($user->getUsername());
-        }
-
-        public function supportsClass($class)
-        {
-            return $class === 'Symfony\Component\Security\Core\User\User';
-        }
-    }
-
-In this example, instances of the default ``User`` class are created for the
-users, but you can define your own class; the only requirement is that the
-class must implement `UserInterface
-<http://api.symfony.com/master/Symfony/Component/Security/Core/User/UserInterface.html>`_
-
-And here is the code that you can use to create the database schema and some
-sample users::
-
-    use Doctrine\DBAL\Schema\Table;
-
-    $schema = $app['db']->getSchemaManager();
-    if (!$schema->tablesExist('users')) {
-        $users = new Table('users');
-        $users->addColumn('id', 'integer', array('unsigned' => true, 'autoincrement' => true));
-        $users->setPrimaryKey(array('id'));
-        $users->addColumn('username', 'string', array('length' => 32));
-        $users->addUniqueIndex(array('username'));
-        $users->addColumn('password', 'string', array('length' => 255));
-        $users->addColumn('roles', 'string', array('length' => 255));
-
-        $schema->createTable($users);
-
-        $app['db']->insert('users', array(
-          'username' => 'fabien',
-          'password' => '$2y$10$3i9/lVd8UOFIJ6PAMFt8gu3/r5g0qeCJvoSlLCsvMTythye19F77a',
-          'roles' => 'ROLE_USER'
-        ));
-
-        $app['db']->insert('users', array(
-          'username' => 'admin',
-          'password' => '$2y$10$3i9/lVd8UOFIJ6PAMFt8gu3/r5g0qeCJvoSlLCsvMTythye19F77a',
-          'roles' => 'ROLE_ADMIN'
-        ));
-    }
-
-.. tip::
-
-    If you are using the Doctrine ORM, the Symfony bridge for Doctrine
-    provides a user provider class that is able to load users from your
-    entities.
-
-Defining a custom Encoder
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-By default, Silex uses the ``BCrypt`` algorithm to encode passwords.
-Additionally, the password is encoded multiple times.
-You can change these defaults by overriding ``security.default_encoder``
-service to return one of the predefined encoders:
-
-* **security.encoder.digest**: Digest password encoder.
-
-* **security.encoder.bcrypt**: BCrypt password encoder.
-
-* **security.encoder.pbkdf2**: Pbkdf2 password encoder.
-
-.. code-block:: php
-
-    $app['security.default_encoder'] = function ($app) {
-        return $app['security.encoder.pbkdf2'];
-    };
-
-Or you can define you own, fully customizable encoder::
-
-    use Symfony\Component\Security\Core\Encoder\PlaintextPasswordEncoder;
-
-    $app['security.default_encoder'] = function ($app) {
-        // Plain text (e.g. for debugging)
-        return new PlaintextPasswordEncoder();
-    };
-
-.. tip::
-
-    You can change the default BCrypt encoding cost by overriding ``security.encoder.bcrypt.cost``
-
-Defining a custom Authentication Provider
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Symfony Security component provides a lot of ready-to-use authentication
-providers (form, HTTP, X509, remember me, ...), but you can add new ones easily.
-To register a new authentication provider, create a service named
-``security.authentication_listener.factory.XXX`` where ``XXX`` is the name you
-want to use in your configuration::
-
-    $app['security.authentication_listener.factory.wsse'] = $app->protect(function ($name, $options) use ($app) {
-        // define the authentication provider object
-        $app['security.authentication_provider.'.$name.'.wsse'] = function () use ($app) {
-            return new WsseProvider($app['security.user_provider.default'], __DIR__.'/security_cache');
-        };
-
-        // define the authentication listener object
-        $app['security.authentication_listener.'.$name.'.wsse'] = function () use ($app) {
-            return new WsseListener($app['security.token_storage'], $app['security.authentication_manager']);
-        };
-
-        return array(
-            // the authentication provider id
-            'security.authentication_provider.'.$name.'.wsse',
-            // the authentication listener id
-            'security.authentication_listener.'.$name.'.wsse',
-            // the entry point id
-            null,
-            // the position of the listener in the stack
-            'pre_auth'
-        );
-    });
-
-You can now use it in your configuration like any other built-in
-authentication provider::
-
-    $app->register(new Silex\Provider\SecurityServiceProvider(), array(
-        'security.firewalls' => array(
-            'default' => array(
-                'wsse' => true,
-
-                // ...
-            ),
-        ),
-    ));
-
-Instead of ``true``, you can also define an array of options that customize
-the behavior of your authentication factory; it will be passed as the second
-argument of your authentication factory (see above).
-
-This example uses the authentication provider classes as described in the
-Symfony `cookbook`_.
-
-
-.. note::
-
-    The Guard component simplifies the creation of custom authentication
-    providers. :doc:`How to Create a Custom Authentication System with Guard
-    </cookbook/guard_authentication>`
-
-Stateless Authentication
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-By default, a session cookie is created to persist the security context of
-the user. However, if you use certificates, HTTP authentication, WSSE and so
-on, the credentials are sent for each request. In that case, you can turn off
-persistence by activating the ``stateless`` authentication flag::
-
-    $app['security.firewalls'] = array(
-        'default' => array(
-            'stateless' => true,
-            'wsse' => true,
-
-            // ...
-        ),
-    );
-
-Traits
-------
-
-``Silex\Application\SecurityTrait`` adds the following shortcuts:
-
-* **encodePassword**: Encode a given password.
-
-.. code-block:: php
-
-    $encoded = $app->encodePassword($app['user'], 'foo');
-
-``Silex\Route\SecurityTrait`` adds the following methods to the controllers:
-
-* **secure**: Secures a controller for the given roles.
-
-.. code-block:: php
-
-    $app->get('/', function () {
-        // do something but only for admins
-    })->secure('ROLE_ADMIN');
-
-.. caution::
-
-    The ``Silex\Route\SecurityTrait`` must be used with a user defined
-    ``Route`` class, not the application.
-
-    .. code-block:: php
-
-        use Silex\Route;
-
-        class MyRoute extends Route
-        {
-            use Route\SecurityTrait;
-        }
-
-    .. code-block:: php
-
-        $app['route_class'] = 'MyRoute';
-
-
-.. _cookbook: http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html
diff --git a/vendor/silex/silex/doc/providers/serializer.rst b/vendor/silex/silex/doc/providers/serializer.rst
deleted file mode 100644
index be5847de2eb60117df81fdc67df2f81c7dcd3a9b..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/serializer.rst
+++ /dev/null
@@ -1,85 +0,0 @@
-Serializer
-==========
-
-The *SerializerServiceProvider* provides a service for serializing objects.
-
-Parameters
-----------
-
-None.
-
-Services
---------
-
-* **serializer**: An instance of `Symfony\\Component\\Serializer\\Serializer
-  <http://api.symfony.com/master/Symfony/Component/Serializer/Serializer.html>`_.
-
-* **serializer.encoders**: `Symfony\\Component\\Serializer\\Encoder\\JsonEncoder
-  <http://api.symfony.com/master/Symfony/Component/Serializer/Encoder/JsonEncoder.html>`_
-  and `Symfony\\Component\\Serializer\\Encoder\\XmlEncoder
-  <http://api.symfony.com/master/Symfony/Component/Serializer/Encoder/XmlEncoder.html>`_.
-
-* **serializer.normalizers**: `Symfony\\Component\\Serializer\\Normalizer\\CustomNormalizer
-  <http://api.symfony.com/master/Symfony/Component/Serializer/Normalizer/CustomNormalizer.html>`_
-  and `Symfony\\Component\\Serializer\\Normalizer\\GetSetMethodNormalizer
-  <http://api.symfony.com/master/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.html>`_.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\SerializerServiceProvider());
-    
-.. note::
-
-    Add the Symfony's `Serializer Component
-    <http://symfony.com/doc/current/components/serializer.html>`_ as a
-    dependency:
-
-    .. code-block:: bash
-
-        composer require symfony/serializer
-
-Usage
------
-
-The ``SerializerServiceProvider`` provider provides a ``serializer`` service::
-
-    use Silex\Application;
-    use Silex\Provider\SerializerServiceProvider;
-    use Symfony\Component\HttpFoundation\Request;
-    use Symfony\Component\HttpFoundation\Response;
-
-    $app = new Application();
-
-    $app->register(new SerializerServiceProvider());
-
-    // only accept content types supported by the serializer via the assert method.
-    $app->get("/pages/{id}.{_format}", function (Request $request, $id) use ($app) {
-        // assume a page_repository service exists that returns Page objects. The
-        // object returned has getters and setters exposing the state.
-        $page = $app['page_repository']->find($id);
-        $format = $request->getRequestFormat();
-
-        if (!$page instanceof Page) {
-            $app->abort("No page found for id: $id");
-        }
-
-        return new Response($app['serializer']->serialize($page, $format), 200, array(
-            "Content-Type" => $request->getMimeType($format)
-        ));
-    })->assert("_format", "xml|json")
-      ->assert("id", "\d+");
-
-Using a Cache
--------------
-
-To use a cache, register a class implementing ``Doctrine\Common\Cache\Cache``::
-
-    $app->register(new Silex\Provider\SerializerServiceProvider());
-    $app['serializer.normalizers'] = function () use ($app) {
-        return [new \Symfony\Component\Serializer\Normalizer\CustomNormalizer(),
-            new \Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer(new ClassMetadataFactory(new  AnnotationLoader(new AnnotationReader()), $app['my_custom_cache']))
-        ];
-    };
diff --git a/vendor/silex/silex/doc/providers/service_controller.rst b/vendor/silex/silex/doc/providers/service_controller.rst
deleted file mode 100644
index 15bca28d1242634e924294f98daf1e0222cbb460..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/service_controller.rst
+++ /dev/null
@@ -1,142 +0,0 @@
-Service Controllers
-===================
-
-As your Silex application grows, you may wish to begin organizing your
-controllers in a more formal fashion. Silex can use controller classes out of
-the box, but with a bit of work, your controllers can be created as services,
-giving you the full power of dependency injection and lazy loading.
-
-.. ::todo Link above to controller classes cookbook
-
-Why would I want to do this?
-----------------------------
-
-- Dependency Injection over Service Location
-
-  Using this method, you can inject the actual dependencies required by your
-  controller and gain total inversion of control, while still maintaining the
-  lazy loading of your controllers and its dependencies. Because your
-  dependencies are clearly defined, they are easily mocked, allowing you to test
-  your controllers in isolation.
-
-- Framework Independence
-
-  Using this method, your controllers start to become more independent of the
-  framework you are using. Carefully crafted, your controllers will become
-  reusable with multiple frameworks. By keeping careful control of your
-  dependencies, your controllers could easily become compatible with Silex,
-  Symfony (full stack) and Drupal, to name just a few.
-
-Parameters
-----------
-
-There are currently no parameters for the ``ServiceControllerServiceProvider``.
-
-Services
---------
-
-There are no extra services provided, the ``ServiceControllerServiceProvider``
-simply extends the existing **resolver** service.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\ServiceControllerServiceProvider());
-
-Usage
------
-
-In this slightly contrived example of a blog API, we're going to change the
-``/posts.json`` route to use a controller, that is defined as a service.
-
-.. code-block:: php
-
-    use Silex\Application;
-    use Demo\Repository\PostRepository;
-
-    $app = new Application();
-
-    $app['posts.repository'] = function() {
-        return new PostRepository;
-    };
-
-    $app->get('/posts.json', function() use ($app) {
-        return $app->json($app['posts.repository']->findAll());
-    });
-
-Rewriting your controller as a service is pretty simple, create a Plain Ol' PHP
-Object with your ``PostRepository`` as a dependency, along with an
-``indexJsonAction`` method to handle the request. Although not shown in the
-example below, you can use type hinting and parameter naming to get the
-parameters you need, just like with standard Silex routes.
-
-If you are a TDD/BDD fan (and you should be), you may notice that this
-controller has well defined responsibilities and dependencies, and is easily
-tested/specced. You may also notice that the only external dependency is on
-``Symfony\Component\HttpFoundation\JsonResponse``, meaning this controller could
-easily be used in a Symfony (full stack) application, or potentially with other
-applications or frameworks that know how to handle a `Symfony/HttpFoundation
-<http://symfony.com/doc/master/components/http_foundation/introduction.html>`_
-``Response`` object.
-
-.. code-block:: php
-
-    namespace Demo\Controller;
-
-    use Demo\Repository\PostRepository;
-    use Symfony\Component\HttpFoundation\JsonResponse;
-
-    class PostController
-    {
-        protected $repo;
-
-        public function __construct(PostRepository $repo)
-        {
-            $this->repo = $repo;
-        }
-
-        public function indexJsonAction()
-        {
-            return new JsonResponse($this->repo->findAll());
-        }
-    }
-
-And lastly, define your controller as a service in the application, along with
-your route. The syntax in the route definition is the name of the service,
-followed by a single colon (:), followed by the method name.
-
-.. code-block:: php
-
-    $app['posts.controller'] = function() use ($app) {
-        return new PostController($app['posts.repository']);
-    };
-
-    $app->get('/posts.json', "posts.controller:indexJsonAction");
-
-In addition to using classes for service controllers, you can define any
-callable as a service in the application to be used for a route.
-
-.. code-block:: php
-
-    namespace Demo\Controller;
-
-    use Demo\Repository\PostRepository;
-    use Symfony\Component\HttpFoundation\JsonResponse;
-
-    function postIndexJson(PostRepository $repo) {
-        return function() use ($repo) {
-            return new JsonResponse($repo->findAll());
-        };
-    }
-
-And when defining your route, the code would look like the following:
-
-.. code-block:: php
-
-    $app['posts.controller'] = function($app) {
-        return Demo\Controller\postIndexJson($app['posts.repository']);
-    };
-
-    $app->get('/posts.json', 'posts.controller');
diff --git a/vendor/silex/silex/doc/providers/session.rst b/vendor/silex/silex/doc/providers/session.rst
deleted file mode 100644
index 9694501772cf13e8d4c93f9903e6bf1095f09b87..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/session.rst
+++ /dev/null
@@ -1,126 +0,0 @@
-Session
-=======
-
-The *SessionServiceProvider* provides a service for storing data persistently
-between requests.
-
-Parameters
-----------
-
-* **session.storage.save_path** (optional): The path for the
-  ``NativeFileSessionHandler``, defaults to the value of
-  ``sys_get_temp_dir()``.
-
-* **session.storage.options**: An array of options that is passed to the
-  constructor of the ``session.storage`` service.
-
-  In case of the default `NativeSessionStorage
-  <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.html>`_,
-  the most useful options are:
-
-  * **name**: The cookie name (_SESS by default)
-  * **id**: The session id (null by default)
-  * **cookie_lifetime**: Cookie lifetime
-  * **cookie_path**: Cookie path
-  * **cookie_domain**: Cookie domain
-  * **cookie_secure**: Cookie secure (HTTPS)
-  * **cookie_httponly**: Whether the cookie is http only
-
-  However, all of these are optional. Default Sessions life time is 1800
-  seconds (30 minutes). To override this, set the ``lifetime`` option.
-
-  For a full list of available options, read the `PHP
-  <http://php.net/session.configuration>`_ official documentation.
-
-* **session.test**: Whether to simulate sessions or not (useful when writing
-  functional tests).
-
-* **session.attribute_bag** (optional): The attribute bag service to use in the session.
-  Instance of ``AttributeBagInterface``.
-
-* **session.flash_bag** (optional): The flash bag service to use in the session.
-  Instance of ``FlashBagInterface``.
-
-Services
---------
-
-* **session**: An instance of Symfony's `Session
-  <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Session.html>`_.
-
-* **session.storage**: A service that is used for persistence of the session
-  data.
-
-* **session.storage.handler**: A service that is used by the
-  ``session.storage`` for data access. Defaults to a `NativeFileSessionHandler
-  <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.html>`_
-  storage handler.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\SessionServiceProvider());
-
-Using Handlers
---------------
-
-The default session handler is ``NativeFileSessionHandler``. However, there are
-multiple handlers available for use by setting ``session.storage.handler`` to
-an instance of one of the following handler objects:
-
-* `LegacyPdoSessionHandler <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/Handler/LegacyPdoSessionHandler.html>`_
-* `MemcacheSessionHandler <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/Handler/MemcacheSessionHandler.html>`_
-* `MemcachedSessionHandler <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/Handler/MemcachedSessionHandler.html>`_
-* `MongoDbSessionHandler <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/Handler/MongoDbSessionHandler.html>`_
-* `NativeFileSessionHandler <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.html>`_
-* `NativeSessionHandler <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeSessionHandler.html>`_
-* `NullSessionHandler <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/Handler/NullSessionHandler.html>`_
-* `PdoSessionHandler <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.html>`_
-* `WriteCheckSessionHandler <http://api.symfony.com/master/Symfony/Component/HttpFoundation/Session/Storage/Handler/WriteCheckSessionHandler.html>`_
-
-Usage
------
-
-The Session provider provides a ``session`` service. Here is an example that
-authenticates a user and creates a session for them::
-
-    use Symfony\Component\HttpFoundation\Request;
-    use Symfony\Component\HttpFoundation\Response;
-
-    $app->get('/login', function (Request $request) use ($app) {
-        $username = $request->server->get('PHP_AUTH_USER', false);
-        $password = $request->server->get('PHP_AUTH_PW');
-
-        if ('igor' === $username && 'password' === $password) {
-            $app['session']->set('user', array('username' => $username));
-            return $app->redirect('/account');
-        }
-
-        $response = new Response();
-        $response->headers->set('WWW-Authenticate', sprintf('Basic realm="%s"', 'site_login'));
-        $response->setStatusCode(401, 'Please sign in.');
-        return $response;
-    });
-
-    $app->get('/account', function () use ($app) {
-        if (null === $user = $app['session']->get('user')) {
-            return $app->redirect('/login');
-        }
-
-        return "Welcome {$user['username']}!";
-    });
-
-
-Custom Session Configurations
------------------------------
-
-If your system is using a custom session configuration (such as a redis handler
-from a PHP extension) then you need to disable the NativeFileSessionHandler by
-setting ``session.storage.handler`` to null. You will have to configure the
-``session.save_path`` ini setting yourself in that case.
-
-.. code-block:: php
-
-    $app['session.storage.handler'] = null;
-
diff --git a/vendor/silex/silex/doc/providers/swiftmailer.rst b/vendor/silex/silex/doc/providers/swiftmailer.rst
deleted file mode 100644
index 9297d665bf91627cfb304e0291a91ce86101f683..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/swiftmailer.rst
+++ /dev/null
@@ -1,156 +0,0 @@
-Swiftmailer
-===========
-
-The *SwiftmailerServiceProvider* provides a service for sending email through
-the `Swift Mailer <http://swiftmailer.org>`_ library.
-
-You can use the ``mailer`` service to send messages easily. By default, it
-will attempt to send emails through SMTP.
-
-Parameters
-----------
-
-* **swiftmailer.use_spool**: A boolean to specify whether or not to use the
-  memory spool, defaults to true.
-
-* **swiftmailer.options**: An array of options for the default SMTP-based
-  configuration.
-
-  The following options can be set:
-
-  * **host**: SMTP hostname, defaults to 'localhost'.
-  * **port**: SMTP port, defaults to 25.
-  * **username**: SMTP username, defaults to an empty string.
-  * **password**: SMTP password, defaults to an empty string.
-  * **encryption**: SMTP encryption, defaults to null. Valid values are 'tls', 'ssl', or null (indicating no encryption).
-  * **auth_mode**: SMTP authentication mode, defaults to null. Valid values are 'plain', 'login', 'cram-md5', or null.
-
-  Example usage::
-
-    $app['swiftmailer.options'] = array(
-        'host' => 'host',
-        'port' => '25',
-        'username' => 'username',
-        'password' => 'password',
-        'encryption' => null,
-        'auth_mode' => null
-    );
-
-* **swiftmailer.sender_address**: If set, all messages will be delivered with
-  this address as the "return path" address.
-
-* **swiftmailer.delivery_addresses**: If not empty, all email messages will be
-  sent to those addresses instead of being sent to their actual recipients. This
-  is often useful when developing.
-
-* **swiftmailer.delivery_whitelist**: Used in combination with
-  ``delivery_addresses``. If set, emails matching any of these patterns will be
-  delivered like normal, as well as being sent to ``delivery_addresses``.
-
-* **swiftmailer.plugins**: Array of SwiftMailer plugins.
-
-  Example usage::
-
-    $app['swiftmailer.plugins'] = function ($app) {
-        return array(
-            new \Swift_Plugins_PopBeforeSmtpPlugin('pop3.example.com'),
-        );
-    };
-
-Services
---------
-
-* **mailer**: The mailer instance.
-
-  Example usage::
-
-    $message = \Swift_Message::newInstance();
-
-    // ...
-
-    $app['mailer']->send($message);
-
-* **swiftmailer.transport**: The transport used for e-mail
-  delivery. Defaults to a ``Swift_Transport_EsmtpTransport``.
-
-* **swiftmailer.transport.buffer**: StreamBuffer used by
-  the transport.
-
-* **swiftmailer.transport.authhandler**: Authentication
-  handler used by the transport. Will try the following
-  by default: CRAM-MD5, login, plaintext.
-
-* **swiftmailer.transport.eventdispatcher**: Internal event
-  dispatcher used by Swiftmailer.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\SwiftmailerServiceProvider());
-
-.. note::
-
-    Add SwiftMailer as a dependency:
-
-    .. code-block:: bash
-
-        composer require swiftmailer/swiftmailer
-
-Usage
------
-
-The Swiftmailer provider provides a ``mailer`` service::
-
-    use Symfony\Component\HttpFoundation\Request;
-
-    $app->post('/feedback', function (Request $request) use ($app) {
-        $message = \Swift_Message::newInstance()
-            ->setSubject('[YourSite] Feedback')
-            ->setFrom(array('noreply@yoursite.com'))
-            ->setTo(array('feedback@yoursite.com'))
-            ->setBody($request->get('message'));
-
-        $app['mailer']->send($message);
-
-        return new Response('Thank you for your feedback!', 201);
-    });
-
-Usage in commands
-~~~~~~~~~~~~~~~~~
-
-By default, the Swiftmailer provider sends the emails using the ``KernelEvents::TERMINATE``
-event, which is fired after the response has been sent. However, as this event
-isn't fired for console commands, your emails won't be sent.
-
-For that reason, if you send emails using a command console, it is recommended
-that you disable the use of the memory spool (before accessing ``$app['mailer']``)::
-
-    $app['swiftmailer.use_spool'] = false;
-
-Alternatively, you can just make sure to flush the message spool by hand before
-ending the command execution. To do so, use the following code::
-
-    $app['swiftmailer.spooltransport']
-        ->getSpool()
-        ->flushQueue($app['swiftmailer.transport'])
-    ;
-
-Traits
-------
-
-``Silex\Application\SwiftmailerTrait`` adds the following shortcuts:
-
-* **mail**: Sends an email.
-
-.. code-block:: php
-
-    $app->mail(\Swift_Message::newInstance()
-        ->setSubject('[YourSite] Feedback')
-        ->setFrom(array('noreply@yoursite.com'))
-        ->setTo(array('feedback@yoursite.com'))
-        ->setBody($request->get('message')));
-
-For more information, check out the `Swift Mailer documentation
-<http://swiftmailer.org>`_.
diff --git a/vendor/silex/silex/doc/providers/translation.rst b/vendor/silex/silex/doc/providers/translation.rst
deleted file mode 100644
index 04bc41cf8c7836eff57428726f73641f9213b7d9..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/translation.rst
+++ /dev/null
@@ -1,196 +0,0 @@
-Translation
-===========
-
-The *TranslationServiceProvider* provides a service for translating your
-application into different languages.
-
-Parameters
-----------
-
-* **translator.domains** (optional): A mapping of domains/locales/messages.
-  This parameter contains the translation data for all languages and domains.
-
-* **locale** (optional): The locale for the translator. You will most likely
-  want to set this based on some request parameter. Defaults to ``en``.
-
-* **locale_fallbacks** (optional): Fallback locales for the translator. It will
-  be used when the current locale has no messages set. Defaults to ``en``.
-
-* **translator.cache_dir** (optional): Defines the cache directory
-  if you want translations to be cached.
-
-Services
---------
-
-* **translator**: An instance of `Translator
-  <http://api.symfony.com/master/Symfony/Component/Translation/Translator.html>`_,
-  that is used for translation.
-
-* **translator.loader**: An instance of an implementation of the translation
-  `LoaderInterface
-  <http://api.symfony.com/master/Symfony/Component/Translation/Loader/LoaderInterface.html>`_,
-  defaults to an `ArrayLoader
-  <http://api.symfony.com/master/Symfony/Component/Translation/Loader/ArrayLoader.html>`_.
-
-* **translator.message_selector**: An instance of `MessageSelector
-  <http://api.symfony.com/master/Symfony/Component/Translation/MessageSelector.html>`_.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\LocaleServiceProvider());
-    $app->register(new Silex\Provider\TranslationServiceProvider(), array(
-        'locale_fallbacks' => array('en'),
-    ));
-
-.. note::
-
-    Add the Symfony Translation Component as a dependency:
-
-    .. code-block:: bash
-
-        composer require symfony/translation
-
-Usage
------
-
-The Translation provider provides a ``translator`` service and makes use of
-the ``translator.domains`` parameter::
-
-    $app['translator.domains'] = array(
-        'messages' => array(
-            'en' => array(
-                'hello'     => 'Hello %name%',
-                'goodbye'   => 'Goodbye %name%',
-            ),
-            'de' => array(
-                'hello'     => 'Hallo %name%',
-                'goodbye'   => 'Tschüss %name%',
-            ),
-            'fr' => array(
-                'hello'     => 'Bonjour %name%',
-                'goodbye'   => 'Au revoir %name%',
-            ),
-        ),
-        'validators' => array(
-            'fr' => array(
-                'This value should be a valid number.' => 'Cette valeur doit être un nombre.',
-            ),
-        ),
-    );
-
-    $app->get('/{_locale}/{message}/{name}', function ($message, $name) use ($app) {
-        return $app['translator']->trans($message, array('%name%' => $name));
-    });
-
-The above example will result in following routes:
-
-* ``/en/hello/igor`` will return ``Hello igor``.
-
-* ``/de/hello/igor`` will return ``Hallo igor``.
-
-* ``/fr/hello/igor`` will return ``Bonjour igor``.
-
-* ``/it/hello/igor`` will return ``Hello igor`` (because of the fallback).
-
-Using Resources
----------------
-
-When translations are stored in a file, you can load them as follows::
-
-    $app = new Application();
-    
-    $app->register(new TranslationServiceProvider());
-    $app->extend('translator.resources', function ($resources, $app) {
-        $resources = array_merge($resources, array(
-            array('array', array('This value should be a valid number.' => 'Cette valeur doit être un nombre.'), 'fr', 'validators'),
-        ));
-
-        return $resources;
-    });
-
-Traits
-------
-
-``Silex\Application\TranslationTrait`` adds the following shortcuts:
-
-* **trans**: Translates the given message.
-
-* **transChoice**: Translates the given choice message by choosing a
-  translation according to a number.
-
-.. code-block:: php
-
-    $app->trans('Hello World');
-
-    $app->transChoice('Hello World');
-
-Recipes
--------
-
-YAML-based language files
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Having your translations in PHP files can be inconvenient. This recipe will
-show you how to load translations from external YAML files.
-
-First, add the Symfony ``Config`` and ``Yaml`` components as dependencies:
-
-.. code-block:: bash
-
-    composer require symfony/config symfony/yaml
-
-Next, you have to create the language mappings in YAML files. A naming you can
-use is ``locales/en.yml``. Just do the mapping in this file as follows:
-
-.. code-block:: yaml
-
-    hello: Hello %name%
-    goodbye: Goodbye %name%
-
-Then, register the ``YamlFileLoader`` on the ``translator`` and add all your
-translation files::
-
-    use Symfony\Component\Translation\Loader\YamlFileLoader;
-
-    $app->extend('translator', function($translator, $app) {
-        $translator->addLoader('yaml', new YamlFileLoader());
-
-        $translator->addResource('yaml', __DIR__.'/locales/en.yml', 'en');
-        $translator->addResource('yaml', __DIR__.'/locales/de.yml', 'de');
-        $translator->addResource('yaml', __DIR__.'/locales/fr.yml', 'fr');
-
-        return $translator;
-    });
-
-XLIFF-based language files
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Just as you would do with YAML translation files, you first need to add the
-Symfony ``Config`` component as a dependency (see above for details).
-
-Then, similarly, create XLIFF files in your locales directory and add them to
-the translator::
-
-    $translator->addResource('xliff', __DIR__.'/locales/en.xlf', 'en');
-    $translator->addResource('xliff', __DIR__.'/locales/de.xlf', 'de');
-    $translator->addResource('xliff', __DIR__.'/locales/fr.xlf', 'fr');
-
-.. note::
-
-    The XLIFF loader is already pre-configured by the extension.
-
-Accessing translations in Twig templates
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Once loaded, the translation service provider is available from within Twig
-templates when using the Twig bridge provided by Symfony (see
-:doc:`TwigServiceProvider </providers/twig>`):
-
-.. code-block:: jinja
-
-    {{ 'translation_key'|trans }}
-    {{ 'translation_key'|transchoice }}
-    {% trans %}translation_key{% endtrans %}
diff --git a/vendor/silex/silex/doc/providers/twig.rst b/vendor/silex/silex/doc/providers/twig.rst
deleted file mode 100644
index 56a2b50279d66dfa3832bf2dfe5c9959096c00da..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/twig.rst
+++ /dev/null
@@ -1,240 +0,0 @@
-Twig
-====
-
-The *TwigServiceProvider* provides integration with the `Twig
-<http://twig.sensiolabs.org/>`_ template engine.
-
-Parameters
-----------
-
-* **twig.path** (optional): Path to the directory containing twig template
-  files (it can also be an array of paths).
-
-* **twig.templates** (optional): An associative array of template names to
-  template contents. Use this if you want to define your templates inline.
-
-* **twig.options** (optional): An associative array of twig
-  options. Check out the `twig documentation <http://twig.sensiolabs.org/doc/api.html#environment-options>`_
-  for more information.
-
-* **twig.form.templates** (optional): An array of templates used to render
-  forms (only available when the ``FormServiceProvider`` is enabled). The
-  default theme is ``form_div_layout.html.twig``, but you can use the other
-  built-in themes: ``form_table_layout.html.twig``,
-  ``bootstrap_3_layout.html.twig``, and
-  ``bootstrap_3_horizontal_layout.html.twig``.
-
-* **twig.date.format** (optional): Default format used by the ``date``
-  filter. The format string must conform to the format accepted by
-  `date() <http://www.php.net/date>`_.
-
-* **twig.date.interval_format** (optional): Default format used by the
-  ``date`` filter when the filtered data is of type `DateInterval <http://www.php.net/DateInterval>`_.
-  The format string must conform to the format accepted by
-  `DateInterval::format() <http://www.php.net/DateInterval.format>`_.
-
-* **twig.date.timezone** (optional): Default timezone used when formatting
-  dates. If set to ``null`` the timezone returned by `date_default_timezone_get() <http://www.php.net/date_default_timezone_get>`_
-  is used.
-
-* **twig.number_format.decimals** (optional): Default number of decimals
-  displayed by the ``number_format`` filter.
-
-* **twig.number_format.decimal_point** (optional): Default separator for
-  the decimal point used by the ``number_format`` filter.
-
-* **twig.number_format.thousands_separator** (optional): Default thousands
-  separator used by the ``number_format`` filter.
-
-Services
---------
-
-* **twig**: The ``Twig_Environment`` instance. The main way of
-  interacting with Twig.
-
-* **twig.loader**: The loader for Twig templates which uses the ``twig.path``
-  and the ``twig.templates`` options. You can also replace the loader
-  completely.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\TwigServiceProvider(), array(
-        'twig.path' => __DIR__.'/views',
-    ));
-
-.. note::
-
-    Add Twig as a dependency:
-
-    .. code-block:: bash
-
-        composer require twig/twig
-
-Usage
------
-
-The Twig provider provides a ``twig`` service that can render templates::
-
-    $app->get('/hello/{name}', function ($name) use ($app) {
-        return $app['twig']->render('hello.twig', array(
-            'name' => $name,
-        ));
-    });
-
-Symfony Components Integration
-------------------------------
-
-Symfony provides a Twig bridge that provides additional integration between
-some Symfony components and Twig. Add it as a dependency:
-
-.. code-block:: bash
-
-    composer require symfony/twig-bridge
-
-When present, the ``TwigServiceProvider`` will provide you with the following
-additional capabilities.
-
-* Access to the ``path()`` and ``url()`` functions. You can find more
-  information in the `Symfony Routing documentation
-  <http://symfony.com/doc/current/book/routing.html#generating-urls-from-a-template>`_:
-
-  .. code-block:: jinja
-
-      {{ path('homepage') }}
-      {{ url('homepage') }} {# generates the absolute url http://example.org/ #}
-      {{ path('hello', {name: 'Fabien'}) }}
-      {{ url('hello', {name: 'Fabien'}) }} {# generates the absolute url http://example.org/hello/Fabien #}
-
-* Access to the ``absolute_url()`` and ``relative_path()`` Twig functions.
-
-Translations Support
-~~~~~~~~~~~~~~~~~~~~
-
-If you are using the ``TranslationServiceProvider``, you will get the
-``trans()`` and ``transchoice()`` functions for translation in Twig templates.
-You can find more information in the `Symfony Translation documentation
-<http://symfony.com/doc/current/book/translation.html#twig-templates>`_.
-
-Form Support
-~~~~~~~~~~~~
-
-If you are using the ``FormServiceProvider``, you will get a set of helpers for
-working with forms in templates. You can find more information in the `Symfony
-Forms reference
-<http://symfony.com/doc/current/reference/forms/twig_reference.html>`_.
-
-Security Support
-~~~~~~~~~~~~~~~~
-
-If you are using the ``SecurityServiceProvider``, you will have access to the
-``is_granted()`` function in templates. You can find more information in the
-`Symfony Security documentation
-<http://symfony.com/doc/current/book/security.html#access-control-in-templates>`_.
-
-Web Link Support
-~~~~~~~~~~~~~~~~
-
-If you are using the ``symfony/web-link`` component, you will have access to the
-``preload()``, ``prefetch()``, ``prerender()``, ``dns_prefetch()``,
-``preconnect()`` and ``link()`` functions in templates. You can find more
-information in the `Symfony WebLink documentation
-<https://symfony.com/doc/current/components/weblink/introduction.html>`_.
-
-Global Variable
-~~~~~~~~~~~~~~~
-
-When the Twig bridge is available, the ``global`` variable refers to an
-instance of `AppVariable <http://api.symfony.com/master/Symfony/Bridge/Twig/AppVariable.html>`_.
-It gives access to the following methods:
-
-.. code-block:: jinja
-
-    {# The current Request #}
-    {{ global.request }}
-
-    {# The current User (when security is enabled) #}
-    {{ global.user }}
-
-    {# The current Session #}
-    {{ global.session }}
-
-    {# The debug flag #}
-    {{ global.debug }}
-
-    {# The flash messages (Symfony 3.3 or later) #}
-    {{ global.flashes }}
-
-Rendering a Controller
-~~~~~~~~~~~~~~~~~~~~~~
-
-A ``render`` function is also registered to help you render another controller
-from a template (available when the :doc:`HttpFragment Service Provider
-</providers/http_fragment>` is registered):
-
-.. code-block:: jinja
-
-    {{ render(url('sidebar')) }}
-
-    {# or you can reference a controller directly without defining a route for it #}
-    {{ render(controller(controller)) }}
-
-.. note::
-
-    You must prepend the ``app.request.baseUrl`` to render calls to ensure
-    that the render works when deployed into a sub-directory of the docroot.
-
-.. note::
-
-    Read the Twig `reference`_ for Symfony document to learn more about the
-    various Twig functions.
-
-Traits
-------
-
-``Silex\Application\TwigTrait`` adds the following shortcuts:
-
-* **render**: Renders a view with the given parameters and returns a Response
-  object.
-
-.. code-block:: php
-
-    return $app->render('index.html', ['name' => 'Fabien']);
-
-    $response = new Response();
-    $response->setTtl(10);
-
-    return $app->render('index.html', ['name' => 'Fabien'], $response);
-
-.. code-block:: php
-
-    // stream a view
-    use Symfony\Component\HttpFoundation\StreamedResponse;
-
-    return $app->render('index.html', ['name' => 'Fabien'], new StreamedResponse());
-
-* **renderView**: Renders a view with the given parameters and returns a string.
-
-.. code-block:: php
-
-    $content = $app->renderView('index.html', ['name' => 'Fabien']);
-
-Customization
--------------
-
-You can configure the Twig environment before using it by extending the
-``twig`` service::
-
-    $app->extend('twig', function($twig, $app) {
-        $twig->addGlobal('pi', 3.14);
-        $twig->addFilter('levenshtein', new \Twig_Filter_Function('levenshtein'));
-
-        return $twig;
-    });
-
-For more information, check out the `official Twig documentation
-<http://twig.sensiolabs.org>`_.
-
-.. _reference: https://symfony.com/doc/current/reference/twig_reference.html#controller
diff --git a/vendor/silex/silex/doc/providers/validator.rst b/vendor/silex/silex/doc/providers/validator.rst
deleted file mode 100644
index 5c501bb75d2c141ca1bc8e68000c33b0e1b18bc5..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/validator.rst
+++ /dev/null
@@ -1,224 +0,0 @@
-Validator
-=========
-
-The *ValidatorServiceProvider* provides a service for validating data. It is
-most useful when used with the *FormServiceProvider*, but can also be used
-standalone.
-
-Parameters
-----------
-
-* **validator.validator_service_ids** (optional): An array of service names representing
-  validators.
-
-* **validator.translation_domain** (optional): The translation domain to use for translating validator messages.
-  (Defaults to ``validators``.)
-
-* **validator.object_initializers** (optional): An array of object initializers.
-  See `the relevant Validation documentation
-  <http://symfony.com/doc/current/reference/dic_tags.html#validator-initializer>`_.
-
-Services
---------
-
-* **validator**: An instance of `Validator
-  <http://api.symfony.com/master/Symfony/Component/Validator/ValidatorInterface.html>`_.
-
-* **validator.mapping.class_metadata_factory**: Factory for metadata loaders,
-  which can read validation constraint information from classes. Defaults to
-  StaticMethodLoader--ClassMetadataFactory.
-
-  This means you can define a static ``loadValidatorMetadata`` method on your
-  data class, which takes a ClassMetadata argument. Then you can set
-  constraints on this ClassMetadata instance.
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\ValidatorServiceProvider());
-
-.. note::
-
-    Add the Symfony Validator Component as a dependency:
-
-    .. code-block:: bash
-
-        composer require symfony/validator
-
-Usage
------
-
-The Validator provider provides a ``validator`` service.
-
-Validating Values
-~~~~~~~~~~~~~~~~~
-
-You can validate values directly using the ``validate`` validator
-method::
-
-    use Symfony\Component\Validator\Constraints as Assert;
-
-    $app->get('/validate/{email}', function ($email) use ($app) {
-        $errors = $app['validator']->validate($email, new Assert\Email());
-
-        if (count($errors) > 0) {
-            return (string) $errors;
-        } else {
-            return 'The email is valid';
-        }
-    });
-
-Validating Associative Arrays
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Validating associative arrays is like validating simple values, with a
-collection of constraints::
-
-    use Symfony\Component\Validator\Constraints as Assert;
-
-    $book = array(
-        'title' => 'My Book',
-        'author' => array(
-            'first_name' => 'Fabien',
-            'last_name'  => 'Potencier',
-        ),
-    );
-
-    $constraint = new Assert\Collection(array(
-        'title' => new Assert\Length(array('min' => 10)),
-        'author' => new Assert\Collection(array(
-            'first_name' => array(new Assert\NotBlank(), new Assert\Length(array('min' => 10))),
-            'last_name'  => new Assert\Length(array('min' => 10)),
-        )),
-    ));
-    $errors = $app['validator']->validate($book, $constraint);
-
-    if (count($errors) > 0) {
-        foreach ($errors as $error) {
-            echo $error->getPropertyPath().' '.$error->getMessage()."\n";
-        }
-    } else {
-        echo 'The book is valid';
-    }
-
-Validating Objects
-~~~~~~~~~~~~~~~~~~
-
-If you want to add validations to a class, you can define the constraint for
-the class properties and getters, and then call the ``validate`` method::
-
-    use Symfony\Component\Validator\Constraints as Assert;
-
-    class Book
-    {
-        public $title;
-        public $author;
-    }
-
-    class Author
-    {
-        public $first_name;
-        public $last_name;
-    }
-
-    $author = new Author();
-    $author->first_name = 'Fabien';
-    $author->last_name = 'Potencier';
-
-    $book = new Book();
-    $book->title = 'My Book';
-    $book->author = $author;
-
-    $metadata = $app['validator.mapping.class_metadata_factory']->getMetadataFor('Author');
-    $metadata->addPropertyConstraint('first_name', new Assert\NotBlank());
-    $metadata->addPropertyConstraint('first_name', new Assert\Length(array('min' => 10)));
-    $metadata->addPropertyConstraint('last_name', new Assert\Length(array('min' => 10)));
-
-    $metadata = $app['validator.mapping.class_metadata_factory']->getMetadataFor('Book');
-    $metadata->addPropertyConstraint('title', new Assert\Length(array('min' => 10)));
-    $metadata->addPropertyConstraint('author', new Assert\Valid());
-
-    $errors = $app['validator']->validate($book);
-
-    if (count($errors) > 0) {
-        foreach ($errors as $error) {
-            echo $error->getPropertyPath().' '.$error->getMessage()."\n";
-        }
-    } else {
-        echo 'The author is valid';
-    }
-
-You can also declare the class constraint by adding a static
-``loadValidatorMetadata`` method to your classes::
-
-    use Symfony\Component\Validator\Mapping\ClassMetadata;
-    use Symfony\Component\Validator\Constraints as Assert;
-
-    class Book
-    {
-        public $title;
-        public $author;
-
-        static public function loadValidatorMetadata(ClassMetadata $metadata)
-        {
-            $metadata->addPropertyConstraint('title', new Assert\Length(array('min' => 10)));
-            $metadata->addPropertyConstraint('author', new Assert\Valid());
-        }
-    }
-
-    class Author
-    {
-        public $first_name;
-        public $last_name;
-
-        static public function loadValidatorMetadata(ClassMetadata $metadata)
-        {
-            $metadata->addPropertyConstraint('first_name', new Assert\NotBlank());
-            $metadata->addPropertyConstraint('first_name', new Assert\Length(array('min' => 10)));
-            $metadata->addPropertyConstraint('last_name', new Assert\Length(array('min' => 10)));
-        }
-    }
-
-    $app->get('/validate/{email}', function ($email) use ($app) {
-        $author = new Author();
-        $author->first_name = 'Fabien';
-        $author->last_name = 'Potencier';
-
-        $book = new Book();
-        $book->title = 'My Book';
-        $book->author = $author;
-
-        $errors = $app['validator']->validate($book);
-
-        if (count($errors) > 0) {
-            foreach ($errors as $error) {
-                echo $error->getPropertyPath().' '.$error->getMessage()."\n";
-            }
-        } else {
-            echo 'The author is valid';
-        }
-    });
-
-.. note::
-
-    Use ``addGetterConstraint()`` to add constraints on getter methods and
-    ``addConstraint()`` to add constraints on the class itself.
-
-Translation
-~~~~~~~~~~~
-
-To be able to translate the error messages, you can use the translator
-provider and register the messages under the ``validators`` domain::
-
-    $app['translator.domains'] = array(
-        'validators' => array(
-            'fr' => array(
-                'This value should be a valid number.' => 'Cette valeur doit être un nombre.',
-            ),
-        ),
-    );
-
-For more information, consult the `Symfony Validation documentation
-<http://symfony.com/doc/master/book/validation.html>`_.
diff --git a/vendor/silex/silex/doc/providers/var_dumper.rst b/vendor/silex/silex/doc/providers/var_dumper.rst
deleted file mode 100644
index ea4dd19a4b0cddbc781a8523de6010ee80ceec8f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/providers/var_dumper.rst
+++ /dev/null
@@ -1,44 +0,0 @@
-Var Dumper
-==========
-
-The *VarDumperServiceProvider* provides a mechanism that allows exploring then
-dumping any PHP variable.
-
-Parameters
-----------
-
-* **var_dumper.dump_destination**: A stream URL where dumps should be written
-  to (defaults to ``null``).
-
-Services
---------
-
-* n/a
-
-Registering
------------
-
-.. code-block:: php
-
-    $app->register(new Silex\Provider\VarDumperServiceProvider());
-
-.. note::
-
-    Add the Symfony VarDumper Component as a dependency:
-
-    .. code-block:: bash
-
-        composer require symfony/var-dumper
-
-Usage
------
-
-Adding the VarDumper component as a Composer dependency gives you access to the
-``dump()`` PHP function anywhere in your code.
-
-If you are using Twig, it also provides a ``dump()`` Twig function and a
-``dump`` Twig tag.
-
-The VarDumperServiceProvider is also useful when used with the Silex
-WebProfiler as the dumps are made available in the web debug toolbar and in the
-web profiler.
diff --git a/vendor/silex/silex/doc/services.rst b/vendor/silex/silex/doc/services.rst
deleted file mode 100644
index c95451458a6ebad0dda469371f90e325ccbe4eb3..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/services.rst
+++ /dev/null
@@ -1,294 +0,0 @@
-Services
-========
-
-Silex is not only a framework, it is also a service container. It does this by
-extending `Pimple <http://pimple.sensiolabs.org>`_ which provides a very simple
-service container.
-
-Dependency Injection
---------------------
-
-.. note::
-
-    You can skip this if you already know what Dependency Injection is.
-
-Dependency Injection is a design pattern where you pass dependencies to
-services instead of creating them from within the service or relying on
-globals. This generally leads to code that is decoupled, re-usable, flexible
-and testable.
-
-Here is an example of a class that takes a ``User`` object and stores it as a
-file in JSON format::
-
-    class JsonUserPersister
-    {
-        private $basePath;
-
-        public function __construct($basePath)
-        {
-            $this->basePath = $basePath;
-        }
-
-        public function persist(User $user)
-        {
-            $data = $user->getAttributes();
-            $json = json_encode($data);
-            $filename = $this->basePath.'/'.$user->id.'.json';
-            file_put_contents($filename, $json, LOCK_EX);
-        }
-    }
-
-In this simple example the dependency is the ``basePath`` property. It is
-passed to the constructor. This means you can create several independent
-instances with different base paths. Of course dependencies do not have to be
-simple strings. More often they are in fact other services.
-
-A service container is responsible for creating and storing services. It can
-recursively create dependencies of the requested services and inject them. It
-does so lazily, which means a service is only created when you actually need it.
-
-Pimple
-------
-
-Pimple makes strong use of closures and implements the ArrayAccess interface.
-
-We will start off by creating a new instance of Pimple -- and because
-``Silex\Application`` extends ``Pimple\Container`` all of this applies to Silex
-as well::
-
-    $container = new Pimple\Container();
-
-or::
-
-    $app = new Silex\Application();
-
-Parameters
-~~~~~~~~~~
-
-You can set parameters (which are usually strings) by setting an array key on
-the container::
-
-    $app['some_parameter'] = 'value';
-
-The array key can be any value. By convention dots are used for namespacing::
-
-    $app['asset.host'] = 'http://cdn.mysite.com/';
-
-Reading parameter values is possible with the same syntax::
-
-    echo $app['some_parameter'];
-
-Service definitions
-~~~~~~~~~~~~~~~~~~~
-
-Defining services is no different than defining parameters. You just set an
-array key on the container to be a closure. However, when you retrieve the
-service, the closure is executed. This allows for lazy service creation::
-
-    $app['some_service'] = function () {
-        return new Service();
-    };
-
-And to retrieve the service, use::
-
-    $service = $app['some_service'];
-
-On first invocation, this will create the service; the same instance will then
-be returned on any subsequent access.
-
-Factory services
-~~~~~~~~~~~~~~~~
-
-If you want a different instance to be returned for each service access, wrap
-the service definition with the ``factory()`` method::
-
-    $app['some_service'] = $app->factory(function () {
-        return new Service();
-    });
-
-Every time you call ``$app['some_service']``, a new instance of the service is
-created.
-
-Access container from closure
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In many cases you will want to access the service container from within a
-service definition closure. For example when fetching services the current
-service depends on.
-
-Because of this, the container is passed to the closure as an argument::
-
-    $app['some_service'] = function ($app) {
-        return new Service($app['some_other_service'], $app['some_service.config']);
-    };
-
-Here you can see an example of Dependency Injection. ``some_service`` depends
-on ``some_other_service`` and takes ``some_service.config`` as configuration
-options. The dependency is only created when ``some_service`` is accessed, and
-it is possible to replace either of the dependencies by simply overriding
-those definitions.
-
-Going back to our initial example, here's how we could use the container
-to manage its dependencies::
-
-    $app['user.persist_path'] = '/tmp/users';
-    $app['user.persister'] = function ($app) {
-        return new JsonUserPersister($app['user.persist_path']);
-    };
-
-
-Protected closures
-~~~~~~~~~~~~~~~~~~
-
-Because the container sees closures as factories for services, it will always
-execute them when reading them.
-
-In some cases you will however want to store a closure as a parameter, so that
-you can fetch it and execute it yourself -- with your own arguments.
-
-This is why Pimple allows you to protect your closures from being executed, by
-using the ``protect`` method::
-
-    $app['closure_parameter'] = $app->protect(function ($a, $b) {
-        return $a + $b;
-    });
-
-    // will not execute the closure
-    $add = $app['closure_parameter'];
-
-    // calling it now
-    echo $add(2, 3);
-
-Note that the container is not provided as an argument to protected closures.
-However, you can inject it via `use($app)`::
-
-    $app['closure_parameter'] = $app->protect(function ($a, $b) use ($app) {
-        // ...
-    });
-
-Modify services after definition
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Sometimes you want to alter a service after its definition. Pimple facilitates
-this by extending the already defined service.
-
-First argument of the ``extend`` method is the name of the service you want to
-modify. Second argument is a callable. This callable is executed with the service
-you want to alter as its first argument, the service container itself is provided
-in the second argument.
-
-.. note::
-
-    Be sure to return the modified service in the callable.
-
-You can use this pattern to add functionality to :doc:Twig <providers/twig> for
-example::
-
-    $app->extend('twig', function($twig, $app) {
-        $twig->addGlobal('pi', 3.14);
-        $twig->addFilter('levenshtein', new \Twig_Filter_Function('levenshtein'));
-        
-        return $twig;
-    });
-
-Core services
--------------
-
-Silex defines a range of services.
-
-* **request_stack**: Controls the lifecycle of requests, an instance of
-  `RequestStack <http://api.symfony.com/master/Symfony/Component/HttpFoundation/RequestStack.html>`_.
-  It gives you access to ``GET``, ``POST`` parameters and lots more!
-
-  Example usage::
-
-    $id = $app['request_stack']->getCurrentRequest()->get('id');
-
-  A request is only available when a request is being served; you can only
-  access it from within a controller, an application before/after middlewares,
-  or an error handler.
-
-* **routes**: The `RouteCollection
-  <http://api.symfony.com/master/Symfony/Component/Routing/RouteCollection.html>`_
-  that is used internally. You can add, modify, read routes.
-
-* **url_generator**: An instance of `UrlGenerator
-  <http://api.symfony.com/master/Symfony/Component/Routing/Generator/UrlGenerator.html>`_,
-  using the `RouteCollection
-  <http://api.symfony.com/master/Symfony/Component/Routing/RouteCollection.html>`_
-  that is provided through the ``routes`` service. It has a ``generate``
-  method, which takes the route name as an argument, followed by an array of
-  route parameters.
-
-* **controllers**: The ``Silex\ControllerCollection`` that is used internally.
-  Check the :doc:`Internals chapter <internals>` for more information.
-
-* **dispatcher**: The `EventDispatcher
-  <http://api.symfony.com/master/Symfony/Component/EventDispatcher/EventDispatcher.html>`_
-  that is used internally. It is the core of the Symfony system and is used
-  quite a bit by Silex.
-
-* **resolver**: The `ControllerResolver
-  <http://api.symfony.com/master/Symfony/Component/HttpKernel/Controller/ControllerResolver.html>`_
-  that is used internally. It takes care of executing the controller with the
-  right arguments.
-
-* **kernel**: The `HttpKernel
-  <http://api.symfony.com/master/Symfony/Component/HttpKernel/HttpKernel.html>`_
-  that is used internally. The HttpKernel is the heart of Symfony, it takes a
-  Request as input and returns a Response as output.
-
-* **request_context**: The request context is a simplified representation of
-  the request that is used by the router and the URL generator.
-
-* **exception_handler**: The Exception handler is the default handler that is
-  used when you don't register one via the ``error()`` method or if your
-  handler does not return a Response. Disable it with
-  ``unset($app['exception_handler'])``.
-
-* **logger**: A `LoggerInterface <https://github.com/php-fig/log/blob/master/Psr/Log/LoggerInterface.php>`_ instance. By default, logging is
-  disabled as the value is set to ``null``. To enable logging you can either use
-  the :doc:`MonologServiceProvider <providers/monolog>` or define your own ``logger`` service that
-  conforms to the PSR logger interface.
-
-Core traits
------------
-
-* ``Silex\Application\UrlGeneratorTrait`` adds the following shortcuts:
-
-  * **path**: Generates a path.
-
-  * **url**: Generates an absolute URL.
-
-  .. code-block:: php
-
-      $app->path('homepage');
-      $app->url('homepage');
-
-Core parameters
----------------
-
-* **request.http_port** (optional): Allows you to override the default port
-  for non-HTTPS URLs. If the current request is HTTP, it will always use the
-  current port.
-
-  Defaults to 80.
-
-  This parameter can be used when generating URLs.
-
-* **request.https_port** (optional): Allows you to override the default port
-  for HTTPS URLs. If the current request is HTTPS, it will always use the
-  current port.
-
-  Defaults to 443.
-
-  This parameter can be used when generating URLs.
-
-* **debug** (optional): Returns whether or not the application is running in
-  debug mode.
-
-  Defaults to false.
-
-* **charset** (optional): The charset to use for Responses.
-
-  Defaults to UTF-8.
diff --git a/vendor/silex/silex/doc/testing.rst b/vendor/silex/silex/doc/testing.rst
deleted file mode 100644
index 06eb22593eb1804cb23a27dd523be347baabb429..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/testing.rst
+++ /dev/null
@@ -1,224 +0,0 @@
-Testing
-=======
-
-Because Silex is built on top of Symfony, it is very easy to write functional
-tests for your application. Functional tests are automated software tests that
-ensure that your code is working correctly. They go through the user interface,
-using a fake browser, and mimic the actions a user would do.
-
-Why
----
-
-If you are not familiar with software tests, you may be wondering why you would
-need this. Every time you make a change to your application, you have to test
-it. This means going through all the pages and making sure they are still
-working. Functional tests save you a lot of time, because they enable you to
-test your application in usually under a second by running a single command.
-
-For more information on functional testing, unit testing, and automated
-software tests in general, check out `PHPUnit
-<https://github.com/sebastianbergmann/phpunit>`_ and `Bulat Shakirzyanov's talk
-on Clean Code <http://www.slideshare.net/avalanche123/clean-code-5609451>`_.
-
-PHPUnit
--------
-
-`PHPUnit <https://github.com/sebastianbergmann/phpunit>`_ is the de-facto
-standard testing framework for PHP. It was built for writing unit tests, but it
-can be used for functional tests too. You write tests by creating a new class,
-that extends the ``PHPUnit\Framework\TestCase``. Your test cases are methods
-prefixed with ``test``::
-
-    use PHPUnit\Framework\TestCase;
-
-    class ContactFormTest extends TestCase
-    {
-        public function testInitialPage()
-        {
-            ...
-        }
-    }
-
-In your test cases, you do assertions on the state of what you are testing. In
-this case we are testing a contact form, so we would want to assert that the
-page loaded correctly and contains our form::
-
-        public function testInitialPage()
-        {
-            $statusCode = ...
-            $pageContent = ...
-
-            $this->assertEquals(200, $statusCode);
-            $this->assertContains('Contact us', $pageContent);
-            $this->assertContains('<form', $pageContent);
-        }
-
-Here you see some of the available assertions. There is a full list available
-in the `Writing Tests for PHPUnit
-<https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html>`_
-section of the PHPUnit documentation.
-
-WebTestCase
------------
-
-Symfony provides a WebTestCase class that can be used to write functional
-tests. The Silex version of this class is ``Silex\WebTestCase``, and you can
-use it by making your test extend it::
-
-    use Silex\WebTestCase;
-
-    class ContactFormTest extends WebTestCase
-    {
-        ...
-    }
-
-.. caution::
-
-    If you need to override the ``setUp()`` method, don't forget to call the
-    parent (``parent::setUp()``) to call the Silex default setup.
-
-.. note::
-
-    If you want to use the Symfony ``WebTestCase`` class you will need to
-    explicitly install its dependencies for your project:
-
-    .. code-block:: bash
-
-        composer require --dev symfony/browser-kit symfony/css-selector
-
-For your WebTestCase, you will have to implement a ``createApplication``
-method, which returns your application instance::
-
-        public function createApplication()
-        {
-            // app.php must return an Application instance
-            return require __DIR__.'/path/to/app.php';
-        }
-
-Make sure you do **not** use ``require_once`` here, as this method will be
-executed before every test.
-
-.. tip::
-
-    By default, the application behaves in the same way as when using it from a
-    browser. But when an error occurs, it is sometimes easier to get raw
-    exceptions instead of HTML pages. It is rather simple if you tweak the
-    application configuration in the ``createApplication()`` method like
-    follows::
-
-        public function createApplication()
-        {
-            $app = require __DIR__.'/path/to/app.php';
-            $app['debug'] = true;
-            unset($app['exception_handler']);
-
-            return $app;
-        }
-
-.. tip::
-
-    If your application use sessions, set ``session.test`` to ``true`` to
-    simulate sessions::
-
-        public function createApplication()
-        {
-            // ...
-
-            $app['session.test'] = true;
-
-            // ...
-        }
-
-The WebTestCase provides a ``createClient`` method. A client acts as a browser,
-and allows you to interact with your application. Here's how it works::
-
-        public function testInitialPage()
-        {
-            $client = $this->createClient();
-            $crawler = $client->request('GET', '/');
-
-            $this->assertTrue($client->getResponse()->isOk());
-            $this->assertCount(1, $crawler->filter('h1:contains("Contact us")'));
-            $this->assertCount(1, $crawler->filter('form'));
-            ...
-        }
-
-There are several things going on here. You have both a ``Client`` and a
-``Crawler``.
-
-You can also access the application through ``$this->app``.
-
-Client
-~~~~~~
-
-The client represents a browser. It holds your browsing history, cookies and
-more. The ``request`` method allows you to make a request to a page on your
-application.
-
-.. note::
-
-    You can find some documentation for it in `the client section of the
-    testing chapter of the Symfony documentation
-    <http://symfony.com/doc/current/book/testing.html#the-test-client>`_.
-
-Crawler
-~~~~~~~
-
-The crawler allows you to inspect the content of a page. You can filter it
-using CSS expressions and lots more.
-
-.. note::
-
-    You can find some documentation for it in `the crawler section of the testing
-    chapter of the Symfony documentation
-    <http://symfony.com/doc/current/book/testing.html#the-test-client>`_.
-
-Configuration
--------------
-
-The suggested way to configure PHPUnit is to create a ``phpunit.xml.dist``
-file, a ``tests`` folder and your tests in
-``tests/YourApp/Tests/YourTest.php``. The ``phpunit.xml.dist`` file should
-look like this:
-
-.. code-block:: xml
-
-    <?xml version="1.0" encoding="UTF-8"?>
-    <phpunit bootstrap="./vendor/autoload.php"
-             backupGlobals="false"
-             backupStaticAttributes="false"
-             colors="true"
-             convertErrorsToExceptions="true"
-             convertNoticesToExceptions="true"
-             convertWarningsToExceptions="true"
-             processIsolation="false"
-             stopOnFailure="false"
-             syntaxCheck="false"
-    >
-        <testsuites>
-            <testsuite name="YourApp Test Suite">
-                <directory>./tests/</directory>
-            </testsuite>
-        </testsuites>
-    </phpunit>
-
-Your ``tests/YourApp/Tests/YourTest.php`` should look like this::
-
-    namespace YourApp\Tests;
-
-    use Silex\WebTestCase;
-
-    class YourTest extends WebTestCase
-    {
-        public function createApplication()
-        {
-            return require __DIR__.'/../../../app.php';
-        }
-
-        public function testFooBar()
-        {
-            ...
-        }
-    }
-
-Now, when running ``phpunit`` on the command line, tests should run.
diff --git a/vendor/silex/silex/doc/usage.rst b/vendor/silex/silex/doc/usage.rst
deleted file mode 100644
index 7d857b8e10161b27fb1b1e6975f5441c9a523406..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/usage.rst
+++ /dev/null
@@ -1,820 +0,0 @@
-Usage
-=====
-
-Installation
-------------
-
-If you want to get started fast, use the `Silex Skeleton`_:
-
-.. code-block:: bash
-
-    composer create-project fabpot/silex-skeleton path/to/install "~2.0"
-
-If you want more flexibility, use Composer_ instead:
-
-.. code-block:: bash
-
-    composer require silex/silex:~2.0
-
-Web Server
-----------
-
-All examples in the documentation rely on a well-configured web server; read
-the :doc:`webserver documentation<web_servers>` to check yours.
-
-Bootstrap
----------
-
-To bootstrap Silex, all you need to do is require the ``vendor/autoload.php``
-file and create an instance of ``Silex\Application``. After your controller
-definitions, call the ``run`` method on your application::
-
-    // web/index.php
-    require_once __DIR__.'/../vendor/autoload.php';
-
-    $app = new Silex\Application();
-
-    // ... definitions
-
-    $app->run();
-
-.. tip::
-
-    When developing a website, you might want to turn on the debug mode to
-    ease debugging::
-
-        $app['debug'] = true;
-
-.. tip::
-
-    If your application is hosted behind a reverse proxy at address ``$ip``,
-    and you want Silex to trust the ``X-Forwarded-For*`` headers, you will
-    need to run your application like this::
-
-        use Symfony\Component\HttpFoundation\Request;
-
-        Request::setTrustedProxies(array($ip));
-        $app->run();
-
-Routing
--------
-
-In Silex you define a route and the controller that is called when that
-route is matched. A route pattern consists of:
-
-* *Pattern*: The route pattern defines a path that points to a resource. The
-  pattern can include variable parts and you are able to set RegExp
-  requirements for them.
-
-* *Method*: One of the following HTTP methods: ``GET``, ``POST``, ``PUT``,
-  ``DELETE``, ``PATCH``, or ``OPTIONS``. This describes the interaction with
-  the resource.
-
-The controller is defined using a closure like this::
-
-    function () {
-        // ... do something
-    }
-
-The return value of the closure becomes the content of the page.
-
-Example GET Route
-~~~~~~~~~~~~~~~~~
-
-Here is an example definition of a ``GET`` route::
-
-    $blogPosts = array(
-        1 => array(
-            'date'      => '2011-03-29',
-            'author'    => 'igorw',
-            'title'     => 'Using Silex',
-            'body'      => '...',
-        ),
-    );
-
-    $app->get('/blog', function () use ($blogPosts) {
-        $output = '';
-        foreach ($blogPosts as $post) {
-            $output .= $post['title'];
-            $output .= '<br />';
-        }
-
-        return $output;
-    });
-
-Visiting ``/blog`` will return a list of blog post titles. The ``use``
-statement means something different in this context. It tells the closure to
-import the ``$blogPosts`` variable from the outer scope. This allows you to use
-it from within the closure.
-
-Dynamic Routing
-~~~~~~~~~~~~~~~
-
-Now, you can create another controller for viewing individual blog posts::
-
-    $app->get('/blog/{id}', function (Silex\Application $app, $id) use ($blogPosts) {
-        if (!isset($blogPosts[$id])) {
-            $app->abort(404, "Post $id does not exist.");
-        }
-
-        $post = $blogPosts[$id];
-
-        return  "<h1>{$post['title']}</h1>".
-                "<p>{$post['body']}</p>";
-    });
-
-This route definition has a variable ``{id}`` part which is passed to the
-closure.
-
-The current ``Application`` is automatically injected by Silex to the Closure
-thanks to the type hinting.
-
-When the post does not exist, you are using ``abort()`` to stop the request
-early. It actually throws an exception, which you will see how to handle later
-on.
-
-Example POST Route
-~~~~~~~~~~~~~~~~~~
-
-POST routes signify the creation of a resource. An example for this is a
-feedback form. You will use the ``mail`` function to send an e-mail::
-
-    use Symfony\Component\HttpFoundation\Request;
-    use Symfony\Component\HttpFoundation\Response;
-
-    $app->post('/feedback', function (Request $request) {
-        $message = $request->get('message');
-        mail('feedback@yoursite.com', '[YourSite] Feedback', $message);
-
-        return new Response('Thank you for your feedback!', 201);
-    });
-
-It is pretty straightforward.
-
-.. note::
-
-    There is a :doc:`SwiftmailerServiceProvider <providers/swiftmailer>`
-    included that you can use instead of ``mail()``.
-
-The current ``request`` is automatically injected by Silex to the Closure
-thanks to the type hinting. It is an instance of
-Request_, so you can fetch variables using the request ``get`` method.
-
-Instead of returning a string you are returning an instance of Response_.
-This allows setting an HTTP status code, in this case it is set to
-``201 Created``.
-
-.. note::
-
-    Silex always uses a ``Response`` internally, it converts strings to
-    responses with status code ``200``.
-
-Other methods
-~~~~~~~~~~~~~
-
-You can create controllers for most HTTP methods. Just call one of these
-methods on your application: ``get``, ``post``, ``put``, ``delete``, ``patch``, ``options``::
-
-    $app->put('/blog/{id}', function ($id) {
-        // ...
-    });
-
-    $app->delete('/blog/{id}', function ($id) {
-        // ...
-    });
-
-    $app->patch('/blog/{id}', function ($id) {
-        // ...
-    });
-
-.. tip::
-
-    Forms in most web browsers do not directly support the use of other HTTP
-    methods. To use methods other than GET and POST you can utilize a special
-    form field with a name of ``_method``. The form's ``method`` attribute must
-    be set to POST when using this field:
-
-    .. code-block:: html
-
-        <form action="/my/target/route/" method="post">
-            <!-- ... -->
-            <input type="hidden" id="_method" name="_method" value="PUT" />
-        </form>
-
-    You need to explicitly enable this method override::
-
-        use Symfony\Component\HttpFoundation\Request;
-
-        Request::enableHttpMethodParameterOverride();
-        $app->run();
-
-You can also call ``match``, which will match all methods. This can be
-restricted via the ``method`` method::
-
-    $app->match('/blog', function () {
-        // ...
-    });
-
-    $app->match('/blog', function () {
-        // ...
-    })
-    ->method('PATCH');
-
-    $app->match('/blog', function () {
-        // ...
-    })
-    ->method('PUT|POST');
-
-.. note::
-
-    The order in which the routes are defined is significant. The first
-    matching route will be used, so place more generic routes at the bottom.
-
-Route Variables
-~~~~~~~~~~~~~~~
-
-As it has been shown before you can define variable parts in a route like
-this::
-
-    $app->get('/blog/{id}', function ($id) {
-        // ...
-    });
-
-It is also possible to have more than one variable part, just make sure the
-closure arguments match the names of the variable parts::
-
-    $app->get('/blog/{postId}/{commentId}', function ($postId, $commentId) {
-        // ...
-    });
-
-While it's not recommended, you could also do this (note the switched
-arguments)::
-
-    $app->get('/blog/{postId}/{commentId}', function ($commentId, $postId) {
-        // ...
-    });
-
-You can also ask for the current Request and Application objects::
-
-    $app->get('/blog/{id}', function (Application $app, Request $request, $id) {
-        // ...
-    });
-
-.. note::
-
-    Note for the Application and Request objects, Silex does the injection
-    based on the type hinting and not on the variable name::
-
-        $app->get('/blog/{id}', function (Application $foo, Request $bar, $id) {
-            // ...
-        });
-
-Route Variable Converters
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Before injecting the route variables into the controller, you can apply some
-converters::
-
-    $app->get('/user/{id}', function ($id) {
-        // ...
-    })->convert('id', function ($id) { return (int) $id; });
-
-This is useful when you want to convert route variables to objects as it
-allows to reuse the conversion code across different controllers::
-
-    $userProvider = function ($id) {
-        return new User($id);
-    };
-
-    $app->get('/user/{user}', function (User $user) {
-        // ...
-    })->convert('user', $userProvider);
-
-    $app->get('/user/{user}/edit', function (User $user) {
-        // ...
-    })->convert('user', $userProvider);
-
-The converter callback also receives the ``Request`` as its second argument::
-
-    $callback = function ($post, Request $request) {
-        return new Post($request->attributes->get('slug'));
-    };
-
-    $app->get('/blog/{id}/{slug}', function (Post $post) {
-        // ...
-    })->convert('post', $callback);
-
-A converter can also be defined as a service. For example, here is a user
-converter based on Doctrine ObjectManager::
-
-    use Doctrine\Common\Persistence\ObjectManager;
-    use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-
-    class UserConverter
-    {
-        private $om;
-
-        public function __construct(ObjectManager $om)
-        {
-            $this->om = $om;
-        }
-
-        public function convert($id)
-        {
-            if (null === $user = $this->om->find('User', (int) $id)) {
-                throw new NotFoundHttpException(sprintf('User %d does not exist', $id));
-            }
-
-            return $user;
-        }
-    }
-
-The service will now be registered in the application, and the
-``convert()`` method will be used as converter (using the syntax
-``service_name:method_name``)::
-
-    $app['converter.user'] = function () {
-        return new UserConverter();
-    };
-
-    $app->get('/user/{user}', function (User $user) {
-        // ...
-    })->convert('user', 'converter.user:convert');
-
-Requirements
-~~~~~~~~~~~~
-
-In some cases you may want to only match certain expressions. You can define
-requirements using regular expressions by calling ``assert`` on the
-``Controller`` object, which is returned by the routing methods.
-
-The following will make sure the ``id`` argument is a positive integer, since
-``\d+`` matches any amount of digits::
-
-    $app->get('/blog/{id}', function ($id) {
-        // ...
-    })
-    ->assert('id', '\d+');
-
-You can also chain these calls::
-
-    $app->get('/blog/{postId}/{commentId}', function ($postId, $commentId) {
-        // ...
-    })
-    ->assert('postId', '\d+')
-    ->assert('commentId', '\d+');
-
-Conditions
-~~~~~~~~~~
-
-Besides restricting route matching based on the HTTP method or parameter
-requirements, you can set conditions on any part of the request by calling
-``when`` on the ``Controller`` object, which is returned by the routing
-methods::
-
-    $app->get('/blog/{id}', function ($id) {
-        // ...
-    })
-    ->when("request.headers.get('User-Agent') matches '/firefox/i'");
-
-The ``when`` argument is a Symfony Expression_ , which means that you need to
-add ``symfony/expression-language`` as a dependency of your project.
-
-Default Values
-~~~~~~~~~~~~~~
-
-You can define a default value for any route variable by calling ``value`` on
-the ``Controller`` object::
-
-    $app->get('/{pageName}', function ($pageName) {
-        // ...
-    })
-    ->value('pageName', 'index');
-
-This will allow matching ``/``, in which case the ``pageName`` variable will
-have the value ``index``.
-
-Named Routes
-~~~~~~~~~~~~
-
-Some providers can make use of named routes. By default Silex will generate an
-internal route name for you but you can give an explicit route name by calling
-``bind``::
-
-    $app->get('/', function () {
-        // ...
-    })
-    ->bind('homepage');
-
-    $app->get('/blog/{id}', function ($id) {
-        // ...
-    })
-    ->bind('blog_post');
-
-Controllers as Classes
-~~~~~~~~~~~~~~~~~~~~~~
-
-Instead of anonymous functions, you can also define your controllers as
-methods. By using the ``ControllerClass::methodName`` syntax, you can tell
-Silex to lazily create the controller object for you::
-
-    $app->get('/', 'Acme\\Foo::bar');
-
-    use Silex\Application;
-    use Symfony\Component\HttpFoundation\Request;
-
-    namespace Acme
-    {
-        class Foo
-        {
-            public function bar(Request $request, Application $app)
-            {
-                // ...
-            }
-        }
-    }
-
-This will load the ``Acme\Foo`` class on demand, create an instance and call
-the ``bar`` method to get the response. You can use ``Request`` and
-``Silex\Application`` type hints to get ``$request`` and ``$app`` injected.
-
-It is also possible to :doc:`define your controllers as services
-<providers/service_controller>`.
-
-Global Configuration
---------------------
-
-If a controller setting must be applied to **all** controllers (a converter, a
-middleware, a requirement, or a default value), configure it on
-``$app['controllers']``, which holds all application controllers::
-
-    $app['controllers']
-        ->value('id', '1')
-        ->assert('id', '\d+')
-        ->requireHttps()
-        ->method('get')
-        ->convert('id', function () { /* ... */ })
-        ->before(function () { /* ... */ })
-        ->when('request.isSecure() == true')
-    ;
-
-These settings are applied to already registered controllers and they become
-the defaults for new controllers.
-
-.. note::
-
-    The global configuration does not apply to controller providers you might
-    mount as they have their own global configuration (read the
-    :doc:`dedicated chapter<organizing_controllers>` for more information).
-
-Error Handlers
---------------
-
-When an exception is thrown, error handlers allow you to display a custom
-error page to the user. They can also be used to do additional things, such as
-logging.
-
-To register an error handler, pass a closure to the ``error`` method which
-takes an ``Exception`` argument and returns a response::
-
-    use Symfony\Component\HttpFoundation\Response;
-    use Symfony\Component\HttpFoundation\Request;
-
-    $app->error(function (\Exception $e, Request $request, $code) {
-        return new Response('We are sorry, but something went terribly wrong.');
-    });
-
-You can also check for specific errors by using the ``$code`` argument, and
-handle them differently::
-
-    use Symfony\Component\HttpFoundation\Response;
-    use Symfony\Component\HttpFoundation\Request;
-
-    $app->error(function (\Exception $e, Request $request, $code) {
-        switch ($code) {
-            case 404:
-                $message = 'The requested page could not be found.';
-                break;
-            default:
-                $message = 'We are sorry, but something went terribly wrong.';
-        }
-
-        return new Response($message);
-    });
-
-You can restrict an error handler to only handle some Exception classes by
-setting a more specific type hint for the Closure argument::
-
-    use Symfony\Component\HttpFoundation\Request;
-
-    $app->error(function (\LogicException $e, Request $request, $code) {
-        // this handler will only handle \LogicException exceptions
-        // and exceptions that extend \LogicException
-    });
-
-.. note::
-
-    As Silex ensures that the Response status code is set to the most
-    appropriate one depending on the exception, setting the status on the
-    response alone won't work.
-
-    If you want to overwrite the status code, which you should not without a
-    good reason, set the ``X-Status-Code`` header (on Symfony until version
-    3.2)::
-
-        return new Response('Error', 404 /* ignored */, array('X-Status-Code' => 200));
-
-    As of Symfony 3.3, call
-    ``GetResponseForExceptionEvent::allowCustomResponseCode()`` first and then
-    then set the status code on the response as normal. The kernel will now use
-    your status code when sending the response to the client. The
-    ``GetResponseForExceptionEvent`` is passed to the error callback as a 4th
-    parameter::
-
-        use Symfony\Component\HttpFoundation\Response;
-        use Symfony\Component\HttpFoundation\Request;
-        use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-
-        $app->error(function (\Exception $e, Request $request, $code, GetResponseForExceptionEvent $event) {
-            $event->allowCustomResponseCode();
-            $response = new Response('No Content', 204);
-            
-            return $response;
-        });
-
-If you want to use a separate error handler for logging, make sure you register
-it with a higher priority than response error handlers, because once a response
-is returned, the following handlers are ignored.
-
-.. note::
-
-    Silex ships with a provider for Monolog_ which handles logging of errors.
-    Check out the *Providers* :doc:`chapter <providers/monolog>` for details.
-
-.. tip::
-
-    Silex comes with a default error handler that displays a detailed error
-    message with the stack trace when **debug** is true, and a simple error
-    message otherwise. Error handlers registered via the ``error()`` method
-    always take precedence but you can keep the nice error messages when debug
-    is turned on like this::
-
-        use Symfony\Component\HttpFoundation\Response;
-        use Symfony\Component\HttpFoundation\Request;
-
-        $app->error(function (\Exception $e, Request $request, $code) use ($app) {
-            if ($app['debug']) {
-                return;
-            }
-
-            // ... logic to handle the error and return a Response
-        });
-
-The error handlers are also called when you use ``abort`` to abort a request
-early::
-
-    $app->get('/blog/{id}', function (Silex\Application $app, $id) use ($blogPosts) {
-        if (!isset($blogPosts[$id])) {
-            $app->abort(404, "Post $id does not exist.");
-        }
-
-        return new Response(...);
-    });
-
-You can convert errors to ``Exceptions``, check out the cookbook :doc:`chapter <cookbook/error_handler>` for details.
-
-View Handlers
--------------
-
-View Handlers allow you to intercept a controller result that is not a
-``Response`` and transform it before it gets returned to the kernel.
-
-To register a view handler, pass a callable (or string that can be resolved to a
-callable) to the ``view()`` method. The callable should accept some sort of result
-from the controller::
-
-    $app->view(function (array $controllerResult) use ($app) {
-        return $app->json($controllerResult);
-    });
-
-View Handlers also receive the ``Request`` as their second argument,
-making them a good candidate for basic content negotiation::
-
-    $app->view(function (array $controllerResult, Request $request) use ($app) {
-        $acceptHeader = $request->headers->get('Accept');
-        $bestFormat = $app['negotiator']->getBestFormat($acceptHeader, array('json', 'xml'));
-
-        if ('json' === $bestFormat) {
-            return new JsonResponse($controllerResult);
-        }
-
-        if ('xml' === $bestFormat) {
-            return $app['serializer.xml']->renderResponse($controllerResult);
-        }
-
-        return $controllerResult;
-    });
-
-View Handlers will be examined in the order they are added to the application
-and Silex will use type hints to determine if a view handler should be used for
-the current result, continuously using the return value of the last view handler
-as the input for the next.
-
-.. note::
-
-    You must ensure that Silex receives a ``Response`` or a string as the result of
-    the last view handler (or controller) to be run.
-
-Redirects
----------
-
-You can redirect to another page by returning a ``RedirectResponse`` response,
-which you can create by calling the ``redirect`` method::
-
-    $app->get('/', function () use ($app) {
-        return $app->redirect('/hello');
-    });
-
-This will redirect from ``/`` to ``/hello``.
-
-Forwards
---------
-
-When you want to delegate the rendering to another controller, without a
-round-trip to the browser (as for a redirect), use an internal sub-request::
-
-    use Symfony\Component\HttpFoundation\Request;
-    use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-    $app->get('/', function () use ($app) {
-        // forward to /hello
-        $subRequest = Request::create('/hello', 'GET');
-
-        return $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST);
-    });
-
-.. tip::
-
-    You can also generate the URI via the built-in URL generator::
-
-        $request = Request::create($app['url_generator']->generate('hello'), 'GET');
-
-There's some more things that you need to keep in mind though. In most cases you
-will want to forward some parts of the current master request to the sub-request.
-That includes: Cookies, server information, session.
-Read more on :doc:`how to make sub-requests <cookbook/sub_requests>`.
-
-JSON
-----
-
-If you want to return JSON data, you can use the ``json`` helper method.
-Simply pass it your data, status code and headers, and it will create a JSON
-response for you::
-
-    $app->get('/users/{id}', function ($id) use ($app) {
-        $user = getUser($id);
-
-        if (!$user) {
-            $error = array('message' => 'The user was not found.');
-
-            return $app->json($error, 404);
-        }
-
-        return $app->json($user);
-    });
-
-Streaming
----------
-
-It's possible to stream a response, which is important in cases when you don't
-want to buffer the data being sent::
-
-    $app->get('/images/{file}', function ($file) use ($app) {
-        if (!file_exists(__DIR__.'/images/'.$file)) {
-            return $app->abort(404, 'The image was not found.');
-        }
-
-        $stream = function () use ($file) {
-            readfile($file);
-        };
-
-        return $app->stream($stream, 200, array('Content-Type' => 'image/png'));
-    });
-
-If you need to send chunks, make sure you call ``ob_flush`` and ``flush``
-after every chunk::
-
-    $stream = function () {
-        $fh = fopen('http://www.example.com/', 'rb');
-        while (!feof($fh)) {
-            echo fread($fh, 1024);
-            ob_flush();
-            flush();
-        }
-        fclose($fh);
-    };
-
-Sending a file
---------------
-
-If you want to return a file, you can use the ``sendFile`` helper method.
-It eases returning files that would otherwise not be publicly available. Simply
-pass it your file path, status code, headers and the content disposition and it
-will create a ``BinaryFileResponse`` response for you::
-
-    $app->get('/files/{path}', function ($path) use ($app) {
-        if (!file_exists('/base/path/' . $path)) {
-            $app->abort(404);
-        }
-
-        return $app->sendFile('/base/path/' . $path);
-    });
-
-To further customize the response before returning it, check the API doc for
-`Symfony\Component\HttpFoundation\BinaryFileResponse
-<http://api.symfony.com/master/Symfony/Component/HttpFoundation/BinaryFileResponse.html>`_::
-
-    return $app
-        ->sendFile('/base/path/' . $path)
-        ->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'pic.jpg')
-    ;
-
-Traits
-------
-
-Silex comes with PHP traits that define shortcut methods.
-
-Almost all built-in service providers have some corresponding PHP traits. To
-use them, define your own Application class and include the traits you want::
-
-    use Silex\Application;
-
-    class MyApplication extends Application
-    {
-        use Application\TwigTrait;
-        use Application\SecurityTrait;
-        use Application\FormTrait;
-        use Application\UrlGeneratorTrait;
-        use Application\SwiftmailerTrait;
-        use Application\MonologTrait;
-        use Application\TranslationTrait;
-    }
-
-You can also define your own Route class and use some traits::
-
-    use Silex\Route;
-
-    class MyRoute extends Route
-    {
-        use Route\SecurityTrait;
-    }
-
-To use your newly defined route, override the ``$app['route_class']``
-setting::
-
-    $app['route_class'] = 'MyRoute';
-
-Read each provider chapter to learn more about the added methods.
-
-Security
---------
-
-Make sure to protect your application against attacks.
-
-Escaping
-~~~~~~~~
-
-When outputting any user input, make sure to escape it correctly to prevent
-Cross-Site-Scripting attacks.
-
-* **Escaping HTML**: PHP provides the ``htmlspecialchars`` function for this.
-  Silex provides a shortcut ``escape`` method::
-
-      use Symfony\Component\HttpFoundation\Request;
-
-      $app->get('/name', function (Request $request, Silex\Application $app) {
-          $name = $request->get('name');
-
-          return "You provided the name {$app->escape($name)}.";
-      });
-
-  If you use the Twig template engine, you should use its escaping or even
-  auto-escaping mechanisms. Check out the *Providers* :doc:`chapter <providers/twig>` for details.
-
-* **Escaping JSON**: If you want to provide data in JSON format you should
-  use the Silex ``json`` function::
-
-      use Symfony\Component\HttpFoundation\Request;
-
-      $app->get('/name.json', function (Request $request, Silex\Application $app) {
-          $name = $request->get('name');
-
-          return $app->json(array('name' => $name));
-      });
-
-.. _Silex Skeleton: http://github.com/silexphp/Silex-Skeleton
-.. _Composer: http://getcomposer.org/
-.. _Request: http://api.symfony.com/master/Symfony/Component/HttpFoundation/Request.html
-.. _Response: http://api.symfony.com/master/Symfony/Component/HttpFoundation/Response.html
-.. _Monolog: https://github.com/Seldaek/monolog
-.. _Expression: https://symfony.com/doc/current/book/routing.html#completely-customized-route-matching-with-conditions
diff --git a/vendor/silex/silex/doc/web_servers.rst b/vendor/silex/silex/doc/web_servers.rst
deleted file mode 100644
index 18f5531d44a9037a1875141a0d85bed4d86494db..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/doc/web_servers.rst
+++ /dev/null
@@ -1,184 +0,0 @@
-Webserver Configuration
-=======================
-
-Apache
-------
-
-If you are using Apache, make sure ``mod_rewrite`` is enabled and use the
-following ``.htaccess`` file:
-
-.. code-block:: apache
-
-    <IfModule mod_rewrite.c>
-        Options -MultiViews
-
-        RewriteEngine On
-        #RewriteBase /path/to/app
-        RewriteCond %{REQUEST_FILENAME} !-d
-        RewriteCond %{REQUEST_FILENAME} !-f
-        RewriteRule ^ index.php [QSA,L]
-    </IfModule>
-
-.. note::
-
-    If your site is not at the webroot level you will have to uncomment the
-    ``RewriteBase`` statement and adjust the path to point to your directory,
-    relative from the webroot.
-
-Alternatively, if you use Apache 2.2.16 or higher, you can use the
-`FallbackResource directive`_ to make your .htaccess even easier:
-
-.. code-block:: apache
-
-    FallbackResource index.php
-
-.. note::
-
-    If your site is not at the webroot level you will have to adjust the path to
-    point to your directory, relative from the webroot.
-    
-Or if you're using a VirtualHost, you can add the same directive to the VirtualHost's Directory entry:
-
-.. code-block:: apache
-
-    <VirtualHost *:80>
-        # other directives
-
-        Alias /app/ /path/to/app/
-        <Directory /path/to/app>
-            # other directives
-
-            FallbackResource /app/index.php
-        </Directory>
-    </VirtualHost>
-
-.. note::
-
-    Note that you need the leading forward slash there, unlike with the .htaccess version
-
-nginx
------
-
-The **minimum configuration** to get your application running under Nginx is:
-
-.. code-block:: nginx
-
-    server {
-        server_name domain.tld www.domain.tld;
-        root /var/www/project/web;
-    
-        location / {
-            # try to serve file directly, fallback to front controller
-            try_files $uri /index.php$is_args$args;
-        }
-    
-        # If you have 2 front controllers for dev|prod use the following line instead
-        # location ~ ^/(index|index_dev)\.php(/|$) {
-        location ~ ^/index\.php(/|$) {
-            # the ubuntu default
-            fastcgi_pass   unix:/var/run/php/phpX.X-fpm.sock;
-            # for running on centos
-            #fastcgi_pass   unix:/var/run/php-fpm/www.sock;
-    
-            fastcgi_split_path_info ^(.+\.php)(/.*)$;
-            include fastcgi_params;
-            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
-            fastcgi_param HTTPS off;
-        
-            # Prevents URIs that include the front controller. This will 404:
-            # http://domain.tld/index.php/some-path
-            # Enable the internal directive to disable URIs like this
-            # internal;
-        }
-
-        #return 404 for all php files as we do have a front controller
-        location ~ \.php$ {
-            return 404;
-        }
-    
-        error_log /var/log/nginx/project_error.log;
-        access_log /var/log/nginx/project_access.log;
-    }
-
-IIS
----
-
-If you are using the Internet Information Services from Windows, you can use
-this sample ``web.config`` file:
-
-.. code-block:: xml
-
-    <?xml version="1.0"?>
-    <configuration>
-        <system.webServer>
-            <defaultDocument>
-                <files>
-                    <clear />
-                    <add value="index.php" />
-                </files>
-            </defaultDocument>
-            <rewrite>
-                <rules>
-                    <rule name="Silex Front Controller" stopProcessing="true">
-                        <match url="^(.*)$" ignoreCase="false" />
-                        <conditions logicalGrouping="MatchAll">
-                            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
-                        </conditions>
-                        <action type="Rewrite" url="index.php" appendQueryString="true" />
-                    </rule>
-                </rules>
-            </rewrite>
-        </system.webServer>
-    </configuration>
-
-Lighttpd
---------
-
-If you are using lighttpd, use this sample ``simple-vhost`` as a starting
-point:
-
-.. code-block:: lighttpd
-
-    server.document-root = "/path/to/app"
-
-    url.rewrite-once = (
-        # configure some static files
-        "^/assets/.+" => "$0",
-        "^/favicon\.ico$" => "$0",
-
-        "^(/[^\?]*)(\?.*)?" => "/index.php$1$2"
-    )
-
-.. _FallbackResource directive: http://www.adayinthelifeof.nl/2012/01/21/apaches-fallbackresource-your-new-htaccess-command/
-
-PHP
----
-
-PHP ships with a built-in webserver for development. This server allows you to
-run silex without any configuration. However, in order to serve static files,
-you'll have to make sure your front controller returns false in that case::
-
-    // web/index.php
-
-    $filename = __DIR__.preg_replace('#(\?.*)$#', '', $_SERVER['REQUEST_URI']);
-    if (php_sapi_name() === 'cli-server' && is_file($filename)) {
-        return false;
-    }
-
-    $app = require __DIR__.'/../src/app.php';
-    $app->run();
-
-
-Assuming your front controller is at ``web/index.php``, you can start the
-server from the command-line with this command:
-
-.. code-block:: text
-
-    $ php -S localhost:8080 -t web web/index.php
-
-Now the application should be running at ``http://localhost:8080``.
-
-.. note::
-
-    This server is for development only. It is **not** recommended to use it
-    in production.
diff --git a/vendor/silex/silex/phpunit.xml.dist b/vendor/silex/silex/phpunit.xml.dist
deleted file mode 100644
index 799f16c90700c65521c44a2017bc4c42655d8566..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/phpunit.xml.dist
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit backupGlobals="false"
-         backupStaticAttributes="false"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         processIsolation="false"
-         stopOnFailure="false"
-         syntaxCheck="false"
-         bootstrap="vendor/autoload.php"
->
-    <testsuites>
-        <testsuite name="Silex Test Suite">
-            <directory>./tests/Silex/</directory>
-        </testsuite>
-    </testsuites>
-    <filter>
-        <whitelist>
-            <directory>./src</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/silex/silex/src/Silex/Api/BootableProviderInterface.php b/vendor/silex/silex/src/Silex/Api/BootableProviderInterface.php
deleted file mode 100644
index 739e04d56c8823b2bd4d474f825ee79a512d8573..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Api/BootableProviderInterface.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Api;
-
-use Silex\Application;
-
-/**
- * Interface for bootable service providers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface BootableProviderInterface
-{
-    /**
-     * Bootstraps the application.
-     *
-     * This method is called after all services are registered
-     * and should be used for "dynamic" configuration (whenever
-     * a service must be requested).
-     *
-     * @param Application $app
-     */
-    public function boot(Application $app);
-}
diff --git a/vendor/silex/silex/src/Silex/Api/ControllerProviderInterface.php b/vendor/silex/silex/src/Silex/Api/ControllerProviderInterface.php
deleted file mode 100644
index 28d9d0e5efdc85813f6b0550bc6b9accb70a9dae..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Api/ControllerProviderInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Api;
-
-use Silex\Application;
-use Silex\ControllerCollection;
-
-/**
- * Interface for controller providers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ControllerProviderInterface
-{
-    /**
-     * Returns routes to connect to the given application.
-     *
-     * @param Application $app An Application instance
-     *
-     * @return ControllerCollection A ControllerCollection instance
-     */
-    public function connect(Application $app);
-}
diff --git a/vendor/silex/silex/src/Silex/Api/EventListenerProviderInterface.php b/vendor/silex/silex/src/Silex/Api/EventListenerProviderInterface.php
deleted file mode 100644
index f3e625557cfeefd47fc38a7e57df4e0a7dfa3f52..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Api/EventListenerProviderInterface.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Api;
-
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Pimple\Container;
-
-/**
- * Interface for event listener providers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface EventListenerProviderInterface
-{
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher);
-}
diff --git a/vendor/silex/silex/src/Silex/Api/LICENSE b/vendor/silex/silex/src/Silex/Api/LICENSE
deleted file mode 100644
index bc6ad0497a1f91974512071e882359e7e18ef7e5..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Api/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010-2015 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/silex/silex/src/Silex/Api/composer.json b/vendor/silex/silex/src/Silex/Api/composer.json
deleted file mode 100644
index 2c667e3b38aa8616338ff27a9b7ca64ddbd2d23f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Api/composer.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-    "minimum-stability": "dev",
-    "name": "silex/api",
-    "description": "The Silex interfaces",
-    "keywords": ["microframework"],
-    "homepage": "http://silex.sensiolabs.org",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Igor Wiedler",
-            "email": "igor@wiedler.ch"
-        }
-    ],
-    "require": {
-        "php": ">=5.5.9",
-        "pimple/pimple": "~3.0"
-    },
-    "suggest": {
-        "symfony/event-dispatcher": "For EventListenerProviderInterface",
-        "silex/silex": "For BootableProviderInterface and ControllerProviderInterface"
-    },
-    "autoload": {
-        "psr-4": { "Silex\\Api\\": "" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.3.x-dev"
-        }
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/AppArgumentValueResolver.php b/vendor/silex/silex/src/Silex/AppArgumentValueResolver.php
deleted file mode 100644
index e96b26219a2ba9f9f30963786e846ca4c26e992c..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/AppArgumentValueResolver.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-/**
- * HttpKernel Argument Resolver for Silex.
- *
- * @author Romain Neutron <imprec@gmail.com>
- */
-class AppArgumentValueResolver implements ArgumentValueResolverInterface
-{
-    private $app;
-
-    public function __construct(Application $app)
-    {
-        $this->app = $app;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports(Request $request, ArgumentMetadata $argument)
-    {
-        return null !== $argument->getType() && (Application::class === $argument->getType() || is_subclass_of($argument->getType(), Application::class));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function resolve(Request $request, ArgumentMetadata $argument)
-    {
-        yield $this->app;
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Application.php b/vendor/silex/silex/src/Silex/Application.php
deleted file mode 100644
index 62d947cb9b5411d58d2a8a0f511402aa0f83a510..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Application.php
+++ /dev/null
@@ -1,506 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\HttpFoundation\BinaryFileResponse;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\TerminableInterface;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\PostResponseEvent;
-use Symfony\Component\HttpKernel\Exception\HttpException;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-use Symfony\Component\HttpFoundation\JsonResponse;
-use Silex\Api\BootableProviderInterface;
-use Silex\Api\EventListenerProviderInterface;
-use Silex\Api\ControllerProviderInterface;
-use Silex\Provider\ExceptionHandlerServiceProvider;
-use Silex\Provider\RoutingServiceProvider;
-use Silex\Provider\HttpKernelServiceProvider;
-
-/**
- * The Silex framework class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Application extends Container implements HttpKernelInterface, TerminableInterface
-{
-    const VERSION = '2.3.0';
-
-    const EARLY_EVENT = 512;
-    const LATE_EVENT = -512;
-
-    protected $providers = [];
-    protected $booted = false;
-
-    /**
-     * Instantiate a new Application.
-     *
-     * Objects and parameters can be passed as argument to the constructor.
-     *
-     * @param array $values the parameters or objects
-     */
-    public function __construct(array $values = [])
-    {
-        parent::__construct();
-
-        $this['request.http_port'] = 80;
-        $this['request.https_port'] = 443;
-        $this['debug'] = false;
-        $this['charset'] = 'UTF-8';
-        $this['logger'] = null;
-
-        $this->register(new HttpKernelServiceProvider());
-        $this->register(new RoutingServiceProvider());
-        $this->register(new ExceptionHandlerServiceProvider());
-
-        foreach ($values as $key => $value) {
-            $this[$key] = $value;
-        }
-    }
-
-    /**
-     * Registers a service provider.
-     *
-     * @param ServiceProviderInterface $provider A ServiceProviderInterface instance
-     * @param array                    $values   An array of values that customizes the provider
-     *
-     * @return Application
-     */
-    public function register(ServiceProviderInterface $provider, array $values = [])
-    {
-        $this->providers[] = $provider;
-
-        parent::register($provider, $values);
-
-        return $this;
-    }
-
-    /**
-     * Boots all service providers.
-     *
-     * This method is automatically called by handle(), but you can use it
-     * to boot all service providers when not handling a request.
-     */
-    public function boot()
-    {
-        if ($this->booted) {
-            return;
-        }
-
-        $this->booted = true;
-
-        foreach ($this->providers as $provider) {
-            if ($provider instanceof EventListenerProviderInterface) {
-                $provider->subscribe($this, $this['dispatcher']);
-            }
-
-            if ($provider instanceof BootableProviderInterface) {
-                $provider->boot($this);
-            }
-        }
-    }
-
-    /**
-     * Maps a pattern to a callable.
-     *
-     * You can optionally specify HTTP methods that should be matched.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function match($pattern, $to = null)
-    {
-        return $this['controllers']->match($pattern, $to);
-    }
-
-    /**
-     * Maps a GET request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function get($pattern, $to = null)
-    {
-        return $this['controllers']->get($pattern, $to);
-    }
-
-    /**
-     * Maps a POST request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function post($pattern, $to = null)
-    {
-        return $this['controllers']->post($pattern, $to);
-    }
-
-    /**
-     * Maps a PUT request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function put($pattern, $to = null)
-    {
-        return $this['controllers']->put($pattern, $to);
-    }
-
-    /**
-     * Maps a DELETE request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function delete($pattern, $to = null)
-    {
-        return $this['controllers']->delete($pattern, $to);
-    }
-
-    /**
-     * Maps an OPTIONS request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function options($pattern, $to = null)
-    {
-        return $this['controllers']->options($pattern, $to);
-    }
-
-    /**
-     * Maps a PATCH request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function patch($pattern, $to = null)
-    {
-        return $this['controllers']->patch($pattern, $to);
-    }
-
-    /**
-     * Adds an event listener that listens on the specified events.
-     *
-     * @param string   $eventName The event to listen on
-     * @param callable $callback  The listener
-     * @param int      $priority  The higher this value, the earlier an event
-     *                            listener will be triggered in the chain (defaults to 0)
-     */
-    public function on($eventName, $callback, $priority = 0)
-    {
-        if ($this->booted) {
-            $this['dispatcher']->addListener($eventName, $this['callback_resolver']->resolveCallback($callback), $priority);
-
-            return;
-        }
-
-        $this->extend('dispatcher', function (EventDispatcherInterface $dispatcher, $app) use ($callback, $priority, $eventName) {
-            $dispatcher->addListener($eventName, $app['callback_resolver']->resolveCallback($callback), $priority);
-
-            return $dispatcher;
-        });
-    }
-
-    /**
-     * Registers a before filter.
-     *
-     * Before filters are run before any route has been matched.
-     *
-     * @param mixed $callback Before filter callback
-     * @param int   $priority The higher this value, the earlier an event
-     *                        listener will be triggered in the chain (defaults to 0)
-     */
-    public function before($callback, $priority = 0)
-    {
-        $app = $this;
-
-        $this->on(KernelEvents::REQUEST, function (GetResponseEvent $event) use ($callback, $app) {
-            if (!$event->isMasterRequest()) {
-                return;
-            }
-
-            $ret = call_user_func($app['callback_resolver']->resolveCallback($callback), $event->getRequest(), $app);
-
-            if ($ret instanceof Response) {
-                $event->setResponse($ret);
-            }
-        }, $priority);
-    }
-
-    /**
-     * Registers an after filter.
-     *
-     * After filters are run after the controller has been executed.
-     *
-     * @param mixed $callback After filter callback
-     * @param int   $priority The higher this value, the earlier an event
-     *                        listener will be triggered in the chain (defaults to 0)
-     */
-    public function after($callback, $priority = 0)
-    {
-        $app = $this;
-
-        $this->on(KernelEvents::RESPONSE, function (FilterResponseEvent $event) use ($callback, $app) {
-            if (!$event->isMasterRequest()) {
-                return;
-            }
-
-            $response = call_user_func($app['callback_resolver']->resolveCallback($callback), $event->getRequest(), $event->getResponse(), $app);
-            if ($response instanceof Response) {
-                $event->setResponse($response);
-            } elseif (null !== $response) {
-                throw new \RuntimeException('An after middleware returned an invalid response value. Must return null or an instance of Response.');
-            }
-        }, $priority);
-    }
-
-    /**
-     * Registers a finish filter.
-     *
-     * Finish filters are run after the response has been sent.
-     *
-     * @param mixed $callback Finish filter callback
-     * @param int   $priority The higher this value, the earlier an event
-     *                        listener will be triggered in the chain (defaults to 0)
-     */
-    public function finish($callback, $priority = 0)
-    {
-        $app = $this;
-
-        $this->on(KernelEvents::TERMINATE, function (PostResponseEvent $event) use ($callback, $app) {
-            call_user_func($app['callback_resolver']->resolveCallback($callback), $event->getRequest(), $event->getResponse(), $app);
-        }, $priority);
-    }
-
-    /**
-     * Aborts the current request by sending a proper HTTP error.
-     *
-     * @param int    $statusCode The HTTP status code
-     * @param string $message    The status message
-     * @param array  $headers    An array of HTTP headers
-     */
-    public function abort($statusCode, $message = '', array $headers = [])
-    {
-        throw new HttpException($statusCode, $message, null, $headers);
-    }
-
-    /**
-     * Registers an error handler.
-     *
-     * Error handlers are simple callables which take a single Exception
-     * as an argument. If a controller throws an exception, an error handler
-     * can return a specific response.
-     *
-     * When an exception occurs, all handlers will be called, until one returns
-     * something (a string or a Response object), at which point that will be
-     * returned to the client.
-     *
-     * For this reason you should add logging handlers before output handlers.
-     *
-     * @param mixed $callback Error handler callback, takes an Exception argument
-     * @param int   $priority The higher this value, the earlier an event
-     *                        listener will be triggered in the chain (defaults to -8)
-     */
-    public function error($callback, $priority = -8)
-    {
-        $this->on(KernelEvents::EXCEPTION, new ExceptionListenerWrapper($this, $callback), $priority);
-    }
-
-    /**
-     * Registers a view handler.
-     *
-     * View handlers are simple callables which take a controller result and the
-     * request as arguments, whenever a controller returns a value that is not
-     * an instance of Response. When this occurs, all suitable handlers will be
-     * called, until one returns a Response object.
-     *
-     * @param mixed $callback View handler callback
-     * @param int   $priority The higher this value, the earlier an event
-     *                        listener will be triggered in the chain (defaults to 0)
-     */
-    public function view($callback, $priority = 0)
-    {
-        $this->on(KernelEvents::VIEW, new ViewListenerWrapper($this, $callback), $priority);
-    }
-
-    /**
-     * Flushes the controller collection.
-     */
-    public function flush()
-    {
-        $this['routes']->addCollection($this['controllers']->flush());
-    }
-
-    /**
-     * Redirects the user to another URL.
-     *
-     * @param string $url    The URL to redirect to
-     * @param int    $status The status code (302 by default)
-     *
-     * @return RedirectResponse
-     */
-    public function redirect($url, $status = 302)
-    {
-        return new RedirectResponse($url, $status);
-    }
-
-    /**
-     * Creates a streaming response.
-     *
-     * @param mixed $callback A valid PHP callback
-     * @param int   $status   The response status code
-     * @param array $headers  An array of response headers
-     *
-     * @return StreamedResponse
-     */
-    public function stream($callback = null, $status = 200, array $headers = [])
-    {
-        return new StreamedResponse($callback, $status, $headers);
-    }
-
-    /**
-     * Escapes a text for HTML.
-     *
-     * @param string $text         The input text to be escaped
-     * @param int    $flags        The flags (@see htmlspecialchars)
-     * @param string $charset      The charset
-     * @param bool   $doubleEncode Whether to try to avoid double escaping or not
-     *
-     * @return string Escaped text
-     */
-    public function escape($text, $flags = ENT_COMPAT, $charset = null, $doubleEncode = true)
-    {
-        return htmlspecialchars($text, $flags, $charset ?: $this['charset'], $doubleEncode);
-    }
-
-    /**
-     * Convert some data into a JSON response.
-     *
-     * @param mixed $data    The response data
-     * @param int   $status  The response status code
-     * @param array $headers An array of response headers
-     *
-     * @return JsonResponse
-     */
-    public function json($data = [], $status = 200, array $headers = [])
-    {
-        return new JsonResponse($data, $status, $headers);
-    }
-
-    /**
-     * Sends a file.
-     *
-     * @param \SplFileInfo|string $file               The file to stream
-     * @param int                 $status             The response status code
-     * @param array               $headers            An array of response headers
-     * @param null|string         $contentDisposition The type of Content-Disposition to set automatically with the filename
-     *
-     * @return BinaryFileResponse
-     */
-    public function sendFile($file, $status = 200, array $headers = [], $contentDisposition = null)
-    {
-        return new BinaryFileResponse($file, $status, $headers, true, $contentDisposition);
-    }
-
-    /**
-     * Mounts controllers under the given route prefix.
-     *
-     * @param string                                                    $prefix      The route prefix
-     * @param ControllerCollection|callable|ControllerProviderInterface $controllers A ControllerCollection, a callable, or a ControllerProviderInterface instance
-     *
-     * @return Application
-     *
-     * @throws \LogicException
-     */
-    public function mount($prefix, $controllers)
-    {
-        if ($controllers instanceof ControllerProviderInterface) {
-            $connectedControllers = $controllers->connect($this);
-
-            if (!$connectedControllers instanceof ControllerCollection) {
-                throw new \LogicException(sprintf('The method "%s::connect" must return a "ControllerCollection" instance. Got: "%s"', get_class($controllers), is_object($connectedControllers) ? get_class($connectedControllers) : gettype($connectedControllers)));
-            }
-
-            $controllers = $connectedControllers;
-        } elseif (!$controllers instanceof ControllerCollection && !is_callable($controllers)) {
-            throw new \LogicException('The "mount" method takes either a "ControllerCollection" instance, "ControllerProviderInterface" instance, or a callable.');
-        }
-
-        $this['controllers']->mount($prefix, $controllers);
-
-        return $this;
-    }
-
-    /**
-     * Handles the request and delivers the response.
-     *
-     * @param Request|null $request Request to process
-     */
-    public function run(Request $request = null)
-    {
-        if (null === $request) {
-            $request = Request::createFromGlobals();
-        }
-
-        $response = $this->handle($request);
-        $response->send();
-        $this->terminate($request, $response);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * If you call this method directly instead of run(), you must call the
-     * terminate() method yourself if you want the finish filters to be run.
-     */
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
-    {
-        if (!$this->booted) {
-            $this->boot();
-        }
-
-        $this->flush();
-
-        return $this['kernel']->handle($request, $type, $catch);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function terminate(Request $request, Response $response)
-    {
-        $this['kernel']->terminate($request, $response);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Application/FormTrait.php b/vendor/silex/silex/src/Silex/Application/FormTrait.php
deleted file mode 100644
index f55775cba5424dfdce48d8f9d29fa8fa7b2d42fe..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Application/FormTrait.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Application;
-
-use Symfony\Component\Form\Extension\Core\Type\FormType;
-use Symfony\Component\Form\FormBuilder;
-use Symfony\Component\Form\FormTypeInterface;
-
-/**
- * Form trait.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author David Berlioz <berliozdavid@gmail.com>
- */
-trait FormTrait
-{
-    /**
-     * Creates and returns a form builder instance.
-     *
-     * @param mixed                    $data    The initial data for the form
-     * @param array                    $options Options for the form
-     * @param string|FormTypeInterface $type    Type of the form
-     *
-     * @return FormBuilder
-     */
-    public function form($data = null, array $options = [], $type = null)
-    {
-        return $this['form.factory']->createBuilder($type ?: FormType::class, $data, $options);
-    }
-
-    /**
-     * Creates and returns a named form builder instance.
-     *
-     * @param string                   $name
-     * @param mixed                    $data    The initial data for the form
-     * @param array                    $options Options for the form
-     * @param string|FormTypeInterface $type    Type of the form
-     *
-     * @return FormBuilder
-     */
-    public function namedForm($name, $data = null, array $options = [], $type = null)
-    {
-        return $this['form.factory']->createNamedBuilder($name, $type ?: FormType::class, $data, $options);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Application/MonologTrait.php b/vendor/silex/silex/src/Silex/Application/MonologTrait.php
deleted file mode 100644
index 056318f9edc1903f194d2d080f8bc81294ef0f1c..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Application/MonologTrait.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Application;
-
-use Monolog\Logger;
-
-/**
- * Monolog trait.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-trait MonologTrait
-{
-    /**
-     * Adds a log record.
-     *
-     * @param string $message The log message
-     * @param array  $context The log context
-     * @param int    $level   The logging level
-     *
-     * @return bool Whether the record has been processed
-     */
-    public function log($message, array $context = [], $level = Logger::INFO)
-    {
-        return $this['monolog']->addRecord($level, $message, $context);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Application/SecurityTrait.php b/vendor/silex/silex/src/Silex/Application/SecurityTrait.php
deleted file mode 100644
index e461296b3f80dbc626fb3639eb928bd903c3d2a6..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Application/SecurityTrait.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Application;
-
-use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException;
-use Symfony\Component\Security\Core\User\UserInterface;
-
-/**
- * Security trait.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-trait SecurityTrait
-{
-    /**
-     * Encodes the raw password.
-     *
-     * @param UserInterface $user     A UserInterface instance
-     * @param string        $password The password to encode
-     *
-     * @return string The encoded password
-     *
-     * @throws \RuntimeException when no password encoder could be found for the user
-     */
-    public function encodePassword(UserInterface $user, $password)
-    {
-        return $this['security.encoder_factory']->getEncoder($user)->encodePassword($password, $user->getSalt());
-    }
-
-    /**
-     * Checks if the attributes are granted against the current authentication token and optionally supplied object.
-     *
-     * @param mixed $attributes
-     * @param mixed $object
-     *
-     * @return bool
-     *
-     * @throws AuthenticationCredentialsNotFoundException when the token storage has no authentication token
-     */
-    public function isGranted($attributes, $object = null)
-    {
-        return $this['security.authorization_checker']->isGranted($attributes, $object);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Application/SwiftmailerTrait.php b/vendor/silex/silex/src/Silex/Application/SwiftmailerTrait.php
deleted file mode 100644
index 157f94d8bc0f28e7fd73398778b6b3ab3fcca74e..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Application/SwiftmailerTrait.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Application;
-
-/**
- * Swiftmailer trait.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-trait SwiftmailerTrait
-{
-    /**
-     * Sends an email.
-     *
-     * @param \Swift_Message $message          A \Swift_Message instance
-     * @param array          $failedRecipients An array of failures by-reference
-     *
-     * @return int The number of sent messages
-     */
-    public function mail(\Swift_Message $message, &$failedRecipients = null)
-    {
-        return $this['mailer']->send($message, $failedRecipients);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Application/TranslationTrait.php b/vendor/silex/silex/src/Silex/Application/TranslationTrait.php
deleted file mode 100644
index ad5a4f031ae8868a69bfd3cc7fec9ae3f03110eb..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Application/TranslationTrait.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Application;
-
-/**
- * Translation trait.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-trait TranslationTrait
-{
-    /**
-     * Translates the given message.
-     *
-     * @param string $id         The message id
-     * @param array  $parameters An array of parameters for the message
-     * @param string $domain     The domain for the message
-     * @param string $locale     The locale
-     *
-     * @return string The translated string
-     */
-    public function trans($id, array $parameters = [], $domain = 'messages', $locale = null)
-    {
-        return $this['translator']->trans($id, $parameters, $domain, $locale);
-    }
-
-    /**
-     * Translates the given choice message by choosing a translation according to a number.
-     *
-     * @param string $id         The message id
-     * @param int    $number     The number to use to find the indice of the message
-     * @param array  $parameters An array of parameters for the message
-     * @param string $domain     The domain for the message
-     * @param string $locale     The locale
-     *
-     * @return string The translated string
-     */
-    public function transChoice($id, $number, array $parameters = [], $domain = 'messages', $locale = null)
-    {
-        return $this['translator']->transChoice($id, $number, $parameters, $domain, $locale);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Application/TwigTrait.php b/vendor/silex/silex/src/Silex/Application/TwigTrait.php
deleted file mode 100644
index d27bbafa09c79fb7c7ca16ce3e017971abe0fdbb..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Application/TwigTrait.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Application;
-
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-
-/**
- * Twig trait.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-trait TwigTrait
-{
-    /**
-     * Renders a view and returns a Response.
-     *
-     * To stream a view, pass an instance of StreamedResponse as a third argument.
-     *
-     * @param string   $view       The view name
-     * @param array    $parameters An array of parameters to pass to the view
-     * @param Response $response   A Response instance
-     *
-     * @return Response A Response instance
-     */
-    public function render($view, array $parameters = [], Response $response = null)
-    {
-        $twig = $this['twig'];
-
-        if ($response instanceof StreamedResponse) {
-            $response->setCallback(function () use ($twig, $view, $parameters) {
-                $twig->display($view, $parameters);
-            });
-        } else {
-            if (null === $response) {
-                $response = new Response();
-            }
-            $response->setContent($twig->render($view, $parameters));
-        }
-
-        return $response;
-    }
-
-    /**
-     * Renders a view.
-     *
-     * @param string $view       The view name
-     * @param array  $parameters An array of parameters to pass to the view
-     *
-     * @return string The rendered view
-     */
-    public function renderView($view, array $parameters = [])
-    {
-        return $this['twig']->render($view, $parameters);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Application/UrlGeneratorTrait.php b/vendor/silex/silex/src/Silex/Application/UrlGeneratorTrait.php
deleted file mode 100644
index 6eaeb4f6e0d5040e8c901ef9245afbc51b3c6398..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Application/UrlGeneratorTrait.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Application;
-
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-
-/**
- * UrlGenerator trait.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-trait UrlGeneratorTrait
-{
-    /**
-     * Generates a path from the given parameters.
-     *
-     * @param string $route      The name of the route
-     * @param mixed  $parameters An array of parameters
-     *
-     * @return string The generated path
-     */
-    public function path($route, $parameters = [])
-    {
-        return $this['url_generator']->generate($route, $parameters, UrlGeneratorInterface::ABSOLUTE_PATH);
-    }
-
-    /**
-     * Generates an absolute URL from the given parameters.
-     *
-     * @param string $route      The name of the route
-     * @param mixed  $parameters An array of parameters
-     *
-     * @return string The generated URL
-     */
-    public function url($route, $parameters = [])
-    {
-        return $this['url_generator']->generate($route, $parameters, UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/CallbackResolver.php b/vendor/silex/silex/src/Silex/CallbackResolver.php
deleted file mode 100644
index ac8730cb4dbe6856eadf1837fbb0f4a53de97a71..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/CallbackResolver.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex;
-
-use Pimple\Container;
-
-class CallbackResolver
-{
-    const SERVICE_PATTERN = "/[A-Za-z0-9\._\-]+:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/";
-
-    private $app;
-
-    public function __construct(Container $app)
-    {
-        $this->app = $app;
-    }
-
-    /**
-     * Returns true if the string is a valid service method representation.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    public function isValid($name)
-    {
-        return is_string($name) && (preg_match(static::SERVICE_PATTERN, $name) || isset($this->app[$name]));
-    }
-
-    /**
-     * Returns a callable given its string representation.
-     *
-     * @param string $name
-     *
-     * @return callable
-     *
-     * @throws \InvalidArgumentException in case the method does not exist
-     */
-    public function convertCallback($name)
-    {
-        if (preg_match(static::SERVICE_PATTERN, $name)) {
-            list($service, $method) = explode(':', $name, 2);
-            $callback = [$this->app[$service], $method];
-        } else {
-            $service = $name;
-            $callback = $this->app[$name];
-        }
-
-        if (!is_callable($callback)) {
-            throw new \InvalidArgumentException(sprintf('Service "%s" is not callable.', $service));
-        }
-
-        return $callback;
-    }
-
-    /**
-     * Returns a callable given its string representation if it is a valid service method.
-     *
-     * @param string $name
-     *
-     * @return string|callable A callable value or the string passed in
-     *
-     * @throws \InvalidArgumentException in case the method does not exist
-     */
-    public function resolveCallback($name)
-    {
-        return $this->isValid($name) ? $this->convertCallback($name) : $name;
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Controller.php b/vendor/silex/silex/src/Silex/Controller.php
deleted file mode 100644
index c2cf30090c224100f68d841c8739c5a91781373a..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Controller.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex;
-
-use Silex\Exception\ControllerFrozenException;
-
-/**
- * A wrapper for a controller, mapped to a route.
- *
- * __call() forwards method-calls to Route, but returns instance of Controller
- * listing Route's methods below, so that IDEs know they are valid
- *
- * @method Controller assert(string $variable, string $regexp)
- * @method Controller value(string $variable, mixed $default)
- * @method Controller convert(string $variable, mixed $callback)
- * @method Controller method(string $method)
- * @method Controller requireHttp()
- * @method Controller requireHttps()
- * @method Controller before(mixed $callback)
- * @method Controller after(mixed $callback)
- * @method Controller when(string $condition)
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class Controller
-{
-    private $route;
-    private $routeName;
-    private $isFrozen = false;
-
-    /**
-     * Constructor.
-     *
-     * @param Route $route
-     */
-    public function __construct(Route $route)
-    {
-        $this->route = $route;
-    }
-
-    /**
-     * Gets the controller's route.
-     *
-     * @return Route
-     */
-    public function getRoute()
-    {
-        return $this->route;
-    }
-
-    /**
-     * Gets the controller's route name.
-     *
-     * @return string
-     */
-    public function getRouteName()
-    {
-        return $this->routeName;
-    }
-
-    /**
-     * Sets the controller's route.
-     *
-     * @param string $routeName
-     *
-     * @return Controller $this The current Controller instance
-     */
-    public function bind($routeName)
-    {
-        if ($this->isFrozen) {
-            throw new ControllerFrozenException(sprintf('Calling %s on frozen %s instance.', __METHOD__, __CLASS__));
-        }
-
-        $this->routeName = $routeName;
-
-        return $this;
-    }
-
-    public function __call($method, $arguments)
-    {
-        if (!method_exists($this->route, $method)) {
-            throw new \BadMethodCallException(sprintf('Method "%s::%s" does not exist.', get_class($this->route), $method));
-        }
-
-        call_user_func_array([$this->route, $method], $arguments);
-
-        return $this;
-    }
-
-    /**
-     * Freezes the controller.
-     *
-     * Once the controller is frozen, you can no longer change the route name
-     */
-    public function freeze()
-    {
-        $this->isFrozen = true;
-    }
-
-    public function generateRouteName($prefix)
-    {
-        $methods = implode('_', $this->route->getMethods()).'_';
-
-        $routeName = $methods.$prefix.$this->route->getPath();
-        $routeName = str_replace(['/', ':', '|', '-'], '_', $routeName);
-        $routeName = preg_replace('/[^a-z0-9A-Z_.]+/', '', $routeName);
-
-        // Collapse consecutive underscores down into a single underscore.
-        $routeName = preg_replace('/_+/', '_', $routeName);
-
-        return $routeName;
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/ControllerCollection.php b/vendor/silex/silex/src/Silex/ControllerCollection.php
deleted file mode 100644
index 728a655c54621f55bd4c0a7ac94ce7a7aa52a589..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/ControllerCollection.php
+++ /dev/null
@@ -1,240 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex;
-
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Builds Silex controllers.
- *
- * It acts as a staging area for routes. You are able to set the route name
- * until flush() is called, at which point all controllers are frozen and
- * converted to a RouteCollection.
- *
- * __call() forwards method-calls to Route, but returns instance of ControllerCollection
- * listing Route's methods below, so that IDEs know they are valid
- *
- * @method ControllerCollection assert(string $variable, string $regexp)
- * @method ControllerCollection value(string $variable, mixed $default)
- * @method ControllerCollection convert(string $variable, mixed $callback)
- * @method ControllerCollection method(string $method)
- * @method ControllerCollection requireHttp()
- * @method ControllerCollection requireHttps()
- * @method ControllerCollection before(mixed $callback)
- * @method ControllerCollection after(mixed $callback)
- * @method ControllerCollection when(string $condition)
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ControllerCollection
-{
-    protected $controllers = [];
-    protected $defaultRoute;
-    protected $defaultController;
-    protected $prefix;
-    protected $routesFactory;
-    protected $controllersFactory;
-
-    public function __construct(Route $defaultRoute, RouteCollection $routesFactory = null, $controllersFactory = null)
-    {
-        $this->defaultRoute = $defaultRoute;
-        $this->routesFactory = $routesFactory;
-        $this->controllersFactory = $controllersFactory;
-        $this->defaultController = function (Request $request) {
-            throw new \LogicException(sprintf('The "%s" route must have code to run when it matches.', $request->attributes->get('_route')));
-        };
-    }
-
-    /**
-     * Mounts controllers under the given route prefix.
-     *
-     * @param string                        $prefix      The route prefix
-     * @param ControllerCollection|callable $controllers A ControllerCollection instance or a callable for defining routes
-     *
-     * @throws \LogicException
-     */
-    public function mount($prefix, $controllers)
-    {
-        if (is_callable($controllers)) {
-            $collection = $this->controllersFactory ? call_user_func($this->controllersFactory) : new static(new Route(), new RouteCollection());
-            $collection->defaultRoute = clone $this->defaultRoute;
-            call_user_func($controllers, $collection);
-            $controllers = $collection;
-        } elseif (!$controllers instanceof self) {
-            throw new \LogicException('The "mount" method takes either a "ControllerCollection" instance or callable.');
-        }
-
-        $controllers->prefix = $prefix;
-
-        $this->controllers[] = $controllers;
-    }
-
-    /**
-     * Maps a pattern to a callable.
-     *
-     * You can optionally specify HTTP methods that should be matched.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function match($pattern, $to = null)
-    {
-        $route = clone $this->defaultRoute;
-        $route->setPath($pattern);
-        $this->controllers[] = $controller = new Controller($route);
-        $route->setDefault('_controller', null === $to ? $this->defaultController : $to);
-
-        return $controller;
-    }
-
-    /**
-     * Maps a GET request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function get($pattern, $to = null)
-    {
-        return $this->match($pattern, $to)->method('GET');
-    }
-
-    /**
-     * Maps a POST request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function post($pattern, $to = null)
-    {
-        return $this->match($pattern, $to)->method('POST');
-    }
-
-    /**
-     * Maps a PUT request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function put($pattern, $to = null)
-    {
-        return $this->match($pattern, $to)->method('PUT');
-    }
-
-    /**
-     * Maps a DELETE request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function delete($pattern, $to = null)
-    {
-        return $this->match($pattern, $to)->method('DELETE');
-    }
-
-    /**
-     * Maps an OPTIONS request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function options($pattern, $to = null)
-    {
-        return $this->match($pattern, $to)->method('OPTIONS');
-    }
-
-    /**
-     * Maps a PATCH request to a callable.
-     *
-     * @param string $pattern Matched route pattern
-     * @param mixed  $to      Callback that returns the response when matched
-     *
-     * @return Controller
-     */
-    public function patch($pattern, $to = null)
-    {
-        return $this->match($pattern, $to)->method('PATCH');
-    }
-
-    public function __call($method, $arguments)
-    {
-        if (!method_exists($this->defaultRoute, $method)) {
-            throw new \BadMethodCallException(sprintf('Method "%s::%s" does not exist.', get_class($this->defaultRoute), $method));
-        }
-
-        call_user_func_array([$this->defaultRoute, $method], $arguments);
-
-        foreach ($this->controllers as $controller) {
-            call_user_func_array([$controller, $method], $arguments);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Persists and freezes staged controllers.
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    public function flush()
-    {
-        if (null === $this->routesFactory) {
-            $routes = new RouteCollection();
-        } else {
-            $routes = $this->routesFactory;
-        }
-
-        return $this->doFlush('', $routes);
-    }
-
-    private function doFlush($prefix, RouteCollection $routes)
-    {
-        if ('' !== $prefix) {
-            $prefix = '/'.trim(trim($prefix), '/');
-        }
-
-        foreach ($this->controllers as $controller) {
-            if ($controller instanceof Controller) {
-                $controller->getRoute()->setPath($prefix.$controller->getRoute()->getPath());
-                if (!$name = $controller->getRouteName()) {
-                    $name = $base = $controller->generateRouteName('');
-                    $i = 0;
-                    while ($routes->get($name)) {
-                        $name = $base.'_'.++$i;
-                    }
-                    $controller->bind($name);
-                }
-                $routes->add($name, $controller->getRoute());
-                $controller->freeze();
-            } else {
-                $controller->doFlush($prefix.$controller->prefix, $routes);
-            }
-        }
-
-        $this->controllers = [];
-
-        return $routes;
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/EventListener/ConverterListener.php b/vendor/silex/silex/src/Silex/EventListener/ConverterListener.php
deleted file mode 100644
index dfb2d5c19b44eb35dcf86f5d9d7153ce66957395..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/EventListener/ConverterListener.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\EventListener;
-
-use Silex\CallbackResolver;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * Handles converters.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ConverterListener implements EventSubscriberInterface
-{
-    protected $routes;
-    protected $callbackResolver;
-
-    /**
-     * Constructor.
-     *
-     * @param RouteCollection  $routes           A RouteCollection instance
-     * @param CallbackResolver $callbackResolver A CallbackResolver instance
-     */
-    public function __construct(RouteCollection $routes, CallbackResolver $callbackResolver)
-    {
-        $this->routes = $routes;
-        $this->callbackResolver = $callbackResolver;
-    }
-
-    /**
-     * Handles converters.
-     *
-     * @param FilterControllerEvent $event The event to handle
-     */
-    public function onKernelController(FilterControllerEvent $event)
-    {
-        $request = $event->getRequest();
-        $route = $this->routes->get($request->attributes->get('_route'));
-        if ($route && $converters = $route->getOption('_converters')) {
-            foreach ($converters as $name => $callback) {
-                $callback = $this->callbackResolver->resolveCallback($callback);
-
-                $request->attributes->set($name, call_user_func($callback, $request->attributes->get($name), $request));
-            }
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::CONTROLLER => 'onKernelController',
-        ];
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/EventListener/LogListener.php b/vendor/silex/silex/src/Silex/EventListener/LogListener.php
deleted file mode 100644
index 39c1b11209c9e16751bc72f8973735b8387533d8..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/EventListener/LogListener.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\EventListener;
-
-use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-
-/**
- * Logs request, response, and exceptions.
- */
-class LogListener implements EventSubscriberInterface
-{
-    protected $logger;
-    protected $exceptionLogFilter;
-
-    public function __construct(LoggerInterface $logger, $exceptionLogFilter = null)
-    {
-        $this->logger = $logger;
-        if (null === $exceptionLogFilter) {
-            $exceptionLogFilter = function (\Exception $e) {
-                if ($e instanceof HttpExceptionInterface && $e->getStatusCode() < 500) {
-                    return LogLevel::ERROR;
-                }
-
-                return LogLevel::CRITICAL;
-            };
-        }
-
-        $this->exceptionLogFilter = $exceptionLogFilter;
-    }
-
-    /**
-     * Logs master requests on event KernelEvents::REQUEST.
-     *
-     * @param GetResponseEvent $event
-     */
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $this->logRequest($event->getRequest());
-    }
-
-    /**
-     * Logs master response on event KernelEvents::RESPONSE.
-     *
-     * @param FilterResponseEvent $event
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $this->logResponse($event->getResponse());
-    }
-
-    /**
-     * Logs uncaught exceptions on event KernelEvents::EXCEPTION.
-     *
-     * @param GetResponseForExceptionEvent $event
-     */
-    public function onKernelException(GetResponseForExceptionEvent $event)
-    {
-        $this->logException($event->getException());
-    }
-
-    /**
-     * Logs a request.
-     *
-     * @param Request $request
-     */
-    protected function logRequest(Request $request)
-    {
-        $this->logger->log(LogLevel::DEBUG, '> '.$request->getMethod().' '.$request->getRequestUri());
-    }
-
-    /**
-     * Logs a response.
-     *
-     * @param Response $response
-     */
-    protected function logResponse(Response $response)
-    {
-        $message = '< '.$response->getStatusCode();
-
-        if ($response instanceof RedirectResponse) {
-            $message .= ' '.$response->getTargetUrl();
-        }
-
-        $this->logger->log(LogLevel::DEBUG, $message);
-    }
-
-    /**
-     * Logs an exception.
-     */
-    protected function logException(\Exception $e)
-    {
-        $this->logger->log(call_user_func($this->exceptionLogFilter, $e), sprintf('%s: %s (uncaught exception) at %s line %s', get_class($e), $e->getMessage(), $e->getFile(), $e->getLine()), ['exception' => $e]);
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::REQUEST => ['onKernelRequest', 0],
-            KernelEvents::RESPONSE => ['onKernelResponse', 0],
-            /*
-             * Priority -4 is used to come after those from SecurityServiceProvider (0)
-             * but before the error handlers added with Silex\Application::error (defaults to -8)
-             */
-            KernelEvents::EXCEPTION => ['onKernelException', -4],
-        ];
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/EventListener/MiddlewareListener.php b/vendor/silex/silex/src/Silex/EventListener/MiddlewareListener.php
deleted file mode 100644
index 32ab4cb83bf61b6eb9198c6ed2807acd38d4c87b..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/EventListener/MiddlewareListener.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\EventListener;
-
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Silex\Application;
-
-/**
- * Manages the route middlewares.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class MiddlewareListener implements EventSubscriberInterface
-{
-    protected $app;
-
-    /**
-     * Constructor.
-     *
-     * @param Application $app An Application instance
-     */
-    public function __construct(Application $app)
-    {
-        $this->app = $app;
-    }
-
-    /**
-     * Runs before filters.
-     *
-     * @param GetResponseEvent $event The event to handle
-     */
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $request = $event->getRequest();
-        $routeName = $request->attributes->get('_route');
-        if (!$route = $this->app['routes']->get($routeName)) {
-            return;
-        }
-
-        foreach ((array) $route->getOption('_before_middlewares') as $callback) {
-            $ret = call_user_func($this->app['callback_resolver']->resolveCallback($callback), $request, $this->app);
-            if ($ret instanceof Response) {
-                $event->setResponse($ret);
-
-                return;
-            } elseif (null !== $ret) {
-                throw new \RuntimeException(sprintf('A before middleware for route "%s" returned an invalid response value. Must return null or an instance of Response.', $routeName));
-            }
-        }
-    }
-
-    /**
-     * Runs after filters.
-     *
-     * @param FilterResponseEvent $event The event to handle
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        $request = $event->getRequest();
-        $routeName = $request->attributes->get('_route');
-        if (!$route = $this->app['routes']->get($routeName)) {
-            return;
-        }
-
-        foreach ((array) $route->getOption('_after_middlewares') as $callback) {
-            $response = call_user_func($this->app['callback_resolver']->resolveCallback($callback), $request, $event->getResponse(), $this->app);
-            if ($response instanceof Response) {
-                $event->setResponse($response);
-            } elseif (null !== $response) {
-                throw new \RuntimeException(sprintf('An after middleware for route "%s" returned an invalid response value. Must return null or an instance of Response.', $routeName));
-            }
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            // this must be executed after the late events defined with before() (and their priority is -512)
-            KernelEvents::REQUEST => ['onKernelRequest', -1024],
-            KernelEvents::RESPONSE => ['onKernelResponse', 128],
-        ];
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/EventListener/StringToResponseListener.php b/vendor/silex/silex/src/Silex/EventListener/StringToResponseListener.php
deleted file mode 100644
index 5b93b2164c1c08be8b6ad99a9703699cceaf11e7..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/EventListener/StringToResponseListener.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\EventListener;
-
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Converts string responses to proper Response instances.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class StringToResponseListener implements EventSubscriberInterface
-{
-    /**
-     * Handles string responses.
-     *
-     * @param GetResponseForControllerResultEvent $event The event to handle
-     */
-    public function onKernelView(GetResponseForControllerResultEvent $event)
-    {
-        $response = $event->getControllerResult();
-
-        if (!(
-            null === $response
-            || is_array($response)
-            || $response instanceof Response
-            || (is_object($response) && !method_exists($response, '__toString'))
-        )) {
-            $event->setResponse(new Response((string) $response));
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::VIEW => ['onKernelView', -10],
-        ];
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Exception/ControllerFrozenException.php b/vendor/silex/silex/src/Silex/Exception/ControllerFrozenException.php
deleted file mode 100644
index 7f0d65f14efe45bd4d379f654e76977aace9a7d1..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Exception/ControllerFrozenException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Exception;
-
-/**
- * Exception, is thrown when a frozen controller is modified.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class ControllerFrozenException extends \RuntimeException
-{
-}
diff --git a/vendor/silex/silex/src/Silex/ExceptionHandler.php b/vendor/silex/silex/src/Silex/ExceptionHandler.php
deleted file mode 100644
index 0e2abc28858f74bb9e56d784b1723e35a2ae9820..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/ExceptionHandler.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex;
-
-use Symfony\Component\Debug\ExceptionHandler as DebugExceptionHandler;
-use Symfony\Component\Debug\Exception\FlattenException;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * Default exception handler.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ExceptionHandler implements EventSubscriberInterface
-{
-    protected $debug;
-
-    public function __construct($debug)
-    {
-        $this->debug = $debug;
-    }
-
-    public function onSilexError(GetResponseForExceptionEvent $event)
-    {
-        $handler = new DebugExceptionHandler($this->debug);
-
-        $exception = $event->getException();
-        if (!$exception instanceof FlattenException) {
-            $exception = FlattenException::create($exception);
-        }
-
-        $response = Response::create($handler->getHtml($exception), $exception->getStatusCode(), $exception->getHeaders())->setCharset(ini_get('default_charset'));
-
-        $event->setResponse($response);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public static function getSubscribedEvents()
-    {
-        return [KernelEvents::EXCEPTION => ['onSilexError', -255]];
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/ExceptionListenerWrapper.php b/vendor/silex/silex/src/Silex/ExceptionListenerWrapper.php
deleted file mode 100644
index d83170ebffb18ded4893a26dbbaaba7a34e29e1c..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/ExceptionListenerWrapper.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex;
-
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
-
-/**
- * Wraps exception listeners.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ExceptionListenerWrapper
-{
-    protected $app;
-    protected $callback;
-
-    /**
-     * Constructor.
-     *
-     * @param Application $app      An Application instance
-     * @param callable    $callback
-     */
-    public function __construct(Application $app, $callback)
-    {
-        $this->app = $app;
-        $this->callback = $callback;
-    }
-
-    public function __invoke(GetResponseForExceptionEvent $event)
-    {
-        $exception = $event->getException();
-        $this->callback = $this->app['callback_resolver']->resolveCallback($this->callback);
-
-        if (!$this->shouldRun($exception)) {
-            return;
-        }
-
-        $code = $exception instanceof HttpExceptionInterface ? $exception->getStatusCode() : 500;
-
-        $response = call_user_func($this->callback, $exception, $event->getRequest(), $code, $event);
-
-        $this->ensureResponse($response, $event);
-    }
-
-    protected function shouldRun(\Exception $exception)
-    {
-        if (is_array($this->callback)) {
-            $callbackReflection = new \ReflectionMethod($this->callback[0], $this->callback[1]);
-        } elseif (is_object($this->callback) && !$this->callback instanceof \Closure) {
-            $callbackReflection = new \ReflectionObject($this->callback);
-            $callbackReflection = $callbackReflection->getMethod('__invoke');
-        } else {
-            $callbackReflection = new \ReflectionFunction($this->callback);
-        }
-
-        if ($callbackReflection->getNumberOfParameters() > 0) {
-            $parameters = $callbackReflection->getParameters();
-            $expectedException = $parameters[0];
-            if ($expectedException->getClass() && !$expectedException->getClass()->isInstance($exception)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    protected function ensureResponse($response, GetResponseForExceptionEvent $event)
-    {
-        if ($response instanceof Response) {
-            $event->setResponse($response);
-        } else {
-            $viewEvent = new GetResponseForControllerResultEvent($this->app['kernel'], $event->getRequest(), $event->getRequestType(), $response);
-            $this->app['dispatcher']->dispatch(KernelEvents::VIEW, $viewEvent);
-
-            if ($viewEvent->hasResponse()) {
-                $event->setResponse($viewEvent->getResponse());
-            }
-        }
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/AssetServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/AssetServiceProvider.php
deleted file mode 100644
index 793a00e4ea960b8b4aaa6fb24d588fa1823ace3f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/AssetServiceProvider.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Symfony\Component\Asset\Packages;
-use Symfony\Component\Asset\Package;
-use Symfony\Component\Asset\PathPackage;
-use Symfony\Component\Asset\UrlPackage;
-use Symfony\Component\Asset\Context\RequestStackContext;
-use Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy;
-use Symfony\Component\Asset\VersionStrategy\JsonManifestVersionStrategy;
-use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy;
-
-/**
- * Symfony Asset component Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AssetServiceProvider implements ServiceProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['assets.packages'] = function ($app) {
-            $packages = [];
-            foreach ($app['assets.named_packages'] as $name => $package) {
-                $version = $app['assets.strategy_factory'](isset($package['version']) ? $package['version'] : null, isset($package['version_format']) ? $package['version_format'] : null, isset($package['json_manifest_path']) ? $package['json_manifest_path'] : null, $name);
-
-                $packages[$name] = $app['assets.package_factory'](isset($package['base_path']) ? $package['base_path'] : '', isset($package['base_urls']) ? $package['base_urls'] : [], $version, $name);
-            }
-
-            return new Packages($app['assets.default_package'], $packages);
-        };
-
-        $app['assets.default_package'] = function ($app) {
-            $version = $app['assets.strategy_factory']($app['assets.version'], $app['assets.version_format'], $app['assets.json_manifest_path'], 'default');
-
-            return $app['assets.package_factory']($app['assets.base_path'], $app['assets.base_urls'], $version, 'default');
-        };
-
-        $app['assets.context'] = function ($app) {
-            return new RequestStackContext($app['request_stack']);
-        };
-
-        $app['assets.base_path'] = '';
-        $app['assets.base_urls'] = [];
-        $app['assets.version'] = null;
-        $app['assets.version_format'] = null;
-        $app['assets.json_manifest_path'] = null;
-
-        $app['assets.named_packages'] = [];
-
-        // prototypes
-
-        $app['assets.strategy_factory'] = $app->protect(function ($version, $format, $jsonManifestPath, $name) use ($app) {
-            if ($version && $jsonManifestPath) {
-                throw new \LogicException(sprintf('Asset package "%s" cannot have version and manifest.', $name));
-            }
-
-            if ($version) {
-                return new StaticVersionStrategy($version, $format);
-            }
-
-            if ($jsonManifestPath) {
-                return new JsonManifestVersionStrategy($jsonManifestPath);
-            }
-
-            return new EmptyVersionStrategy();
-        });
-
-        $app['assets.package_factory'] = $app->protect(function ($basePath, $baseUrls, $version, $name) use ($app) {
-            if ($basePath && $baseUrls) {
-                throw new \LogicException(sprintf('Asset package "%s" cannot have base URLs and base paths.', $name));
-            }
-
-            if (!$baseUrls) {
-                return new PathPackage($basePath, $version, $app['assets.context']);
-            }
-
-            return new UrlPackage($baseUrls, $version, $app['assets.context']);
-        });
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/CsrfServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/CsrfServiceProvider.php
deleted file mode 100644
index eb6e882df343821c2735c06b376b5a010c9268dc..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/CsrfServiceProvider.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Symfony\Component\Security\Csrf\CsrfTokenManager;
-use Symfony\Component\Security\Csrf\TokenGenerator\UriSafeTokenGenerator;
-use Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage;
-use Symfony\Component\Security\Csrf\TokenStorage\NativeSessionTokenStorage;
-
-/**
- * Symfony CSRF Security component Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class CsrfServiceProvider implements ServiceProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['csrf.token_manager'] = function ($app) {
-            return new CsrfTokenManager($app['csrf.token_generator'], $app['csrf.token_storage']);
-        };
-
-        $app['csrf.token_storage'] = function ($app) {
-            if (isset($app['session'])) {
-                return new SessionTokenStorage($app['session'], $app['csrf.session_namespace']);
-            }
-
-            return new NativeSessionTokenStorage($app['csrf.session_namespace']);
-        };
-
-        $app['csrf.token_generator'] = function ($app) {
-            return new UriSafeTokenGenerator();
-        };
-
-        $app['csrf.session_namespace'] = '_csrf';
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/DoctrineServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/DoctrineServiceProvider.php
deleted file mode 100644
index 13c155979dd3ab8eb2d090f434176ae0562e128b..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/DoctrineServiceProvider.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Doctrine\DBAL\DriverManager;
-use Doctrine\DBAL\Configuration;
-use Doctrine\Common\EventManager;
-use Symfony\Bridge\Doctrine\Logger\DbalLogger;
-
-/**
- * Doctrine DBAL Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class DoctrineServiceProvider implements ServiceProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['db.default_options'] = [
-            'driver' => 'pdo_mysql',
-            'dbname' => null,
-            'host' => 'localhost',
-            'user' => 'root',
-            'password' => null,
-        ];
-
-        $app['dbs.options.initializer'] = $app->protect(function () use ($app) {
-            static $initialized = false;
-
-            if ($initialized) {
-                return;
-            }
-
-            $initialized = true;
-
-            if (!isset($app['dbs.options'])) {
-                $app['dbs.options'] = ['default' => isset($app['db.options']) ? $app['db.options'] : []];
-            }
-
-            $tmp = $app['dbs.options'];
-            foreach ($tmp as $name => &$options) {
-                $options = array_replace($app['db.default_options'], $options);
-
-                if (!isset($app['dbs.default'])) {
-                    $app['dbs.default'] = $name;
-                }
-            }
-            $app['dbs.options'] = $tmp;
-        });
-
-        $app['dbs'] = function ($app) {
-            $app['dbs.options.initializer']();
-
-            $dbs = new Container();
-            foreach ($app['dbs.options'] as $name => $options) {
-                if ($app['dbs.default'] === $name) {
-                    // we use shortcuts here in case the default has been overridden
-                    $config = $app['db.config'];
-                    $manager = $app['db.event_manager'];
-                } else {
-                    $config = $app['dbs.config'][$name];
-                    $manager = $app['dbs.event_manager'][$name];
-                }
-
-                $dbs[$name] = function ($dbs) use ($options, $config, $manager) {
-                    return DriverManager::getConnection($options, $config, $manager);
-                };
-            }
-
-            return $dbs;
-        };
-
-        $app['dbs.config'] = function ($app) {
-            $app['dbs.options.initializer']();
-
-            $configs = new Container();
-            $addLogger = isset($app['logger']) && null !== $app['logger'] && class_exists('Symfony\Bridge\Doctrine\Logger\DbalLogger');
-            foreach ($app['dbs.options'] as $name => $options) {
-                $configs[$name] = new Configuration();
-                if ($addLogger) {
-                    $configs[$name]->setSQLLogger(new DbalLogger($app['logger'], isset($app['stopwatch']) ? $app['stopwatch'] : null));
-                }
-            }
-
-            return $configs;
-        };
-
-        $app['dbs.event_manager'] = function ($app) {
-            $app['dbs.options.initializer']();
-
-            $managers = new Container();
-            foreach ($app['dbs.options'] as $name => $options) {
-                $managers[$name] = new EventManager();
-            }
-
-            return $managers;
-        };
-
-        // shortcuts for the "first" DB
-        $app['db'] = function ($app) {
-            $dbs = $app['dbs'];
-
-            return $dbs[$app['dbs.default']];
-        };
-
-        $app['db.config'] = function ($app) {
-            $dbs = $app['dbs.config'];
-
-            return $dbs[$app['dbs.default']];
-        };
-
-        $app['db.event_manager'] = function ($app) {
-            $dbs = $app['dbs.event_manager'];
-
-            return $dbs[$app['dbs.default']];
-        };
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/ExceptionHandlerServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/ExceptionHandlerServiceProvider.php
deleted file mode 100644
index 1c6f2028663f21e0f78fcda3a29bd954525f977f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/ExceptionHandlerServiceProvider.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Api\EventListenerProviderInterface;
-use Silex\ExceptionHandler;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-
-class ExceptionHandlerServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function register(Container $app)
-    {
-        $app['exception_handler'] = function ($app) {
-            return new ExceptionHandler($app['debug']);
-        };
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        if (isset($app['exception_handler'])) {
-            $dispatcher->addSubscriber($app['exception_handler']);
-        }
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/Form/SilexFormExtension.php b/vendor/silex/silex/src/Silex/Provider/Form/SilexFormExtension.php
deleted file mode 100644
index 12efbdf23f81bf37c8e9946cf6694a057d16e306..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/Form/SilexFormExtension.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider\Form;
-
-use Pimple\Container;
-use Symfony\Component\Form\Exception\InvalidArgumentException;
-use Symfony\Component\Form\FormExtensionInterface;
-use Symfony\Component\Form\FormTypeGuesserChain;
-
-class SilexFormExtension implements FormExtensionInterface
-{
-    private $app;
-    private $types;
-    private $typeExtensions;
-    private $guessers;
-    private $guesserLoaded = false;
-    private $guesser;
-
-    public function __construct(Container $app, array $types, array $typeExtensions, array $guessers)
-    {
-        $this->app = $app;
-        $this->setTypes($types);
-        $this->setTypeExtensions($typeExtensions);
-        $this->setGuessers($guessers);
-    }
-
-    public function getType($name)
-    {
-        if (!isset($this->types[$name])) {
-            throw new InvalidArgumentException(sprintf('The type "%s" is not the name of a registered form type.', $name));
-        }
-        if (!is_object($this->types[$name])) {
-            $this->types[$name] = $this->app[$this->types[$name]];
-        }
-
-        return $this->types[$name];
-    }
-
-    public function hasType($name)
-    {
-        return isset($this->types[$name]);
-    }
-
-    public function getTypeExtensions($name)
-    {
-        return isset($this->typeExtensions[$name]) ? $this->typeExtensions[$name] : [];
-    }
-
-    public function hasTypeExtensions($name)
-    {
-        return isset($this->typeExtensions[$name]);
-    }
-
-    public function getTypeGuesser()
-    {
-        if (!$this->guesserLoaded) {
-            $this->guesserLoaded = true;
-
-            if ($this->guessers) {
-                $guessers = [];
-                foreach ($this->guessers as $guesser) {
-                    if (!is_object($guesser)) {
-                        $guesser = $this->app[$guesser];
-                    }
-                    $guessers[] = $guesser;
-                }
-                $this->guesser = new FormTypeGuesserChain($guessers);
-            }
-        }
-
-        return $this->guesser;
-    }
-
-    private function setTypes(array $types)
-    {
-        $this->types = [];
-        foreach ($types as $type) {
-            if (!is_object($type)) {
-                if (!isset($this->app[$type])) {
-                    throw new InvalidArgumentException(sprintf('Invalid form type. The silex service "%s" does not exist.', $type));
-                }
-                $this->types[$type] = $type;
-            } else {
-                $this->types[get_class($type)] = $type;
-            }
-        }
-    }
-
-    private function setTypeExtensions(array $typeExtensions)
-    {
-        $this->typeExtensions = [];
-        foreach ($typeExtensions as $extension) {
-            if (!is_object($extension)) {
-                if (!isset($this->app[$extension])) {
-                    throw new InvalidArgumentException(sprintf('Invalid form type extension. The silex service "%s" does not exist.', $extension));
-                }
-                $extension = $this->app[$extension];
-            }
-            $this->typeExtensions[$extension->getExtendedType()][] = $extension;
-        }
-    }
-
-    private function setGuessers(array $guessers)
-    {
-        $this->guessers = [];
-        foreach ($guessers as $guesser) {
-            if (!is_object($guesser) && !isset($this->app[$guesser])) {
-                throw new InvalidArgumentException(sprintf('Invalid form type guesser. The silex service "%s" does not exist.', $guesser));
-            }
-            $this->guessers[] = $guesser;
-        }
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/FormServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/FormServiceProvider.php
deleted file mode 100644
index 59d147cbd5d48db7d61827be19b55ed0624085fe..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/FormServiceProvider.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Symfony\Component\Form\Extension\Csrf\CsrfExtension;
-use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationExtension;
-use Symfony\Component\Form\Extension\Validator\ValidatorExtension as FormValidatorExtension;
-use Symfony\Component\Form\FormFactory;
-use Symfony\Component\Form\FormRegistry;
-use Symfony\Component\Form\ResolvedFormTypeFactory;
-
-/**
- * Symfony Form component Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FormServiceProvider implements ServiceProviderInterface
-{
-    public function register(Container $app)
-    {
-        if (!class_exists('Locale')) {
-            throw new \RuntimeException('You must either install the PHP intl extension or the Symfony Intl Component to use the Form extension.');
-        }
-
-        $app['form.types'] = function ($app) {
-            return [];
-        };
-
-        $app['form.type.extensions'] = function ($app) {
-            return [];
-        };
-
-        $app['form.type.guessers'] = function ($app) {
-            return [];
-        };
-
-        $app['form.extension.csrf'] = function ($app) {
-            if (isset($app['translator'])) {
-                $translationDomain = isset($app['validator.translation_domain']) ? $app['validator.translation_domain'] : null;
-
-                return new CsrfExtension($app['csrf.token_manager'], $app['translator'], $translationDomain);
-            }
-
-            return new CsrfExtension($app['csrf.token_manager']);
-        };
-
-        $app['form.extension.silex'] = function ($app) {
-            return new Form\SilexFormExtension($app, $app['form.types'], $app['form.type.extensions'], $app['form.type.guessers']);
-        };
-
-        $app['form.extensions'] = function ($app) {
-            $extensions = [
-                new HttpFoundationExtension(),
-            ];
-
-            if (isset($app['csrf.token_manager'])) {
-                $extensions[] = $app['form.extension.csrf'];
-            }
-
-            if (isset($app['validator'])) {
-                $extensions[] = new FormValidatorExtension($app['validator']);
-            }
-            $extensions[] = $app['form.extension.silex'];
-
-            return $extensions;
-        };
-
-        $app['form.factory'] = function ($app) {
-            return new FormFactory($app['form.registry'], $app['form.resolved_type_factory']);
-        };
-
-        $app['form.registry'] = function ($app) {
-            return new FormRegistry($app['form.extensions'], $app['form.resolved_type_factory']);
-        };
-
-        $app['form.resolved_type_factory'] = function ($app) {
-            return new ResolvedFormTypeFactory();
-        };
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/HttpCache/HttpCache.php b/vendor/silex/silex/src/Silex/Provider/HttpCache/HttpCache.php
deleted file mode 100644
index b0ebb5ccbe49165cdac7924adaa6c9bad59ec5ad..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/HttpCache/HttpCache.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider\HttpCache;
-
-use Symfony\Component\HttpKernel\HttpCache\HttpCache as BaseHttpCache;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * HTTP Cache extension to allow using the run() shortcut.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HttpCache extends BaseHttpCache
-{
-    /**
-     * Handles the Request and delivers the Response.
-     *
-     * @param Request $request The Request object
-     */
-    public function run(Request $request = null)
-    {
-        if (null === $request) {
-            $request = Request::createFromGlobals();
-        }
-
-        $response = $this->handle($request);
-        $response->send();
-        $this->terminate($request, $response);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/HttpCacheServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/HttpCacheServiceProvider.php
deleted file mode 100644
index fc4a9874cf2f848f2d5da835ab9b216c17cb74c0..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/HttpCacheServiceProvider.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Provider\HttpCache\HttpCache;
-use Silex\Api\EventListenerProviderInterface;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\HttpKernel\HttpCache\Esi;
-use Symfony\Component\HttpKernel\HttpCache\Store;
-use Symfony\Component\HttpKernel\EventListener\SurrogateListener;
-
-/**
- * Symfony HttpKernel component Provider for HTTP cache.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HttpCacheServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['http_cache'] = function ($app) {
-            $app['http_cache.options'] = array_replace(
-                [
-                    'debug' => $app['debug'],
-                ], $app['http_cache.options']
-            );
-
-            return new HttpCache($app, $app['http_cache.store'], $app['http_cache.esi'], $app['http_cache.options']);
-        };
-
-        $app['http_cache.esi'] = function ($app) {
-            return new Esi();
-        };
-
-        $app['http_cache.store'] = function ($app) {
-            return new Store($app['http_cache.cache_dir']);
-        };
-
-        $app['http_cache.esi_listener'] = function ($app) {
-            return new SurrogateListener($app['http_cache.esi']);
-        };
-
-        $app['http_cache.options'] = [];
-    }
-
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        $dispatcher->addSubscriber($app['http_cache.esi_listener']);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/HttpFragmentServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/HttpFragmentServiceProvider.php
deleted file mode 100644
index 2c951cd096ccf8a2f30f7feea49fa87eaa488cf4..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/HttpFragmentServiceProvider.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Api\EventListenerProviderInterface;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\HttpKernel\Fragment\FragmentHandler;
-use Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer;
-use Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer;
-use Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer;
-use Symfony\Component\HttpKernel\EventListener\FragmentListener;
-use Symfony\Component\HttpKernel\Kernel;
-use Symfony\Component\HttpKernel\UriSigner;
-
-/**
- * HttpKernel Fragment integration for Silex.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HttpFragmentServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['fragment.handler'] = function ($app) {
-            return new FragmentHandler($app['request_stack'], $app['fragment.renderers'], $app['debug']);
-        };
-
-        $app['fragment.renderer.inline'] = function ($app) {
-            $renderer = new InlineFragmentRenderer($app['kernel'], $app['dispatcher']);
-            $renderer->setFragmentPath($app['fragment.path']);
-
-            return $renderer;
-        };
-
-        $app['fragment.renderer.hinclude'] = function ($app) {
-            $renderer = new HIncludeFragmentRenderer(null, $app['uri_signer'], $app['fragment.renderer.hinclude.global_template'], $app['charset']);
-            $renderer->setFragmentPath($app['fragment.path']);
-
-            return $renderer;
-        };
-
-        $app['fragment.renderer.esi'] = function ($app) {
-            $renderer = new EsiFragmentRenderer($app['http_cache.esi'], $app['fragment.renderer.inline'], $app['uri_signer']);
-            $renderer->setFragmentPath($app['fragment.path']);
-
-            return $renderer;
-        };
-
-        $app['fragment.listener'] = function ($app) {
-            return new FragmentListener($app['uri_signer'], $app['fragment.path']);
-        };
-
-        $app['uri_signer'] = function ($app) {
-            return new UriSigner($app['uri_signer.secret']);
-        };
-
-        $app['uri_signer.secret'] = md5(__DIR__);
-        $app['fragment.path'] = '/_fragment';
-        $app['fragment.renderer.hinclude.global_template'] = null;
-        $app['fragment.renderers'] = function ($app) {
-            $renderers = [$app['fragment.renderer.inline'], $app['fragment.renderer.hinclude']];
-
-            if (isset($app['http_cache.esi'])) {
-                $renderers[] = $app['fragment.renderer.esi'];
-            }
-
-            return $renderers;
-        };
-    }
-
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        $dispatcher->addSubscriber($app['fragment.listener']);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/HttpKernelServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/HttpKernelServiceProvider.php
deleted file mode 100644
index cfc7cb5dbf1f77d1e582cac725d2fb60af943ce2..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/HttpKernelServiceProvider.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Api\EventListenerProviderInterface;
-use Silex\AppArgumentValueResolver;
-use Silex\CallbackResolver;
-use Silex\EventListener\ConverterListener;
-use Silex\EventListener\MiddlewareListener;
-use Silex\EventListener\StringToResponseListener;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-use Symfony\Component\HttpKernel\Controller\ControllerResolver;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory;
-use Symfony\Component\HttpKernel\EventListener\ResponseListener;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\WebLink\EventListener\AddLinkHeaderListener;
-use Symfony\Component\WebLink\HttpHeaderSerializer;
-
-class HttpKernelServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function register(Container $app)
-    {
-        $app['resolver'] = function ($app) {
-            return new ControllerResolver($app['logger']);
-        };
-
-        $app['argument_metadata_factory'] = function ($app) {
-            return new ArgumentMetadataFactory();
-        };
-        $app['argument_value_resolvers'] = function ($app) {
-            return array_merge([new AppArgumentValueResolver($app)], ArgumentResolver::getDefaultArgumentValueResolvers());
-        };
-
-        $app['argument_resolver'] = function ($app) {
-            return new ArgumentResolver($app['argument_metadata_factory'], $app['argument_value_resolvers']);
-        };
-
-        $app['kernel'] = function ($app) {
-            return new HttpKernel($app['dispatcher'], $app['resolver'], $app['request_stack'], $app['argument_resolver']);
-        };
-
-        $app['request_stack'] = function () {
-            return new RequestStack();
-        };
-
-        $app['dispatcher'] = function () {
-            return new EventDispatcher();
-        };
-
-        $app['callback_resolver'] = function ($app) {
-            return new CallbackResolver($app);
-        };
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        $dispatcher->addSubscriber(new ResponseListener($app['charset']));
-        $dispatcher->addSubscriber(new MiddlewareListener($app));
-        $dispatcher->addSubscriber(new ConverterListener($app['routes'], $app['callback_resolver']));
-        $dispatcher->addSubscriber(new StringToResponseListener());
-
-        if (class_exists(HttpHeaderSerializer::class)) {
-            $dispatcher->addSubscriber(new AddLinkHeaderListener());
-        }
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/LICENSE b/vendor/silex/silex/src/Silex/Provider/LICENSE
deleted file mode 100644
index bc6ad0497a1f91974512071e882359e7e18ef7e5..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010-2015 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/silex/silex/src/Silex/Provider/Locale/LocaleListener.php b/vendor/silex/silex/src/Silex/Provider/Locale/LocaleListener.php
deleted file mode 100644
index 2463cc818ab28ea114e7627563b410e557c2ddf2..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/Locale/LocaleListener.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider\Locale;
-
-use Pimple\Container;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Initializes the locale based on the current request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Jérôme Tamarelle <jerome@tamarelle.net>
- */
-class LocaleListener implements EventSubscriberInterface
-{
-    private $app;
-    private $defaultLocale;
-    private $requestStack;
-    private $requestContext;
-
-    public function __construct(Container $app, $defaultLocale = 'en', RequestStack $requestStack, RequestContext $requestContext = null)
-    {
-        $this->app = $app;
-        $this->defaultLocale = $defaultLocale;
-        $this->requestStack = $requestStack;
-        $this->requestContext = $requestContext;
-    }
-
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $request = $event->getRequest();
-        $request->setDefaultLocale($this->defaultLocale);
-
-        $this->setLocale($request);
-        $this->setRouterContext($request);
-
-        $this->app['locale'] = $request->getLocale();
-    }
-
-    public function onKernelFinishRequest(FinishRequestEvent $event)
-    {
-        if (null !== $parentRequest = $this->requestStack->getParentRequest()) {
-            $this->setRouterContext($parentRequest);
-        }
-    }
-
-    private function setLocale(Request $request)
-    {
-        if ($locale = $request->attributes->get('_locale')) {
-            $request->setLocale($locale);
-        }
-    }
-
-    private function setRouterContext(Request $request)
-    {
-        if (null !== $this->requestContext) {
-            $this->requestContext->setParameter('_locale', $request->getLocale());
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            // must be registered after the Router to have access to the _locale
-            KernelEvents::REQUEST => [['onKernelRequest', 16]],
-            KernelEvents::FINISH_REQUEST => [['onKernelFinishRequest', 0]],
-        ];
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/LocaleServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/LocaleServiceProvider.php
deleted file mode 100644
index ddea81bfe9419f83898ea34d62b1f9fc946fb3d7..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/LocaleServiceProvider.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Api\EventListenerProviderInterface;
-use Silex\Provider\Locale\LocaleListener;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-
-/**
- * Locale Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class LocaleServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['locale.listener'] = function ($app) {
-            return new LocaleListener($app, $app['locale'], $app['request_stack'], isset($app['request_context']) ? $app['request_context'] : null);
-        };
-
-        $app['locale'] = 'en';
-    }
-
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        $dispatcher->addSubscriber($app['locale.listener']);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/MonologServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/MonologServiceProvider.php
deleted file mode 100644
index 91552a69f246855ea3d1fda83ad689ee6743fd8d..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/MonologServiceProvider.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Monolog\Formatter\LineFormatter;
-use Monolog\Logger;
-use Monolog\Handler;
-use Monolog\ErrorHandler;
-use Silex\Application;
-use Silex\Api\BootableProviderInterface;
-use Silex\Api\EventListenerProviderInterface;
-use Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy;
-use Symfony\Bridge\Monolog\Processor\DebugProcessor;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Silex\EventListener\LogListener;
-
-/**
- * Monolog Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class MonologServiceProvider implements ServiceProviderInterface, BootableProviderInterface, EventListenerProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['logger'] = function () use ($app) {
-            return $app['monolog'];
-        };
-
-        if ($bridge = class_exists('Symfony\Bridge\Monolog\Logger')) {
-            if (isset($app['request_stack'])) {
-                $app['monolog.not_found_activation_strategy'] = function () use ($app) {
-                    $level = MonologServiceProvider::translateLevel($app['monolog.level']);
-
-                    return new NotFoundActivationStrategy($app['request_stack'], ['^/'], $level);
-                };
-            }
-        }
-
-        $app['monolog.logger.class'] = $bridge ? 'Symfony\Bridge\Monolog\Logger' : 'Monolog\Logger';
-
-        $app['monolog'] = function ($app) use ($bridge) {
-            $log = new $app['monolog.logger.class']($app['monolog.name']);
-
-            $handler = new Handler\GroupHandler($app['monolog.handlers']);
-            if (isset($app['monolog.not_found_activation_strategy'])) {
-                $handler = new Handler\FingersCrossedHandler($handler, $app['monolog.not_found_activation_strategy']);
-            }
-
-            $log->pushHandler($handler);
-
-            if ($app['debug'] && $bridge) {
-                $log->pushProcessor(new DebugProcessor());
-            }
-
-            return $log;
-        };
-
-        $app['monolog.formatter'] = function () {
-            return new LineFormatter();
-        };
-
-        $app['monolog.handler'] = $defaultHandler = function () use ($app) {
-            $level = MonologServiceProvider::translateLevel($app['monolog.level']);
-
-            $handler = new Handler\StreamHandler($app['monolog.logfile'], $level, $app['monolog.bubble'], $app['monolog.permission']);
-            $handler->setFormatter($app['monolog.formatter']);
-
-            return $handler;
-        };
-
-        $app['monolog.handlers'] = function () use ($app, $defaultHandler) {
-            $handlers = [];
-
-            // enables the default handler if a logfile was set or the monolog.handler service was redefined
-            if ($app['monolog.logfile'] || $defaultHandler !== $app->raw('monolog.handler')) {
-                $handlers[] = $app['monolog.handler'];
-            }
-
-            return $handlers;
-        };
-
-        $app['monolog.level'] = function () {
-            return Logger::DEBUG;
-        };
-
-        $app['monolog.listener'] = function () use ($app) {
-            return new LogListener($app['logger'], $app['monolog.exception.logger_filter']);
-        };
-
-        $app['monolog.name'] = 'app';
-        $app['monolog.bubble'] = true;
-        $app['monolog.permission'] = null;
-        $app['monolog.exception.logger_filter'] = null;
-        $app['monolog.logfile'] = null;
-        $app['monolog.use_error_handler'] = function ($app) {
-            return !$app['debug'];
-        };
-    }
-
-    public function boot(Application $app)
-    {
-        if ($app['monolog.use_error_handler']) {
-            ErrorHandler::register($app['monolog']);
-        }
-    }
-
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        if (isset($app['monolog.listener'])) {
-            $dispatcher->addSubscriber($app['monolog.listener']);
-        }
-    }
-
-    public static function translateLevel($name)
-    {
-        // level is already translated to logger constant, return as-is
-        if (is_int($name)) {
-            return $name;
-        }
-
-        $psrLevel = Logger::toMonologLevel($name);
-
-        if (is_int($psrLevel)) {
-            return $psrLevel;
-        }
-
-        $levels = Logger::getLevels();
-        $upper = strtoupper($name);
-
-        if (!isset($levels[$upper])) {
-            throw new \InvalidArgumentException("Provided logging level '$name' does not exist. Must be a valid monolog logging level.");
-        }
-
-        return $levels[$upper];
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/RememberMeServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/RememberMeServiceProvider.php
deleted file mode 100644
index 097277b88ec0168874300f5ba22a81a76df22832..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/RememberMeServiceProvider.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Api\EventListenerProviderInterface;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\Security\Core\Authentication\Provider\RememberMeAuthenticationProvider;
-use Symfony\Component\Security\Http\Firewall\RememberMeListener;
-use Symfony\Component\Security\Http\RememberMe\TokenBasedRememberMeServices;
-use Symfony\Component\Security\Http\RememberMe\ResponseListener;
-
-/**
- * Remember-me authentication for the SecurityServiceProvider.
- *
- * @author Jérôme Tamarelle <jerome@tamarelle.net>
- */
-class RememberMeServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['security.remember_me.response_listener'] = function ($app) {
-            if (!isset($app['security.token_storage'])) {
-                throw new \LogicException('You must register the SecurityServiceProvider to use the RememberMeServiceProvider');
-            }
-
-            return new ResponseListener();
-        };
-
-        $app['security.authentication_listener.factory.remember_me'] = $app->protect(function ($name, $options) use ($app) {
-            if (empty($options['key'])) {
-                $options['key'] = $name;
-            }
-
-            if (!isset($app['security.remember_me.service.'.$name])) {
-                $app['security.remember_me.service.'.$name] = $app['security.remember_me.service._proto']($name, $options);
-            }
-
-            if (!isset($app['security.authentication_listener.'.$name.'.remember_me'])) {
-                $app['security.authentication_listener.'.$name.'.remember_me'] = $app['security.authentication_listener.remember_me._proto']($name, $options);
-            }
-
-            if (!isset($app['security.authentication_provider.'.$name.'.remember_me'])) {
-                $app['security.authentication_provider.'.$name.'.remember_me'] = $app['security.authentication_provider.remember_me._proto']($name, $options);
-            }
-
-            return [
-                'security.authentication_provider.'.$name.'.remember_me',
-                'security.authentication_listener.'.$name.'.remember_me',
-                null, // entry point
-                'remember_me',
-            ];
-        });
-
-        $app['security.remember_me.service._proto'] = $app->protect(function ($providerKey, $options) use ($app) {
-            return function () use ($providerKey, $options, $app) {
-                $options = array_replace([
-                    'name' => 'REMEMBERME',
-                    'lifetime' => 31536000,
-                    'path' => '/',
-                    'domain' => null,
-                    'secure' => false,
-                    'httponly' => true,
-                    'always_remember_me' => false,
-                    'remember_me_parameter' => '_remember_me',
-                ], $options);
-
-                return new TokenBasedRememberMeServices([$app['security.user_provider.'.$providerKey]], $options['key'], $providerKey, $options, $app['logger']);
-            };
-        });
-
-        $app['security.authentication_listener.remember_me._proto'] = $app->protect(function ($providerKey) use ($app) {
-            return function () use ($app, $providerKey) {
-                $listener = new RememberMeListener(
-                    $app['security.token_storage'],
-                    $app['security.remember_me.service.'.$providerKey],
-                    $app['security.authentication_manager'],
-                    $app['logger'],
-                    $app['dispatcher']
-                );
-
-                return $listener;
-            };
-        });
-
-        $app['security.authentication_provider.remember_me._proto'] = $app->protect(function ($name, $options) use ($app) {
-            return function () use ($app, $name, $options) {
-                return new RememberMeAuthenticationProvider($app['security.user_checker'], $options['key'], $name);
-            };
-        });
-    }
-
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        $dispatcher->addSubscriber($app['security.remember_me.response_listener']);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/Routing/LazyRequestMatcher.php b/vendor/silex/silex/src/Silex/Provider/Routing/LazyRequestMatcher.php
deleted file mode 100644
index 6837c79ab89c79af1e0395d79d1774e28bbef003..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/Routing/LazyRequestMatcher.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider\Routing;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
-
-/**
- * Implements a lazy UrlMatcher.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- * @author Jérôme Tamarelle <jerome@tamarelle.net>
- */
-class LazyRequestMatcher implements RequestMatcherInterface
-{
-    private $factory;
-
-    public function __construct(\Closure $factory)
-    {
-        $this->factory = $factory;
-    }
-
-    /**
-     * Returns the corresponding RequestMatcherInterface instance.
-     *
-     * @return UrlMatcherInterface
-     */
-    public function getRequestMatcher()
-    {
-        $matcher = call_user_func($this->factory);
-        if (!$matcher instanceof RequestMatcherInterface) {
-            throw new \LogicException("Factory supplied to LazyRequestMatcher must return implementation of Symfony\Component\Routing\RequestMatcherInterface.");
-        }
-
-        return $matcher;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function matchRequest(Request $request)
-    {
-        return $this->getRequestMatcher()->matchRequest($request);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/Routing/RedirectableUrlMatcher.php b/vendor/silex/silex/src/Silex/Provider/Routing/RedirectableUrlMatcher.php
deleted file mode 100644
index b2630aab7046ad3e9b27f510b0034af6dacfd0d7..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/Routing/RedirectableUrlMatcher.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider\Routing;
-
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcher as BaseRedirectableUrlMatcher;
-
-/**
- * Implements the RedirectableUrlMatcherInterface for Silex.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RedirectableUrlMatcher extends BaseRedirectableUrlMatcher
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function redirect($path, $route, $scheme = null)
-    {
-        $url = $this->context->getBaseUrl().$path;
-        $query = $this->context->getQueryString() ?: '';
-
-        if ('' !== $query) {
-            $url .= '?'.$query;
-        }
-
-        if ($this->context->getHost()) {
-            if ($scheme) {
-                $port = '';
-                if ('http' === $scheme && 80 != $this->context->getHttpPort()) {
-                    $port = ':'.$this->context->getHttpPort();
-                } elseif ('https' === $scheme && 443 != $this->context->getHttpsPort()) {
-                    $port = ':'.$this->context->getHttpsPort();
-                }
-
-                $url = $scheme.'://'.$this->context->getHost().$port.$url;
-            }
-        }
-
-        return [
-            '_controller' => function ($url) { return new RedirectResponse($url, 301); },
-            '_route' => $route,
-            'url' => $url,
-        ];
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/RoutingServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/RoutingServiceProvider.php
deleted file mode 100644
index 76e6e0282574c68f1f9f333831f5961136ba304f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/RoutingServiceProvider.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\ControllerCollection;
-use Silex\Api\EventListenerProviderInterface;
-use Silex\Provider\Routing\RedirectableUrlMatcher;
-use Silex\Provider\Routing\LazyRequestMatcher;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Generator\UrlGenerator;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\HttpKernel\EventListener\RouterListener;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-
-/**
- * Symfony Routing component Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RoutingServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['route_class'] = 'Silex\\Route';
-
-        $app['route_factory'] = $app->factory(function ($app) {
-            return new $app['route_class']();
-        });
-
-        $app['routes_factory'] = $app->factory(function () {
-            return new RouteCollection();
-        });
-
-        $app['routes'] = function ($app) {
-            return $app['routes_factory'];
-        };
-        $app['url_generator'] = function ($app) {
-            return new UrlGenerator($app['routes'], $app['request_context']);
-        };
-
-        $app['request_matcher'] = function ($app) {
-            return new RedirectableUrlMatcher($app['routes'], $app['request_context']);
-        };
-
-        $app['request_context'] = function ($app) {
-            $context = new RequestContext();
-
-            $context->setHttpPort(isset($app['request.http_port']) ? $app['request.http_port'] : 80);
-            $context->setHttpsPort(isset($app['request.https_port']) ? $app['request.https_port'] : 443);
-
-            return $context;
-        };
-
-        $app['controllers'] = function ($app) {
-            return $app['controllers_factory'];
-        };
-
-        $controllers_factory = function () use ($app, &$controllers_factory) {
-            return new ControllerCollection($app['route_factory'], $app['routes_factory'], $controllers_factory);
-        };
-        $app['controllers_factory'] = $app->factory($controllers_factory);
-
-        $app['routing.listener'] = function ($app) {
-            $urlMatcher = new LazyRequestMatcher(function () use ($app) {
-                return $app['request_matcher'];
-            });
-
-            return new RouterListener($urlMatcher, $app['request_stack'], $app['request_context'], $app['logger'], null, isset($app['debug']) ? $app['debug'] : false);
-        };
-    }
-
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        $dispatcher->addSubscriber($app['routing.listener']);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/SecurityServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/SecurityServiceProvider.php
deleted file mode 100644
index e06ee709a0d77a7743ccf015ee73d59cb1f5e5b2..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/SecurityServiceProvider.php
+++ /dev/null
@@ -1,707 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Application;
-use Silex\Api\BootableProviderInterface;
-use Silex\Api\ControllerProviderInterface;
-use Silex\Api\EventListenerProviderInterface;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\HttpFoundation\RequestMatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Security\Core\Security;
-use Symfony\Component\Security\Core\User\UserChecker;
-use Symfony\Component\Security\Core\User\InMemoryUserProvider;
-use Symfony\Component\Security\Core\Encoder\EncoderFactory;
-use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;
-use Symfony\Component\Security\Core\Encoder\BCryptPasswordEncoder;
-use Symfony\Component\Security\Core\Encoder\Pbkdf2PasswordEncoder;
-use Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider;
-use Symfony\Component\Security\Core\Authentication\Provider\AnonymousAuthenticationProvider;
-use Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager;
-use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver;
-use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
-use Symfony\Component\Security\Http\Authentication\DefaultAuthenticationSuccessHandler;
-use Symfony\Component\Security\Http\Authentication\DefaultAuthenticationFailureHandler;
-use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
-use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
-use Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter;
-use Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter;
-use Symfony\Component\Security\Core\Authorization\AccessDecisionManager;
-use Symfony\Component\Security\Core\Role\RoleHierarchy;
-use Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator;
-use Symfony\Component\Security\Http\Firewall;
-use Symfony\Component\Security\Http\FirewallMap;
-use Symfony\Component\Security\Http\Firewall\AbstractAuthenticationListener;
-use Symfony\Component\Security\Http\Firewall\AccessListener;
-use Symfony\Component\Security\Http\Firewall\BasicAuthenticationListener;
-use Symfony\Component\Security\Http\Firewall\LogoutListener;
-use Symfony\Component\Security\Http\Firewall\SwitchUserListener;
-use Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener;
-use Symfony\Component\Security\Http\Firewall\ContextListener;
-use Symfony\Component\Security\Http\Firewall\ExceptionListener;
-use Symfony\Component\Security\Http\Firewall\ChannelListener;
-use Symfony\Component\Security\Http\EntryPoint\FormAuthenticationEntryPoint;
-use Symfony\Component\Security\Http\EntryPoint\BasicAuthenticationEntryPoint;
-use Symfony\Component\Security\Http\EntryPoint\RetryAuthenticationEntryPoint;
-use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategy;
-use Symfony\Component\Security\Http\Logout\SessionLogoutHandler;
-use Symfony\Component\Security\Http\Logout\DefaultLogoutSuccessHandler;
-use Symfony\Component\Security\Http\AccessMap;
-use Symfony\Component\Security\Http\HttpUtils;
-use Symfony\Component\Security\Guard\GuardAuthenticatorHandler;
-use Symfony\Component\Security\Guard\Firewall\GuardAuthenticationListener;
-use Symfony\Component\Security\Guard\Provider\GuardAuthenticationProvider;
-
-/**
- * Symfony Security component Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SecurityServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface, ControllerProviderInterface, BootableProviderInterface
-{
-    protected $fakeRoutes;
-
-    public function register(Container $app)
-    {
-        // used to register routes for login_check and logout
-        $this->fakeRoutes = [];
-
-        $that = $this;
-
-        $app['security.role_hierarchy'] = [];
-        $app['security.access_rules'] = [];
-        $app['security.hide_user_not_found'] = true;
-        $app['security.encoder.bcrypt.cost'] = 13;
-
-        $app['security.authorization_checker'] = function ($app) {
-            return new AuthorizationChecker($app['security.token_storage'], $app['security.authentication_manager'], $app['security.access_manager']);
-        };
-
-        $app['security.token_storage'] = function ($app) {
-            return new TokenStorage();
-        };
-
-        $app['user'] = $app->factory(function ($app) {
-            if (null === $token = $app['security.token_storage']->getToken()) {
-                return;
-            }
-
-            if (!is_object($user = $token->getUser())) {
-                return;
-            }
-
-            return $user;
-        });
-
-        $app['security.authentication_manager'] = function ($app) {
-            $manager = new AuthenticationProviderManager($app['security.authentication_providers']);
-            $manager->setEventDispatcher($app['dispatcher']);
-
-            return $manager;
-        };
-
-        // by default, all users use the digest encoder
-        $app['security.encoder_factory'] = function ($app) {
-            return new EncoderFactory([
-                'Symfony\Component\Security\Core\User\UserInterface' => $app['security.default_encoder'],
-            ]);
-        };
-
-        // by default, all users use the BCrypt encoder
-        $app['security.default_encoder'] = function ($app) {
-            return $app['security.encoder.bcrypt'];
-        };
-
-        $app['security.encoder.digest'] = function ($app) {
-            return new MessageDigestPasswordEncoder();
-        };
-
-        $app['security.encoder.bcrypt'] = function ($app) {
-            return new BCryptPasswordEncoder($app['security.encoder.bcrypt.cost']);
-        };
-
-        $app['security.encoder.pbkdf2'] = function ($app) {
-            return new Pbkdf2PasswordEncoder();
-        };
-
-        $app['security.user_checker'] = function ($app) {
-            return new UserChecker();
-        };
-
-        $app['security.access_manager'] = function ($app) {
-            return new AccessDecisionManager($app['security.voters']);
-        };
-
-        $app['security.voters'] = function ($app) {
-            return [
-                new RoleHierarchyVoter(new RoleHierarchy($app['security.role_hierarchy'])),
-                new AuthenticatedVoter($app['security.trust_resolver']),
-            ];
-        };
-
-        $app['security.firewall'] = function ($app) {
-            if (isset($app['validator'])) {
-                $app['security.validator.user_password_validator'] = function ($app) {
-                    return new UserPasswordValidator($app['security.token_storage'], $app['security.encoder_factory']);
-                };
-
-                $app['validator.validator_service_ids'] = array_merge($app['validator.validator_service_ids'], ['security.validator.user_password' => 'security.validator.user_password_validator']);
-            }
-
-            return new Firewall($app['security.firewall_map'], $app['dispatcher']);
-        };
-
-        $app['security.channel_listener'] = function ($app) {
-            return new ChannelListener(
-                $app['security.access_map'],
-                new RetryAuthenticationEntryPoint(
-                    isset($app['request.http_port']) ? $app['request.http_port'] : 80,
-                    isset($app['request.https_port']) ? $app['request.https_port'] : 443
-                ),
-                $app['logger']
-            );
-        };
-
-        // generate the build-in authentication factories
-        foreach (['logout', 'pre_auth', 'guard', 'form', 'http', 'remember_me', 'anonymous'] as $type) {
-            $entryPoint = null;
-            if ('http' === $type) {
-                $entryPoint = 'http';
-            } elseif ('form' === $type) {
-                $entryPoint = 'form';
-            } elseif ('guard' === $type) {
-                $entryPoint = 'guard';
-            }
-
-            $app['security.authentication_listener.factory.'.$type] = $app->protect(function ($name, $options) use ($type, $app, $entryPoint) {
-                if ($entryPoint && !isset($app['security.entry_point.'.$name.'.'.$entryPoint])) {
-                    $app['security.entry_point.'.$name.'.'.$entryPoint] = $app['security.entry_point.'.$entryPoint.'._proto']($name, $options);
-                }
-
-                if (!isset($app['security.authentication_listener.'.$name.'.'.$type])) {
-                    $app['security.authentication_listener.'.$name.'.'.$type] = $app['security.authentication_listener.'.$type.'._proto']($name, $options);
-                }
-
-                $provider = 'dao';
-                if ('anonymous' === $type) {
-                    $provider = 'anonymous';
-                } elseif ('guard' === $type) {
-                    $provider = 'guard';
-                }
-                if (!isset($app['security.authentication_provider.'.$name.'.'.$provider])) {
-                    $app['security.authentication_provider.'.$name.'.'.$provider] = $app['security.authentication_provider.'.$provider.'._proto']($name, $options);
-                }
-
-                return [
-                    'security.authentication_provider.'.$name.'.'.$provider,
-                    'security.authentication_listener.'.$name.'.'.$type,
-                    $entryPoint ? 'security.entry_point.'.$name.'.'.$entryPoint : null,
-                    $type,
-                ];
-            });
-        }
-
-        $app['security.firewall_map'] = function ($app) {
-            $positions = ['logout', 'pre_auth', 'guard', 'form', 'http', 'remember_me', 'anonymous'];
-            $providers = [];
-            $configs = [];
-            foreach ($app['security.firewalls'] as $name => $firewall) {
-                $entryPoint = null;
-                $pattern = isset($firewall['pattern']) ? $firewall['pattern'] : null;
-                $users = isset($firewall['users']) ? $firewall['users'] : [];
-                $security = isset($firewall['security']) ? (bool) $firewall['security'] : true;
-                $stateless = isset($firewall['stateless']) ? (bool) $firewall['stateless'] : false;
-                $context = isset($firewall['context']) ? $firewall['context'] : $name;
-                $hosts = isset($firewall['hosts']) ? $firewall['hosts'] : null;
-                $methods = isset($firewall['methods']) ? $firewall['methods'] : null;
-                unset($firewall['pattern'], $firewall['users'], $firewall['security'], $firewall['stateless'], $firewall['context'], $firewall['methods'], $firewall['hosts']);
-                $protected = false === $security ? false : count($firewall);
-                $listeners = ['security.channel_listener'];
-
-                if (is_string($users)) {
-                    $users = function () use ($app, $users) {
-                        return $app[$users];
-                    };
-                }
-
-                if ($protected) {
-                    if (!isset($app['security.context_listener.'.$context])) {
-                        if (!isset($app['security.user_provider.'.$name])) {
-                            $app['security.user_provider.'.$name] = is_array($users) ? $app['security.user_provider.inmemory._proto']($users) : $users;
-                        }
-
-                        $app['security.context_listener.'.$context] = $app['security.context_listener._proto']($name, [$app['security.user_provider.'.$name]]);
-                    }
-
-                    if (false === $stateless) {
-                        $listeners[] = 'security.context_listener.'.$context;
-                    }
-
-                    $factories = [];
-                    foreach ($positions as $position) {
-                        $factories[$position] = [];
-                    }
-
-                    foreach ($firewall as $type => $options) {
-                        if ('switch_user' === $type) {
-                            continue;
-                        }
-
-                        // normalize options
-                        if (!is_array($options)) {
-                            if (!$options) {
-                                continue;
-                            }
-
-                            $options = [];
-                        }
-
-                        if (!isset($app['security.authentication_listener.factory.'.$type])) {
-                            throw new \LogicException(sprintf('The "%s" authentication entry is not registered.', $type));
-                        }
-
-                        $options['stateless'] = $stateless;
-
-                        list($providerId, $listenerId, $entryPointId, $position) = $app['security.authentication_listener.factory.'.$type]($name, $options);
-
-                        if (null !== $entryPointId) {
-                            $entryPoint = $entryPointId;
-                        }
-
-                        $factories[$position][] = $listenerId;
-                        $providers[] = $providerId;
-                    }
-
-                    foreach ($positions as $position) {
-                        foreach ($factories[$position] as $listener) {
-                            $listeners[] = $listener;
-                        }
-                    }
-
-                    $listeners[] = 'security.access_listener';
-
-                    if (isset($firewall['switch_user'])) {
-                        $app['security.switch_user.'.$name] = $app['security.authentication_listener.switch_user._proto']($name, $firewall['switch_user']);
-
-                        $listeners[] = 'security.switch_user.'.$name;
-                    }
-
-                    if (!isset($app['security.exception_listener.'.$name])) {
-                        if (null === $entryPoint) {
-                            $app[$entryPoint = 'security.entry_point.'.$name.'.form'] = $app['security.entry_point.form._proto']($name, []);
-                        }
-                        $accessDeniedHandler = null;
-                        if (isset($app['security.access_denied_handler.'.$name])) {
-                            $accessDeniedHandler = $app['security.access_denied_handler.'.$name];
-                        }
-                        $app['security.exception_listener.'.$name] = $app['security.exception_listener._proto']($entryPoint, $name, $accessDeniedHandler);
-                    }
-                }
-
-                $configs[$name] = [
-                    'pattern' => $pattern,
-                    'listeners' => $listeners,
-                    'protected' => $protected,
-                    'methods' => $methods,
-                    'hosts' => $hosts,
-                ];
-            }
-
-            $app['security.authentication_providers'] = array_map(function ($provider) use ($app) {
-                return $app[$provider];
-            }, array_unique($providers));
-
-            $map = new FirewallMap();
-            foreach ($configs as $name => $config) {
-                if (is_string($config['pattern'])) {
-                    $requestMatcher = new RequestMatcher($config['pattern'], $config['hosts'], $config['methods']);
-                } else {
-                    $requestMatcher = $config['pattern'];
-                }
-
-                $map->add(
-                    $requestMatcher,
-                    array_map(function ($listenerId) use ($app, $name) {
-                        $listener = $app[$listenerId];
-
-                        if (isset($app['security.remember_me.service.'.$name])) {
-                            if ($listener instanceof AbstractAuthenticationListener || $listener instanceof GuardAuthenticationListener) {
-                                $listener->setRememberMeServices($app['security.remember_me.service.'.$name]);
-                            }
-                            if ($listener instanceof LogoutListener) {
-                                $listener->addHandler($app['security.remember_me.service.'.$name]);
-                            }
-                        }
-
-                        return $listener;
-                    }, $config['listeners']),
-                    $config['protected'] ? $app['security.exception_listener.'.$name] : null
-                );
-            }
-
-            return $map;
-        };
-
-        $app['security.access_listener'] = function ($app) {
-            return new AccessListener(
-                $app['security.token_storage'],
-                $app['security.access_manager'],
-                $app['security.access_map'],
-                $app['security.authentication_manager'],
-                $app['logger']
-            );
-        };
-
-        $app['security.access_map'] = function ($app) {
-            $map = new AccessMap();
-
-            foreach ($app['security.access_rules'] as $rule) {
-                if (is_string($rule[0])) {
-                    $rule[0] = new RequestMatcher($rule[0]);
-                } elseif (is_array($rule[0])) {
-                    $rule[0] += [
-                        'path' => null,
-                        'host' => null,
-                        'methods' => null,
-                        'ips' => null,
-                        'attributes' => [],
-                        'schemes' => null,
-                    ];
-                    $rule[0] = new RequestMatcher($rule[0]['path'], $rule[0]['host'], $rule[0]['methods'], $rule[0]['ips'], $rule[0]['attributes'], $rule[0]['schemes']);
-                }
-                $map->add($rule[0], (array) $rule[1], isset($rule[2]) ? $rule[2] : null);
-            }
-
-            return $map;
-        };
-
-        $app['security.trust_resolver'] = function ($app) {
-            return new AuthenticationTrustResolver('Symfony\Component\Security\Core\Authentication\Token\AnonymousToken', 'Symfony\Component\Security\Core\Authentication\Token\RememberMeToken');
-        };
-
-        $app['security.session_strategy'] = function ($app) {
-            return new SessionAuthenticationStrategy(SessionAuthenticationStrategy::MIGRATE);
-        };
-
-        $app['security.http_utils'] = function ($app) {
-            return new HttpUtils($app['url_generator'], $app['request_matcher']);
-        };
-
-        $app['security.last_error'] = $app->protect(function (Request $request) {
-            if ($request->attributes->has(Security::AUTHENTICATION_ERROR)) {
-                return $request->attributes->get(Security::AUTHENTICATION_ERROR)->getMessage();
-            }
-
-            $session = $request->getSession();
-            if ($session && $session->has(Security::AUTHENTICATION_ERROR)) {
-                $message = $session->get(Security::AUTHENTICATION_ERROR)->getMessage();
-                $session->remove(Security::AUTHENTICATION_ERROR);
-
-                return $message;
-            }
-        });
-
-        // prototypes (used by the Firewall Map)
-
-        $app['security.context_listener._proto'] = $app->protect(function ($providerKey, $userProviders) use ($app) {
-            return function () use ($app, $userProviders, $providerKey) {
-                return new ContextListener(
-                    $app['security.token_storage'],
-                    $userProviders,
-                    $providerKey,
-                    $app['logger'],
-                    $app['dispatcher']
-                );
-            };
-        });
-
-        $app['security.user_provider.inmemory._proto'] = $app->protect(function ($params) use ($app) {
-            return function () use ($app, $params) {
-                $users = [];
-                foreach ($params as $name => $user) {
-                    $users[$name] = ['roles' => (array) $user[0], 'password' => $user[1]];
-                }
-
-                return new InMemoryUserProvider($users);
-            };
-        });
-
-        $app['security.exception_listener._proto'] = $app->protect(function ($entryPoint, $name, $accessDeniedHandler = null) use ($app) {
-            return function () use ($app, $entryPoint, $name, $accessDeniedHandler) {
-                return new ExceptionListener(
-                    $app['security.token_storage'],
-                    $app['security.trust_resolver'],
-                    $app['security.http_utils'],
-                    $name,
-                    $app[$entryPoint],
-                    null, // errorPage
-                    $accessDeniedHandler,
-                    $app['logger']
-                );
-            };
-        });
-
-        $app['security.authentication.success_handler._proto'] = $app->protect(function ($name, $options) use ($app) {
-            return function () use ($name, $options, $app) {
-                $handler = new DefaultAuthenticationSuccessHandler(
-                    $app['security.http_utils'],
-                    $options
-                );
-                $handler->setProviderKey($name);
-
-                return $handler;
-            };
-        });
-
-        $app['security.authentication.failure_handler._proto'] = $app->protect(function ($name, $options) use ($app) {
-            return function () use ($name, $options, $app) {
-                return new DefaultAuthenticationFailureHandler(
-                    $app,
-                    $app['security.http_utils'],
-                    $options,
-                    $app['logger']
-                );
-            };
-        });
-
-        $app['security.authentication_listener.guard._proto'] = $app->protect(function ($providerKey, $options) use ($app, $that) {
-            return function () use ($app, $providerKey, $options, $that) {
-                if (!isset($app['security.authentication.guard_handler'])) {
-                    $app['security.authentication.guard_handler'] = new GuardAuthenticatorHandler($app['security.token_storage'], $app['dispatcher']);
-                }
-
-                $authenticators = [];
-                foreach ($options['authenticators'] as $authenticatorId) {
-                    $authenticators[] = $app[$authenticatorId];
-                }
-
-                return new GuardAuthenticationListener(
-                    $app['security.authentication.guard_handler'],
-                    $app['security.authentication_manager'],
-                    $providerKey,
-                    $authenticators,
-                    $app['logger']
-                );
-            };
-        });
-
-        $app['security.authentication_listener.form._proto'] = $app->protect(function ($name, $options) use ($app, $that) {
-            return function () use ($app, $name, $options, $that) {
-                $that->addFakeRoute(
-                    'match',
-                    $tmp = isset($options['check_path']) ? $options['check_path'] : '/login_check',
-                    str_replace('/', '_', ltrim($tmp, '/'))
-                );
-
-                $class = isset($options['listener_class']) ? $options['listener_class'] : 'Symfony\\Component\\Security\\Http\\Firewall\\UsernamePasswordFormAuthenticationListener';
-
-                if (!isset($app['security.authentication.success_handler.'.$name])) {
-                    $app['security.authentication.success_handler.'.$name] = $app['security.authentication.success_handler._proto']($name, $options);
-                }
-
-                if (!isset($app['security.authentication.failure_handler.'.$name])) {
-                    $app['security.authentication.failure_handler.'.$name] = $app['security.authentication.failure_handler._proto']($name, $options);
-                }
-
-                return new $class(
-                    $app['security.token_storage'],
-                    $app['security.authentication_manager'],
-                    isset($app['security.session_strategy.'.$name]) ? $app['security.session_strategy.'.$name] : $app['security.session_strategy'],
-                    $app['security.http_utils'],
-                    $name,
-                    $app['security.authentication.success_handler.'.$name],
-                    $app['security.authentication.failure_handler.'.$name],
-                    $options,
-                    $app['logger'],
-                    $app['dispatcher'],
-                    isset($options['with_csrf']) && $options['with_csrf'] && isset($app['csrf.token_manager']) ? $app['csrf.token_manager'] : null
-                );
-            };
-        });
-
-        $app['security.authentication_listener.http._proto'] = $app->protect(function ($providerKey, $options) use ($app) {
-            return function () use ($app, $providerKey, $options) {
-                return new BasicAuthenticationListener(
-                    $app['security.token_storage'],
-                    $app['security.authentication_manager'],
-                    $providerKey,
-                    $app['security.entry_point.'.$providerKey.'.http'],
-                    $app['logger']
-                );
-            };
-        });
-
-        $app['security.authentication_listener.anonymous._proto'] = $app->protect(function ($providerKey, $options) use ($app) {
-            return function () use ($app, $providerKey, $options) {
-                return new AnonymousAuthenticationListener(
-                    $app['security.token_storage'],
-                    $providerKey,
-                    $app['logger']
-                );
-            };
-        });
-
-        $app['security.authentication.logout_handler._proto'] = $app->protect(function ($name, $options) use ($app) {
-            return function () use ($name, $options, $app) {
-                return new DefaultLogoutSuccessHandler(
-                    $app['security.http_utils'],
-                    isset($options['target_url']) ? $options['target_url'] : '/'
-                );
-            };
-        });
-
-        $app['security.authentication_listener.logout._proto'] = $app->protect(function ($name, $options) use ($app, $that) {
-            return function () use ($app, $name, $options, $that) {
-                $that->addFakeRoute(
-                    'get',
-                    $tmp = isset($options['logout_path']) ? $options['logout_path'] : '/logout',
-                    str_replace('/', '_', ltrim($tmp, '/'))
-                );
-
-                if (!isset($app['security.authentication.logout_handler.'.$name])) {
-                    $app['security.authentication.logout_handler.'.$name] = $app['security.authentication.logout_handler._proto']($name, $options);
-                }
-
-                $listener = new LogoutListener(
-                    $app['security.token_storage'],
-                    $app['security.http_utils'],
-                    $app['security.authentication.logout_handler.'.$name],
-                    $options,
-                    isset($options['with_csrf']) && $options['with_csrf'] && isset($app['csrf.token_manager']) ? $app['csrf.token_manager'] : null
-                );
-
-                $invalidateSession = isset($options['invalidate_session']) ? $options['invalidate_session'] : true;
-                if (true === $invalidateSession && false === $options['stateless']) {
-                    $listener->addHandler(new SessionLogoutHandler());
-                }
-
-                return $listener;
-            };
-        });
-
-        $app['security.authentication_listener.switch_user._proto'] = $app->protect(function ($name, $options) use ($app, $that) {
-            return function () use ($app, $name, $options, $that) {
-                return new SwitchUserListener(
-                    $app['security.token_storage'],
-                    $app['security.user_provider.'.$name],
-                    $app['security.user_checker'],
-                    $name,
-                    $app['security.access_manager'],
-                    $app['logger'],
-                    isset($options['parameter']) ? $options['parameter'] : '_switch_user',
-                    isset($options['role']) ? $options['role'] : 'ROLE_ALLOWED_TO_SWITCH',
-                    $app['dispatcher']
-                );
-            };
-        });
-
-        $app['security.entry_point.form._proto'] = $app->protect(function ($name, array $options) use ($app) {
-            return function () use ($app, $options) {
-                $loginPath = isset($options['login_path']) ? $options['login_path'] : '/login';
-                $useForward = isset($options['use_forward']) ? $options['use_forward'] : false;
-
-                return new FormAuthenticationEntryPoint($app, $app['security.http_utils'], $loginPath, $useForward);
-            };
-        });
-
-        $app['security.entry_point.http._proto'] = $app->protect(function ($name, array $options) use ($app) {
-            return function () use ($app, $name, $options) {
-                return new BasicAuthenticationEntryPoint(isset($options['real_name']) ? $options['real_name'] : 'Secured');
-            };
-        });
-
-        $app['security.entry_point.guard._proto'] = $app->protect(function ($name, array $options) use ($app) {
-            if (isset($options['entry_point'])) {
-                // if it's configured explicitly, use it!
-                return $app[$options['entry_point']];
-            }
-            $authenticatorIds = $options['authenticators'];
-            if (1 == count($authenticatorIds)) {
-                // if there is only one authenticator, use that as the entry point
-                return $app[reset($authenticatorIds)];
-            }
-            // we have multiple entry points - we must ask them to configure one
-            throw new \LogicException(sprintf(
-                'Because you have multiple guard configurators, you need to set the "guard.entry_point" key to one of your configurators (%s)',
-                implode(', ', $authenticatorIds)
-            ));
-        });
-
-        $app['security.authentication_provider.dao._proto'] = $app->protect(function ($name, $options) use ($app) {
-            return function () use ($app, $name) {
-                return new DaoAuthenticationProvider(
-                    $app['security.user_provider.'.$name],
-                    $app['security.user_checker'],
-                    $name,
-                    $app['security.encoder_factory'],
-                    $app['security.hide_user_not_found']
-                );
-            };
-        });
-
-        $app['security.authentication_provider.guard._proto'] = $app->protect(function ($name, $options) use ($app) {
-            return function () use ($app, $name, $options) {
-                $authenticators = [];
-                foreach ($options['authenticators'] as $authenticatorId) {
-                    $authenticators[] = $app[$authenticatorId];
-                }
-
-                return new GuardAuthenticationProvider(
-                    $authenticators,
-                    $app['security.user_provider.'.$name],
-                    $name,
-                    $app['security.user_checker']
-                );
-            };
-        });
-
-        $app['security.authentication_provider.anonymous._proto'] = $app->protect(function ($name, $options) use ($app) {
-            return function () use ($app, $name) {
-                return new AnonymousAuthenticationProvider($name);
-            };
-        });
-
-        $app['security.authentication_utils'] = function ($app) {
-            return new AuthenticationUtils($app['request_stack']);
-        };
-    }
-
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        $dispatcher->addSubscriber($app['security.firewall']);
-    }
-
-    public function connect(Application $app)
-    {
-        $controllers = $app['controllers_factory'];
-        foreach ($this->fakeRoutes as $route) {
-            list($method, $pattern, $name) = $route;
-
-            $controllers->$method($pattern)->run(null)->bind($name);
-        }
-
-        return $controllers;
-    }
-
-    public function boot(Application $app)
-    {
-        $app->mount('/', $this->connect($app));
-    }
-
-    public function addFakeRoute($method, $pattern, $name)
-    {
-        $this->fakeRoutes[] = [$method, $pattern, $name];
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/SerializerServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/SerializerServiceProvider.php
deleted file mode 100644
index 3260807ca0da5444a643b421e3364423f342997f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/SerializerServiceProvider.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Symfony\Component\Serializer\Serializer;
-use Symfony\Component\Serializer\Encoder\JsonEncoder;
-use Symfony\Component\Serializer\Encoder\XmlEncoder;
-use Symfony\Component\Serializer\Normalizer\CustomNormalizer;
-use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
-
-/**
- * Symfony Serializer component Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Marijn Huizendveld <marijn@pink-tie.com>
- */
-class SerializerServiceProvider implements ServiceProviderInterface
-{
-    /**
-     * {@inheritdoc}
-     *
-     * This method registers a serializer service. {@link http://api.symfony.com/master/Symfony/Component/Serializer/Serializer.html
-     * The service is provided by the Symfony Serializer component}.
-     */
-    public function register(Container $app)
-    {
-        $app['serializer'] = function ($app) {
-            return new Serializer($app['serializer.normalizers'], $app['serializer.encoders']);
-        };
-
-        $app['serializer.encoders'] = function () {
-            return [new JsonEncoder(), new XmlEncoder()];
-        };
-
-        $app['serializer.normalizers'] = function () {
-            return [new CustomNormalizer(), new GetSetMethodNormalizer()];
-        };
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/ServiceControllerServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/ServiceControllerServiceProvider.php
deleted file mode 100644
index 1c38adc9c60eab52980157f87ad21cbb26886945..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/ServiceControllerServiceProvider.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\ServiceControllerResolver;
-
-class ServiceControllerServiceProvider implements ServiceProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app->extend('resolver', function ($resolver, $app) {
-            return new ServiceControllerResolver($resolver, $app['callback_resolver']);
-        });
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/Session/SessionListener.php b/vendor/silex/silex/src/Silex/Provider/Session/SessionListener.php
deleted file mode 100644
index aba4c4e868e107a34abf03049d27348bd81cdb8f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/Session/SessionListener.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider\Session;
-
-use Pimple\Container;
-use Symfony\Component\HttpKernel\EventListener\SessionListener as BaseSessionListener;
-
-/**
- * Sets the session in the request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SessionListener extends BaseSessionListener
-{
-    private $app;
-
-    public function __construct(Container $app)
-    {
-        $this->app = $app;
-    }
-
-    protected function getSession()
-    {
-        if (!isset($this->app['session'])) {
-            return;
-        }
-
-        return $this->app['session'];
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/Session/TestSessionListener.php b/vendor/silex/silex/src/Silex/Provider/Session/TestSessionListener.php
deleted file mode 100644
index ab98eb12b0917b713c889109740ad8845c21a0cc..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/Session/TestSessionListener.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider\Session;
-
-use Pimple\Container;
-use Symfony\Component\HttpKernel\EventListener\TestSessionListener as BaseTestSessionListener;
-
-/**
- * Simulates sessions for testing purpose.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TestSessionListener extends BaseTestSessionListener
-{
-    private $app;
-
-    public function __construct(Container $app)
-    {
-        $this->app = $app;
-    }
-
-    protected function getSession()
-    {
-        if (!isset($this->app['session'])) {
-            return;
-        }
-
-        return $this->app['session'];
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/SessionServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/SessionServiceProvider.php
deleted file mode 100644
index e522eec93604444ed783f4ad2d00a6c3a85d8d68..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/SessionServiceProvider.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Api\EventListenerProviderInterface;
-use Silex\Provider\Session\SessionListener;
-use Silex\Provider\Session\TestSessionListener;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-use Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage;
-use Symfony\Component\HttpFoundation\Session\Session;
-
-/**
- * Symfony HttpFoundation component Provider for sessions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SessionServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['session.test'] = false;
-
-        $app['session'] = function ($app) {
-            return new Session($app['session.storage'], $app['session.attribute_bag'], $app['session.flash_bag']);
-        };
-
-        $app['session.storage'] = function ($app) {
-            if ($app['session.test']) {
-                return $app['session.storage.test'];
-            }
-
-            return $app['session.storage.native'];
-        };
-
-        $app['session.storage.handler'] = function ($app) {
-            return new NativeFileSessionHandler($app['session.storage.save_path']);
-        };
-
-        $app['session.storage.native'] = function ($app) {
-            return new NativeSessionStorage(
-                $app['session.storage.options'],
-                $app['session.storage.handler']
-            );
-        };
-
-        $app['session.listener'] = function ($app) {
-            return new SessionListener($app);
-        };
-
-        $app['session.storage.test'] = function () {
-            return new MockFileSessionStorage();
-        };
-
-        $app['session.listener.test'] = function ($app) {
-            return new TestSessionListener($app);
-        };
-
-        $app['session.storage.options'] = [];
-        $app['session.storage.save_path'] = null;
-        $app['session.attribute_bag'] = null;
-        $app['session.flash_bag'] = null;
-    }
-
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        $dispatcher->addSubscriber($app['session.listener']);
-
-        if ($app['session.test']) {
-            $dispatcher->addSubscriber($app['session.listener.test']);
-        }
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/SwiftmailerServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/SwiftmailerServiceProvider.php
deleted file mode 100644
index 0cd3b35dc9c119452a5388249e2b3bad4ec05e86..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/SwiftmailerServiceProvider.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Api\EventListenerProviderInterface;
-use Symfony\Component\Console\ConsoleEvents;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Event\PostResponseEvent;
-
-/**
- * Swiftmailer Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SwiftmailerServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['swiftmailer.options'] = [];
-        $app['swiftmailer.use_spool'] = true;
-
-        $app['mailer.initialized'] = false;
-
-        $app['mailer'] = function ($app) {
-            $app['mailer.initialized'] = true;
-            $transport = $app['swiftmailer.use_spool'] ? $app['swiftmailer.spooltransport'] : $app['swiftmailer.transport'];
-
-            return new \Swift_Mailer($transport);
-        };
-
-        $app['swiftmailer.spooltransport'] = function ($app) {
-            return new \Swift_Transport_SpoolTransport($app['swiftmailer.transport.eventdispatcher'], $app['swiftmailer.spool']);
-        };
-
-        $app['swiftmailer.spool'] = function ($app) {
-            return new \Swift_MemorySpool();
-        };
-
-        $app['swiftmailer.transport'] = function ($app) {
-            $transport = new \Swift_Transport_EsmtpTransport(
-                $app['swiftmailer.transport.buffer'],
-                [$app['swiftmailer.transport.authhandler']],
-                $app['swiftmailer.transport.eventdispatcher']
-            );
-
-            $options = $app['swiftmailer.options'] = array_replace([
-                'host' => 'localhost',
-                'port' => 25,
-                'username' => '',
-                'password' => '',
-                'encryption' => null,
-                'auth_mode' => null,
-                'stream_context_options' => [],
-            ], $app['swiftmailer.options']);
-
-            $transport->setHost($options['host']);
-            $transport->setPort($options['port']);
-            $transport->setEncryption($options['encryption']);
-            $transport->setUsername($options['username']);
-            $transport->setPassword($options['password']);
-            $transport->setAuthMode($options['auth_mode']);
-            $transport->setStreamOptions($options['stream_context_options']);
-
-            return $transport;
-        };
-
-        $app['swiftmailer.transport.buffer'] = function () {
-            return new \Swift_Transport_StreamBuffer(new \Swift_StreamFilters_StringReplacementFilterFactory());
-        };
-
-        $app['swiftmailer.transport.authhandler'] = function () {
-            return new \Swift_Transport_Esmtp_AuthHandler([
-                new \Swift_Transport_Esmtp_Auth_CramMd5Authenticator(),
-                new \Swift_Transport_Esmtp_Auth_LoginAuthenticator(),
-                new \Swift_Transport_Esmtp_Auth_PlainAuthenticator(),
-            ]);
-        };
-
-        $app['swiftmailer.transport.eventdispatcher'] = function ($app) {
-            $dispatcher = new \Swift_Events_SimpleEventDispatcher();
-
-            $plugins = $app['swiftmailer.plugins'];
-
-            if (null !== $app['swiftmailer.sender_address']) {
-                $plugins[] = new \Swift_Plugins_ImpersonatePlugin($app['swiftmailer.sender_address']);
-            }
-
-            if (!empty($app['swiftmailer.delivery_addresses'])) {
-                $plugins[] = new \Swift_Plugins_RedirectingPlugin(
-                    $app['swiftmailer.delivery_addresses'],
-                    $app['swiftmailer.delivery_whitelist']
-                );
-            }
-
-            foreach ($plugins as $plugin) {
-                $dispatcher->bindEventListener($plugin);
-            }
-
-            return $dispatcher;
-        };
-
-        $app['swiftmailer.plugins'] = function ($app) {
-            return [];
-        };
-
-        $app['swiftmailer.sender_address'] = null;
-        $app['swiftmailer.delivery_addresses'] = [];
-        $app['swiftmailer.delivery_whitelist'] = [];
-    }
-
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        // Event has no typehint as it can be either a PostResponseEvent or a ConsoleTerminateEvent
-        $onTerminate = function ($event) use ($app) {
-            // To speed things up (by avoiding Swift Mailer initialization), flush
-            // messages only if our mailer has been created (potentially used)
-            if ($app['mailer.initialized'] && $app['swiftmailer.use_spool'] && $app['swiftmailer.spooltransport'] instanceof \Swift_Transport_SpoolTransport) {
-                $app['swiftmailer.spooltransport']->getSpool()->flushQueue($app['swiftmailer.transport']);
-            }
-        };
-
-        $dispatcher->addListener(KernelEvents::TERMINATE, $onTerminate);
-
-        if (class_exists('Symfony\Component\Console\ConsoleEvents')) {
-            $dispatcher->addListener(ConsoleEvents::TERMINATE, $onTerminate);
-        }
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/TranslationServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/TranslationServiceProvider.php
deleted file mode 100644
index 6f70c5d6fa13b3e93b48c6363872d51674af5b07..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/TranslationServiceProvider.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Symfony\Component\Translation\Translator;
-use Symfony\Component\Translation\Formatter\MessageFormatter;
-use Symfony\Component\Translation\Loader\ArrayLoader;
-use Symfony\Component\Translation\Loader\XliffFileLoader;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\HttpKernel\EventListener\TranslatorListener;
-use Silex\Api\EventListenerProviderInterface;
-
-/**
- * Symfony Translation component Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TranslationServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['translator'] = function ($app) {
-            if (!isset($app['locale'])) {
-                throw new \LogicException('You must define \'locale\' parameter or register the LocaleServiceProvider to use the TranslationServiceProvider');
-            }
-
-            $translator = new Translator($app['locale'], $app['translator.message_selector'], $app['translator.cache_dir'], $app['debug']);
-            $translator->setFallbackLocales($app['locale_fallbacks']);
-            $translator->addLoader('array', new ArrayLoader());
-            $translator->addLoader('xliff', new XliffFileLoader());
-
-            if (isset($app['validator'])) {
-                $r = new \ReflectionClass('Symfony\Component\Validator\Validation');
-                $file = dirname($r->getFilename()).'/Resources/translations/validators.'.$app['locale'].'.xlf';
-                if (file_exists($file)) {
-                    $translator->addResource('xliff', $file, $app['locale'], 'validators');
-                }
-            }
-
-            if (isset($app['form.factory'])) {
-                $r = new \ReflectionClass('Symfony\Component\Form\Form');
-                $file = dirname($r->getFilename()).'/Resources/translations/validators.'.$app['locale'].'.xlf';
-                if (file_exists($file)) {
-                    $translator->addResource('xliff', $file, $app['locale'], 'validators');
-                }
-            }
-
-            // Register default resources
-            foreach ($app['translator.resources'] as $resource) {
-                $translator->addResource($resource[0], $resource[1], $resource[2], $resource[3]);
-            }
-
-            foreach ($app['translator.domains'] as $domain => $data) {
-                foreach ($data as $locale => $messages) {
-                    $translator->addResource('array', $messages, $locale, $domain);
-                }
-            }
-
-            return $translator;
-        };
-
-        if (isset($app['request_stack'])) {
-            $app['translator.listener'] = function ($app) {
-                return new TranslatorListener($app['translator'], $app['request_stack']);
-            };
-        }
-
-        $app['translator.message_selector'] = function () {
-            return new MessageFormatter();
-        };
-
-        $app['translator.resources'] = function ($app) {
-            return [];
-        };
-
-        $app['translator.domains'] = [];
-        $app['locale_fallbacks'] = ['en'];
-        $app['translator.cache_dir'] = null;
-    }
-
-    public function subscribe(Container $app, EventDispatcherInterface $dispatcher)
-    {
-        if (isset($app['translator.listener'])) {
-            $dispatcher->addSubscriber($app['translator.listener']);
-        }
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/Twig/RuntimeLoader.php b/vendor/silex/silex/src/Silex/Provider/Twig/RuntimeLoader.php
deleted file mode 100644
index 9a7aa915e60cc321c5fb3351e53136cb51da5891..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/Twig/RuntimeLoader.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider\Twig;
-
-use Pimple\Container;
-
-/**
- * Loads Twig extension runtimes via Pimple.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RuntimeLoader implements \Twig_RuntimeLoaderInterface
-{
-    private $container;
-    private $mapping;
-
-    public function __construct(Container $container, array $mapping)
-    {
-        $this->container = $container;
-        $this->mapping = $mapping;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function load($class)
-    {
-        if (isset($this->mapping[$class])) {
-            return $this->container[$this->mapping[$class]];
-        }
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/TwigServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/TwigServiceProvider.php
deleted file mode 100644
index b46186a232e3f090460a0c7e08fa63ab7195627c..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/TwigServiceProvider.php
+++ /dev/null
@@ -1,189 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Provider\Twig\RuntimeLoader;
-use Symfony\Bridge\Twig\AppVariable;
-use Symfony\Bridge\Twig\Extension\AssetExtension;
-use Symfony\Bridge\Twig\Extension\DumpExtension;
-use Symfony\Bridge\Twig\Extension\RoutingExtension;
-use Symfony\Bridge\Twig\Extension\TranslationExtension;
-use Symfony\Bridge\Twig\Extension\FormExtension;
-use Symfony\Bridge\Twig\Extension\SecurityExtension;
-use Symfony\Bridge\Twig\Extension\HttpFoundationExtension;
-use Symfony\Bridge\Twig\Extension\HttpKernelExtension;
-use Symfony\Bridge\Twig\Extension\WebLinkExtension;
-use Symfony\Bridge\Twig\Form\TwigRendererEngine;
-use Symfony\Bridge\Twig\Extension\HttpKernelRuntime;
-use Symfony\Component\Form\FormRenderer;
-
-/**
- * Twig integration for Silex.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TwigServiceProvider implements ServiceProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['twig.options'] = [];
-        $app['twig.form.templates'] = ['form_div_layout.html.twig'];
-        $app['twig.path'] = [];
-        $app['twig.templates'] = [];
-
-        $app['twig.date.format'] = 'F j, Y H:i';
-        $app['twig.date.interval_format'] = '%d days';
-        $app['twig.date.timezone'] = null;
-
-        $app['twig.number_format.decimals'] = 0;
-        $app['twig.number_format.decimal_point'] = '.';
-        $app['twig.number_format.thousands_separator'] = ',';
-
-        $app['twig'] = function ($app) {
-            $twig = $app['twig.environment_factory']($app);
-            // registered for BC, but should not be used anymore
-            // deprecated and should probably be removed in Silex 3.0
-            $twig->addGlobal('app', $app);
-
-            $coreExtension = $twig->getExtension('Twig_Extension_Core');
-
-            $coreExtension->setDateFormat($app['twig.date.format'], $app['twig.date.interval_format']);
-
-            if (null !== $app['twig.date.timezone']) {
-                $coreExtension->setTimezone($app['twig.date.timezone']);
-            }
-
-            $coreExtension->setNumberFormat($app['twig.number_format.decimals'], $app['twig.number_format.decimal_point'], $app['twig.number_format.thousands_separator']);
-
-            if ($app['debug']) {
-                $twig->addExtension(new \Twig_Extension_Debug());
-            }
-
-            if (class_exists('Symfony\Bridge\Twig\Extension\RoutingExtension')) {
-                $app['twig.app_variable'] = function ($app) {
-                    $var = new AppVariable();
-                    if (isset($app['security.token_storage'])) {
-                        $var->setTokenStorage($app['security.token_storage']);
-                    }
-                    if (isset($app['request_stack'])) {
-                        $var->setRequestStack($app['request_stack']);
-                    }
-                    $var->setDebug($app['debug']);
-
-                    return $var;
-                };
-
-                $twig->addGlobal('global', $app['twig.app_variable']);
-
-                if (isset($app['request_stack'])) {
-                    $twig->addExtension(new HttpFoundationExtension($app['request_stack']));
-                    $twig->addExtension(new RoutingExtension($app['url_generator']));
-                }
-
-                if (isset($app['translator'])) {
-                    $twig->addExtension(new TranslationExtension($app['translator']));
-                }
-
-                if (isset($app['security.authorization_checker'])) {
-                    $twig->addExtension(new SecurityExtension($app['security.authorization_checker']));
-                }
-
-                if (isset($app['fragment.handler'])) {
-                    $app['fragment.renderer.hinclude']->setTemplating($twig);
-
-                    $twig->addExtension(new HttpKernelExtension($app['fragment.handler']));
-                }
-
-                if (isset($app['assets.packages'])) {
-                    $twig->addExtension(new AssetExtension($app['assets.packages']));
-                }
-
-                if (isset($app['form.factory'])) {
-                    $app['twig.form.engine'] = function ($app) use ($twig) {
-                        return new TwigRendererEngine($app['twig.form.templates'], $twig);
-                    };
-
-                    $app['twig.form.renderer'] = function ($app) {
-                        $csrfTokenManager = isset($app['csrf.token_manager']) ? $app['csrf.token_manager'] : null;
-
-                        return new FormRenderer($app['twig.form.engine'], $csrfTokenManager);
-                    };
-
-                    $twig->addExtension(new FormExtension());
-
-                    // add loader for Symfony built-in form templates
-                    $reflected = new \ReflectionClass('Symfony\Bridge\Twig\Extension\FormExtension');
-                    $path = dirname($reflected->getFileName()).'/../Resources/views/Form';
-                    $app['twig.loader']->addLoader(new \Twig_Loader_Filesystem($path));
-                }
-
-                if (isset($app['var_dumper.cloner'])) {
-                    $twig->addExtension(new DumpExtension($app['var_dumper.cloner']));
-                }
-
-                $twig->addRuntimeLoader($app['twig.runtime_loader']);
-                $twig->addExtension(new WebLinkExtension($app['request_stack']));
-            }
-
-            return $twig;
-        };
-
-        $app['twig.loader.filesystem'] = function ($app) {
-            $loader = new \Twig_Loader_Filesystem();
-            foreach (is_array($app['twig.path']) ? $app['twig.path'] : [$app['twig.path']] as $key => $val) {
-                if (is_string($key)) {
-                    $loader->addPath($key, $val);
-                } else {
-                    $loader->addPath($val);
-                }
-            }
-
-            return $loader;
-        };
-
-        $app['twig.loader.array'] = function ($app) {
-            return new \Twig_Loader_Array($app['twig.templates']);
-        };
-
-        $app['twig.loader'] = function ($app) {
-            return new \Twig_Loader_Chain([
-                $app['twig.loader.array'],
-                $app['twig.loader.filesystem'],
-            ]);
-        };
-
-        $app['twig.environment_factory'] = $app->protect(function ($app) {
-            return new \Twig_Environment($app['twig.loader'], array_replace([
-                'charset' => $app['charset'],
-                'debug' => $app['debug'],
-                'strict_variables' => $app['debug'],
-            ], $app['twig.options']));
-        });
-
-        $app['twig.runtime.httpkernel'] = function ($app) {
-            return new HttpKernelRuntime($app['fragment.handler']);
-        };
-
-        $app['twig.runtimes'] = function ($app) {
-            return [
-                HttpKernelRuntime::class => 'twig.runtime.httpkernel',
-                FormRenderer::class => 'twig.form.renderer',
-            ];
-        };
-
-        $app['twig.runtime_loader'] = function ($app) {
-            return new RuntimeLoader($app, $app['twig.runtimes']);
-        };
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/Validator/ConstraintValidatorFactory.php b/vendor/silex/silex/src/Silex/Provider/Validator/ConstraintValidatorFactory.php
deleted file mode 100644
index d74a2b181b803d6d371de394fb734e3b3f750509..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/Validator/ConstraintValidatorFactory.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider\Validator;
-
-use Pimple\Container;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidatorFactory as BaseConstraintValidatorFactory;
-
-/**
- * Uses a service container to create constraint validators with dependencies.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- * @author Alex Kalyvitis <alex.kalyvitis@gmail.com>
- */
-class ConstraintValidatorFactory extends BaseConstraintValidatorFactory
-{
-    /**
-     * @var Container
-     */
-    protected $container;
-
-    /**
-     * @var array
-     */
-    protected $serviceNames;
-
-    /**
-     * Constructor.
-     *
-     * @param Container $container    DI container
-     * @param array     $serviceNames Validator service names
-     */
-    public function __construct(Container $container, array $serviceNames = [], $propertyAccessor = null)
-    {
-        parent::__construct($propertyAccessor);
-
-        $this->container = $container;
-        $this->serviceNames = $serviceNames;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getInstance(Constraint $constraint)
-    {
-        $name = $constraint->validatedBy();
-
-        if (isset($this->serviceNames[$name])) {
-            return $this->container[$this->serviceNames[$name]];
-        }
-
-        return parent::getInstance($constraint);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/ValidatorServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/ValidatorServiceProvider.php
deleted file mode 100644
index e073a3f7774af28d236cab48624a7d5cdee8cfa0..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/ValidatorServiceProvider.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Provider\Validator\ConstraintValidatorFactory;
-use Symfony\Component\Validator\Validator;
-use Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory;
-use Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader;
-use Symfony\Component\Validator\Validation;
-
-/**
- * Symfony Validator component Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ValidatorServiceProvider implements ServiceProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['validator'] = function ($app) {
-            return $app['validator.builder']->getValidator();
-        };
-
-        $app['validator.builder'] = function ($app) {
-            $builder = Validation::createValidatorBuilder();
-            $builder->setConstraintValidatorFactory($app['validator.validator_factory']);
-            $builder->setTranslationDomain($app['validator.translation_domain']);
-            $builder->addObjectInitializers($app['validator.object_initializers']);
-            $builder->setMetadataFactory($app['validator.mapping.class_metadata_factory']);
-            if (isset($app['translator'])) {
-                $builder->setTranslator($app['translator']);
-            }
-
-            return $builder;
-        };
-
-        $app['validator.mapping.class_metadata_factory'] = function ($app) {
-            return new LazyLoadingMetadataFactory(new StaticMethodLoader());
-        };
-
-        $app['validator.validator_factory'] = function () use ($app) {
-            return new ConstraintValidatorFactory($app, $app['validator.validator_service_ids']);
-        };
-
-        $app['validator.object_initializers'] = function ($app) {
-            return [];
-        };
-
-        $app['validator.validator_service_ids'] = [];
-
-        $app['validator.translation_domain'] = function () {
-            return 'validators';
-        };
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/VarDumperServiceProvider.php b/vendor/silex/silex/src/Silex/Provider/VarDumperServiceProvider.php
deleted file mode 100644
index 7c40b5ee3031ecb77a3160b2a6fcb68eeb32a7ef..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/VarDumperServiceProvider.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Provider;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-use Silex\Application;
-use Silex\Api\BootableProviderInterface;
-use Symfony\Component\VarDumper\VarDumper;
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-use Symfony\Component\VarDumper\Dumper\CliDumper;
-
-/**
- * Symfony Var Dumper component Provider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class VarDumperServiceProvider implements ServiceProviderInterface, BootableProviderInterface
-{
-    public function register(Container $app)
-    {
-        $app['var_dumper.cli_dumper'] = function ($app) {
-            return new CliDumper($app['var_dumper.dump_destination'], $app['charset']);
-        };
-
-        $app['var_dumper.cloner'] = function ($app) {
-            return new VarCloner();
-        };
-
-        $app['var_dumper.dump_destination'] = null;
-    }
-
-    public function boot(Application $app)
-    {
-        if (!$app['debug']) {
-            return;
-        }
-
-        // This code is here to lazy load the dump stack. This default
-        // configuration for CLI mode is overridden in HTTP mode on
-        // 'kernel.request' event
-        VarDumper::setHandler(function ($var) use ($app) {
-            VarDumper::setHandler($handler = function ($var) use ($app) {
-                $app['var_dumper.cli_dumper']->dump($app['var_dumper.cloner']->cloneVar($var));
-            });
-            $handler($var);
-        });
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Provider/composer.json b/vendor/silex/silex/src/Silex/Provider/composer.json
deleted file mode 100644
index 416b85782503fa2f4ca4234e9c619f1a9cd40b5a..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Provider/composer.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-    "minimum-stability": "dev",
-    "name": "silex/providers",
-    "description": "The Silex providers",
-    "keywords": ["microframework"],
-    "homepage": "http://silex.sensiolabs.org",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Igor Wiedler",
-            "email": "igor@wiedler.ch"
-        }
-    ],
-    "require": {
-        "php": ">=5.5.9",
-        "pimple/pimple": "~3.0",
-        "silex/api": "~2.2"
-    },
-    "autoload": {
-        "psr-4": { "Silex\\Provider\\": "" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.3.x-dev"
-        }
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Route.php b/vendor/silex/silex/src/Silex/Route.php
deleted file mode 100644
index b9365d885da624d231f9782a92df203f0450dc88..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Route.php
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex;
-
-use Symfony\Component\Routing\Route as BaseRoute;
-
-/**
- * A wrapper for a controller, mapped to a route.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Route extends BaseRoute
-{
-    /**
-     * Constructor.
-     *
-     * Available options:
-     *
-     *  * compiler_class: A class name able to compile this route instance (RouteCompiler by default)
-     *
-     * @param string       $path         The path pattern to match
-     * @param array        $defaults     An array of default parameter values
-     * @param array        $requirements An array of requirements for parameters (regexes)
-     * @param array        $options      An array of options
-     * @param string       $host         The host pattern to match
-     * @param string|array $schemes      A required URI scheme or an array of restricted schemes
-     * @param string|array $methods      A required HTTP method or an array of restricted methods
-     */
-    public function __construct($path = '/', array $defaults = [], array $requirements = [], array $options = [], $host = '', $schemes = [], $methods = [])
-    {
-        // overridden constructor to make $path optional
-        parent::__construct($path, $defaults, $requirements, $options, $host, $schemes, $methods);
-    }
-
-    /**
-     * Sets the route code that should be executed when matched.
-     *
-     * @param callable $to PHP callback that returns the response when matched
-     *
-     * @return Route $this The current Route instance
-     */
-    public function run($to)
-    {
-        $this->setDefault('_controller', $to);
-
-        return $this;
-    }
-
-    /**
-     * Sets the requirement for a route variable.
-     *
-     * @param string $variable The variable name
-     * @param string $regexp   The regexp to apply
-     *
-     * @return Route $this The current route instance
-     */
-    public function assert($variable, $regexp)
-    {
-        $this->setRequirement($variable, $regexp);
-
-        return $this;
-    }
-
-    /**
-     * Sets the default value for a route variable.
-     *
-     * @param string $variable The variable name
-     * @param mixed  $default  The default value
-     *
-     * @return Route $this The current Route instance
-     */
-    public function value($variable, $default)
-    {
-        $this->setDefault($variable, $default);
-
-        return $this;
-    }
-
-    /**
-     * Sets a converter for a route variable.
-     *
-     * @param string $variable The variable name
-     * @param mixed  $callback A PHP callback that converts the original value
-     *
-     * @return Route $this The current Route instance
-     */
-    public function convert($variable, $callback)
-    {
-        $converters = $this->getOption('_converters');
-        $converters[$variable] = $callback;
-        $this->setOption('_converters', $converters);
-
-        return $this;
-    }
-
-    /**
-     * Sets the requirement for the HTTP method.
-     *
-     * @param string $method The HTTP method name. Multiple methods can be supplied, delimited by a pipe character '|', eg. 'GET|POST'
-     *
-     * @return Route $this The current Route instance
-     */
-    public function method($method)
-    {
-        $this->setMethods(explode('|', $method));
-
-        return $this;
-    }
-
-    /**
-     * Sets the requirement of host on this Route.
-     *
-     * @param string $host The host for which this route should be enabled
-     *
-     * @return Route $this The current Route instance
-     */
-    public function host($host)
-    {
-        $this->setHost($host);
-
-        return $this;
-    }
-
-    /**
-     * Sets the requirement of HTTP (no HTTPS) on this Route.
-     *
-     * @return Route $this The current Route instance
-     */
-    public function requireHttp()
-    {
-        $this->setSchemes('http');
-
-        return $this;
-    }
-
-    /**
-     * Sets the requirement of HTTPS on this Route.
-     *
-     * @return Route $this The current Route instance
-     */
-    public function requireHttps()
-    {
-        $this->setSchemes('https');
-
-        return $this;
-    }
-
-    /**
-     * Sets a callback to handle before triggering the route callback.
-     *
-     * @param mixed $callback A PHP callback to be triggered when the Route is matched, just before the route callback
-     *
-     * @return Route $this The current Route instance
-     */
-    public function before($callback)
-    {
-        $callbacks = $this->getOption('_before_middlewares');
-        $callbacks[] = $callback;
-        $this->setOption('_before_middlewares', $callbacks);
-
-        return $this;
-    }
-
-    /**
-     * Sets a callback to handle after the route callback.
-     *
-     * @param mixed $callback A PHP callback to be triggered after the route callback
-     *
-     * @return Route $this The current Route instance
-     */
-    public function after($callback)
-    {
-        $callbacks = $this->getOption('_after_middlewares');
-        $callbacks[] = $callback;
-        $this->setOption('_after_middlewares', $callbacks);
-
-        return $this;
-    }
-
-    /**
-     * Sets a condition for the route to match.
-     *
-     * @param string $condition The condition
-     *
-     * @return Route $this The current Route instance
-     */
-    public function when($condition)
-    {
-        $this->setCondition($condition);
-
-        return $this;
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/Route/SecurityTrait.php b/vendor/silex/silex/src/Silex/Route/SecurityTrait.php
deleted file mode 100644
index d42ba2fbb3adb457e7b5b77c735e4574e8d0f43b..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/Route/SecurityTrait.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Route;
-
-use Symfony\Component\Security\Core\Exception\AccessDeniedException;
-
-/**
- * Security trait.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-trait SecurityTrait
-{
-    public function secure($roles)
-    {
-        $this->before(function ($request, $app) use ($roles) {
-            if (!$app['security.authorization_checker']->isGranted($roles)) {
-                throw new AccessDeniedException();
-            }
-        });
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/ServiceControllerResolver.php b/vendor/silex/silex/src/Silex/ServiceControllerResolver.php
deleted file mode 100644
index 304f7bd44c96c4fbd2ebc16120af761fada5514d..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/ServiceControllerResolver.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-
-/**
- * Enables name_of_service:method_name syntax for declaring controllers.
- *
- * @see http://silex.sensiolabs.org/doc/providers/service_controller.html
- */
-class ServiceControllerResolver implements ControllerResolverInterface
-{
-    protected $controllerResolver;
-    protected $callbackResolver;
-
-    /**
-     * Constructor.
-     *
-     * @param ControllerResolverInterface $controllerResolver A ControllerResolverInterface instance to delegate to
-     * @param CallbackResolver            $callbackResolver   A service resolver instance
-     */
-    public function __construct(ControllerResolverInterface $controllerResolver, CallbackResolver $callbackResolver)
-    {
-        $this->controllerResolver = $controllerResolver;
-        $this->callbackResolver = $callbackResolver;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getController(Request $request)
-    {
-        $controller = $request->attributes->get('_controller', null);
-
-        if (!$this->callbackResolver->isValid($controller)) {
-            return $this->controllerResolver->getController($request);
-        }
-
-        return $this->callbackResolver->convertCallback($controller);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getArguments(Request $request, $controller)
-    {
-        return $this->controllerResolver->getArguments($request, $controller);
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/ViewListenerWrapper.php b/vendor/silex/silex/src/Silex/ViewListenerWrapper.php
deleted file mode 100644
index a67ec938eed53e8b1ee0940b4046855e73a8de81..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/ViewListenerWrapper.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex;
-
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
-
-/**
- * Wraps view listeners.
- *
- * @author Dave Marshall <dave@atst.io>
- */
-class ViewListenerWrapper
-{
-    private $app;
-    private $callback;
-
-    /**
-     * Constructor.
-     *
-     * @param Application $app      An Application instance
-     * @param mixed       $callback
-     */
-    public function __construct(Application $app, $callback)
-    {
-        $this->app = $app;
-        $this->callback = $callback;
-    }
-
-    public function __invoke(GetResponseForControllerResultEvent $event)
-    {
-        $controllerResult = $event->getControllerResult();
-        $callback = $this->app['callback_resolver']->resolveCallback($this->callback);
-
-        if (!$this->shouldRun($callback, $controllerResult)) {
-            return;
-        }
-
-        $response = call_user_func($callback, $controllerResult, $event->getRequest());
-
-        if ($response instanceof Response) {
-            $event->setResponse($response);
-        } elseif (null !== $response) {
-            $event->setControllerResult($response);
-        }
-    }
-
-    private function shouldRun($callback, $controllerResult)
-    {
-        if (is_array($callback)) {
-            $callbackReflection = new \ReflectionMethod($callback[0], $callback[1]);
-        } elseif (is_object($callback) && !$callback instanceof \Closure) {
-            $callbackReflection = new \ReflectionObject($callback);
-            $callbackReflection = $callbackReflection->getMethod('__invoke');
-        } else {
-            $callbackReflection = new \ReflectionFunction($callback);
-        }
-
-        if ($callbackReflection->getNumberOfParameters() > 0) {
-            $parameters = $callbackReflection->getParameters();
-            $expectedControllerResult = $parameters[0];
-
-            if ($expectedControllerResult->getClass() && (!is_object($controllerResult) || !$expectedControllerResult->getClass()->isInstance($controllerResult))) {
-                return false;
-            }
-
-            if ($expectedControllerResult->isArray() && !is_array($controllerResult)) {
-                return false;
-            }
-
-            if (method_exists($expectedControllerResult, 'isCallable') && $expectedControllerResult->isCallable() && !is_callable($controllerResult)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/silex/silex/src/Silex/WebTestCase.php b/vendor/silex/silex/src/Silex/WebTestCase.php
deleted file mode 100644
index 8580b79cfd0a422ffa6ce2201e5587350aa1ffc7..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/src/Silex/WebTestCase.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\Client;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * WebTestCase is the base class for functional tests.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-abstract class WebTestCase extends TestCase
-{
-    /**
-     * HttpKernelInterface instance.
-     *
-     * @var HttpKernelInterface
-     */
-    protected $app;
-
-    /**
-     * PHPUnit setUp for setting up the application.
-     *
-     * Note: Child classes that define a setUp method must call
-     * parent::setUp().
-     */
-    protected function setUp()
-    {
-        $this->app = $this->createApplication();
-    }
-
-    /**
-     * Creates the application.
-     *
-     * @return HttpKernelInterface
-     */
-    abstract public function createApplication();
-
-    /**
-     * Creates a Client.
-     *
-     * @param array $server Server parameters
-     *
-     * @return Client A Client instance
-     */
-    public function createClient(array $server = [])
-    {
-        if (!class_exists('Symfony\Component\BrowserKit\Client')) {
-            throw new \LogicException('Component "symfony/browser-kit" is required by WebTestCase.'.PHP_EOL.'Run composer require symfony/browser-kit');
-        }
-
-        return new Client($this->app, $server);
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/FormApplication.php b/vendor/silex/silex/tests/Silex/Tests/Application/FormApplication.php
deleted file mode 100644
index 5851a4c9ce9f09e12b498dd0f101cd13fb9d79a6..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/FormApplication.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use Silex\Application;
-
-class FormApplication extends Application
-{
-    use Application\FormTrait;
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/FormTraitTest.php b/vendor/silex/silex/tests/Silex/Tests/Application/FormTraitTest.php
deleted file mode 100644
index 1d36a0cb304555218e0c9960bd20986295ed4344..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/FormTraitTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Provider\FormServiceProvider;
-use Symfony\Component\Form\FormBuilder;
-
-/**
- * FormTrait test cases.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FormTraitTest extends TestCase
-{
-    public function testForm()
-    {
-        $this->assertInstanceOf(FormBuilder::class, $this->createApplication()->form());
-    }
-
-    public function testNamedForm()
-    {
-        $builder = $this->createApplication()->namedForm('foo');
-
-        $this->assertInstanceOf(FormBuilder::class, $builder);
-        $this->assertSame('foo', $builder->getName());
-    }
-
-    public function createApplication()
-    {
-        $app = new FormApplication();
-        $app->register(new FormServiceProvider());
-
-        return $app;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/MonologApplication.php b/vendor/silex/silex/tests/Silex/Tests/Application/MonologApplication.php
deleted file mode 100644
index 9fec12fb8ed0c1bd54b6b3b19a85bd2e77899c6d..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/MonologApplication.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use Silex\Application;
-
-class MonologApplication extends Application
-{
-    use Application\MonologTrait;
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/MonologTraitTest.php b/vendor/silex/silex/tests/Silex/Tests/Application/MonologTraitTest.php
deleted file mode 100644
index e381c5f5116f8ad279e5e053e01229873d53593e..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/MonologTraitTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Provider\MonologServiceProvider;
-use Monolog\Handler\TestHandler;
-use Monolog\Logger;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class MonologTraitTest extends TestCase
-{
-    public function testLog()
-    {
-        $app = $this->createApplication();
-
-        $app->log('Foo');
-        $app->log('Bar', [], Logger::DEBUG);
-        $this->assertTrue($app['monolog.handler']->hasInfo('Foo'));
-        $this->assertTrue($app['monolog.handler']->hasDebug('Bar'));
-    }
-
-    public function createApplication()
-    {
-        $app = new MonologApplication();
-        $app->register(new MonologServiceProvider(), [
-            'monolog.handler' => function () use ($app) {
-                return new TestHandler($app['monolog.level']);
-            },
-            'monolog.logfile' => 'php://memory',
-        ]);
-
-        return $app;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/SecurityApplication.php b/vendor/silex/silex/tests/Silex/Tests/Application/SecurityApplication.php
deleted file mode 100644
index dc85999e4677f546a86ea1183d67e0863f0258cc..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/SecurityApplication.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use Silex\Application;
-
-class SecurityApplication extends Application
-{
-    use Application\SecurityTrait;
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/SecurityTraitTest.php b/vendor/silex/silex/tests/Silex/Tests/Application/SecurityTraitTest.php
deleted file mode 100644
index 8918a100cb9e5c8f8e840005455fbd094f06d3c3..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/SecurityTraitTest.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Provider\SecurityServiceProvider;
-use Symfony\Component\Security\Core\User\User;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SecurityTraitTest extends TestCase
-{
-    public function testEncodePassword()
-    {
-        $app = $this->createApplication([
-            'fabien' => ['ROLE_ADMIN', '$2y$15$lzUNsTegNXvZW3qtfucV0erYBcEqWVeyOmjolB7R1uodsAVJ95vvu'],
-        ]);
-
-        $user = new User('foo', 'bar');
-        $password = 'foo';
-        $encoded = $app->encodePassword($user, $password);
-
-        $this->assertTrue(
-            $app['security.encoder_factory']->getEncoder($user)->isPasswordValid($encoded, $password, $user->getSalt())
-        );
-    }
-
-    /**
-     * @expectedException \Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException
-     */
-    public function testIsGrantedWithoutTokenThrowsException()
-    {
-        $app = $this->createApplication();
-        $app->get('/', function () { return 'foo'; });
-        $app->handle(Request::create('/'));
-        $app->isGranted('ROLE_ADMIN');
-    }
-
-    public function testIsGranted()
-    {
-        $request = Request::create('/');
-
-        $app = $this->createApplication([
-            'fabien' => ['ROLE_ADMIN', '$2y$15$lzUNsTegNXvZW3qtfucV0erYBcEqWVeyOmjolB7R1uodsAVJ95vvu'],
-            'monique' => ['ROLE_USER',  '$2y$15$lzUNsTegNXvZW3qtfucV0erYBcEqWVeyOmjolB7R1uodsAVJ95vvu'],
-        ]);
-        $app->get('/', function () { return 'foo'; });
-
-        // User is Monique (ROLE_USER)
-        $request->headers->set('PHP_AUTH_USER', 'monique');
-        $request->headers->set('PHP_AUTH_PW', 'foo');
-        $app->handle($request);
-        $this->assertTrue($app->isGranted('ROLE_USER'));
-        $this->assertFalse($app->isGranted('ROLE_ADMIN'));
-
-        // User is Fabien (ROLE_ADMIN)
-        $request->headers->set('PHP_AUTH_USER', 'fabien');
-        $request->headers->set('PHP_AUTH_PW', 'foo');
-        $app->handle($request);
-        $this->assertFalse($app->isGranted('ROLE_USER'));
-        $this->assertTrue($app->isGranted('ROLE_ADMIN'));
-    }
-
-    public function createApplication($users = [])
-    {
-        $app = new SecurityApplication();
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'default' => [
-                    'http' => true,
-                    'users' => $users,
-                ],
-            ],
-        ]);
-
-        return $app;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/SwiftmailerApplication.php b/vendor/silex/silex/tests/Silex/Tests/Application/SwiftmailerApplication.php
deleted file mode 100644
index 6a28d539222276fab5b06f4aa62f84351cf8f6a6..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/SwiftmailerApplication.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use Silex\Application;
-
-class SwiftmailerApplication extends Application
-{
-    use Application\SwiftmailerTrait;
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/SwiftmailerTraitTest.php b/vendor/silex/silex/tests/Silex/Tests/Application/SwiftmailerTraitTest.php
deleted file mode 100644
index fcff77e122098ab2bdf460c700af2d590557e381..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/SwiftmailerTraitTest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Provider\SwiftmailerServiceProvider;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SwiftmailerTraitTest extends TestCase
-{
-    public function testMail()
-    {
-        $app = $this->createApplication();
-
-        $message = $this->getMockBuilder('Swift_Message')->disableOriginalConstructor()->getMock();
-        $app['mailer'] = $mailer = $this->getMockBuilder('Swift_Mailer')->disableOriginalConstructor()->getMock();
-        $mailer->expects($this->once())
-               ->method('send')
-               ->with($message)
-        ;
-
-        $app->mail($message);
-    }
-
-    public function createApplication()
-    {
-        $app = new SwiftmailerApplication();
-        $app->register(new SwiftmailerServiceProvider());
-
-        return $app;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/TranslationApplication.php b/vendor/silex/silex/tests/Silex/Tests/Application/TranslationApplication.php
deleted file mode 100644
index 3e51b9c21a5ffd4ad556e07093343a420c46f8de..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/TranslationApplication.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use Silex\Application;
-
-class TranslationApplication extends Application
-{
-    use Application\TranslationTrait;
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/TranslationTraitTest.php b/vendor/silex/silex/tests/Silex/Tests/Application/TranslationTraitTest.php
deleted file mode 100644
index ed4b5fe3e6295f57280a9cdcda6b3f95451b4a0f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/TranslationTraitTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Provider\TranslationServiceProvider;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TranslationTraitTest extends TestCase
-{
-    public function testTrans()
-    {
-        $app = $this->createApplication();
-        $app['translator'] = $translator = $this->getMockBuilder('Symfony\Component\Translation\Translator')->disableOriginalConstructor()->getMock();
-        $translator->expects($this->once())->method('trans');
-        $app->trans('foo');
-    }
-
-    public function testTransChoice()
-    {
-        $app = $this->createApplication();
-        $app['translator'] = $translator = $this->getMockBuilder('Symfony\Component\Translation\Translator')->disableOriginalConstructor()->getMock();
-        $translator->expects($this->once())->method('transChoice');
-        $app->transChoice('foo', 2);
-    }
-
-    public function createApplication()
-    {
-        $app = new TranslationApplication();
-        $app->register(new TranslationServiceProvider());
-
-        return $app;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/TwigApplication.php b/vendor/silex/silex/tests/Silex/Tests/Application/TwigApplication.php
deleted file mode 100644
index f1bb47380a264d818a5a127b43f2c46ac4c868f8..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/TwigApplication.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use Silex\Application;
-
-class TwigApplication extends Application
-{
-    use Application\TwigTrait;
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/TwigTraitTest.php b/vendor/silex/silex/tests/Silex/Tests/Application/TwigTraitTest.php
deleted file mode 100644
index 753d92b794c4935d9d63d1c26a10b5da9764b486..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/TwigTraitTest.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Provider\TwigServiceProvider;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TwigTraitTest extends TestCase
-{
-    public function testRender()
-    {
-        $app = $this->createApplication();
-
-        $app['twig'] = $mailer = $this->getMockBuilder('Twig_Environment')->disableOriginalConstructor()->getMock();
-        $mailer->expects($this->once())->method('render')->will($this->returnValue('foo'));
-
-        $response = $app->render('view');
-        $this->assertEquals('Symfony\Component\HttpFoundation\Response', get_class($response));
-        $this->assertEquals('foo', $response->getContent());
-    }
-
-    public function testRenderKeepResponse()
-    {
-        $app = $this->createApplication();
-
-        $app['twig'] = $mailer = $this->getMockBuilder('Twig_Environment')->disableOriginalConstructor()->getMock();
-        $mailer->expects($this->once())->method('render')->will($this->returnValue('foo'));
-
-        $response = $app->render('view', [], new Response('', 404));
-        $this->assertEquals(404, $response->getStatusCode());
-    }
-
-    public function testRenderForStream()
-    {
-        $app = $this->createApplication();
-
-        $app['twig'] = $mailer = $this->getMockBuilder('Twig_Environment')->disableOriginalConstructor()->getMock();
-        $mailer->expects($this->once())->method('display')->will($this->returnCallback(function () { echo 'foo'; }));
-
-        $response = $app->render('view', [], new StreamedResponse());
-        $this->assertEquals('Symfony\Component\HttpFoundation\StreamedResponse', get_class($response));
-
-        ob_start();
-        $response->send();
-        $this->assertEquals('foo', ob_get_clean());
-    }
-
-    public function testRenderView()
-    {
-        $app = $this->createApplication();
-
-        $app['twig'] = $mailer = $this->getMockBuilder('Twig_Environment')->disableOriginalConstructor()->getMock();
-        $mailer->expects($this->once())->method('render');
-
-        $app->renderView('view');
-    }
-
-    public function createApplication()
-    {
-        $app = new TwigApplication();
-        $app->register(new TwigServiceProvider());
-
-        return $app;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/UrlGeneratorApplication.php b/vendor/silex/silex/tests/Silex/Tests/Application/UrlGeneratorApplication.php
deleted file mode 100644
index 4239af465e731cf29e65cb42754b11ddb9a21049..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/UrlGeneratorApplication.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use Silex\Application;
-
-class UrlGeneratorApplication extends Application
-{
-    use Application\UrlGeneratorTrait;
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Application/UrlGeneratorTraitTest.php b/vendor/silex/silex/tests/Silex/Tests/Application/UrlGeneratorTraitTest.php
deleted file mode 100644
index db6de1e2f7230416b6c96de47a130e00faa7b0ec..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Application/UrlGeneratorTraitTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Application;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-
-/**
- * UrlGeneratorTrait test cases.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class UrlGeneratorTraitTest extends TestCase
-{
-    public function testUrl()
-    {
-        $app = new UrlGeneratorApplication();
-        $app['url_generator'] = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGeneratorInterface')->disableOriginalConstructor()->getMock();
-        $app['url_generator']->expects($this->once())->method('generate')->with('foo', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $app->url('foo');
-    }
-
-    public function testPath()
-    {
-        $app = new UrlGeneratorApplication();
-        $app['url_generator'] = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGeneratorInterface')->disableOriginalConstructor()->getMock();
-        $app['url_generator']->expects($this->once())->method('generate')->with('foo', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $app->path('foo');
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/ApplicationTest.php b/vendor/silex/silex/tests/Silex/Tests/ApplicationTest.php
deleted file mode 100644
index ee6c804a54ee26c200ad1fae13b3c7dcbfdc605a..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/ApplicationTest.php
+++ /dev/null
@@ -1,720 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use Fig\Link\GenericLinkProvider;
-use Fig\Link\Link;
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\ControllerCollection;
-use Silex\Api\ControllerProviderInterface;
-use Silex\Route;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Exception\HttpException;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * Application test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class ApplicationTest extends TestCase
-{
-    public function testMatchReturnValue()
-    {
-        $app = new Application();
-
-        $returnValue = $app->match('/foo', function () {});
-        $this->assertInstanceOf('Silex\Controller', $returnValue);
-
-        $returnValue = $app->get('/foo', function () {});
-        $this->assertInstanceOf('Silex\Controller', $returnValue);
-
-        $returnValue = $app->post('/foo', function () {});
-        $this->assertInstanceOf('Silex\Controller', $returnValue);
-
-        $returnValue = $app->put('/foo', function () {});
-        $this->assertInstanceOf('Silex\Controller', $returnValue);
-
-        $returnValue = $app->patch('/foo', function () {});
-        $this->assertInstanceOf('Silex\Controller', $returnValue);
-
-        $returnValue = $app->delete('/foo', function () {});
-        $this->assertInstanceOf('Silex\Controller', $returnValue);
-    }
-
-    public function testConstructorInjection()
-    {
-        // inject a custom parameter
-        $params = ['param' => 'value'];
-        $app = new Application($params);
-        $this->assertSame($params['param'], $app['param']);
-
-        // inject an existing parameter
-        $params = ['locale' => 'value'];
-        $app = new Application($params);
-        $this->assertSame($params['locale'], $app['locale']);
-    }
-
-    public function testGetRequest()
-    {
-        $request = Request::create('/');
-
-        $app = new Application();
-        $app->get('/', function (Request $req) use ($request) {
-            return $request === $req ? 'ok' : 'ko';
-        });
-
-        $this->assertEquals('ok', $app->handle($request)->getContent());
-    }
-
-    public function testGetRoutesWithNoRoutes()
-    {
-        $app = new Application();
-
-        $routes = $app['routes'];
-        $this->assertInstanceOf('Symfony\Component\Routing\RouteCollection', $routes);
-        $this->assertCount(0, $routes->all());
-    }
-
-    public function testGetRoutesWithRoutes()
-    {
-        $app = new Application();
-
-        $app->get('/foo', function () {
-            return 'foo';
-        });
-
-        $app->get('/bar')->run(function () {
-            return 'bar';
-        });
-
-        $routes = $app['routes'];
-        $this->assertInstanceOf('Symfony\Component\Routing\RouteCollection', $routes);
-        $this->assertCount(0, $routes->all());
-        $app->flush();
-        $this->assertCount(2, $routes->all());
-    }
-
-    public function testOnCoreController()
-    {
-        $app = new Application();
-
-        $app->get('/foo/{foo}', function (\ArrayObject $foo) {
-            return $foo['foo'];
-        })->convert('foo', function ($foo) { return new \ArrayObject(['foo' => $foo]); });
-
-        $response = $app->handle(Request::create('/foo/bar'));
-        $this->assertEquals('bar', $response->getContent());
-
-        $app->get('/foo/{foo}/{bar}', function (\ArrayObject $foo) {
-            return $foo['foo'];
-        })->convert('foo', function ($foo, Request $request) { return new \ArrayObject(['foo' => $foo.$request->attributes->get('bar')]); });
-
-        $response = $app->handle(Request::create('/foo/foo/bar'));
-        $this->assertEquals('foobar', $response->getContent());
-    }
-
-    public function testOn()
-    {
-        $app = new Application();
-        $app['pass'] = false;
-
-        $app->on('test', function (Event $e) use ($app) {
-            $app['pass'] = true;
-        });
-
-        $app['dispatcher']->dispatch('test');
-
-        $this->assertTrue($app['pass']);
-    }
-
-    public function testAbort()
-    {
-        $app = new Application();
-
-        try {
-            $app->abort(404);
-            $this->fail();
-        } catch (HttpException $e) {
-            $this->assertEquals(404, $e->getStatusCode());
-        }
-    }
-
-    /**
-     * @dataProvider escapeProvider
-     */
-    public function testEscape($expected, $text)
-    {
-        $app = new Application();
-
-        $this->assertEquals($expected, $app->escape($text));
-    }
-
-    public function escapeProvider()
-    {
-        return [
-            ['&lt;', '<'],
-            ['&gt;', '>'],
-            ['&quot;', '"'],
-            ["'", "'"],
-            ['abc', 'abc'],
-        ];
-    }
-
-    public function testControllersAsMethods()
-    {
-        $app = new Application();
-        unset($app['exception_handler']);
-
-        $app->get('/{name}', 'Silex\Tests\FooController::barAction');
-
-        $this->assertEquals('Hello Fabien', $app->handle(Request::create('/Fabien'))->getContent());
-    }
-
-    public function testApplicationTypeHintWorks()
-    {
-        $app = new SpecialApplication();
-        unset($app['exception_handler']);
-
-        $app->get('/{name}', 'Silex\Tests\FooController::barSpecialAction');
-
-        $this->assertEquals('Hello Fabien in Silex\Tests\SpecialApplication', $app->handle(Request::create('/Fabien'))->getContent());
-    }
-
-    /**
-     * @requires PHP 7.0
-     */
-    public function testPhp7TypeHintWorks()
-    {
-        $app = new SpecialApplication();
-        unset($app['exception_handler']);
-
-        $app->get('/{name}', 'Silex\Tests\Fixtures\Php7Controller::typehintedAction');
-
-        $this->assertEquals('Hello Fabien in Silex\Tests\SpecialApplication', $app->handle(Request::create('/Fabien'))->getContent());
-    }
-
-    public function testHttpSpec()
-    {
-        $app = new Application();
-        $app['charset'] = 'ISO-8859-1';
-
-        $app->get('/', function () {
-            return 'hello';
-        });
-
-        // content is empty for HEAD requests
-        $response = $app->handle(Request::create('/', 'HEAD'));
-        $this->assertEquals('', $response->getContent());
-
-        // charset is appended to Content-Type
-        $response = $app->handle(Request::create('/'));
-
-        $this->assertEquals('text/html; charset=ISO-8859-1', $response->headers->get('Content-Type'));
-    }
-
-    public function testRoutesMiddlewares()
-    {
-        $app = new Application();
-
-        $test = $this;
-
-        $middlewareTarget = [];
-        $beforeMiddleware1 = function (Request $request) use (&$middlewareTarget, $test) {
-            $test->assertEquals('/reached', $request->getRequestUri());
-            $middlewareTarget[] = 'before_middleware1_triggered';
-        };
-        $beforeMiddleware2 = function (Request $request) use (&$middlewareTarget, $test) {
-            $test->assertEquals('/reached', $request->getRequestUri());
-            $middlewareTarget[] = 'before_middleware2_triggered';
-        };
-        $beforeMiddleware3 = function (Request $request) use (&$middlewareTarget, $test) {
-            throw new \Exception('This middleware shouldn\'t run!');
-        };
-
-        $afterMiddleware1 = function (Request $request, Response $response) use (&$middlewareTarget, $test) {
-            $test->assertEquals('/reached', $request->getRequestUri());
-            $middlewareTarget[] = 'after_middleware1_triggered';
-        };
-        $afterMiddleware2 = function (Request $request, Response $response) use (&$middlewareTarget, $test) {
-            $test->assertEquals('/reached', $request->getRequestUri());
-            $middlewareTarget[] = 'after_middleware2_triggered';
-        };
-        $afterMiddleware3 = function (Request $request, Response $response) use (&$middlewareTarget, $test) {
-            throw new \Exception('This middleware shouldn\'t run!');
-        };
-
-        $app->get('/reached', function () use (&$middlewareTarget) {
-            $middlewareTarget[] = 'route_triggered';
-
-            return 'hello';
-        })
-        ->before($beforeMiddleware1)
-        ->before($beforeMiddleware2)
-        ->after($afterMiddleware1)
-        ->after($afterMiddleware2);
-
-        $app->get('/never-reached', function () use (&$middlewareTarget) {
-            throw new \Exception('This route shouldn\'t run!');
-        })
-        ->before($beforeMiddleware3)
-        ->after($afterMiddleware3);
-
-        $result = $app->handle(Request::create('/reached'));
-
-        $this->assertSame(['before_middleware1_triggered', 'before_middleware2_triggered', 'route_triggered', 'after_middleware1_triggered', 'after_middleware2_triggered'], $middlewareTarget);
-        $this->assertEquals('hello', $result->getContent());
-    }
-
-    public function testRoutesBeforeMiddlewaresWithResponseObject()
-    {
-        $app = new Application();
-
-        $app->get('/foo', function () {
-            throw new \Exception('This route shouldn\'t run!');
-        })
-        ->before(function () {
-            return new Response('foo');
-        });
-
-        $request = Request::create('/foo');
-        $result = $app->handle($request);
-
-        $this->assertEquals('foo', $result->getContent());
-    }
-
-    public function testRoutesAfterMiddlewaresWithResponseObject()
-    {
-        $app = new Application();
-
-        $app->get('/foo', function () {
-            return new Response('foo');
-        })
-        ->after(function () {
-            return new Response('bar');
-        });
-
-        $request = Request::create('/foo');
-        $result = $app->handle($request);
-
-        $this->assertEquals('bar', $result->getContent());
-    }
-
-    public function testRoutesBeforeMiddlewaresWithRedirectResponseObject()
-    {
-        $app = new Application();
-
-        $app->get('/foo', function () {
-            throw new \Exception('This route shouldn\'t run!');
-        })
-        ->before(function () use ($app) {
-            return $app->redirect('/bar');
-        });
-
-        $request = Request::create('/foo');
-        $result = $app->handle($request);
-
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\RedirectResponse', $result);
-        $this->assertEquals('/bar', $result->getTargetUrl());
-    }
-
-    public function testRoutesBeforeMiddlewaresTriggeredAfterSilexBeforeFilters()
-    {
-        $app = new Application();
-
-        $middlewareTarget = [];
-        $middleware = function (Request $request) use (&$middlewareTarget) {
-            $middlewareTarget[] = 'middleware_triggered';
-        };
-
-        $app->get('/foo', function () use (&$middlewareTarget) {
-            $middlewareTarget[] = 'route_triggered';
-        })
-        ->before($middleware);
-
-        $app->before(function () use (&$middlewareTarget) {
-            $middlewareTarget[] = 'before_triggered';
-        });
-
-        $app->handle(Request::create('/foo'));
-
-        $this->assertSame(['before_triggered', 'middleware_triggered', 'route_triggered'], $middlewareTarget);
-    }
-
-    public function testRoutesAfterMiddlewaresTriggeredBeforeSilexAfterFilters()
-    {
-        $app = new Application();
-
-        $middlewareTarget = [];
-        $middleware = function (Request $request) use (&$middlewareTarget) {
-            $middlewareTarget[] = 'middleware_triggered';
-        };
-
-        $app->get('/foo', function () use (&$middlewareTarget) {
-            $middlewareTarget[] = 'route_triggered';
-        })
-        ->after($middleware);
-
-        $app->after(function () use (&$middlewareTarget) {
-            $middlewareTarget[] = 'after_triggered';
-        });
-
-        $app->handle(Request::create('/foo'));
-
-        $this->assertSame(['route_triggered', 'middleware_triggered', 'after_triggered'], $middlewareTarget);
-    }
-
-    public function testFinishFilter()
-    {
-        $containerTarget = [];
-
-        $app = new Application();
-
-        $app->finish(function () use (&$containerTarget) {
-            $containerTarget[] = '4_filterFinish';
-        });
-
-        $app->get('/foo', function () use (&$containerTarget) {
-            $containerTarget[] = '1_routeTriggered';
-
-            return new StreamedResponse(function () use (&$containerTarget) {
-                $containerTarget[] = '3_responseSent';
-            });
-        });
-
-        $app->after(function () use (&$containerTarget) {
-            $containerTarget[] = '2_filterAfter';
-        });
-
-        $app->run(Request::create('/foo'));
-
-        $this->assertSame(['1_routeTriggered', '2_filterAfter', '3_responseSent', '4_filterFinish'], $containerTarget);
-    }
-
-    /**
-     * @expectedException \RuntimeException
-     */
-    public function testNonResponseAndNonNullReturnFromRouteBeforeMiddlewareShouldThrowRuntimeException()
-    {
-        $app = new Application();
-
-        $middleware = function (Request $request) {
-            return 'string return';
-        };
-
-        $app->get('/', function () {
-            return 'hello';
-        })
-        ->before($middleware);
-
-        $app->handle(Request::create('/'), HttpKernelInterface::MASTER_REQUEST, false);
-    }
-
-    /**
-     * @expectedException \RuntimeException
-     */
-    public function testNonResponseAndNonNullReturnFromRouteAfterMiddlewareShouldThrowRuntimeException()
-    {
-        $app = new Application();
-
-        $middleware = function (Request $request) {
-            return 'string return';
-        };
-
-        $app->get('/', function () {
-            return 'hello';
-        })
-        ->after($middleware);
-
-        $app->handle(Request::create('/'), HttpKernelInterface::MASTER_REQUEST, false);
-    }
-
-    public function testSubRequest()
-    {
-        $app = new Application();
-        $app->get('/sub', function (Request $request) {
-            return new Response('foo');
-        });
-        $app->get('/', function (Request $request) use ($app) {
-            return $app->handle(Request::create('/sub'), HttpKernelInterface::SUB_REQUEST);
-        });
-
-        $this->assertEquals('foo', $app->handle(Request::create('/'))->getContent());
-    }
-
-    public function testRegisterShouldReturnSelf()
-    {
-        $app = new Application();
-        $provider = $this->getMockBuilder('Pimple\ServiceProviderInterface')->getMock();
-
-        $this->assertSame($app, $app->register($provider));
-    }
-
-    public function testMountShouldReturnSelf()
-    {
-        $app = new Application();
-        $mounted = new ControllerCollection(new Route());
-        $mounted->get('/{name}', function ($name) { return new Response($name); });
-
-        $this->assertSame($app, $app->mount('/hello', $mounted));
-    }
-
-    public function testMountPreservesOrder()
-    {
-        $app = new Application();
-        $mounted = new ControllerCollection(new Route());
-        $mounted->get('/mounted')->bind('second');
-
-        $app->get('/before')->bind('first');
-        $app->mount('/', $mounted);
-        $app->get('/after')->bind('third');
-        $app->flush();
-
-        $this->assertEquals(['first', 'second', 'third'], array_keys(iterator_to_array($app['routes'])));
-    }
-
-    /**
-     * @expectedException        \LogicException
-     * @expectedExceptionMessage The "mount" method takes either a "ControllerCollection" instance, "ControllerProviderInterface" instance, or a callable.
-     */
-    public function testMountNullException()
-    {
-        $app = new Application();
-        $app->mount('/exception', null);
-    }
-
-    /**
-     * @expectedException        \LogicException
-     * @expectedExceptionMessage The method "Silex\Tests\IncorrectControllerCollection::connect" must return a "ControllerCollection" instance. Got: "NULL"
-     */
-    public function testMountWrongConnectReturnValueException()
-    {
-        $app = new Application();
-        $app->mount('/exception', new IncorrectControllerCollection());
-    }
-
-    public function testMountCallable()
-    {
-        $app = new Application();
-        $app->mount('/prefix', function (ControllerCollection $coll) {
-            $coll->get('/path');
-        });
-
-        $app->flush();
-
-        $this->assertEquals(1, $app['routes']->count());
-    }
-
-    public function testSendFile()
-    {
-        $app = new Application();
-
-        $response = $app->sendFile(__FILE__, 200, ['Content-Type: application/php']);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\BinaryFileResponse', $response);
-        $this->assertEquals(__FILE__, (string) $response->getFile());
-    }
-
-    /**
-     * @expectedException        \LogicException
-     * @expectedExceptionMessage The "homepage" route must have code to run when it matches.
-     */
-    public function testGetRouteCollectionWithRouteWithoutController()
-    {
-        $app = new Application();
-        unset($app['exception_handler']);
-        $app->match('/')->bind('homepage');
-        $app->handle(Request::create('/'));
-    }
-
-    public function testBeforeFilterOnMountedControllerGroupIsolatedToGroup()
-    {
-        $app = new Application();
-        $app->match('/', function () { return new Response('ok'); });
-        $mounted = $app['controllers_factory'];
-        $mounted->before(function () { return new Response('not ok'); });
-        $app->mount('/group', $mounted);
-
-        $response = $app->handle(Request::create('/'));
-        $this->assertEquals('ok', $response->getContent());
-    }
-
-    public function testViewListenerWithPrimitive()
-    {
-        $app = new Application();
-        $app->get('/foo', function () { return 123; });
-        $app->view(function ($view, Request $request) {
-            return new Response($view);
-        });
-
-        $response = $app->handle(Request::create('/foo'));
-
-        $this->assertEquals('123', $response->getContent());
-    }
-
-    public function testViewListenerWithArrayTypeHint()
-    {
-        $app = new Application();
-        $app->get('/foo', function () { return ['ok']; });
-        $app->view(function (array $view) {
-            return new Response($view[0]);
-        });
-
-        $response = $app->handle(Request::create('/foo'));
-
-        $this->assertEquals('ok', $response->getContent());
-    }
-
-    public function testViewListenerWithObjectTypeHint()
-    {
-        $app = new Application();
-        $app->get('/foo', function () { return (object) ['name' => 'world']; });
-        $app->view(function (\stdClass $view) {
-            return new Response('Hello '.$view->name);
-        });
-
-        $response = $app->handle(Request::create('/foo'));
-
-        $this->assertEquals('Hello world', $response->getContent());
-    }
-
-    public function testViewListenerWithCallableTypeHint()
-    {
-        $app = new Application();
-        $app->get('/foo', function () { return function () { return 'world'; }; });
-        $app->view(function (callable $view) {
-            return new Response('Hello '.$view());
-        });
-
-        $response = $app->handle(Request::create('/foo'));
-
-        $this->assertEquals('Hello world', $response->getContent());
-    }
-
-    public function testViewListenersCanBeChained()
-    {
-        $app = new Application();
-        $app->get('/foo', function () { return (object) ['name' => 'world']; });
-
-        $app->view(function (\stdClass $view) {
-            return ['msg' => 'Hello '.$view->name];
-        });
-
-        $app->view(function (array $view) {
-            return $view['msg'];
-        });
-
-        $response = $app->handle(Request::create('/foo'));
-
-        $this->assertEquals('Hello world', $response->getContent());
-    }
-
-    public function testViewListenersAreIgnoredIfNotSuitable()
-    {
-        $app = new Application();
-        $app->get('/foo', function () { return 'Hello world'; });
-
-        $app->view(function (\stdClass $view) {
-            throw new \Exception('View listener was called');
-        });
-
-        $app->view(function (array $view) {
-            throw new \Exception('View listener was called');
-        });
-
-        $response = $app->handle(Request::create('/foo'));
-
-        $this->assertEquals('Hello world', $response->getContent());
-    }
-
-    public function testViewListenersResponsesAreNotUsedIfNull()
-    {
-        $app = new Application();
-        $app->get('/foo', function () { return 'Hello world'; });
-
-        $app->view(function ($view) {
-            return 'Hello view listener';
-        });
-
-        $app->view(function ($view) {
-            return;
-        });
-
-        $response = $app->handle(Request::create('/foo'));
-
-        $this->assertEquals('Hello view listener', $response->getContent());
-    }
-
-    public function testWebLinkListener()
-    {
-        $app = new Application();
-
-        $app->get('/', function () {
-            return 'hello';
-        });
-
-        $request = Request::create('/');
-        $request->attributes->set('_links', (new GenericLinkProvider())->withLink(new Link('preload', '/foo.css')));
-
-        $response = $app->handle($request);
-
-        $this->assertEquals('</foo.css>; rel="preload"', $response->headers->get('Link'));
-    }
-
-    public function testDefaultRoutesFactory()
-    {
-        $app = new Application();
-        $this->assertInstanceOf('Symfony\Component\Routing\RouteCollection', $app['routes']);
-    }
-
-    public function testOverriddenRoutesFactory()
-    {
-        $app = new Application();
-        $app['routes_factory'] = $app->factory(function () {
-            return new RouteCollectionSubClass();
-        });
-        $this->assertInstanceOf('Silex\Tests\RouteCollectionSubClass', $app['routes']);
-    }
-}
-
-class FooController
-{
-    public function barAction(Application $app, $name)
-    {
-        return 'Hello '.$app->escape($name);
-    }
-
-    public function barSpecialAction(SpecialApplication $app, $name)
-    {
-        return 'Hello '.$app->escape($name).' in '.get_class($app);
-    }
-}
-
-class IncorrectControllerCollection implements ControllerProviderInterface
-{
-    public function connect(Application $app)
-    {
-        return;
-    }
-}
-
-class RouteCollectionSubClass extends RouteCollection
-{
-}
-
-class SpecialApplication extends Application
-{
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/CallbackResolverTest.php b/vendor/silex/silex/tests/Silex/Tests/CallbackResolverTest.php
deleted file mode 100644
index fc664759e9a910503c3f97f580dd12133eb38b4a..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/CallbackResolverTest.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Pimple\Container;
-use Silex\CallbackResolver;
-
-class CallbackResolverTest extends Testcase
-{
-    private $app;
-    private $resolver;
-
-    public function setup()
-    {
-        $this->app = new Container();
-        $this->resolver = new CallbackResolver($this->app);
-    }
-
-    public function testShouldResolveCallback()
-    {
-        $callable = function () {};
-        $this->app['some_service'] = function () { return new \ArrayObject(); };
-        $this->app['callable_service'] = function () use ($callable) {
-            return $callable;
-        };
-
-        $this->assertTrue($this->resolver->isValid('some_service:methodName'));
-        $this->assertTrue($this->resolver->isValid('callable_service'));
-        $this->assertEquals(
-            [$this->app['some_service'], 'append'],
-            $this->resolver->convertCallback('some_service:append')
-        );
-        $this->assertSame($callable, $this->resolver->convertCallback('callable_service'));
-    }
-
-    /**
-     * @dataProvider nonStringsAreNotValidProvider
-     */
-    public function testNonStringsAreNotValid($name)
-    {
-        $this->assertFalse($this->resolver->isValid($name));
-    }
-
-    public function nonStringsAreNotValidProvider()
-    {
-        return [
-            [null],
-            ['some_service::methodName'],
-            ['missing_service'],
-        ];
-    }
-
-    /**
-     * @expectedException          \InvalidArgumentException
-     * @expectedExceptionMessageRegExp  /Service "[a-z_]+" is not callable./
-     * @dataProvider shouldThrowAnExceptionIfServiceIsNotCallableProvider
-     */
-    public function testShouldThrowAnExceptionIfServiceIsNotCallable($name)
-    {
-        $this->app['non_callable_obj'] = function () { return new \stdClass(); };
-        $this->app['non_callable'] = function () { return []; };
-        $this->resolver->convertCallback($name);
-    }
-
-    public function shouldThrowAnExceptionIfServiceIsNotCallableProvider()
-    {
-        return [
-            ['non_callable_obj:methodA'],
-            ['non_callable'],
-        ];
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/CallbackServicesTest.php b/vendor/silex/silex/tests/Silex/Tests/CallbackServicesTest.php
deleted file mode 100644
index 2210977bbec64a40389aa0b73e5694e86ab12ee1..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/CallbackServicesTest.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Symfony\Component\HttpFoundation\Request;
-use Silex\Provider\ServiceControllerServiceProvider;
-
-/**
- * Callback as services test cases.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class CallbackServicesTest extends TestCase
-{
-    public $called = [];
-
-    public function testCallbacksAsServices()
-    {
-        $app = new Application();
-        $app->register(new ServiceControllerServiceProvider());
-
-        $app['service'] = function () {
-            return new CallbackServicesTest();
-        };
-
-        $app->before('service:beforeApp');
-        $app->after('service:afterApp');
-        $app->finish('service:finishApp');
-        $app->error('service:error');
-        $app->on('kernel.request', 'service:onRequest');
-
-        $app
-            ->match('/', 'service:controller')
-            ->convert('foo', 'service:convert')
-            ->before('service:before')
-            ->after('service:after')
-        ;
-
-        $request = Request::create('/');
-        $response = $app->handle($request);
-        $app->terminate($request, $response);
-
-        $this->assertEquals([
-            'BEFORE APP',
-            'ON REQUEST',
-            'BEFORE',
-            'CONVERT',
-            'ERROR',
-            'AFTER',
-            'AFTER APP',
-            'FINISH APP',
-        ], $app['service']->called);
-    }
-
-    public function controller(Application $app)
-    {
-        $app->abort(404);
-    }
-
-    public function before()
-    {
-        $this->called[] = 'BEFORE';
-    }
-
-    public function after()
-    {
-        $this->called[] = 'AFTER';
-    }
-
-    public function beforeApp()
-    {
-        $this->called[] = 'BEFORE APP';
-    }
-
-    public function afterApp()
-    {
-        $this->called[] = 'AFTER APP';
-    }
-
-    public function finishApp()
-    {
-        $this->called[] = 'FINISH APP';
-    }
-
-    public function error()
-    {
-        $this->called[] = 'ERROR';
-    }
-
-    public function convert()
-    {
-        $this->called[] = 'CONVERT';
-    }
-
-    public function onRequest()
-    {
-        $this->called[] = 'ON REQUEST';
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/ControllerCollectionTest.php b/vendor/silex/silex/tests/Silex/Tests/ControllerCollectionTest.php
deleted file mode 100644
index 319ed7a34b41e9fc16504d4537642e5ca6f5e963..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/ControllerCollectionTest.php
+++ /dev/null
@@ -1,349 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Controller;
-use Silex\ControllerCollection;
-use Silex\Exception\ControllerFrozenException;
-use Silex\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * ControllerCollection test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class ControllerCollectionTest extends TestCase
-{
-    public function testGetRouteCollectionWithNoRoutes()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $routes = $controllers->flush();
-        $this->assertCount(0, $routes->all());
-    }
-
-    public function testGetRouteCollectionWithRoutes()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $controllers->match('/foo', function () {});
-        $controllers->match('/bar', function () {});
-
-        $routes = $controllers->flush();
-        $this->assertCount(2, $routes->all());
-    }
-
-    public function testControllerFreezing()
-    {
-        $controllers = new ControllerCollection(new Route());
-
-        $fooController = $controllers->match('/foo', function () {})->bind('foo');
-        $barController = $controllers->match('/bar', function () {})->bind('bar');
-
-        $controllers->flush();
-
-        try {
-            $fooController->bind('foo2');
-            $this->fail();
-        } catch (ControllerFrozenException $e) {
-        }
-
-        $this->addToAssertionCount(1);
-
-        try {
-            $barController->bind('bar2');
-            $this->fail();
-        } catch (ControllerFrozenException $e) {
-        }
-
-        $this->addToAssertionCount(1);
-    }
-
-    public function testConflictingRouteNames()
-    {
-        $controllers = new ControllerCollection(new Route());
-
-        $mountedRootController = $controllers->match('/', function () {});
-
-        $mainRootController = new Controller(new Route('/'));
-        $mainRootController->bind($mainRootController->generateRouteName('main_1'));
-
-        $controllers->flush();
-
-        $this->assertNotEquals($mainRootController->getRouteName(), $mountedRootController->getRouteName());
-    }
-
-    public function testUniqueGeneratedRouteNames()
-    {
-        $controllers = new ControllerCollection(new Route());
-
-        $controllers->match('/a-a', function () {});
-        $controllers->match('/a_a', function () {});
-        $controllers->match('/a/a', function () {});
-
-        $routes = $controllers->flush();
-
-        $this->assertCount(3, $routes->all());
-        $this->assertEquals(['_a_a', '_a_a_1', '_a_a_2'], array_keys($routes->all()));
-    }
-
-    public function testUniqueGeneratedRouteNamesAmongMounts()
-    {
-        $controllers = new ControllerCollection(new Route());
-
-        $controllers->mount('/root-a', $rootA = new ControllerCollection(new Route()));
-        $controllers->mount('/root_a', $rootB = new ControllerCollection(new Route()));
-
-        $rootA->match('/leaf', function () {});
-        $rootB->match('/leaf', function () {});
-
-        $routes = $controllers->flush();
-
-        $this->assertCount(2, $routes->all());
-        $this->assertEquals(['_root_a_leaf', '_root_a_leaf_1'], array_keys($routes->all()));
-    }
-
-    public function testUniqueGeneratedRouteNamesAmongNestedMounts()
-    {
-        $controllers = new ControllerCollection(new Route());
-
-        $controllers->mount('/root-a', $rootA = new ControllerCollection(new Route()));
-        $controllers->mount('/root_a', $rootB = new ControllerCollection(new Route()));
-
-        $rootA->mount('/tree', $treeA = new ControllerCollection(new Route()));
-        $rootB->mount('/tree', $treeB = new ControllerCollection(new Route()));
-
-        $treeA->match('/leaf', function () {});
-        $treeB->match('/leaf', function () {});
-
-        $routes = $controllers->flush();
-
-        $this->assertCount(2, $routes->all());
-        $this->assertEquals(['_root_a_tree_leaf', '_root_a_tree_leaf_1'], array_keys($routes->all()));
-    }
-
-    public function testMountCallable()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $controllers->mount('/prefix', function (ControllerCollection $coll) {
-            $coll->mount('/path', function ($coll) {
-                $coll->get('/part');
-            });
-        });
-
-        $routes = $controllers->flush();
-        $this->assertEquals('/prefix/path/part', current($routes->all())->getPath());
-    }
-
-    public function testMountCallableProperClone()
-    {
-        $controllers = new ControllerCollection(new Route(), new RouteCollection());
-        $controllers->get('/');
-
-        $subControllers = null;
-        $controllers->mount('/prefix', function (ControllerCollection $coll) use (&$subControllers) {
-            $subControllers = $coll;
-            $coll->get('/');
-        });
-
-        $routes = $controllers->flush();
-        $subRoutes = $subControllers->flush();
-        $this->assertTrue(2 == $routes->count() && 0 == $subRoutes->count());
-    }
-
-    public function testMountControllersFactory()
-    {
-        $testControllers = new ControllerCollection(new Route());
-        $controllers = new ControllerCollection(new Route(), null, function () use ($testControllers) {
-            return $testControllers;
-        });
-
-        $controllers->mount('/prefix', function ($mounted) use ($testControllers) {
-            $this->assertSame($mounted, $testControllers);
-        });
-    }
-
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage The "mount" method takes either a "ControllerCollection" instance or callable.
-     */
-    public function testMountCallableException()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $controllers->mount('/prefix', '');
-    }
-
-    public function testAssert()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $controllers->assert('id', '\d+');
-        $controller = $controllers->match('/{id}/{name}/{extra}', function () {})->assert('name', '\w+')->assert('extra', '.*');
-        $controllers->assert('extra', '\w+');
-
-        $this->assertEquals('\d+', $controller->getRoute()->getRequirement('id'));
-        $this->assertEquals('\w+', $controller->getRoute()->getRequirement('name'));
-        $this->assertEquals('\w+', $controller->getRoute()->getRequirement('extra'));
-    }
-
-    public function testAssertWithMountCallable()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $controller = null;
-        $controllers->mount('/{name}', function ($mounted) use (&$controller) {
-            $mounted->assert('name', '\w+');
-            $mounted->mount('/{id}', function ($mounted2) use (&$controller) {
-                $mounted2->assert('id', '\d+');
-                $controller = $mounted2->match('/{extra}', function () {})->assert('extra', '\w+');
-            });
-        });
-
-        $this->assertEquals('\d+', $controller->getRoute()->getRequirement('id'));
-        $this->assertEquals('\w+', $controller->getRoute()->getRequirement('name'));
-        $this->assertEquals('\w+', $controller->getRoute()->getRequirement('extra'));
-    }
-
-    public function testValue()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $controllers->value('id', '1');
-        $controller = $controllers->match('/{id}/{name}/{extra}', function () {})->value('name', 'Fabien')->value('extra', 'Symfony');
-        $controllers->value('extra', 'Twig');
-
-        $this->assertEquals('1', $controller->getRoute()->getDefault('id'));
-        $this->assertEquals('Fabien', $controller->getRoute()->getDefault('name'));
-        $this->assertEquals('Twig', $controller->getRoute()->getDefault('extra'));
-    }
-
-    public function testConvert()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $controllers->convert('id', '1');
-        $controller = $controllers->match('/{id}/{name}/{extra}', function () {})->convert('name', 'Fabien')->convert('extra', 'Symfony');
-        $controllers->convert('extra', 'Twig');
-
-        $this->assertEquals(['id' => '1', 'name' => 'Fabien', 'extra' => 'Twig'], $controller->getRoute()->getOption('_converters'));
-    }
-
-    public function testRequireHttp()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $controllers->requireHttp();
-        $controller = $controllers->match('/{id}/{name}/{extra}', function () {})->requireHttps();
-
-        $this->assertEquals(['https'], $controller->getRoute()->getSchemes());
-
-        $controllers->requireHttp();
-
-        $this->assertEquals(['http'], $controller->getRoute()->getSchemes());
-    }
-
-    public function testBefore()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $controllers->before('mid1');
-        $controller = $controllers->match('/{id}/{name}/{extra}', function () {})->before('mid2');
-        $controllers->before('mid3');
-
-        $this->assertEquals(['mid1', 'mid2', 'mid3'], $controller->getRoute()->getOption('_before_middlewares'));
-    }
-
-    public function testAfter()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $controllers->after('mid1');
-        $controller = $controllers->match('/{id}/{name}/{extra}', function () {})->after('mid2');
-        $controllers->after('mid3');
-
-        $this->assertEquals(['mid1', 'mid2', 'mid3'], $controller->getRoute()->getOption('_after_middlewares'));
-    }
-
-    public function testWhen()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $controller = $controllers->match('/{id}/{name}/{extra}', function () {})->when('request.isSecure() == true');
-
-        $this->assertEquals('request.isSecure() == true', $controller->getRoute()->getCondition());
-    }
-
-    public function testRouteExtension()
-    {
-        $route = new MyRoute1();
-
-        $controller = new ControllerCollection($route);
-        $controller->foo('foo');
-
-        $this->assertEquals('foo', $route->foo);
-    }
-
-    /**
-     * @expectedException \BadMethodCallException
-     */
-    public function testRouteMethodDoesNotExist()
-    {
-        $route = new MyRoute1();
-
-        $controller = new ControllerCollection($route);
-        $controller->bar();
-    }
-
-    public function testNestedCollectionRouteCallbacks()
-    {
-        $cl1 = new ControllerCollection(new MyRoute1());
-        $cl2 = new ControllerCollection(new MyRoute1());
-
-        $c1 = $cl2->match('/c1', function () {});
-        $cl1->mount('/foo', $cl2);
-        $c2 = $cl2->match('/c2', function () {});
-        $cl1->before('before');
-        $c3 = $cl2->match('/c3', function () {});
-
-        $cl1->flush();
-
-        $this->assertEquals(['before'], $c1->getRoute()->getOption('_before_middlewares'));
-        $this->assertEquals(['before'], $c2->getRoute()->getOption('_before_middlewares'));
-        $this->assertEquals(['before'], $c3->getRoute()->getOption('_before_middlewares'));
-    }
-
-    public function testRoutesFactoryOmitted()
-    {
-        $controllers = new ControllerCollection(new Route());
-        $routes = $controllers->flush();
-        $this->assertInstanceOf('Symfony\Component\Routing\RouteCollection', $routes);
-    }
-
-    public function testRoutesFactoryInConstructor()
-    {
-        $app = new Application();
-        $app['routes_factory'] = $app->factory(function () {
-            return new RouteCollectionSubClass2();
-        });
-
-        $controllers = new ControllerCollection(new Route(), $app['routes_factory']);
-        $routes = $controllers->flush();
-        $this->assertInstanceOf('Silex\Tests\RouteCollectionSubClass2', $routes);
-    }
-}
-
-class MyRoute1 extends Route
-{
-    public $foo;
-
-    public function foo($value)
-    {
-        $this->foo = $value;
-    }
-}
-
-class RouteCollectionSubClass2 extends RouteCollection
-{
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/ControllerTest.php b/vendor/silex/silex/tests/Silex/Tests/ControllerTest.php
deleted file mode 100644
index ebf10b1eeb4e62b43f92ba93bd2da733e1fd1f77..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/ControllerTest.php
+++ /dev/null
@@ -1,133 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Controller;
-use Silex\Route;
-
-/**
- * Controller test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class ControllerTest extends TestCase
-{
-    public function testBind()
-    {
-        $controller = new Controller(new Route('/foo'));
-        $ret = $controller->bind('foo');
-
-        $this->assertSame($ret, $controller);
-        $this->assertEquals('foo', $controller->getRouteName());
-    }
-
-    /**
-     * @expectedException \Silex\Exception\ControllerFrozenException
-     */
-    public function testBindOnFrozenControllerShouldThrowException()
-    {
-        $controller = new Controller(new Route('/foo'));
-        $controller->bind('foo');
-        $controller->freeze();
-        $controller->bind('bar');
-    }
-
-    public function testAssert()
-    {
-        $controller = new Controller(new Route('/foo/{bar}'));
-        $ret = $controller->assert('bar', '\d+');
-
-        $this->assertSame($ret, $controller);
-        $this->assertEquals(['bar' => '\d+'], $controller->getRoute()->getRequirements());
-    }
-
-    public function testValue()
-    {
-        $controller = new Controller(new Route('/foo/{bar}'));
-        $ret = $controller->value('bar', 'foo');
-
-        $this->assertSame($ret, $controller);
-        $this->assertEquals(['bar' => 'foo'], $controller->getRoute()->getDefaults());
-    }
-
-    public function testConvert()
-    {
-        $controller = new Controller(new Route('/foo/{bar}'));
-        $ret = $controller->convert('bar', $func = function ($bar) { return $bar; });
-
-        $this->assertSame($ret, $controller);
-        $this->assertEquals(['bar' => $func], $controller->getRoute()->getOption('_converters'));
-    }
-
-    public function testRun()
-    {
-        $controller = new Controller(new Route('/foo/{bar}'));
-        $ret = $controller->run($cb = function () { return 'foo'; });
-
-        $this->assertSame($ret, $controller);
-        $this->assertEquals($cb, $controller->getRoute()->getDefault('_controller'));
-    }
-
-    /**
-     * @dataProvider provideRouteAndExpectedRouteName
-     */
-    public function testDefaultRouteNameGeneration(Route $route, $prefix, $expectedRouteName)
-    {
-        $controller = new Controller($route);
-        $controller->bind($controller->generateRouteName($prefix));
-
-        $this->assertEquals($expectedRouteName, $controller->getRouteName());
-    }
-
-    public function provideRouteAndExpectedRouteName()
-    {
-        return [
-            [new Route('/Invalid%Symbols#Stripped', [], [], [], '', [], ['POST']), '', 'POST_InvalidSymbolsStripped'],
-            [new Route('/post/{id}', [], [], [], '', [], ['GET']), '', 'GET_post_id'],
-            [new Route('/colon:pipe|dashes-escaped'), '', '_colon_pipe_dashes_escaped'],
-            [new Route('/underscores_and.periods'), '', '_underscores_and.periods'],
-            [new Route('/post/{id}', [], [], [], '', [], ['GET']), 'prefix', 'GET_prefix_post_id'],
-        ];
-    }
-
-    public function testRouteExtension()
-    {
-        $route = new MyRoute();
-
-        $controller = new Controller($route);
-        $controller->foo('foo');
-
-        $this->assertEquals('foo', $route->foo);
-    }
-
-    /**
-     * @expectedException \BadMethodCallException
-     */
-    public function testRouteMethodDoesNotExist()
-    {
-        $route = new MyRoute();
-
-        $controller = new Controller($route);
-        $controller->bar();
-    }
-}
-
-class MyRoute extends Route
-{
-    public $foo;
-
-    public function foo($value)
-    {
-        $this->foo = $value;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/EventListener/LogListenerTest.php b/vendor/silex/silex/tests/Silex/Tests/EventListener/LogListenerTest.php
deleted file mode 100644
index b56082e09ca2163f577c2646b71e07a86db5b957..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/EventListener/LogListenerTest.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Log\LogLevel;
-use Silex\EventListener\LogListener;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\Exception\HttpException;
-
-/**
- * LogListener.
- *
- * @author Jérôme Tamarelle <jerome@tamarelle.net>
- */
-class LogListenerTest extends TestCase
-{
-    public function testRequestListener()
-    {
-        $logger = $this->getMockBuilder('Psr\\Log\\LoggerInterface')->getMock();
-        $logger
-            ->expects($this->once())
-            ->method('log')
-            ->with(LogLevel::DEBUG, '> GET /foo')
-        ;
-
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addSubscriber(new LogListener($logger));
-
-        $kernel = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\HttpKernelInterface')->getMock();
-
-        $dispatcher->dispatch(KernelEvents::REQUEST, new GetResponseEvent($kernel, Request::create('/subrequest'), HttpKernelInterface::SUB_REQUEST), 'Skip sub requests');
-
-        $dispatcher->dispatch(KernelEvents::REQUEST, new GetResponseEvent($kernel, Request::create('/foo'), HttpKernelInterface::MASTER_REQUEST), 'Log master requests');
-    }
-
-    public function testResponseListener()
-    {
-        $logger = $this->getMockBuilder('Psr\\Log\\LoggerInterface')->getMock();
-        $logger
-            ->expects($this->once())
-            ->method('log')
-            ->with(LogLevel::DEBUG, '< 301')
-        ;
-
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addSubscriber(new LogListener($logger));
-
-        $kernel = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\HttpKernelInterface')->getMock();
-
-        $dispatcher->dispatch(KernelEvents::RESPONSE, new FilterResponseEvent($kernel, Request::create('/foo'), HttpKernelInterface::SUB_REQUEST, Response::create('subrequest', 200)), 'Skip sub requests');
-
-        $dispatcher->dispatch(KernelEvents::RESPONSE, new FilterResponseEvent($kernel, Request::create('/foo'), HttpKernelInterface::MASTER_REQUEST, Response::create('bar', 301)), 'Log master requests');
-    }
-
-    public function testExceptionListener()
-    {
-        $logger = $this->getMockBuilder('Psr\\Log\\LoggerInterface')->getMock();
-        $logger
-            ->expects($this->at(0))
-            ->method('log')
-            ->with(LogLevel::CRITICAL, 'RuntimeException: Fatal error (uncaught exception) at '.__FILE__.' line '.(__LINE__ + 13))
-        ;
-        $logger
-            ->expects($this->at(1))
-            ->method('log')
-            ->with(LogLevel::ERROR, 'Symfony\Component\HttpKernel\Exception\HttpException: Http error (uncaught exception) at '.__FILE__.' line '.(__LINE__ + 9))
-        ;
-
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addSubscriber(new LogListener($logger));
-
-        $kernel = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\HttpKernelInterface')->getMock();
-
-        $dispatcher->dispatch(KernelEvents::EXCEPTION, new GetResponseForExceptionEvent($kernel, Request::create('/foo'), HttpKernelInterface::SUB_REQUEST, new \RuntimeException('Fatal error')));
-        $dispatcher->dispatch(KernelEvents::EXCEPTION, new GetResponseForExceptionEvent($kernel, Request::create('/foo'), HttpKernelInterface::SUB_REQUEST, new HttpException(400, 'Http error')));
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/ExceptionHandlerTest.php b/vendor/silex/silex/tests/Silex/Tests/ExceptionHandlerTest.php
deleted file mode 100644
index e5c43fbbf7fa54a908bf18c5d19cfdff96596aad..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/ExceptionHandlerTest.php
+++ /dev/null
@@ -1,404 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-
-/**
- * Error handler test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class ExceptionHandlerTest extends TestCase
-{
-    public function testExceptionHandlerExceptionNoDebug()
-    {
-        $app = new Application();
-        $app['debug'] = false;
-
-        $app->match('/foo', function () {
-            throw new \RuntimeException('foo exception');
-        });
-
-        $request = Request::create('/foo');
-        $response = $app->handle($request);
-        $this->assertContains('Whoops, looks like something went wrong.', $response->getContent());
-        $this->assertEquals(500, $response->getStatusCode());
-    }
-
-    public function testExceptionHandlerExceptionDebug()
-    {
-        $app = new Application();
-        $app['debug'] = true;
-
-        $app->match('/foo', function () {
-            throw new \RuntimeException('foo exception');
-        });
-
-        $request = Request::create('/foo');
-        $response = $app->handle($request);
-
-        $this->assertContains('foo exception', $response->getContent());
-        $this->assertEquals(500, $response->getStatusCode());
-    }
-
-    public function testExceptionHandlerNotFoundNoDebug()
-    {
-        $app = new Application();
-        $app['debug'] = false;
-
-        $request = Request::create('/foo');
-        $response = $app->handle($request);
-        $this->assertContains('Sorry, the page you are looking for could not be found.', $response->getContent());
-        $this->assertEquals(404, $response->getStatusCode());
-    }
-
-    public function testExceptionHandlerNotFoundDebug()
-    {
-        $app = new Application();
-        $app['debug'] = true;
-
-        $request = Request::create('/foo');
-        $response = $app->handle($request);
-        $this->assertContains('No route found for "GET /foo"', html_entity_decode($response->getContent()));
-        $this->assertEquals(404, $response->getStatusCode());
-    }
-
-    public function testExceptionHandlerMethodNotAllowedNoDebug()
-    {
-        $app = new Application();
-        $app['debug'] = false;
-
-        $app->get('/foo', function () { return 'foo'; });
-
-        $request = Request::create('/foo', 'POST');
-        $response = $app->handle($request);
-        $this->assertContains('Whoops, looks like something went wrong.', $response->getContent());
-        $this->assertEquals(405, $response->getStatusCode());
-        $this->assertEquals('GET', $response->headers->get('Allow'));
-    }
-
-    public function testExceptionHandlerMethodNotAllowedDebug()
-    {
-        $app = new Application();
-        $app['debug'] = true;
-
-        $app->get('/foo', function () { return 'foo'; });
-
-        $request = Request::create('/foo', 'POST');
-        $response = $app->handle($request);
-        $this->assertContains('No route found for "POST /foo": Method Not Allowed (Allow: GET)', html_entity_decode($response->getContent()));
-        $this->assertEquals(405, $response->getStatusCode());
-        $this->assertEquals('GET', $response->headers->get('Allow'));
-    }
-
-    public function testNoExceptionHandler()
-    {
-        $app = new Application();
-        unset($app['exception_handler']);
-
-        $app->match('/foo', function () {
-            throw new \RuntimeException('foo exception');
-        });
-
-        try {
-            $request = Request::create('/foo');
-            $app->handle($request);
-            $this->fail('->handle() should not catch exceptions where no error handler was supplied');
-        } catch (\RuntimeException $e) {
-            $this->assertEquals('foo exception', $e->getMessage());
-        }
-    }
-
-    public function testOneExceptionHandler()
-    {
-        $app = new Application();
-
-        $app->match('/500', function () {
-            throw new \RuntimeException('foo exception');
-        });
-
-        $app->match('/404', function () {
-            throw new NotFoundHttpException('foo exception');
-        });
-
-        $app->get('/405', function () { return 'foo'; });
-
-        $app->error(function ($e, $code) {
-            return new Response('foo exception handler');
-        });
-
-        $response = $this->checkRouteResponse($app, '/500', 'foo exception handler');
-        $this->assertEquals(500, $response->getStatusCode());
-
-        $response = $app->handle(Request::create('/404'));
-        $this->assertEquals(404, $response->getStatusCode());
-
-        $response = $app->handle(Request::create('/405', 'POST'));
-        $this->assertEquals(405, $response->getStatusCode());
-        $this->assertEquals('GET', $response->headers->get('Allow'));
-    }
-
-    public function testMultipleExceptionHandlers()
-    {
-        $app = new Application();
-
-        $app->match('/foo', function () {
-            throw new \RuntimeException('foo exception');
-        });
-
-        $errors = 0;
-
-        $app->error(function ($e) use (&$errors) {
-            ++$errors;
-        });
-
-        $app->error(function ($e) use (&$errors) {
-            ++$errors;
-        });
-
-        $app->error(function ($e) use (&$errors) {
-            ++$errors;
-
-            return new Response('foo exception handler');
-        });
-
-        $app->error(function ($e) use (&$errors) {
-            // should not execute
-            ++$errors;
-        });
-
-        $request = Request::create('/foo');
-        $this->checkRouteResponse($app, '/foo', 'foo exception handler', 'should return the first response returned by an exception handler');
-
-        $this->assertEquals(3, $errors, 'should execute error handlers until a response is returned');
-    }
-
-    public function testNoResponseExceptionHandler()
-    {
-        $app = new Application();
-        unset($app['exception_handler']);
-
-        $app->match('/foo', function () {
-            throw new \RuntimeException('foo exception');
-        });
-
-        $errors = 0;
-
-        $app->error(function ($e) use (&$errors) {
-            ++$errors;
-        });
-
-        try {
-            $request = Request::create('/foo');
-            $app->handle($request);
-            $this->fail('->handle() should not catch exceptions where an empty error handler was supplied');
-        } catch (\RuntimeException $e) {
-            $this->assertEquals('foo exception', $e->getMessage());
-        } catch (\LogicException $e) {
-            $this->assertEquals('foo exception', $e->getPrevious()->getMessage());
-        }
-
-        $this->assertEquals(1, $errors, 'should execute the error handler');
-    }
-
-    public function testStringResponseExceptionHandler()
-    {
-        $app = new Application();
-
-        $app->match('/foo', function () {
-            throw new \RuntimeException('foo exception');
-        });
-
-        $app->error(function ($e) {
-            return 'foo exception handler';
-        });
-
-        $request = Request::create('/foo');
-        $this->checkRouteResponse($app, '/foo', 'foo exception handler', 'should accept a string response from the error handler');
-    }
-
-    public function testExceptionHandlerException()
-    {
-        $app = new Application();
-
-        $app->match('/foo', function () {
-            throw new \RuntimeException('foo exception');
-        });
-
-        $app->error(function ($e) {
-            throw new \RuntimeException('foo exception handler exception');
-        });
-
-        try {
-            $request = Request::create('/foo');
-            $app->handle($request);
-            $this->fail('->handle() should not catch exceptions thrown from an error handler');
-        } catch (\RuntimeException $e) {
-            $this->assertEquals('foo exception handler exception', $e->getMessage());
-        }
-    }
-
-    public function testRemoveExceptionHandlerAfterDispatcherAccess()
-    {
-        $app = new Application();
-
-        $app->match('/foo', function () {
-            throw new \RuntimeException('foo exception');
-        });
-
-        $app->before(function () {
-            // just making sure the dispatcher gets created
-        });
-
-        unset($app['exception_handler']);
-
-        try {
-            $request = Request::create('/foo');
-            $app->handle($request);
-            $this->fail('default exception handler should have been removed');
-        } catch (\RuntimeException $e) {
-            $this->assertEquals('foo exception', $e->getMessage());
-        }
-    }
-
-    public function testExceptionHandlerWithDefaultException()
-    {
-        $app = new Application();
-        $app['debug'] = false;
-
-        $app->match('/foo', function () {
-            throw new \Exception();
-        });
-
-        $app->error(function (\Exception $e) {
-            return new Response('Exception thrown', 500);
-        });
-
-        $request = Request::create('/foo');
-        $response = $app->handle($request);
-        $this->assertContains('Exception thrown', $response->getContent());
-        $this->assertEquals(500, $response->getStatusCode());
-    }
-
-    public function testExceptionHandlerWithStandardException()
-    {
-        $app = new Application();
-        $app['debug'] = false;
-
-        $app->match('/foo', function () {
-            // Throw a normal exception
-            throw new \Exception();
-        });
-
-        // Register 2 error handlers, each with a specified Exception class
-        // Since we throw a standard Exception above only
-        // the second error handler should fire
-        $app->error(function (\LogicException $e) { // Extends \Exception
-            return 'Caught LogicException';
-        });
-        $app->error(function (\Exception $e) {
-            return 'Caught Exception';
-        });
-
-        $request = Request::create('/foo');
-        $response = $app->handle($request);
-        $this->assertContains('Caught Exception', $response->getContent());
-    }
-
-    public function testExceptionHandlerWithSpecifiedException()
-    {
-        $app = new Application();
-        $app['debug'] = false;
-
-        $app->match('/foo', function () {
-            // Throw a specified exception
-            throw new \LogicException();
-        });
-
-        // Register 2 error handlers, each with a specified Exception class
-        // Since we throw a LogicException above
-        // the first error handler should fire
-        $app->error(function (\LogicException $e) { // Extends \Exception
-            return 'Caught LogicException';
-        });
-        $app->error(function (\Exception $e) {
-            return 'Caught Exception';
-        });
-
-        $request = Request::create('/foo');
-        $response = $app->handle($request);
-        $this->assertContains('Caught LogicException', $response->getContent());
-    }
-
-    public function testExceptionHandlerWithSpecifiedExceptionInReverseOrder()
-    {
-        $app = new Application();
-        $app['debug'] = false;
-
-        $app->match('/foo', function () {
-            // Throw a specified exception
-            throw new \LogicException();
-        });
-
-        // Register the \Exception error handler first, since the
-        // error handler works with an instanceof mechanism the
-        // second more specific error handler should not fire since
-        // the \Exception error handler is registered first and also
-        // captures all exceptions that extend it
-        $app->error(function (\Exception $e) {
-            return 'Caught Exception';
-        });
-        $app->error(function (\LogicException $e) { // Extends \Exception
-            return 'Caught LogicException';
-        });
-
-        $request = Request::create('/foo');
-        $response = $app->handle($request);
-        $this->assertContains('Caught Exception', $response->getContent());
-    }
-
-    public function testExceptionHandlerWithArrayStyleCallback()
-    {
-        $app = new Application();
-        $app['debug'] = false;
-
-        $app->match('/foo', function () {
-            throw new \Exception();
-        });
-
-        // Array style callback for error handler
-        $app->error([$this, 'exceptionHandler']);
-
-        $request = Request::create('/foo');
-        $response = $app->handle($request);
-        $this->assertContains('Caught Exception', $response->getContent());
-    }
-
-    protected function checkRouteResponse($app, $path, $expectedContent, $method = 'get', $message = null)
-    {
-        $request = Request::create($path, $method);
-        $response = $app->handle($request);
-        $this->assertEquals($expectedContent, $response->getContent(), $message);
-
-        return $response;
-    }
-
-    public function exceptionHandler()
-    {
-        return 'Caught Exception';
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Fixtures/Php7Controller.php b/vendor/silex/silex/tests/Silex/Tests/Fixtures/Php7Controller.php
deleted file mode 100644
index c16f14edb3797d75637c5cf7cea7dcc0518bda8d..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Fixtures/Php7Controller.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Fixtures;
-
-use Silex\Application;
-
-class Php7Controller
-{
-    public function typehintedAction(Application $application, string $name)
-    {
-        return 'Hello '.$application->escape($name).' in '.get_class($application);
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Fixtures/manifest.json b/vendor/silex/silex/tests/Silex/Tests/Fixtures/manifest.json
deleted file mode 100644
index 78c3bd61a032a288b6ed52e8dfd54710558011c7..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Fixtures/manifest.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "app.js": "some-random-hash.js"
-}
\ No newline at end of file
diff --git a/vendor/silex/silex/tests/Silex/Tests/FunctionalTest.php b/vendor/silex/silex/tests/Silex/Tests/FunctionalTest.php
deleted file mode 100644
index c6ee3359b093ae590ed98bc8d7d5ad7c6e51cbab..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/FunctionalTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Route;
-use Silex\ControllerCollection;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Functional test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class FunctionalTest extends TestCase
-{
-    public function testBind()
-    {
-        $app = new Application();
-
-        $app->get('/', function () {
-            return 'hello';
-        })
-        ->bind('homepage');
-
-        $app->get('/foo', function () {
-            return 'foo';
-        })
-        ->bind('foo_abc');
-
-        $app->flush();
-        $routes = $app['routes'];
-        $this->assertInstanceOf('Symfony\Component\Routing\Route', $routes->get('homepage'));
-        $this->assertInstanceOf('Symfony\Component\Routing\Route', $routes->get('foo_abc'));
-    }
-
-    public function testMount()
-    {
-        $mounted = new ControllerCollection(new Route());
-        $mounted->get('/{name}', function ($name) { return new Response($name); });
-
-        $app = new Application();
-        $app->mount('/hello', $mounted);
-
-        $response = $app->handle(Request::create('/hello/Silex'));
-        $this->assertEquals('Silex', $response->getContent());
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/JsonTest.php b/vendor/silex/silex/tests/Silex/Tests/JsonTest.php
deleted file mode 100644
index a471ccc862fb2728f5fdcce4282fe15bc088429c..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/JsonTest.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-
-/**
- * JSON test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class JsonTest extends TestCase
-{
-    public function testJsonReturnsJsonResponse()
-    {
-        $app = new Application();
-
-        $response = $app->json();
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $response = json_decode($response->getContent(), true);
-        $this->assertSame([], $response);
-    }
-
-    public function testJsonUsesData()
-    {
-        $app = new Application();
-
-        $response = $app->json(['foo' => 'bar']);
-        $this->assertSame('{"foo":"bar"}', $response->getContent());
-    }
-
-    public function testJsonUsesStatus()
-    {
-        $app = new Application();
-
-        $response = $app->json([], 202);
-        $this->assertSame(202, $response->getStatusCode());
-    }
-
-    public function testJsonUsesHeaders()
-    {
-        $app = new Application();
-
-        $response = $app->json([], 200, ['ETag' => 'foo']);
-        $this->assertSame('foo', $response->headers->get('ETag'));
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/LazyDispatcherTest.php b/vendor/silex/silex/tests/Silex/Tests/LazyDispatcherTest.php
deleted file mode 100644
index fcbbc62a9f8bce4b723f56911bd470ee53b6b3d8..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/LazyDispatcherTest.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Symfony\Component\HttpFoundation\Request;
-
-class LazyDispatcherTest extends TestCase
-{
-    /** @test */
-    public function beforeMiddlewareShouldNotCreateDispatcherEarly()
-    {
-        $dispatcherCreated = false;
-
-        $app = new Application();
-        $app->extend('dispatcher', function ($dispatcher, $app) use (&$dispatcherCreated) {
-            $dispatcherCreated = true;
-
-            return $dispatcher;
-        });
-
-        $app->before(function () {});
-
-        $this->assertFalse($dispatcherCreated);
-
-        $request = Request::create('/');
-        $app->handle($request);
-
-        $this->assertTrue($dispatcherCreated);
-    }
-
-    /** @test */
-    public function eventHelpersShouldDirectlyAddListenersAfterBoot()
-    {
-        $app = new Application();
-
-        $fired = false;
-        $app->get('/', function () use ($app, &$fired) {
-            $app->finish(function () use (&$fired) {
-                $fired = true;
-            });
-        });
-
-        $request = Request::create('/');
-        $response = $app->handle($request);
-        $app->terminate($request, $response);
-
-        $this->assertTrue($fired, 'Event was not fired');
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/LazyRequestMatcherTest.php b/vendor/silex/silex/tests/Silex/Tests/LazyRequestMatcherTest.php
deleted file mode 100644
index 879d46fac0f2f2354145eb7d34d822845808c172..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/LazyRequestMatcherTest.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Silex\Provider\Routing\LazyRequestMatcher;
-
-/**
- * LazyRequestMatcher test case.
- *
- * @author Leszek Prabucki <leszek.prabucki@gmail.com>
- */
-class LazyRequestMatcherTest extends TestCase
-{
-    /**
-     * @covers \Silex\LazyRequestMatcher::getRequestMatcher
-     */
-    public function testUserMatcherIsCreatedLazily()
-    {
-        $callCounter = 0;
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-
-        $matcher = new LazyRequestMatcher(function () use ($requestMatcher, &$callCounter) {
-            ++$callCounter;
-
-            return $requestMatcher;
-        });
-
-        $this->assertEquals(0, $callCounter);
-        $request = Request::create('path');
-        $matcher->matchRequest($request);
-        $this->assertEquals(1, $callCounter);
-    }
-
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Factory supplied to LazyRequestMatcher must return implementation of Symfony\Component\Routing\RequestMatcherInterface.
-     */
-    public function testThatCanInjectRequestMatcherOnly()
-    {
-        $matcher = new LazyRequestMatcher(function () {
-            return 'someMatcher';
-        });
-
-        $request = Request::create('path');
-        $matcher->matchRequest($request);
-    }
-
-    /**
-     * @covers \Silex\LazyRequestMatcher::matchRequest
-     */
-    public function testMatchIsProxy()
-    {
-        $request = Request::create('path');
-        $matcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $matcher->expects($this->once())
-            ->method('matchRequest')
-            ->with($request)
-            ->will($this->returnValue('matcherReturnValue'));
-
-        $matcher = new LazyRequestMatcher(function () use ($matcher) {
-            return $matcher;
-        });
-        $result = $matcher->matchRequest($request);
-
-        $this->assertEquals('matcherReturnValue', $result);
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/LocaleTest.php b/vendor/silex/silex/tests/Silex/Tests/LocaleTest.php
deleted file mode 100644
index 81bf04227d3b42d90aeb2df246d8052cc7d9d26d..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/LocaleTest.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Provider\LocaleServiceProvider;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * Locale test cases.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class LocaleTest extends TestCase
-{
-    public function testLocale()
-    {
-        $app = new Application();
-        $app->register(new LocaleServiceProvider());
-        $app->get('/', function (Request $request) { return $request->getLocale(); });
-        $response = $app->handle(Request::create('/'));
-        $this->assertEquals('en', $response->getContent());
-
-        $app = new Application();
-        $app->register(new LocaleServiceProvider());
-        $app['locale'] = 'fr';
-        $app->get('/', function (Request $request) { return $request->getLocale(); });
-        $response = $app->handle(Request::create('/'));
-        $this->assertEquals('fr', $response->getContent());
-
-        $app = new Application();
-        $app->register(new LocaleServiceProvider());
-        $app->get('/{_locale}', function (Request $request) { return $request->getLocale(); });
-        $response = $app->handle(Request::create('/es'));
-        $this->assertEquals('es', $response->getContent());
-    }
-
-    public function testLocaleInSubRequests()
-    {
-        $app = new Application();
-        $app->register(new LocaleServiceProvider());
-        $app->get('/embed/{_locale}', function (Request $request) { return $request->getLocale(); });
-        $app->get('/{_locale}', function (Request $request) use ($app) {
-            return $request->getLocale().$app->handle(Request::create('/embed/es'), HttpKernelInterface::SUB_REQUEST)->getContent().$request->getLocale();
-        });
-        $response = $app->handle(Request::create('/fr'));
-        $this->assertEquals('fresfr', $response->getContent());
-
-        $app = new Application();
-        $app->register(new LocaleServiceProvider());
-        $app->get('/embed', function (Request $request) { return $request->getLocale(); });
-        $app->get('/{_locale}', function (Request $request) use ($app) {
-            return $request->getLocale().$app->handle(Request::create('/embed'), HttpKernelInterface::SUB_REQUEST)->getContent().$request->getLocale();
-        });
-        $response = $app->handle(Request::create('/fr'));
-        // locale in sub-request must be "en" as this is the value if the sub-request is converted to an ESI
-        $this->assertEquals('frenfr', $response->getContent());
-    }
-
-    public function testLocaleWithBefore()
-    {
-        $app = new Application();
-        $app->register(new LocaleServiceProvider());
-        $app->before(function (Request $request) use ($app) { $request->setLocale('fr'); });
-        $app->get('/embed', function (Request $request) { return $request->getLocale(); });
-        $app->get('/', function (Request $request) use ($app) {
-            return $request->getLocale().$app->handle(Request::create('/embed'), HttpKernelInterface::SUB_REQUEST)->getContent().$request->getLocale();
-        });
-        $response = $app->handle(Request::create('/'));
-        // locale in sub-request is "en" as the before filter is only executed for the main request
-        $this->assertEquals('frenfr', $response->getContent());
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/MiddlewareTest.php b/vendor/silex/silex/tests/Silex/Tests/MiddlewareTest.php
deleted file mode 100644
index 494636bed76e540aa782c63c2723dd59b346a049..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/MiddlewareTest.php
+++ /dev/null
@@ -1,308 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Middleware test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class MiddlewareTest extends TestCase
-{
-    public function testBeforeAndAfterFilter()
-    {
-        $i = 0;
-        $test = $this;
-
-        $app = new Application();
-
-        $app->before(function () use (&$i, $test) {
-            $test->assertEquals(0, $i);
-            ++$i;
-        });
-
-        $app->match('/foo', function () use (&$i, $test) {
-            $test->assertEquals(1, $i);
-            ++$i;
-        });
-
-        $app->after(function () use (&$i, $test) {
-            $test->assertEquals(2, $i);
-            ++$i;
-        });
-
-        $request = Request::create('/foo');
-        $app->handle($request);
-
-        $this->assertEquals(3, $i);
-    }
-
-    public function testAfterFilterWithResponseObject()
-    {
-        $i = 0;
-
-        $app = new Application();
-
-        $app->match('/foo', function () use (&$i) {
-            ++$i;
-
-            return new Response('foo');
-        });
-
-        $app->after(function () use (&$i) {
-            ++$i;
-        });
-
-        $request = Request::create('/foo');
-        $app->handle($request);
-
-        $this->assertEquals(2, $i);
-    }
-
-    public function testMultipleFilters()
-    {
-        $i = 0;
-        $test = $this;
-
-        $app = new Application();
-
-        $app->before(function () use (&$i, $test) {
-            $test->assertEquals(0, $i);
-            ++$i;
-        });
-
-        $app->before(function () use (&$i, $test) {
-            $test->assertEquals(1, $i);
-            ++$i;
-        });
-
-        $app->match('/foo', function () use (&$i, $test) {
-            $test->assertEquals(2, $i);
-            ++$i;
-        });
-
-        $app->after(function () use (&$i, $test) {
-            $test->assertEquals(3, $i);
-            ++$i;
-        });
-
-        $app->after(function () use (&$i, $test) {
-            $test->assertEquals(4, $i);
-            ++$i;
-        });
-
-        $request = Request::create('/foo');
-        $app->handle($request);
-
-        $this->assertEquals(5, $i);
-    }
-
-    public function testFiltersShouldFireOnException()
-    {
-        $i = 0;
-
-        $app = new Application();
-
-        $app->before(function () use (&$i) {
-            ++$i;
-        });
-
-        $app->match('/foo', function () {
-            throw new \RuntimeException();
-        });
-
-        $app->after(function () use (&$i) {
-            ++$i;
-        });
-
-        $app->error(function () {
-            return 'error handled';
-        });
-
-        $request = Request::create('/foo');
-        $app->handle($request);
-
-        $this->assertEquals(2, $i);
-    }
-
-    public function testFiltersShouldFireOnHttpException()
-    {
-        $i = 0;
-
-        $app = new Application();
-
-        $app->before(function () use (&$i) {
-            ++$i;
-        }, Application::EARLY_EVENT);
-
-        $app->after(function () use (&$i) {
-            ++$i;
-        });
-
-        $app->error(function () {
-            return 'error handled';
-        });
-
-        $request = Request::create('/nowhere');
-        $app->handle($request);
-
-        $this->assertEquals(2, $i);
-    }
-
-    public function testBeforeFilterPreventsBeforeMiddlewaresToBeExecuted()
-    {
-        $app = new Application();
-
-        $app->before(function () { return new Response('app before'); });
-
-        $app->get('/', function () {
-            return new Response('test');
-        })->before(function () {
-            return new Response('middleware before');
-        });
-
-        $this->assertEquals('app before', $app->handle(Request::create('/'))->getContent());
-    }
-
-    public function testBeforeFilterExceptionsWhenHandlingAnException()
-    {
-        $app = new Application();
-
-        $app->before(function () { throw new \RuntimeException(''); });
-
-        // even if the before filter throws an exception, we must have the 404
-        $this->assertEquals(404, $app->handle(Request::create('/'))->getStatusCode());
-    }
-
-    public function testRequestShouldBePopulatedOnBefore()
-    {
-        $app = new Application();
-
-        $app->before(function (Request $request) use ($app) {
-            $app['project'] = $request->get('project');
-        });
-
-        $app->match('/foo/{project}', function () use ($app) {
-            return $app['project'];
-        });
-
-        $request = Request::create('/foo/bar');
-        $this->assertEquals('bar', $app->handle($request)->getContent());
-
-        $request = Request::create('/foo/baz');
-        $this->assertEquals('baz', $app->handle($request)->getContent());
-    }
-
-    public function testBeforeFilterAccessesRequestAndCanReturnResponse()
-    {
-        $app = new Application();
-
-        $app->before(function (Request $request) {
-            return new Response($request->get('name'));
-        });
-
-        $app->match('/', function () use ($app) { throw new \Exception('Should never be executed'); });
-
-        $request = Request::create('/?name=Fabien');
-        $this->assertEquals('Fabien', $app->handle($request)->getContent());
-    }
-
-    public function testAfterFilterAccessRequestResponse()
-    {
-        $app = new Application();
-
-        $app->after(function (Request $request, Response $response) {
-            $response->setContent($response->getContent().'---');
-        });
-
-        $app->match('/', function () { return new Response('foo'); });
-
-        $request = Request::create('/');
-        $this->assertEquals('foo---', $app->handle($request)->getContent());
-    }
-
-    public function testAfterFilterCanReturnResponse()
-    {
-        $app = new Application();
-
-        $app->after(function (Request $request, Response $response) {
-            return new Response('bar');
-        });
-
-        $app->match('/', function () { return new Response('foo'); });
-
-        $request = Request::create('/');
-        $this->assertEquals('bar', $app->handle($request)->getContent());
-    }
-
-    public function testRouteAndApplicationMiddlewareParameterInjection()
-    {
-        $app = new Application();
-
-        $test = $this;
-
-        $middlewareTarget = [];
-        $applicationBeforeMiddleware = function ($request, $app) use (&$middlewareTarget, $test) {
-            $test->assertInstanceOf('\Symfony\Component\HttpFoundation\Request', $request);
-            $test->assertInstanceOf('\Silex\Application', $app);
-            $middlewareTarget[] = 'application_before_middleware_triggered';
-        };
-
-        $applicationAfterMiddleware = function ($request, $response, $app) use (&$middlewareTarget, $test) {
-            $test->assertInstanceOf('\Symfony\Component\HttpFoundation\Request', $request);
-            $test->assertInstanceOf('\Symfony\Component\HttpFoundation\Response', $response);
-            $test->assertInstanceOf('\Silex\Application', $app);
-            $middlewareTarget[] = 'application_after_middleware_triggered';
-        };
-
-        $applicationFinishMiddleware = function ($request, $response, $app) use (&$middlewareTarget, $test) {
-            $test->assertInstanceOf('\Symfony\Component\HttpFoundation\Request', $request);
-            $test->assertInstanceOf('\Symfony\Component\HttpFoundation\Response', $response);
-            $test->assertInstanceOf('\Silex\Application', $app);
-            $middlewareTarget[] = 'application_finish_middleware_triggered';
-        };
-
-        $routeBeforeMiddleware = function ($request, $app) use (&$middlewareTarget, $test) {
-            $test->assertInstanceOf('\Symfony\Component\HttpFoundation\Request', $request);
-            $test->assertInstanceOf('\Silex\Application', $app);
-            $middlewareTarget[] = 'route_before_middleware_triggered';
-        };
-
-        $routeAfterMiddleware = function ($request, $response, $app) use (&$middlewareTarget, $test) {
-            $test->assertInstanceOf('\Symfony\Component\HttpFoundation\Request', $request);
-            $test->assertInstanceOf('\Symfony\Component\HttpFoundation\Response', $response);
-            $test->assertInstanceOf('\Silex\Application', $app);
-            $middlewareTarget[] = 'route_after_middleware_triggered';
-        };
-
-        $app->before($applicationBeforeMiddleware);
-        $app->after($applicationAfterMiddleware);
-        $app->finish($applicationFinishMiddleware);
-
-        $app->match('/', function () {
-            return new Response('foo');
-        })
-        ->before($routeBeforeMiddleware)
-        ->after($routeAfterMiddleware);
-
-        $request = Request::create('/');
-        $response = $app->handle($request);
-        $app->terminate($request, $response);
-
-        $this->assertSame(['application_before_middleware_triggered', 'route_before_middleware_triggered', 'route_after_middleware_triggered', 'application_after_middleware_triggered', 'application_finish_middleware_triggered'], $middlewareTarget);
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/AssetServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/AssetServiceProviderTest.php
deleted file mode 100644
index bdca9670b1e2c99490f19138a2565ec8d879e805..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/AssetServiceProviderTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Provider\AssetServiceProvider;
-
-class AssetServiceProviderTest extends TestCase
-{
-    public function testGenerateAssetUrl()
-    {
-        $app = new Application();
-        $app->register(new AssetServiceProvider(), [
-            'assets.version' => 'v1',
-            'assets.version_format' => '%s?version=%s',
-            'assets.named_packages' => [
-                'css' => ['version' => 'css2', 'base_path' => '/whatever-makes-sense'],
-                'images' => ['base_urls' => ['https://img.example.com']],
-            ],
-        ]);
-
-        $this->assertEquals('/foo.png?version=v1', $app['assets.packages']->getUrl('/foo.png'));
-        $this->assertEquals('/whatever-makes-sense/foo.css?css2', $app['assets.packages']->getUrl('foo.css', 'css'));
-        $this->assertEquals('https://img.example.com/foo.png', $app['assets.packages']->getUrl('/foo.png', 'images'));
-    }
-
-    public function testJsonManifestVersionStrategy()
-    {
-        $app = new Application();
-        $app->register(new AssetServiceProvider(), [
-            'assets.json_manifest_path' => __DIR__.'/../Fixtures/manifest.json',
-        ]);
-
-        $this->assertEquals('/some-random-hash.js', $app['assets.packages']->getUrl('app.js'));
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/DoctrineServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/DoctrineServiceProviderTest.php
deleted file mode 100644
index ad67969e453085aa9d03afd6ff49e2d05f3f3c84..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/DoctrineServiceProviderTest.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use PHPUnit\Framework\TestCase;
-use Pimple\Container;
-use Silex\Application;
-use Silex\Provider\DoctrineServiceProvider;
-
-/**
- * DoctrineProvider test cases.
- *
- * Fabien Potencier <fabien@symfony.com>
- */
-class DoctrineServiceProviderTest extends TestCase
-{
-    public function testOptionsInitializer()
-    {
-        $app = new Application();
-        $app->register(new DoctrineServiceProvider());
-
-        $this->assertEquals($app['db.default_options'], $app['db']->getParams());
-    }
-
-    public function testSingleConnection()
-    {
-        if (!in_array('sqlite', \PDO::getAvailableDrivers())) {
-            $this->markTestSkipped('pdo_sqlite is not available');
-        }
-
-        $app = new Application();
-        $app->register(new DoctrineServiceProvider(), [
-            'db.options' => ['driver' => 'pdo_sqlite', 'memory' => true],
-        ]);
-
-        $db = $app['db'];
-        $params = $db->getParams();
-        $this->assertArrayHasKey('memory', $params);
-        $this->assertTrue($params['memory']);
-        $this->assertInstanceof('Doctrine\DBAL\Driver\PDOSqlite\Driver', $db->getDriver());
-        $this->assertEquals(22, $app['db']->fetchColumn('SELECT 22'));
-
-        $this->assertSame($app['dbs']['default'], $db);
-    }
-
-    public function testMultipleConnections()
-    {
-        if (!in_array('sqlite', \PDO::getAvailableDrivers())) {
-            $this->markTestSkipped('pdo_sqlite is not available');
-        }
-
-        $app = new Application();
-        $app->register(new DoctrineServiceProvider(), [
-            'dbs.options' => [
-                'sqlite1' => ['driver' => 'pdo_sqlite', 'memory' => true],
-                'sqlite2' => ['driver' => 'pdo_sqlite', 'path' => sys_get_temp_dir().'/silex'],
-            ],
-        ]);
-
-        $db = $app['db'];
-        $params = $db->getParams();
-        $this->assertArrayHasKey('memory', $params);
-        $this->assertTrue($params['memory']);
-        $this->assertInstanceof('Doctrine\DBAL\Driver\PDOSqlite\Driver', $db->getDriver());
-        $this->assertEquals(22, $app['db']->fetchColumn('SELECT 22'));
-
-        $this->assertSame($app['dbs']['sqlite1'], $db);
-
-        $db2 = $app['dbs']['sqlite2'];
-        $params = $db2->getParams();
-        $this->assertArrayHasKey('path', $params);
-        $this->assertEquals(sys_get_temp_dir().'/silex', $params['path']);
-    }
-
-    public function testLoggerLoading()
-    {
-        if (!in_array('sqlite', \PDO::getAvailableDrivers())) {
-            $this->markTestSkipped('pdo_sqlite is not available');
-        }
-
-        $app = new Application();
-        $this->assertArrayHasKey('logger', $app);
-        $this->assertNull($app['logger']);
-        $app->register(new DoctrineServiceProvider(), [
-            'dbs.options' => [
-                'sqlite1' => ['driver' => 'pdo_sqlite', 'memory' => true],
-            ],
-        ]);
-        $this->assertEquals(22, $app['db']->fetchColumn('SELECT 22'));
-        $this->assertNull($app['db']->getConfiguration()->getSQLLogger());
-    }
-
-    public function testLoggerNotLoaded()
-    {
-        if (!in_array('sqlite', \PDO::getAvailableDrivers())) {
-            $this->markTestSkipped('pdo_sqlite is not available');
-        }
-
-        $app = new Container();
-        $app->register(new DoctrineServiceProvider(), [
-            'dbs.options' => [
-                'sqlite1' => ['driver' => 'pdo_sqlite', 'memory' => true],
-            ],
-        ]);
-        $this->assertEquals(22, $app['db']->fetchColumn('SELECT 22'));
-        $this->assertNull($app['db']->getConfiguration()->getSQLLogger());
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/FormServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/FormServiceProviderTest.php
deleted file mode 100644
index dd4727133b508cc4e4fbd754a85248539b7292f3..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/FormServiceProviderTest.php
+++ /dev/null
@@ -1,330 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Provider\FormServiceProvider;
-use Silex\Provider\CsrfServiceProvider;
-use Silex\Provider\SessionServiceProvider;
-use Silex\Provider\TranslationServiceProvider;
-use Silex\Provider\ValidatorServiceProvider;
-use Symfony\Component\Form\AbstractType;
-use Symfony\Component\Form\AbstractTypeExtension;
-use Symfony\Component\Form\FormTypeGuesserChain;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\OptionsResolver\OptionsResolver;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-
-class FormServiceProviderTest extends TestCase
-{
-    public function testFormFactoryServiceIsFormFactory()
-    {
-        $app = new Application();
-        $app->register(new FormServiceProvider());
-        $this->assertInstanceOf('Symfony\Component\Form\FormFactory', $app['form.factory']);
-    }
-
-    public function testFormRegistryServiceIsFormRegistry()
-    {
-        $app = new Application();
-        $app->register(new FormServiceProvider());
-        $this->assertInstanceOf('Symfony\Component\Form\FormRegistry', $app['form.registry']);
-    }
-
-    public function testFormServiceProviderWillLoadTypes()
-    {
-        $app = new Application();
-
-        $app->register(new FormServiceProvider());
-
-        $app->extend('form.types', function ($extensions) {
-            $extensions[] = new DummyFormType();
-
-            return $extensions;
-        });
-
-        $form = $app['form.factory']->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', [])
-            ->add('dummy', 'Silex\Tests\Provider\DummyFormType')
-            ->getForm();
-
-        $this->assertInstanceOf('Symfony\Component\Form\Form', $form);
-    }
-
-    public function testFormServiceProviderWillLoadTypesServices()
-    {
-        $app = new Application();
-
-        $app->register(new FormServiceProvider());
-
-        $app['dummy'] = function () {
-            return new DummyFormType();
-        };
-        $app->extend('form.types', function ($extensions) {
-            $extensions[] = 'dummy';
-
-            return $extensions;
-        });
-
-        $form = $app['form.factory']
-            ->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', [])
-            ->add('dummy', 'dummy')
-            ->getForm();
-
-        $this->assertInstanceOf('Symfony\Component\Form\Form', $form);
-    }
-
-    /**
-     * @expectedException \Symfony\Component\Form\Exception\InvalidArgumentException
-     * @expectedExceptionMessage Invalid form type. The silex service "dummy" does not exist.
-     */
-    public function testNonExistentTypeService()
-    {
-        $app = new Application();
-
-        $app->register(new FormServiceProvider());
-
-        $app->extend('form.types', function ($extensions) {
-            $extensions[] = 'dummy';
-
-            return $extensions;
-        });
-
-        $app['form.factory']
-            ->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', [])
-            ->add('dummy', 'dummy')
-            ->getForm();
-    }
-
-    public function testFormServiceProviderWillLoadTypeExtensions()
-    {
-        $app = new Application();
-
-        $app->register(new FormServiceProvider());
-
-        $app->extend('form.type.extensions', function ($extensions) {
-            $extensions[] = new DummyFormTypeExtension();
-
-            return $extensions;
-        });
-
-        $form = $app['form.factory']->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', [])
-            ->add('file', 'Symfony\Component\Form\Extension\Core\Type\FileType', ['image_path' => 'webPath'])
-            ->getForm();
-
-        $this->assertInstanceOf('Symfony\Component\Form\Form', $form);
-    }
-
-    public function testFormServiceProviderWillLoadTypeExtensionsServices()
-    {
-        $app = new Application();
-
-        $app->register(new FormServiceProvider());
-
-        $app['dummy.form.type.extension'] = function () {
-            return new DummyFormTypeExtension();
-        };
-        $app->extend('form.type.extensions', function ($extensions) {
-            $extensions[] = 'dummy.form.type.extension';
-
-            return $extensions;
-        });
-
-        $form = $app['form.factory']
-            ->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', [])
-            ->add('file', 'Symfony\Component\Form\Extension\Core\Type\FileType', ['image_path' => 'webPath'])
-            ->getForm();
-
-        $this->assertInstanceOf('Symfony\Component\Form\Form', $form);
-    }
-
-    /**
-     * @expectedException \Symfony\Component\Form\Exception\InvalidArgumentException
-     * @expectedExceptionMessage Invalid form type extension. The silex service "dummy.form.type.extension" does not exist.
-     */
-    public function testNonExistentTypeExtensionService()
-    {
-        $app = new Application();
-
-        $app->register(new FormServiceProvider());
-
-        $app->extend('form.type.extensions', function ($extensions) {
-            $extensions[] = 'dummy.form.type.extension';
-
-            return $extensions;
-        });
-
-        $app['form.factory']
-            ->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', [])
-            ->add('dummy', 'dummy.form.type')
-            ->getForm();
-    }
-
-    public function testFormServiceProviderWillLoadTypeGuessers()
-    {
-        $app = new Application();
-
-        $app->register(new FormServiceProvider());
-
-        $app->extend('form.type.guessers', function ($guessers) {
-            $guessers[] = new FormTypeGuesserChain([]);
-
-            return $guessers;
-        });
-
-        $this->assertInstanceOf('Symfony\Component\Form\FormFactory', $app['form.factory']);
-    }
-
-    public function testFormServiceProviderWillLoadTypeGuessersServices()
-    {
-        $app = new Application();
-
-        $app->register(new FormServiceProvider());
-
-        $app['dummy.form.type.guesser'] = function () {
-            return new FormTypeGuesserChain([]);
-        };
-        $app->extend('form.type.guessers', function ($guessers) {
-            $guessers[] = 'dummy.form.type.guesser';
-
-            return $guessers;
-        });
-
-        $this->assertInstanceOf('Symfony\Component\Form\FormFactory', $app['form.factory']);
-    }
-
-    /**
-     * @expectedException \Symfony\Component\Form\Exception\InvalidArgumentException
-     * @expectedExceptionMessage Invalid form type guesser. The silex service "dummy.form.type.guesser" does not exist.
-     */
-    public function testNonExistentTypeGuesserService()
-    {
-        $app = new Application();
-
-        $app->register(new FormServiceProvider());
-
-        $app->extend('form.type.guessers', function ($extensions) {
-            $extensions[] = 'dummy.form.type.guesser';
-
-            return $extensions;
-        });
-
-        $factory = $app['form.factory'];
-    }
-
-    public function testFormServiceProviderWillUseTranslatorIfAvailable()
-    {
-        $app = new Application();
-
-        $app->register(new FormServiceProvider());
-        $app->register(new TranslationServiceProvider());
-        $app['translator.domains'] = [
-            'messages' => [
-                'de' => [
-                    'The CSRF token is invalid. Please try to resubmit the form.' => 'German translation',
-                ],
-            ],
-        ];
-        $app['locale'] = 'de';
-
-        $app['csrf.token_manager'] = function () {
-            return $this->getMockBuilder('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface')->getMock();
-        };
-
-        $form = $app['form.factory']->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', [])
-            ->getForm();
-
-        $form->handleRequest($req = Request::create('/', 'POST', ['form' => [
-            '_token' => 'the wrong token',
-        ]]));
-
-        $this->assertFalse($form->isValid());
-        $r = new \ReflectionMethod($form, 'getErrors');
-        if (!$r->getNumberOfParameters()) {
-            $this->assertContains('ERROR: German translation', $form->getErrorsAsString());
-        } else {
-            // as of 2.5
-            $this->assertContains('ERROR: German translation', (string) $form->getErrors(true, false));
-        }
-    }
-
-    public function testFormServiceProviderWillNotAddNonexistentTranslationFiles()
-    {
-        $app = new Application([
-            'locale' => 'nonexistent',
-        ]);
-
-        $app->register(new FormServiceProvider());
-        $app->register(new ValidatorServiceProvider());
-        $app->register(new TranslationServiceProvider(), [
-            'locale_fallbacks' => [],
-        ]);
-
-        $app['form.factory'];
-        $translator = $app['translator'];
-
-        try {
-            $translator->trans('test');
-            $this->addToAssertionCount(1);
-        } catch (NotFoundResourceException $e) {
-            $this->fail('Form factory should not add a translation resource that does not exist');
-        }
-    }
-
-    public function testFormCsrf()
-    {
-        $app = new Application();
-        $app->register(new FormServiceProvider());
-        $app->register(new SessionServiceProvider());
-        $app->register(new CsrfServiceProvider());
-        $app['session.test'] = true;
-
-        $form = $app['form.factory']->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', [])->getForm();
-
-        $this->assertTrue(isset($form->createView()['_token']));
-    }
-
-    public function testUserExtensionCanConfigureDefaultExtensions()
-    {
-        $app = new Application();
-        $app->register(new FormServiceProvider());
-        $app->register(new SessionServiceProvider());
-        $app->register(new CsrfServiceProvider());
-        $app['session.test'] = true;
-
-        $app->extend('form.type.extensions', function ($extensions) {
-            $extensions[] = new FormServiceProviderTest\DisableCsrfExtension();
-
-            return $extensions;
-        });
-        $form = $app['form.factory']->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', [])->getForm();
-
-        $this->assertFalse($form->getConfig()->getOption('csrf_protection'));
-    }
-}
-
-class DummyFormType extends AbstractType
-{
-}
-
-class DummyFormTypeExtension extends AbstractTypeExtension
-{
-    public function getExtendedType()
-    {
-        return 'Symfony\Component\Form\Extension\Core\Type\FileType';
-    }
-
-    public function configureOptions(OptionsResolver $resolver)
-    {
-        $resolver->setDefined(['image_path']);
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/FormServiceProviderTest/DisableCsrfExtension.php b/vendor/silex/silex/tests/Silex/Tests/Provider/FormServiceProviderTest/DisableCsrfExtension.php
deleted file mode 100644
index ec55da1e98bfea6fdc34898c6bf85426ac32843e..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/FormServiceProviderTest/DisableCsrfExtension.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-namespace Silex\Tests\Provider\FormServiceProviderTest;
-
-use Symfony\Component\Form\AbstractTypeExtension;
-use Symfony\Component\Form\Extension\Core\Type\FormType;
-use Symfony\Component\OptionsResolver\OptionsResolver;
-
-class DisableCsrfExtension extends AbstractTypeExtension
-{
-    public function configureOptions(OptionsResolver $resolver)
-    {
-        $resolver->setDefaults([
-            'csrf_protection' => false,
-        ]);
-    }
-
-    public function getExtendedType()
-    {
-        return FormType::class;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/HttpCacheServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/HttpCacheServiceProviderTest.php
deleted file mode 100644
index 3b903ee17a20ade3cd4f86cd50e4956aaa3910f4..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/HttpCacheServiceProviderTest.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Provider\HttpCacheServiceProvider;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * HttpCacheProvider test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class HttpCacheServiceProviderTest extends TestCase
-{
-    public function testRegister()
-    {
-        $app = new Application();
-
-        $app->register(new HttpCacheServiceProvider(), [
-            'http_cache.cache_dir' => sys_get_temp_dir().'/silex_http_cache_'.uniqid(),
-        ]);
-
-        $this->assertInstanceOf('Silex\Provider\HttpCache\HttpCache', $app['http_cache']);
-
-        return $app;
-    }
-
-    /**
-     * @depends testRegister
-     */
-    public function testRunCallsShutdown($app)
-    {
-        $finished = false;
-
-        $app->finish(function () use (&$finished) {
-            $finished = true;
-        });
-
-        $app->get('/', function () use ($app) {
-            return new UnsendableResponse('will do something after finish');
-        });
-
-        $request = Request::create('/');
-        $app['http_cache']->run($request);
-
-        $this->assertTrue($finished);
-    }
-
-    public function testDebugDefaultsToThatOfApp()
-    {
-        $app = new Application();
-
-        $app->register(new HttpCacheServiceProvider(), [
-            'http_cache.cache_dir' => sys_get_temp_dir().'/silex_http_cache_'.uniqid(),
-        ]);
-
-        $app['debug'] = true;
-        $app['http_cache'];
-        $this->assertTrue($app['http_cache.options']['debug']);
-    }
-}
-
-class UnsendableResponse extends Response
-{
-    public function send()
-    {
-        // do nothing
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/HttpFragmentServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/HttpFragmentServiceProviderTest.php
deleted file mode 100644
index 6f4bab10c0411fe34bdc3a371ebea9d0e6332e5f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/HttpFragmentServiceProviderTest.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Provider\HttpCacheServiceProvider;
-use Silex\Provider\HttpFragmentServiceProvider;
-use Silex\Provider\TwigServiceProvider;
-use Symfony\Component\HttpFoundation\Request;
-
-class HttpFragmentServiceProviderTest extends TestCase
-{
-    public function testRenderFunction()
-    {
-        $app = new Application();
-        unset($app['exception_handler']);
-
-        $app->register(new HttpFragmentServiceProvider());
-        $app->register(new HttpCacheServiceProvider(), ['http_cache.cache_dir' => sys_get_temp_dir()]);
-        $app->register(new TwigServiceProvider(), [
-            'twig.templates' => [
-                'hello' => '{{ render("/foo") }}{{ render_esi("/foo") }}{{ render_hinclude("/foo") }}',
-                'foo' => 'foo',
-            ],
-        ]);
-
-        $app->get('/hello', function () use ($app) {
-            return $app['twig']->render('hello');
-        });
-
-        $app->get('/foo', function () use ($app) {
-            return $app['twig']->render('foo');
-        });
-
-        $response = $app['http_cache']->handle(Request::create('/hello'));
-
-        $this->assertEquals('foofoo<hx:include src="/foo"></hx:include>', $response->getContent());
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/MonologServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/MonologServiceProviderTest.php
deleted file mode 100644
index 408fb1c168453119f87fe8d8142ea5ffd83c2f21..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/MonologServiceProviderTest.php
+++ /dev/null
@@ -1,252 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use PHPUnit\Framework\TestCase;
-use Monolog\Formatter\JsonFormatter;
-use Monolog\Handler\TestHandler;
-use Monolog\Logger;
-use Silex\Application;
-use Silex\Provider\MonologServiceProvider;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-
-/**
- * MonologProvider test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class MonologServiceProviderTest extends TestCase
-{
-    private $currErrorHandler;
-
-    protected function setUp()
-    {
-        $this->currErrorHandler = set_error_handler('var_dump');
-        restore_error_handler();
-    }
-
-    protected function tearDown()
-    {
-        set_error_handler($this->currErrorHandler);
-    }
-
-    public function testRequestLogging()
-    {
-        $app = $this->getApplication();
-
-        $app->get('/foo', function () use ($app) {
-            return 'foo';
-        });
-
-        $this->assertFalse($app['monolog.handler']->hasInfoRecords());
-
-        $request = Request::create('/foo');
-        $app->handle($request);
-
-        $this->assertTrue($app['monolog.handler']->hasDebug('> GET /foo'));
-        $this->assertTrue($app['monolog.handler']->hasDebug('< 200'));
-
-        $records = $app['monolog.handler']->getRecords();
-        $this->assertContains('Matched route "{route}".', $records[0]['message']);
-        $this->assertSame('GET_foo', $records[0]['context']['route']);
-    }
-
-    public function testManualLogging()
-    {
-        $app = $this->getApplication();
-
-        $app->get('/log', function () use ($app) {
-            $app['monolog']->addDebug('logging a message');
-        });
-
-        $this->assertFalse($app['monolog.handler']->hasDebugRecords());
-
-        $request = Request::create('/log');
-        $app->handle($request);
-
-        $this->assertTrue($app['monolog.handler']->hasDebug('logging a message'));
-    }
-
-    public function testOverrideFormatter()
-    {
-        $app = new Application();
-
-        $app->register(new MonologServiceProvider(), [
-            'monolog.formatter' => new JsonFormatter(),
-            'monolog.logfile' => 'php://memory',
-        ]);
-
-        $this->assertInstanceOf('Monolog\Formatter\JsonFormatter', $app['monolog.handler']->getFormatter());
-    }
-
-    public function testErrorLogging()
-    {
-        $app = $this->getApplication();
-
-        $app->error(function (\Exception $e) {
-            return 'error handled';
-        });
-
-        /*
-         * Simulate 404, logged to error level
-         */
-        $this->assertFalse($app['monolog.handler']->hasErrorRecords());
-
-        $request = Request::create('/error');
-        $app->handle($request);
-
-        $pattern = "#Symfony\\\\Component\\\\HttpKernel\\\\Exception\\\\NotFoundHttpException: No route found for \"GET /error\" \(uncaught exception\) at .* line \d+#";
-        $this->assertMatchingRecord($pattern, Logger::ERROR, $app['monolog.handler']);
-
-        /*
-         * Simulate unhandled exception, logged to critical
-         */
-        $app->get('/error', function () {
-            throw new \RuntimeException('very bad error');
-        });
-
-        $this->assertFalse($app['monolog.handler']->hasCriticalRecords());
-
-        $request = Request::create('/error');
-        $app->handle($request);
-
-        $pattern = "#RuntimeException: very bad error \(uncaught exception\) at .* line \d+#";
-        $this->assertMatchingRecord($pattern, Logger::CRITICAL, $app['monolog.handler']);
-    }
-
-    public function testRedirectLogging()
-    {
-        $app = $this->getApplication();
-
-        $app->get('/foo', function () use ($app) {
-            return new RedirectResponse('/bar', 302);
-        });
-
-        $this->assertFalse($app['monolog.handler']->hasInfoRecords());
-
-        $request = Request::create('/foo');
-        $app->handle($request);
-
-        $this->assertTrue($app['monolog.handler']->hasDebug('< 302 /bar'));
-    }
-
-    public function testErrorLoggingGivesWayToSecurityExceptionHandling()
-    {
-        $app = $this->getApplication();
-        $app['monolog.level'] = Logger::ERROR;
-
-        $app->register(new \Silex\Provider\SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'admin' => [
-                    'pattern' => '^/admin',
-                    'http' => true,
-                    'users' => [],
-                ],
-            ],
-        ]);
-
-        $app->get('/admin', function () {
-            return 'SECURE!';
-        });
-
-        $request = Request::create('/admin');
-        $app->run($request);
-
-        $this->assertEmpty($app['monolog.handler']->getRecords(), 'Expected no logging to occur');
-    }
-
-    public function testStringErrorLevel()
-    {
-        $app = $this->getApplication();
-        $app['monolog.level'] = 'info';
-
-        $this->assertSame(Logger::INFO, $app['monolog.handler']->getLevel());
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Provided logging level 'foo' does not exist. Must be a valid monolog logging level.
-     */
-    public function testNonExistentStringErrorLevel()
-    {
-        $app = $this->getApplication();
-        $app['monolog.level'] = 'foo';
-
-        $app['monolog.handler']->getLevel();
-    }
-
-    public function testDisableListener()
-    {
-        $app = $this->getApplication();
-        unset($app['monolog.listener']);
-
-        $app->handle(Request::create('/404'));
-
-        $this->assertEmpty($app['monolog.handler']->getRecords(), 'Expected no logging to occur');
-    }
-
-    public function testExceptionFiltering()
-    {
-        $app = new Application();
-        $app->get('/foo', function () use ($app) {
-            throw new NotFoundHttpException();
-        });
-
-        $level = Logger::ERROR;
-        $app->register(new MonologServiceProvider(), [
-            'monolog.exception.logger_filter' => $app->protect(function () {
-                return Logger::DEBUG;
-            }),
-            'monolog.handler' => function () use ($app) {
-                return new TestHandler($app['monolog.level']);
-            },
-            'monolog.level' => $level,
-            'monolog.logfile' => 'php://memory',
-        ]);
-
-        $request = Request::create('/foo');
-        $app->handle($request);
-
-        $this->assertCount(0, $app['monolog.handler']->getRecords(), 'Expected no logging to occur');
-    }
-
-    protected function assertMatchingRecord($pattern, $level, TestHandler $handler)
-    {
-        $found = false;
-        $records = $handler->getRecords();
-        foreach ($records as $record) {
-            if (preg_match($pattern, $record['message']) && $record['level'] == $level) {
-                $found = true;
-                continue;
-            }
-        }
-        $this->assertTrue($found, "Trying to find record matching $pattern with level $level");
-    }
-
-    protected function getApplication()
-    {
-        $app = new Application();
-
-        $app->register(new MonologServiceProvider(), [
-            'monolog.handler' => function () use ($app) {
-                $level = MonologServiceProvider::translateLevel($app['monolog.level']);
-
-                return new TestHandler($level);
-            },
-            'monolog.logfile' => 'php://memory',
-        ]);
-
-        return $app;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/RememberMeServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/RememberMeServiceProviderTest.php
deleted file mode 100644
index a673ac6204b13db58dad4d4c4f97f44f1dc590a3..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/RememberMeServiceProviderTest.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use Silex\Application;
-use Silex\WebTestCase;
-use Silex\Provider\RememberMeServiceProvider;
-use Silex\Provider\SecurityServiceProvider;
-use Silex\Provider\SessionServiceProvider;
-use Symfony\Component\HttpKernel\Client;
-use Symfony\Component\Security\Http\SecurityEvents;
-
-/**
- * SecurityServiceProvider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RememberMeServiceProviderTest extends WebTestCase
-{
-    public function testRememberMeAuthentication()
-    {
-        $app = $this->createApplication();
-
-        $interactiveLogin = new InteractiveLoginTriggered();
-        $app->on(SecurityEvents::INTERACTIVE_LOGIN, [$interactiveLogin, 'onInteractiveLogin']);
-
-        $client = new Client($app);
-
-        $client->request('get', '/');
-        $this->assertFalse($interactiveLogin->triggered, 'The interactive login has not been triggered yet');
-        $client->request('post', '/login_check', ['_username' => 'fabien', '_password' => 'foo', '_remember_me' => 'true']);
-        $client->followRedirect();
-        $this->assertEquals('AUTHENTICATED_FULLY', $client->getResponse()->getContent());
-        $this->assertTrue($interactiveLogin->triggered, 'The interactive login has been triggered');
-
-        $this->assertNotNull($client->getCookiejar()->get('REMEMBERME'), 'The REMEMBERME cookie is set');
-        $event = false;
-
-        $client->getCookiejar()->expire('MOCKSESSID');
-
-        $client->request('get', '/');
-        $this->assertEquals('AUTHENTICATED_REMEMBERED', $client->getResponse()->getContent());
-        $this->assertTrue($interactiveLogin->triggered, 'The interactive login has been triggered');
-
-        $client->request('get', '/logout');
-        $client->followRedirect();
-
-        $this->assertNull($client->getCookiejar()->get('REMEMBERME'), 'The REMEMBERME cookie has been removed');
-    }
-
-    public function createApplication($authenticationMethod = 'form')
-    {
-        $app = new Application();
-
-        $app['debug'] = true;
-        unset($app['exception_handler']);
-
-        $app->register(new SessionServiceProvider(), [
-            'session.test' => true,
-        ]);
-        $app->register(new SecurityServiceProvider());
-        $app->register(new RememberMeServiceProvider());
-
-        $app['security.firewalls'] = [
-            'http-auth' => [
-                'pattern' => '^.*$',
-                'form' => true,
-                'remember_me' => [],
-                'logout' => true,
-                'users' => [
-                    'fabien' => ['ROLE_USER', '$2y$15$lzUNsTegNXvZW3qtfucV0erYBcEqWVeyOmjolB7R1uodsAVJ95vvu'],
-                ],
-            ],
-        ];
-
-        $app->get('/', function () use ($app) {
-            if ($app['security.authorization_checker']->isGranted('IS_AUTHENTICATED_FULLY')) {
-                return 'AUTHENTICATED_FULLY';
-            } elseif ($app['security.authorization_checker']->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
-                return 'AUTHENTICATED_REMEMBERED';
-            } else {
-                return 'AUTHENTICATED_ANONYMOUSLY';
-            }
-        });
-
-        return $app;
-    }
-}
-
-class InteractiveLoginTriggered
-{
-    public $triggered = false;
-
-    public function onInteractiveLogin()
-    {
-        $this->triggered = true;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/RoutingServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/RoutingServiceProviderTest.php
deleted file mode 100644
index fc30e6ed3d7ceba04bcfe7c0ab12fdbdc0c30c45..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/RoutingServiceProviderTest.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use PHPUnit\Framework\TestCase;
-use Pimple\Container;
-use Silex\Application;
-use Silex\Provider\RoutingServiceProvider;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-
-/**
- * RoutingProvider test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class RoutingServiceProviderTest extends TestCase
-{
-    public function testRegister()
-    {
-        $app = new Application();
-
-        $app->get('/hello/{name}', function ($name) {})
-            ->bind('hello');
-
-        $app->get('/', function () {});
-
-        $request = Request::create('/');
-        $app->handle($request);
-
-        $this->assertInstanceOf('Symfony\Component\Routing\Generator\UrlGenerator', $app['url_generator']);
-    }
-
-    public function testUrlGeneration()
-    {
-        $app = new Application();
-
-        $app->get('/hello/{name}', function ($name) {})
-            ->bind('hello');
-
-        $app->get('/', function () use ($app) {
-            return $app['url_generator']->generate('hello', ['name' => 'john']);
-        });
-
-        $request = Request::create('/');
-        $response = $app->handle($request);
-
-        $this->assertEquals('/hello/john', $response->getContent());
-    }
-
-    public function testAbsoluteUrlGeneration()
-    {
-        $app = new Application();
-
-        $app->get('/hello/{name}', function ($name) {})
-            ->bind('hello');
-
-        $app->get('/', function () use ($app) {
-            return $app['url_generator']->generate('hello', ['name' => 'john'], UrlGeneratorInterface::ABSOLUTE_URL);
-        });
-
-        $request = Request::create('https://localhost:81/');
-        $response = $app->handle($request);
-
-        $this->assertEquals('https://localhost:81/hello/john', $response->getContent());
-    }
-
-    public function testUrlGenerationWithHttp()
-    {
-        $app = new Application();
-
-        $app->get('/insecure', function () {})
-            ->bind('insecure_page')
-            ->requireHttp();
-
-        $app->get('/', function () use ($app) {
-            return $app['url_generator']->generate('insecure_page');
-        });
-
-        $request = Request::create('https://localhost/');
-        $response = $app->handle($request);
-
-        $this->assertEquals('http://localhost/insecure', $response->getContent());
-    }
-
-    public function testUrlGenerationWithHttps()
-    {
-        $app = new Application();
-
-        $app->get('/secure', function () {})
-            ->bind('secure_page')
-            ->requireHttps();
-
-        $app->get('/', function () use ($app) {
-            return $app['url_generator']->generate('secure_page');
-        });
-
-        $request = Request::create('http://localhost/');
-        $response = $app->handle($request);
-
-        $this->assertEquals('https://localhost/secure', $response->getContent());
-    }
-
-    public function testControllersFactory()
-    {
-        $app = new Container();
-        $app->register(new RoutingServiceProvider());
-        $coll = $app['controllers_factory'];
-        $coll->mount('/blog', function ($blog) {
-            $this->assertInstanceOf('Silex\ControllerCollection', $blog);
-        });
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/SecurityServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/SecurityServiceProviderTest.php
deleted file mode 100644
index ccaa9aafd52675d1f2562fa54d5c1d6a56d1712e..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/SecurityServiceProviderTest.php
+++ /dev/null
@@ -1,529 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use Silex\Application;
-use Silex\WebTestCase;
-use Silex\Provider\SecurityServiceProvider;
-use Silex\Provider\SessionServiceProvider;
-use Silex\Provider\ValidatorServiceProvider;
-use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
-use Symfony\Component\Security\Core\Exception\AuthenticationException;
-use Symfony\Component\HttpKernel\Client;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * SecurityServiceProvider.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SecurityServiceProviderTest extends WebTestCase
-{
-    /**
-     * @expectedException \LogicException
-     */
-    public function testWrongAuthenticationType()
-    {
-        $app = new Application();
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'wrong' => [
-                    'foobar' => true,
-                    'users' => [],
-                ],
-            ],
-        ]);
-        $app->get('/', function () {});
-        $app->handle(Request::create('/'));
-    }
-
-    public function testFormAuthentication()
-    {
-        $app = $this->createApplication('form');
-
-        $client = new Client($app);
-
-        $client->request('get', '/');
-        $this->assertEquals('ANONYMOUS', $client->getResponse()->getContent());
-
-        $client->request('post', '/login_check', ['_username' => 'fabien', '_password' => 'bar']);
-        $this->assertContains('Bad credentials', $app['security.last_error']($client->getRequest()));
-        // hack to re-close the session as the previous assertions re-opens it
-        $client->getRequest()->getSession()->save();
-
-        $client->request('post', '/login_check', ['_username' => 'fabien', '_password' => 'foo']);
-        $this->assertEquals('', $app['security.last_error']($client->getRequest()));
-        $client->getRequest()->getSession()->save();
-        $this->assertEquals(302, $client->getResponse()->getStatusCode());
-        $this->assertEquals('http://localhost/', $client->getResponse()->getTargetUrl());
-
-        $client->request('get', '/');
-        $this->assertEquals('fabienAUTHENTICATED', $client->getResponse()->getContent());
-        $client->request('get', '/admin');
-        $this->assertEquals(403, $client->getResponse()->getStatusCode());
-
-        $client->request('get', '/logout');
-        $this->assertEquals(302, $client->getResponse()->getStatusCode());
-        $this->assertEquals('http://localhost/', $client->getResponse()->getTargetUrl());
-
-        $client->request('get', '/');
-        $this->assertEquals('ANONYMOUS', $client->getResponse()->getContent());
-
-        $client->request('get', '/admin');
-        $this->assertEquals(302, $client->getResponse()->getStatusCode());
-        $this->assertEquals('http://localhost/login', $client->getResponse()->getTargetUrl());
-
-        $client->request('post', '/login_check', ['_username' => 'admin', '_password' => 'foo']);
-        $this->assertEquals('', $app['security.last_error']($client->getRequest()));
-        $client->getRequest()->getSession()->save();
-        $this->assertEquals(302, $client->getResponse()->getStatusCode());
-        $this->assertEquals('http://localhost/admin', $client->getResponse()->getTargetUrl());
-
-        $client->request('get', '/');
-        $this->assertEquals('adminAUTHENTICATEDADMIN', $client->getResponse()->getContent());
-        $client->request('get', '/admin');
-        $this->assertEquals('admin', $client->getResponse()->getContent());
-    }
-
-    public function testHttpAuthentication()
-    {
-        $app = $this->createApplication('http');
-
-        $client = new Client($app);
-
-        $client->request('get', '/');
-        $this->assertEquals(401, $client->getResponse()->getStatusCode());
-        $this->assertEquals('Basic realm="Secured"', $client->getResponse()->headers->get('www-authenticate'));
-
-        $client->request('get', '/', [], [], ['PHP_AUTH_USER' => 'dennis', 'PHP_AUTH_PW' => 'foo']);
-        $this->assertEquals('dennisAUTHENTICATED', $client->getResponse()->getContent());
-        $client->request('get', '/admin');
-        $this->assertEquals(403, $client->getResponse()->getStatusCode());
-
-        $client->restart();
-
-        $client->request('get', '/');
-        $this->assertEquals(401, $client->getResponse()->getStatusCode());
-        $this->assertEquals('Basic realm="Secured"', $client->getResponse()->headers->get('www-authenticate'));
-
-        $client->request('get', '/', [], [], ['PHP_AUTH_USER' => 'admin', 'PHP_AUTH_PW' => 'foo']);
-        $this->assertEquals('adminAUTHENTICATEDADMIN', $client->getResponse()->getContent());
-        $client->request('get', '/admin');
-        $this->assertEquals('admin', $client->getResponse()->getContent());
-    }
-
-    public function testGuardAuthentication()
-    {
-        $app = $this->createApplication('guard');
-
-        $client = new Client($app);
-
-        $client->request('get', '/');
-        $this->assertEquals(401, $client->getResponse()->getStatusCode(), 'The entry point is configured');
-        $this->assertEquals('{"message":"Authentication Required"}', $client->getResponse()->getContent());
-
-        $client->request('get', '/', [], [], ['HTTP_X_AUTH_TOKEN' => 'lili:not the secret']);
-        $this->assertEquals(403, $client->getResponse()->getStatusCode(), 'User not found');
-        $this->assertEquals('{"message":"Username could not be found."}', $client->getResponse()->getContent());
-
-        $client->request('get', '/', [], [], ['HTTP_X_AUTH_TOKEN' => 'victoria:not the secret']);
-        $this->assertEquals(403, $client->getResponse()->getStatusCode(), 'Invalid credentials');
-        $this->assertEquals('{"message":"Invalid credentials."}', $client->getResponse()->getContent());
-
-        $client->request('get', '/', [], [], ['HTTP_X_AUTH_TOKEN' => 'victoria:victoriasecret']);
-        $this->assertEquals('victoria', $client->getResponse()->getContent());
-    }
-
-    public function testUserPasswordValidatorIsRegistered()
-    {
-        $app = new Application();
-
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'admin' => [
-                    'pattern' => '^/admin',
-                    'http' => true,
-                    'users' => [
-                        'admin' => ['ROLE_ADMIN', '513aeb0121909'],
-                    ],
-                ],
-            ],
-        ]);
-        $app->register(new ValidatorServiceProvider());
-
-        $app->boot();
-
-        $this->assertInstanceOf('Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator', $app['security.validator.user_password_validator']);
-    }
-
-    public function testExposedExceptions()
-    {
-        $app = $this->createApplication('form');
-        $app['security.hide_user_not_found'] = false;
-
-        $client = new Client($app);
-
-        $client->request('get', '/');
-        $this->assertEquals('ANONYMOUS', $client->getResponse()->getContent());
-
-        $client->request('post', '/login_check', ['_username' => 'fabien', '_password' => 'bar']);
-        $this->assertEquals('The presented password is invalid.', $app['security.last_error']($client->getRequest()));
-        $client->getRequest()->getSession()->save();
-
-        $client->request('post', '/login_check', ['_username' => 'unknown', '_password' => 'bar']);
-        $this->assertEquals('Username "unknown" does not exist.', $app['security.last_error']($client->getRequest()));
-        $client->getRequest()->getSession()->save();
-
-        $client->request('post', '/login_check', ['_username' => 'unknown', '_password' => 'bar']);
-        $app['request_stack']->push($client->getRequest());
-        $authenticationException = $app['security.authentication_utils']->getLastAuthenticationError();
-        $this->assertInstanceOf(AuthenticationException::class, $authenticationException);
-        $this->assertEquals('Username "unknown" does not exist.', $authenticationException->getMessage());
-        $client->getRequest()->getSession()->save();
-    }
-
-    public function testFakeRoutesAreSerializable()
-    {
-        $app = new Application();
-
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'admin' => [
-                    'logout' => true,
-                ],
-            ],
-        ]);
-
-        $app->boot();
-        $app->flush();
-
-        $this->assertCount(1, unserialize(serialize($app['routes'])));
-    }
-
-    public function testFirewallWithMethod()
-    {
-        $app = new Application();
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'default' => [
-                    'pattern' => '/',
-                    'http' => true,
-                    'methods' => ['POST'],
-                ],
-            ],
-        ]);
-        $app->match('/', function () { return 'foo'; })
-        ->method('POST|GET');
-
-        $request = Request::create('/', 'GET');
-        $response = $app->handle($request);
-        $this->assertEquals(200, $response->getStatusCode());
-
-        $request = Request::create('/', 'POST');
-        $response = $app->handle($request);
-        $this->assertEquals(401, $response->getStatusCode());
-    }
-
-    public function testFirewallWithHost()
-    {
-        $app = new Application();
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'default' => [
-                    'pattern' => '/',
-                    'http' => true,
-                    'hosts' => 'localhost2',
-                ],
-            ],
-        ]);
-        $app->get('/', function () { return 'foo'; })
-        ->host('localhost2');
-
-        $app->get('/', function () { return 'foo'; })
-        ->host('localhost1');
-
-        $request = Request::create('http://localhost2/');
-        $response = $app->handle($request);
-        $this->assertEquals(401, $response->getStatusCode());
-
-        $request = Request::create('http://localhost1/');
-        $response = $app->handle($request);
-        $this->assertEquals(200, $response->getStatusCode());
-    }
-
-    public function testUser()
-    {
-        $app = new Application();
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'default' => [
-                    'http' => true,
-                    'users' => [
-                        'fabien' => ['ROLE_ADMIN', '$2y$15$lzUNsTegNXvZW3qtfucV0erYBcEqWVeyOmjolB7R1uodsAVJ95vvu'],
-                    ],
-                ],
-            ],
-        ]);
-        $app->get('/', function () { return 'foo'; });
-
-        $request = Request::create('/');
-        $app->handle($request);
-        $this->assertNull($app['user']);
-
-        $request->headers->set('PHP_AUTH_USER', 'fabien');
-        $request->headers->set('PHP_AUTH_PW', 'foo');
-        $app->handle($request);
-        $this->assertInstanceOf('Symfony\Component\Security\Core\User\UserInterface', $app['user']);
-        $this->assertEquals('fabien', $app['user']->getUsername());
-    }
-
-    public function testUserAsServiceString()
-    {
-        $users = [
-            'fabien' => ['ROLE_ADMIN', '$2y$15$lzUNsTegNXvZW3qtfucV0erYBcEqWVeyOmjolB7R1uodsAVJ95vvu'],
-        ];
-
-        $app = new Application();
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'default' => [
-                    'http' => true,
-                    'users' => 'my_user_provider',
-                ],
-            ],
-        ]);
-        $app['my_user_provider'] = $app['security.user_provider.inmemory._proto']($users);
-        $app->get('/', function () { return 'foo'; });
-
-        $request = Request::create('/');
-        $app->handle($request);
-        $this->assertNull($app['user']);
-        $this->assertSame($app['my_user_provider'], $app['security.user_provider.default']);
-
-        $request->headers->set('PHP_AUTH_USER', 'fabien');
-        $request->headers->set('PHP_AUTH_PW', 'foo');
-        $app->handle($request);
-        $this->assertInstanceOf('Symfony\Component\Security\Core\User\UserInterface', $app['user']);
-        $this->assertEquals('fabien', $app['user']->getUsername());
-    }
-
-    public function testUserWithNoToken()
-    {
-        $app = new Application();
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'default' => [
-                    'http' => true,
-                ],
-            ],
-        ]);
-
-        $request = Request::create('/');
-
-        $app->get('/', function () { return 'foo'; });
-        $app->handle($request);
-        $this->assertNull($app['user']);
-    }
-
-    public function testUserWithInvalidUser()
-    {
-        $app = new Application();
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'default' => [
-                    'http' => true,
-                ],
-            ],
-        ]);
-
-        $request = Request::create('/');
-        $app->boot();
-        $app['security.token_storage']->setToken(new UsernamePasswordToken('foo', 'foo', 'foo'));
-
-        $app->get('/', function () { return 'foo'; });
-        $app->handle($request);
-        $this->assertNull($app['user']);
-    }
-
-    public function testAccessRulePathArray()
-    {
-        $app = new Application();
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'default' => [
-                    'http' => true,
-                ],
-            ],
-            'security.access_rules' => [
-                [[
-                    'path' => '^/admin',
-                ], 'ROLE_ADMIN'],
-            ],
-        ]);
-
-        $request = Request::create('/admin');
-        $app->boot();
-        $accessMap = $app['security.access_map'];
-        $this->assertEquals($accessMap->getPatterns($request), [
-            ['ROLE_ADMIN'],
-            '',
-        ]);
-    }
-
-    public function createApplication($authenticationMethod = 'form')
-    {
-        $app = new Application();
-        $app->register(new SessionServiceProvider());
-
-        $app = call_user_func([$this, 'add'.ucfirst($authenticationMethod).'Authentication'], $app);
-
-        $app['session.test'] = true;
-
-        return $app;
-    }
-
-    private function addFormAuthentication($app)
-    {
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'login' => [
-                    'pattern' => '^/login$',
-                ],
-                'default' => [
-                    'pattern' => '^.*$',
-                    'anonymous' => true,
-                    'form' => [
-                        'require_previous_session' => false,
-                    ],
-                    'logout' => true,
-                    'users' => [
-                        // password is foo
-                        'fabien' => ['ROLE_USER', '$2y$15$lzUNsTegNXvZW3qtfucV0erYBcEqWVeyOmjolB7R1uodsAVJ95vvu'],
-                        'admin' => ['ROLE_ADMIN', '$2y$15$lzUNsTegNXvZW3qtfucV0erYBcEqWVeyOmjolB7R1uodsAVJ95vvu'],
-                    ],
-                ],
-            ],
-            'security.access_rules' => [
-                ['^/admin', 'ROLE_ADMIN'],
-            ],
-            'security.role_hierarchy' => [
-                'ROLE_ADMIN' => ['ROLE_USER'],
-            ],
-        ]);
-
-        $app->get('/login', function (Request $request) use ($app) {
-            $app['session']->start();
-
-            return $app['security.last_error']($request);
-        });
-
-        $app->get('/', function () use ($app) {
-            $user = $app['security.token_storage']->getToken()->getUser();
-
-            $content = is_object($user) ? $user->getUsername() : 'ANONYMOUS';
-
-            if ($app['security.authorization_checker']->isGranted('IS_AUTHENTICATED_FULLY')) {
-                $content .= 'AUTHENTICATED';
-            }
-
-            if ($app['security.authorization_checker']->isGranted('ROLE_ADMIN')) {
-                $content .= 'ADMIN';
-            }
-
-            return $content;
-        });
-
-        $app->get('/admin', function () use ($app) {
-            return 'admin';
-        });
-
-        return $app;
-    }
-
-    private function addHttpAuthentication($app)
-    {
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'http-auth' => [
-                    'pattern' => '^.*$',
-                    'http' => true,
-                    'users' => [
-                        // password is foo
-                        'dennis' => ['ROLE_USER', '$2y$15$lzUNsTegNXvZW3qtfucV0erYBcEqWVeyOmjolB7R1uodsAVJ95vvu'],
-                        'admin' => ['ROLE_ADMIN', '$2y$15$lzUNsTegNXvZW3qtfucV0erYBcEqWVeyOmjolB7R1uodsAVJ95vvu'],
-                    ],
-                ],
-            ],
-            'security.access_rules' => [
-                ['^/admin', 'ROLE_ADMIN'],
-            ],
-            'security.role_hierarchy' => [
-                'ROLE_ADMIN' => ['ROLE_USER'],
-            ],
-        ]);
-
-        $app->get('/', function () use ($app) {
-            $user = $app['security.token_storage']->getToken()->getUser();
-            $content = is_object($user) ? $user->getUsername() : 'ANONYMOUS';
-
-            if ($app['security.authorization_checker']->isGranted('IS_AUTHENTICATED_FULLY')) {
-                $content .= 'AUTHENTICATED';
-            }
-
-            if ($app['security.authorization_checker']->isGranted('ROLE_ADMIN')) {
-                $content .= 'ADMIN';
-            }
-
-            return $content;
-        });
-
-        $app->get('/admin', function () use ($app) {
-            return 'admin';
-        });
-
-        return $app;
-    }
-
-    private function addGuardAuthentication($app)
-    {
-        $app['app.authenticator.token'] = function ($app) {
-            return new SecurityServiceProviderTest\TokenAuthenticator($app);
-        };
-
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'guard' => [
-                    'pattern' => '^.*$',
-                    'form' => true,
-                    'guard' => [
-                        'authenticators' => [
-                            'app.authenticator.token',
-                        ],
-                    ],
-                    'users' => [
-                        'victoria' => ['ROLE_USER', 'victoriasecret'],
-                    ],
-                ],
-            ],
-        ]);
-
-        $app->get('/', function () use ($app) {
-            $user = $app['security.token_storage']->getToken()->getUser();
-
-            $content = is_object($user) ? $user->getUsername() : 'ANONYMOUS';
-
-            return $content;
-        })->bind('homepage');
-
-        return $app;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/SecurityServiceProviderTest/TokenAuthenticator.php b/vendor/silex/silex/tests/Silex/Tests/Provider/SecurityServiceProviderTest/TokenAuthenticator.php
deleted file mode 100644
index 75bb54bd9b3738fefed8d7c855315c785fb20426..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/SecurityServiceProviderTest/TokenAuthenticator.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider\SecurityServiceProviderTest;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\JsonResponse;
-use Symfony\Component\Security\Core\User\UserInterface;
-use Symfony\Component\Security\Core\User\UserProviderInterface;
-use Symfony\Component\Security\Guard\AbstractGuardAuthenticator;
-use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
-use Symfony\Component\Security\Core\Exception\AuthenticationException;
-
-/**
- * This class is used to test "guard" authentication with the SecurityServiceProvider.
- */
-class TokenAuthenticator extends AbstractGuardAuthenticator
-{
-    public function getCredentials(Request $request)
-    {
-        if (!$token = $request->headers->get('X-AUTH-TOKEN')) {
-            return false;
-        }
-
-        list($username, $secret) = explode(':', $token);
-
-        return [
-            'username' => $username,
-            'secret' => $secret,
-        ];
-    }
-
-    public function supports(Request $request)
-    {
-        return !empty($request->headers->get('X-AUTH-TOKEN'));
-    }
-
-    public function getUser($credentials, UserProviderInterface $userProvider)
-    {
-        return $userProvider->loadUserByUsername($credentials['username']);
-    }
-
-    public function checkCredentials($credentials, UserInterface $user)
-    {
-        // This is not a safe way of validating a password.
-        return $user->getPassword() === $credentials['secret'];
-    }
-
-    public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
-    {
-        return;
-    }
-
-    public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
-    {
-        $data = [
-            'message' => strtr($exception->getMessageKey(), $exception->getMessageData()),
-        ];
-
-        return new JsonResponse($data, 403);
-    }
-
-    public function start(Request $request, AuthenticationException $authException = null)
-    {
-        $data = [
-            'message' => 'Authentication Required',
-        ];
-
-        return new JsonResponse($data, 401);
-    }
-
-    public function supportsRememberMe()
-    {
-        return false;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/SerializerServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/SerializerServiceProviderTest.php
deleted file mode 100644
index c33cea7b01af9b69c0e0a2a478cce3272a1ffb8b..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/SerializerServiceProviderTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Provider\SerializerServiceProvider;
-
-/**
- * SerializerServiceProvider test cases.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SerializerServiceProviderTest extends TestCase
-{
-    public function testRegister()
-    {
-        $app = new Application();
-
-        $app->register(new SerializerServiceProvider());
-
-        $this->assertInstanceOf("Symfony\Component\Serializer\Serializer", $app['serializer']);
-        $this->assertTrue($app['serializer']->supportsEncoding('xml'));
-        $this->assertTrue($app['serializer']->supportsEncoding('json'));
-        $this->assertTrue($app['serializer']->supportsDecoding('xml'));
-        $this->assertTrue($app['serializer']->supportsDecoding('json'));
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/SessionServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/SessionServiceProviderTest.php
deleted file mode 100644
index 9c1e342b739d885b6b56ed2017d3bc8ad502f234..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/SessionServiceProviderTest.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use Silex\Application;
-use Silex\WebTestCase;
-use Silex\Provider\SessionServiceProvider;
-use Symfony\Component\HttpKernel\Client;
-use Symfony\Component\HttpFoundation\Session;
-
-/**
- * SessionProvider test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SessionServiceProviderTest extends WebTestCase
-{
-    public function testRegister()
-    {
-        $client = $this->createClient();
-
-        $client->request('get', '/login');
-        $this->assertEquals('Logged in successfully.', $client->getResponse()->getContent());
-
-        $client->request('get', '/account');
-        $this->assertEquals('This is your account.', $client->getResponse()->getContent());
-
-        $client->request('get', '/logout');
-        $this->assertEquals('Logged out successfully.', $client->getResponse()->getContent());
-
-        $client->request('get', '/account');
-        $this->assertEquals('You are not logged in.', $client->getResponse()->getContent());
-    }
-
-    public function createApplication()
-    {
-        $app = new Application();
-
-        $app->register(new SessionServiceProvider(), [
-            'session.test' => true,
-        ]);
-
-        $app->get('/login', function () use ($app) {
-            $app['session']->set('logged_in', true);
-
-            return 'Logged in successfully.';
-        });
-
-        $app->get('/account', function () use ($app) {
-            if (!$app['session']->get('logged_in')) {
-                return 'You are not logged in.';
-            }
-
-            return 'This is your account.';
-        });
-
-        $app->get('/logout', function () use ($app) {
-            $app['session']->invalidate();
-
-            return 'Logged out successfully.';
-        });
-
-        return $app;
-    }
-
-    public function testWithRoutesThatDoesNotUseSession()
-    {
-        $app = new Application();
-
-        $app->register(new SessionServiceProvider(), [
-            'session.test' => true,
-        ]);
-
-        $app->get('/', function () {
-            return 'A welcome page.';
-        });
-
-        $app->get('/robots.txt', function () {
-            return 'Informations for robots.';
-        });
-
-        $app['debug'] = true;
-        unset($app['exception_handler']);
-
-        $client = new Client($app);
-
-        $client->request('get', '/');
-        $this->assertEquals('A welcome page.', $client->getResponse()->getContent());
-
-        $client->request('get', '/robots.txt');
-        $this->assertEquals('Informations for robots.', $client->getResponse()->getContent());
-    }
-
-    public function testSessionRegister()
-    {
-        $app = new Application();
-
-        $attrs = new Session\Attribute\AttributeBag();
-        $flash = new Session\Flash\FlashBag();
-        $app->register(new SessionServiceProvider(), [
-            'session.attribute_bag' => $attrs,
-            'session.flash_bag' => $flash,
-            'session.test' => true,
-        ]);
-
-        $session = $app['session'];
-
-        $this->assertSame($flash, $session->getBag('flashes'));
-        $this->assertSame($attrs, $session->getBag('attributes'));
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/SpoolStub.php b/vendor/silex/silex/tests/Silex/Tests/Provider/SpoolStub.php
deleted file mode 100644
index 753e5974eb56aa73247e356f87cb723074bf737b..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/SpoolStub.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-class SpoolStub implements \Swift_Spool
-{
-    private $messages = [];
-    public $hasFlushed = false;
-
-    public function getMessages()
-    {
-        return $this->messages;
-    }
-
-    public function start()
-    {
-    }
-
-    public function stop()
-    {
-    }
-
-    public function isStarted()
-    {
-        return count($this->messages) > 0;
-    }
-
-    public function queueMessage(\Swift_Mime_Message $message)
-    {
-        $this->messages[] = clone $message;
-    }
-
-    public function flushQueue(\Swift_Transport $transport, &$failedRecipients = null)
-    {
-        $this->hasFlushed = true;
-        $this->messages = [];
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/SwiftmailerServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/SwiftmailerServiceProviderTest.php
deleted file mode 100644
index 3dbf6b0cbe08c8d1d18df183fdaeff30d4402b09..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/SwiftmailerServiceProviderTest.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Provider\SwiftmailerServiceProvider;
-use Symfony\Component\HttpFoundation\Request;
-
-class SwiftmailerServiceProviderTest extends TestCase
-{
-    public function testSwiftMailerServiceIsSwiftMailer()
-    {
-        $app = new Application();
-
-        $app->register(new SwiftmailerServiceProvider());
-        $app->boot();
-
-        $this->assertInstanceOf('Swift_Mailer', $app['mailer']);
-    }
-
-    public function testSwiftMailerIgnoresSpoolIfDisabled()
-    {
-        $app = new Application();
-
-        $app->register(new SwiftmailerServiceProvider());
-        $app->boot();
-
-        $app['swiftmailer.use_spool'] = false;
-
-        $app['swiftmailer.spooltransport'] = function () {
-            throw new \Exception('Should not be instantiated');
-        };
-
-        $this->assertInstanceOf('Swift_Mailer', $app['mailer']);
-    }
-
-    public function testSwiftMailerSendsMailsOnFinish()
-    {
-        $app = new Application();
-
-        $app->register(new SwiftmailerServiceProvider());
-        $app->boot();
-
-        $app['swiftmailer.spool'] = function () {
-            return new SpoolStub();
-        };
-
-        $app->get('/', function () use ($app) {
-            $app['mailer']->send(\Swift_Message::newInstance());
-        });
-
-        $this->assertCount(0, $app['swiftmailer.spool']->getMessages());
-
-        $request = Request::create('/');
-        $response = $app->handle($request);
-        $this->assertCount(1, $app['swiftmailer.spool']->getMessages());
-
-        $app->terminate($request, $response);
-        $this->assertTrue($app['swiftmailer.spool']->hasFlushed);
-        $this->assertCount(0, $app['swiftmailer.spool']->getMessages());
-    }
-
-    public function testSwiftMailerAvoidsFlushesIfMailerIsUnused()
-    {
-        $app = new Application();
-
-        $app->register(new SwiftmailerServiceProvider());
-        $app->boot();
-
-        $app['swiftmailer.spool'] = function () {
-            return new SpoolStub();
-        };
-
-        $app->get('/', function () use ($app) { });
-
-        $request = Request::create('/');
-        $response = $app->handle($request);
-        $this->assertCount(0, $app['swiftmailer.spool']->getMessages());
-
-        $app->terminate($request, $response);
-        $this->assertFalse($app['swiftmailer.spool']->hasFlushed);
-    }
-
-    public function testSwiftMailerSenderAddress()
-    {
-        $app = new Application();
-
-        $app->register(new SwiftmailerServiceProvider());
-        $app->boot();
-
-        $app['swiftmailer.spool'] = function () {
-            return new SpoolStub();
-        };
-
-        $app['swiftmailer.sender_address'] = 'foo@example.com';
-
-        $app['mailer']->send(\Swift_Message::newInstance());
-
-        $messages = $app['swiftmailer.spool']->getMessages();
-        $this->assertCount(1, $messages);
-
-        list($message) = $messages;
-        $this->assertEquals('foo@example.com', $message->getReturnPath());
-    }
-
-    public function testSwiftMailerPlugins()
-    {
-        $plugin = $this->getMockBuilder('Swift_Events_TransportChangeListener')->getMock();
-        $plugin->expects($this->once())->method('beforeTransportStarted');
-
-        $app = new Application();
-        $app->boot();
-
-        $app->register(new SwiftmailerServiceProvider());
-
-        $app['swiftmailer.plugins'] = function ($app) use ($plugin) {
-            return [$plugin];
-        };
-
-        $dispatcher = $app['swiftmailer.transport.eventdispatcher'];
-        $event = $dispatcher->createTransportChangeEvent(new \Swift_Transport_NullTransport($dispatcher));
-        $dispatcher->dispatchEvent($event, 'beforeTransportStarted');
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/TranslationServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/TranslationServiceProviderTest.php
deleted file mode 100644
index 5c942a4d3a06453bd704a2b231a1448e65ed4055..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/TranslationServiceProviderTest.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Provider\TranslationServiceProvider;
-use Silex\Provider\LocaleServiceProvider;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * TranslationProvider test cases.
- *
- * @author Daniel Tschinder <daniel@tschinder.de>
- */
-class TranslationServiceProviderTest extends TestCase
-{
-    /**
-     * @return Application
-     */
-    protected function getPreparedApp()
-    {
-        $app = new Application();
-
-        $app->register(new LocaleServiceProvider());
-        $app->register(new TranslationServiceProvider());
-        $app['translator.domains'] = [
-            'messages' => [
-                'en' => [
-                    'key1' => 'The translation',
-                    'key_only_english' => 'Foo',
-                    'key2' => 'One apple|%count% apples',
-                    'test' => [
-                        'key' => 'It works',
-                    ],
-                ],
-                'de' => [
-                    'key1' => 'The german translation',
-                    'key2' => 'One german apple|%count% german apples',
-                    'test' => [
-                        'key' => 'It works in german',
-                    ],
-                ],
-            ],
-        ];
-
-        return $app;
-    }
-
-    public function transChoiceProvider()
-    {
-        return [
-            ['key2', 0, null, '0 apples'],
-            ['key2', 1, null, 'One apple'],
-            ['key2', 2, null, '2 apples'],
-            ['key2', 0, 'de', '0 german apples'],
-            ['key2', 1, 'de', 'One german apple'],
-            ['key2', 2, 'de', '2 german apples'],
-            ['key2', 0, 'ru', '0 apples'], // fallback
-            ['key2', 1, 'ru', 'One apple'], // fallback
-            ['key2', 2, 'ru', '2 apples'], // fallback
-        ];
-    }
-
-    public function transProvider()
-    {
-        return [
-            ['key1', null, 'The translation'],
-            ['key1', 'de', 'The german translation'],
-            ['key1', 'ru', 'The translation'], // fallback
-            ['test.key', null, 'It works'],
-            ['test.key', 'de', 'It works in german'],
-            ['test.key', 'ru', 'It works'], // fallback
-        ];
-    }
-
-    /**
-     * @dataProvider transProvider
-     */
-    public function testTransForDefaultLanguage($key, $locale, $expected)
-    {
-        $app = $this->getPreparedApp();
-
-        $result = $app['translator']->trans($key, [], null, $locale);
-
-        $this->assertEquals($expected, $result);
-    }
-
-    /**
-     * @dataProvider transChoiceProvider
-     */
-    public function testTransChoiceForDefaultLanguage($key, $number, $locale, $expected)
-    {
-        $app = $this->getPreparedApp();
-
-        $result = $app['translator']->transChoice($key, $number, ['%count%' => $number], null, $locale);
-        $this->assertEquals($expected, $result);
-    }
-
-    public function testFallbacks()
-    {
-        $app = $this->getPreparedApp();
-        $app['locale_fallbacks'] = ['de', 'en'];
-
-        // fallback to english
-        $result = $app['translator']->trans('key_only_english', [], null, 'ru');
-        $this->assertEquals('Foo', $result);
-
-        // fallback to german
-        $result = $app['translator']->trans('key1', [], null, 'ru');
-        $this->assertEquals('The german translation', $result);
-    }
-
-    public function testLocale()
-    {
-        $app = $this->getPreparedApp();
-        $app->get('/', function () use ($app) { return $app['translator']->getLocale(); });
-        $response = $app->handle(Request::create('/'));
-        $this->assertEquals('en', $response->getContent());
-
-        $app = $this->getPreparedApp();
-        $app->get('/', function () use ($app) { return $app['translator']->getLocale(); });
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $response = $app->handle($request);
-        $this->assertEquals('fr', $response->getContent());
-
-        $app = $this->getPreparedApp();
-        $app->get('/{_locale}', function () use ($app) { return $app['translator']->getLocale(); });
-        $response = $app->handle(Request::create('/es'));
-        $this->assertEquals('es', $response->getContent());
-    }
-
-    public function testLocaleInSubRequests()
-    {
-        $app = $this->getPreparedApp();
-        $app->get('/embed/{_locale}', function () use ($app) { return $app['translator']->getLocale(); });
-        $app->get('/{_locale}', function () use ($app) {
-            return $app['translator']->getLocale().
-                   $app->handle(Request::create('/embed/es'), HttpKernelInterface::SUB_REQUEST)->getContent().
-                   $app['translator']->getLocale();
-        });
-        $response = $app->handle(Request::create('/fr'));
-        $this->assertEquals('fresfr', $response->getContent());
-
-        $app = $this->getPreparedApp();
-        $app->get('/embed', function () use ($app) { return $app['translator']->getLocale(); });
-        $app->get('/{_locale}', function () use ($app) {
-            return $app['translator']->getLocale().
-                   $app->handle(Request::create('/embed'), HttpKernelInterface::SUB_REQUEST)->getContent().
-                   $app['translator']->getLocale();
-        });
-        $response = $app->handle(Request::create('/fr'));
-        // locale in sub-request must be "en" as this is the value if the sub-request is converted to an ESI
-        $this->assertEquals('frenfr', $response->getContent());
-    }
-
-    public function testLocaleWithBefore()
-    {
-        $app = $this->getPreparedApp();
-        $app->before(function (Request $request) { $request->setLocale('fr'); }, Application::EARLY_EVENT);
-        $app->get('/embed', function () use ($app) { return $app['translator']->getLocale(); });
-        $app->get('/', function () use ($app) {
-            return $app['translator']->getLocale().
-                $app->handle(Request::create('/embed'), HttpKernelInterface::SUB_REQUEST)->getContent().
-                $app['translator']->getLocale();
-        });
-        $response = $app->handle(Request::create('/'));
-        // locale in sub-request is "en" as the before filter is only executed for the main request
-        $this->assertEquals('frenfr', $response->getContent());
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/TwigServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/TwigServiceProviderTest.php
deleted file mode 100644
index 852dcebe4e57535431a56eb9c0d6c5a3a16eb5ca..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/TwigServiceProviderTest.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use Fig\Link\Link;
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Provider\CsrfServiceProvider;
-use Silex\Provider\FormServiceProvider;
-use Silex\Provider\TwigServiceProvider;
-use Silex\Provider\AssetServiceProvider;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * TwigProvider test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class TwigServiceProviderTest extends TestCase
-{
-    public function testRegisterAndRender()
-    {
-        $app = new Application();
-
-        $app->register(new TwigServiceProvider(), [
-            'twig.templates' => ['hello' => 'Hello {{ name }}!'],
-        ]);
-
-        $app->get('/hello/{name}', function ($name) use ($app) {
-            return $app['twig']->render('hello', ['name' => $name]);
-        });
-
-        $request = Request::create('/hello/john');
-        $response = $app->handle($request);
-        $this->assertEquals('Hello john!', $response->getContent());
-    }
-
-    public function testLoaderPriority()
-    {
-        $app = new Application();
-        $app->register(new TwigServiceProvider(), [
-            'twig.templates' => ['foo' => 'foo'],
-        ]);
-        $loader = $this->getMockBuilder('\Twig_LoaderInterface')->getMock();
-        if (method_exists('\Twig_LoaderInterface', 'getSourceContext')) {
-            $loader->expects($this->never())->method('getSourceContext');
-        }
-        $app['twig.loader.filesystem'] = function ($app) use ($loader) {
-            return $loader;
-        };
-        $this->assertEquals('foo', $app['twig.loader']->getSourceContext('foo')->getCode());
-    }
-
-    public function testHttpFoundationIntegration()
-    {
-        $app = new Application();
-        $app['request_stack']->push(Request::create('/dir1/dir2/file'));
-        $app->register(new TwigServiceProvider(), [
-            'twig.templates' => [
-                'absolute' => '{{ absolute_url("foo.css") }}',
-                'relative' => '{{ relative_path("/dir1/foo.css") }}',
-            ],
-        ]);
-
-        $this->assertEquals('http://localhost/dir1/dir2/foo.css', $app['twig']->render('absolute'));
-        $this->assertEquals('../foo.css', $app['twig']->render('relative'));
-    }
-
-    public function testAssetIntegration()
-    {
-        $app = new Application();
-        $app->register(new TwigServiceProvider(), [
-            'twig.templates' => ['hello' => '{{ asset("/foo.css") }}'],
-        ]);
-        $app->register(new AssetServiceProvider(), [
-            'assets.version' => 1,
-        ]);
-
-        $this->assertEquals('/foo.css?1', $app['twig']->render('hello'));
-    }
-
-    public function testGlobalVariable()
-    {
-        $app = new Application();
-        $app['request_stack']->push(Request::create('/?name=Fabien'));
-
-        $app->register(new TwigServiceProvider(), [
-            'twig.templates' => ['hello' => '{{ global.request.get("name") }}'],
-        ]);
-
-        $this->assertEquals('Fabien', $app['twig']->render('hello'));
-    }
-
-    public function testFormFactory()
-    {
-        $app = new Application();
-        $app->register(new FormServiceProvider());
-        $app->register(new CsrfServiceProvider());
-        $app->register(new TwigServiceProvider());
-
-        $this->assertInstanceOf('Twig_Environment', $app['twig']);
-        $this->assertInstanceOf('Symfony\Bridge\Twig\Form\TwigRendererEngine', $app['twig.form.engine']);
-        $this->assertInstanceOf('Symfony\Component\Form\FormRenderer', $app['twig.form.renderer']);
-    }
-
-    public function testFormWithoutCsrf()
-    {
-        $app = new Application();
-        $app->register(new FormServiceProvider());
-        $app->register(new TwigServiceProvider());
-
-        $this->assertInstanceOf('Twig_Environment', $app['twig']);
-    }
-
-    public function testFormatParameters()
-    {
-        $app = new Application();
-
-        $timezone = new \DateTimeZone('Europe/Paris');
-
-        $app->register(new TwigServiceProvider(), [
-            'twig.date.format' => 'Y-m-d',
-            'twig.date.interval_format' => '%h hours',
-            'twig.date.timezone' => $timezone,
-            'twig.number_format.decimals' => 2,
-            'twig.number_format.decimal_point' => ',',
-            'twig.number_format.thousands_separator' => ' ',
-        ]);
-
-        $twig = $app['twig'];
-
-        $this->assertSame(['Y-m-d', '%h hours'], $twig->getExtension('Twig_Extension_Core')->getDateFormat());
-        $this->assertSame($timezone, $twig->getExtension('Twig_Extension_Core')->getTimezone());
-        $this->assertSame([2, ',', ' '], $twig->getExtension('Twig_Extension_Core')->getNumberFormat());
-    }
-
-    public function testWebLinkIntegration()
-    {
-        $app = new Application();
-        $app['request_stack']->push($request = Request::create('/'));
-        $app->register(new TwigServiceProvider(), [
-            'twig.templates' => [
-                'preload' => '{{ preload("/foo.css") }}',
-            ],
-        ]);
-
-        $this->assertEquals('/foo.css', $app['twig']->render('preload'));
-
-        $link = new Link('preload', '/foo.css');
-        $this->assertEquals([$link], array_values($request->attributes->get('_links')->getLinks()));
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/ValidatorServiceProviderTest.php b/vendor/silex/silex/tests/Silex/Tests/Provider/ValidatorServiceProviderTest.php
deleted file mode 100644
index 832abb3c56a3f835134c2b72e2fcb739b3dfe996..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/ValidatorServiceProviderTest.php
+++ /dev/null
@@ -1,206 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Provider\TranslationServiceProvider;
-use Silex\Provider\ValidatorServiceProvider;
-use Silex\Provider\FormServiceProvider;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Validator\Constraints as Assert;
-use Silex\Tests\Provider\ValidatorServiceProviderTest\Constraint\Custom;
-use Silex\Tests\Provider\ValidatorServiceProviderTest\Constraint\CustomValidator;
-use Symfony\Component\Validator\Validator\ValidatorInterface;
-
-/**
- * ValidatorServiceProvider.
- *
- * Javier Lopez <f12loalf@gmail.com>
- */
-class ValidatorServiceProviderTest extends TestCase
-{
-    public function testRegister()
-    {
-        $app = new Application();
-        $app->register(new ValidatorServiceProvider());
-        $app->register(new FormServiceProvider());
-
-        return $app;
-    }
-
-    public function testRegisterWithCustomValidators()
-    {
-        $app = new Application();
-
-        $app['custom.validator'] = function () {
-            return new CustomValidator();
-        };
-
-        $app->register(new ValidatorServiceProvider(), [
-            'validator.validator_service_ids' => [
-                'test.custom.validator' => 'custom.validator',
-            ],
-        ]);
-
-        return $app;
-    }
-
-    /**
-     * @depends testRegisterWithCustomValidators
-     */
-    public function testConstraintValidatorFactory($app)
-    {
-        $this->assertInstanceOf('Silex\Provider\Validator\ConstraintValidatorFactory', $app['validator.validator_factory']);
-
-        $validator = $app['validator.validator_factory']->getInstance(new Custom());
-        $this->assertInstanceOf('Silex\Tests\Provider\ValidatorServiceProviderTest\Constraint\CustomValidator', $validator);
-    }
-
-    /**
-     * @depends testRegister
-     */
-    public function testConstraintValidatorFactoryWithExpression($app)
-    {
-        $constraint = new Assert\Expression('true');
-        $validator = $app['validator.validator_factory']->getInstance($constraint);
-        $this->assertInstanceOf('Symfony\Component\Validator\Constraints\ExpressionValidator', $validator);
-    }
-
-    /**
-     * @depends testRegister
-     */
-    public function testValidatorServiceIsAValidator($app)
-    {
-        $this->assertTrue($app['validator'] instanceof ValidatorInterface);
-    }
-
-    /**
-     * @depends testRegister
-     * @dataProvider getTestValidatorConstraintProvider
-     */
-    public function testValidatorConstraint($email, $isValid, $nbGlobalError, $nbEmailError, $app)
-    {
-        $constraints = new Assert\Collection([
-            'email' => [
-                new Assert\NotBlank(),
-                new Assert\Email(),
-            ],
-        ]);
-
-        $builder = $app['form.factory']->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', [], [
-            'constraints' => $constraints,
-        ]);
-
-        $form = $builder
-            ->add('email', 'Symfony\Component\Form\Extension\Core\Type\EmailType', ['label' => 'Email'])
-            ->getForm()
-        ;
-
-        $form->submit(['email' => $email]);
-
-        $this->assertEquals($isValid, $form->isValid());
-        $this->assertCount($nbGlobalError, $form->getErrors());
-        $this->assertCount($nbEmailError, $form->offsetGet('email')->getErrors());
-    }
-
-    public function testValidatorWillNotAddNonexistentTranslationFiles()
-    {
-        $app = new Application([
-            'locale' => 'nonexistent',
-        ]);
-
-        $app->register(new ValidatorServiceProvider());
-        $app->register(new TranslationServiceProvider(), [
-            'locale_fallbacks' => [],
-        ]);
-
-        $app['validator'];
-        $translator = $app['translator'];
-
-        try {
-            $translator->trans('test');
-            $this->addToAssertionCount(1);
-        } catch (NotFoundResourceException $e) {
-            $this->fail('Validator should not add a translation resource that does not exist');
-        }
-    }
-
-    public function getTestValidatorConstraintProvider()
-    {
-        // Email, form is valid, nb global error, nb email error
-        return [
-            ['', false, 0, 1],
-            ['not an email', false, 0, 1],
-            ['email@sample.com', true, 0, 0],
-        ];
-    }
-
-    /**
-     * @dataProvider getAddResourceData
-     */
-    public function testAddResource($registerValidatorFirst)
-    {
-        $app = new Application();
-        $app['locale'] = 'fr';
-
-        $app->register(new ValidatorServiceProvider());
-        $app->register(new TranslationServiceProvider());
-        $app->extend('translator', function ($translator, $app) {
-            $translator->addResource('array', ['This value should not be blank.' => 'Pas vide'], 'fr', 'validators');
-
-            return $translator;
-        });
-
-        if ($registerValidatorFirst) {
-            $app['validator'];
-        }
-
-        $this->assertEquals('Pas vide', $app['translator']->trans('This value should not be blank.', [], 'validators', 'fr'));
-    }
-
-    public function getAddResourceData()
-    {
-        return [[false], [true]];
-    }
-
-    public function testAddResourceAlternate()
-    {
-        $app = new Application();
-        $app['locale'] = 'fr';
-
-        $app->register(new ValidatorServiceProvider());
-        $app->register(new TranslationServiceProvider());
-        $app->factory($app->extend('translator.resources', function ($resources, $app) {
-            $resources = array_merge($resources, [
-                ['array', ['This value should not be blank.' => 'Pas vide'], 'fr', 'validators'],
-            ]);
-
-            return $resources;
-        }));
-
-        $app['validator'];
-
-        $this->assertEquals('Pas vide', $app['translator']->trans('This value should not be blank.', [], 'validators', 'fr'));
-    }
-
-    public function testTranslatorResourcesIsArray()
-    {
-        $app = new Application();
-        $app['locale'] = 'fr';
-
-        $app->register(new ValidatorServiceProvider());
-        $app->register(new TranslationServiceProvider());
-
-        $this->assertInternalType('array', $app['translator.resources']);
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/ValidatorServiceProviderTest/Constraint/Custom.php b/vendor/silex/silex/tests/Silex/Tests/Provider/ValidatorServiceProviderTest/Constraint/Custom.php
deleted file mode 100644
index bef911aa7baca3c38acf6f5622e94fd852b40064..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/ValidatorServiceProviderTest/Constraint/Custom.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider\ValidatorServiceProviderTest\Constraint;
-
-use Symfony\Component\Validator\Constraint;
-
-/**
- * @author Alex Kalyvitis <alex.kalyvitis@gmail.com>
- */
-class Custom extends Constraint
-{
-    public $message = 'This field must be ...';
-    public $table;
-    public $field;
-
-    public function validatedBy()
-    {
-        return 'test.custom.validator';
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Provider/ValidatorServiceProviderTest/Constraint/CustomValidator.php b/vendor/silex/silex/tests/Silex/Tests/Provider/ValidatorServiceProviderTest/Constraint/CustomValidator.php
deleted file mode 100644
index 856927dba29992b38efb0b11540d77f16aa9ea6e..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Provider/ValidatorServiceProviderTest/Constraint/CustomValidator.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Provider\ValidatorServiceProviderTest\Constraint;
-
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-
-/**
- * @author Alex Kalyvitis <alex.kalyvitis@gmail.com>
- */
-class CustomValidator extends ConstraintValidator
-{
-    public function isValid($value, Constraint $constraint)
-    {
-        // Validate...
-        return true;
-    }
-
-    public function validate($value, Constraint $constraint)
-    {
-        return $this->isValid($value, $constraint);
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Route/SecurityRoute.php b/vendor/silex/silex/tests/Silex/Tests/Route/SecurityRoute.php
deleted file mode 100644
index 48237194b7c717b3755a46e52c7b601bbf5cf617..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Route/SecurityRoute.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Route;
-
-use Silex\Route;
-
-class SecurityRoute extends Route
-{
-    use Route\SecurityTrait;
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/Route/SecurityTraitTest.php b/vendor/silex/silex/tests/Silex/Tests/Route/SecurityTraitTest.php
deleted file mode 100644
index 1eebca4064757969780b9f64c835ed18da80dc43..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/Route/SecurityTraitTest.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests\Route;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Silex\Provider\SecurityServiceProvider;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * SecurityTrait test cases.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SecurityTraitTest extends TestCase
-{
-    public function testSecureWithNoAuthenticatedUser()
-    {
-        $app = $this->createApplication();
-
-        $app->get('/', function () { return 'foo'; })
-            ->secure('ROLE_ADMIN')
-        ;
-
-        $request = Request::create('/');
-        $response = $app->handle($request);
-        $this->assertEquals(401, $response->getStatusCode());
-    }
-
-    public function testSecureWithAuthorizedRoles()
-    {
-        $app = $this->createApplication();
-
-        $app->get('/', function () { return 'foo'; })
-            ->secure('ROLE_ADMIN')
-        ;
-
-        $request = Request::create('/');
-        $request->headers->set('PHP_AUTH_USER', 'fabien');
-        $request->headers->set('PHP_AUTH_PW', 'foo');
-        $response = $app->handle($request);
-        $this->assertEquals(200, $response->getStatusCode());
-    }
-
-    public function testSecureWithUnauthorizedRoles()
-    {
-        $app = $this->createApplication();
-
-        $app->get('/', function () { return 'foo'; })
-            ->secure('ROLE_SUPER_ADMIN')
-        ;
-
-        $request = Request::create('/');
-        $request->headers->set('PHP_AUTH_USER', 'fabien');
-        $request->headers->set('PHP_AUTH_PW', 'foo');
-        $response = $app->handle($request);
-        $this->assertEquals(403, $response->getStatusCode());
-    }
-
-    private function createApplication()
-    {
-        $app = new Application();
-        $app['route_class'] = 'Silex\Tests\Route\SecurityRoute';
-        $app->register(new SecurityServiceProvider(), [
-            'security.firewalls' => [
-                'default' => [
-                    'http' => true,
-                    'users' => [
-                        'fabien' => ['ROLE_ADMIN', '$2y$15$lzUNsTegNXvZW3qtfucV0erYBcEqWVeyOmjolB7R1uodsAVJ95vvu'],
-                    ],
-                ],
-            ],
-        ]);
-
-        return $app;
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/RouterTest.php b/vendor/silex/silex/tests/Silex/Tests/RouterTest.php
deleted file mode 100644
index 5cf8cce32a8fdf4640e6186b8b369a290782e2d9..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/RouterTest.php
+++ /dev/null
@@ -1,286 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-
-/**
- * Router test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class RouterTest extends TestCase
-{
-    public function testMapRouting()
-    {
-        $app = new Application();
-
-        $app->match('/foo', function () {
-            return 'foo';
-        });
-
-        $app->match('/bar', function () {
-            return 'bar';
-        });
-
-        $app->match('/', function () {
-            return 'root';
-        });
-
-        $this->checkRouteResponse($app, '/foo', 'foo');
-        $this->checkRouteResponse($app, '/bar', 'bar');
-        $this->checkRouteResponse($app, '/', 'root');
-    }
-
-    public function testStatusCode()
-    {
-        $app = new Application();
-
-        $app->put('/created', function () {
-            return new Response('', 201);
-        });
-
-        $app->match('/forbidden', function () {
-            return new Response('', 403);
-        });
-
-        $app->match('/not_found', function () {
-            return new Response('', 404);
-        });
-
-        $request = Request::create('/created', 'put');
-        $response = $app->handle($request);
-        $this->assertEquals(201, $response->getStatusCode());
-
-        $request = Request::create('/forbidden');
-        $response = $app->handle($request);
-        $this->assertEquals(403, $response->getStatusCode());
-
-        $request = Request::create('/not_found');
-        $response = $app->handle($request);
-        $this->assertEquals(404, $response->getStatusCode());
-    }
-
-    public function testRedirect()
-    {
-        $app = new Application();
-
-        $app->match('/redirect', function () {
-            return new RedirectResponse('/target');
-        });
-
-        $app->match('/redirect2', function () use ($app) {
-            return $app->redirect('/target2');
-        });
-
-        $request = Request::create('/redirect');
-        $response = $app->handle($request);
-        $this->assertTrue($response->isRedirect('/target'));
-
-        $request = Request::create('/redirect2');
-        $response = $app->handle($request);
-        $this->assertTrue($response->isRedirect('/target2'));
-    }
-
-    /**
-     * @expectedException \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
-     */
-    public function testMissingRoute()
-    {
-        $app = new Application();
-        unset($app['exception_handler']);
-
-        $request = Request::create('/baz');
-        $app->handle($request);
-    }
-
-    public function testMethodRouting()
-    {
-        $app = new Application();
-
-        $app->match('/foo', function () {
-            return 'foo';
-        });
-
-        $app->match('/bar', function () {
-            return 'bar';
-        })->method('GET|POST');
-
-        $app->get('/resource', function () {
-            return 'get resource';
-        });
-
-        $app->post('/resource', function () {
-            return 'post resource';
-        });
-
-        $app->put('/resource', function () {
-            return 'put resource';
-        });
-
-        $app->patch('/resource', function () {
-            return 'patch resource';
-        });
-
-        $app->delete('/resource', function () {
-            return 'delete resource';
-        });
-
-        $this->checkRouteResponse($app, '/foo', 'foo');
-        $this->checkRouteResponse($app, '/bar', 'bar');
-        $this->checkRouteResponse($app, '/bar', 'bar', 'post');
-        $this->checkRouteResponse($app, '/resource', 'get resource');
-        $this->checkRouteResponse($app, '/resource', 'post resource', 'post');
-        $this->checkRouteResponse($app, '/resource', 'put resource', 'put');
-        $this->checkRouteResponse($app, '/resource', 'patch resource', 'patch');
-        $this->checkRouteResponse($app, '/resource', 'delete resource', 'delete');
-    }
-
-    public function testRequestShouldBeStoredRegardlessOfRouting()
-    {
-        $app = new Application();
-
-        $app->get('/foo', function (Request $request) use ($app) {
-            return new Response($request->getRequestUri());
-        });
-
-        $app->error(function ($e, Request $request, $code) use ($app) {
-            return new Response($request->getRequestUri());
-        });
-
-        foreach (['/foo', '/bar'] as $path) {
-            $request = Request::create($path);
-            $response = $app->handle($request);
-            $this->assertContains($path, $response->getContent());
-        }
-    }
-
-    public function testTrailingSlashBehavior()
-    {
-        $app = new Application();
-
-        $app->get('/foo/', function () use ($app) {
-            return new Response('ok');
-        });
-
-        $request = Request::create('/foo');
-        $response = $app->handle($request);
-
-        $this->assertEquals(301, $response->getStatusCode());
-        $this->assertEquals('/foo/', $response->getTargetUrl());
-    }
-
-    public function testHostSpecification()
-    {
-        $route = new \Silex\Route();
-
-        $this->assertSame($route, $route->host('{locale}.example.com'));
-        $this->assertEquals('{locale}.example.com', $route->getHost());
-    }
-
-    public function testRequireHttpRedirect()
-    {
-        $app = new Application();
-
-        $app->match('/secured', function () {
-            return 'secured content';
-        })
-        ->requireHttp();
-
-        $request = Request::create('https://example.com/secured');
-        $response = $app->handle($request);
-        $this->assertTrue($response->isRedirect('http://example.com/secured'));
-    }
-
-    public function testRequireHttpsRedirect()
-    {
-        $app = new Application();
-
-        $app->match('/secured', function () {
-            return 'secured content';
-        })
-        ->requireHttps();
-
-        $request = Request::create('http://example.com/secured');
-        $response = $app->handle($request);
-        $this->assertTrue($response->isRedirect('https://example.com/secured'));
-    }
-
-    public function testRequireHttpsRedirectIncludesQueryString()
-    {
-        $app = new Application();
-
-        $app->match('/secured', function () {
-            return 'secured content';
-        })
-        ->requireHttps();
-
-        $request = Request::create('http://example.com/secured?query=string');
-        $response = $app->handle($request);
-        $this->assertTrue($response->isRedirect('https://example.com/secured?query=string'));
-    }
-
-    public function testConditionOnRoute()
-    {
-        $app = new Application();
-        $app->match('/secured', function () {
-            return 'secured content';
-        })
-        ->when('request.isSecure() == true');
-
-        $request = Request::create('http://example.com/secured');
-        $response = $app->handle($request);
-        $this->assertEquals(404, $response->getStatusCode());
-    }
-
-    public function testClassNameControllerSyntax()
-    {
-        $app = new Application();
-
-        $app->get('/foo', 'Silex\Tests\MyController::getFoo');
-
-        $this->checkRouteResponse($app, '/foo', 'foo');
-    }
-
-    public function testClassNameControllerSyntaxWithStaticMethod()
-    {
-        $app = new Application();
-
-        $app->get('/bar', 'Silex\Tests\MyController::getBar');
-
-        $this->checkRouteResponse($app, '/bar', 'bar');
-    }
-
-    protected function checkRouteResponse(Application $app, $path, $expectedContent, $method = 'get', $message = null)
-    {
-        $request = Request::create($path, $method);
-        $response = $app->handle($request);
-        $this->assertEquals($expectedContent, $response->getContent(), $message);
-    }
-}
-
-class MyController
-{
-    public function getFoo()
-    {
-        return 'foo';
-    }
-
-    public static function getBar()
-    {
-        return 'bar';
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/ServiceControllerResolverRouterTest.php b/vendor/silex/silex/tests/Silex/Tests/ServiceControllerResolverRouterTest.php
deleted file mode 100644
index 4bc88a451a88ba4450d7eb00396bac29320b2094..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/ServiceControllerResolverRouterTest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use Silex\Application;
-use Silex\Provider\ServiceControllerServiceProvider;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Router test cases, using the ServiceControllerResolver.
- */
-class ServiceControllerResolverRouterTest extends RouterTest
-{
-    public function testServiceNameControllerSyntax()
-    {
-        $app = new Application();
-        $app->register(new ServiceControllerServiceProvider());
-
-        $app['service_name'] = function () {
-            return new MyController();
-        };
-
-        $app->get('/bar', 'service_name:getBar');
-
-        $this->checkRouteResponse($app, '/bar', 'bar');
-    }
-
-    protected function checkRouteResponse(Application $app, $path, $expectedContent, $method = 'get', $message = null)
-    {
-        $request = Request::create($path, $method);
-        $response = $app->handle($request);
-        $this->assertEquals($expectedContent, $response->getContent(), $message);
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/ServiceControllerResolverTest.php b/vendor/silex/silex/tests/Silex/Tests/ServiceControllerResolverTest.php
deleted file mode 100644
index f5e446954c0ffe534e5c2d1401be9aa72bcdeeed..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/ServiceControllerResolverTest.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\ServiceControllerResolver;
-use Silex\Application;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Unit tests for ServiceControllerResolver, see ServiceControllerResolverRouterTest for some
- * integration tests.
- */
-class ServiceControllerResolverTest extends Testcase
-{
-    private $app;
-    private $mockCallbackResolver;
-    private $mockResolver;
-    private $resolver;
-
-    public function setup()
-    {
-        $this->mockResolver = $this->getMockBuilder('Symfony\Component\HttpKernel\Controller\ControllerResolverInterface')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->mockCallbackResolver = $this->getMockBuilder('Silex\CallbackResolver')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $this->app = new Application();
-        $this->resolver = new ServiceControllerResolver($this->mockResolver, $this->mockCallbackResolver);
-    }
-
-    public function testShouldResolveServiceController()
-    {
-        $this->mockCallbackResolver->expects($this->once())
-            ->method('isValid')
-            ->will($this->returnValue(true));
-
-        $this->mockCallbackResolver->expects($this->once())
-            ->method('convertCallback')
-            ->with('some_service:methodName')
-            ->will($this->returnValue(['callback']));
-
-        $this->app['some_service'] = function () { return new \stdClass(); };
-
-        $req = Request::create('/');
-        $req->attributes->set('_controller', 'some_service:methodName');
-
-        $this->assertEquals(['callback'], $this->resolver->getController($req));
-    }
-
-    public function testShouldUnresolvedControllerNames()
-    {
-        $req = Request::create('/');
-        $req->attributes->set('_controller', 'some_class::methodName');
-
-        $this->mockCallbackResolver->expects($this->once())
-            ->method('isValid')
-            ->with('some_class::methodName')
-            ->will($this->returnValue(false));
-
-        $this->mockResolver->expects($this->once())
-            ->method('getController')
-            ->with($req)
-            ->will($this->returnValue(123));
-
-        $this->assertEquals(123, $this->resolver->getController($req));
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/StreamTest.php b/vendor/silex/silex/tests/Silex/Tests/StreamTest.php
deleted file mode 100644
index 24c26b4cfbdbbd36565f2293cf5ce2910311c09f..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/StreamTest.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Silex\Application;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Stream test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class StreamTest extends TestCase
-{
-    public function testStreamReturnsStreamingResponse()
-    {
-        $app = new Application();
-
-        $response = $app->stream();
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response);
-        $this->assertFalse($response->getContent());
-    }
-
-    public function testStreamActuallyStreams()
-    {
-        $i = 0;
-
-        $stream = function () use (&$i) {
-            ++$i;
-        };
-
-        $app = new Application();
-        $response = $app->stream($stream);
-
-        $this->assertEquals(0, $i);
-
-        $request = Request::create('/stream');
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertEquals(1, $i);
-    }
-}
diff --git a/vendor/silex/silex/tests/Silex/Tests/WebTestCaseTest.php b/vendor/silex/silex/tests/Silex/Tests/WebTestCaseTest.php
deleted file mode 100644
index a5961ae307db2e0d4cd7338357af8ec18b67a41c..0000000000000000000000000000000000000000
--- a/vendor/silex/silex/tests/Silex/Tests/WebTestCaseTest.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-/*
- * This file is part of the Silex framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Silex\Tests;
-
-use Silex\Application;
-use Silex\WebTestCase;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Functional test cases.
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class WebTestCaseTest extends WebTestCase
-{
-    public function createApplication()
-    {
-        $app = new Application();
-
-        $app->match('/hello', function () {
-            return 'world';
-        });
-
-        $app->match('/html', function () {
-            return '<h1>title</h1>';
-        });
-
-        $app->match('/server', function (Request $request) use ($app) {
-            $user = $request->server->get('PHP_AUTH_USER');
-            $pass = $request->server->get('PHP_AUTH_PW');
-
-            return "<h1>$user:$pass</h1>";
-        });
-
-        return $app;
-    }
-
-    public function testGetHello()
-    {
-        $client = $this->createClient();
-
-        $client->request('GET', '/hello');
-        $response = $client->getResponse();
-        $this->assertTrue($response->isSuccessful());
-        $this->assertEquals('world', $response->getContent());
-    }
-
-    public function testCrawlerFilter()
-    {
-        $client = $this->createClient();
-
-        $crawler = $client->request('GET', '/html');
-        $this->assertEquals('title', $crawler->filter('h1')->text());
-    }
-
-    public function testServerVariables()
-    {
-        $user = 'klaus';
-        $pass = '123456';
-
-        $client = $this->createClient([
-            'PHP_AUTH_USER' => $user,
-            'PHP_AUTH_PW' => $pass,
-        ]);
-
-        $crawler = $client->request('GET', '/server');
-        $this->assertEquals("$user:$pass", $crawler->filter('h1')->text());
-    }
-}
diff --git a/vendor/symfony/debug/BufferingLogger.php b/vendor/symfony/debug/BufferingLogger.php
deleted file mode 100644
index 5280c33bb0e59ccf7f71e469ce46e051d633d249..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/BufferingLogger.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug;
-
-use Psr\Log\AbstractLogger;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', BufferingLogger::class, \Symfony\Component\ErrorHandler\BufferingLogger::class), \E_USER_DEPRECATED);
-
-/**
- * A buffering logger that stacks logs for later.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\BufferingLogger instead.
- */
-class BufferingLogger extends AbstractLogger
-{
-    private $logs = [];
-
-    /**
-     * @return void
-     */
-    public function log($level, $message, array $context = [])
-    {
-        $this->logs[] = [$level, $message, $context];
-    }
-
-    public function cleanLogs()
-    {
-        $logs = $this->logs;
-        $this->logs = [];
-
-        return $logs;
-    }
-}
diff --git a/vendor/symfony/debug/CHANGELOG.md b/vendor/symfony/debug/CHANGELOG.md
deleted file mode 100644
index 989c1a72da7afb61d03a908ab6590b69bce5fae7..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/CHANGELOG.md
+++ /dev/null
@@ -1,84 +0,0 @@
-CHANGELOG
-=========
-
-4.4.0
------
-
- * deprecated `FlattenException`, use the `FlattenException` of the `ErrorHandler` component
- * deprecated the whole component in favor of the `ErrorHandler` component
-
-4.3.0
------
-
-* made the `ErrorHandler` and `ExceptionHandler` classes final
-* added `Exception\FlattenException::getAsString` and
-`Exception\FlattenException::getTraceAsString` to increase compatibility to php
-exception objects
-
-4.0.0
------
-
-* removed the symfony_debug extension
-* removed `ContextErrorException`
-
-3.4.0
------
-
-* deprecated `ErrorHandler::stackErrors()` and `ErrorHandler::unstackErrors()`
-
-3.3.0
------
-
-* deprecated the `ContextErrorException` class: use \ErrorException directly now
-
-3.2.0
------
-
-* `FlattenException::getTrace()` now returns additional type descriptions
-  `integer` and `float`.
-
-
-3.0.0
------
-
-* removed classes, methods and interfaces deprecated in 2.x
-
-2.8.0
------
-
-* added BufferingLogger for errors that happen before a proper logger is configured
-* allow throwing from `__toString()` with `return trigger_error($e, E_USER_ERROR);`
-* deprecate ExceptionHandler::createResponse
-
-2.7.0
------
-
-* added deprecations checking for parent interfaces/classes to DebugClassLoader
-* added ZTS support to symfony_debug extension
-* added symfony_debug_backtrace() to symfony_debug extension
-  to track the backtrace of fatal errors
-
-2.6.0
------
-
-* generalized ErrorHandler and ExceptionHandler,
-  with some new methods and others deprecated
-* enhanced error messages for uncaught exceptions
-
-2.5.0
------
-
-* added ExceptionHandler::setHandler()
-* added UndefinedMethodFatalErrorHandler
-* deprecated DummyException
-
-2.4.0
------
-
- * added a DebugClassLoader able to wrap any autoloader providing a findFile method
- * improved error messages for not found classes and functions
-
-2.3.0
------
-
- * added the component
diff --git a/vendor/symfony/debug/Debug.php b/vendor/symfony/debug/Debug.php
deleted file mode 100644
index a44b993f37a91eff00fcb063a452c4a8baab320e..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Debug.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', Debug::class, \Symfony\Component\ErrorHandler\Debug::class), \E_USER_DEPRECATED);
-
-/**
- * Registers all the debug tools.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Debug instead.
- */
-class Debug
-{
-    private static $enabled = false;
-
-    /**
-     * Enables the debug tools.
-     *
-     * This method registers an error handler and an exception handler.
-     *
-     * @param int  $errorReportingLevel The level of error reporting you want
-     * @param bool $displayErrors       Whether to display errors (for development) or just log them (for production)
-     */
-    public static function enable($errorReportingLevel = \E_ALL, $displayErrors = true)
-    {
-        if (static::$enabled) {
-            return;
-        }
-
-        static::$enabled = true;
-
-        if (null !== $errorReportingLevel) {
-            error_reporting($errorReportingLevel);
-        } else {
-            error_reporting(\E_ALL);
-        }
-
-        if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) {
-            ini_set('display_errors', 0);
-            ExceptionHandler::register();
-        } elseif ($displayErrors && (!filter_var(ini_get('log_errors'), \FILTER_VALIDATE_BOOLEAN) || ini_get('error_log'))) {
-            // CLI - display errors only if they're not already logged to STDERR
-            ini_set('display_errors', 1);
-        }
-        if ($displayErrors) {
-            ErrorHandler::register(new ErrorHandler(new BufferingLogger()));
-        } else {
-            ErrorHandler::register()->throwAt(0, true);
-        }
-
-        DebugClassLoader::enable();
-    }
-}
diff --git a/vendor/symfony/debug/DebugClassLoader.php b/vendor/symfony/debug/DebugClassLoader.php
deleted file mode 100644
index 519a3c8f2fd8b408f905a0aaf18e395f91c7fbdd..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/DebugClassLoader.php
+++ /dev/null
@@ -1,538 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug;
-
-use PHPUnit\Framework\MockObject\Matcher\StatelessInvocation;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', DebugClassLoader::class, \Symfony\Component\ErrorHandler\DebugClassLoader::class), \E_USER_DEPRECATED);
-
-/**
- * Autoloader checking if the class is really defined in the file found.
- *
- * The ClassLoader will wrap all registered autoloaders
- * and will throw an exception if a file is found but does
- * not declare the class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Christophe Coevoet <stof@notk.org>
- * @author Nicolas Grekas <p@tchwork.com>
- * @author Guilhem Niot <guilhem.niot@gmail.com>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\DebugClassLoader instead.
- */
-class DebugClassLoader
-{
-    private $classLoader;
-    private $isFinder;
-    private $loaded = [];
-    private static $caseCheck;
-    private static $checkedClasses = [];
-    private static $final = [];
-    private static $finalMethods = [];
-    private static $deprecated = [];
-    private static $internal = [];
-    private static $internalMethods = [];
-    private static $annotatedParameters = [];
-    private static $darwinCache = ['/' => ['/', []]];
-    private static $method = [];
-
-    public function __construct(callable $classLoader)
-    {
-        $this->classLoader = $classLoader;
-        $this->isFinder = \is_array($classLoader) && method_exists($classLoader[0], 'findFile');
-
-        if (!isset(self::$caseCheck)) {
-            $file = file_exists(__FILE__) ? __FILE__ : rtrim(realpath('.'), \DIRECTORY_SEPARATOR);
-            $i = strrpos($file, \DIRECTORY_SEPARATOR);
-            $dir = substr($file, 0, 1 + $i);
-            $file = substr($file, 1 + $i);
-            $test = strtoupper($file) === $file ? strtolower($file) : strtoupper($file);
-            $test = realpath($dir.$test);
-
-            if (false === $test || false === $i) {
-                // filesystem is case sensitive
-                self::$caseCheck = 0;
-            } elseif (substr($test, -\strlen($file)) === $file) {
-                // filesystem is case insensitive and realpath() normalizes the case of characters
-                self::$caseCheck = 1;
-            } elseif (false !== stripos(\PHP_OS, 'darwin')) {
-                // on MacOSX, HFS+ is case insensitive but realpath() doesn't normalize the case of characters
-                self::$caseCheck = 2;
-            } else {
-                // filesystem case checks failed, fallback to disabling them
-                self::$caseCheck = 0;
-            }
-        }
-    }
-
-    /**
-     * Gets the wrapped class loader.
-     *
-     * @return callable The wrapped class loader
-     */
-    public function getClassLoader()
-    {
-        return $this->classLoader;
-    }
-
-    /**
-     * Wraps all autoloaders.
-     */
-    public static function enable()
-    {
-        // Ensures we don't hit https://bugs.php.net/42098
-        class_exists('Symfony\Component\Debug\ErrorHandler');
-        class_exists('Psr\Log\LogLevel');
-
-        if (!\is_array($functions = spl_autoload_functions())) {
-            return;
-        }
-
-        foreach ($functions as $function) {
-            spl_autoload_unregister($function);
-        }
-
-        foreach ($functions as $function) {
-            if (!\is_array($function) || !$function[0] instanceof self) {
-                $function = [new static($function), 'loadClass'];
-            }
-
-            spl_autoload_register($function);
-        }
-    }
-
-    /**
-     * Disables the wrapping.
-     */
-    public static function disable()
-    {
-        if (!\is_array($functions = spl_autoload_functions())) {
-            return;
-        }
-
-        foreach ($functions as $function) {
-            spl_autoload_unregister($function);
-        }
-
-        foreach ($functions as $function) {
-            if (\is_array($function) && $function[0] instanceof self) {
-                $function = $function[0]->getClassLoader();
-            }
-
-            spl_autoload_register($function);
-        }
-    }
-
-    /**
-     * @return string|null
-     */
-    public function findFile($class)
-    {
-        return $this->isFinder ? $this->classLoader[0]->findFile($class) ?: null : null;
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $class The name of the class
-     *
-     * @throws \RuntimeException
-     */
-    public function loadClass($class)
-    {
-        $e = error_reporting(error_reporting() | \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR);
-
-        try {
-            if ($this->isFinder && !isset($this->loaded[$class])) {
-                $this->loaded[$class] = true;
-                if (!$file = $this->classLoader[0]->findFile($class) ?: false) {
-                    // no-op
-                } elseif (\function_exists('opcache_is_script_cached') && @opcache_is_script_cached($file)) {
-                    include $file;
-
-                    return;
-                } elseif (false === include $file) {
-                    return;
-                }
-            } else {
-                ($this->classLoader)($class);
-                $file = false;
-            }
-        } finally {
-            error_reporting($e);
-        }
-
-        $this->checkClass($class, $file);
-    }
-
-    private function checkClass(string $class, string $file = null)
-    {
-        $exists = null === $file || class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false);
-
-        if (null !== $file && $class && '\\' === $class[0]) {
-            $class = substr($class, 1);
-        }
-
-        if ($exists) {
-            if (isset(self::$checkedClasses[$class])) {
-                return;
-            }
-            self::$checkedClasses[$class] = true;
-
-            $refl = new \ReflectionClass($class);
-            if (null === $file && $refl->isInternal()) {
-                return;
-            }
-            $name = $refl->getName();
-
-            if ($name !== $class && 0 === strcasecmp($name, $class)) {
-                throw new \RuntimeException(sprintf('Case mismatch between loaded and declared class names: "%s" vs "%s".', $class, $name));
-            }
-
-            $deprecations = $this->checkAnnotations($refl, $name);
-
-            foreach ($deprecations as $message) {
-                @trigger_error($message, \E_USER_DEPRECATED);
-            }
-        }
-
-        if (!$file) {
-            return;
-        }
-
-        if (!$exists) {
-            if (false !== strpos($class, '/')) {
-                throw new \RuntimeException(sprintf('Trying to autoload a class with an invalid name "%s". Be careful that the namespace separator is "\" in PHP, not "/".', $class));
-            }
-
-            throw new \RuntimeException(sprintf('The autoloader expected class "%s" to be defined in file "%s". The file was found but the class was not in it, the class name or namespace probably has a typo.', $class, $file));
-        }
-
-        if (self::$caseCheck && $message = $this->checkCase($refl, $file, $class)) {
-            throw new \RuntimeException(sprintf('Case mismatch between class and real file names: "%s" vs "%s" in "%s".', $message[0], $message[1], $message[2]));
-        }
-    }
-
-    public function checkAnnotations(\ReflectionClass $refl, $class)
-    {
-        $deprecations = [];
-
-        // Don't trigger deprecations for classes in the same vendor
-        if (2 > $len = 1 + (strpos($class, '\\') ?: strpos($class, '_'))) {
-            $len = 0;
-            $ns = '';
-        } else {
-            $ns = str_replace('_', '\\', substr($class, 0, $len));
-        }
-
-        // Detect annotations on the class
-        if (false !== $doc = $refl->getDocComment()) {
-            foreach (['final', 'deprecated', 'internal'] as $annotation) {
-                if (false !== strpos($doc, $annotation) && preg_match('#\n\s+\* @'.$annotation.'(?:( .+?)\.?)?\r?\n\s+\*(?: @|/$|\r?\n)#s', $doc, $notice)) {
-                    self::${$annotation}[$class] = isset($notice[1]) ? preg_replace('#\.?\r?\n( \*)? *(?= |\r?\n|$)#', '', $notice[1]) : '';
-                }
-            }
-
-            if ($refl->isInterface() && false !== strpos($doc, 'method') && preg_match_all('#\n \* @method\s+(static\s+)?+(?:[\w\|&\[\]\\\]+\s+)?(\w+(?:\s*\([^\)]*\))?)+(.+?([[:punct:]]\s*)?)?(?=\r?\n \*(?: @|/$|\r?\n))#', $doc, $notice, \PREG_SET_ORDER)) {
-                foreach ($notice as $method) {
-                    $static = '' !== $method[1];
-                    $name = $method[2];
-                    $description = $method[3] ?? null;
-                    if (false === strpos($name, '(')) {
-                        $name .= '()';
-                    }
-                    if (null !== $description) {
-                        $description = trim($description);
-                        if (!isset($method[4])) {
-                            $description .= '.';
-                        }
-                    }
-                    self::$method[$class][] = [$class, $name, $static, $description];
-                }
-            }
-        }
-
-        $parent = get_parent_class($class);
-        $parentAndOwnInterfaces = $this->getOwnInterfaces($class, $parent ?: null);
-        if ($parent) {
-            $parentAndOwnInterfaces[$parent] = $parent;
-
-            if (!isset(self::$checkedClasses[$parent])) {
-                $this->checkClass($parent);
-            }
-
-            if (isset(self::$final[$parent])) {
-                $deprecations[] = sprintf('The "%s" class is considered final%s. It may change without further notice as of its next major version. You should not extend it from "%s".', $parent, self::$final[$parent], $class);
-            }
-        }
-
-        // Detect if the parent is annotated
-        foreach ($parentAndOwnInterfaces + class_uses($class, false) as $use) {
-            if (!isset(self::$checkedClasses[$use])) {
-                $this->checkClass($use);
-            }
-            if (isset(self::$deprecated[$use]) && strncmp($ns, str_replace('_', '\\', $use), $len) && !isset(self::$deprecated[$class])) {
-                $type = class_exists($class, false) ? 'class' : (interface_exists($class, false) ? 'interface' : 'trait');
-                $verb = class_exists($use, false) || interface_exists($class, false) ? 'extends' : (interface_exists($use, false) ? 'implements' : 'uses');
-
-                $deprecations[] = sprintf('The "%s" %s %s "%s" that is deprecated%s.', $class, $type, $verb, $use, self::$deprecated[$use]);
-            }
-            if (isset(self::$internal[$use]) && strncmp($ns, str_replace('_', '\\', $use), $len)) {
-                $deprecations[] = sprintf('The "%s" %s is considered internal%s. It may change without further notice. You should not use it from "%s".', $use, class_exists($use, false) ? 'class' : (interface_exists($use, false) ? 'interface' : 'trait'), self::$internal[$use], $class);
-            }
-            if (isset(self::$method[$use])) {
-                if ($refl->isAbstract()) {
-                    if (isset(self::$method[$class])) {
-                        self::$method[$class] = array_merge(self::$method[$class], self::$method[$use]);
-                    } else {
-                        self::$method[$class] = self::$method[$use];
-                    }
-                } elseif (!$refl->isInterface()) {
-                    $hasCall = $refl->hasMethod('__call');
-                    $hasStaticCall = $refl->hasMethod('__callStatic');
-                    foreach (self::$method[$use] as $method) {
-                        list($interface, $name, $static, $description) = $method;
-                        if ($static ? $hasStaticCall : $hasCall) {
-                            continue;
-                        }
-                        $realName = substr($name, 0, strpos($name, '('));
-                        if (!$refl->hasMethod($realName) || !($methodRefl = $refl->getMethod($realName))->isPublic() || ($static && !$methodRefl->isStatic()) || (!$static && $methodRefl->isStatic())) {
-                            $deprecations[] = sprintf('Class "%s" should implement method "%s::%s"%s', $class, ($static ? 'static ' : '').$interface, $name, null == $description ? '.' : ': '.$description);
-                        }
-                    }
-                }
-            }
-        }
-
-        if (trait_exists($class)) {
-            return $deprecations;
-        }
-
-        // Inherit @final, @internal and @param annotations for methods
-        self::$finalMethods[$class] = [];
-        self::$internalMethods[$class] = [];
-        self::$annotatedParameters[$class] = [];
-        foreach ($parentAndOwnInterfaces as $use) {
-            foreach (['finalMethods', 'internalMethods', 'annotatedParameters'] as $property) {
-                if (isset(self::${$property}[$use])) {
-                    self::${$property}[$class] = self::${$property}[$class] ? self::${$property}[$use] + self::${$property}[$class] : self::${$property}[$use];
-                }
-            }
-        }
-
-        foreach ($refl->getMethods(\ReflectionMethod::IS_PUBLIC | \ReflectionMethod::IS_PROTECTED) as $method) {
-            if ($method->class !== $class) {
-                continue;
-            }
-
-            if ($parent && isset(self::$finalMethods[$parent][$method->name])) {
-                list($declaringClass, $message) = self::$finalMethods[$parent][$method->name];
-                $deprecations[] = sprintf('The "%s::%s()" method is considered final%s. It may change without further notice as of its next major version. You should not extend it from "%s".', $declaringClass, $method->name, $message, $class);
-            }
-
-            if (isset(self::$internalMethods[$class][$method->name])) {
-                list($declaringClass, $message) = self::$internalMethods[$class][$method->name];
-                if (strncmp($ns, $declaringClass, $len)) {
-                    $deprecations[] = sprintf('The "%s::%s()" method is considered internal%s. It may change without further notice. You should not extend it from "%s".', $declaringClass, $method->name, $message, $class);
-                }
-            }
-
-            // To read method annotations
-            $doc = $method->getDocComment();
-
-            if (isset(self::$annotatedParameters[$class][$method->name])) {
-                $definedParameters = [];
-                foreach ($method->getParameters() as $parameter) {
-                    $definedParameters[$parameter->name] = true;
-                }
-
-                foreach (self::$annotatedParameters[$class][$method->name] as $parameterName => $deprecation) {
-                    if (!isset($definedParameters[$parameterName]) && !($doc && preg_match("/\\n\\s+\\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\\\${$parameterName}\\b/", $doc))) {
-                        $deprecations[] = sprintf($deprecation, $class);
-                    }
-                }
-            }
-
-            if (!$doc) {
-                continue;
-            }
-
-            $finalOrInternal = false;
-
-            foreach (['final', 'internal'] as $annotation) {
-                if (false !== strpos($doc, $annotation) && preg_match('#\n\s+\* @'.$annotation.'(?:( .+?)\.?)?\r?\n\s+\*(?: @|/$|\r?\n)#s', $doc, $notice)) {
-                    $message = isset($notice[1]) ? preg_replace('#\.?\r?\n( \*)? *(?= |\r?\n|$)#', '', $notice[1]) : '';
-                    self::${$annotation.'Methods'}[$class][$method->name] = [$class, $message];
-                    $finalOrInternal = true;
-                }
-            }
-
-            if ($finalOrInternal || $method->isConstructor() || false === strpos($doc, '@param') || StatelessInvocation::class === $class) {
-                continue;
-            }
-            if (!preg_match_all('#\n\s+\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\$([a-zA-Z0-9_\x7f-\xff]++)#', $doc, $matches, \PREG_SET_ORDER)) {
-                continue;
-            }
-            if (!isset(self::$annotatedParameters[$class][$method->name])) {
-                $definedParameters = [];
-                foreach ($method->getParameters() as $parameter) {
-                    $definedParameters[$parameter->name] = true;
-                }
-            }
-            foreach ($matches as list(, $parameterType, $parameterName)) {
-                if (!isset($definedParameters[$parameterName])) {
-                    $parameterType = trim($parameterType);
-                    self::$annotatedParameters[$class][$method->name][$parameterName] = sprintf('The "%%s::%s()" method will require a new "%s$%s" argument in the next major version of its %s "%s", not defining it is deprecated.', $method->name, $parameterType ? $parameterType.' ' : '', $parameterName, interface_exists($class) ? 'interface' : 'parent class', $method->class);
-                }
-            }
-        }
-
-        return $deprecations;
-    }
-
-    /**
-     * @param string $file
-     * @param string $class
-     *
-     * @return array|null
-     */
-    public function checkCase(\ReflectionClass $refl, $file, $class)
-    {
-        $real = explode('\\', $class.strrchr($file, '.'));
-        $tail = explode(\DIRECTORY_SEPARATOR, str_replace('/', \DIRECTORY_SEPARATOR, $file));
-
-        $i = \count($tail) - 1;
-        $j = \count($real) - 1;
-
-        while (isset($tail[$i], $real[$j]) && $tail[$i] === $real[$j]) {
-            --$i;
-            --$j;
-        }
-
-        array_splice($tail, 0, $i + 1);
-
-        if (!$tail) {
-            return null;
-        }
-
-        $tail = \DIRECTORY_SEPARATOR.implode(\DIRECTORY_SEPARATOR, $tail);
-        $tailLen = \strlen($tail);
-        $real = $refl->getFileName();
-
-        if (2 === self::$caseCheck) {
-            $real = $this->darwinRealpath($real);
-        }
-
-        if (0 === substr_compare($real, $tail, -$tailLen, $tailLen, true)
-            && 0 !== substr_compare($real, $tail, -$tailLen, $tailLen, false)
-        ) {
-            return [substr($tail, -$tailLen + 1), substr($real, -$tailLen + 1), substr($real, 0, -$tailLen + 1)];
-        }
-
-        return null;
-    }
-
-    /**
-     * `realpath` on MacOSX doesn't normalize the case of characters.
-     */
-    private function darwinRealpath(string $real): string
-    {
-        $i = 1 + strrpos($real, '/');
-        $file = substr($real, $i);
-        $real = substr($real, 0, $i);
-
-        if (isset(self::$darwinCache[$real])) {
-            $kDir = $real;
-        } else {
-            $kDir = strtolower($real);
-
-            if (isset(self::$darwinCache[$kDir])) {
-                $real = self::$darwinCache[$kDir][0];
-            } else {
-                $dir = getcwd();
-
-                if (!@chdir($real)) {
-                    return $real.$file;
-                }
-
-                $real = getcwd().'/';
-                chdir($dir);
-
-                $dir = $real;
-                $k = $kDir;
-                $i = \strlen($dir) - 1;
-                while (!isset(self::$darwinCache[$k])) {
-                    self::$darwinCache[$k] = [$dir, []];
-                    self::$darwinCache[$dir] = &self::$darwinCache[$k];
-
-                    while ('/' !== $dir[--$i]) {
-                    }
-                    $k = substr($k, 0, ++$i);
-                    $dir = substr($dir, 0, $i--);
-                }
-            }
-        }
-
-        $dirFiles = self::$darwinCache[$kDir][1];
-
-        if (!isset($dirFiles[$file]) && ') : eval()\'d code' === substr($file, -17)) {
-            // Get the file name from "file_name.php(123) : eval()'d code"
-            $file = substr($file, 0, strrpos($file, '(', -17));
-        }
-
-        if (isset($dirFiles[$file])) {
-            return $real.$dirFiles[$file];
-        }
-
-        $kFile = strtolower($file);
-
-        if (!isset($dirFiles[$kFile])) {
-            foreach (scandir($real, 2) as $f) {
-                if ('.' !== $f[0]) {
-                    $dirFiles[$f] = $f;
-                    if ($f === $file) {
-                        $kFile = $k = $file;
-                    } elseif ($f !== $k = strtolower($f)) {
-                        $dirFiles[$k] = $f;
-                    }
-                }
-            }
-            self::$darwinCache[$kDir][1] = $dirFiles;
-        }
-
-        return $real.$dirFiles[$kFile];
-    }
-
-    /**
-     * `class_implements` includes interfaces from the parents so we have to manually exclude them.
-     *
-     * @return string[]
-     */
-    private function getOwnInterfaces(string $class, ?string $parent): array
-    {
-        $ownInterfaces = class_implements($class, false);
-
-        if ($parent) {
-            foreach (class_implements($parent, false) as $interface) {
-                unset($ownInterfaces[$interface]);
-            }
-        }
-
-        foreach ($ownInterfaces as $interface) {
-            foreach (class_implements($interface) as $interface) {
-                unset($ownInterfaces[$interface]);
-            }
-        }
-
-        return $ownInterfaces;
-    }
-}
diff --git a/vendor/symfony/debug/ErrorHandler.php b/vendor/symfony/debug/ErrorHandler.php
deleted file mode 100644
index 6d562c5f562726bcea83fb39a41c1a5f87e46c14..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/ErrorHandler.php
+++ /dev/null
@@ -1,709 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug;
-
-use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\Exception\FatalThrowableError;
-use Symfony\Component\Debug\Exception\FlattenException;
-use Symfony\Component\Debug\Exception\OutOfMemoryException;
-use Symfony\Component\Debug\Exception\SilencedErrorContext;
-use Symfony\Component\Debug\FatalErrorHandler\ClassNotFoundFatalErrorHandler;
-use Symfony\Component\Debug\FatalErrorHandler\FatalErrorHandlerInterface;
-use Symfony\Component\Debug\FatalErrorHandler\UndefinedFunctionFatalErrorHandler;
-use Symfony\Component\Debug\FatalErrorHandler\UndefinedMethodFatalErrorHandler;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorHandler::class), \E_USER_DEPRECATED);
-
-/**
- * A generic ErrorHandler for the PHP engine.
- *
- * Provides five bit fields that control how errors are handled:
- * - thrownErrors: errors thrown as \ErrorException
- * - loggedErrors: logged errors, when not @-silenced
- * - scopedErrors: errors thrown or logged with their local context
- * - tracedErrors: errors logged with their stack trace
- * - screamedErrors: never @-silenced errors
- *
- * Each error level can be logged by a dedicated PSR-3 logger object.
- * Screaming only applies to logging.
- * Throwing takes precedence over logging.
- * Uncaught exceptions are logged as E_ERROR.
- * E_DEPRECATED and E_USER_DEPRECATED levels never throw.
- * E_RECOVERABLE_ERROR and E_USER_ERROR levels always throw.
- * Non catchable errors that can be detected at shutdown time are logged when the scream bit field allows so.
- * As errors have a performance cost, repeated errors are all logged, so that the developer
- * can see them and weight them as more important to fix than others of the same level.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- *
- * @final since Symfony 4.3
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorHandler instead.
- */
-class ErrorHandler
-{
-    private $levels = [
-        \E_DEPRECATED => 'Deprecated',
-        \E_USER_DEPRECATED => 'User Deprecated',
-        \E_NOTICE => 'Notice',
-        \E_USER_NOTICE => 'User Notice',
-        \E_STRICT => 'Runtime Notice',
-        \E_WARNING => 'Warning',
-        \E_USER_WARNING => 'User Warning',
-        \E_COMPILE_WARNING => 'Compile Warning',
-        \E_CORE_WARNING => 'Core Warning',
-        \E_USER_ERROR => 'User Error',
-        \E_RECOVERABLE_ERROR => 'Catchable Fatal Error',
-        \E_COMPILE_ERROR => 'Compile Error',
-        \E_PARSE => 'Parse Error',
-        \E_ERROR => 'Error',
-        \E_CORE_ERROR => 'Core Error',
-    ];
-
-    private $loggers = [
-        \E_DEPRECATED => [null, LogLevel::INFO],
-        \E_USER_DEPRECATED => [null, LogLevel::INFO],
-        \E_NOTICE => [null, LogLevel::WARNING],
-        \E_USER_NOTICE => [null, LogLevel::WARNING],
-        \E_STRICT => [null, LogLevel::WARNING],
-        \E_WARNING => [null, LogLevel::WARNING],
-        \E_USER_WARNING => [null, LogLevel::WARNING],
-        \E_COMPILE_WARNING => [null, LogLevel::WARNING],
-        \E_CORE_WARNING => [null, LogLevel::WARNING],
-        \E_USER_ERROR => [null, LogLevel::CRITICAL],
-        \E_RECOVERABLE_ERROR => [null, LogLevel::CRITICAL],
-        \E_COMPILE_ERROR => [null, LogLevel::CRITICAL],
-        \E_PARSE => [null, LogLevel::CRITICAL],
-        \E_ERROR => [null, LogLevel::CRITICAL],
-        \E_CORE_ERROR => [null, LogLevel::CRITICAL],
-    ];
-
-    private $thrownErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED
-    private $scopedErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED
-    private $tracedErrors = 0x77FB; // E_ALL - E_STRICT - E_PARSE
-    private $screamedErrors = 0x55; // E_ERROR + E_CORE_ERROR + E_COMPILE_ERROR + E_PARSE
-    private $loggedErrors = 0;
-    private $traceReflector;
-
-    private $isRecursive = 0;
-    private $isRoot = false;
-    private $exceptionHandler;
-    private $bootstrappingLogger;
-
-    private static $reservedMemory;
-    private static $toStringException = null;
-    private static $silencedErrorCache = [];
-    private static $silencedErrorCount = 0;
-    private static $exitCode = 0;
-
-    /**
-     * Registers the error handler.
-     *
-     * @param self|null $handler The handler to register
-     * @param bool      $replace Whether to replace or not any existing handler
-     *
-     * @return self The registered error handler
-     */
-    public static function register(self $handler = null, $replace = true)
-    {
-        if (null === self::$reservedMemory) {
-            self::$reservedMemory = str_repeat('x', 10240);
-            register_shutdown_function(__CLASS__.'::handleFatalError');
-        }
-
-        if ($handlerIsNew = null === $handler) {
-            $handler = new static();
-        }
-
-        if (null === $prev = set_error_handler([$handler, 'handleError'])) {
-            restore_error_handler();
-            // Specifying the error types earlier would expose us to https://bugs.php.net/63206
-            set_error_handler([$handler, 'handleError'], $handler->thrownErrors | $handler->loggedErrors);
-            $handler->isRoot = true;
-        }
-
-        if ($handlerIsNew && \is_array($prev) && $prev[0] instanceof self) {
-            $handler = $prev[0];
-            $replace = false;
-        }
-        if (!$replace && $prev) {
-            restore_error_handler();
-            $handlerIsRegistered = \is_array($prev) && $handler === $prev[0];
-        } else {
-            $handlerIsRegistered = true;
-        }
-        if (\is_array($prev = set_exception_handler([$handler, 'handleException'])) && $prev[0] instanceof self) {
-            restore_exception_handler();
-            if (!$handlerIsRegistered) {
-                $handler = $prev[0];
-            } elseif ($handler !== $prev[0] && $replace) {
-                set_exception_handler([$handler, 'handleException']);
-                $p = $prev[0]->setExceptionHandler(null);
-                $handler->setExceptionHandler($p);
-                $prev[0]->setExceptionHandler($p);
-            }
-        } else {
-            $handler->setExceptionHandler($prev);
-        }
-
-        $handler->throwAt(\E_ALL & $handler->thrownErrors, true);
-
-        return $handler;
-    }
-
-    public function __construct(BufferingLogger $bootstrappingLogger = null)
-    {
-        if ($bootstrappingLogger) {
-            $this->bootstrappingLogger = $bootstrappingLogger;
-            $this->setDefaultLogger($bootstrappingLogger);
-        }
-        $this->traceReflector = new \ReflectionProperty('Exception', 'trace');
-        $this->traceReflector->setAccessible(true);
-    }
-
-    /**
-     * Sets a logger to non assigned errors levels.
-     *
-     * @param array|int $levels  An array map of E_* to LogLevel::* or an integer bit field of E_* constants
-     * @param bool      $replace Whether to replace or not any existing logger
-     */
-    public function setDefaultLogger(LoggerInterface $logger, $levels = \E_ALL, $replace = false)
-    {
-        $loggers = [];
-
-        if (\is_array($levels)) {
-            foreach ($levels as $type => $logLevel) {
-                if (empty($this->loggers[$type][0]) || $replace || $this->loggers[$type][0] === $this->bootstrappingLogger) {
-                    $loggers[$type] = [$logger, $logLevel];
-                }
-            }
-        } else {
-            if (null === $levels) {
-                $levels = \E_ALL;
-            }
-            foreach ($this->loggers as $type => $log) {
-                if (($type & $levels) && (empty($log[0]) || $replace || $log[0] === $this->bootstrappingLogger)) {
-                    $log[0] = $logger;
-                    $loggers[$type] = $log;
-                }
-            }
-        }
-
-        $this->setLoggers($loggers);
-    }
-
-    /**
-     * Sets a logger for each error level.
-     *
-     * @param array $loggers Error levels to [LoggerInterface|null, LogLevel::*] map
-     *
-     * @return array The previous map
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setLoggers(array $loggers)
-    {
-        $prevLogged = $this->loggedErrors;
-        $prev = $this->loggers;
-        $flush = [];
-
-        foreach ($loggers as $type => $log) {
-            if (!isset($prev[$type])) {
-                throw new \InvalidArgumentException('Unknown error type: '.$type);
-            }
-            if (!\is_array($log)) {
-                $log = [$log];
-            } elseif (!\array_key_exists(0, $log)) {
-                throw new \InvalidArgumentException('No logger provided.');
-            }
-            if (null === $log[0]) {
-                $this->loggedErrors &= ~$type;
-            } elseif ($log[0] instanceof LoggerInterface) {
-                $this->loggedErrors |= $type;
-            } else {
-                throw new \InvalidArgumentException('Invalid logger provided.');
-            }
-            $this->loggers[$type] = $log + $prev[$type];
-
-            if ($this->bootstrappingLogger && $prev[$type][0] === $this->bootstrappingLogger) {
-                $flush[$type] = $type;
-            }
-        }
-        $this->reRegister($prevLogged | $this->thrownErrors);
-
-        if ($flush) {
-            foreach ($this->bootstrappingLogger->cleanLogs() as $log) {
-                $type = $log[2]['exception'] instanceof \ErrorException ? $log[2]['exception']->getSeverity() : \E_ERROR;
-                if (!isset($flush[$type])) {
-                    $this->bootstrappingLogger->log($log[0], $log[1], $log[2]);
-                } elseif ($this->loggers[$type][0]) {
-                    $this->loggers[$type][0]->log($this->loggers[$type][1], $log[1], $log[2]);
-                }
-            }
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Sets a user exception handler.
-     *
-     * @param callable $handler A handler that will be called on Exception
-     *
-     * @return callable|null The previous exception handler
-     */
-    public function setExceptionHandler(callable $handler = null)
-    {
-        $prev = $this->exceptionHandler;
-        $this->exceptionHandler = $handler;
-
-        return $prev;
-    }
-
-    /**
-     * Sets the PHP error levels that throw an exception when a PHP error occurs.
-     *
-     * @param int  $levels  A bit field of E_* constants for thrown errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function throwAt($levels, $replace = false)
-    {
-        $prev = $this->thrownErrors;
-        $this->thrownErrors = ($levels | \E_RECOVERABLE_ERROR | \E_USER_ERROR) & ~\E_USER_DEPRECATED & ~\E_DEPRECATED;
-        if (!$replace) {
-            $this->thrownErrors |= $prev;
-        }
-        $this->reRegister($prev | $this->loggedErrors);
-
-        return $prev;
-    }
-
-    /**
-     * Sets the PHP error levels for which local variables are preserved.
-     *
-     * @param int  $levels  A bit field of E_* constants for scoped errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function scopeAt($levels, $replace = false)
-    {
-        $prev = $this->scopedErrors;
-        $this->scopedErrors = (int) $levels;
-        if (!$replace) {
-            $this->scopedErrors |= $prev;
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Sets the PHP error levels for which the stack trace is preserved.
-     *
-     * @param int  $levels  A bit field of E_* constants for traced errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function traceAt($levels, $replace = false)
-    {
-        $prev = $this->tracedErrors;
-        $this->tracedErrors = (int) $levels;
-        if (!$replace) {
-            $this->tracedErrors |= $prev;
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Sets the error levels where the @-operator is ignored.
-     *
-     * @param int  $levels  A bit field of E_* constants for screamed errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function screamAt($levels, $replace = false)
-    {
-        $prev = $this->screamedErrors;
-        $this->screamedErrors = (int) $levels;
-        if (!$replace) {
-            $this->screamedErrors |= $prev;
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Re-registers as a PHP error handler if levels changed.
-     */
-    private function reRegister(int $prev)
-    {
-        if ($prev !== $this->thrownErrors | $this->loggedErrors) {
-            $handler = set_error_handler('var_dump');
-            $handler = \is_array($handler) ? $handler[0] : null;
-            restore_error_handler();
-            if ($handler === $this) {
-                restore_error_handler();
-                if ($this->isRoot) {
-                    set_error_handler([$this, 'handleError'], $this->thrownErrors | $this->loggedErrors);
-                } else {
-                    set_error_handler([$this, 'handleError']);
-                }
-            }
-        }
-    }
-
-    /**
-     * Handles errors by filtering then logging them according to the configured bit fields.
-     *
-     * @param int    $type    One of the E_* constants
-     * @param string $message
-     * @param string $file
-     * @param int    $line
-     *
-     * @return bool Returns false when no handling happens so that the PHP engine can handle the error itself
-     *
-     * @throws \ErrorException When $this->thrownErrors requests so
-     *
-     * @internal
-     */
-    public function handleError($type, $message, $file, $line)
-    {
-        if (\PHP_VERSION_ID >= 70300 && \E_WARNING === $type && '"' === $message[0] && false !== strpos($message, '" targeting switch is equivalent to "break')) {
-            $type = \E_DEPRECATED;
-        }
-
-        // Level is the current error reporting level to manage silent error.
-        $level = error_reporting();
-        $silenced = 0 === ($level & $type);
-        // Strong errors are not authorized to be silenced.
-        $level |= \E_RECOVERABLE_ERROR | \E_USER_ERROR | \E_DEPRECATED | \E_USER_DEPRECATED;
-        $log = $this->loggedErrors & $type;
-        $throw = $this->thrownErrors & $type & $level;
-        $type &= $level | $this->screamedErrors;
-
-        if (!$type || (!$log && !$throw)) {
-            return !$silenced && $type && $log;
-        }
-        $scope = $this->scopedErrors & $type;
-
-        if (false !== strpos($message, "@anonymous\0")) {
-            $logMessage = $this->levels[$type].': '.(new FlattenException())->setMessage($message)->getMessage();
-        } else {
-            $logMessage = $this->levels[$type].': '.$message;
-        }
-
-        if (null !== self::$toStringException) {
-            $errorAsException = self::$toStringException;
-            self::$toStringException = null;
-        } elseif (!$throw && !($type & $level)) {
-            if (!isset(self::$silencedErrorCache[$id = $file.':'.$line])) {
-                $lightTrace = $this->tracedErrors & $type ? $this->cleanTrace(debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 5), $type, $file, $line, false) : [];
-                $errorAsException = new SilencedErrorContext($type, $file, $line, isset($lightTrace[1]) ? [$lightTrace[0]] : $lightTrace);
-            } elseif (isset(self::$silencedErrorCache[$id][$message])) {
-                $lightTrace = null;
-                $errorAsException = self::$silencedErrorCache[$id][$message];
-                ++$errorAsException->count;
-            } else {
-                $lightTrace = [];
-                $errorAsException = null;
-            }
-
-            if (100 < ++self::$silencedErrorCount) {
-                self::$silencedErrorCache = $lightTrace = [];
-                self::$silencedErrorCount = 1;
-            }
-            if ($errorAsException) {
-                self::$silencedErrorCache[$id][$message] = $errorAsException;
-            }
-            if (null === $lightTrace) {
-                return true;
-            }
-        } else {
-            $errorAsException = new \ErrorException($logMessage, 0, $type, $file, $line);
-
-            if ($throw || $this->tracedErrors & $type) {
-                $backtrace = $errorAsException->getTrace();
-                $lightTrace = $this->cleanTrace($backtrace, $type, $file, $line, $throw);
-                $this->traceReflector->setValue($errorAsException, $lightTrace);
-            } else {
-                $this->traceReflector->setValue($errorAsException, []);
-                $backtrace = [];
-            }
-        }
-
-        if ($throw) {
-            if (\PHP_VERSION_ID < 70400 && \E_USER_ERROR & $type) {
-                for ($i = 1; isset($backtrace[$i]); ++$i) {
-                    if (isset($backtrace[$i]['function'], $backtrace[$i]['type'], $backtrace[$i - 1]['function'])
-                        && '__toString' === $backtrace[$i]['function']
-                        && '->' === $backtrace[$i]['type']
-                        && !isset($backtrace[$i - 1]['class'])
-                        && ('trigger_error' === $backtrace[$i - 1]['function'] || 'user_error' === $backtrace[$i - 1]['function'])
-                    ) {
-                        // Here, we know trigger_error() has been called from __toString().
-                        // PHP triggers a fatal error when throwing from __toString().
-                        // A small convention allows working around the limitation:
-                        // given a caught $e exception in __toString(), quitting the method with
-                        // `return trigger_error($e, E_USER_ERROR);` allows this error handler
-                        // to make $e get through the __toString() barrier.
-
-                        $context = 4 < \func_num_args() ? (func_get_arg(4) ?: []) : [];
-
-                        foreach ($context as $e) {
-                            if ($e instanceof \Throwable && $e->__toString() === $message) {
-                                self::$toStringException = $e;
-
-                                return true;
-                            }
-                        }
-
-                        // Display the original error message instead of the default one.
-                        $this->handleException($errorAsException);
-
-                        // Stop the process by giving back the error to the native handler.
-                        return false;
-                    }
-                }
-            }
-
-            throw $errorAsException;
-        }
-
-        if ($this->isRecursive) {
-            $log = 0;
-        } else {
-            if (\PHP_VERSION_ID < (\PHP_VERSION_ID < 70400 ? 70316 : 70404)) {
-                $currentErrorHandler = set_error_handler('var_dump');
-                restore_error_handler();
-            }
-
-            try {
-                $this->isRecursive = true;
-                $level = ($type & $level) ? $this->loggers[$type][1] : LogLevel::DEBUG;
-                $this->loggers[$type][0]->log($level, $logMessage, $errorAsException ? ['exception' => $errorAsException] : []);
-            } finally {
-                $this->isRecursive = false;
-
-                if (\PHP_VERSION_ID < (\PHP_VERSION_ID < 70400 ? 70316 : 70404)) {
-                    set_error_handler($currentErrorHandler);
-                }
-            }
-        }
-
-        return !$silenced && $type && $log;
-    }
-
-    /**
-     * Handles an exception by logging then forwarding it to another handler.
-     *
-     * @param \Exception|\Throwable $exception An exception to handle
-     * @param array                 $error     An array as returned by error_get_last()
-     *
-     * @internal
-     */
-    public function handleException($exception, array $error = null)
-    {
-        if (null === $error) {
-            self::$exitCode = 255;
-        }
-        if (!$exception instanceof \Exception) {
-            $exception = new FatalThrowableError($exception);
-        }
-        $type = $exception instanceof FatalErrorException ? $exception->getSeverity() : \E_ERROR;
-        $handlerException = null;
-
-        if (($this->loggedErrors & $type) || $exception instanceof FatalThrowableError) {
-            if (false !== strpos($message = $exception->getMessage(), "@anonymous\0")) {
-                $message = (new FlattenException())->setMessage($message)->getMessage();
-            }
-            if ($exception instanceof FatalErrorException) {
-                if ($exception instanceof FatalThrowableError) {
-                    $error = [
-                        'type' => $type,
-                        'message' => $message,
-                        'file' => $exception->getFile(),
-                        'line' => $exception->getLine(),
-                    ];
-                } else {
-                    $message = 'Fatal '.$message;
-                }
-            } elseif ($exception instanceof \ErrorException) {
-                $message = 'Uncaught '.$message;
-            } else {
-                $message = 'Uncaught Exception: '.$message;
-            }
-        }
-        if ($this->loggedErrors & $type) {
-            try {
-                $this->loggers[$type][0]->log($this->loggers[$type][1], $message, ['exception' => $exception]);
-            } catch (\Throwable $handlerException) {
-            }
-        }
-        if ($exception instanceof FatalErrorException && !$exception instanceof OutOfMemoryException && $error) {
-            foreach ($this->getFatalErrorHandlers() as $handler) {
-                if ($e = $handler->handleError($error, $exception)) {
-                    $exception = $e;
-                    break;
-                }
-            }
-        }
-        $exceptionHandler = $this->exceptionHandler;
-        $this->exceptionHandler = null;
-        try {
-            if (null !== $exceptionHandler) {
-                $exceptionHandler($exception);
-
-                return;
-            }
-            $handlerException = $handlerException ?: $exception;
-        } catch (\Throwable $handlerException) {
-        }
-        if ($exception === $handlerException) {
-            self::$reservedMemory = null; // Disable the fatal error handler
-            throw $exception; // Give back $exception to the native handler
-        }
-        $this->handleException($handlerException);
-    }
-
-    /**
-     * Shutdown registered function for handling PHP fatal errors.
-     *
-     * @param array $error An array as returned by error_get_last()
-     *
-     * @internal
-     */
-    public static function handleFatalError(array $error = null)
-    {
-        if (null === self::$reservedMemory) {
-            return;
-        }
-
-        $handler = self::$reservedMemory = null;
-        $handlers = [];
-        $previousHandler = null;
-        $sameHandlerLimit = 10;
-
-        while (!\is_array($handler) || !$handler[0] instanceof self) {
-            $handler = set_exception_handler('var_dump');
-            restore_exception_handler();
-
-            if (!$handler) {
-                break;
-            }
-            restore_exception_handler();
-
-            if ($handler !== $previousHandler) {
-                array_unshift($handlers, $handler);
-                $previousHandler = $handler;
-            } elseif (0 === --$sameHandlerLimit) {
-                $handler = null;
-                break;
-            }
-        }
-        foreach ($handlers as $h) {
-            set_exception_handler($h);
-        }
-        if (!$handler) {
-            return;
-        }
-        if ($handler !== $h) {
-            $handler[0]->setExceptionHandler($h);
-        }
-        $handler = $handler[0];
-        $handlers = [];
-
-        if ($exit = null === $error) {
-            $error = error_get_last();
-        }
-
-        if ($error && $error['type'] &= \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR) {
-            // Let's not throw anymore but keep logging
-            $handler->throwAt(0, true);
-            $trace = isset($error['backtrace']) ? $error['backtrace'] : null;
-
-            if (0 === strpos($error['message'], 'Allowed memory') || 0 === strpos($error['message'], 'Out of memory')) {
-                $exception = new OutOfMemoryException($handler->levels[$error['type']].': '.$error['message'], 0, $error['type'], $error['file'], $error['line'], 2, false, $trace);
-            } else {
-                $exception = new FatalErrorException($handler->levels[$error['type']].': '.$error['message'], 0, $error['type'], $error['file'], $error['line'], 2, true, $trace);
-            }
-        } else {
-            $exception = null;
-        }
-
-        try {
-            if (null !== $exception) {
-                self::$exitCode = 255;
-                $handler->handleException($exception, $error);
-            }
-        } catch (FatalErrorException $e) {
-            // Ignore this re-throw
-        }
-
-        if ($exit && self::$exitCode) {
-            $exitCode = self::$exitCode;
-            register_shutdown_function('register_shutdown_function', function () use ($exitCode) { exit($exitCode); });
-        }
-    }
-
-    /**
-     * Gets the fatal error handlers.
-     *
-     * Override this method if you want to define more fatal error handlers.
-     *
-     * @return FatalErrorHandlerInterface[] An array of FatalErrorHandlerInterface
-     */
-    protected function getFatalErrorHandlers()
-    {
-        return [
-            new UndefinedFunctionFatalErrorHandler(),
-            new UndefinedMethodFatalErrorHandler(),
-            new ClassNotFoundFatalErrorHandler(),
-        ];
-    }
-
-    /**
-     * Cleans the trace by removing function arguments and the frames added by the error handler and DebugClassLoader.
-     */
-    private function cleanTrace(array $backtrace, int $type, string $file, int $line, bool $throw): array
-    {
-        $lightTrace = $backtrace;
-
-        for ($i = 0; isset($backtrace[$i]); ++$i) {
-            if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) {
-                $lightTrace = \array_slice($lightTrace, 1 + $i);
-                break;
-            }
-        }
-        if (class_exists(DebugClassLoader::class, false)) {
-            for ($i = \count($lightTrace) - 2; 0 < $i; --$i) {
-                if (DebugClassLoader::class === ($lightTrace[$i]['class'] ?? null)) {
-                    array_splice($lightTrace, --$i, 2);
-                }
-            }
-        }
-        if (!($throw || $this->scopedErrors & $type)) {
-            for ($i = 0; isset($lightTrace[$i]); ++$i) {
-                unset($lightTrace[$i]['args'], $lightTrace[$i]['object']);
-            }
-        }
-
-        return $lightTrace;
-    }
-}
diff --git a/vendor/symfony/debug/Exception/ClassNotFoundException.php b/vendor/symfony/debug/Exception/ClassNotFoundException.php
deleted file mode 100644
index 998e4a98b1336fd73aefc463d5694bac67e3a2f4..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Exception/ClassNotFoundException.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Exception;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ClassNotFoundException::class, \Symfony\Component\ErrorHandler\Error\ClassNotFoundError::class), \E_USER_DEPRECATED);
-
-/**
- * Class (or Trait or Interface) Not Found Exception.
- *
- * @author Konstanton Myakshin <koc-dp@yandex.ru>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\ClassNotFoundError instead.
- */
-class ClassNotFoundException extends FatalErrorException
-{
-    public function __construct(string $message, \ErrorException $previous)
-    {
-        parent::__construct(
-            $message,
-            $previous->getCode(),
-            $previous->getSeverity(),
-            $previous->getFile(),
-            $previous->getLine(),
-            null,
-            true,
-            null,
-            $previous->getPrevious()
-        );
-        $this->setTrace($previous->getTrace());
-    }
-}
diff --git a/vendor/symfony/debug/Exception/FatalErrorException.php b/vendor/symfony/debug/Exception/FatalErrorException.php
deleted file mode 100644
index ca342652511cd7f684789caad3bb494719f5cad5..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Exception/FatalErrorException.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Exception;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', FatalErrorException::class, \Symfony\Component\ErrorHandler\Error\FatalError::class), \E_USER_DEPRECATED);
-
-/**
- * Fatal Error Exception.
- *
- * @author Konstanton Myakshin <koc-dp@yandex.ru>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\FatalError instead.
- */
-class FatalErrorException extends \ErrorException
-{
-    public function __construct(string $message, int $code, int $severity, string $filename, int $lineno, int $traceOffset = null, bool $traceArgs = true, array $trace = null, \Throwable $previous = null)
-    {
-        parent::__construct($message, $code, $severity, $filename, $lineno, $previous);
-
-        if (null !== $trace) {
-            if (!$traceArgs) {
-                foreach ($trace as &$frame) {
-                    unset($frame['args'], $frame['this'], $frame);
-                }
-            }
-
-            $this->setTrace($trace);
-        } elseif (null !== $traceOffset) {
-            if (\function_exists('xdebug_get_function_stack')) {
-                $trace = xdebug_get_function_stack();
-                if (0 < $traceOffset) {
-                    array_splice($trace, -$traceOffset);
-                }
-
-                foreach ($trace as &$frame) {
-                    if (!isset($frame['type'])) {
-                        // XDebug pre 2.1.1 doesn't currently set the call type key http://bugs.xdebug.org/view.php?id=695
-                        if (isset($frame['class'])) {
-                            $frame['type'] = '::';
-                        }
-                    } elseif ('dynamic' === $frame['type']) {
-                        $frame['type'] = '->';
-                    } elseif ('static' === $frame['type']) {
-                        $frame['type'] = '::';
-                    }
-
-                    // XDebug also has a different name for the parameters array
-                    if (!$traceArgs) {
-                        unset($frame['params'], $frame['args']);
-                    } elseif (isset($frame['params']) && !isset($frame['args'])) {
-                        $frame['args'] = $frame['params'];
-                        unset($frame['params']);
-                    }
-                }
-
-                unset($frame);
-                $trace = array_reverse($trace);
-            } else {
-                $trace = [];
-            }
-
-            $this->setTrace($trace);
-        }
-    }
-
-    protected function setTrace($trace)
-    {
-        $traceReflector = new \ReflectionProperty('Exception', 'trace');
-        $traceReflector->setAccessible(true);
-        $traceReflector->setValue($this, $trace);
-    }
-}
diff --git a/vendor/symfony/debug/Exception/FatalThrowableError.php b/vendor/symfony/debug/Exception/FatalThrowableError.php
deleted file mode 100644
index 65634f51ee0f9a65c120fabe72173ac85d5c71a8..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Exception/FatalThrowableError.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Exception;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4.', FatalThrowableError::class), \E_USER_DEPRECATED);
-
-/**
- * Fatal Throwable Error.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @deprecated since Symfony 4.4
- */
-class FatalThrowableError extends FatalErrorException
-{
-    private $originalClassName;
-
-    public function __construct(\Throwable $e)
-    {
-        $this->originalClassName = get_debug_type($e);
-
-        if ($e instanceof \ParseError) {
-            $severity = \E_PARSE;
-        } elseif ($e instanceof \TypeError) {
-            $severity = \E_RECOVERABLE_ERROR;
-        } else {
-            $severity = \E_ERROR;
-        }
-
-        \ErrorException::__construct(
-            $e->getMessage(),
-            $e->getCode(),
-            $severity,
-            $e->getFile(),
-            $e->getLine(),
-            $e->getPrevious()
-        );
-
-        $this->setTrace($e->getTrace());
-    }
-
-    public function getOriginalClassName(): string
-    {
-        return $this->originalClassName;
-    }
-}
diff --git a/vendor/symfony/debug/Exception/FlattenException.php b/vendor/symfony/debug/Exception/FlattenException.php
deleted file mode 100644
index b48769a2a3dfb6672b5c6b5f12e45a07476ad2c4..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Exception/FlattenException.php
+++ /dev/null
@@ -1,367 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Exception;
-
-use Symfony\Component\HttpFoundation\Exception\RequestExceptionInterface;
-use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-
-/**
- * FlattenException wraps a PHP Error or Exception to be able to serialize it.
- *
- * Basically, this class removes all objects from the trace.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Exception\FlattenException instead.
- */
-class FlattenException
-{
-    private $message;
-    private $code;
-    private $previous;
-    private $trace;
-    private $traceAsString;
-    private $class;
-    private $statusCode;
-    private $headers;
-    private $file;
-    private $line;
-
-    /**
-     * @return static
-     */
-    public static function create(\Exception $exception, $statusCode = null, array $headers = [])
-    {
-        return static::createFromThrowable($exception, $statusCode, $headers);
-    }
-
-    /**
-     * @return static
-     */
-    public static function createFromThrowable(\Throwable $exception, int $statusCode = null, array $headers = [])
-    {
-        $e = new static();
-        $e->setMessage($exception->getMessage());
-        $e->setCode($exception->getCode());
-
-        if ($exception instanceof HttpExceptionInterface) {
-            $statusCode = $exception->getStatusCode();
-            $headers = array_merge($headers, $exception->getHeaders());
-        } elseif ($exception instanceof RequestExceptionInterface) {
-            $statusCode = 400;
-        }
-
-        if (null === $statusCode) {
-            $statusCode = 500;
-        }
-
-        $e->setStatusCode($statusCode);
-        $e->setHeaders($headers);
-        $e->setTraceFromThrowable($exception);
-        $e->setClass($exception instanceof FatalThrowableError ? $exception->getOriginalClassName() : get_debug_type($exception));
-        $e->setFile($exception->getFile());
-        $e->setLine($exception->getLine());
-
-        $previous = $exception->getPrevious();
-
-        if ($previous instanceof \Throwable) {
-            $e->setPrevious(static::createFromThrowable($previous));
-        }
-
-        return $e;
-    }
-
-    public function toArray()
-    {
-        $exceptions = [];
-        foreach (array_merge([$this], $this->getAllPrevious()) as $exception) {
-            $exceptions[] = [
-                'message' => $exception->getMessage(),
-                'class' => $exception->getClass(),
-                'trace' => $exception->getTrace(),
-            ];
-        }
-
-        return $exceptions;
-    }
-
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setStatusCode($code)
-    {
-        $this->statusCode = $code;
-
-        return $this;
-    }
-
-    public function getHeaders()
-    {
-        return $this->headers;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setHeaders(array $headers)
-    {
-        $this->headers = $headers;
-
-        return $this;
-    }
-
-    public function getClass()
-    {
-        return $this->class;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setClass($class)
-    {
-        $this->class = false !== strpos($class, "@anonymous\0") ? (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous' : $class;
-
-        return $this;
-    }
-
-    public function getFile()
-    {
-        return $this->file;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setFile($file)
-    {
-        $this->file = $file;
-
-        return $this;
-    }
-
-    public function getLine()
-    {
-        return $this->line;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setLine($line)
-    {
-        $this->line = $line;
-
-        return $this;
-    }
-
-    public function getMessage()
-    {
-        return $this->message;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setMessage($message)
-    {
-        if (false !== strpos($message, "@anonymous\0")) {
-            $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) {
-                return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0];
-            }, $message);
-        }
-
-        $this->message = $message;
-
-        return $this;
-    }
-
-    public function getCode()
-    {
-        return $this->code;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setCode($code)
-    {
-        $this->code = $code;
-
-        return $this;
-    }
-
-    public function getPrevious()
-    {
-        return $this->previous;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setPrevious(self $previous)
-    {
-        $this->previous = $previous;
-
-        return $this;
-    }
-
-    public function getAllPrevious()
-    {
-        $exceptions = [];
-        $e = $this;
-        while ($e = $e->getPrevious()) {
-            $exceptions[] = $e;
-        }
-
-        return $exceptions;
-    }
-
-    public function getTrace()
-    {
-        return $this->trace;
-    }
-
-    /**
-     * @deprecated since 4.1, use {@see setTraceFromThrowable()} instead.
-     */
-    public function setTraceFromException(\Exception $exception)
-    {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use "setTraceFromThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED);
-
-        $this->setTraceFromThrowable($exception);
-    }
-
-    public function setTraceFromThrowable(\Throwable $throwable)
-    {
-        $this->traceAsString = $throwable->getTraceAsString();
-
-        return $this->setTrace($throwable->getTrace(), $throwable->getFile(), $throwable->getLine());
-    }
-
-    /**
-     * @return $this
-     */
-    public function setTrace($trace, $file, $line)
-    {
-        $this->trace = [];
-        $this->trace[] = [
-            'namespace' => '',
-            'short_class' => '',
-            'class' => '',
-            'type' => '',
-            'function' => '',
-            'file' => $file,
-            'line' => $line,
-            'args' => [],
-        ];
-        foreach ($trace as $entry) {
-            $class = '';
-            $namespace = '';
-            if (isset($entry['class'])) {
-                $parts = explode('\\', $entry['class']);
-                $class = array_pop($parts);
-                $namespace = implode('\\', $parts);
-            }
-
-            $this->trace[] = [
-                'namespace' => $namespace,
-                'short_class' => $class,
-                'class' => isset($entry['class']) ? $entry['class'] : '',
-                'type' => isset($entry['type']) ? $entry['type'] : '',
-                'function' => isset($entry['function']) ? $entry['function'] : null,
-                'file' => isset($entry['file']) ? $entry['file'] : null,
-                'line' => isset($entry['line']) ? $entry['line'] : null,
-                'args' => isset($entry['args']) ? $this->flattenArgs($entry['args']) : [],
-            ];
-        }
-
-        return $this;
-    }
-
-    private function flattenArgs(array $args, int $level = 0, int &$count = 0): array
-    {
-        $result = [];
-        foreach ($args as $key => $value) {
-            if (++$count > 1e4) {
-                return ['array', '*SKIPPED over 10000 entries*'];
-            }
-            if ($value instanceof \__PHP_Incomplete_Class) {
-                // is_object() returns false on PHP<=7.1
-                $result[$key] = ['incomplete-object', $this->getClassNameFromIncomplete($value)];
-            } elseif (\is_object($value)) {
-                $result[$key] = ['object', \get_class($value)];
-            } elseif (\is_array($value)) {
-                if ($level > 10) {
-                    $result[$key] = ['array', '*DEEP NESTED ARRAY*'];
-                } else {
-                    $result[$key] = ['array', $this->flattenArgs($value, $level + 1, $count)];
-                }
-            } elseif (null === $value) {
-                $result[$key] = ['null', null];
-            } elseif (\is_bool($value)) {
-                $result[$key] = ['boolean', $value];
-            } elseif (\is_int($value)) {
-                $result[$key] = ['integer', $value];
-            } elseif (\is_float($value)) {
-                $result[$key] = ['float', $value];
-            } elseif (\is_resource($value)) {
-                $result[$key] = ['resource', get_resource_type($value)];
-            } else {
-                $result[$key] = ['string', (string) $value];
-            }
-        }
-
-        return $result;
-    }
-
-    private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value): string
-    {
-        $array = new \ArrayObject($value);
-
-        return $array['__PHP_Incomplete_Class_Name'];
-    }
-
-    public function getTraceAsString()
-    {
-        return $this->traceAsString;
-    }
-
-    public function getAsString()
-    {
-        $message = '';
-        $next = false;
-
-        foreach (array_reverse(array_merge([$this], $this->getAllPrevious())) as $exception) {
-            if ($next) {
-                $message .= 'Next ';
-            } else {
-                $next = true;
-            }
-            $message .= $exception->getClass();
-
-            if ('' != $exception->getMessage()) {
-                $message .= ': '.$exception->getMessage();
-            }
-
-            $message .= ' in '.$exception->getFile().':'.$exception->getLine().
-                "\nStack trace:\n".$exception->getTraceAsString()."\n\n";
-        }
-
-        return rtrim($message);
-    }
-}
diff --git a/vendor/symfony/debug/Exception/OutOfMemoryException.php b/vendor/symfony/debug/Exception/OutOfMemoryException.php
deleted file mode 100644
index b1dc0ef4badbac5ca8368acc0910996008df9e94..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Exception/OutOfMemoryException.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Exception;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', OutOfMemoryException::class, \Symfony\Component\ErrorHandler\Error\OutOfMemoryError::class), \E_USER_DEPRECATED);
-
-/**
- * Out of memory exception.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\OutOfMemoryError instead.
- */
-class OutOfMemoryException extends FatalErrorException
-{
-}
diff --git a/vendor/symfony/debug/Exception/SilencedErrorContext.php b/vendor/symfony/debug/Exception/SilencedErrorContext.php
deleted file mode 100644
index 03e2fb30ba8dfbcfce51d734b40d7d69594435d3..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Exception/SilencedErrorContext.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Exception;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', SilencedErrorContext::class, \Symfony\Component\ErrorHandler\Exception\SilencedErrorContext::class), \E_USER_DEPRECATED);
-
-/**
- * Data Object that represents a Silenced Error.
- *
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext instead.
- */
-class SilencedErrorContext implements \JsonSerializable
-{
-    public $count = 1;
-
-    private $severity;
-    private $file;
-    private $line;
-    private $trace;
-
-    public function __construct(int $severity, string $file, int $line, array $trace = [], int $count = 1)
-    {
-        $this->severity = $severity;
-        $this->file = $file;
-        $this->line = $line;
-        $this->trace = $trace;
-        $this->count = $count;
-    }
-
-    public function getSeverity()
-    {
-        return $this->severity;
-    }
-
-    public function getFile()
-    {
-        return $this->file;
-    }
-
-    public function getLine()
-    {
-        return $this->line;
-    }
-
-    public function getTrace()
-    {
-        return $this->trace;
-    }
-
-    public function jsonSerialize()
-    {
-        return [
-            'severity' => $this->severity,
-            'file' => $this->file,
-            'line' => $this->line,
-            'trace' => $this->trace,
-            'count' => $this->count,
-        ];
-    }
-}
diff --git a/vendor/symfony/debug/Exception/UndefinedFunctionException.php b/vendor/symfony/debug/Exception/UndefinedFunctionException.php
deleted file mode 100644
index 42ab2ec90eea7249cfe2a9cf7d703e87fc218f9b..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Exception/UndefinedFunctionException.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Exception;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedFunctionException::class, \Symfony\Component\ErrorHandler\Error\UndefinedFunctionError::class), \E_USER_DEPRECATED);
-
-/**
- * Undefined Function Exception.
- *
- * @author Konstanton Myakshin <koc-dp@yandex.ru>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\UndefinedFunctionError instead.
- */
-class UndefinedFunctionException extends FatalErrorException
-{
-    public function __construct(string $message, \ErrorException $previous)
-    {
-        parent::__construct(
-            $message,
-            $previous->getCode(),
-            $previous->getSeverity(),
-            $previous->getFile(),
-            $previous->getLine(),
-            null,
-            true,
-            null,
-            $previous->getPrevious()
-        );
-        $this->setTrace($previous->getTrace());
-    }
-}
diff --git a/vendor/symfony/debug/Exception/UndefinedMethodException.php b/vendor/symfony/debug/Exception/UndefinedMethodException.php
deleted file mode 100644
index d72046f3c33e0b33f9e5bd19d97fe5db83b71ae5..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Exception/UndefinedMethodException.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Exception;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedMethodException::class, \Symfony\Component\ErrorHandler\Error\UndefinedMethodError::class), \E_USER_DEPRECATED);
-
-/**
- * Undefined Method Exception.
- *
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\UndefinedMethodError instead.
- */
-class UndefinedMethodException extends FatalErrorException
-{
-    public function __construct(string $message, \ErrorException $previous)
-    {
-        parent::__construct(
-            $message,
-            $previous->getCode(),
-            $previous->getSeverity(),
-            $previous->getFile(),
-            $previous->getLine(),
-            null,
-            true,
-            null,
-            $previous->getPrevious()
-        );
-        $this->setTrace($previous->getTrace());
-    }
-}
diff --git a/vendor/symfony/debug/ExceptionHandler.php b/vendor/symfony/debug/ExceptionHandler.php
deleted file mode 100644
index 21be2827cd8642698fd234277e242732af300498..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/ExceptionHandler.php
+++ /dev/null
@@ -1,470 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug;
-
-use Symfony\Component\Debug\Exception\FlattenException;
-use Symfony\Component\Debug\Exception\OutOfMemoryException;
-use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ExceptionHandler::class, \Symfony\Component\ErrorHandler\ErrorHandler::class), \E_USER_DEPRECATED);
-
-/**
- * ExceptionHandler converts an exception to a Response object.
- *
- * It is mostly useful in debug mode to replace the default PHP/XDebug
- * output with something prettier and more useful.
- *
- * As this class is mainly used during Kernel boot, where nothing is yet
- * available, the Response content is always HTML.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final since Symfony 4.3
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorHandler instead.
- */
-class ExceptionHandler
-{
-    private const GHOST_ADDONS = [
-        '02-14' => self::GHOST_HEART,
-        '02-29' => self::GHOST_PLUS,
-        '10-18' => self::GHOST_GIFT,
-    ];
-
-    private const GHOST_GIFT = 'M124.005 5.36c.396-.715 1.119-1.648-.124-1.873-.346-.177-.692-.492-1.038-.141-.769.303-1.435.728-.627 1.523.36.514.685 1.634 1.092 1.758.242-.417.47-.842.697-1.266zm-1.699 1.977c-.706-1.26-1.274-2.612-2.138-3.774-1.051-1.123-3.122-.622-3.593.825-.625 1.431.724 3.14 2.251 2.96 1.159.02 2.324.072 3.48-.011zm5.867.043c1.502-.202 2.365-2.092 1.51-3.347-.757-1.34-2.937-1.387-3.698-.025-.659 1.1-1.23 2.25-1.835 3.38 1.336.077 2.686.06 4.023-.008zm2.487 1.611c.512-.45 2.494-.981.993-1.409-.372-.105-.805-.59-1.14-.457-.726.902-1.842 1.432-3.007 1.376-.228.075-1.391-.114-1.077.1.822.47 1.623.979 2.474 1.395.595-.317 1.173-.667 1.757-1.005zm-11.696.255l1.314-.765c-1.338-.066-2.87.127-3.881-.95-.285-.319-.559-.684-.954-.282-.473.326-1.929.66-.808 1.058.976.576 1.945 1.167 2.946 1.701.476-.223.926-.503 1.383-.762zm6.416 2.846c.567-.456 1.942-.89 1.987-1.38-1.282-.737-2.527-1.56-3.87-2.183-.461-.175-.835.094-1.207.328-1.1.654-2.225 1.267-3.288 1.978 1.39.86 2.798 1.695 4.219 2.504.725-.407 1.44-.83 2.16-1.247zm5.692 1.423l1.765-1.114c-.005-1.244.015-2.488-.019-3.732a77.306 77.306 0 0 0-3.51 2.084c-.126 1.282-.062 2.586-.034 3.876.607-.358 1.2-.741 1.798-1.114zm-13.804-.784c.06-1.06.19-2.269-1.09-2.583-.807-.376-1.926-1.341-2.548-1.332-.02 1.195-.01 2.39-.011 3.585 1.192.744 2.364 1.524 3.582 2.226.119-.616.041-1.269.067-1.896zm8.541 4.105l2.117-1.336c-.003-1.284.05-2.57-.008-3.853-.776.223-1.662.91-2.48 1.337l-1.834 1.075c.012 1.37-.033 2.744.044 4.113.732-.427 1.443-.887 2.161-1.336zm-2.957-.72v-2.057c-1.416-.828-2.828-1.664-4.25-2.482-.078 1.311-.033 2.627-.045 3.94 1.416.887 2.817 1.798 4.25 2.655.057-.683.036-1.372.045-2.057zm8.255 2.755l1.731-1.153c-.024-1.218.06-2.453-.062-3.658-1.2.685-2.358 1.464-3.537 2.195.028 1.261-.058 2.536.072 3.786.609-.373 1.2-.777 1.796-1.17zm-13.851-.683l-.014-1.916c-1.193-.746-2.37-1.517-3.58-2.234-.076 1.224-.033 2.453-.044 3.679 1.203.796 2.392 1.614 3.61 2.385.048-.636.024-1.276.028-1.914zm8.584 4.199l2.102-1.396c-.002-1.298.024-2.596-.01-3.893-1.427.88-2.843 1.775-4.25 2.686-.158 1.253-.055 2.545-.056 3.811.437.266 1.553-.912 2.214-1.208zm-2.988-.556c-.085-.894.365-2.154-.773-2.5-1.146-.727-2.288-1.46-3.45-2.163-.17 1.228.008 2.508-.122 3.751a79.399 79.399 0 0 0 4.278 2.885c.117-.641.044-1.32.067-1.973zm-4.872-.236l-5.087-3.396c.002-3.493-.047-6.988.015-10.48.85-.524 1.753-.954 2.627-1.434-.564-1.616.25-3.58 1.887-4.184 1.372-.563 3.025-.055 3.9 1.13l1.906-.978 1.916.987c.915-1.086 2.483-1.706 3.842-1.097 1.631.573 2.52 2.532 1.936 4.145.88.497 1.837.886 2.644 1.492.036 3.473 0 6.946-.003 10.419-3.374 2.233-6.693 4.55-10.122 6.699-.997 0-1.858-1.083-2.783-1.522a735.316 735.316 0 0 1-2.678-1.781z';
-    private const GHOST_HEART = 'M125.914 8.305c3.036-8.71 14.933 0 0 11.2-14.932-11.2-3.036-19.91 0-11.2z';
-    private const GHOST_PLUS = 'M111.368 8.97h7.324V1.645h7.512v7.323h7.324v7.513h-7.324v7.323h-7.512v-7.323h-7.324z';
-
-    private $debug;
-    private $charset;
-    private $handler;
-    private $caughtBuffer;
-    private $caughtLength;
-    private $fileLinkFormat;
-
-    public function __construct(bool $debug = true, string $charset = null, $fileLinkFormat = null)
-    {
-        $this->debug = $debug;
-        $this->charset = $charset ?: ini_get('default_charset') ?: 'UTF-8';
-        $this->fileLinkFormat = $fileLinkFormat;
-    }
-
-    /**
-     * Registers the exception handler.
-     *
-     * @param bool        $debug          Enable/disable debug mode, where the stack trace is displayed
-     * @param string|null $charset        The charset used by exception messages
-     * @param string|null $fileLinkFormat The IDE link template
-     *
-     * @return static
-     */
-    public static function register($debug = true, $charset = null, $fileLinkFormat = null)
-    {
-        $handler = new static($debug, $charset, $fileLinkFormat);
-
-        $prev = set_exception_handler([$handler, 'handle']);
-        if (\is_array($prev) && $prev[0] instanceof ErrorHandler) {
-            restore_exception_handler();
-            $prev[0]->setExceptionHandler([$handler, 'handle']);
-        }
-
-        return $handler;
-    }
-
-    /**
-     * Sets a user exception handler.
-     *
-     * @param callable $handler An handler that will be called on Exception
-     *
-     * @return callable|null The previous exception handler if any
-     */
-    public function setHandler(callable $handler = null)
-    {
-        $old = $this->handler;
-        $this->handler = $handler;
-
-        return $old;
-    }
-
-    /**
-     * Sets the format for links to source files.
-     *
-     * @param string|FileLinkFormatter $fileLinkFormat The format for links to source files
-     *
-     * @return string The previous file link format
-     */
-    public function setFileLinkFormat($fileLinkFormat)
-    {
-        $old = $this->fileLinkFormat;
-        $this->fileLinkFormat = $fileLinkFormat;
-
-        return $old;
-    }
-
-    /**
-     * Sends a response for the given Exception.
-     *
-     * To be as fail-safe as possible, the exception is first handled
-     * by our simple exception handler, then by the user exception handler.
-     * The latter takes precedence and any output from the former is cancelled,
-     * if and only if nothing bad happens in this handling path.
-     */
-    public function handle(\Exception $exception)
-    {
-        if (null === $this->handler || $exception instanceof OutOfMemoryException) {
-            $this->sendPhpResponse($exception);
-
-            return;
-        }
-
-        $caughtLength = $this->caughtLength = 0;
-
-        ob_start(function ($buffer) {
-            $this->caughtBuffer = $buffer;
-
-            return '';
-        });
-
-        $this->sendPhpResponse($exception);
-        while (null === $this->caughtBuffer && ob_end_flush()) {
-            // Empty loop, everything is in the condition
-        }
-        if (isset($this->caughtBuffer[0])) {
-            ob_start(function ($buffer) {
-                if ($this->caughtLength) {
-                    // use substr_replace() instead of substr() for mbstring overloading resistance
-                    $cleanBuffer = substr_replace($buffer, '', 0, $this->caughtLength);
-                    if (isset($cleanBuffer[0])) {
-                        $buffer = $cleanBuffer;
-                    }
-                }
-
-                return $buffer;
-            });
-
-            echo $this->caughtBuffer;
-            $caughtLength = ob_get_length();
-        }
-        $this->caughtBuffer = null;
-
-        try {
-            ($this->handler)($exception);
-            $this->caughtLength = $caughtLength;
-        } catch (\Exception $e) {
-            if (!$caughtLength) {
-                // All handlers failed. Let PHP handle that now.
-                throw $exception;
-            }
-        }
-    }
-
-    /**
-     * Sends the error associated with the given Exception as a plain PHP response.
-     *
-     * This method uses plain PHP functions like header() and echo to output
-     * the response.
-     *
-     * @param \Throwable|FlattenException $exception A \Throwable or FlattenException instance
-     */
-    public function sendPhpResponse($exception)
-    {
-        if ($exception instanceof \Throwable) {
-            $exception = FlattenException::createFromThrowable($exception);
-        }
-
-        if (!headers_sent()) {
-            header(sprintf('HTTP/1.0 %s', $exception->getStatusCode()));
-            foreach ($exception->getHeaders() as $name => $value) {
-                header($name.': '.$value, false);
-            }
-            header('Content-Type: text/html; charset='.$this->charset);
-        }
-
-        echo $this->decorate($this->getContent($exception), $this->getStylesheet($exception));
-    }
-
-    /**
-     * Gets the full HTML content associated with the given exception.
-     *
-     * @param \Exception|FlattenException $exception An \Exception or FlattenException instance
-     *
-     * @return string The HTML content as a string
-     */
-    public function getHtml($exception)
-    {
-        if (!$exception instanceof FlattenException) {
-            $exception = FlattenException::create($exception);
-        }
-
-        return $this->decorate($this->getContent($exception), $this->getStylesheet($exception));
-    }
-
-    /**
-     * Gets the HTML content associated with the given exception.
-     *
-     * @return string The content as a string
-     */
-    public function getContent(FlattenException $exception)
-    {
-        switch ($exception->getStatusCode()) {
-            case 404:
-                $title = 'Sorry, the page you are looking for could not be found.';
-                break;
-            default:
-                $title = $this->debug ? $this->escapeHtml($exception->getMessage()) : 'Whoops, looks like something went wrong.';
-        }
-
-        if (!$this->debug) {
-            return <<<EOF
-                <div class="container">
-                    <h1>$title</h1>
-                </div>
-EOF;
-        }
-
-        $content = '';
-        try {
-            $count = \count($exception->getAllPrevious());
-            $total = $count + 1;
-            foreach ($exception->toArray() as $position => $e) {
-                $ind = $count - $position + 1;
-                $class = $this->formatClass($e['class']);
-                $message = nl2br($this->escapeHtml($e['message']));
-                $content .= sprintf(<<<'EOF'
-                    <div class="trace trace-as-html">
-                        <table class="trace-details">
-                            <thead class="trace-head"><tr><th>
-                                <h3 class="trace-class">
-                                    <span class="text-muted">(%d/%d)</span>
-                                    <span class="exception_title">%s</span>
-                                </h3>
-                                <p class="break-long-words trace-message">%s</p>
-                            </th></tr></thead>
-                            <tbody>
-EOF
-                    , $ind, $total, $class, $message);
-                foreach ($e['trace'] as $trace) {
-                    $content .= '<tr><td>';
-                    if ($trace['function']) {
-                        $content .= sprintf('at <span class="trace-class">%s</span><span class="trace-type">%s</span><span class="trace-method">%s</span>', $this->formatClass($trace['class']), $trace['type'], $trace['function']);
-
-                        if (isset($trace['args'])) {
-                            $content .= sprintf('(<span class="trace-arguments">%s</span>)', $this->formatArgs($trace['args']));
-                        }
-                    }
-                    if (isset($trace['file']) && isset($trace['line'])) {
-                        $content .= $this->formatPath($trace['file'], $trace['line']);
-                    }
-                    $content .= "</td></tr>\n";
-                }
-
-                $content .= "</tbody>\n</table>\n</div>\n";
-            }
-        } catch (\Exception $e) {
-            // something nasty happened and we cannot throw an exception anymore
-            if ($this->debug) {
-                $e = FlattenException::create($e);
-                $title = sprintf('Exception thrown when handling an exception (%s: %s)', $e->getClass(), $this->escapeHtml($e->getMessage()));
-            } else {
-                $title = 'Whoops, looks like something went wrong.';
-            }
-        }
-
-        $symfonyGhostImageContents = $this->getSymfonyGhostAsSvg();
-
-        return <<<EOF
-            <div class="exception-summary">
-                <div class="container">
-                    <div class="exception-message-wrapper">
-                        <h1 class="break-long-words exception-message">$title</h1>
-                        <div class="exception-illustration hidden-xs-down">$symfonyGhostImageContents</div>
-                    </div>
-                </div>
-            </div>
-
-            <div class="container">
-                $content
-            </div>
-EOF;
-    }
-
-    /**
-     * Gets the stylesheet associated with the given exception.
-     *
-     * @return string The stylesheet as a string
-     */
-    public function getStylesheet(FlattenException $exception)
-    {
-        if (!$this->debug) {
-            return <<<'EOF'
-                body { background-color: #fff; color: #222; font: 16px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; margin: 0; }
-                .container { margin: 30px; max-width: 600px; }
-                h1 { color: #dc3545; font-size: 24px; }
-EOF;
-        }
-
-        return <<<'EOF'
-            body { background-color: #F9F9F9; color: #222; font: 14px/1.4 Helvetica, Arial, sans-serif; margin: 0; padding-bottom: 45px; }
-
-            a { cursor: pointer; text-decoration: none; }
-            a:hover { text-decoration: underline; }
-            abbr[title] { border-bottom: none; cursor: help; text-decoration: none; }
-
-            code, pre { font: 13px/1.5 Consolas, Monaco, Menlo, "Ubuntu Mono", "Liberation Mono", monospace; }
-
-            table, tr, th, td { background: #FFF; border-collapse: collapse; vertical-align: top; }
-            table { background: #FFF; border: 1px solid #E0E0E0; box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; width: 100%; }
-            table th, table td { border: solid #E0E0E0; border-width: 1px 0; padding: 8px 10px; }
-            table th { background-color: #E0E0E0; font-weight: bold; text-align: left; }
-
-            .hidden-xs-down { display: none; }
-            .block { display: block; }
-            .break-long-words { -ms-word-break: break-all; word-break: break-all; word-break: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; }
-            .text-muted { color: #999; }
-
-            .container { max-width: 1024px; margin: 0 auto; padding: 0 15px; }
-            .container::after { content: ""; display: table; clear: both; }
-
-            .exception-summary { background: #B0413E; border-bottom: 2px solid rgba(0, 0, 0, 0.1); border-top: 1px solid rgba(0, 0, 0, .3); flex: 0 0 auto; margin-bottom: 30px; }
-
-            .exception-message-wrapper { display: flex; align-items: center; min-height: 70px; }
-            .exception-message { flex-grow: 1; padding: 30px 0; }
-            .exception-message, .exception-message a { color: #FFF; font-size: 21px; font-weight: 400; margin: 0; }
-            .exception-message.long { font-size: 18px; }
-            .exception-message a { border-bottom: 1px solid rgba(255, 255, 255, 0.5); font-size: inherit; text-decoration: none; }
-            .exception-message a:hover { border-bottom-color: #ffffff; }
-
-            .exception-illustration { flex-basis: 111px; flex-shrink: 0; height: 66px; margin-left: 15px; opacity: .7; }
-
-            .trace + .trace { margin-top: 30px; }
-            .trace-head .trace-class { color: #222; font-size: 18px; font-weight: bold; line-height: 1.3; margin: 0; position: relative; }
-
-            .trace-message { font-size: 14px; font-weight: normal; margin: .5em 0 0; }
-
-            .trace-file-path, .trace-file-path a { color: #222; margin-top: 3px; font-size: 13px; }
-            .trace-class { color: #B0413E; }
-            .trace-type { padding: 0 2px; }
-            .trace-method { color: #B0413E; font-weight: bold; }
-            .trace-arguments { color: #777; font-weight: normal; padding-left: 2px; }
-
-            @media (min-width: 575px) {
-                .hidden-xs-down { display: initial; }
-            }
-EOF;
-    }
-
-    private function decorate(string $content, string $css): string
-    {
-        return <<<EOF
-<!DOCTYPE html>
-<html>
-    <head>
-        <meta charset="{$this->charset}" />
-        <meta name="robots" content="noindex,nofollow" />
-        <style>$css</style>
-    </head>
-    <body>
-        $content
-    </body>
-</html>
-EOF;
-    }
-
-    private function formatClass(string $class): string
-    {
-        $parts = explode('\\', $class);
-
-        return sprintf('<abbr title="%s">%s</abbr>', $class, array_pop($parts));
-    }
-
-    private function formatPath(string $path, int $line): string
-    {
-        $file = $this->escapeHtml(preg_match('#[^/\\\\]*+$#', $path, $file) ? $file[0] : $path);
-        $fmt = $this->fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
-
-        if (!$fmt) {
-            return sprintf('<span class="block trace-file-path">in <span title="%s%3$s"><strong>%s</strong>%s</span></span>', $this->escapeHtml($path), $file, 0 < $line ? ' line '.$line : '');
-        }
-
-        if (\is_string($fmt)) {
-            $i = strpos($f = $fmt, '&', max(strrpos($f, '%f'), strrpos($f, '%l'))) ?: \strlen($f);
-            $fmt = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, \PREG_SPLIT_DELIM_CAPTURE);
-
-            for ($i = 1; isset($fmt[$i]); ++$i) {
-                if (0 === strpos($path, $k = $fmt[$i++])) {
-                    $path = substr_replace($path, $fmt[$i], 0, \strlen($k));
-                    break;
-                }
-            }
-
-            $link = strtr($fmt[0], ['%f' => $path, '%l' => $line]);
-        } else {
-            try {
-                $link = $fmt->format($path, $line);
-            } catch (\Exception $e) {
-                return sprintf('<span class="block trace-file-path">in <span title="%s%3$s"><strong>%s</strong>%s</span></span>', $this->escapeHtml($path), $file, 0 < $line ? ' line '.$line : '');
-            }
-        }
-
-        return sprintf('<span class="block trace-file-path">in <a href="%s" title="Go to source"><strong>%s</string>%s</a></span>', $this->escapeHtml($link), $file, 0 < $line ? ' line '.$line : '');
-    }
-
-    /**
-     * Formats an array as a string.
-     */
-    private function formatArgs(array $args): string
-    {
-        $result = [];
-        foreach ($args as $key => $item) {
-            if ('object' === $item[0]) {
-                $formattedValue = sprintf('<em>object</em>(%s)', $this->formatClass($item[1]));
-            } elseif ('array' === $item[0]) {
-                $formattedValue = sprintf('<em>array</em>(%s)', \is_array($item[1]) ? $this->formatArgs($item[1]) : $item[1]);
-            } elseif ('null' === $item[0]) {
-                $formattedValue = '<em>null</em>';
-            } elseif ('boolean' === $item[0]) {
-                $formattedValue = '<em>'.strtolower(var_export($item[1], true)).'</em>';
-            } elseif ('resource' === $item[0]) {
-                $formattedValue = '<em>resource</em>';
-            } else {
-                $formattedValue = str_replace("\n", '', $this->escapeHtml(var_export($item[1], true)));
-            }
-
-            $result[] = \is_int($key) ? $formattedValue : sprintf("'%s' => %s", $this->escapeHtml($key), $formattedValue);
-        }
-
-        return implode(', ', $result);
-    }
-
-    /**
-     * HTML-encodes a string.
-     */
-    private function escapeHtml(string $str): string
-    {
-        return htmlspecialchars($str, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset);
-    }
-
-    private function getSymfonyGhostAsSvg(): string
-    {
-        return '<svg viewBox="0 0 136 81" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.4"><path d="M92.4 20.4a23.2 23.2 0 0 1 9 1.9 23.7 23.7 0 0 1 5.2 3 24.3 24.3 0 0 1 3.4 3.4 24.8 24.8 0 0 1 5 9.4c.5 1.7.8 3.4 1 5.2v14.5h.4l.5.2a7.4 7.4 0 0 0 2.5.2l.2-.2.6-.8.8-1.3-.2-.1a5.5 5.5 0 0 1-.8-.3 5.6 5.6 0 0 1-2.3-1.8 5.7 5.7 0 0 1-.9-1.6 6.5 6.5 0 0 1-.2-2.8 7.3 7.3 0 0 1 .5-2l.3-.3.8-.9.3-.3c.2-.2.5-.3.8-.3H120.7c.2 0 .3-.1.4 0h.4l.2.1.3.2.2-.4.3-.4.1-.1 1.2-1 .3-.2.4-.1.4-.1h.3l1.5.1.4.1.8.5.1.2 1 1.1v.2H129.4l.4-.2 1.4-.5h1.1c.3 0 .7.2 1 .4.2 0 .3.2.5.3l.2.2.5.3.4.6.1.3.4 1.4.1.4v.6a7.8 7.8 0 0 1-.1.6 9.9 9.9 0 0 1-.8 2.4 7.8 7.8 0 0 1-3 3.3 6.4 6.4 0 0 1-1 .5 6.1 6.1 0 0 1-.6.2l-.7.1h-.1a23.4 23.4 0 0 1-.2 1.7 14.3 14.3 0 0 1-.6 2.1l-.8 2a9.2 9.2 0 0 1-.4.6l-.7 1a9.1 9.1 0 0 1-2.3 2.2c-.9.5-2 .6-3 .7l-1.4.1h-.5l-.4.1a15.8 15.8 0 0 1-2.8-.1v4.2a9.7 9.7 0 0 1-.7 3.5 9.6 9.6 0 0 1-1.7 2.8 9.3 9.3 0 0 1-3 2.3 9 9 0 0 1-5.4.7 9 9 0 0 1-3-1 9.4 9.4 0 0 1-2.7-2.5 10 10 0 0 1-1 1.2 9.3 9.3 0 0 1-2 1.3 9 9 0 0 1-2.4 1 9 9 0 0 1-6.5-1.1A9.4 9.4 0 0 1 85 77V77a10.9 10.9 0 0 1-.6.6 9.3 9.3 0 0 1-2.7 2 9 9 0 0 1-6 .8 9 9 0 0 1-2.4-1 9.3 9.3 0 0 1-2.3-1.7 9.6 9.6 0 0 1-1.8-2.8 9.7 9.7 0 0 1-.8-3.7v-4a18.5 18.5 0 0 1-2.9.2l-1.2-.1c-1.9-.3-3.7-1-5.1-2.1A8.2 8.2 0 0 1 58 64a10.2 10.2 0 0 1-.9-1.2 15.3 15.3 0 0 1-.7-1.3 20.8 20.8 0 0 1-1.9-6.2v-.2a6.5 6.5 0 0 1-1-.3 6.1 6.1 0 0 1-.6-.3 6.6 6.6 0 0 1-.9-.5 8.2 8.2 0 0 1-2.7-3.8 10 10 0 0 1-.3-1 10.3 10.3 0 0 1-.3-1.9V47v-.4l.1-.4.6-1.4.1-.2a2 2 0 0 1 .8-.8l.3-.2.3-.2a3.2 3.2 0 0 1 1.8-.5h.4l.3.2 1.4.6.2.2.4.3.3.4.7-.7.2-.2.4-.2.6-.2h2.1l.4.2.4.2.3.2.8 1 .2-.1h.1v-.1H63l1.1.1h.3l.8.5.3.4.7 1 .2.3.1.5a11 11 0 0 1 .2 1.5c0 .8 0 1.6-.3 2.3a6 6 0 0 1-.5 1.2 5.5 5.5 0 0 1-3.3 2.5 12.3 12.3 0 0 0 1.4 3h.1l.2.1 1 .2h1.5l.5-.2H67.8l.5-.2h.1V44v-.4a26.7 26.7 0 0 1 .3-2.3 24.7 24.7 0 0 1 5.7-12.5 24.2 24.2 0 0 1 3.5-3.3 23.7 23.7 0 0 1 4.9-3 23.2 23.2 0 0 1 5.6-1.7 23.7 23.7 0 0 1 4-.3zm-.3 2a21.2 21.2 0 0 0-8 1.7 21.6 21.6 0 0 0-4.8 2.7 22.2 22.2 0 0 0-3.2 3 22.7 22.7 0 0 0-5 9.2 23.4 23.4 0 0 0-.7 4.9v15.7l-.5.1a34.3 34.3 0 0 1-1.5.3h-.2l-.4.1h-.4l-.9.2a10 10 0 0 1-1.9 0c-.5 0-1-.2-1.5-.4a1.8 1.8 0 0 1-.3-.2 2 2 0 0 1-.3-.3 5.2 5.2 0 0 1-.1-.2 9 9 0 0 1-.6-.9 13.8 13.8 0 0 1-1-2 14.3 14.3 0 0 1-.6-2 14 14 0 0 1-.1-.8v-.2h.3a12.8 12.8 0 0 0 1.4-.2 4.4 4.4 0 0 0 .3 0 3.6 3.6 0 0 0 1.1-.7 3.4 3.4 0 0 0 1.2-1.7l.2-1.2a5.1 5.1 0 0 0 0-.8 7.2 7.2 0 0 0-.1-.8l-.7-1-1.2-.2-1 .7-.1 1.3a5 5 0 0 1 .1.4v.6a1 1 0 0 1 0 .3c-.1.3-.4.4-.7.5l-1.2.4v-.7A9.9 9.9 0 0 1 60 49l.3-.6v-.2l.1-.1v-1.6l-1-1.2h-1.5l-1 1.1v.4a5.3 5.3 0 0 0-.2.6 5.5 5.5 0 0 0 0 .5c0 .7 0 1.4.3 2 0 .4.2.8.4 1.2L57 51a9.5 9.5 0 0 1-1.1-.5h-.2a2 2 0 0 1-.4-.3c-.4-.4-.5-1-.6-1.6a5.6 5.6 0 0 1 0-.5v-.5-.5l-.6-1.5-1.4-.6-.9.3s-.2 0-.3.2a2 2 0 0 1-.1 0l-.6 1.4v.7a8.5 8.5 0 0 0 .5 2c.4 1.1 1 2.1 2 2.8a4.7 4.7 0 0 0 2.1.9h1a22.8 22.8 0 0 0 .1 1 18.1 18.1 0 0 0 .8 3.8 18.2 18.2 0 0 0 1.6 3.7l1 1.3c1 1 2.3 1.6 3.7 2a11.7 11.7 0 0 0 4.8 0h.4l.5-.2.5-.1.6-.2v6.6a8 8 0 0 0 .1 1.3 7.5 7.5 0 0 0 2.4 4.3 7.2 7.2 0 0 0 2.3 1.3 7 7 0 0 0 7-1.1 7.5 7.5 0 0 0 2-2.6A7.7 7.7 0 0 0 85 72V71a8.2 8.2 0 0 0 .2 1.3c0 .7.3 1.4.6 2a7.5 7.5 0 0 0 1.7 2.3 7.3 7.3 0 0 0 2.2 1.4 7.1 7.1 0 0 0 4.6.2 7.2 7.2 0 0 0 2.4-1.2 7.5 7.5 0 0 0 2.1-2.7 7.8 7.8 0 0 0 .7-2.4V71a9.3 9.3 0 0 0 .1.6 7.6 7.6 0 0 0 .6 2.5 7.5 7.5 0 0 0 2.4 3 7.1 7.1 0 0 0 7 .8 7.3 7.3 0 0 0 2.3-1.5 7.5 7.5 0 0 0 1.6-2.3 7.6 7.6 0 0 0 .5-2l.1-1.1v-6.7l.4.1a12.2 12.2 0 0 0 2 .5 11.1 11.1 0 0 0 2.5 0h.8l1.2-.1a9.5 9.5 0 0 0 1.4-.2l.9-.3a3.5 3.5 0 0 0 .6-.4l1.2-1.4a12.2 12.2 0 0 0 .8-1.2c0-.3.2-.5.3-.7a15.9 15.9 0 0 0 .7-2l.3-1.6v-1.3l.2-.9V54.6a15.5 15.5 0 0 0 1.8 0 4.5 4.5 0 0 0 1.4-.5 5.7 5.7 0 0 0 2.5-3.2 7.6 7.6 0 0 0 .4-1.5v-.3l-.4-1.4a5.2 5.2 0 0 1-.2-.1l-.4-.4a3.8 3.8 0 0 0-.2 0 1.4 1.4 0 0 0-.5-.2l-1.4.4-.7 1.3v.7a5.7 5.7 0 0 1-.1.8l-.7 1.4a1.9 1.9 0 0 1-.5.3h-.3a9.6 9.6 0 0 1-.8.3 8.8 8.8 0 0 1-.6 0l.2-.4.2-.5.2-.3v-.4l.1-.2V50l.1-1 .1-.6v-.6a4.8 4.8 0 0 0 0-.8v-.2l-1-1.1-1.5-.2-1.1 1-.2 1.4v.1l.2.4.2.3v.4l.1 1.1v.3l.1.5v.8a9.6 9.6 0 0 1-.8-.3l-.2-.1h-.3l-.8-.1h-.2a1.6 1.6 0 0 1-.2-.2.9.9 0 0 1-.2-.2 1 1 0 0 1-.1-.5l.2-.9v-1.2l-.9-.8h-1.2l-.8.9v.3a4.8 4.8 0 0 0-.3 2l.3.9a3.5 3.5 0 0 0 1.2 1.6l1 .5.8.2 1.4.1h.4l.2.1a12.1 12.1 0 0 1-1 2.6 13.2 13.2 0 0 1-.8 1.5 9.5 9.5 0 0 1-1 1.2l-.2.3a1.7 1.7 0 0 1-.4.3 2.4 2.4 0 0 1-.7.2h-2.5a7.8 7.8 0 0 1-.6-.2l-.7-.2h-.2a14.8 14.8 0 0 1-.6-.2 23.4 23.4 0 0 1-.4-.1l-.4-.1-.3-.1V43.9a34.6 34.6 0 0 0 0-.6 23.6 23.6 0 0 0-.4-3 22.7 22.7 0 0 0-1.5-4.7 22.6 22.6 0 0 0-4.6-6.7 21.9 21.9 0 0 0-6.9-4.7 21.2 21.2 0 0 0-8.1-1.8H92zm9.1 33.7l.3.1a1 1 0 0 1 .6.8v.4a8.4 8.4 0 0 1 0 .5 8.8 8.8 0 0 1-1.6 4.2l-1 1.3A10 10 0 0 1 95 66c-1.3.3-2.7.4-4 .3a10.4 10.4 0 0 1-2.7-.8 10 10 0 0 1-3.6-2.5 9.3 9.3 0 0 1-.8-1 9 9 0 0 1-.7-1.2 8.6 8.6 0 0 1-.8-3.4V57a1 1 0 0 1 .3-.6 1 1 0 0 1 1.3-.2 1 1 0 0 1 .4.8v.4a6.5 6.5 0 0 0 .5 2.2 7 7 0 0 0 2.1 2.8l1 .6c2.6 1.6 6 1.6 8.5 0a8 8 0 0 0 1.1-.6 7.6 7.6 0 0 0 1.2-1.2 7 7 0 0 0 1-1.7 6.5 6.5 0 0 0 .4-2.5 1 1 0 0 1 .7-1h.4zM30.7 43.7c-15.5 1-28.5-6-30.1-16.4C-1.2 15.7 11.6 4 29 1.3 46.6-1.7 62.3 5.5 64 17.1c1.6 10.4-8.7 21-23.7 25a31.2 31.2 0 0 0 0 .9v.3a19 19 0 0 0 .1 1l.1.4.1.9a4.7 4.7 0 0 0 .5 1l.7 1a9.2 9.2 0 0 0 1.2 1l1.5.8.6.8-.7.6-1.1.3a11.2 11.2 0 0 1-2.6.4 8.6 8.6 0 0 1-3-.5 8.5 8.5 0 0 1-1-.4 11.2 11.2 0 0 1-1.8-1.2 13.3 13.3 0 0 1-1-1 18 18 0 0 1-.7-.6l-.4-.4a23.4 23.4 0 0 1-1.3-1.8l-.1-.1-.3-.5V45l-.3-.6v-.7zM83.1 36c3.6 0 6.5 3.2 6.5 7.1 0 4-3 7.2-6.5 7.2S76.7 47 76.7 43 79.6 36 83 36zm18 0c3.6 0 6.5 3.2 6.5 7.1 0 4-2.9 7.2-6.4 7.2S94.7 47 94.7 43s3-7.1 6.5-7.1zm-18 6.1c2 0 3.5 1.6 3.5 3.6S85 49.2 83 49.2s-3.4-1.6-3.4-3.6S81.2 42 83 42zm17.9 0c1.9 0 3.4 1.6 3.4 3.6s-1.5 3.6-3.4 3.6c-2 0-3.5-1.6-3.5-3.6S99.1 42 101 42zM17 28c-.3 1.6-1.8 5-5.2 5.8-2.5.6-4.1-.8-4.5-2.6-.4-1.9.7-3.5 2.1-4.5A3.5 3.5 0 0 1 8 24.6c-.4-2 .8-3.7 3.2-4.2 1.9-.5 3.1.2 3.4 1.5.3 1.1-.5 2.2-1.8 2.5-.9.3-1.6 0-1.7-.6a1.4 1.4 0 0 1 0-.7s.3.2 1 0c.7-.1 1-.7.9-1.2-.2-.6-1-.8-1.8-.6-1 .2-2 1-1.7 2.6.3 1 .9 1.6 1.5 1.8l.7-.2c1-.2 1.5 0 1.6.5 0 .4-.2 1-1.2 1.2a3.3 3.3 0 0 1-1.5 0c-.9.7-1.6 1.9-1.3 3.2.3 1.3 1.3 2.2 3 1.8 2.5-.7 3.8-3.7 4.2-5-.3-.5-.6-1-.7-1.6-.1-.5.1-1 .9-1.2.4 0 .7.2.8.8a2.8 2.8 0 0 1 0 1l.7 1c.6-2 1.4-4 1.7-4 .6-.2 1.5.6 1.5.6-.8.7-1.7 2.4-2.3 4.2.8.6 1.6 1 2.1 1 .5-.1.8-.6 1-1.2-.3-2.2 1-4.3 2.3-4.6.7-.2 1.3.2 1.4.8.1.5 0 1.3-.9 1.7-.2-1-.6-1.3-1-1.3-.4.1-.7 1.4-.4 2.8.2 1 .7 1.5 1.3 1.4.8-.2 1.3-1.2 1.7-2.1-.3-2.1.9-4.2 2.2-4.5.7-.2 1.2.1 1.4 1 .4 1.4-1 2.8-2.2 3.4.3.7.7 1 1.3.9 1-.3 1.6-1.5 2-2.5l-.5-3v-.3s1.6-.3 1.8.6v.1c.2-.6.7-1.2 1.3-1.4.8-.1 1.5.6 1.7 1.6.5 2.2-.5 4.4-1.8 4.7H33a31.9 31.9 0 0 0 1 5.2c-.4.1-1.8.4-2-.4l-.5-5.6c-.5 1-1.3 2.2-2.5 2.4-1 .3-1.6-.3-2-1.1-.5 1-1.3 2.1-2.4 2.4-.8.2-1.5-.1-2-1-.3.8-.9 1.5-1.5 1.7-.7.1-1.5-.3-2.4-1-.3.8-.4 1.6-.4 2.2 0 0-.7 0-.8-.4-.1-.5 0-1.5.3-2.7a10.3 10.3 0 0 1-.7-.8zm38.2-17.8l.2.9c.5 1.9.4 4.4.8 6.4 0 .6-.4 3-1.4 3.3-.2 0-.3 0-.4-.4-.1-.7 0-1.6-.3-2.6-.2-1.1-.8-1.6-1.5-1.5-.8.2-1.3 1-1.6 2l-.1-.5c-.2-1-1.8-.6-1.8-.6a6.2 6.2 0 0 1 .4 1.3l.2 1c-.2.5-.6 1-1.2 1l-.2.1a7 7 0 0 0-.1-.8c-.3-1.1-1-2-1.6-1.8a.7.7 0 0 0-.4.3c-1.3.3-2.4 2-2.1 3.9-.2.9-.6 1.7-1 1.9-.5 0-.8-.5-1.1-1.8l-.1-1.2a4 4 0 0 0 0-1.7c0-.4-.4-.7-.8-.6-.7.2-.9 1.7-.5 3.8-.2 1-.6 2-1.3 2-.4.2-.8-.2-1-1l-.2-3c1.2-.5 2-1 1.8-1.7-.1-.5-.8-.7-.8-.7s0 .7-1 1.2l-.2-1.4c-.1-.6-.4-1-1.7-.6l.4 1 .2 1.5h-1v.8c0 .3.4.3 1 .2 0 1.3 0 2.7.2 3.6.3 1.4 1.2 2 2 1.7 1-.2 1.6-1.3 2-2.3.3 1.2 1 2 1.9 1.7.7-.2 1.2-1.1 1.6-2.2.4.8 1.1 1.1 2 1 1.2-.4 1.7-1.6 1.8-2.8h.2c.6-.2 1-.6 1.3-1 0 .8 0 1.5.2 2.1.1.5.3.7.6.6.5-.1 1-.9 1-.9a4 4 0 0 1-.3-1c-.3-1.3.3-3.6 1-3.7.2 0 .3.2.5.7v.8l.2 1.5v.7c.2.7.7 1.3 1.5 1 1.3-.2 2-2.6 2.1-3.9.3.2.6.2 1 .1-.6-2.2 0-6.1-.3-7.9-.1-.4-1-.5-1.7-.5h-.4zm-21.5 12c.4 0 .7.3 1 1.1.2 1.3-.3 2.6-.9 2.8-.2 0-.7 0-1-1.2v-.4c0-1.3.4-2 1-2.2zm-5.2 1c.3 0 .6.2.6.5.2.6-.3 1.3-1.2 2-.3-1.4.1-2.3.6-2.5zm18-.4c-.5.2-1-.4-1.2-1.2-.2-1 0-2.1.7-2.5v.5c.2.7.6 1.5 1.3 1.9 0 .7-.2 1.2-.7 1.3zm10-1.6c0 .5.4.7 1 .6.8-.2 1-1 .8-1.6 0-.5-.4-1-1-.8-.5.1-1 .9-.8 1.8zm-14.3-5.5c0-.4-.5-.7-1-.5-.8.2-1 1-.9 1.5.2.6.5 1 1 .8.5 0 1.1-1 1-1.8z" fill="#fff" fill-opacity=".6"/>'.$this->addElementToGhost().'</svg>';
-    }
-
-    private function addElementToGhost(): string
-    {
-        if (!isset(self::GHOST_ADDONS[date('m-d')])) {
-            return '';
-        }
-
-        return '<path d="'.self::GHOST_ADDONS[date('m-d')].'" fill="#fff" fill-opacity="0.6"></path>';
-    }
-}
diff --git a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
deleted file mode 100644
index 64d7551343e7a5d5ab5ee8ea8faeae251be50a51..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\FatalErrorHandler;
-
-use Composer\Autoload\ClassLoader as ComposerClassLoader;
-use Symfony\Component\ClassLoader\ClassLoader as SymfonyClassLoader;
-use Symfony\Component\Debug\DebugClassLoader;
-use Symfony\Component\Debug\Exception\ClassNotFoundException;
-use Symfony\Component\Debug\Exception\FatalErrorException;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ClassNotFoundFatalErrorHandler::class, \Symfony\Component\ErrorHandler\FatalErrorHandler\ClassNotFoundFatalErrorHandler::class), \E_USER_DEPRECATED);
-
-/**
- * ErrorHandler for classes that do not exist.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\FatalErrorHandler\ClassNotFoundFatalErrorHandler instead.
- */
-class ClassNotFoundFatalErrorHandler implements FatalErrorHandlerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function handleError(array $error, FatalErrorException $exception)
-    {
-        if (!preg_match('/^(Class|Interface|Trait) [\'"]([^\'"]+)[\'"] not found$/', $error['message'], $matches)) {
-            return null;
-        }
-        $typeName = strtolower($matches[1]);
-        $fullyQualifiedClassName = $matches[2];
-
-        if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedClassName, '\\')) {
-            $className = substr($fullyQualifiedClassName, $namespaceSeparatorIndex + 1);
-            $namespacePrefix = substr($fullyQualifiedClassName, 0, $namespaceSeparatorIndex);
-            $message = sprintf('Attempted to load %s "%s" from namespace "%s".', $typeName, $className, $namespacePrefix);
-            $tail = ' for another namespace?';
-        } else {
-            $className = $fullyQualifiedClassName;
-            $message = sprintf('Attempted to load %s "%s" from the global namespace.', $typeName, $className);
-            $tail = '?';
-        }
-
-        if ($candidates = $this->getClassCandidates($className)) {
-            $tail = array_pop($candidates).'"?';
-            if ($candidates) {
-                $tail = ' for e.g. "'.implode('", "', $candidates).'" or "'.$tail;
-            } else {
-                $tail = ' for "'.$tail;
-            }
-        }
-        $message .= "\nDid you forget a \"use\" statement".$tail;
-
-        return new ClassNotFoundException($message, $exception);
-    }
-
-    /**
-     * Tries to guess the full namespace for a given class name.
-     *
-     * By default, it looks for PSR-0 and PSR-4 classes registered via a Symfony or a Composer
-     * autoloader (that should cover all common cases).
-     *
-     * @param string $class A class name (without its namespace)
-     *
-     * @return array An array of possible fully qualified class names
-     */
-    private function getClassCandidates(string $class): array
-    {
-        if (!\is_array($functions = spl_autoload_functions())) {
-            return [];
-        }
-
-        // find Symfony and Composer autoloaders
-        $classes = [];
-
-        foreach ($functions as $function) {
-            if (!\is_array($function)) {
-                continue;
-            }
-            // get class loaders wrapped by DebugClassLoader
-            if ($function[0] instanceof DebugClassLoader) {
-                $function = $function[0]->getClassLoader();
-
-                if (!\is_array($function)) {
-                    continue;
-                }
-            }
-
-            if ($function[0] instanceof ComposerClassLoader || $function[0] instanceof SymfonyClassLoader) {
-                foreach ($function[0]->getPrefixes() as $prefix => $paths) {
-                    foreach ($paths as $path) {
-                        $classes = array_merge($classes, $this->findClassInPath($path, $class, $prefix));
-                    }
-                }
-            }
-            if ($function[0] instanceof ComposerClassLoader) {
-                foreach ($function[0]->getPrefixesPsr4() as $prefix => $paths) {
-                    foreach ($paths as $path) {
-                        $classes = array_merge($classes, $this->findClassInPath($path, $class, $prefix));
-                    }
-                }
-            }
-        }
-
-        return array_unique($classes);
-    }
-
-    private function findClassInPath(string $path, string $class, string $prefix): array
-    {
-        if (!$path = realpath($path.'/'.strtr($prefix, '\\_', '//')) ?: realpath($path.'/'.\dirname(strtr($prefix, '\\_', '//'))) ?: realpath($path)) {
-            return [];
-        }
-
-        $classes = [];
-        $filename = $class.'.php';
-        foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
-            if ($filename == $file->getFileName() && $class = $this->convertFileToClass($path, $file->getPathName(), $prefix)) {
-                $classes[] = $class;
-            }
-        }
-
-        return $classes;
-    }
-
-    private function convertFileToClass(string $path, string $file, string $prefix): ?string
-    {
-        $candidates = [
-            // namespaced class
-            $namespacedClass = str_replace([$path.\DIRECTORY_SEPARATOR, '.php', '/'], ['', '', '\\'], $file),
-            // namespaced class (with target dir)
-            $prefix.$namespacedClass,
-            // namespaced class (with target dir and separator)
-            $prefix.'\\'.$namespacedClass,
-            // PEAR class
-            str_replace('\\', '_', $namespacedClass),
-            // PEAR class (with target dir)
-            str_replace('\\', '_', $prefix.$namespacedClass),
-            // PEAR class (with target dir and separator)
-            str_replace('\\', '_', $prefix.'\\'.$namespacedClass),
-        ];
-
-        if ($prefix) {
-            $candidates = array_filter($candidates, function ($candidate) use ($prefix) { return 0 === strpos($candidate, $prefix); });
-        }
-
-        // We cannot use the autoloader here as most of them use require; but if the class
-        // is not found, the new autoloader call will require the file again leading to a
-        // "cannot redeclare class" error.
-        foreach ($candidates as $candidate) {
-            if ($this->classExists($candidate)) {
-                return $candidate;
-            }
-        }
-
-        try {
-            require_once $file;
-        } catch (\Throwable $e) {
-            return null;
-        }
-
-        foreach ($candidates as $candidate) {
-            if ($this->classExists($candidate)) {
-                return $candidate;
-            }
-        }
-
-        return null;
-    }
-
-    private function classExists(string $class): bool
-    {
-        return class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false);
-    }
-}
diff --git a/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php b/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php
deleted file mode 100644
index cc7a0ffabeeae46aed4c86a0fd28385bfad523ee..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\FatalErrorHandler;
-
-use Symfony\Component\Debug\Exception\FatalErrorException;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', FatalErrorHandlerInterface::class, \Symfony\Component\ErrorHandler\FatalErrorHandler\FatalErrorHandlerInterface::class), \E_USER_DEPRECATED);
-
-/**
- * Attempts to convert fatal errors to exceptions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\FatalErrorHandler\FatalErrorHandlerInterface instead.
- */
-interface FatalErrorHandlerInterface
-{
-    /**
-     * Attempts to convert an error into an exception.
-     *
-     * @param array $error An array as returned by error_get_last()
-     *
-     * @return FatalErrorException|null A FatalErrorException instance if the class is able to convert the error, null otherwise
-     */
-    public function handleError(array $error, FatalErrorException $exception);
-}
diff --git a/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php
deleted file mode 100644
index 95096a9cd1a946f485d4a976d659627b3b3da31d..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\FatalErrorHandler;
-
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\Exception\UndefinedFunctionException;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedFunctionFatalErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedFunctionErrorEnhancer::class), \E_USER_DEPRECATED);
-
-/**
- * ErrorHandler for undefined functions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedFunctionErrorEnhancer instead.
- */
-class UndefinedFunctionFatalErrorHandler implements FatalErrorHandlerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function handleError(array $error, FatalErrorException $exception)
-    {
-        $messageLen = \strlen($error['message']);
-        $notFoundSuffix = '()';
-        $notFoundSuffixLen = \strlen($notFoundSuffix);
-        if ($notFoundSuffixLen > $messageLen) {
-            return null;
-        }
-
-        if (0 !== substr_compare($error['message'], $notFoundSuffix, -$notFoundSuffixLen)) {
-            return null;
-        }
-
-        $prefix = 'Call to undefined function ';
-        $prefixLen = \strlen($prefix);
-        if (0 !== strpos($error['message'], $prefix)) {
-            return null;
-        }
-
-        $fullyQualifiedFunctionName = substr($error['message'], $prefixLen, -$notFoundSuffixLen);
-        if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedFunctionName, '\\')) {
-            $functionName = substr($fullyQualifiedFunctionName, $namespaceSeparatorIndex + 1);
-            $namespacePrefix = substr($fullyQualifiedFunctionName, 0, $namespaceSeparatorIndex);
-            $message = sprintf('Attempted to call function "%s" from namespace "%s".', $functionName, $namespacePrefix);
-        } else {
-            $functionName = $fullyQualifiedFunctionName;
-            $message = sprintf('Attempted to call function "%s" from the global namespace.', $functionName);
-        }
-
-        $candidates = [];
-        foreach (get_defined_functions() as $type => $definedFunctionNames) {
-            foreach ($definedFunctionNames as $definedFunctionName) {
-                if (false !== $namespaceSeparatorIndex = strrpos($definedFunctionName, '\\')) {
-                    $definedFunctionNameBasename = substr($definedFunctionName, $namespaceSeparatorIndex + 1);
-                } else {
-                    $definedFunctionNameBasename = $definedFunctionName;
-                }
-
-                if ($definedFunctionNameBasename === $functionName) {
-                    $candidates[] = '\\'.$definedFunctionName;
-                }
-            }
-        }
-
-        if ($candidates) {
-            sort($candidates);
-            $last = array_pop($candidates).'"?';
-            if ($candidates) {
-                $candidates = 'e.g. "'.implode('", "', $candidates).'" or "'.$last;
-            } else {
-                $candidates = '"'.$last;
-            }
-            $message .= "\nDid you mean to call ".$candidates;
-        }
-
-        return new UndefinedFunctionException($message, $exception);
-    }
-}
diff --git a/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php
deleted file mode 100644
index 773f4dfa78c284769f0904a31855e7260117fe34..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\FatalErrorHandler;
-
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\Exception\UndefinedMethodException;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedMethodFatalErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedMethodErrorEnhancer::class), \E_USER_DEPRECATED);
-
-/**
- * ErrorHandler for undefined methods.
- *
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedMethodErrorEnhancer instead.
- */
-class UndefinedMethodFatalErrorHandler implements FatalErrorHandlerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function handleError(array $error, FatalErrorException $exception)
-    {
-        preg_match('/^Call to undefined method (.*)::(.*)\(\)$/', $error['message'], $matches);
-        if (!$matches) {
-            return null;
-        }
-
-        $className = $matches[1];
-        $methodName = $matches[2];
-
-        $message = sprintf('Attempted to call an undefined method named "%s" of class "%s".', $methodName, $className);
-
-        if (!class_exists($className) || null === $methods = get_class_methods($className)) {
-            // failed to get the class or its methods on which an unknown method was called (for example on an anonymous class)
-            return new UndefinedMethodException($message, $exception);
-        }
-
-        $candidates = [];
-        foreach ($methods as $definedMethodName) {
-            $lev = levenshtein($methodName, $definedMethodName);
-            if ($lev <= \strlen($methodName) / 3 || false !== strpos($definedMethodName, $methodName)) {
-                $candidates[] = $definedMethodName;
-            }
-        }
-
-        if ($candidates) {
-            sort($candidates);
-            $last = array_pop($candidates).'"?';
-            if ($candidates) {
-                $candidates = 'e.g. "'.implode('", "', $candidates).'" or "'.$last;
-            } else {
-                $candidates = '"'.$last;
-            }
-
-            $message .= "\nDid you mean to call ".$candidates;
-        }
-
-        return new UndefinedMethodException($message, $exception);
-    }
-}
diff --git a/vendor/symfony/debug/LICENSE b/vendor/symfony/debug/LICENSE
deleted file mode 100644
index 9e936ec0448b8549e5edf08e5ac5f01491a8bfc8..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/debug/README.md b/vendor/symfony/debug/README.md
deleted file mode 100644
index 90b36f0cb8e594b9e09e0e1347e5cefb0806690a..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-Debug Component
-===============
-
-**CAUTION**: this component is deprecated since Symfony 4.4. Instead, use the
-[ErrorHandler component](https://github.com/symfony/symfony/tree/master/src/Symfony/Component/ErrorHandler).
-
------
-
-The Debug component provides tools to ease debugging PHP code.
-
-Getting Started
----------------
-
-```
-$ composer install symfony/debug
-```
-
-```php
-use Symfony\Component\Debug\Debug;
-
-Debug::enable();
-```
-
-Resources
----------
-
-  * [Contributing](https://symfony.com/doc/current/contributing/index.html)
-  * [Report issues](https://github.com/symfony/symfony/issues) and
-    [send Pull Requests](https://github.com/symfony/symfony/pulls)
-    in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/vendor/symfony/debug/composer.json b/vendor/symfony/debug/composer.json
deleted file mode 100644
index e54a603aa332164494d0b80e5ba9ed966a47198b..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/composer.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-    "name": "symfony/debug",
-    "type": "library",
-    "description": "Symfony Debug Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1.3",
-        "psr/log": "~1.0",
-        "symfony/polyfill-php80": "^1.15"
-    },
-    "conflict": {
-        "symfony/http-kernel": "<3.4"
-    },
-    "require-dev": {
-        "symfony/http-kernel": "^3.4|^4.0|^5.0"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\Debug\\": "" },
-        "exclude-from-classmap": [
-            "/Tests/"
-        ]
-    },
-    "minimum-stability": "dev"
-}
diff --git a/vendor/symfony/error-handler/BufferingLogger.php b/vendor/symfony/error-handler/BufferingLogger.php
deleted file mode 100644
index 16e433dedf898608a648b874d2ec8fecee2c7449..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/BufferingLogger.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler;
-
-use Psr\Log\AbstractLogger;
-
-/**
- * A buffering logger that stacks logs for later.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class BufferingLogger extends AbstractLogger
-{
-    private $logs = [];
-
-    public function log($level, $message, array $context = []): void
-    {
-        $this->logs[] = [$level, $message, $context];
-    }
-
-    public function cleanLogs(): array
-    {
-        $logs = $this->logs;
-        $this->logs = [];
-
-        return $logs;
-    }
-
-    public function __destruct()
-    {
-        foreach ($this->logs as [$level, $message, $context]) {
-            if (false !== strpos($message, '{')) {
-                foreach ($context as $key => $val) {
-                    if (null === $val || is_scalar($val) || (\is_object($val) && \is_callable([$val, '__toString']))) {
-                        $message = str_replace("{{$key}}", $val, $message);
-                    } elseif ($val instanceof \DateTimeInterface) {
-                        $message = str_replace("{{$key}}", $val->format(\DateTime::RFC3339), $message);
-                    } elseif (\is_object($val)) {
-                        $message = str_replace("{{$key}}", '[object '.\get_class($val).']', $message);
-                    } else {
-                        $message = str_replace("{{$key}}", '['.\gettype($val).']', $message);
-                    }
-                }
-            }
-
-            error_log(sprintf('%s [%s] %s', date(\DateTime::RFC3339), $level, $message));
-        }
-    }
-}
diff --git a/vendor/symfony/error-handler/CHANGELOG.md b/vendor/symfony/error-handler/CHANGELOG.md
deleted file mode 100644
index c7c245a4399f29e13137e5faa251eb1769034b39..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/CHANGELOG.md
+++ /dev/null
@@ -1,8 +0,0 @@
-CHANGELOG
-=========
-
-4.4.0
------
-
- * added the component
- * added `ErrorHandler::call()` method utility to turn any PHP error into `\ErrorException`
diff --git a/vendor/symfony/error-handler/Debug.php b/vendor/symfony/error-handler/Debug.php
deleted file mode 100644
index 4a828121821d8cdba2ead8e26ee72eda10b65241..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Debug.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler;
-
-/**
- * Registers all the debug tools.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Debug
-{
-    public static function enable(): ErrorHandler
-    {
-        error_reporting(-1);
-
-        if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) {
-            ini_set('display_errors', 0);
-        } elseif (!filter_var(ini_get('log_errors'), \FILTER_VALIDATE_BOOLEAN) || ini_get('error_log')) {
-            // CLI - display errors only if they're not already logged to STDERR
-            ini_set('display_errors', 1);
-        }
-
-        @ini_set('zend.assertions', 1);
-        ini_set('assert.active', 1);
-        ini_set('assert.warning', 0);
-        ini_set('assert.exception', 1);
-
-        DebugClassLoader::enable();
-
-        return ErrorHandler::register(new ErrorHandler(new BufferingLogger(), true));
-    }
-}
diff --git a/vendor/symfony/error-handler/DebugClassLoader.php b/vendor/symfony/error-handler/DebugClassLoader.php
deleted file mode 100644
index 79ab0b07d6911d9bef1665cd51d14a2b2e32b6f3..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/DebugClassLoader.php
+++ /dev/null
@@ -1,1083 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler;
-
-use Doctrine\Common\Persistence\Proxy as LegacyProxy;
-use Doctrine\Persistence\Proxy;
-use Mockery\MockInterface;
-use PHPUnit\Framework\MockObject\Matcher\StatelessInvocation;
-use PHPUnit\Framework\MockObject\MockObject;
-use Prophecy\Prophecy\ProphecySubjectInterface;
-use ProxyManager\Proxy\ProxyInterface;
-
-/**
- * Autoloader checking if the class is really defined in the file found.
- *
- * The ClassLoader will wrap all registered autoloaders
- * and will throw an exception if a file is found but does
- * not declare the class.
- *
- * It can also patch classes to turn docblocks into actual return types.
- * This behavior is controlled by the SYMFONY_PATCH_TYPE_DECLARATIONS env var,
- * which is a url-encoded array with the follow parameters:
- *  - "force": any value enables deprecation notices - can be any of:
- *      - "docblock" to patch only docblock annotations
- *      - "object" to turn union types to the "object" type when possible (not recommended)
- *      - "1" to add all possible return types including magic methods
- *      - "0" to add possible return types excluding magic methods
- *  - "php": the target version of PHP - e.g. "7.1" doesn't generate "object" types
- *  - "deprecations": "1" to trigger a deprecation notice when a child class misses a
- *                    return type while the parent declares an "@return" annotation
- *
- * Note that patching doesn't care about any coding style so you'd better to run
- * php-cs-fixer after, with rules "phpdoc_trim_consecutive_blank_line_separation"
- * and "no_superfluous_phpdoc_tags" enabled typically.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Christophe Coevoet <stof@notk.org>
- * @author Nicolas Grekas <p@tchwork.com>
- * @author Guilhem Niot <guilhem.niot@gmail.com>
- */
-class DebugClassLoader
-{
-    private const SPECIAL_RETURN_TYPES = [
-        'void' => 'void',
-        'null' => 'null',
-        'resource' => 'resource',
-        'boolean' => 'bool',
-        'true' => 'bool',
-        'false' => 'bool',
-        'integer' => 'int',
-        'array' => 'array',
-        'bool' => 'bool',
-        'callable' => 'callable',
-        'float' => 'float',
-        'int' => 'int',
-        'iterable' => 'iterable',
-        'object' => 'object',
-        'string' => 'string',
-        'self' => 'self',
-        'parent' => 'parent',
-    ] + (\PHP_VERSION_ID >= 80000 ? [
-        '$this' => 'static',
-    ] : [
-        'mixed' => 'mixed',
-        'static' => 'object',
-        '$this' => 'object',
-    ]);
-
-    private const BUILTIN_RETURN_TYPES = [
-        'void' => true,
-        'array' => true,
-        'bool' => true,
-        'callable' => true,
-        'float' => true,
-        'int' => true,
-        'iterable' => true,
-        'object' => true,
-        'string' => true,
-        'self' => true,
-        'parent' => true,
-    ] + (\PHP_VERSION_ID >= 80000 ? [
-        'mixed' => true,
-        'static' => true,
-    ] : []);
-
-    private const MAGIC_METHODS = [
-        '__set' => 'void',
-        '__isset' => 'bool',
-        '__unset' => 'void',
-        '__sleep' => 'array',
-        '__wakeup' => 'void',
-        '__toString' => 'string',
-        '__clone' => 'void',
-        '__debugInfo' => 'array',
-        '__serialize' => 'array',
-        '__unserialize' => 'void',
-    ];
-
-    private const INTERNAL_TYPES = [
-        'ArrayAccess' => [
-            'offsetExists' => 'bool',
-            'offsetSet' => 'void',
-            'offsetUnset' => 'void',
-        ],
-        'Countable' => [
-            'count' => 'int',
-        ],
-        'Iterator' => [
-            'next' => 'void',
-            'valid' => 'bool',
-            'rewind' => 'void',
-        ],
-        'IteratorAggregate' => [
-            'getIterator' => '\Traversable',
-        ],
-        'OuterIterator' => [
-            'getInnerIterator' => '\Iterator',
-        ],
-        'RecursiveIterator' => [
-            'hasChildren' => 'bool',
-        ],
-        'SeekableIterator' => [
-            'seek' => 'void',
-        ],
-        'Serializable' => [
-            'serialize' => 'string',
-            'unserialize' => 'void',
-        ],
-        'SessionHandlerInterface' => [
-            'open' => 'bool',
-            'close' => 'bool',
-            'read' => 'string',
-            'write' => 'bool',
-            'destroy' => 'bool',
-            'gc' => 'bool',
-        ],
-        'SessionIdInterface' => [
-            'create_sid' => 'string',
-        ],
-        'SessionUpdateTimestampHandlerInterface' => [
-            'validateId' => 'bool',
-            'updateTimestamp' => 'bool',
-        ],
-        'Throwable' => [
-            'getMessage' => 'string',
-            'getCode' => 'int',
-            'getFile' => 'string',
-            'getLine' => 'int',
-            'getTrace' => 'array',
-            'getPrevious' => '?\Throwable',
-            'getTraceAsString' => 'string',
-        ],
-    ];
-
-    private $classLoader;
-    private $isFinder;
-    private $loaded = [];
-    private $patchTypes;
-
-    private static $caseCheck;
-    private static $checkedClasses = [];
-    private static $final = [];
-    private static $finalMethods = [];
-    private static $deprecated = [];
-    private static $internal = [];
-    private static $internalMethods = [];
-    private static $annotatedParameters = [];
-    private static $darwinCache = ['/' => ['/', []]];
-    private static $method = [];
-    private static $returnTypes = [];
-    private static $methodTraits = [];
-    private static $fileOffsets = [];
-
-    public function __construct(callable $classLoader)
-    {
-        $this->classLoader = $classLoader;
-        $this->isFinder = \is_array($classLoader) && method_exists($classLoader[0], 'findFile');
-        parse_str(getenv('SYMFONY_PATCH_TYPE_DECLARATIONS') ?: '', $this->patchTypes);
-        $this->patchTypes += [
-            'force' => null,
-            'php' => null,
-            'deprecations' => false,
-        ];
-
-        if (!isset(self::$caseCheck)) {
-            $file = file_exists(__FILE__) ? __FILE__ : rtrim(realpath('.'), \DIRECTORY_SEPARATOR);
-            $i = strrpos($file, \DIRECTORY_SEPARATOR);
-            $dir = substr($file, 0, 1 + $i);
-            $file = substr($file, 1 + $i);
-            $test = strtoupper($file) === $file ? strtolower($file) : strtoupper($file);
-            $test = realpath($dir.$test);
-
-            if (false === $test || false === $i) {
-                // filesystem is case sensitive
-                self::$caseCheck = 0;
-            } elseif (substr($test, -\strlen($file)) === $file) {
-                // filesystem is case insensitive and realpath() normalizes the case of characters
-                self::$caseCheck = 1;
-            } elseif (false !== stripos(\PHP_OS, 'darwin')) {
-                // on MacOSX, HFS+ is case insensitive but realpath() doesn't normalize the case of characters
-                self::$caseCheck = 2;
-            } else {
-                // filesystem case checks failed, fallback to disabling them
-                self::$caseCheck = 0;
-            }
-        }
-    }
-
-    /**
-     * Gets the wrapped class loader.
-     *
-     * @return callable The wrapped class loader
-     */
-    public function getClassLoader(): callable
-    {
-        return $this->classLoader;
-    }
-
-    /**
-     * Wraps all autoloaders.
-     */
-    public static function enable(): void
-    {
-        // Ensures we don't hit https://bugs.php.net/42098
-        class_exists('Symfony\Component\ErrorHandler\ErrorHandler');
-        class_exists('Psr\Log\LogLevel');
-
-        if (!\is_array($functions = spl_autoload_functions())) {
-            return;
-        }
-
-        foreach ($functions as $function) {
-            spl_autoload_unregister($function);
-        }
-
-        foreach ($functions as $function) {
-            if (!\is_array($function) || !$function[0] instanceof self) {
-                $function = [new static($function), 'loadClass'];
-            }
-
-            spl_autoload_register($function);
-        }
-    }
-
-    /**
-     * Disables the wrapping.
-     */
-    public static function disable(): void
-    {
-        if (!\is_array($functions = spl_autoload_functions())) {
-            return;
-        }
-
-        foreach ($functions as $function) {
-            spl_autoload_unregister($function);
-        }
-
-        foreach ($functions as $function) {
-            if (\is_array($function) && $function[0] instanceof self) {
-                $function = $function[0]->getClassLoader();
-            }
-
-            spl_autoload_register($function);
-        }
-    }
-
-    public static function checkClasses(): bool
-    {
-        if (!\is_array($functions = spl_autoload_functions())) {
-            return false;
-        }
-
-        $loader = null;
-
-        foreach ($functions as $function) {
-            if (\is_array($function) && $function[0] instanceof self) {
-                $loader = $function[0];
-                break;
-            }
-        }
-
-        if (null === $loader) {
-            return false;
-        }
-
-        static $offsets = [
-            'get_declared_interfaces' => 0,
-            'get_declared_traits' => 0,
-            'get_declared_classes' => 0,
-        ];
-
-        foreach ($offsets as $getSymbols => $i) {
-            $symbols = $getSymbols();
-
-            for (; $i < \count($symbols); ++$i) {
-                if (!is_subclass_of($symbols[$i], MockObject::class)
-                    && !is_subclass_of($symbols[$i], ProphecySubjectInterface::class)
-                    && !is_subclass_of($symbols[$i], Proxy::class)
-                    && !is_subclass_of($symbols[$i], ProxyInterface::class)
-                    && !is_subclass_of($symbols[$i], LegacyProxy::class)
-                    && !is_subclass_of($symbols[$i], MockInterface::class)
-                ) {
-                    $loader->checkClass($symbols[$i]);
-                }
-            }
-
-            $offsets[$getSymbols] = $i;
-        }
-
-        return true;
-    }
-
-    public function findFile(string $class): ?string
-    {
-        return $this->isFinder ? ($this->classLoader[0]->findFile($class) ?: null) : null;
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @throws \RuntimeException
-     */
-    public function loadClass(string $class): void
-    {
-        $e = error_reporting(error_reporting() | \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR);
-
-        try {
-            if ($this->isFinder && !isset($this->loaded[$class])) {
-                $this->loaded[$class] = true;
-                if (!$file = $this->classLoader[0]->findFile($class) ?: '') {
-                    // no-op
-                } elseif (\function_exists('opcache_is_script_cached') && @opcache_is_script_cached($file)) {
-                    include $file;
-
-                    return;
-                } elseif (false === include $file) {
-                    return;
-                }
-            } else {
-                ($this->classLoader)($class);
-                $file = '';
-            }
-        } finally {
-            error_reporting($e);
-        }
-
-        $this->checkClass($class, $file);
-    }
-
-    private function checkClass(string $class, string $file = null): void
-    {
-        $exists = null === $file || class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false);
-
-        if (null !== $file && $class && '\\' === $class[0]) {
-            $class = substr($class, 1);
-        }
-
-        if ($exists) {
-            if (isset(self::$checkedClasses[$class])) {
-                return;
-            }
-            self::$checkedClasses[$class] = true;
-
-            $refl = new \ReflectionClass($class);
-            if (null === $file && $refl->isInternal()) {
-                return;
-            }
-            $name = $refl->getName();
-
-            if ($name !== $class && 0 === strcasecmp($name, $class)) {
-                throw new \RuntimeException(sprintf('Case mismatch between loaded and declared class names: "%s" vs "%s".', $class, $name));
-            }
-
-            $deprecations = $this->checkAnnotations($refl, $name);
-
-            foreach ($deprecations as $message) {
-                @trigger_error($message, \E_USER_DEPRECATED);
-            }
-        }
-
-        if (!$file) {
-            return;
-        }
-
-        if (!$exists) {
-            if (false !== strpos($class, '/')) {
-                throw new \RuntimeException(sprintf('Trying to autoload a class with an invalid name "%s". Be careful that the namespace separator is "\" in PHP, not "/".', $class));
-            }
-
-            throw new \RuntimeException(sprintf('The autoloader expected class "%s" to be defined in file "%s". The file was found but the class was not in it, the class name or namespace probably has a typo.', $class, $file));
-        }
-
-        if (self::$caseCheck && $message = $this->checkCase($refl, $file, $class)) {
-            throw new \RuntimeException(sprintf('Case mismatch between class and real file names: "%s" vs "%s" in "%s".', $message[0], $message[1], $message[2]));
-        }
-    }
-
-    public function checkAnnotations(\ReflectionClass $refl, string $class): array
-    {
-        if (
-            'Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerForV7' === $class
-            || 'Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerForV6' === $class
-            || 'Test\Symfony\Component\Debug\Tests' === $refl->getNamespaceName()
-        ) {
-            return [];
-        }
-        $deprecations = [];
-
-        $className = false !== strpos($class, "@anonymous\0") ? (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous' : $class;
-
-        // Don't trigger deprecations for classes in the same vendor
-        if ($class !== $className) {
-            $vendor = preg_match('/^namespace ([^;\\\\\s]++)[;\\\\]/m', @file_get_contents($refl->getFileName()), $vendor) ? $vendor[1].'\\' : '';
-            $vendorLen = \strlen($vendor);
-        } elseif (2 > $vendorLen = 1 + (strpos($class, '\\') ?: strpos($class, '_'))) {
-            $vendorLen = 0;
-            $vendor = '';
-        } else {
-            $vendor = str_replace('_', '\\', substr($class, 0, $vendorLen));
-        }
-
-        // Detect annotations on the class
-        if (false !== $doc = $refl->getDocComment()) {
-            foreach (['final', 'deprecated', 'internal'] as $annotation) {
-                if (false !== strpos($doc, $annotation) && preg_match('#\n\s+\* @'.$annotation.'(?:( .+?)\.?)?\r?\n\s+\*(?: @|/$|\r?\n)#s', $doc, $notice)) {
-                    self::${$annotation}[$class] = isset($notice[1]) ? preg_replace('#\.?\r?\n( \*)? *(?= |\r?\n|$)#', '', $notice[1]) : '';
-                }
-            }
-
-            if ($refl->isInterface() && false !== strpos($doc, 'method') && preg_match_all('#\n \* @method\s+(static\s+)?+([\w\|&\[\]\\\]+\s+)?(\w+(?:\s*\([^\)]*\))?)+(.+?([[:punct:]]\s*)?)?(?=\r?\n \*(?: @|/$|\r?\n))#', $doc, $notice, \PREG_SET_ORDER)) {
-                foreach ($notice as $method) {
-                    $static = '' !== $method[1] && !empty($method[2]);
-                    $name = $method[3];
-                    $description = $method[4] ?? null;
-                    if (false === strpos($name, '(')) {
-                        $name .= '()';
-                    }
-                    if (null !== $description) {
-                        $description = trim($description);
-                        if (!isset($method[5])) {
-                            $description .= '.';
-                        }
-                    }
-                    self::$method[$class][] = [$class, $name, $static, $description];
-                }
-            }
-        }
-
-        $parent = get_parent_class($class) ?: null;
-        $parentAndOwnInterfaces = $this->getOwnInterfaces($class, $parent);
-        if ($parent) {
-            $parentAndOwnInterfaces[$parent] = $parent;
-
-            if (!isset(self::$checkedClasses[$parent])) {
-                $this->checkClass($parent);
-            }
-
-            if (isset(self::$final[$parent])) {
-                $deprecations[] = sprintf('The "%s" class is considered final%s. It may change without further notice as of its next major version. You should not extend it from "%s".', $parent, self::$final[$parent], $className);
-            }
-        }
-
-        // Detect if the parent is annotated
-        foreach ($parentAndOwnInterfaces + class_uses($class, false) as $use) {
-            if (!isset(self::$checkedClasses[$use])) {
-                $this->checkClass($use);
-            }
-            if (isset(self::$deprecated[$use]) && strncmp($vendor, str_replace('_', '\\', $use), $vendorLen) && !isset(self::$deprecated[$class])) {
-                $type = class_exists($class, false) ? 'class' : (interface_exists($class, false) ? 'interface' : 'trait');
-                $verb = class_exists($use, false) || interface_exists($class, false) ? 'extends' : (interface_exists($use, false) ? 'implements' : 'uses');
-
-                $deprecations[] = sprintf('The "%s" %s %s "%s" that is deprecated%s.', $className, $type, $verb, $use, self::$deprecated[$use]);
-            }
-            if (isset(self::$internal[$use]) && strncmp($vendor, str_replace('_', '\\', $use), $vendorLen)) {
-                $deprecations[] = sprintf('The "%s" %s is considered internal%s. It may change without further notice. You should not use it from "%s".', $use, class_exists($use, false) ? 'class' : (interface_exists($use, false) ? 'interface' : 'trait'), self::$internal[$use], $className);
-            }
-            if (isset(self::$method[$use])) {
-                if ($refl->isAbstract()) {
-                    if (isset(self::$method[$class])) {
-                        self::$method[$class] = array_merge(self::$method[$class], self::$method[$use]);
-                    } else {
-                        self::$method[$class] = self::$method[$use];
-                    }
-                } elseif (!$refl->isInterface()) {
-                    $hasCall = $refl->hasMethod('__call');
-                    $hasStaticCall = $refl->hasMethod('__callStatic');
-                    foreach (self::$method[$use] as $method) {
-                        list($interface, $name, $static, $description) = $method;
-                        if ($static ? $hasStaticCall : $hasCall) {
-                            continue;
-                        }
-                        $realName = substr($name, 0, strpos($name, '('));
-                        if (!$refl->hasMethod($realName) || !($methodRefl = $refl->getMethod($realName))->isPublic() || ($static && !$methodRefl->isStatic()) || (!$static && $methodRefl->isStatic())) {
-                            $deprecations[] = sprintf('Class "%s" should implement method "%s::%s"%s', $className, ($static ? 'static ' : '').$interface, $name, null == $description ? '.' : ': '.$description);
-                        }
-                    }
-                }
-            }
-        }
-
-        if (trait_exists($class)) {
-            $file = $refl->getFileName();
-
-            foreach ($refl->getMethods() as $method) {
-                if ($method->getFileName() === $file) {
-                    self::$methodTraits[$file][$method->getStartLine()] = $class;
-                }
-            }
-
-            return $deprecations;
-        }
-
-        // Inherit @final, @internal, @param and @return annotations for methods
-        self::$finalMethods[$class] = [];
-        self::$internalMethods[$class] = [];
-        self::$annotatedParameters[$class] = [];
-        self::$returnTypes[$class] = [];
-        foreach ($parentAndOwnInterfaces as $use) {
-            foreach (['finalMethods', 'internalMethods', 'annotatedParameters', 'returnTypes'] as $property) {
-                if (isset(self::${$property}[$use])) {
-                    self::${$property}[$class] = self::${$property}[$class] ? self::${$property}[$use] + self::${$property}[$class] : self::${$property}[$use];
-                }
-            }
-
-            if (null !== (self::INTERNAL_TYPES[$use] ?? null)) {
-                foreach (self::INTERNAL_TYPES[$use] as $method => $returnType) {
-                    if ('void' !== $returnType) {
-                        self::$returnTypes[$class] += [$method => [$returnType, $returnType, $class, '']];
-                    }
-                }
-            }
-        }
-
-        foreach ($refl->getMethods() as $method) {
-            if ($method->class !== $class) {
-                continue;
-            }
-
-            if (null === $ns = self::$methodTraits[$method->getFileName()][$method->getStartLine()] ?? null) {
-                $ns = $vendor;
-                $len = $vendorLen;
-            } elseif (2 > $len = 1 + (strpos($ns, '\\') ?: strpos($ns, '_'))) {
-                $len = 0;
-                $ns = '';
-            } else {
-                $ns = str_replace('_', '\\', substr($ns, 0, $len));
-            }
-
-            if ($parent && isset(self::$finalMethods[$parent][$method->name])) {
-                list($declaringClass, $message) = self::$finalMethods[$parent][$method->name];
-                $deprecations[] = sprintf('The "%s::%s()" method is considered final%s. It may change without further notice as of its next major version. You should not extend it from "%s".', $declaringClass, $method->name, $message, $className);
-            }
-
-            if (isset(self::$internalMethods[$class][$method->name])) {
-                list($declaringClass, $message) = self::$internalMethods[$class][$method->name];
-                if (strncmp($ns, $declaringClass, $len)) {
-                    $deprecations[] = sprintf('The "%s::%s()" method is considered internal%s. It may change without further notice. You should not extend it from "%s".', $declaringClass, $method->name, $message, $className);
-                }
-            }
-
-            // To read method annotations
-            $doc = $method->getDocComment();
-
-            if (isset(self::$annotatedParameters[$class][$method->name])) {
-                $definedParameters = [];
-                foreach ($method->getParameters() as $parameter) {
-                    $definedParameters[$parameter->name] = true;
-                }
-
-                foreach (self::$annotatedParameters[$class][$method->name] as $parameterName => $deprecation) {
-                    if (!isset($definedParameters[$parameterName]) && !($doc && preg_match("/\\n\\s+\\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\\\${$parameterName}\\b/", $doc))) {
-                        $deprecations[] = sprintf($deprecation, $className);
-                    }
-                }
-            }
-
-            $forcePatchTypes = $this->patchTypes['force'];
-
-            if ($canAddReturnType = null !== $forcePatchTypes && false === strpos($method->getFileName(), \DIRECTORY_SEPARATOR.'vendor'.\DIRECTORY_SEPARATOR)) {
-                if ('void' !== (self::MAGIC_METHODS[$method->name] ?? 'void')) {
-                    $this->patchTypes['force'] = $forcePatchTypes ?: 'docblock';
-                }
-
-                $canAddReturnType = false !== strpos($refl->getFileName(), \DIRECTORY_SEPARATOR.'Tests'.\DIRECTORY_SEPARATOR)
-                    || $refl->isFinal()
-                    || $method->isFinal()
-                    || $method->isPrivate()
-                    || ('' === (self::$internal[$class] ?? null) && !$refl->isAbstract())
-                    || '' === (self::$final[$class] ?? null)
-                    || preg_match('/@(final|internal)$/m', $doc)
-                ;
-            }
-
-            if (null !== ($returnType = self::$returnTypes[$class][$method->name] ?? self::MAGIC_METHODS[$method->name] ?? null) && !$method->hasReturnType() && !($doc && preg_match('/\n\s+\* @return +(\S+)/', $doc))) {
-                list($normalizedType, $returnType, $declaringClass, $declaringFile) = \is_string($returnType) ? [$returnType, $returnType, '', ''] : $returnType;
-
-                if ('void' === $normalizedType) {
-                    $canAddReturnType = false;
-                }
-
-                if ($canAddReturnType && 'docblock' !== $this->patchTypes['force']) {
-                    $this->patchMethod($method, $returnType, $declaringFile, $normalizedType);
-                }
-
-                if (strncmp($ns, $declaringClass, $len)) {
-                    if ($canAddReturnType && 'docblock' === $this->patchTypes['force'] && false === strpos($method->getFileName(), \DIRECTORY_SEPARATOR.'vendor'.\DIRECTORY_SEPARATOR)) {
-                        $this->patchMethod($method, $returnType, $declaringFile, $normalizedType);
-                    } elseif ('' !== $declaringClass && $this->patchTypes['deprecations']) {
-                        $deprecations[] = sprintf('Method "%s::%s()" will return "%s" as of its next major version. Doing the same in %s "%s" will be required when upgrading.', $declaringClass, $method->name, $normalizedType, interface_exists($declaringClass) ? 'implementation' : 'child class', $className);
-                    }
-                }
-            }
-
-            if (!$doc) {
-                $this->patchTypes['force'] = $forcePatchTypes;
-
-                continue;
-            }
-
-            $matches = [];
-
-            if (!$method->hasReturnType() && ((false !== strpos($doc, '@return') && preg_match('/\n\s+\* @return +(\S+)/', $doc, $matches)) || 'void' !== (self::MAGIC_METHODS[$method->name] ?? 'void'))) {
-                $matches = $matches ?: [1 => self::MAGIC_METHODS[$method->name]];
-                $this->setReturnType($matches[1], $method, $parent);
-
-                if (isset(self::$returnTypes[$class][$method->name][0]) && $canAddReturnType) {
-                    $this->fixReturnStatements($method, self::$returnTypes[$class][$method->name][0]);
-                }
-
-                if ($method->isPrivate()) {
-                    unset(self::$returnTypes[$class][$method->name]);
-                }
-            }
-
-            $this->patchTypes['force'] = $forcePatchTypes;
-
-            if ($method->isPrivate()) {
-                continue;
-            }
-
-            $finalOrInternal = false;
-
-            foreach (['final', 'internal'] as $annotation) {
-                if (false !== strpos($doc, $annotation) && preg_match('#\n\s+\* @'.$annotation.'(?:( .+?)\.?)?\r?\n\s+\*(?: @|/$|\r?\n)#s', $doc, $notice)) {
-                    $message = isset($notice[1]) ? preg_replace('#\.?\r?\n( \*)? *(?= |\r?\n|$)#', '', $notice[1]) : '';
-                    self::${$annotation.'Methods'}[$class][$method->name] = [$class, $message];
-                    $finalOrInternal = true;
-                }
-            }
-
-            if ($finalOrInternal || $method->isConstructor() || false === strpos($doc, '@param') || StatelessInvocation::class === $class) {
-                continue;
-            }
-            if (!preg_match_all('#\n\s+\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\$([a-zA-Z0-9_\x7f-\xff]++)#', $doc, $matches, \PREG_SET_ORDER)) {
-                continue;
-            }
-            if (!isset(self::$annotatedParameters[$class][$method->name])) {
-                $definedParameters = [];
-                foreach ($method->getParameters() as $parameter) {
-                    $definedParameters[$parameter->name] = true;
-                }
-            }
-            foreach ($matches as list(, $parameterType, $parameterName)) {
-                if (!isset($definedParameters[$parameterName])) {
-                    $parameterType = trim($parameterType);
-                    self::$annotatedParameters[$class][$method->name][$parameterName] = sprintf('The "%%s::%s()" method will require a new "%s$%s" argument in the next major version of its %s "%s", not defining it is deprecated.', $method->name, $parameterType ? $parameterType.' ' : '', $parameterName, interface_exists($className) ? 'interface' : 'parent class', $className);
-                }
-            }
-        }
-
-        return $deprecations;
-    }
-
-    public function checkCase(\ReflectionClass $refl, string $file, string $class): ?array
-    {
-        $real = explode('\\', $class.strrchr($file, '.'));
-        $tail = explode(\DIRECTORY_SEPARATOR, str_replace('/', \DIRECTORY_SEPARATOR, $file));
-
-        $i = \count($tail) - 1;
-        $j = \count($real) - 1;
-
-        while (isset($tail[$i], $real[$j]) && $tail[$i] === $real[$j]) {
-            --$i;
-            --$j;
-        }
-
-        array_splice($tail, 0, $i + 1);
-
-        if (!$tail) {
-            return null;
-        }
-
-        $tail = \DIRECTORY_SEPARATOR.implode(\DIRECTORY_SEPARATOR, $tail);
-        $tailLen = \strlen($tail);
-        $real = $refl->getFileName();
-
-        if (2 === self::$caseCheck) {
-            $real = $this->darwinRealpath($real);
-        }
-
-        if (0 === substr_compare($real, $tail, -$tailLen, $tailLen, true)
-            && 0 !== substr_compare($real, $tail, -$tailLen, $tailLen, false)
-        ) {
-            return [substr($tail, -$tailLen + 1), substr($real, -$tailLen + 1), substr($real, 0, -$tailLen + 1)];
-        }
-
-        return null;
-    }
-
-    /**
-     * `realpath` on MacOSX doesn't normalize the case of characters.
-     */
-    private function darwinRealpath(string $real): string
-    {
-        $i = 1 + strrpos($real, '/');
-        $file = substr($real, $i);
-        $real = substr($real, 0, $i);
-
-        if (isset(self::$darwinCache[$real])) {
-            $kDir = $real;
-        } else {
-            $kDir = strtolower($real);
-
-            if (isset(self::$darwinCache[$kDir])) {
-                $real = self::$darwinCache[$kDir][0];
-            } else {
-                $dir = getcwd();
-
-                if (!@chdir($real)) {
-                    return $real.$file;
-                }
-
-                $real = getcwd().'/';
-                chdir($dir);
-
-                $dir = $real;
-                $k = $kDir;
-                $i = \strlen($dir) - 1;
-                while (!isset(self::$darwinCache[$k])) {
-                    self::$darwinCache[$k] = [$dir, []];
-                    self::$darwinCache[$dir] = &self::$darwinCache[$k];
-
-                    while ('/' !== $dir[--$i]) {
-                    }
-                    $k = substr($k, 0, ++$i);
-                    $dir = substr($dir, 0, $i--);
-                }
-            }
-        }
-
-        $dirFiles = self::$darwinCache[$kDir][1];
-
-        if (!isset($dirFiles[$file]) && ') : eval()\'d code' === substr($file, -17)) {
-            // Get the file name from "file_name.php(123) : eval()'d code"
-            $file = substr($file, 0, strrpos($file, '(', -17));
-        }
-
-        if (isset($dirFiles[$file])) {
-            return $real .= $dirFiles[$file];
-        }
-
-        $kFile = strtolower($file);
-
-        if (!isset($dirFiles[$kFile])) {
-            foreach (scandir($real, 2) as $f) {
-                if ('.' !== $f[0]) {
-                    $dirFiles[$f] = $f;
-                    if ($f === $file) {
-                        $kFile = $k = $file;
-                    } elseif ($f !== $k = strtolower($f)) {
-                        $dirFiles[$k] = $f;
-                    }
-                }
-            }
-            self::$darwinCache[$kDir][1] = $dirFiles;
-        }
-
-        return $real .= $dirFiles[$kFile];
-    }
-
-    /**
-     * `class_implements` includes interfaces from the parents so we have to manually exclude them.
-     *
-     * @return string[]
-     */
-    private function getOwnInterfaces(string $class, ?string $parent): array
-    {
-        $ownInterfaces = class_implements($class, false);
-
-        if ($parent) {
-            foreach (class_implements($parent, false) as $interface) {
-                unset($ownInterfaces[$interface]);
-            }
-        }
-
-        foreach ($ownInterfaces as $interface) {
-            foreach (class_implements($interface) as $interface) {
-                unset($ownInterfaces[$interface]);
-            }
-        }
-
-        return $ownInterfaces;
-    }
-
-    private function setReturnType(string $types, \ReflectionMethod $method, ?string $parent): void
-    {
-        $nullable = false;
-        $typesMap = [];
-        foreach (explode('|', $types) as $t) {
-            $typesMap[$this->normalizeType($t, $method->class, $parent)] = $t;
-        }
-
-        if (isset($typesMap['array'])) {
-            if (isset($typesMap['Traversable']) || isset($typesMap['\Traversable'])) {
-                $typesMap['iterable'] = 'array' !== $typesMap['array'] ? $typesMap['array'] : 'iterable';
-                unset($typesMap['array'], $typesMap['Traversable'], $typesMap['\Traversable']);
-            } elseif ('array' !== $typesMap['array'] && isset(self::$returnTypes[$method->class][$method->name])) {
-                return;
-            }
-        }
-
-        if (isset($typesMap['array']) && isset($typesMap['iterable'])) {
-            if ('[]' === substr($typesMap['array'], -2)) {
-                $typesMap['iterable'] = $typesMap['array'];
-            }
-            unset($typesMap['array']);
-        }
-
-        $iterable = $object = true;
-        foreach ($typesMap as $n => $t) {
-            if ('null' !== $n) {
-                $iterable = $iterable && (\in_array($n, ['array', 'iterable']) || false !== strpos($n, 'Iterator'));
-                $object = $object && (\in_array($n, ['callable', 'object', '$this', 'static']) || !isset(self::SPECIAL_RETURN_TYPES[$n]));
-            }
-        }
-
-        $normalizedType = key($typesMap);
-        $returnType = current($typesMap);
-
-        foreach ($typesMap as $n => $t) {
-            if ('null' === $n) {
-                $nullable = true;
-            } elseif ('null' === $normalizedType) {
-                $normalizedType = $t;
-                $returnType = $t;
-            } elseif ($n !== $normalizedType || !preg_match('/^\\\\?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)*+$/', $n)) {
-                if ($iterable) {
-                    $normalizedType = $returnType = 'iterable';
-                } elseif ($object && 'object' === $this->patchTypes['force']) {
-                    $normalizedType = $returnType = 'object';
-                } else {
-                    // ignore multi-types return declarations
-                    return;
-                }
-            }
-        }
-
-        if ('void' === $normalizedType || (\PHP_VERSION_ID >= 80000 && 'mixed' === $normalizedType)) {
-            $nullable = false;
-        } elseif (!isset(self::BUILTIN_RETURN_TYPES[$normalizedType]) && isset(self::SPECIAL_RETURN_TYPES[$normalizedType])) {
-            // ignore other special return types
-            return;
-        }
-
-        if ($nullable) {
-            $normalizedType = '?'.$normalizedType;
-            $returnType .= '|null';
-        }
-
-        self::$returnTypes[$method->class][$method->name] = [$normalizedType, $returnType, $method->class, $method->getFileName()];
-    }
-
-    private function normalizeType(string $type, string $class, ?string $parent): string
-    {
-        if (isset(self::SPECIAL_RETURN_TYPES[$lcType = strtolower($type)])) {
-            if ('parent' === $lcType = self::SPECIAL_RETURN_TYPES[$lcType]) {
-                $lcType = null !== $parent ? '\\'.$parent : 'parent';
-            } elseif ('self' === $lcType) {
-                $lcType = '\\'.$class;
-            }
-
-            return $lcType;
-        }
-
-        if ('[]' === substr($type, -2)) {
-            return 'array';
-        }
-
-        if (preg_match('/^(array|iterable|callable) *[<(]/', $lcType, $m)) {
-            return $m[1];
-        }
-
-        // We could resolve "use" statements to return the FQDN
-        // but this would be too expensive for a runtime checker
-
-        return $type;
-    }
-
-    /**
-     * Utility method to add @return annotations to the Symfony code-base where it triggers a self-deprecations.
-     */
-    private function patchMethod(\ReflectionMethod $method, string $returnType, string $declaringFile, string $normalizedType)
-    {
-        static $patchedMethods = [];
-        static $useStatements = [];
-
-        if (!file_exists($file = $method->getFileName()) || isset($patchedMethods[$file][$startLine = $method->getStartLine()])) {
-            return;
-        }
-
-        $patchedMethods[$file][$startLine] = true;
-        $fileOffset = self::$fileOffsets[$file] ?? 0;
-        $startLine += $fileOffset - 2;
-        $nullable = '?' === $normalizedType[0] ? '?' : '';
-        $normalizedType = ltrim($normalizedType, '?');
-        $returnType = explode('|', $returnType);
-        $code = file($file);
-
-        foreach ($returnType as $i => $type) {
-            if (preg_match('/((?:\[\])+)$/', $type, $m)) {
-                $type = substr($type, 0, -\strlen($m[1]));
-                $format = '%s'.$m[1];
-            } elseif (preg_match('/^(array|iterable)<([^,>]++)>$/', $type, $m)) {
-                $type = $m[2];
-                $format = $m[1].'<%s>';
-            } else {
-                $format = null;
-            }
-
-            if (isset(self::SPECIAL_RETURN_TYPES[$type]) || ('\\' === $type[0] && !$p = strrpos($type, '\\', 1))) {
-                continue;
-            }
-
-            list($namespace, $useOffset, $useMap) = $useStatements[$file] ?? $useStatements[$file] = self::getUseStatements($file);
-
-            if ('\\' !== $type[0]) {
-                list($declaringNamespace, , $declaringUseMap) = $useStatements[$declaringFile] ?? $useStatements[$declaringFile] = self::getUseStatements($declaringFile);
-
-                $p = strpos($type, '\\', 1);
-                $alias = $p ? substr($type, 0, $p) : $type;
-
-                if (isset($declaringUseMap[$alias])) {
-                    $type = '\\'.$declaringUseMap[$alias].($p ? substr($type, $p) : '');
-                } else {
-                    $type = '\\'.$declaringNamespace.$type;
-                }
-
-                $p = strrpos($type, '\\', 1);
-            }
-
-            $alias = substr($type, 1 + $p);
-            $type = substr($type, 1);
-
-            if (!isset($useMap[$alias]) && (class_exists($c = $namespace.$alias) || interface_exists($c) || trait_exists($c))) {
-                $useMap[$alias] = $c;
-            }
-
-            if (!isset($useMap[$alias])) {
-                $useStatements[$file][2][$alias] = $type;
-                $code[$useOffset] = "use $type;\n".$code[$useOffset];
-                ++$fileOffset;
-            } elseif ($useMap[$alias] !== $type) {
-                $alias .= 'FIXME';
-                $useStatements[$file][2][$alias] = $type;
-                $code[$useOffset] = "use $type as $alias;\n".$code[$useOffset];
-                ++$fileOffset;
-            }
-
-            $returnType[$i] = null !== $format ? sprintf($format, $alias) : $alias;
-
-            if (!isset(self::SPECIAL_RETURN_TYPES[$normalizedType]) && !isset(self::SPECIAL_RETURN_TYPES[$returnType[$i]])) {
-                $normalizedType = $returnType[$i];
-            }
-        }
-
-        if ('docblock' === $this->patchTypes['force'] || ('object' === $normalizedType && '7.1' === $this->patchTypes['php'])) {
-            $returnType = implode('|', $returnType);
-
-            if ($method->getDocComment()) {
-                $code[$startLine] = "     * @return $returnType\n".$code[$startLine];
-            } else {
-                $code[$startLine] .= <<<EOTXT
-    /**
-     * @return $returnType
-     */
-
-EOTXT;
-            }
-
-            $fileOffset += substr_count($code[$startLine], "\n") - 1;
-        }
-
-        self::$fileOffsets[$file] = $fileOffset;
-        file_put_contents($file, $code);
-
-        $this->fixReturnStatements($method, $nullable.$normalizedType);
-    }
-
-    private static function getUseStatements(string $file): array
-    {
-        $namespace = '';
-        $useMap = [];
-        $useOffset = 0;
-
-        if (!file_exists($file)) {
-            return [$namespace, $useOffset, $useMap];
-        }
-
-        $file = file($file);
-
-        for ($i = 0; $i < \count($file); ++$i) {
-            if (preg_match('/^(class|interface|trait|abstract) /', $file[$i])) {
-                break;
-            }
-
-            if (0 === strpos($file[$i], 'namespace ')) {
-                $namespace = substr($file[$i], \strlen('namespace '), -2).'\\';
-                $useOffset = $i + 2;
-            }
-
-            if (0 === strpos($file[$i], 'use ')) {
-                $useOffset = $i;
-
-                for (; 0 === strpos($file[$i], 'use '); ++$i) {
-                    $u = explode(' as ', substr($file[$i], 4, -2), 2);
-
-                    if (1 === \count($u)) {
-                        $p = strrpos($u[0], '\\');
-                        $useMap[substr($u[0], false !== $p ? 1 + $p : 0)] = $u[0];
-                    } else {
-                        $useMap[$u[1]] = $u[0];
-                    }
-                }
-
-                break;
-            }
-        }
-
-        return [$namespace, $useOffset, $useMap];
-    }
-
-    private function fixReturnStatements(\ReflectionMethod $method, string $returnType)
-    {
-        if ('7.1' === $this->patchTypes['php'] && 'object' === ltrim($returnType, '?') && 'docblock' !== $this->patchTypes['force']) {
-            return;
-        }
-
-        if (!file_exists($file = $method->getFileName())) {
-            return;
-        }
-
-        $fixedCode = $code = file($file);
-        $i = (self::$fileOffsets[$file] ?? 0) + $method->getStartLine();
-
-        if ('?' !== $returnType && 'docblock' !== $this->patchTypes['force']) {
-            $fixedCode[$i - 1] = preg_replace('/\)(;?\n)/', "): $returnType\\1", $code[$i - 1]);
-        }
-
-        $end = $method->isGenerator() ? $i : $method->getEndLine();
-        for (; $i < $end; ++$i) {
-            if ('void' === $returnType) {
-                $fixedCode[$i] = str_replace('    return null;', '    return;', $code[$i]);
-            } elseif ('mixed' === $returnType || '?' === $returnType[0]) {
-                $fixedCode[$i] = str_replace('    return;', '    return null;', $code[$i]);
-            } else {
-                $fixedCode[$i] = str_replace('    return;', "    return $returnType!?;", $code[$i]);
-            }
-        }
-
-        if ($fixedCode !== $code) {
-            file_put_contents($file, $fixedCode);
-        }
-    }
-}
diff --git a/vendor/symfony/error-handler/Error/ClassNotFoundError.php b/vendor/symfony/error-handler/Error/ClassNotFoundError.php
deleted file mode 100644
index 443fba2c3bee616ca6002b34f35179f840e15008..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Error/ClassNotFoundError.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\Error;
-
-class ClassNotFoundError extends \Error
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct(string $message, \Throwable $previous)
-    {
-        parent::__construct($message, $previous->getCode(), $previous->getPrevious());
-
-        foreach ([
-            'file' => $previous->getFile(),
-            'line' => $previous->getLine(),
-            'trace' => $previous->getTrace(),
-        ] as $property => $value) {
-            $refl = new \ReflectionProperty(\Error::class, $property);
-            $refl->setAccessible(true);
-            $refl->setValue($this, $value);
-        }
-    }
-}
diff --git a/vendor/symfony/error-handler/Error/FatalError.php b/vendor/symfony/error-handler/Error/FatalError.php
deleted file mode 100644
index 98490b5accc41f0c02e88b3b87c4a15e480a181e..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Error/FatalError.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\Error;
-
-class FatalError extends \Error
-{
-    private $error;
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param array $error An array as returned by error_get_last()
-     */
-    public function __construct(string $message, int $code, array $error, int $traceOffset = null, bool $traceArgs = true, array $trace = null)
-    {
-        parent::__construct($message, $code);
-
-        $this->error = $error;
-
-        if (null !== $trace) {
-            if (!$traceArgs) {
-                foreach ($trace as &$frame) {
-                    unset($frame['args'], $frame['this'], $frame);
-                }
-            }
-        } elseif (null !== $traceOffset) {
-            if (\function_exists('xdebug_get_function_stack')) {
-                $trace = xdebug_get_function_stack();
-                if (0 < $traceOffset) {
-                    array_splice($trace, -$traceOffset);
-                }
-
-                foreach ($trace as &$frame) {
-                    if (!isset($frame['type'])) {
-                        // XDebug pre 2.1.1 doesn't currently set the call type key http://bugs.xdebug.org/view.php?id=695
-                        if (isset($frame['class'])) {
-                            $frame['type'] = '::';
-                        }
-                    } elseif ('dynamic' === $frame['type']) {
-                        $frame['type'] = '->';
-                    } elseif ('static' === $frame['type']) {
-                        $frame['type'] = '::';
-                    }
-
-                    // XDebug also has a different name for the parameters array
-                    if (!$traceArgs) {
-                        unset($frame['params'], $frame['args']);
-                    } elseif (isset($frame['params']) && !isset($frame['args'])) {
-                        $frame['args'] = $frame['params'];
-                        unset($frame['params']);
-                    }
-                }
-
-                unset($frame);
-                $trace = array_reverse($trace);
-            } else {
-                $trace = [];
-            }
-        }
-
-        foreach ([
-            'file' => $error['file'],
-            'line' => $error['line'],
-            'trace' => $trace,
-        ] as $property => $value) {
-            if (null !== $value) {
-                $refl = new \ReflectionProperty(\Error::class, $property);
-                $refl->setAccessible(true);
-                $refl->setValue($this, $value);
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getError(): array
-    {
-        return $this->error;
-    }
-}
diff --git a/vendor/symfony/error-handler/Error/OutOfMemoryError.php b/vendor/symfony/error-handler/Error/OutOfMemoryError.php
deleted file mode 100644
index d685c3d3693360013064da7456e6d5b26c4a4449..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Error/OutOfMemoryError.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\Error;
-
-class OutOfMemoryError extends FatalError
-{
-}
diff --git a/vendor/symfony/error-handler/Error/UndefinedFunctionError.php b/vendor/symfony/error-handler/Error/UndefinedFunctionError.php
deleted file mode 100644
index b57dd1579dee6fbcc7d6d53e6477dc60c7fbe15a..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Error/UndefinedFunctionError.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\Error;
-
-class UndefinedFunctionError extends \Error
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct(string $message, \Throwable $previous)
-    {
-        parent::__construct($message, $previous->getCode(), $previous->getPrevious());
-
-        foreach ([
-            'file' => $previous->getFile(),
-            'line' => $previous->getLine(),
-            'trace' => $previous->getTrace(),
-        ] as $property => $value) {
-            $refl = new \ReflectionProperty(\Error::class, $property);
-            $refl->setAccessible(true);
-            $refl->setValue($this, $value);
-        }
-    }
-}
diff --git a/vendor/symfony/error-handler/Error/UndefinedMethodError.php b/vendor/symfony/error-handler/Error/UndefinedMethodError.php
deleted file mode 100644
index adc8731f36c48a0f6e71ba4ab1a3139bb5bb6850..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Error/UndefinedMethodError.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\Error;
-
-class UndefinedMethodError extends \Error
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct(string $message, \Throwable $previous)
-    {
-        parent::__construct($message, $previous->getCode(), $previous->getPrevious());
-
-        foreach ([
-            'file' => $previous->getFile(),
-            'line' => $previous->getLine(),
-            'trace' => $previous->getTrace(),
-        ] as $property => $value) {
-            $refl = new \ReflectionProperty(\Error::class, $property);
-            $refl->setAccessible(true);
-            $refl->setValue($this, $value);
-        }
-    }
-}
diff --git a/vendor/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php b/vendor/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php
deleted file mode 100644
index 96a58be800e4b31843b6ec408262b51981b191f6..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\ErrorEnhancer;
-
-use Composer\Autoload\ClassLoader as ComposerClassLoader;
-use Symfony\Component\ClassLoader\ClassLoader as SymfonyClassLoader;
-use Symfony\Component\ErrorHandler\DebugClassLoader;
-use Symfony\Component\ErrorHandler\Error\ClassNotFoundError;
-use Symfony\Component\ErrorHandler\Error\FatalError;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ClassNotFoundErrorEnhancer implements ErrorEnhancerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function enhance(\Throwable $error): ?\Throwable
-    {
-        // Some specific versions of PHP produce a fatal error when extending a not found class.
-        $message = !$error instanceof FatalError ? $error->getMessage() : $error->getError()['message'];
-        if (!preg_match('/^(Class|Interface|Trait) [\'"]([^\'"]+)[\'"] not found$/', $message, $matches)) {
-            return null;
-        }
-        $typeName = strtolower($matches[1]);
-        $fullyQualifiedClassName = $matches[2];
-
-        if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedClassName, '\\')) {
-            $className = substr($fullyQualifiedClassName, $namespaceSeparatorIndex + 1);
-            $namespacePrefix = substr($fullyQualifiedClassName, 0, $namespaceSeparatorIndex);
-            $message = sprintf('Attempted to load %s "%s" from namespace "%s".', $typeName, $className, $namespacePrefix);
-            $tail = ' for another namespace?';
-        } else {
-            $className = $fullyQualifiedClassName;
-            $message = sprintf('Attempted to load %s "%s" from the global namespace.', $typeName, $className);
-            $tail = '?';
-        }
-
-        if ($candidates = $this->getClassCandidates($className)) {
-            $tail = array_pop($candidates).'"?';
-            if ($candidates) {
-                $tail = ' for e.g. "'.implode('", "', $candidates).'" or "'.$tail;
-            } else {
-                $tail = ' for "'.$tail;
-            }
-        }
-        $message .= "\nDid you forget a \"use\" statement".$tail;
-
-        return new ClassNotFoundError($message, $error);
-    }
-
-    /**
-     * Tries to guess the full namespace for a given class name.
-     *
-     * By default, it looks for PSR-0 and PSR-4 classes registered via a Symfony or a Composer
-     * autoloader (that should cover all common cases).
-     *
-     * @param string $class A class name (without its namespace)
-     *
-     * Returns an array of possible fully qualified class names
-     */
-    private function getClassCandidates(string $class): array
-    {
-        if (!\is_array($functions = spl_autoload_functions())) {
-            return [];
-        }
-
-        // find Symfony and Composer autoloaders
-        $classes = [];
-
-        foreach ($functions as $function) {
-            if (!\is_array($function)) {
-                continue;
-            }
-            // get class loaders wrapped by DebugClassLoader
-            if ($function[0] instanceof DebugClassLoader) {
-                $function = $function[0]->getClassLoader();
-
-                if (!\is_array($function)) {
-                    continue;
-                }
-            }
-
-            if ($function[0] instanceof ComposerClassLoader || $function[0] instanceof SymfonyClassLoader) {
-                foreach ($function[0]->getPrefixes() as $prefix => $paths) {
-                    foreach ($paths as $path) {
-                        $classes = array_merge($classes, $this->findClassInPath($path, $class, $prefix));
-                    }
-                }
-            }
-            if ($function[0] instanceof ComposerClassLoader) {
-                foreach ($function[0]->getPrefixesPsr4() as $prefix => $paths) {
-                    foreach ($paths as $path) {
-                        $classes = array_merge($classes, $this->findClassInPath($path, $class, $prefix));
-                    }
-                }
-            }
-        }
-
-        return array_unique($classes);
-    }
-
-    private function findClassInPath(string $path, string $class, string $prefix): array
-    {
-        if (!$path = realpath($path.'/'.strtr($prefix, '\\_', '//')) ?: realpath($path.'/'.\dirname(strtr($prefix, '\\_', '//'))) ?: realpath($path)) {
-            return [];
-        }
-
-        $classes = [];
-        $filename = $class.'.php';
-        foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
-            if ($filename == $file->getFileName() && $class = $this->convertFileToClass($path, $file->getPathName(), $prefix)) {
-                $classes[] = $class;
-            }
-        }
-
-        return $classes;
-    }
-
-    private function convertFileToClass(string $path, string $file, string $prefix): ?string
-    {
-        $candidates = [
-            // namespaced class
-            $namespacedClass = str_replace([$path.\DIRECTORY_SEPARATOR, '.php', '/'], ['', '', '\\'], $file),
-            // namespaced class (with target dir)
-            $prefix.$namespacedClass,
-            // namespaced class (with target dir and separator)
-            $prefix.'\\'.$namespacedClass,
-            // PEAR class
-            str_replace('\\', '_', $namespacedClass),
-            // PEAR class (with target dir)
-            str_replace('\\', '_', $prefix.$namespacedClass),
-            // PEAR class (with target dir and separator)
-            str_replace('\\', '_', $prefix.'\\'.$namespacedClass),
-        ];
-
-        if ($prefix) {
-            $candidates = array_filter($candidates, function ($candidate) use ($prefix) { return 0 === strpos($candidate, $prefix); });
-        }
-
-        // We cannot use the autoloader here as most of them use require; but if the class
-        // is not found, the new autoloader call will require the file again leading to a
-        // "cannot redeclare class" error.
-        foreach ($candidates as $candidate) {
-            if ($this->classExists($candidate)) {
-                return $candidate;
-            }
-        }
-
-        try {
-            require_once $file;
-        } catch (\Throwable $e) {
-            return null;
-        }
-
-        foreach ($candidates as $candidate) {
-            if ($this->classExists($candidate)) {
-                return $candidate;
-            }
-        }
-
-        return null;
-    }
-
-    private function classExists(string $class): bool
-    {
-        return class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false);
-    }
-}
diff --git a/vendor/symfony/error-handler/ErrorEnhancer/ErrorEnhancerInterface.php b/vendor/symfony/error-handler/ErrorEnhancer/ErrorEnhancerInterface.php
deleted file mode 100644
index 7c3f4ef94068a388d0e2f6313028b8a4ae5bb29f..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/ErrorEnhancer/ErrorEnhancerInterface.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\ErrorEnhancer;
-
-interface ErrorEnhancerInterface
-{
-    /**
-     * Returns an \Throwable instance if the class is able to improve the error, null otherwise.
-     */
-    public function enhance(\Throwable $error): ?\Throwable;
-}
diff --git a/vendor/symfony/error-handler/ErrorEnhancer/UndefinedFunctionErrorEnhancer.php b/vendor/symfony/error-handler/ErrorEnhancer/UndefinedFunctionErrorEnhancer.php
deleted file mode 100644
index f4c49c2856c22724d361a59171000be722ee8fb7..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/ErrorEnhancer/UndefinedFunctionErrorEnhancer.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\ErrorEnhancer;
-
-use Symfony\Component\ErrorHandler\Error\FatalError;
-use Symfony\Component\ErrorHandler\Error\UndefinedFunctionError;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class UndefinedFunctionErrorEnhancer implements ErrorEnhancerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function enhance(\Throwable $error): ?\Throwable
-    {
-        if ($error instanceof FatalError) {
-            return null;
-        }
-
-        $message = $error->getMessage();
-        $messageLen = \strlen($message);
-        $notFoundSuffix = '()';
-        $notFoundSuffixLen = \strlen($notFoundSuffix);
-        if ($notFoundSuffixLen > $messageLen) {
-            return null;
-        }
-
-        if (0 !== substr_compare($message, $notFoundSuffix, -$notFoundSuffixLen)) {
-            return null;
-        }
-
-        $prefix = 'Call to undefined function ';
-        $prefixLen = \strlen($prefix);
-        if (0 !== strpos($message, $prefix)) {
-            return null;
-        }
-
-        $fullyQualifiedFunctionName = substr($message, $prefixLen, -$notFoundSuffixLen);
-        if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedFunctionName, '\\')) {
-            $functionName = substr($fullyQualifiedFunctionName, $namespaceSeparatorIndex + 1);
-            $namespacePrefix = substr($fullyQualifiedFunctionName, 0, $namespaceSeparatorIndex);
-            $message = sprintf('Attempted to call function "%s" from namespace "%s".', $functionName, $namespacePrefix);
-        } else {
-            $functionName = $fullyQualifiedFunctionName;
-            $message = sprintf('Attempted to call function "%s" from the global namespace.', $functionName);
-        }
-
-        $candidates = [];
-        foreach (get_defined_functions() as $type => $definedFunctionNames) {
-            foreach ($definedFunctionNames as $definedFunctionName) {
-                if (false !== $namespaceSeparatorIndex = strrpos($definedFunctionName, '\\')) {
-                    $definedFunctionNameBasename = substr($definedFunctionName, $namespaceSeparatorIndex + 1);
-                } else {
-                    $definedFunctionNameBasename = $definedFunctionName;
-                }
-
-                if ($definedFunctionNameBasename === $functionName) {
-                    $candidates[] = '\\'.$definedFunctionName;
-                }
-            }
-        }
-
-        if ($candidates) {
-            sort($candidates);
-            $last = array_pop($candidates).'"?';
-            if ($candidates) {
-                $candidates = 'e.g. "'.implode('", "', $candidates).'" or "'.$last;
-            } else {
-                $candidates = '"'.$last;
-            }
-            $message .= "\nDid you mean to call ".$candidates;
-        }
-
-        return new UndefinedFunctionError($message, $error);
-    }
-}
diff --git a/vendor/symfony/error-handler/ErrorEnhancer/UndefinedMethodErrorEnhancer.php b/vendor/symfony/error-handler/ErrorEnhancer/UndefinedMethodErrorEnhancer.php
deleted file mode 100644
index ad0e4b3eef00bc251c60906578abcb74b725e6f5..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/ErrorEnhancer/UndefinedMethodErrorEnhancer.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\ErrorEnhancer;
-
-use Symfony\Component\ErrorHandler\Error\FatalError;
-use Symfony\Component\ErrorHandler\Error\UndefinedMethodError;
-
-/**
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- */
-class UndefinedMethodErrorEnhancer implements ErrorEnhancerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function enhance(\Throwable $error): ?\Throwable
-    {
-        if ($error instanceof FatalError) {
-            return null;
-        }
-
-        $message = $error->getMessage();
-        preg_match('/^Call to undefined method (.*)::(.*)\(\)$/', $message, $matches);
-        if (!$matches) {
-            return null;
-        }
-
-        $className = $matches[1];
-        $methodName = $matches[2];
-
-        $message = sprintf('Attempted to call an undefined method named "%s" of class "%s".', $methodName, $className);
-
-        if (!class_exists($className) || null === $methods = get_class_methods($className)) {
-            // failed to get the class or its methods on which an unknown method was called (for example on an anonymous class)
-            return new UndefinedMethodError($message, $error);
-        }
-
-        $candidates = [];
-        foreach ($methods as $definedMethodName) {
-            $lev = levenshtein($methodName, $definedMethodName);
-            if ($lev <= \strlen($methodName) / 3 || false !== strpos($definedMethodName, $methodName)) {
-                $candidates[] = $definedMethodName;
-            }
-        }
-
-        if ($candidates) {
-            sort($candidates);
-            $last = array_pop($candidates).'"?';
-            if ($candidates) {
-                $candidates = 'e.g. "'.implode('", "', $candidates).'" or "'.$last;
-            } else {
-                $candidates = '"'.$last;
-            }
-
-            $message .= "\nDid you mean to call ".$candidates;
-        }
-
-        return new UndefinedMethodError($message, $error);
-    }
-}
diff --git a/vendor/symfony/error-handler/ErrorHandler.php b/vendor/symfony/error-handler/ErrorHandler.php
deleted file mode 100644
index 412110e7a59ffe49ff87baa2ad811e41be678838..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/ErrorHandler.php
+++ /dev/null
@@ -1,764 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler;
-
-use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
-use Symfony\Component\ErrorHandler\Error\FatalError;
-use Symfony\Component\ErrorHandler\Error\OutOfMemoryError;
-use Symfony\Component\ErrorHandler\ErrorEnhancer\ClassNotFoundErrorEnhancer;
-use Symfony\Component\ErrorHandler\ErrorEnhancer\ErrorEnhancerInterface;
-use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedFunctionErrorEnhancer;
-use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedMethodErrorEnhancer;
-use Symfony\Component\ErrorHandler\ErrorRenderer\CliErrorRenderer;
-use Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer;
-use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext;
-
-/**
- * A generic ErrorHandler for the PHP engine.
- *
- * Provides five bit fields that control how errors are handled:
- * - thrownErrors: errors thrown as \ErrorException
- * - loggedErrors: logged errors, when not @-silenced
- * - scopedErrors: errors thrown or logged with their local context
- * - tracedErrors: errors logged with their stack trace
- * - screamedErrors: never @-silenced errors
- *
- * Each error level can be logged by a dedicated PSR-3 logger object.
- * Screaming only applies to logging.
- * Throwing takes precedence over logging.
- * Uncaught exceptions are logged as E_ERROR.
- * E_DEPRECATED and E_USER_DEPRECATED levels never throw.
- * E_RECOVERABLE_ERROR and E_USER_ERROR levels always throw.
- * Non catchable errors that can be detected at shutdown time are logged when the scream bit field allows so.
- * As errors have a performance cost, repeated errors are all logged, so that the developer
- * can see them and weight them as more important to fix than others of the same level.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- *
- * @final
- */
-class ErrorHandler
-{
-    private $levels = [
-        \E_DEPRECATED => 'Deprecated',
-        \E_USER_DEPRECATED => 'User Deprecated',
-        \E_NOTICE => 'Notice',
-        \E_USER_NOTICE => 'User Notice',
-        \E_STRICT => 'Runtime Notice',
-        \E_WARNING => 'Warning',
-        \E_USER_WARNING => 'User Warning',
-        \E_COMPILE_WARNING => 'Compile Warning',
-        \E_CORE_WARNING => 'Core Warning',
-        \E_USER_ERROR => 'User Error',
-        \E_RECOVERABLE_ERROR => 'Catchable Fatal Error',
-        \E_COMPILE_ERROR => 'Compile Error',
-        \E_PARSE => 'Parse Error',
-        \E_ERROR => 'Error',
-        \E_CORE_ERROR => 'Core Error',
-    ];
-
-    private $loggers = [
-        \E_DEPRECATED => [null, LogLevel::INFO],
-        \E_USER_DEPRECATED => [null, LogLevel::INFO],
-        \E_NOTICE => [null, LogLevel::WARNING],
-        \E_USER_NOTICE => [null, LogLevel::WARNING],
-        \E_STRICT => [null, LogLevel::WARNING],
-        \E_WARNING => [null, LogLevel::WARNING],
-        \E_USER_WARNING => [null, LogLevel::WARNING],
-        \E_COMPILE_WARNING => [null, LogLevel::WARNING],
-        \E_CORE_WARNING => [null, LogLevel::WARNING],
-        \E_USER_ERROR => [null, LogLevel::CRITICAL],
-        \E_RECOVERABLE_ERROR => [null, LogLevel::CRITICAL],
-        \E_COMPILE_ERROR => [null, LogLevel::CRITICAL],
-        \E_PARSE => [null, LogLevel::CRITICAL],
-        \E_ERROR => [null, LogLevel::CRITICAL],
-        \E_CORE_ERROR => [null, LogLevel::CRITICAL],
-    ];
-
-    private $thrownErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED
-    private $scopedErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED
-    private $tracedErrors = 0x77FB; // E_ALL - E_STRICT - E_PARSE
-    private $screamedErrors = 0x55; // E_ERROR + E_CORE_ERROR + E_COMPILE_ERROR + E_PARSE
-    private $loggedErrors = 0;
-    private $traceReflector;
-    private $debug;
-
-    private $isRecursive = 0;
-    private $isRoot = false;
-    private $exceptionHandler;
-    private $bootstrappingLogger;
-
-    private static $reservedMemory;
-    private static $toStringException;
-    private static $silencedErrorCache = [];
-    private static $silencedErrorCount = 0;
-    private static $exitCode = 0;
-
-    /**
-     * Registers the error handler.
-     */
-    public static function register(self $handler = null, bool $replace = true): self
-    {
-        if (null === self::$reservedMemory) {
-            self::$reservedMemory = str_repeat('x', 10240);
-            register_shutdown_function(__CLASS__.'::handleFatalError');
-        }
-
-        if ($handlerIsNew = null === $handler) {
-            $handler = new static();
-        }
-
-        if (null === $prev = set_error_handler([$handler, 'handleError'])) {
-            restore_error_handler();
-            // Specifying the error types earlier would expose us to https://bugs.php.net/63206
-            set_error_handler([$handler, 'handleError'], $handler->thrownErrors | $handler->loggedErrors);
-            $handler->isRoot = true;
-        }
-
-        if ($handlerIsNew && \is_array($prev) && $prev[0] instanceof self) {
-            $handler = $prev[0];
-            $replace = false;
-        }
-        if (!$replace && $prev) {
-            restore_error_handler();
-            $handlerIsRegistered = \is_array($prev) && $handler === $prev[0];
-        } else {
-            $handlerIsRegistered = true;
-        }
-        if (\is_array($prev = set_exception_handler([$handler, 'handleException'])) && $prev[0] instanceof self) {
-            restore_exception_handler();
-            if (!$handlerIsRegistered) {
-                $handler = $prev[0];
-            } elseif ($handler !== $prev[0] && $replace) {
-                set_exception_handler([$handler, 'handleException']);
-                $p = $prev[0]->setExceptionHandler(null);
-                $handler->setExceptionHandler($p);
-                $prev[0]->setExceptionHandler($p);
-            }
-        } else {
-            $handler->setExceptionHandler($prev ?? [$handler, 'renderException']);
-        }
-
-        $handler->throwAt(\E_ALL & $handler->thrownErrors, true);
-
-        return $handler;
-    }
-
-    /**
-     * Calls a function and turns any PHP error into \ErrorException.
-     *
-     * @return mixed What $function(...$arguments) returns
-     *
-     * @throws \ErrorException When $function(...$arguments) triggers a PHP error
-     */
-    public static function call(callable $function, ...$arguments)
-    {
-        set_error_handler(static function (int $type, string $message, string $file, int $line) {
-            if (__FILE__ === $file) {
-                $trace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 3);
-                $file = $trace[2]['file'] ?? $file;
-                $line = $trace[2]['line'] ?? $line;
-            }
-
-            throw new \ErrorException($message, 0, $type, $file, $line);
-        });
-
-        try {
-            return $function(...$arguments);
-        } finally {
-            restore_error_handler();
-        }
-    }
-
-    public function __construct(BufferingLogger $bootstrappingLogger = null, bool $debug = false)
-    {
-        if ($bootstrappingLogger) {
-            $this->bootstrappingLogger = $bootstrappingLogger;
-            $this->setDefaultLogger($bootstrappingLogger);
-        }
-        $this->traceReflector = new \ReflectionProperty('Exception', 'trace');
-        $this->traceReflector->setAccessible(true);
-        $this->debug = $debug;
-    }
-
-    /**
-     * Sets a logger to non assigned errors levels.
-     *
-     * @param LoggerInterface $logger  A PSR-3 logger to put as default for the given levels
-     * @param array|int       $levels  An array map of E_* to LogLevel::* or an integer bit field of E_* constants
-     * @param bool            $replace Whether to replace or not any existing logger
-     */
-    public function setDefaultLogger(LoggerInterface $logger, $levels = \E_ALL, bool $replace = false): void
-    {
-        $loggers = [];
-
-        if (\is_array($levels)) {
-            foreach ($levels as $type => $logLevel) {
-                if (empty($this->loggers[$type][0]) || $replace || $this->loggers[$type][0] === $this->bootstrappingLogger) {
-                    $loggers[$type] = [$logger, $logLevel];
-                }
-            }
-        } else {
-            if (null === $levels) {
-                $levels = \E_ALL;
-            }
-            foreach ($this->loggers as $type => $log) {
-                if (($type & $levels) && (empty($log[0]) || $replace || $log[0] === $this->bootstrappingLogger)) {
-                    $log[0] = $logger;
-                    $loggers[$type] = $log;
-                }
-            }
-        }
-
-        $this->setLoggers($loggers);
-    }
-
-    /**
-     * Sets a logger for each error level.
-     *
-     * @param array $loggers Error levels to [LoggerInterface|null, LogLevel::*] map
-     *
-     * @return array The previous map
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setLoggers(array $loggers): array
-    {
-        $prevLogged = $this->loggedErrors;
-        $prev = $this->loggers;
-        $flush = [];
-
-        foreach ($loggers as $type => $log) {
-            if (!isset($prev[$type])) {
-                throw new \InvalidArgumentException('Unknown error type: '.$type);
-            }
-            if (!\is_array($log)) {
-                $log = [$log];
-            } elseif (!\array_key_exists(0, $log)) {
-                throw new \InvalidArgumentException('No logger provided.');
-            }
-            if (null === $log[0]) {
-                $this->loggedErrors &= ~$type;
-            } elseif ($log[0] instanceof LoggerInterface) {
-                $this->loggedErrors |= $type;
-            } else {
-                throw new \InvalidArgumentException('Invalid logger provided.');
-            }
-            $this->loggers[$type] = $log + $prev[$type];
-
-            if ($this->bootstrappingLogger && $prev[$type][0] === $this->bootstrappingLogger) {
-                $flush[$type] = $type;
-            }
-        }
-        $this->reRegister($prevLogged | $this->thrownErrors);
-
-        if ($flush) {
-            foreach ($this->bootstrappingLogger->cleanLogs() as $log) {
-                $type = ThrowableUtils::getSeverity($log[2]['exception']);
-                if (!isset($flush[$type])) {
-                    $this->bootstrappingLogger->log($log[0], $log[1], $log[2]);
-                } elseif ($this->loggers[$type][0]) {
-                    $this->loggers[$type][0]->log($this->loggers[$type][1], $log[1], $log[2]);
-                }
-            }
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Sets a user exception handler.
-     *
-     * @param callable(\Throwable $e)|null $handler
-     *
-     * @return callable|null The previous exception handler
-     */
-    public function setExceptionHandler(?callable $handler): ?callable
-    {
-        $prev = $this->exceptionHandler;
-        $this->exceptionHandler = $handler;
-
-        return $prev;
-    }
-
-    /**
-     * Sets the PHP error levels that throw an exception when a PHP error occurs.
-     *
-     * @param int  $levels  A bit field of E_* constants for thrown errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function throwAt(int $levels, bool $replace = false): int
-    {
-        $prev = $this->thrownErrors;
-        $this->thrownErrors = ($levels | \E_RECOVERABLE_ERROR | \E_USER_ERROR) & ~\E_USER_DEPRECATED & ~\E_DEPRECATED;
-        if (!$replace) {
-            $this->thrownErrors |= $prev;
-        }
-        $this->reRegister($prev | $this->loggedErrors);
-
-        return $prev;
-    }
-
-    /**
-     * Sets the PHP error levels for which local variables are preserved.
-     *
-     * @param int  $levels  A bit field of E_* constants for scoped errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function scopeAt(int $levels, bool $replace = false): int
-    {
-        $prev = $this->scopedErrors;
-        $this->scopedErrors = $levels;
-        if (!$replace) {
-            $this->scopedErrors |= $prev;
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Sets the PHP error levels for which the stack trace is preserved.
-     *
-     * @param int  $levels  A bit field of E_* constants for traced errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function traceAt(int $levels, bool $replace = false): int
-    {
-        $prev = $this->tracedErrors;
-        $this->tracedErrors = (int) $levels;
-        if (!$replace) {
-            $this->tracedErrors |= $prev;
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Sets the error levels where the @-operator is ignored.
-     *
-     * @param int  $levels  A bit field of E_* constants for screamed errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function screamAt(int $levels, bool $replace = false): int
-    {
-        $prev = $this->screamedErrors;
-        $this->screamedErrors = $levels;
-        if (!$replace) {
-            $this->screamedErrors |= $prev;
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Re-registers as a PHP error handler if levels changed.
-     */
-    private function reRegister(int $prev): void
-    {
-        if ($prev !== $this->thrownErrors | $this->loggedErrors) {
-            $handler = set_error_handler('var_dump');
-            $handler = \is_array($handler) ? $handler[0] : null;
-            restore_error_handler();
-            if ($handler === $this) {
-                restore_error_handler();
-                if ($this->isRoot) {
-                    set_error_handler([$this, 'handleError'], $this->thrownErrors | $this->loggedErrors);
-                } else {
-                    set_error_handler([$this, 'handleError']);
-                }
-            }
-        }
-    }
-
-    /**
-     * Handles errors by filtering then logging them according to the configured bit fields.
-     *
-     * @return bool Returns false when no handling happens so that the PHP engine can handle the error itself
-     *
-     * @throws \ErrorException When $this->thrownErrors requests so
-     *
-     * @internal
-     */
-    public function handleError(int $type, string $message, string $file, int $line): bool
-    {
-        if (\PHP_VERSION_ID >= 70300 && \E_WARNING === $type && '"' === $message[0] && false !== strpos($message, '" targeting switch is equivalent to "break')) {
-            $type = \E_DEPRECATED;
-        }
-
-        // Level is the current error reporting level to manage silent error.
-        $level = error_reporting();
-        $silenced = 0 === ($level & $type);
-        // Strong errors are not authorized to be silenced.
-        $level |= \E_RECOVERABLE_ERROR | \E_USER_ERROR | \E_DEPRECATED | \E_USER_DEPRECATED;
-        $log = $this->loggedErrors & $type;
-        $throw = $this->thrownErrors & $type & $level;
-        $type &= $level | $this->screamedErrors;
-
-        // Never throw on warnings triggered by assert()
-        if (\E_WARNING === $type && 'a' === $message[0] && 0 === strncmp($message, 'assert(): ', 10)) {
-            $throw = 0;
-        }
-
-        if (!$type || (!$log && !$throw)) {
-            return false;
-        }
-
-        if (false !== strpos($message, "@anonymous\0")) {
-            $logMessage = $this->parseAnonymousClass($message);
-        } else {
-            $logMessage = $this->levels[$type].': '.$message;
-        }
-
-        if (null !== self::$toStringException) {
-            $errorAsException = self::$toStringException;
-            self::$toStringException = null;
-        } elseif (!$throw && !($type & $level)) {
-            if (!isset(self::$silencedErrorCache[$id = $file.':'.$line])) {
-                $lightTrace = $this->tracedErrors & $type ? $this->cleanTrace(debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 5), $type, $file, $line, false) : [];
-                $errorAsException = new SilencedErrorContext($type, $file, $line, isset($lightTrace[1]) ? [$lightTrace[0]] : $lightTrace);
-            } elseif (isset(self::$silencedErrorCache[$id][$message])) {
-                $lightTrace = null;
-                $errorAsException = self::$silencedErrorCache[$id][$message];
-                ++$errorAsException->count;
-            } else {
-                $lightTrace = [];
-                $errorAsException = null;
-            }
-
-            if (100 < ++self::$silencedErrorCount) {
-                self::$silencedErrorCache = $lightTrace = [];
-                self::$silencedErrorCount = 1;
-            }
-            if ($errorAsException) {
-                self::$silencedErrorCache[$id][$message] = $errorAsException;
-            }
-            if (null === $lightTrace) {
-                return true;
-            }
-        } else {
-            $errorAsException = new \ErrorException($logMessage, 0, $type, $file, $line);
-
-            if ($throw || $this->tracedErrors & $type) {
-                $backtrace = $errorAsException->getTrace();
-                $lightTrace = $this->cleanTrace($backtrace, $type, $file, $line, $throw);
-                $this->traceReflector->setValue($errorAsException, $lightTrace);
-            } else {
-                $this->traceReflector->setValue($errorAsException, []);
-                $backtrace = [];
-            }
-        }
-
-        if ($throw) {
-            if (\PHP_VERSION_ID < 70400 && \E_USER_ERROR & $type) {
-                for ($i = 1; isset($backtrace[$i]); ++$i) {
-                    if (isset($backtrace[$i]['function'], $backtrace[$i]['type'], $backtrace[$i - 1]['function'])
-                        && '__toString' === $backtrace[$i]['function']
-                        && '->' === $backtrace[$i]['type']
-                        && !isset($backtrace[$i - 1]['class'])
-                        && ('trigger_error' === $backtrace[$i - 1]['function'] || 'user_error' === $backtrace[$i - 1]['function'])
-                    ) {
-                        // Here, we know trigger_error() has been called from __toString().
-                        // PHP triggers a fatal error when throwing from __toString().
-                        // A small convention allows working around the limitation:
-                        // given a caught $e exception in __toString(), quitting the method with
-                        // `return trigger_error($e, E_USER_ERROR);` allows this error handler
-                        // to make $e get through the __toString() barrier.
-
-                        $context = 4 < \func_num_args() ? (func_get_arg(4) ?: []) : [];
-
-                        foreach ($context as $e) {
-                            if ($e instanceof \Throwable && $e->__toString() === $message) {
-                                self::$toStringException = $e;
-
-                                return true;
-                            }
-                        }
-
-                        // Display the original error message instead of the default one.
-                        $this->handleException($errorAsException);
-
-                        // Stop the process by giving back the error to the native handler.
-                        return false;
-                    }
-                }
-            }
-
-            throw $errorAsException;
-        }
-
-        if ($this->isRecursive) {
-            $log = 0;
-        } else {
-            if (\PHP_VERSION_ID < (\PHP_VERSION_ID < 70400 ? 70316 : 70404)) {
-                $currentErrorHandler = set_error_handler('var_dump');
-                restore_error_handler();
-            }
-
-            try {
-                $this->isRecursive = true;
-                $level = ($type & $level) ? $this->loggers[$type][1] : LogLevel::DEBUG;
-                $this->loggers[$type][0]->log($level, $logMessage, $errorAsException ? ['exception' => $errorAsException] : []);
-            } finally {
-                $this->isRecursive = false;
-
-                if (\PHP_VERSION_ID < (\PHP_VERSION_ID < 70400 ? 70316 : 70404)) {
-                    set_error_handler($currentErrorHandler);
-                }
-            }
-        }
-
-        return !$silenced && $type && $log;
-    }
-
-    /**
-     * Handles an exception by logging then forwarding it to another handler.
-     *
-     * @internal
-     */
-    public function handleException(\Throwable $exception)
-    {
-        $handlerException = null;
-
-        if (!$exception instanceof FatalError) {
-            self::$exitCode = 255;
-
-            $type = ThrowableUtils::getSeverity($exception);
-        } else {
-            $type = $exception->getError()['type'];
-        }
-
-        if ($this->loggedErrors & $type) {
-            if (false !== strpos($message = $exception->getMessage(), "@anonymous\0")) {
-                $message = $this->parseAnonymousClass($message);
-            }
-
-            if ($exception instanceof FatalError) {
-                $message = 'Fatal '.$message;
-            } elseif ($exception instanceof \Error) {
-                $message = 'Uncaught Error: '.$message;
-            } elseif ($exception instanceof \ErrorException) {
-                $message = 'Uncaught '.$message;
-            } else {
-                $message = 'Uncaught Exception: '.$message;
-            }
-
-            try {
-                $this->loggers[$type][0]->log($this->loggers[$type][1], $message, ['exception' => $exception]);
-            } catch (\Throwable $handlerException) {
-            }
-        }
-
-        if (!$exception instanceof OutOfMemoryError) {
-            foreach ($this->getErrorEnhancers() as $errorEnhancer) {
-                if ($e = $errorEnhancer->enhance($exception)) {
-                    $exception = $e;
-                    break;
-                }
-            }
-        }
-
-        $exceptionHandler = $this->exceptionHandler;
-        $this->exceptionHandler = [$this, 'renderException'];
-
-        if (null === $exceptionHandler || $exceptionHandler === $this->exceptionHandler) {
-            $this->exceptionHandler = null;
-        }
-
-        try {
-            if (null !== $exceptionHandler) {
-                return $exceptionHandler($exception);
-            }
-            $handlerException = $handlerException ?: $exception;
-        } catch (\Throwable $handlerException) {
-        }
-        if ($exception === $handlerException && null === $this->exceptionHandler) {
-            self::$reservedMemory = null; // Disable the fatal error handler
-            throw $exception; // Give back $exception to the native handler
-        }
-
-        $loggedErrors = $this->loggedErrors;
-        $this->loggedErrors = $exception === $handlerException ? 0 : $this->loggedErrors;
-
-        try {
-            $this->handleException($handlerException);
-        } finally {
-            $this->loggedErrors = $loggedErrors;
-        }
-    }
-
-    /**
-     * Shutdown registered function for handling PHP fatal errors.
-     *
-     * @param array|null $error An array as returned by error_get_last()
-     *
-     * @internal
-     */
-    public static function handleFatalError(array $error = null): void
-    {
-        if (null === self::$reservedMemory) {
-            return;
-        }
-
-        $handler = self::$reservedMemory = null;
-        $handlers = [];
-        $previousHandler = null;
-        $sameHandlerLimit = 10;
-
-        while (!\is_array($handler) || !$handler[0] instanceof self) {
-            $handler = set_exception_handler('var_dump');
-            restore_exception_handler();
-
-            if (!$handler) {
-                break;
-            }
-            restore_exception_handler();
-
-            if ($handler !== $previousHandler) {
-                array_unshift($handlers, $handler);
-                $previousHandler = $handler;
-            } elseif (0 === --$sameHandlerLimit) {
-                $handler = null;
-                break;
-            }
-        }
-        foreach ($handlers as $h) {
-            set_exception_handler($h);
-        }
-        if (!$handler) {
-            return;
-        }
-        if ($handler !== $h) {
-            $handler[0]->setExceptionHandler($h);
-        }
-        $handler = $handler[0];
-        $handlers = [];
-
-        if ($exit = null === $error) {
-            $error = error_get_last();
-        }
-
-        if ($error && $error['type'] &= \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR) {
-            // Let's not throw anymore but keep logging
-            $handler->throwAt(0, true);
-            $trace = isset($error['backtrace']) ? $error['backtrace'] : null;
-
-            if (0 === strpos($error['message'], 'Allowed memory') || 0 === strpos($error['message'], 'Out of memory')) {
-                $fatalError = new OutOfMemoryError($handler->levels[$error['type']].': '.$error['message'], 0, $error, 2, false, $trace);
-            } else {
-                $fatalError = new FatalError($handler->levels[$error['type']].': '.$error['message'], 0, $error, 2, true, $trace);
-            }
-        } else {
-            $fatalError = null;
-        }
-
-        try {
-            if (null !== $fatalError) {
-                self::$exitCode = 255;
-                $handler->handleException($fatalError);
-            }
-        } catch (FatalError $e) {
-            // Ignore this re-throw
-        }
-
-        if ($exit && self::$exitCode) {
-            $exitCode = self::$exitCode;
-            register_shutdown_function('register_shutdown_function', function () use ($exitCode) { exit($exitCode); });
-        }
-    }
-
-    /**
-     * Renders the given exception.
-     *
-     * As this method is mainly called during boot where nothing is yet available,
-     * the output is always either HTML or CLI depending where PHP runs.
-     */
-    private function renderException(\Throwable $exception): void
-    {
-        $renderer = \in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) ? new CliErrorRenderer() : new HtmlErrorRenderer($this->debug);
-
-        $exception = $renderer->render($exception);
-
-        if (!headers_sent()) {
-            http_response_code($exception->getStatusCode());
-
-            foreach ($exception->getHeaders() as $name => $value) {
-                header($name.': '.$value, false);
-            }
-        }
-
-        echo $exception->getAsString();
-    }
-
-    /**
-     * Override this method if you want to define more error enhancers.
-     *
-     * @return ErrorEnhancerInterface[]
-     */
-    protected function getErrorEnhancers(): iterable
-    {
-        return [
-            new UndefinedFunctionErrorEnhancer(),
-            new UndefinedMethodErrorEnhancer(),
-            new ClassNotFoundErrorEnhancer(),
-        ];
-    }
-
-    /**
-     * Cleans the trace by removing function arguments and the frames added by the error handler and DebugClassLoader.
-     */
-    private function cleanTrace(array $backtrace, int $type, string $file, int $line, bool $throw): array
-    {
-        $lightTrace = $backtrace;
-
-        for ($i = 0; isset($backtrace[$i]); ++$i) {
-            if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) {
-                $lightTrace = \array_slice($lightTrace, 1 + $i);
-                break;
-            }
-        }
-        if (class_exists(DebugClassLoader::class, false)) {
-            for ($i = \count($lightTrace) - 2; 0 < $i; --$i) {
-                if (DebugClassLoader::class === ($lightTrace[$i]['class'] ?? null)) {
-                    array_splice($lightTrace, --$i, 2);
-                }
-            }
-        }
-        if (!($throw || $this->scopedErrors & $type)) {
-            for ($i = 0; isset($lightTrace[$i]); ++$i) {
-                unset($lightTrace[$i]['args'], $lightTrace[$i]['object']);
-            }
-        }
-
-        return $lightTrace;
-    }
-
-    /**
-     * Parse the error message by removing the anonymous class notation
-     * and using the parent class instead if possible.
-     */
-    private function parseAnonymousClass(string $message): string
-    {
-        return preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', static function ($m) {
-            return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0];
-        }, $message);
-    }
-}
diff --git a/vendor/symfony/error-handler/ErrorRenderer/CliErrorRenderer.php b/vendor/symfony/error-handler/ErrorRenderer/CliErrorRenderer.php
deleted file mode 100644
index 5c0f6a7dce636839d75f13d983246da5b9cf0e71..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/ErrorRenderer/CliErrorRenderer.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\ErrorRenderer;
-
-use Symfony\Component\ErrorHandler\Exception\FlattenException;
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-use Symfony\Component\VarDumper\Dumper\CliDumper;
-
-// Help opcache.preload discover always-needed symbols
-class_exists(CliDumper::class);
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class CliErrorRenderer implements ErrorRendererInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function render(\Throwable $exception): FlattenException
-    {
-        $cloner = new VarCloner();
-        $dumper = new class() extends CliDumper {
-            protected function supportsColors(): bool
-            {
-                $outputStream = $this->outputStream;
-                $this->outputStream = fopen('php://stdout', 'w');
-
-                try {
-                    return parent::supportsColors();
-                } finally {
-                    $this->outputStream = $outputStream;
-                }
-            }
-        };
-
-        return FlattenException::createFromThrowable($exception)
-            ->setAsString($dumper->dump($cloner->cloneVar($exception), true));
-    }
-}
diff --git a/vendor/symfony/error-handler/ErrorRenderer/ErrorRendererInterface.php b/vendor/symfony/error-handler/ErrorRenderer/ErrorRendererInterface.php
deleted file mode 100644
index aba196603fdc9d72c1ca1a10de3a4ffc75316841..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/ErrorRenderer/ErrorRendererInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\ErrorRenderer;
-
-use Symfony\Component\ErrorHandler\Exception\FlattenException;
-
-/**
- * Formats an exception to be used as response content.
- *
- * @author Yonel Ceruto <yonelceruto@gmail.com>
- */
-interface ErrorRendererInterface
-{
-    /**
-     * Renders a Throwable as a FlattenException.
-     */
-    public function render(\Throwable $exception): FlattenException;
-}
diff --git a/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php b/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php
deleted file mode 100644
index 86b96b2304f00c83a591f7cf4180c1a58d33e6e0..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php
+++ /dev/null
@@ -1,350 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\ErrorRenderer;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\ErrorHandler\Exception\FlattenException;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
-
-/**
- * @author Yonel Ceruto <yonelceruto@gmail.com>
- */
-class HtmlErrorRenderer implements ErrorRendererInterface
-{
-    private const GHOST_ADDONS = [
-        '02-14' => self::GHOST_HEART,
-        '02-29' => self::GHOST_PLUS,
-        '10-18' => self::GHOST_GIFT,
-    ];
-
-    private const GHOST_GIFT = 'M124.00534057617188,5.3606138080358505 C124.40059661865234,4.644828304648399 125.1237564086914,3.712414965033531 123.88127899169922,3.487462028861046 C123.53517150878906,3.3097832053899765 123.18894958496094,2.9953975528478622 122.8432846069336,3.345616325736046 C122.07421112060547,3.649444565176964 121.40750122070312,4.074306473135948 122.2164306640625,4.869479164481163 C122.57514953613281,5.3830065578222275 122.90142822265625,6.503447040915489 123.3077621459961,6.626829609274864 C123.55027770996094,6.210384353995323 123.7774658203125,5.785196766257286 124.00534057617188,5.3606138080358505 zM122.30630493164062,7.336987480521202 C121.60028076171875,6.076864704489708 121.03211975097656,4.72498320043087 120.16796875,3.562500938773155 C119.11695098876953,2.44033907353878 117.04605865478516,2.940566048026085 116.57544708251953,4.387995228171349 C115.95028686523438,5.819030746817589 117.2991714477539,7.527640804648399 118.826171875,7.348545059561729 C119.98493194580078,7.367936596274376 121.15027618408203,7.420116886496544 122.30630493164062,7.336987480521202 zM128.1732177734375,7.379541382193565 C129.67486572265625,7.17823551595211 130.53842163085938,5.287807449698448 129.68344116210938,4.032590612769127 C128.92578125,2.693056806921959 126.74605560302734,2.6463639587163925 125.98509216308594,4.007616028189659 C125.32617950439453,5.108129009604454 124.75428009033203,6.258124336600304 124.14962768554688,7.388818249106407 C125.48638916015625,7.465229496359825 126.8357162475586,7.447416767477989 128.1732177734375,7.379541382193565 zM130.6601104736328,8.991325363516808 C131.17202758789062,8.540884003043175 133.1543731689453,8.009847149252892 131.65304565429688,7.582054600119591 C131.2811279296875,7.476506695151329 130.84751892089844,6.99234913289547 130.5132598876953,7.124847874045372 C129.78744506835938,8.02728746831417 128.67140197753906,8.55669592320919 127.50616455078125,8.501235947012901 C127.27806091308594,8.576229080557823 126.11459350585938,8.38720129430294 126.428955078125,8.601900085806847 C127.25099182128906,9.070617660880089 128.0523223876953,9.579657539725304 128.902587890625,9.995706543326378 C129.49813842773438,9.678531631827354 130.0761260986328,9.329126343131065 130.6601104736328,8.991325363516808 zM118.96446990966797,9.246344551444054 C119.4022445678711,8.991325363516808 119.84001922607422,8.736305221915245 120.27779388427734,8.481284126639366 C118.93965911865234,8.414779648184776 117.40827941894531,8.607666000723839 116.39698791503906,7.531384453177452 C116.11186981201172,7.212117180228233 115.83845520019531,6.846597656607628 115.44329071044922,7.248530372977257 C114.96995544433594,7.574637398123741 113.5140609741211,7.908811077475548 114.63501739501953,8.306883797049522 C115.61112976074219,8.883499130606651 116.58037567138672,9.474181160330772 117.58061218261719,10.008124336600304 C118.05723571777344,9.784612640738487 118.50651550292969,9.5052699893713 118.96446990966797,9.246344551444054 zM125.38018035888672,12.091858848929405 C125.9474868774414,11.636047348380089 127.32159423828125,11.201767906546593 127.36749267578125,10.712632164359093 C126.08487701416016,9.974547371268272 124.83960723876953,9.152772888541222 123.49772644042969,8.528907760977745 C123.03594207763672,8.353693947196007 122.66152954101562,8.623294815421104 122.28982543945312,8.857431396842003 C121.19065856933594,9.51122473180294 120.06505584716797,10.12446115911007 119.00167083740234,10.835315689444542 C120.39238739013672,11.69529627263546 121.79983520507812,12.529837593436241 123.22095489501953,13.338589653372765 C123.94580841064453,12.932025894522667 124.66128540039062,12.508862480521202 125.38018035888672,12.091858848929405 zM131.07164001464844,13.514615997672081 C131.66018676757812,13.143282875418663 132.2487335205078,12.771927818655968 132.8372802734375,12.400571808218956 C132.8324737548828,11.156818374991417 132.8523406982422,9.912529930472374 132.81829833984375,8.669195160269737 C131.63046264648438,9.332009300589561 130.45948791503906,10.027913078665733 129.30828857421875,10.752535805106163 C129.182373046875,12.035354599356651 129.24623107910156,13.33940313756466 129.27359008789062,14.628684982657433 C129.88104248046875,14.27079389989376 130.4737548828125,13.888019546866417 131.07164001464844,13.514640793204308 zM117.26847839355469,12.731024727225304 C117.32825469970703,11.67083452641964 117.45709991455078,10.46224020421505 116.17853546142578,10.148179039359093 C115.37110900878906,9.77159021794796 114.25194549560547,8.806716904044151 113.62991333007812,8.81639002263546 C113.61052703857422,10.0110072940588 113.62078857421875,11.20585821568966 113.61869049072266,12.400571808218956 C114.81139373779297,13.144886955618858 115.98292541503906,13.925040230154991 117.20137023925781,14.626662239432335 C117.31951141357422,14.010867103934288 117.24227905273438,13.35805033147335 117.26847839355469,12.731024727225304 zM125.80937957763672,16.836034759879112 C126.51483917236328,16.390663132071495 127.22030639648438,15.945291504263878 127.92576599121094,15.49991987645626 C127.92250061035156,14.215868934988976 127.97560119628906,12.929980263113976 127.91757202148438,11.647302612662315 C127.14225769042969,11.869626984000206 126.25550079345703,12.556857094168663 125.43866729736328,12.983742699027061 C124.82704162597656,13.342005714774132 124.21542358398438,13.700271591544151 123.60379028320312,14.05853746831417 C123.61585235595703,15.429577812552452 123.57081604003906,16.803131088614464 123.64839172363281,18.172149643301964 C124.37957000732422,17.744937881827354 125.09130859375,17.284801468253136 125.80937957763672,16.836034759879112 zM122.8521499633789,16.115344032645226 C122.8521499633789,15.429741844534874 122.8521499633789,14.744139656424522 122.8521499633789,14.05853746831417 C121.43595123291016,13.230924591422081 120.02428436279297,12.395455345511436 118.60256958007812,11.577354416251183 C118.52394104003906,12.888403877615929 118.56887817382812,14.204405769705772 118.55702209472656,15.517732605338097 C119.97289276123047,16.4041957706213 121.37410736083984,17.314891800284386 122.80789947509766,18.172149643301964 C122.86368560791016,17.488990768790245 122.84332275390625,16.800363525748253 122.8521499633789,16.115344032645226 zM131.10684204101562,18.871450409293175 C131.68399047851562,18.48711584508419 132.2611541748047,18.10278509557247 132.8383026123047,17.718475326895714 C132.81423950195312,16.499977096915245 132.89776611328125,15.264989838004112 132.77627563476562,14.05993078649044 C131.5760040283203,14.744719490408897 130.41763305664062,15.524359688162804 129.23875427246094,16.255397781729698 C129.26707458496094,17.516149505972862 129.18060302734375,18.791316971182823 129.3108367919922,20.041303619742393 C129.91973876953125,19.667551025748253 130.51010131835938,19.264152511954308 131.10684204101562,18.871450409293175 zM117.2557373046875,18.188333496451378 C117.25104522705078,17.549470886588097 117.24633026123047,16.91058538854122 117.24163055419922,16.271720871329308 C116.04924774169922,15.525708183646202 114.87187957763672,14.75476549565792 113.66158294677734,14.038097366690636 C113.5858383178711,15.262084946036339 113.62901306152344,16.49083898961544 113.61761474609375,17.717010483145714 C114.82051086425781,18.513254150748253 116.00987243652344,19.330610260367393 117.22888946533203,20.101993545889854 C117.27559661865234,19.466014847159386 117.25241088867188,18.825733169913292 117.2557373046875,18.188333496451378 zM125.8398666381836,22.38675306737423 C126.54049682617188,21.921453461050987 127.24110412597656,21.456151947379112 127.94172668457031,20.99083136022091 C127.94009399414062,19.693386062979698 127.96646118164062,18.395381912589073 127.93160247802734,17.098379120230675 C126.50540924072266,17.97775076329708 125.08877563476562,18.873308166861534 123.68258666992188,19.78428266942501 C123.52366638183594,21.03710363805294 123.626708984375,22.32878302037716 123.62647247314453,23.595300659537315 C124.06291198730469,23.86113165318966 125.1788101196289,22.68297766149044 125.8398666381836,22.38675306737423 zM122.8521499633789,21.83134649693966 C122.76741790771484,20.936696991324425 123.21651458740234,19.67745779454708 122.0794677734375,19.330633148550987 C120.93280029296875,18.604360565543175 119.7907485961914,17.870157226920128 118.62899780273438,17.16818617284298 C118.45966339111328,18.396427139639854 118.63676452636719,19.675991043448448 118.50668334960938,20.919256195425987 C119.89984130859375,21.92635916173458 121.32942199707031,22.88914106786251 122.78502655029297,23.803510650992393 C122.90177917480469,23.1627406924963 122.82917022705078,22.48402212560177 122.8521499633789,21.83134649693966 zM117.9798355102539,21.59483526647091 C116.28416442871094,20.46288488805294 114.58848571777344,19.330957397818565 112.892822265625,18.199007019400597 C112.89473724365234,14.705654129385948 112.84647369384766,11.211485847830772 112.90847778320312,7.718807205557823 C113.7575912475586,7.194885239005089 114.66117858886719,6.765397056937218 115.5350341796875,6.284702762961388 C114.97061157226562,4.668964847922325 115.78496551513672,2.7054970115423203 117.42159271240234,2.1007001250982285 C118.79354095458984,1.537783369421959 120.44731903076172,2.0457767099142075 121.32200622558594,3.23083733022213 C121.95732116699219,2.9050118774175644 122.59264373779297,2.5791852325201035 123.22796630859375,2.253336176276207 C123.86669921875,2.5821153968572617 124.50543975830078,2.9108948558568954 125.1441650390625,3.23967407643795 C126.05941009521484,2.154020771384239 127.62747192382812,1.5344576686620712 128.986328125,2.1429056972265244 C130.61741638183594,2.716217741370201 131.50650024414062,4.675290569663048 130.9215545654297,6.2884936183691025 C131.8018341064453,6.78548763692379 132.7589111328125,7.1738648265600204 133.5660400390625,7.780336365103722 C133.60182189941406,11.252970680594444 133.56637573242188,14.726140961050987 133.5631103515625,18.199007019400597 C130.18914794921875,20.431867584586143 126.86984252929688,22.74994657933712 123.44108581542969,24.897907242178917 C122.44406127929688,24.897628769278526 121.5834732055664,23.815067276358604 120.65831756591797,23.37616156041622 C119.76387023925781,22.784828171133995 118.87168884277344,22.19007681310177 117.9798355102539,21.59483526647091 z';
-    private const GHOST_HEART = 'M125.91386369681868,8.305165958366445 C128.95033202169043,-0.40540639102854037 140.8469835342744,8.305165958366445 125.91386369681868,19.504526138305664 C110.98208663272044,8.305165958366445 122.87795231771452,-0.40540639102854037 125.91386369681868,8.305165958366445 z';
-    private const GHOST_PLUS = 'M111.36824226379395,8.969108581542969 L118.69175148010254,8.969108581542969 L118.69175148010254,1.6455793380737305 L126.20429420471191,1.6455793380737305 L126.20429420471191,8.969108581542969 L133.52781105041504,8.969108581542969 L133.52781105041504,16.481630325317383 L126.20429420471191,16.481630325317383 L126.20429420471191,23.805158615112305 L118.69175148010254,23.805158615112305 L118.69175148010254,16.481630325317383 L111.36824226379395,16.481630325317383 z';
-
-    private $debug;
-    private $charset;
-    private $fileLinkFormat;
-    private $projectDir;
-    private $outputBuffer;
-    private $logger;
-
-    /**
-     * @param bool|callable $debug        The debugging mode as a boolean or a callable that should return it
-     * @param bool|callable $outputBuffer The output buffer as a string or a callable that should return it
-     */
-    public function __construct($debug = false, string $charset = null, $fileLinkFormat = null, string $projectDir = null, $outputBuffer = '', LoggerInterface $logger = null)
-    {
-        if (!\is_bool($debug) && !\is_callable($debug)) {
-            throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a boolean or a callable, "%s" given.', __METHOD__, \is_object($debug) ? \get_class($debug) : \gettype($debug)));
-        }
-
-        if (!\is_string($outputBuffer) && !\is_callable($outputBuffer)) {
-            throw new \TypeError(sprintf('Argument 5 passed to "%s()" must be a string or a callable, "%s" given.', __METHOD__, \is_object($outputBuffer) ? \get_class($outputBuffer) : \gettype($outputBuffer)));
-        }
-
-        $this->debug = $debug;
-        $this->charset = $charset ?: (ini_get('default_charset') ?: 'UTF-8');
-        $this->fileLinkFormat = $fileLinkFormat ?: (ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format'));
-        $this->projectDir = $projectDir;
-        $this->outputBuffer = $outputBuffer;
-        $this->logger = $logger;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function render(\Throwable $exception): FlattenException
-    {
-        $exception = FlattenException::createFromThrowable($exception, null, [
-            'Content-Type' => 'text/html; charset='.$this->charset,
-        ]);
-
-        return $exception->setAsString($this->renderException($exception));
-    }
-
-    /**
-     * Gets the HTML content associated with the given exception.
-     */
-    public function getBody(FlattenException $exception): string
-    {
-        return $this->renderException($exception, 'views/exception.html.php');
-    }
-
-    /**
-     * Gets the stylesheet associated with the given exception.
-     */
-    public function getStylesheet(): string
-    {
-        if (!$this->debug) {
-            return $this->include('assets/css/error.css');
-        }
-
-        return $this->include('assets/css/exception.css');
-    }
-
-    public static function isDebug(RequestStack $requestStack, bool $debug): \Closure
-    {
-        return static function () use ($requestStack, $debug): bool {
-            if (!$request = $requestStack->getCurrentRequest()) {
-                return $debug;
-            }
-
-            return $debug && $request->attributes->getBoolean('showException', true);
-        };
-    }
-
-    public static function getAndCleanOutputBuffer(RequestStack $requestStack): \Closure
-    {
-        return static function () use ($requestStack): string {
-            if (!$request = $requestStack->getCurrentRequest()) {
-                return '';
-            }
-
-            $startObLevel = $request->headers->get('X-Php-Ob-Level', -1);
-
-            if (ob_get_level() <= $startObLevel) {
-                return '';
-            }
-
-            Response::closeOutputBuffers($startObLevel + 1, true);
-
-            return ob_get_clean();
-        };
-    }
-
-    private function renderException(FlattenException $exception, string $debugTemplate = 'views/exception_full.html.php'): string
-    {
-        $debug = \is_bool($this->debug) ? $this->debug : ($this->debug)($exception);
-        $statusText = $this->escape($exception->getStatusText());
-        $statusCode = $this->escape($exception->getStatusCode());
-
-        if (!$debug) {
-            return $this->include('views/error.html.php', [
-                'statusText' => $statusText,
-                'statusCode' => $statusCode,
-            ]);
-        }
-
-        $exceptionMessage = $this->escape($exception->getMessage());
-
-        return $this->include($debugTemplate, [
-            'exception' => $exception,
-            'exceptionMessage' => $exceptionMessage,
-            'statusText' => $statusText,
-            'statusCode' => $statusCode,
-            'logger' => $this->logger instanceof DebugLoggerInterface ? $this->logger : null,
-            'currentContent' => \is_string($this->outputBuffer) ? $this->outputBuffer : ($this->outputBuffer)(),
-        ]);
-    }
-
-    /**
-     * Formats an array as a string.
-     */
-    private function formatArgs(array $args): string
-    {
-        $result = [];
-        foreach ($args as $key => $item) {
-            if ('object' === $item[0]) {
-                $formattedValue = sprintf('<em>object</em>(%s)', $this->abbrClass($item[1]));
-            } elseif ('array' === $item[0]) {
-                $formattedValue = sprintf('<em>array</em>(%s)', \is_array($item[1]) ? $this->formatArgs($item[1]) : $item[1]);
-            } elseif ('null' === $item[0]) {
-                $formattedValue = '<em>null</em>';
-            } elseif ('boolean' === $item[0]) {
-                $formattedValue = '<em>'.strtolower(var_export($item[1], true)).'</em>';
-            } elseif ('resource' === $item[0]) {
-                $formattedValue = '<em>resource</em>';
-            } else {
-                $formattedValue = str_replace("\n", '', $this->escape(var_export($item[1], true)));
-            }
-
-            $result[] = \is_int($key) ? $formattedValue : sprintf("'%s' => %s", $this->escape($key), $formattedValue);
-        }
-
-        return implode(', ', $result);
-    }
-
-    private function formatArgsAsText(array $args)
-    {
-        return strip_tags($this->formatArgs($args));
-    }
-
-    private function escape(string $string): string
-    {
-        return htmlspecialchars($string, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset);
-    }
-
-    private function abbrClass(string $class): string
-    {
-        $parts = explode('\\', $class);
-        $short = array_pop($parts);
-
-        return sprintf('<abbr title="%s">%s</abbr>', $class, $short);
-    }
-
-    private function getFileRelative(string $file): ?string
-    {
-        $file = str_replace('\\', '/', $file);
-
-        if (null !== $this->projectDir && 0 === strpos($file, $this->projectDir)) {
-            return ltrim(substr($file, \strlen($this->projectDir)), '/');
-        }
-
-        return null;
-    }
-
-    /**
-     * Returns the link for a given file/line pair.
-     *
-     * @return string|false A link or false
-     */
-    private function getFileLink(string $file, int $line)
-    {
-        if ($fmt = $this->fileLinkFormat) {
-            return \is_string($fmt) ? strtr($fmt, ['%f' => $file, '%l' => $line]) : $fmt->format($file, $line);
-        }
-
-        return false;
-    }
-
-    /**
-     * Formats a file path.
-     *
-     * @param string $file An absolute file path
-     * @param int    $line The line number
-     * @param string $text Use this text for the link rather than the file path
-     */
-    private function formatFile(string $file, int $line, string $text = null): string
-    {
-        $file = trim($file);
-
-        if (null === $text) {
-            $text = $file;
-            if (null !== $rel = $this->getFileRelative($text)) {
-                $rel = explode('/', $rel, 2);
-                $text = sprintf('<abbr title="%s%2$s">%s</abbr>%s', $this->projectDir, $rel[0], '/'.($rel[1] ?? ''));
-            }
-        }
-
-        if (0 < $line) {
-            $text .= ' at line '.$line;
-        }
-
-        if (false !== $link = $this->getFileLink($file, $line)) {
-            return sprintf('<a href="%s" title="Click to open this file" class="file_link">%s</a>', $this->escape($link), $text);
-        }
-
-        return $text;
-    }
-
-    /**
-     * Returns an excerpt of a code file around the given line number.
-     *
-     * @param string $file       A file path
-     * @param int    $line       The selected line number
-     * @param int    $srcContext The number of displayed lines around or -1 for the whole file
-     *
-     * @return string An HTML string
-     */
-    private function fileExcerpt(string $file, int $line, int $srcContext = 3): string
-    {
-        if (is_file($file) && is_readable($file)) {
-            // highlight_file could throw warnings
-            // see https://bugs.php.net/25725
-            $code = @highlight_file($file, true);
-            // remove main code/span tags
-            $code = preg_replace('#^<code.*?>\s*<span.*?>(.*)</span>\s*</code>#s', '\\1', $code);
-            // split multiline spans
-            $code = preg_replace_callback('#<span ([^>]++)>((?:[^<]*+<br \/>)++[^<]*+)</span>#', function ($m) {
-                return "<span $m[1]>".str_replace('<br />', "</span><br /><span $m[1]>", $m[2]).'</span>';
-            }, $code);
-            $content = explode('<br />', $code);
-
-            $lines = [];
-            if (0 > $srcContext) {
-                $srcContext = \count($content);
-            }
-
-            for ($i = max($line - $srcContext, 1), $max = min($line + $srcContext, \count($content)); $i <= $max; ++$i) {
-                $lines[] = '<li'.($i == $line ? ' class="selected"' : '').'><a class="anchor" name="line'.$i.'"></a><code>'.$this->fixCodeMarkup($content[$i - 1]).'</code></li>';
-            }
-
-            return '<ol start="'.max($line - $srcContext, 1).'">'.implode("\n", $lines).'</ol>';
-        }
-
-        return '';
-    }
-
-    private function fixCodeMarkup(string $line)
-    {
-        // </span> ending tag from previous line
-        $opening = strpos($line, '<span');
-        $closing = strpos($line, '</span>');
-        if (false !== $closing && (false === $opening || $closing < $opening)) {
-            $line = substr_replace($line, '', $closing, 7);
-        }
-
-        // missing </span> tag at the end of line
-        $opening = strpos($line, '<span');
-        $closing = strpos($line, '</span>');
-        if (false !== $opening && (false === $closing || $closing > $opening)) {
-            $line .= '</span>';
-        }
-
-        return trim($line);
-    }
-
-    private function formatFileFromText(string $text)
-    {
-        return preg_replace_callback('/in ("|&quot;)?(.+?)\1(?: +(?:on|at))? +line (\d+)/s', function ($match) {
-            return 'in '.$this->formatFile($match[2], $match[3]);
-        }, $text);
-    }
-
-    private function formatLogMessage(string $message, array $context)
-    {
-        if ($context && false !== strpos($message, '{')) {
-            $replacements = [];
-            foreach ($context as $key => $val) {
-                if (is_scalar($val)) {
-                    $replacements['{'.$key.'}'] = $val;
-                }
-            }
-
-            if ($replacements) {
-                $message = strtr($message, $replacements);
-            }
-        }
-
-        return $this->escape($message);
-    }
-
-    private function addElementToGhost(): string
-    {
-        if (!isset(self::GHOST_ADDONS[date('m-d')])) {
-            return '';
-        }
-
-        return '<path d="'.self::GHOST_ADDONS[date('m-d')].'" fill="#fff" fill-opacity="0.6"></path>';
-    }
-
-    private function include(string $name, array $context = []): string
-    {
-        extract($context, \EXTR_SKIP);
-        ob_start();
-        include __DIR__.'/../Resources/'.$name;
-
-        return trim(ob_get_clean());
-    }
-}
diff --git a/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php b/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php
deleted file mode 100644
index e0640850a691c48a4c039c11d9df54849c8cf299..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\ErrorRenderer;
-
-use Symfony\Component\ErrorHandler\Exception\FlattenException;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\Serializer\Exception\NotEncodableValueException;
-use Symfony\Component\Serializer\SerializerInterface;
-
-/**
- * Formats an exception using Serializer for rendering.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class SerializerErrorRenderer implements ErrorRendererInterface
-{
-    private $serializer;
-    private $format;
-    private $fallbackErrorRenderer;
-    private $debug;
-
-    /**
-     * @param string|callable(FlattenException) $format The format as a string or a callable that should return it
-     *                                                  formats not supported by Request::getMimeTypes() should be given as mime types
-     * @param bool|callable                     $debug  The debugging mode as a boolean or a callable that should return it
-     */
-    public function __construct(SerializerInterface $serializer, $format, ErrorRendererInterface $fallbackErrorRenderer = null, $debug = false)
-    {
-        if (!\is_string($format) && !\is_callable($format)) {
-            throw new \TypeError(sprintf('Argument 2 passed to "%s()" must be a string or a callable, "%s" given.', __METHOD__, \is_object($format) ? \get_class($format) : \gettype($format)));
-        }
-
-        if (!\is_bool($debug) && !\is_callable($debug)) {
-            throw new \TypeError(sprintf('Argument 4 passed to "%s()" must be a boolean or a callable, "%s" given.', __METHOD__, \is_object($debug) ? \get_class($debug) : \gettype($debug)));
-        }
-
-        $this->serializer = $serializer;
-        $this->format = $format;
-        $this->fallbackErrorRenderer = $fallbackErrorRenderer ?? new HtmlErrorRenderer();
-        $this->debug = $debug;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function render(\Throwable $exception): FlattenException
-    {
-        $flattenException = FlattenException::createFromThrowable($exception);
-
-        try {
-            $format = \is_string($this->format) ? $this->format : ($this->format)($flattenException);
-            $headers = [
-                'Content-Type' => Request::getMimeTypes($format)[0] ?? $format,
-                'Vary' => 'Accept',
-            ];
-
-            return $flattenException->setAsString($this->serializer->serialize($flattenException, $format, [
-                'exception' => $exception,
-                'debug' => \is_bool($this->debug) ? $this->debug : ($this->debug)($exception),
-            ]))
-            ->setHeaders($flattenException->getHeaders() + $headers);
-        } catch (NotEncodableValueException $e) {
-            return $this->fallbackErrorRenderer->render($exception);
-        }
-    }
-
-    public static function getPreferredFormat(RequestStack $requestStack): \Closure
-    {
-        return static function () use ($requestStack) {
-            if (!$request = $requestStack->getCurrentRequest()) {
-                throw new NotEncodableValueException();
-            }
-
-            return $request->getPreferredFormat();
-        };
-    }
-}
diff --git a/vendor/symfony/error-handler/Exception/FlattenException.php b/vendor/symfony/error-handler/Exception/FlattenException.php
deleted file mode 100644
index 0a40aafcd307f840d4c5754c5c74f8414f86e869..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Exception/FlattenException.php
+++ /dev/null
@@ -1,409 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\Exception;
-
-use Symfony\Component\Debug\Exception\FatalThrowableError;
-use Symfony\Component\Debug\Exception\FlattenException as LegacyFlattenException;
-use Symfony\Component\HttpFoundation\Exception\RequestExceptionInterface;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-
-/**
- * FlattenException wraps a PHP Error or Exception to be able to serialize it.
- *
- * Basically, this class removes all objects from the trace.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FlattenException extends LegacyFlattenException
-{
-    private $message;
-    private $code;
-    private $previous;
-    private $trace;
-    private $traceAsString;
-    private $class;
-    private $statusCode;
-    private $statusText;
-    private $headers;
-    private $file;
-    private $line;
-    private $asString;
-
-    public static function create(\Exception $exception, $statusCode = null, array $headers = []): self
-    {
-        return static::createFromThrowable($exception, $statusCode, $headers);
-    }
-
-    public static function createFromThrowable(\Throwable $exception, int $statusCode = null, array $headers = []): self
-    {
-        $e = new static();
-        $e->setMessage($exception->getMessage());
-        $e->setCode($exception->getCode());
-
-        if ($exception instanceof HttpExceptionInterface) {
-            $statusCode = $exception->getStatusCode();
-            $headers = array_merge($headers, $exception->getHeaders());
-        } elseif ($exception instanceof RequestExceptionInterface) {
-            $statusCode = 400;
-        }
-
-        if (null === $statusCode) {
-            $statusCode = 500;
-        }
-
-        if (class_exists(Response::class) && isset(Response::$statusTexts[$statusCode])) {
-            $statusText = Response::$statusTexts[$statusCode];
-        } else {
-            $statusText = 'Whoops, looks like something went wrong.';
-        }
-
-        $e->setStatusText($statusText);
-        $e->setStatusCode($statusCode);
-        $e->setHeaders($headers);
-        $e->setTraceFromThrowable($exception);
-        $e->setClass($exception instanceof FatalThrowableError ? $exception->getOriginalClassName() : get_debug_type($exception));
-        $e->setFile($exception->getFile());
-        $e->setLine($exception->getLine());
-
-        $previous = $exception->getPrevious();
-
-        if ($previous instanceof \Throwable) {
-            $e->setPrevious(static::createFromThrowable($previous));
-        }
-
-        return $e;
-    }
-
-    public function toArray(): array
-    {
-        $exceptions = [];
-        foreach (array_merge([$this], $this->getAllPrevious()) as $exception) {
-            $exceptions[] = [
-                'message' => $exception->getMessage(),
-                'class' => $exception->getClass(),
-                'trace' => $exception->getTrace(),
-            ];
-        }
-
-        return $exceptions;
-    }
-
-    public function getStatusCode(): int
-    {
-        return $this->statusCode;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setStatusCode($code): self
-    {
-        $this->statusCode = $code;
-
-        return $this;
-    }
-
-    public function getHeaders(): array
-    {
-        return $this->headers;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setHeaders(array $headers): self
-    {
-        $this->headers = $headers;
-
-        return $this;
-    }
-
-    public function getClass(): string
-    {
-        return $this->class;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setClass($class): self
-    {
-        $this->class = false !== strpos($class, "@anonymous\0") ? (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous' : $class;
-
-        return $this;
-    }
-
-    public function getFile(): string
-    {
-        return $this->file;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setFile($file): self
-    {
-        $this->file = $file;
-
-        return $this;
-    }
-
-    public function getLine(): int
-    {
-        return $this->line;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setLine($line): self
-    {
-        $this->line = $line;
-
-        return $this;
-    }
-
-    public function getStatusText(): string
-    {
-        return $this->statusText;
-    }
-
-    public function setStatusText(string $statusText): self
-    {
-        $this->statusText = $statusText;
-
-        return $this;
-    }
-
-    public function getMessage(): string
-    {
-        return $this->message;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setMessage($message): self
-    {
-        if (false !== strpos($message, "@anonymous\0")) {
-            $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) {
-                return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0];
-            }, $message);
-        }
-
-        $this->message = $message;
-
-        return $this;
-    }
-
-    /**
-     * @return int|string int most of the time (might be a string with PDOException)
-     */
-    public function getCode()
-    {
-        return $this->code;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setCode($code): self
-    {
-        $this->code = $code;
-
-        return $this;
-    }
-
-    /**
-     * @return self|null
-     */
-    public function getPrevious()
-    {
-        return $this->previous;
-    }
-
-    /**
-     * @return $this
-     */
-    final public function setPrevious(LegacyFlattenException $previous): self
-    {
-        $this->previous = $previous;
-
-        return $this;
-    }
-
-    /**
-     * @return self[]
-     */
-    public function getAllPrevious(): array
-    {
-        $exceptions = [];
-        $e = $this;
-        while ($e = $e->getPrevious()) {
-            $exceptions[] = $e;
-        }
-
-        return $exceptions;
-    }
-
-    public function getTrace(): array
-    {
-        return $this->trace;
-    }
-
-    /**
-     * @deprecated since 4.1, use {@see setTraceFromThrowable()} instead.
-     */
-    public function setTraceFromException(\Exception $exception)
-    {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use "setTraceFromThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED);
-
-        $this->setTraceFromThrowable($exception);
-    }
-
-    /**
-     * @return $this
-     */
-    public function setTraceFromThrowable(\Throwable $throwable): self
-    {
-        $this->traceAsString = $throwable->getTraceAsString();
-
-        return $this->setTrace($throwable->getTrace(), $throwable->getFile(), $throwable->getLine());
-    }
-
-    /**
-     * @return $this
-     */
-    public function setTrace($trace, $file, $line): self
-    {
-        $this->trace = [];
-        $this->trace[] = [
-            'namespace' => '',
-            'short_class' => '',
-            'class' => '',
-            'type' => '',
-            'function' => '',
-            'file' => $file,
-            'line' => $line,
-            'args' => [],
-        ];
-        foreach ($trace as $entry) {
-            $class = '';
-            $namespace = '';
-            if (isset($entry['class'])) {
-                $parts = explode('\\', $entry['class']);
-                $class = array_pop($parts);
-                $namespace = implode('\\', $parts);
-            }
-
-            $this->trace[] = [
-                'namespace' => $namespace,
-                'short_class' => $class,
-                'class' => isset($entry['class']) ? $entry['class'] : '',
-                'type' => isset($entry['type']) ? $entry['type'] : '',
-                'function' => isset($entry['function']) ? $entry['function'] : null,
-                'file' => isset($entry['file']) ? $entry['file'] : null,
-                'line' => isset($entry['line']) ? $entry['line'] : null,
-                'args' => isset($entry['args']) ? $this->flattenArgs($entry['args']) : [],
-            ];
-        }
-
-        return $this;
-    }
-
-    private function flattenArgs(array $args, int $level = 0, int &$count = 0): array
-    {
-        $result = [];
-        foreach ($args as $key => $value) {
-            if (++$count > 1e4) {
-                return ['array', '*SKIPPED over 10000 entries*'];
-            }
-            if ($value instanceof \__PHP_Incomplete_Class) {
-                // is_object() returns false on PHP<=7.1
-                $result[$key] = ['incomplete-object', $this->getClassNameFromIncomplete($value)];
-            } elseif (\is_object($value)) {
-                $result[$key] = ['object', \get_class($value)];
-            } elseif (\is_array($value)) {
-                if ($level > 10) {
-                    $result[$key] = ['array', '*DEEP NESTED ARRAY*'];
-                } else {
-                    $result[$key] = ['array', $this->flattenArgs($value, $level + 1, $count)];
-                }
-            } elseif (null === $value) {
-                $result[$key] = ['null', null];
-            } elseif (\is_bool($value)) {
-                $result[$key] = ['boolean', $value];
-            } elseif (\is_int($value)) {
-                $result[$key] = ['integer', $value];
-            } elseif (\is_float($value)) {
-                $result[$key] = ['float', $value];
-            } elseif (\is_resource($value)) {
-                $result[$key] = ['resource', get_resource_type($value)];
-            } else {
-                $result[$key] = ['string', (string) $value];
-            }
-        }
-
-        return $result;
-    }
-
-    private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value): string
-    {
-        $array = new \ArrayObject($value);
-
-        return $array['__PHP_Incomplete_Class_Name'];
-    }
-
-    public function getTraceAsString(): string
-    {
-        return $this->traceAsString;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setAsString(?string $asString): self
-    {
-        $this->asString = $asString;
-
-        return $this;
-    }
-
-    public function getAsString(): string
-    {
-        if (null !== $this->asString) {
-            return $this->asString;
-        }
-
-        $message = '';
-        $next = false;
-
-        foreach (array_reverse(array_merge([$this], $this->getAllPrevious())) as $exception) {
-            if ($next) {
-                $message .= 'Next ';
-            } else {
-                $next = true;
-            }
-            $message .= $exception->getClass();
-
-            if ('' != $exception->getMessage()) {
-                $message .= ': '.$exception->getMessage();
-            }
-
-            $message .= ' in '.$exception->getFile().':'.$exception->getLine().
-                "\nStack trace:\n".$exception->getTraceAsString()."\n\n";
-        }
-
-        return rtrim($message);
-    }
-}
diff --git a/vendor/symfony/error-handler/Exception/SilencedErrorContext.php b/vendor/symfony/error-handler/Exception/SilencedErrorContext.php
deleted file mode 100644
index 18defc72ce1e867795b463e5464c1ae4ad01de81..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Exception/SilencedErrorContext.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler\Exception;
-
-/**
- * Data Object that represents a Silenced Error.
- *
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- */
-class SilencedErrorContext implements \JsonSerializable
-{
-    public $count = 1;
-
-    private $severity;
-    private $file;
-    private $line;
-    private $trace;
-
-    public function __construct(int $severity, string $file, int $line, array $trace = [], int $count = 1)
-    {
-        $this->severity = $severity;
-        $this->file = $file;
-        $this->line = $line;
-        $this->trace = $trace;
-        $this->count = $count;
-    }
-
-    public function getSeverity(): int
-    {
-        return $this->severity;
-    }
-
-    public function getFile(): string
-    {
-        return $this->file;
-    }
-
-    public function getLine(): int
-    {
-        return $this->line;
-    }
-
-    public function getTrace(): array
-    {
-        return $this->trace;
-    }
-
-    public function jsonSerialize(): array
-    {
-        return [
-            'severity' => $this->severity,
-            'file' => $this->file,
-            'line' => $this->line,
-            'trace' => $this->trace,
-            'count' => $this->count,
-        ];
-    }
-}
diff --git a/vendor/symfony/error-handler/LICENSE b/vendor/symfony/error-handler/LICENSE
deleted file mode 100644
index 4bf0fef4ff3b0ca6c8d525c37b17e359847c0d53..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2019-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/error-handler/README.md b/vendor/symfony/error-handler/README.md
deleted file mode 100644
index d14ccfd7b9c5886d470ac7646af5756e0e73e185..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-ErrorHandler Component
-======================
-
-The ErrorHandler component provides tools to manage errors and ease debugging PHP code.
-
-Getting Started
----------------
-
-```
-$ composer require symfony/error-handler
-```
-
-```php
-use Symfony\Component\ErrorHandler\Debug;
-use Symfony\Component\ErrorHandler\ErrorHandler;
-use Symfony\Component\ErrorHandler\DebugClassLoader;
-
-Debug::enable();
-
-// or enable only one feature
-//ErrorHandler::register();
-//DebugClassLoader::enable();
-
-$data = ErrorHandler::call(static function () use ($filename, $datetimeFormat) {
-    // if any code executed inside this anonymous function fails, a PHP exception
-    // will be thrown, even if the code uses the '@' PHP silence operator
-    $data = json_decode(file_get_contents($filename), true);
-    $data['read_at'] = date($datetimeFormat);
-    file_put_contents($filename, json_encode($data));
-
-    return $data;
-});
-```
-
-Resources
----------
-
-  * [Contributing](https://symfony.com/doc/current/contributing/index.html)
-  * [Report issues](https://github.com/symfony/symfony/issues) and
-    [send Pull Requests](https://github.com/symfony/symfony/pulls)
-    in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/vendor/symfony/error-handler/Resources/assets/css/error.css b/vendor/symfony/error-handler/Resources/assets/css/error.css
deleted file mode 100644
index 332d81876caf0fd59e962bfedfab8977817b5ee8..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/css/error.css
+++ /dev/null
@@ -1,4 +0,0 @@
-body { background-color: #fff; color: #222; font: 16px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; margin: 0; }
-.container { margin: 30px; max-width: 600px; }
-h1 { color: #dc3545; font-size: 24px; }
-h2 { font-size: 18px; }
diff --git a/vendor/symfony/error-handler/Resources/assets/css/exception.css b/vendor/symfony/error-handler/Resources/assets/css/exception.css
deleted file mode 100644
index 952c66d2fc93661b558e0e0e3c83a377a837ae4b..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/css/exception.css
+++ /dev/null
@@ -1,209 +0,0 @@
-/* This file is based on WebProfilerBundle/Resources/views/Profiler/profiler.css.twig.
-   If you make any change in this file, verify the same change is needed in the other file. */
-:root {
-    --font-sans-serif: Helvetica, Arial, sans-serif;
-    --page-background: #f9f9f9;
-    --color-text: #222;
-    /* when updating any of these colors, do the same in toolbar.css.twig */
-    --color-success: #4f805d;
-    --color-warning: #a46a1f;
-    --color-error: #b0413e;
-    --color-muted: #999;
-    --tab-background: #fff;
-    --tab-color: #444;
-    --tab-active-background: #666;
-    --tab-active-color: #fafafa;
-    --tab-disabled-background: #f5f5f5;
-    --tab-disabled-color: #999;
-    --metric-value-background: #fff;
-    --metric-value-color: inherit;
-    --metric-unit-color: #999;
-    --metric-label-background: #e0e0e0;
-    --metric-label-color: inherit;
-    --table-border: #e0e0e0;
-    --table-background: #fff;
-    --table-header: #e0e0e0;
-    --trace-selected-background: #F7E5A1;
-    --tree-active-background: #F7E5A1;
-    --exception-title-color: var(--base-2);
-    --shadow: 0px 0px 1px rgba(128, 128, 128, .2);
-    --border: 1px solid #e0e0e0;
-    --background-error: var(--color-error);
-    --highlight-comment: #969896;
-    --highlight-default: #222222;
-    --highlight-keyword: #a71d5d;
-    --highlight-string: #183691;
-    --base-0: #fff;
-    --base-1: #f5f5f5;
-    --base-2: #e0e0e0;
-    --base-3: #ccc;
-    --base-4: #666;
-    --base-5: #444;
-    --base-6: #222;
-}
-
-html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}
-
-html {
-    /* always display the vertical scrollbar to avoid jumps when toggling contents */
-    overflow-y: scroll;
-}
-body { background-color: #F9F9F9; color: var(--base-6); font: 14px/1.4 Helvetica, Arial, sans-serif; padding-bottom: 45px; }
-
-a { cursor: pointer; text-decoration: none; }
-a:hover { text-decoration: underline; }
-abbr[title] { border-bottom: none; cursor: help; text-decoration: none; }
-
-code, pre { font: 13px/1.5 Consolas, Monaco, Menlo, "Ubuntu Mono", "Liberation Mono", monospace; }
-
-table, tr, th, td { background: #FFF; border-collapse: collapse; vertical-align: top; }
-table { background: #FFF; border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; width: 100%; }
-table th, table td { border: solid var(--base-2); border-width: 1px 0; padding: 8px 10px; }
-table th { background-color: var(--base-2); font-weight: bold; text-align: left; }
-
-.m-t-5 { margin-top: 5px; }
-.hidden-xs-down { display: none; }
-.block { display: block; }
-.full-width { width: 100%; }
-.hidden { display: none; }
-.prewrap { white-space: pre-wrap; }
-.nowrap { white-space: nowrap; }
-.newline { display: block; }
-.break-long-words { word-wrap: break-word; overflow-wrap: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; min-width: 0; }
-.text-small { font-size: 12px !important; }
-.text-muted { color: #999; }
-.text-bold { font-weight: bold; }
-.empty { border: 4px dashed var(--base-2); color: #999; margin: 1em 0; padding: .5em 2em; }
-
-.status-success { background: rgba(94, 151, 110, 0.3); }
-.status-warning { background: rgba(240, 181, 24, 0.3); }
-.status-error { background: rgba(176, 65, 62, 0.2); }
-.status-success td, .status-warning td, .status-error td { background: transparent; }
-tr.status-error td, tr.status-warning td { border-bottom: 1px solid #FAFAFA; border-top: 1px solid #FAFAFA; }
-.status-warning .colored { color: #A46A1F; }
-.status-error .colored  { color: var(--color-error); }
-
-.sf-toggle { cursor: pointer; }
-.sf-toggle-content { -moz-transition: display .25s ease; -webkit-transition: display .25s ease; transition: display .25s ease; }
-.sf-toggle-content.sf-toggle-hidden { display: none; }
-.sf-toggle-content.sf-toggle-visible { display: block; }
-thead.sf-toggle-content.sf-toggle-visible, tbody.sf-toggle-content.sf-toggle-visible { display: table-row-group; }
-.sf-toggle-off .icon-close, .sf-toggle-on .icon-open { display: none; }
-.sf-toggle-off .icon-open, .sf-toggle-on .icon-close { display: block; }
-
-.tab-navigation { margin: 0 0 1em 0; padding: 0; }
-.tab-navigation li { background: var(--tab-background); border: 1px solid var(--table-border); color: var(--tab-color); cursor: pointer; display: inline-block; font-size: 16px; margin: 0 0 0 -1px; padding: .5em .75em; z-index: 1; }
-.tab-navigation li .badge { background-color: var(--base-1); color: var(--base-4); display: inline-block; font-size: 14px; font-weight: bold; margin-left: 8px; min-width: 10px; padding: 1px 6px; text-align: center; white-space: nowrap; }
-.tab-navigation li.disabled { background: var(--tab-disabled-background); color: var(--tab-disabled-color); }
-.tab-navigation li.active { background: var(--tab-active-background); color: var(--tab-active-color); z-index: 1100; }
-.tab-navigation li.active .badge { background-color: var(--base-5); color: var(--base-2); }
-.tab-content > *:first-child { margin-top: 0; }
-.tab-navigation li .badge.status-warning { background: var(--color-warning); color: #FFF; }
-.tab-navigation li .badge.status-error { background: var(--background-error); color: #FFF; }
-.sf-tabs .tab:not(:first-child) { display: none; }
-
-[data-filters] { position: relative; }
-[data-filtered] { cursor: pointer; }
-[data-filtered]:after { content: '\00a0\25BE'; }
-[data-filtered]:hover .filter-list li { display: inline-flex; }
-[class*="filter-hidden-"] { display: none; }
-.filter-list { position: absolute; border: var(--border); box-shadow: var(--shadow); margin: 0; padding: 0; display: flex; flex-direction: column; }
-.filter-list :after { content: ''; }
-.filter-list li {
-    background: var(--tab-disabled-background);
-    border-bottom: var(--border);
-    color: var(--tab-disabled-color);
-    display: none;
-    list-style: none;
-    margin: 0;
-    padding: 5px 10px;
-    text-align: left;
-    font-weight: normal;
-}
-.filter-list li.active {
-    background: var(--tab-background);
-    color: var(--tab-color);
-}
-.filter-list li.last-active {
-    background: var(--tab-active-background);
-    color: var(--tab-active-color);
-}
-
-.filter-list-level li { cursor: s-resize; }
-.filter-list-level li.active { cursor: n-resize; }
-.filter-list-level li.last-active { cursor: default; }
-.filter-list-level li.last-active:before { content: '\2714\00a0'; }
-.filter-list-choice li:before { content: '\2714\00a0'; color: transparent; }
-.filter-list-choice li.active:before { color: unset; }
-
-.container { max-width: 1024px; margin: 0 auto; padding: 0 15px; }
-.container::after { content: ""; display: table; clear: both; }
-
-header { background-color: var(--base-6); color: rgba(255, 255, 255, 0.75); font-size: 13px; height: 33px; line-height: 33px; padding: 0; }
-header .container { display: flex; justify-content: space-between; }
-.logo { flex: 1; font-size: 13px; font-weight: normal; margin: 0; padding: 0; }
-.logo svg { height: 18px; width: 18px; opacity: .8; vertical-align: -5px; }
-
-.help-link { margin-left: 15px; }
-.help-link a { color: inherit; }
-.help-link .icon svg { height: 15px; width: 15px; opacity: .7; vertical-align: -2px; }
-.help-link a:hover { color: #EEE; text-decoration: none; }
-.help-link a:hover svg { opacity: .9; }
-
-.exception-summary { background: var(--background-error); border-bottom: 2px solid rgba(0, 0, 0, 0.1); border-top: 1px solid rgba(0, 0, 0, .3); flex: 0 0 auto; margin-bottom: 15px; }
-.exception-metadata { background: rgba(0, 0, 0, 0.1); padding: 7px 0; }
-.exception-metadata .container { display: flex; flex-direction: row; justify-content: space-between; }
-.exception-metadata h2, .exception-metadata h2 > a { color: rgba(255, 255, 255, 0.8); font-size: 13px; font-weight: 400; margin: 0; }
-.exception-http small { font-size: 13px; opacity: .7; }
-.exception-hierarchy { flex: 1; }
-.exception-hierarchy .icon { margin: 0 3px; opacity: .7; }
-.exception-hierarchy .icon svg { height: 13px; width: 13px; vertical-align: -2px; }
-
-.exception-without-message .exception-message-wrapper { display: none; }
-.exception-message-wrapper .container { display: flex; align-items: flex-start; min-height: 70px; padding: 10px 15px 8px; }
-.exception-message { flex-grow: 1; }
-.exception-message, .exception-message a { color: #FFF; font-size: 21px; font-weight: 400; margin: 0; }
-.exception-message.long { font-size: 18px; }
-.exception-message a { border-bottom: 1px solid rgba(255, 255, 255, 0.5); font-size: inherit; text-decoration: none; }
-.exception-message a:hover { border-bottom-color: #ffffff; }
-
-.exception-illustration { flex-basis: 111px; flex-shrink: 0; height: 66px; margin-left: 15px; opacity: .7; }
-
-.trace + .trace { margin-top: 30px; }
-.trace-head { background-color: var(--base-2); padding: 10px; position: relative; }
-.trace-head .trace-class { color: var(--base-6); font-size: 18px; font-weight: bold; line-height: 1.3; margin: 0; position: relative; }
-.trace-head .trace-namespace { color: #999; display: block; font-size: 13px; }
-.trace-head .icon { position: absolute; right: 0; top: 0; }
-.trace-head .icon svg { height: 24px; width: 24px; }
-
-.trace-details { background: var(--base-0); border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; table-layout: fixed; }
-
-.trace-message { font-size: 14px; font-weight: normal; margin: .5em 0 0; }
-
-.trace-line { position: relative; padding-top: 8px; padding-bottom: 8px; }
-.trace-line + .trace-line { border-top: var(--border); }
-.trace-line:hover { background: var(--base-1); }
-.trace-line a { color: var(--base-6); }
-.trace-line .icon { opacity: .4; position: absolute; left: 10px; top: 11px; }
-.trace-line .icon svg { height: 16px; width: 16px; }
-.trace-line-header { padding-left: 36px; padding-right: 10px; }
-
-.trace-file-path, .trace-file-path a { color: var(--base-6); font-size: 13px; }
-.trace-class { color: var(--color-error); }
-.trace-type { padding: 0 2px; }
-.trace-method { color: var(--color-error); font-weight: bold; }
-.trace-arguments { color: #777; font-weight: normal; padding-left: 2px; }
-
-.trace-code { background: var(--base-0); font-size: 12px; margin: 10px 10px 2px 10px; padding: 10px; overflow-x: auto; white-space: nowrap; }
-.trace-code ol { margin: 0; float: left; }
-.trace-code li { color: #969896; margin: 0; padding-left: 10px; float: left; width: 100%; }
-.trace-code li + li { margin-top: 5px; }
-.trace-code li.selected { background: var(--trace-selected-background); margin-top: 2px; }
-.trace-code li code { color: var(--base-6); white-space: nowrap; }
-
-.trace-as-text .stacktrace { line-height: 1.8; margin: 0 0 15px; white-space: pre-wrap; }
-
-@media (min-width: 575px) {
-    .hidden-xs-down { display: initial; }
-    .help-link { margin-left: 30px; }
-}
diff --git a/vendor/symfony/error-handler/Resources/assets/css/exception_full.css b/vendor/symfony/error-handler/Resources/assets/css/exception_full.css
deleted file mode 100644
index fa77cb324951ce244d9a39597b13273ff335c27f..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/css/exception_full.css
+++ /dev/null
@@ -1,128 +0,0 @@
-.sf-reset .traces {
-    padding-bottom: 14px;
-}
-.sf-reset .traces li {
-    font-size: 12px;
-    color: #868686;
-    padding: 5px 4px;
-    list-style-type: decimal;
-    margin-left: 20px;
-}
-.sf-reset #logs .traces li.error {
-    font-style: normal;
-    color: #AA3333;
-    background: #f9ecec;
-}
-.sf-reset #logs .traces li.warning {
-    font-style: normal;
-    background: #ffcc00;
-}
-/* fix for Opera not liking empty <li> */
-.sf-reset .traces li:after {
-    content: "\00A0";
-}
-.sf-reset .trace {
-    border: 1px solid #D3D3D3;
-    padding: 10px;
-    overflow: auto;
-    margin: 10px 0 20px;
-}
-.sf-reset .block-exception {
-    -moz-border-radius: 16px;
-    -webkit-border-radius: 16px;
-    border-radius: 16px;
-    margin-bottom: 20px;
-    background-color: #f6f6f6;
-    border: 1px solid #dfdfdf;
-    padding: 30px 28px;
-    word-wrap: break-word;
-    overflow: hidden;
-}
-.sf-reset .block-exception div {
-    color: #313131;
-    font-size: 10px;
-}
-.sf-reset .block-exception-detected .illustration-exception,
-.sf-reset .block-exception-detected .text-exception {
-    float: left;
-}
-.sf-reset .block-exception-detected .illustration-exception {
-    width: 152px;
-}
-.sf-reset .block-exception-detected .text-exception {
-    width: 670px;
-    padding: 30px 44px 24px 46px;
-    position: relative;
-}
-.sf-reset .text-exception .open-quote,
-.sf-reset .text-exception .close-quote {
-    font-family: Arial, Helvetica, sans-serif;
-    position: absolute;
-    color: #C9C9C9;
-    font-size: 8em;
-}
-.sf-reset .open-quote {
-    top: 0;
-    left: 0;
-}
-.sf-reset .close-quote {
-    bottom: -0.5em;
-    right: 50px;
-}
-.sf-reset .block-exception p {
-    font-family: Arial, Helvetica, sans-serif;
-}
-.sf-reset .block-exception p a,
-.sf-reset .block-exception p a:hover {
-    color: #565656;
-}
-.sf-reset .logs h2 {
-    float: left;
-    width: 654px;
-}
-.sf-reset .error-count, .sf-reset .support {
-    float: right;
-    width: 170px;
-    text-align: right;
-}
-.sf-reset .error-count span {
-    display: inline-block;
-    background-color: #aacd4e;
-    -moz-border-radius: 6px;
-    -webkit-border-radius: 6px;
-    border-radius: 6px;
-    padding: 4px;
-    color: white;
-    margin-right: 2px;
-    font-size: 11px;
-    font-weight: bold;
-}
-
-.sf-reset .support a {
-    display: inline-block;
-    -moz-border-radius: 6px;
-    -webkit-border-radius: 6px;
-    border-radius: 6px;
-    padding: 4px;
-    color: #000000;
-    margin-right: 2px;
-    font-size: 11px;
-    font-weight: bold;
-}
-
-.sf-reset .toggle {
-    vertical-align: middle;
-}
-.sf-reset .linked ul,
-.sf-reset .linked li {
-    display: inline;
-}
-.sf-reset #output-content {
-    color: #000;
-    font-size: 12px;
-}
-.sf-reset #traces-text pre {
-    white-space: pre;
-    font-size: 12px;
-    font-family: monospace;
-}
diff --git a/vendor/symfony/error-handler/Resources/assets/images/chevron-right.svg b/vendor/symfony/error-handler/Resources/assets/images/chevron-right.svg
deleted file mode 100644
index 6837aff18bd20c5d23024965e7d43d5177b60cbd..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/images/chevron-right.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path fill="#FFF" d="M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45L531 45q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z"/></svg>
diff --git a/vendor/symfony/error-handler/Resources/assets/images/favicon.png.base64 b/vendor/symfony/error-handler/Resources/assets/images/favicon.png.base64
deleted file mode 100644
index fb076ed16d0ae5a4a55fbbbcf39693f2dea18750..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/images/favicon.png.base64
+++ /dev/null
@@ -1 +0,0 @@
-data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAgCAYAAAABtRhCAAADVUlEQVRIx82XX0jTURTHLYPyqZdefQx66CEo80+aYpoIkqzUikz6Z5klQoWUWYRIJYEUGpQ+lIr9U5dOTLdCtkmWZis3rbnC5fw/neYW002307mX/cZvP3/7o1PwwOdh95x7vnf39zvnd29AgBer2xO6DclAXiMqZAqxIiNIN/IYSUS2BPhjmGATchUxI+ADWiRhpWK7HKuHFVBFdmU5YvnI4grFGCaReF/EBH4KsZlGgj2JBTuCYBWRIYF8YoEOJ6wBt/gEs7mBbyOjQXruPLSdOgPCiEiPSUUHDoL8Ug5IUo9B/d5wrt+G7OAKNrODPuVdB6vRCIzN6SdBlpW9RIgk/1FeAXabzRlrUPVCS/JhbmwudztnGeeH9AyXBIwtmM3wLinZJZHifjHw2V+NBoRh+9ixQrbgbnaSIcl7cGea6hoXQbNe7za241oeO5Z0p42M4BV2EqP2D50wo+6HzvwC6C4sApNOR8cmOrtcnhtj2kYRyC9eBvXzKrBZrXSs72kFd1t3MoKVbMekQkEnSNKOO8fac3LpmK6l1TlGtsxmsdKFsecPYgwxst0cwROMYDXboSotg0WLBRqjY51jLYcENElXwW2XJKPydvoI2GN9T8rBtrAArYIUruBJXkFheCQYlCpQP6uk5dAQFQNaUROMSGVQFxLmkoQsxDJrhLbTZ+nvVsERME9MgPJRKV/58AsyomTSzE813WLFvWK++qI0xSfQl8k8Pg46sYRuv5t6dS+4RqxDwaa4BGjYH+NTQvKScIp9+YL/hoZh3jDtLRHtt2C3g6bmhX+CpsFBWg7ilDSPgj0lD2ncr5ev/BP8VvyAJhqVyZeUhPOrEhEFxgEtjft846Z/guQTNT89Q5P9flMLoth4F7808wKtWWKzAwNQHxrh/1vaid2F+XpYTSbQf1XA2McOmOpROnvpvMEA4tSjq1cW0sws2gCYxswY6TKkvzYnJq1NHZLnRU4BX+4U0uburvusu8Kv8iHY7qefkM4IFngJHEOUXmLEPgiGsI8YnlZILit3vSSLRTQe/MPIZva5pshNIEmyFQlCvruJKXPkCEfmePzkphXHdzZNQdoRI9KPlBAxlj/I8U97ERPS5bjGbWDFbEdqHVe5caTBeZZx2H/IMvzeN15yoQAAAABJRU5ErkJggg==
diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-book.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-book.svg
deleted file mode 100644
index 498a74f401e32b5c6b8955e16385f58c4d04cb8e..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/images/icon-book.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path fill="#FFF" d="M1703 478q40 57 18 129l-275 906q-19 64-76.5 107.5T1247 1664H324q-77 0-148.5-53.5T76 1479q-24-67-2-127 0-4 3-27t4-37q1-8-3-21.5t-3-19.5q2-11 8-21t16.5-23.5T116 1179q23-38 45-91.5t30-91.5q3-10 .5-30t-.5-28q3-11 17-28t17-23q21-36 42-92t25-90q1-9-2.5-32t.5-28q4-13 22-30.5t22-22.5q19-26 42.5-84.5T404 411q1-8-3-25.5t-2-26.5q2-8 9-18t18-23 17-21q8-12 16.5-30.5t15-35 16-36 19.5-32 26.5-23.5 36-11.5T620 134l-1 3q38-9 51-9h761q74 0 114 56t18 130l-274 906q-36 119-71.5 153.5T1089 1408H220q-27 0-38 15-11 16-1 43 24 70 144 70h923q29 0 56-15.5t35-41.5l300-987q7-22 5-57 38 15 59 43zm-1064 2q-4 13 2 22.5t20 9.5h608q13 0 25.5-9.5T1311 480l21-64q4-13-2-22.5t-20-9.5H702q-13 0-25.5 9.5T660 416zm-83 256q-4 13 2 22.5t20 9.5h608q13 0 25.5-9.5T1228 736l21-64q4-13-2-22.5t-20-9.5H619q-13 0-25.5 9.5T577 672z"/></svg>
diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square-o.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square-o.svg
deleted file mode 100644
index be534ad44037ca04d9d153b900da4f07881861fe..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square-o.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 800v64q0 14-9 23t-23 9H480q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h832q14 0 23 9t9 23zm128 448V416q0-66-47-113t-113-47H480q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5T1312 1536H480q-119 0-203.5-84.5T192 1248V416q0-119 84.5-203.5T480 128h832q119 0 203.5 84.5T1600 416z"/></svg>
diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square.svg
deleted file mode 100644
index 471c2741c7fd7ae07f154a18304123310b963775..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 960V832q0-26-19-45t-45-19H448q-26 0-45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45-19t19-45zm256-544v960q0 119-84.5 203.5T1376 1664H416q-119 0-203.5-84.5T128 1376V416q0-119 84.5-203.5T416 128h960q119 0 203.5 84.5T1664 416z"/></svg>
diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square-o.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square-o.svg
deleted file mode 100644
index b2593a9fe79e91200220d9dfaf48b81af5e8d0b6..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square-o.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 800v64q0 14-9 23t-23 9H960v352q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23V896H480q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h352V416q0-14 9-23t23-9h64q14 0 23 9t9 23v352h352q14 0 23 9t9 23zm128 448V416q0-66-47-113t-113-47H480q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5T1312 1536H480q-119 0-203.5-84.5T192 1248V416q0-119 84.5-203.5T480 128h832q119 0 203.5 84.5T1600 416z"/></svg>
diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square.svg
deleted file mode 100644
index 2f5c3b3583076735bc84a806004da1e867053237..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 960V832q0-26-19-45t-45-19h-320V448q0-26-19-45t-45-19H832q-26 0-45 19t-19 45v320H448q-26 0-45 19t-19 45v128q0 26 19 45t45 19h320v320q0 26 19 45t45 19h128q26 0 45-19t19-45v-320h320q26 0 45-19t19-45zm256-544v960q0 119-84.5 203.5T1376 1664H416q-119 0-203.5-84.5T128 1376V416q0-119 84.5-203.5T416 128h960q119 0 203.5 84.5T1664 416z"/></svg>
diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-support.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-support.svg
deleted file mode 100644
index 03fd8e7678bafbf3160707a0d4b51ef72cc683b8..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/images/icon-support.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path fill="#FFF" d="M896 0q182 0 348 71t286 191 191 286 71 348-71 348-191 286-286 191-348 71-348-71-286-191-191-286T0 896t71-348 191-286T548 71 896 0zm0 128q-190 0-361 90l194 194q82-28 167-28t167 28l194-194q-171-90-361-90zM218 1257l194-194q-28-82-28-167t28-167L218 535q-90 171-90 361t90 361zm678 407q190 0 361-90l-194-194q-82 28-167 28t-167-28l-194 194q171 90 361 90zm0-384q159 0 271.5-112.5T1280 896t-112.5-271.5T896 512 624.5 624.5 512 896t112.5 271.5T896 1280zm484-217l194 194q90-171 90-361t-90-361l-194 194q28 82 28 167t-28 167z"/></svg>
diff --git a/vendor/symfony/error-handler/Resources/assets/images/symfony-ghost.svg.php b/vendor/symfony/error-handler/Resources/assets/images/symfony-ghost.svg.php
deleted file mode 100644
index 4b2f9c1b9b1d97c432f56ee47d7f0649a3f84869..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/images/symfony-ghost.svg.php
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 136 81" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.4"><path d="M92.4 20.4a23.2 23.2 0 0 1 9 1.9 23.7 23.7 0 0 1 5.2 3 24.3 24.3 0 0 1 3.4 3.4 24.8 24.8 0 0 1 5 9.4c.5 1.7.8 3.4 1 5.2v14.5h.4l.5.2a7.4 7.4 0 0 0 2.5.2l.2-.2.6-.8.8-1.3-.2-.1a5.5 5.5 0 0 1-.8-.3 5.6 5.6 0 0 1-2.3-1.8 5.7 5.7 0 0 1-.9-1.6 6.5 6.5 0 0 1-.2-2.8 7.3 7.3 0 0 1 .5-2l.3-.3.8-.9.3-.3c.2-.2.5-.3.8-.3H120.7c.2 0 .3-.1.4 0h.4l.2.1.3.2.2-.4.3-.4.1-.1 1.2-1 .3-.2.4-.1.4-.1h.3l1.5.1.4.1.8.5.1.2 1 1.1v.2H129.4l.4-.2 1.4-.5h1.1c.3 0 .7.2 1 .4.2 0 .3.2.5.3l.2.2.5.3.4.6.1.3.4 1.4.1.4v.6a7.8 7.8 0 0 1-.1.6 9.9 9.9 0 0 1-.8 2.4 7.8 7.8 0 0 1-3 3.3 6.4 6.4 0 0 1-1 .5 6.1 6.1 0 0 1-.6.2l-.7.1h-.1a23.4 23.4 0 0 1-.2 1.7 14.3 14.3 0 0 1-.6 2.1l-.8 2a9.2 9.2 0 0 1-.4.6l-.7 1a9.1 9.1 0 0 1-2.3 2.2c-.9.5-2 .6-3 .7l-1.4.1h-.5l-.4.1a15.8 15.8 0 0 1-2.8-.1v4.2a9.7 9.7 0 0 1-.7 3.5 9.6 9.6 0 0 1-1.7 2.8 9.3 9.3 0 0 1-3 2.3 9 9 0 0 1-5.4.7 9 9 0 0 1-3-1 9.4 9.4 0 0 1-2.7-2.5 10 10 0 0 1-1 1.2 9.3 9.3 0 0 1-2 1.3 9 9 0 0 1-2.4 1 9 9 0 0 1-6.5-1.1A9.4 9.4 0 0 1 85 77V77a10.9 10.9 0 0 1-.6.6 9.3 9.3 0 0 1-2.7 2 9 9 0 0 1-6 .8 9 9 0 0 1-2.4-1 9.3 9.3 0 0 1-2.3-1.7 9.6 9.6 0 0 1-1.8-2.8 9.7 9.7 0 0 1-.8-3.7v-4a18.5 18.5 0 0 1-2.9.2l-1.2-.1c-1.9-.3-3.7-1-5.1-2.2a8.2 8.2 0 0 1-1.1-1 10.2 10.2 0 0 1-.9-1.2 15.3 15.3 0 0 1-.7-1.3 20.8 20.8 0 0 1-1.9-6.2v-.2a6.5 6.5 0 0 1-1-.3 6.1 6.1 0 0 1-.6-.3 6.6 6.6 0 0 1-.9-.6 8.2 8.2 0 0 1-2.7-3.7 10 10 0 0 1-.3-1 10.3 10.3 0 0 1-.3-1.9V47v-.4l.1-.4.6-1.4.1-.2a2 2 0 0 1 .8-.8l.3-.2.3-.2a3.2 3.2 0 0 1 1.8-.5h.4l.3.2 1.4.6.2.2.4.3.3.4.7-.7.2-.2.4-.2.6-.2h2.1l.4.2.4.2.3.2.8 1 .2-.1h.1v-.1H63l1.1.1h.3l.8.5.3.4.7 1 .2.3.1.5a11 11 0 0 1 .2 1.5c0 .8 0 1.6-.3 2.3a6 6 0 0 1-.5 1.2 5.5 5.5 0 0 1-3.3 2.5 12.3 12.3 0 0 0 1.4 3h.1l.2.1 1 .2h1.5l.5-.2H67.8l.5-.2h.1V44v-.4a26.7 26.7 0 0 1 .3-2.3 24.7 24.7 0 0 1 5.7-12.5 24.2 24.2 0 0 1 3.5-3.3 23.7 23.7 0 0 1 4.9-3 23.2 23.2 0 0 1 5.6-1.7 23.7 23.7 0 0 1 4-.3zm-.3 2a21.2 21.2 0 0 0-8 1.7 21.6 21.6 0 0 0-4.8 2.7 22.2 22.2 0 0 0-3.2 3 22.7 22.7 0 0 0-5 9.2 23.4 23.4 0 0 0-.7 4.9v15.7l-.5.1a34.3 34.3 0 0 1-1.5.3h-.2l-.4.1h-.4l-.9.2a10 10 0 0 1-1.9 0c-.5 0-1-.2-1.5-.4a1.8 1.8 0 0 1-.3-.2 2 2 0 0 1-.3-.3 5.2 5.2 0 0 1-.1-.2 9 9 0 0 1-.6-.9 13.8 13.8 0 0 1-1-2 14.3 14.3 0 0 1-.6-2 14 14 0 0 1-.1-.8v-.2h.3a12.8 12.8 0 0 0 1.4-.2 4.4 4.4 0 0 0 .3 0 3.6 3.6 0 0 0 1.1-.7 3.4 3.4 0 0 0 1.2-1.7l.2-1.2a5.1 5.1 0 0 0 0-.8 7.2 7.2 0 0 0-.1-.8l-.7-1-1.2-.2-1 .7-.1 1.3a5 5 0 0 1 .1.4v.6a1 1 0 0 1 0 .3c-.1.3-.4.4-.7.5l-1.2.4v-.7A9.9 9.9 0 0 1 60 49l.3-.6v-.2l.1-.1v-1.6l-1-1.2h-1.5l-1 1.1v.4a5.3 5.3 0 0 0-.2.6 5.5 5.5 0 0 0 0 .5c0 .7 0 1.4.3 2 0 .4.2.8.4 1.2L57 51a9.5 9.5 0 0 1-1.1-.5h-.2a2 2 0 0 1-.4-.3c-.4-.4-.5-1-.6-1.6a5.6 5.6 0 0 1 0-.5v-.5-.5l-.6-1.5-1.4-.6-.9.3s-.2 0-.3.2a2 2 0 0 1-.1 0l-.6 1.4v.7a8.5 8.5 0 0 0 .5 2c.4 1.1 1 2.1 2 2.8a4.7 4.7 0 0 0 2.1.9h1a22.8 22.8 0 0 0 .1 1 18.1 18.1 0 0 0 .8 3.8 18.2 18.2 0 0 0 1.6 3.7l1 1.3c1 1 2.3 1.6 3.7 2a11.7 11.7 0 0 0 4.8 0h.4l.5-.2.5-.1.6-.2v6.6a8 8 0 0 0 .1 1.3 7.5 7.5 0 0 0 2.4 4.3 7.2 7.2 0 0 0 2.3 1.3 7 7 0 0 0 7-1.1 7.5 7.5 0 0 0 2-2.6A7.7 7.7 0 0 0 85 72V71a8.2 8.2 0 0 0 .2 1.3c0 .7.3 1.4.6 2a7.5 7.5 0 0 0 1.7 2.3 7.3 7.3 0 0 0 2.2 1.4 7.1 7.1 0 0 0 4.6.2 7.2 7.2 0 0 0 2.4-1.2 7.5 7.5 0 0 0 2.1-2.7 7.8 7.8 0 0 0 .7-2.4V71a9.3 9.3 0 0 0 .1.6 7.6 7.6 0 0 0 .6 2.5 7.5 7.5 0 0 0 2.4 3 7.1 7.1 0 0 0 7 .8 7.3 7.3 0 0 0 2.3-1.5 7.5 7.5 0 0 0 1.6-2.3 7.6 7.6 0 0 0 .5-2l.1-1.1v-6.7l.4.1a12.2 12.2 0 0 0 2 .5 11.1 11.1 0 0 0 2.5 0h.8l1.2-.1a9.5 9.5 0 0 0 1.4-.2l.9-.3a3.5 3.5 0 0 0 .6-.4l1.2-1.4a12.2 12.2 0 0 0 .8-1.2c0-.3.2-.5.3-.7a15.9 15.9 0 0 0 .7-2l.3-1.6v-1.3l.2-.9V54.6a15.5 15.5 0 0 0 1.8 0 4.5 4.5 0 0 0 1.4-.5 5.7 5.7 0 0 0 2.5-3.2 7.6 7.6 0 0 0 .4-1.5v-.3l-.4-1.4a5.2 5.2 0 0 1-.2-.1l-.4-.4a3.8 3.8 0 0 0-.2 0 1.4 1.4 0 0 0-.5-.2l-1.4.4-.7 1.3v.7a5.7 5.7 0 0 1-.1.8l-.7 1.4a1.9 1.9 0 0 1-.5.3h-.3a9.6 9.6 0 0 1-.8.3 8.8 8.8 0 0 1-.6 0l.2-.4.2-.5.2-.3v-.4l.1-.2V50l.1-1 .1-.6v-.6a4.8 4.8 0 0 0 0-.8v-.2l-1-1.1-1.5-.2-1.1 1-.2 1.4v.1l.2.4.2.3v.4l.1 1.1v.3l.1.5v.8a9.6 9.6 0 0 1-.8-.3l-.2-.1h-.3l-.8-.1h-.2a1.6 1.6 0 0 1-.2-.2.9.9 0 0 1-.2-.2 1 1 0 0 1-.1-.5l.2-.9v-1.2l-.9-.8h-1.2l-.8.9v.3a4.8 4.8 0 0 0-.3 2l.3.9a3.5 3.5 0 0 0 1.2 1.6l1 .5.8.2 1.4.1h.4l.2.1a12.1 12.1 0 0 1-1 2.6 13.2 13.2 0 0 1-.8 1.5 9.5 9.5 0 0 1-1 1.2l-.2.3a1.7 1.7 0 0 1-.4.3 2.4 2.4 0 0 1-.7.2h-2.5a7.8 7.8 0 0 1-.6-.2l-.7-.2h-.2a14.8 14.8 0 0 1-.6-.2 23.4 23.4 0 0 1-.4-.1l-.4-.1-.3-.1V43.9a34.6 34.6 0 0 0 0-.6 23.6 23.6 0 0 0-.4-3 22.7 22.7 0 0 0-1.5-4.7 22.6 22.6 0 0 0-4.6-6.7 21.9 21.9 0 0 0-6.9-4.7 21.2 21.2 0 0 0-8.1-1.8H92zm9.1 33.7l.3.1a1 1 0 0 1 .6.8v.4a8.4 8.4 0 0 1 0 .5 8.8 8.8 0 0 1-1.6 4.2l-1 1.3A10 10 0 0 1 95 66c-1.3.3-2.7.4-4 .3a10.4 10.4 0 0 1-2.7-.8 10 10 0 0 1-3.6-2.5 9.3 9.3 0 0 1-.8-1 9 9 0 0 1-.7-1.2 8.6 8.6 0 0 1-.8-3.4V57a1 1 0 0 1 .3-.6 1 1 0 0 1 1.3-.2 1 1 0 0 1 .4.8v.4a6.5 6.5 0 0 0 .5 2.2 7 7 0 0 0 2.1 2.8l1 .6c2.6 1.6 6 1.6 8.5 0a8 8 0 0 0 1.1-.6 7.6 7.6 0 0 0 1.2-1.2 7 7 0 0 0 1-1.7 6.5 6.5 0 0 0 .4-2.5 1 1 0 0 1 .7-1h.4zM30.7 43.7c-15.5 1-28.5-6-30.1-16.4C-1.2 15.7 11.6 4 29 1.3 46.6-1.7 62.3 5.5 64 17.1c1.6 10.4-8.7 21-23.7 25a31.2 31.2 0 0 0 0 .9v.3a19 19 0 0 0 .1 1l.1.4.1.9a4.7 4.7 0 0 0 .5 1l.7 1a9.2 9.2 0 0 0 1.2 1l1.5.8.6.8-.7.6-1.1.3a11.2 11.2 0 0 1-2.6.4 8.6 8.6 0 0 1-3-.5 8.5 8.5 0 0 1-1-.4 11.2 11.2 0 0 1-1.8-1.2 13.3 13.3 0 0 1-1-1 18 18 0 0 1-.7-.6l-.4-.4a23.4 23.4 0 0 1-1.3-1.8l-.1-.1-.3-.5V45l-.3-.6v-.7zM83.1 36c3.6 0 6.5 3.2 6.5 7.1 0 4-3 7.2-6.5 7.2S76.7 47 76.7 43 79.6 36 83 36zm18 0c3.6 0 6.5 3.2 6.5 7.1 0 4-2.9 7.2-6.4 7.2S94.7 47 94.7 43s3-7.1 6.5-7.1zm-18 6.1c2 0 3.5 1.6 3.5 3.6S85 49.2 83 49.2s-3.4-1.6-3.4-3.6S81.2 42 83 42zm17.9 0c1.9 0 3.4 1.6 3.4 3.6s-1.5 3.6-3.4 3.6c-2 0-3.5-1.6-3.5-3.6S99.1 42 101 42zM17 28c-.3 1.6-1.8 5-5.2 5.8-2.5.6-4.1-.8-4.5-2.6-.4-1.9.7-3.5 2.1-4.5A3.5 3.5 0 0 1 8 24.6c-.4-2 .8-3.7 3.2-4.2 1.9-.5 3.1.2 3.4 1.5.3 1.1-.5 2.2-1.8 2.5-.9.3-1.6 0-1.7-.6a1.4 1.4 0 0 1 0-.7s.3.2 1 0c.7-.1 1-.7.9-1.2-.2-.6-1-.8-1.8-.6-1 .2-2 1-1.7 2.6.3 1 .9 1.6 1.5 1.8l.7-.2c1-.2 1.5 0 1.6.5 0 .4-.2 1-1.2 1.2a3.3 3.3 0 0 1-1.5 0c-.9.7-1.6 1.9-1.3 3.2.3 1.3 1.3 2.2 3 1.8 2.5-.7 3.8-3.7 4.2-5-.3-.5-.6-1-.7-1.6-.1-.5.1-1 .9-1.2.4 0 .7.2.8.8a2.8 2.8 0 0 1 0 1l.7 1c.6-2 1.4-4 1.7-4 .6-.2 1.5.6 1.5.6-.8.7-1.7 2.4-2.3 4.2.8.6 1.6 1 2.1 1 .5-.1.8-.6 1-1.2-.3-2.2 1-4.3 2.3-4.6.7-.2 1.3.2 1.4.8.1.5 0 1.3-.9 1.7-.2-1-.6-1.3-1-1.3-.4.1-.7 1.4-.4 2.8.2 1 .7 1.5 1.3 1.4.8-.2 1.3-1.2 1.7-2.1-.3-2.1.9-4.2 2.2-4.5.7-.2 1.2.1 1.4 1 .4 1.4-1 2.8-2.2 3.4.3.7.7 1 1.3.9 1-.3 1.6-1.5 2-2.5l-.5-3v-.3s1.6-.3 1.8.6v.1c.2-.6.7-1.2 1.3-1.4.8-.1 1.5.6 1.7 1.6.5 2.2-.5 4.4-1.8 4.7H33a31.9 31.9 0 0 0 1 5.2c-.4.1-1.8.4-2-.4l-.5-5.6c-.5 1-1.3 2.2-2.5 2.4-1 .3-1.6-.3-2-1.1-.5 1-1.3 2.1-2.4 2.4-.8.2-1.5-.1-2-1-.3.8-.9 1.5-1.5 1.7-.7.1-1.5-.3-2.4-1-.3.8-.4 1.6-.4 2.2 0 0-.7 0-.8-.4-.1-.5 0-1.5.3-2.7a10.3 10.3 0 0 1-.7-.8zm38.2-17.8l.2.9c.5 1.9.4 4.4.8 6.4 0 .6-.4 3-1.4 3.3-.2 0-.3 0-.4-.4-.1-.7 0-1.6-.3-2.6-.2-1.1-.8-1.6-1.5-1.5-.8.2-1.3 1-1.6 2l-.1-.5c-.2-1-1.8-.6-1.8-.6a6.2 6.2 0 0 1 .4 1.3l.2 1c-.2.5-.6 1-1.2 1l-.2.1a7 7 0 0 0-.1-.8c-.3-1.1-1-2-1.6-1.8a.7.7 0 0 0-.4.3c-1.3.3-2.4 2-2.1 3.9-.2.9-.6 1.7-1 1.9-.5 0-.8-.5-1.1-1.8l-.1-1.2a4 4 0 0 0 0-1.7c0-.4-.4-.7-.8-.6-.7.2-.9 1.7-.5 3.8-.2 1-.6 2-1.3 2-.4.2-.8-.2-1-1l-.2-3c1.2-.5 2-1 1.8-1.7-.1-.5-.8-.7-.8-.7s0 .7-1 1.2l-.2-1.4c-.1-.6-.4-1-1.7-.6l.4 1 .2 1.5h-1v.8c0 .3.4.3 1 .2 0 1.3 0 2.7.2 3.6.3 1.4 1.2 2 2 1.7 1-.2 1.6-1.3 2-2.3.3 1.2 1 2 1.9 1.7.7-.2 1.2-1.1 1.6-2.2.4.8 1.1 1.1 2 1 1.2-.4 1.7-1.6 1.8-2.8h.2c.6-.2 1-.6 1.3-1 0 .8 0 1.5.2 2.1.1.5.3.7.6.6.5-.1 1-.9 1-.9a4 4 0 0 1-.3-1c-.3-1.3.3-3.6 1-3.7.2 0 .3.2.5.7v.8l.2 1.5v.7c.2.7.7 1.3 1.5 1 1.3-.2 2-2.6 2.1-3.9.3.2.6.2 1 .1-.6-2.2 0-6.1-.3-7.9-.1-.4-1-.5-1.7-.5h-.4zm-21.5 12c.4 0 .7.3 1 1.1.2 1.3-.3 2.6-.9 2.8-.2 0-.7 0-1-1.2v-.4c0-1.3.4-2 1-2.2zm-5.2 1c.3 0 .6.2.6.5.2.6-.3 1.3-1.2 2-.3-1.4.1-2.3.6-2.5zm18-.4c-.5.2-1-.4-1.2-1.2-.2-1 0-2.1.7-2.5v.5c.2.7.6 1.5 1.3 1.9 0 .7-.2 1.2-.7 1.3zm10-1.6c0 .5.4.7 1 .6.8-.2 1-1 .8-1.6 0-.5-.4-1-1-.8-.5.1-1 .9-.8 1.8zm-14.3-5.5c0-.4-.5-.7-1-.5-.8.2-1 1-.9 1.5.2.6.5 1 1 .8.5 0 1.1-1 1-1.8z" fill="#fff" fill-opacity=".6"/><?= $this->addElementToGhost(); ?></svg>
diff --git a/vendor/symfony/error-handler/Resources/assets/images/symfony-logo.svg b/vendor/symfony/error-handler/Resources/assets/images/symfony-logo.svg
deleted file mode 100644
index f10824ae96f6a3ac0c12828efa9550be14d04f5e..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/images/symfony-logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" d="M12 .9C5.8.9.9 5.8.9 12a11 11 0 1 0 22.2 0A11 11 0 0 0 12 .9zm6.5 6c-.6 0-.9-.3-.9-.8 0-.2 0-.4.2-.6l.2-.4c0-.3-.5-.4-.6-.4-1.8.1-2.3 2.5-2.7 4.4l-.2 1c1 .2 1.8 0 2.2-.3.6-.4-.2-.7-.1-1.2.1-.3.5-.5.7-.6.5 0 .7.5.7.9 0 .7-1 1.8-3 1.8l-.6-.1-.6 2.4c-.4 1.6-.8 3.8-2.4 5.7-1.4 1.7-2.9 1.9-3.5 1.9-1.2 0-1.9-.6-2-1.5 0-.8.7-1.3 1.2-1.3.6 0 1.1.5 1.1 1s-.2.6-.4.6c-.1.1-.3.2-.3.4 0 .1.1.3.4.3.5 0 .8-.3 1.1-.5 1.2-.9 1.6-2.7 2.2-5.7l.1-.7.7-3.2c-.8-.6-1.3-1.4-2.4-1.7-.6-.1-1.1.1-1.5.5-.4.5-.2 1.1.2 1.5l.7.6c.7.8 1.2 1.6 1 2.5-.3 1.5-2 2.6-4 1.9-1.8-.6-2-1.8-1.8-2.5.2-.6.6-.7 1.1-.6.5.2.6.7.6 1.2l-.1.3c-.2.1-.3.3-.3.4-.1.4.4.6.7.7.7.3 1.6-.2 1.8-.8a1 1 0 0 0-.4-1.1l-.7-.8c-.4-.4-1.1-1.4-.7-2.6.1-.5.4-.9.7-1.3a4 4 0 0 1 2.8-.6c1.2.4 1.8 1.1 2.6 1.8.5-1.2 1-2.4 1.8-3.5.9-.9 1.9-1.6 3.1-1.7 1.3.2 2.2.7 2.2 1.6 0 .4-.2 1.1-.9 1.1z"/></svg>
diff --git a/vendor/symfony/error-handler/Resources/assets/js/exception.js b/vendor/symfony/error-handler/Resources/assets/js/exception.js
deleted file mode 100644
index 8cc7b5318449aee757ea4943121b2d977bcd25e6..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/assets/js/exception.js
+++ /dev/null
@@ -1,279 +0,0 @@
-/* This file is based on WebProfilerBundle/Resources/views/Profiler/base_js.html.twig.
-   If you make any change in this file, verify the same change is needed in the other file. */
-/*<![CDATA[*/
-Sfjs = (function() {
-    "use strict";
-
-    if ('classList' in document.documentElement) {
-        var hasClass = function (el, cssClass) { return el.classList.contains(cssClass); };
-        var removeClass = function(el, cssClass) { el.classList.remove(cssClass); };
-        var addClass = function(el, cssClass) { el.classList.add(cssClass); };
-        var toggleClass = function(el, cssClass) { el.classList.toggle(cssClass); };
-    } else {
-        var hasClass = function (el, cssClass) { return el.className.match(new RegExp('\\b' + cssClass + '\\b')); };
-        var removeClass = function(el, cssClass) { el.className = el.className.replace(new RegExp('\\b' + cssClass + '\\b'), ' '); };
-        var addClass = function(el, cssClass) { if (!hasClass(el, cssClass)) { el.className += " " + cssClass; } };
-        var toggleClass = function(el, cssClass) { hasClass(el, cssClass) ? removeClass(el, cssClass) : addClass(el, cssClass); };
-    }
-
-    var addEventListener;
-
-    var el = document.createElement('div');
-    if (!('addEventListener' in el)) {
-        addEventListener = function (element, eventName, callback) {
-            element.attachEvent('on' + eventName, callback);
-        };
-    } else {
-        addEventListener = function (element, eventName, callback) {
-            element.addEventListener(eventName, callback, false);
-        };
-    }
-
-    return {
-        addEventListener: addEventListener,
-
-        createTabs: function() {
-            var tabGroups = document.querySelectorAll('.sf-tabs:not([data-processed=true])');
-
-            /* create the tab navigation for each group of tabs */
-            for (var i = 0; i < tabGroups.length; i++) {
-                var tabs = tabGroups[i].querySelectorAll(':scope > .tab');
-                var tabNavigation = document.createElement('ul');
-                tabNavigation.className = 'tab-navigation';
-
-                var selectedTabId = 'tab-' + i + '-0'; /* select the first tab by default */
-                for (var j = 0; j < tabs.length; j++) {
-                    var tabId = 'tab-' + i + '-' + j;
-                    var tabTitle = tabs[j].querySelector('.tab-title').innerHTML;
-
-                    var tabNavigationItem = document.createElement('li');
-                    tabNavigationItem.setAttribute('data-tab-id', tabId);
-                    if (hasClass(tabs[j], 'active')) { selectedTabId = tabId; }
-                    if (hasClass(tabs[j], 'disabled')) { addClass(tabNavigationItem, 'disabled'); }
-                    tabNavigationItem.innerHTML = tabTitle;
-                    tabNavigation.appendChild(tabNavigationItem);
-
-                    var tabContent = tabs[j].querySelector('.tab-content');
-                    tabContent.parentElement.setAttribute('id', tabId);
-                }
-
-                tabGroups[i].insertBefore(tabNavigation, tabGroups[i].firstChild);
-                addClass(document.querySelector('[data-tab-id="' + selectedTabId + '"]'), 'active');
-            }
-
-            /* display the active tab and add the 'click' event listeners */
-            for (i = 0; i < tabGroups.length; i++) {
-                tabNavigation = tabGroups[i].querySelectorAll(':scope >.tab-navigation li');
-
-                for (j = 0; j < tabNavigation.length; j++) {
-                    tabId = tabNavigation[j].getAttribute('data-tab-id');
-                    document.getElementById(tabId).querySelector('.tab-title').className = 'hidden';
-
-                    if (hasClass(tabNavigation[j], 'active')) {
-                        document.getElementById(tabId).className = 'block';
-                    } else {
-                        document.getElementById(tabId).className = 'hidden';
-                    }
-
-                    tabNavigation[j].addEventListener('click', function(e) {
-                        var activeTab = e.target || e.srcElement;
-
-                        /* needed because when the tab contains HTML contents, user can click */
-                        /* on any of those elements instead of their parent '<li>' element */
-                        while (activeTab.tagName.toLowerCase() !== 'li') {
-                            activeTab = activeTab.parentNode;
-                        }
-
-                        /* get the full list of tabs through the parent of the active tab element */
-                        var tabNavigation = activeTab.parentNode.children;
-                        for (var k = 0; k < tabNavigation.length; k++) {
-                            var tabId = tabNavigation[k].getAttribute('data-tab-id');
-                            document.getElementById(tabId).className = 'hidden';
-                            removeClass(tabNavigation[k], 'active');
-                        }
-
-                        addClass(activeTab, 'active');
-                        var activeTabId = activeTab.getAttribute('data-tab-id');
-                        document.getElementById(activeTabId).className = 'block';
-                    });
-                }
-
-                tabGroups[i].setAttribute('data-processed', 'true');
-            }
-        },
-
-        createToggles: function() {
-            var toggles = document.querySelectorAll('.sf-toggle:not([data-processed=true])');
-
-            for (var i = 0; i < toggles.length; i++) {
-                var elementSelector = toggles[i].getAttribute('data-toggle-selector');
-                var element = document.querySelector(elementSelector);
-
-                addClass(element, 'sf-toggle-content');
-
-                if (toggles[i].hasAttribute('data-toggle-initial') && toggles[i].getAttribute('data-toggle-initial') == 'display') {
-                    addClass(toggles[i], 'sf-toggle-on');
-                    addClass(element, 'sf-toggle-visible');
-                } else {
-                    addClass(toggles[i], 'sf-toggle-off');
-                    addClass(element, 'sf-toggle-hidden');
-                }
-
-                addEventListener(toggles[i], 'click', function(e) {
-                    e.preventDefault();
-
-                    if ('' !== window.getSelection().toString()) {
-                        /* Don't do anything on text selection */
-                        return;
-                    }
-
-                    var toggle = e.target || e.srcElement;
-
-                    /* needed because when the toggle contains HTML contents, user can click */
-                    /* on any of those elements instead of their parent '.sf-toggle' element */
-                    while (!hasClass(toggle, 'sf-toggle')) {
-                        toggle = toggle.parentNode;
-                    }
-
-                    var element = document.querySelector(toggle.getAttribute('data-toggle-selector'));
-
-                    toggleClass(toggle, 'sf-toggle-on');
-                    toggleClass(toggle, 'sf-toggle-off');
-                    toggleClass(element, 'sf-toggle-hidden');
-                    toggleClass(element, 'sf-toggle-visible');
-
-                    /* the toggle doesn't change its contents when clicking on it */
-                    if (!toggle.hasAttribute('data-toggle-alt-content')) {
-                        return;
-                    }
-
-                    if (!toggle.hasAttribute('data-toggle-original-content')) {
-                        toggle.setAttribute('data-toggle-original-content', toggle.innerHTML);
-                    }
-
-                    var currentContent = toggle.innerHTML;
-                    var originalContent = toggle.getAttribute('data-toggle-original-content');
-                    var altContent = toggle.getAttribute('data-toggle-alt-content');
-                    toggle.innerHTML = currentContent !== altContent ? altContent : originalContent;
-                });
-
-                /* Prevents from disallowing clicks on links inside toggles */
-                var toggleLinks = toggles[i].querySelectorAll('a');
-                for (var j = 0; j < toggleLinks.length; j++) {
-                    addEventListener(toggleLinks[j], 'click', function(e) {
-                        e.stopPropagation();
-                    });
-                }
-
-                toggles[i].setAttribute('data-processed', 'true');
-            }
-        },
-
-        createFilters: function() {
-            document.querySelectorAll('[data-filters] [data-filter]').forEach(function (filter) {
-                var filters = filter.closest('[data-filters]'),
-                    type = 'choice',
-                    name = filter.dataset.filter,
-                    ucName = name.charAt(0).toUpperCase()+name.slice(1),
-                    list = document.createElement('ul'),
-                    values = filters.dataset['filter'+ucName] || filters.querySelectorAll('[data-filter-'+name+']'),
-                    labels = {},
-                    defaults = null,
-                    indexed = {},
-                    processed = {};
-                if (typeof values === 'string') {
-                    type = 'level';
-                    labels = values.split(',');
-                    values = values.toLowerCase().split(',');
-                    defaults = values.length - 1;
-                }
-                addClass(list, 'filter-list');
-                addClass(list, 'filter-list-'+type);
-                values.forEach(function (value, i) {
-                    if (value instanceof HTMLElement) {
-                        value = value.dataset['filter'+ucName];
-                    }
-                    if (value in processed) {
-                        return;
-                    }
-                    var option = document.createElement('li'),
-                        label = i in labels ? labels[i] : value,
-                        active = false,
-                        matches;
-                    if ('' === label) {
-                        option.innerHTML = '<em>(none)</em>';
-                    } else {
-                        option.innerText = label;
-                    }
-                    option.dataset.filter = value;
-                    option.setAttribute('title', 1 === (matches = filters.querySelectorAll('[data-filter-'+name+'="'+value+'"]').length) ? 'Matches 1 row' : 'Matches '+matches+' rows');
-                    indexed[value] = i;
-                    list.appendChild(option);
-                    addEventListener(option, 'click', function () {
-                        if ('choice' === type) {
-                            filters.querySelectorAll('[data-filter-'+name+']').forEach(function (row) {
-                                if (option.dataset.filter === row.dataset['filter'+ucName]) {
-                                    toggleClass(row, 'filter-hidden-'+name);
-                                }
-                            });
-                            toggleClass(option, 'active');
-                        } else if ('level' === type) {
-                            if (i === this.parentNode.querySelectorAll('.active').length - 1) {
-                                return;
-                            }
-                            this.parentNode.querySelectorAll('li').forEach(function (currentOption, j) {
-                                if (j <= i) {
-                                    addClass(currentOption, 'active');
-                                    if (i === j) {
-                                        addClass(currentOption, 'last-active');
-                                    } else {
-                                        removeClass(currentOption, 'last-active');
-                                    }
-                                } else {
-                                    removeClass(currentOption, 'active');
-                                    removeClass(currentOption, 'last-active');
-                                }
-                            });
-                            filters.querySelectorAll('[data-filter-'+name+']').forEach(function (row) {
-                                if (i < indexed[row.dataset['filter'+ucName]]) {
-                                    addClass(row, 'filter-hidden-'+name);
-                                } else {
-                                    removeClass(row, 'filter-hidden-'+name);
-                                }
-                            });
-                        }
-                    });
-                    if ('choice' === type) {
-                        active = null === defaults || 0 <= defaults.indexOf(value);
-                    } else if ('level' === type) {
-                        active = i <= defaults;
-                        if (active && i === defaults) {
-                            addClass(option, 'last-active');
-                        }
-                    }
-                    if (active) {
-                        addClass(option, 'active');
-                    } else {
-                        filters.querySelectorAll('[data-filter-'+name+'="'+value+'"]').forEach(function (row) {
-                            toggleClass(row, 'filter-hidden-'+name);
-                        });
-                    }
-                    processed[value] = true;
-                });
-
-                if (1 < list.childNodes.length) {
-                    filter.appendChild(list);
-                    filter.dataset.filtered = '';
-                }
-            });
-        }
-    };
-})();
-
-Sfjs.addEventListener(document, 'DOMContentLoaded', function() {
-    Sfjs.createTabs();
-    Sfjs.createToggles();
-    Sfjs.createFilters();
-});
-
-/*]]>*/
diff --git a/vendor/symfony/error-handler/Resources/views/error.html.php b/vendor/symfony/error-handler/Resources/views/error.html.php
deleted file mode 100644
index 5416d03c8c159d767adea0d60fac6ad5395beb14..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/views/error.html.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="<?= $this->charset; ?>" />
-    <meta name="robots" content="noindex,nofollow,noarchive" />
-    <title>An Error Occurred: <?= $statusText; ?></title>
-    <style><?= $this->include('assets/css/error.css'); ?></style>
-</head>
-<body>
-<div class="container">
-    <h1>Oops! An Error Occurred</h1>
-    <h2>The server returned a "<?= $statusCode; ?> <?= $statusText; ?>".</h2>
-
-    <p>
-        Something is broken. Please let us know what you were doing when this error occurred.
-        We will fix it as soon as possible. Sorry for any inconvenience caused.
-    </p>
-</div>
-</body>
-</html>
diff --git a/vendor/symfony/error-handler/Resources/views/exception.html.php b/vendor/symfony/error-handler/Resources/views/exception.html.php
deleted file mode 100644
index c3e7a8674e7433b07973bb9e1d573881d300aa8f..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/views/exception.html.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<div class="exception-summary <?= !$exceptionMessage ? 'exception-without-message' : ''; ?>">
-    <div class="exception-metadata">
-        <div class="container">
-            <h2 class="exception-hierarchy">
-                <?php foreach (array_reverse($exception->getAllPrevious(), true) as $index => $previousException) { ?>
-                    <a href="#trace-box-<?= $index + 2; ?>"><?= $this->abbrClass($previousException->getClass()); ?></a>
-                    <span class="icon"><?= $this->include('assets/images/chevron-right.svg'); ?></span>
-                <?php } ?>
-                <a href="#trace-box-1"><?= $this->abbrClass($exception->getClass()); ?></a>
-            </h2>
-            <h2 class="exception-http">
-                HTTP <?= $statusCode; ?> <small><?= $statusText; ?></small>
-            </h2>
-        </div>
-    </div>
-
-    <div class="exception-message-wrapper">
-        <div class="container">
-            <h1 class="break-long-words exception-message<?= mb_strlen($exceptionMessage) > 180 ? ' long' : ''; ?>"><?= $this->formatFileFromText(nl2br($exceptionMessage)); ?></h1>
-
-            <div class="exception-illustration hidden-xs-down">
-                <?= $this->include('assets/images/symfony-ghost.svg.php'); ?>
-            </div>
-        </div>
-    </div>
-</div>
-
-<div class="container">
-    <div class="sf-tabs">
-        <div class="tab">
-            <?php
-            $exceptionAsArray = $exception->toArray();
-            $exceptionWithUserCode = [];
-            $exceptionAsArrayCount = count($exceptionAsArray);
-            $last = $exceptionAsArrayCount - 1;
-            foreach ($exceptionAsArray as $i => $e) {
-                foreach ($e['trace'] as $trace) {
-                    if ($trace['file'] && false === mb_strpos($trace['file'], '/vendor/') && false === mb_strpos($trace['file'], '/var/cache/') && $i < $last) {
-                        $exceptionWithUserCode[] = $i;
-                    }
-                }
-            }
-            ?>
-            <h3 class="tab-title">
-                <?php if ($exceptionAsArrayCount > 1) { ?>
-                    Exceptions <span class="badge"><?= $exceptionAsArrayCount; ?></span>
-                <?php } else { ?>
-                    Exception
-                <?php } ?>
-            </h3>
-
-            <div class="tab-content">
-                <?php
-                foreach ($exceptionAsArray as $i => $e) {
-                    echo $this->include('views/traces.html.php', [
-                        'exception' => $e,
-                        'index' => $i + 1,
-                        'expand' => in_array($i, $exceptionWithUserCode, true) || ([] === $exceptionWithUserCode && 0 === $i),
-                    ]);
-                }
-                ?>
-            </div>
-        </div>
-
-        <?php if ($logger) { ?>
-        <div class="tab <?= !$logger->getLogs() ? 'disabled' : ''; ?>">
-            <h3 class="tab-title">
-                Logs
-                <?php if ($logger->countErrors()) { ?><span class="badge status-error"><?= $logger->countErrors(); ?></span><?php } ?>
-            </h3>
-
-            <div class="tab-content">
-                <?php if ($logger->getLogs()) { ?>
-                    <?= $this->include('views/logs.html.php', ['logs' => $logger->getLogs()]); ?>
-                <?php } else { ?>
-                    <div class="empty">
-                        <p>No log messages</p>
-                    </div>
-                <?php } ?>
-            </div>
-        </div>
-        <?php } ?>
-
-        <div class="tab">
-            <h3 class="tab-title">
-                <?php if ($exceptionAsArrayCount > 1) { ?>
-                    Stack Traces <span class="badge"><?= $exceptionAsArrayCount; ?></span>
-                <?php } else { ?>
-                    Stack Trace
-                <?php } ?>
-            </h3>
-
-            <div class="tab-content">
-                <?php
-                foreach ($exceptionAsArray as $i => $e) {
-                    echo $this->include('views/traces_text.html.php', [
-                        'exception' => $e,
-                        'index' => $i + 1,
-                        'numExceptions' => $exceptionAsArrayCount,
-                    ]);
-                }
-                ?>
-            </div>
-        </div>
-
-        <?php if ($currentContent) { ?>
-        <div class="tab">
-            <h3 class="tab-title">Output content</h3>
-
-            <div class="tab-content">
-                <?= $currentContent; ?>
-            </div>
-        </div>
-        <?php } ?>
-    </div>
-</div>
diff --git a/vendor/symfony/error-handler/Resources/views/exception_full.html.php b/vendor/symfony/error-handler/Resources/views/exception_full.html.php
deleted file mode 100644
index 4d46d59de5ff008126c704a21361f24c2c6edba2..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/views/exception_full.html.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<!-- <?= $_message = sprintf('%s (%d %s)', $exceptionMessage, $statusCode, $statusText); ?> -->
-<!DOCTYPE html>
-<html lang="en">
-    <head>
-        <meta charset="<?= $this->charset; ?>" />
-        <meta name="robots" content="noindex,nofollow" />
-        <meta name="viewport" content="width=device-width,initial-scale=1" />
-        <title><?= $_message; ?></title>
-        <link rel="icon" type="image/png" href="<?= $this->include('assets/images/favicon.png.base64'); ?>">
-        <style><?= $this->include('assets/css/exception.css'); ?></style>
-        <style><?= $this->include('assets/css/exception_full.css'); ?></style>
-    </head>
-    <body>
-        <?php if (class_exists('Symfony\Component\HttpKernel\Kernel')) { ?>
-            <header>
-                <div class="container">
-                    <h1 class="logo"><?= $this->include('assets/images/symfony-logo.svg'); ?> Symfony Exception</h1>
-
-                    <div class="help-link">
-                        <a href="https://symfony.com/doc/<?= Symfony\Component\HttpKernel\Kernel::VERSION; ?>/index.html">
-                            <span class="icon"><?= $this->include('assets/images/icon-book.svg'); ?></span>
-                            <span class="hidden-xs-down">Symfony</span> Docs
-                        </a>
-                    </div>
-
-                    <div class="help-link">
-                        <a href="https://symfony.com/support">
-                            <span class="icon"><?= $this->include('assets/images/icon-support.svg'); ?></span>
-                            <span class="hidden-xs-down">Symfony</span> Support
-                        </a>
-                    </div>
-                </div>
-            </header>
-        <?php } ?>
-
-        <?= $this->include('views/exception.html.php', $context); ?>
-
-        <script>
-            <?= $this->include('assets/js/exception.js'); ?>
-        </script>
-    </body>
-</html>
-<!-- <?= $_message; ?> -->
diff --git a/vendor/symfony/error-handler/Resources/views/logs.html.php b/vendor/symfony/error-handler/Resources/views/logs.html.php
deleted file mode 100644
index f886200fb3b5bfa7da0dd073f484c87dff71416e..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/views/logs.html.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<table class="logs" data-filter-level="Emergency,Alert,Critical,Error,Warning,Notice,Info,Debug" data-filters>
-<?php $channelIsDefined = isset($logs[0]['channel']); ?>
-    <thead>
-        <tr>
-            <th data-filter="level">Level</th>
-            <?php if ($channelIsDefined) { ?><th data-filter="channel">Channel</th><?php } ?>
-            <th class="full-width">Message</th>
-        </tr>
-    </thead>
-
-    <tbody>
-    <?php
-    foreach ($logs as $log) {
-        if ($log['priority'] >= 400) {
-            $status = 'error';
-        } elseif ($log['priority'] >= 300) {
-            $status = 'warning';
-        } else {
-            $severity = 0;
-            if (($exception = $log['context']['exception'] ?? null) instanceof \ErrorException) {
-                $severity = $exception->getSeverity();
-            }
-            $status = \E_DEPRECATED === $severity || \E_USER_DEPRECATED === $severity ? 'warning' : 'normal';
-        } ?>
-        <tr class="status-<?= $status; ?>" data-filter-level="<?= strtolower($this->escape($log['priorityName'])); ?>"<?php if ($channelIsDefined) { ?> data-filter-channel="<?= $this->escape($log['channel']); ?>"<?php } ?>>
-            <td class="text-small" nowrap>
-                <span class="colored text-bold"><?= $this->escape($log['priorityName']); ?></span>
-                <span class="text-muted newline"><?= date('H:i:s', $log['timestamp']); ?></span>
-            </td>
-            <?php if ($channelIsDefined) { ?>
-            <td class="text-small text-bold nowrap">
-                <?= $this->escape($log['channel']); ?>
-            </td>
-            <?php } ?>
-            <td>
-                <?= $this->formatLogMessage($log['message'], $log['context']); ?>
-                <?php if ($log['context']) { ?>
-                <pre class="text-muted prewrap m-t-5"><?= $this->escape(json_encode($log['context'], \JSON_PRETTY_PRINT | \JSON_UNESCAPED_UNICODE | \JSON_UNESCAPED_SLASHES)); ?></pre>
-                <?php } ?>
-            </td>
-        </tr>
-    <?php
-    } ?>
-    </tbody>
-</table>
diff --git a/vendor/symfony/error-handler/Resources/views/trace.html.php b/vendor/symfony/error-handler/Resources/views/trace.html.php
deleted file mode 100644
index 6b4261f3f4e1521e9df74c0f92fa7745854c9cd4..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/views/trace.html.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<div class="trace-line-header break-long-words <?= $trace['file'] ? 'sf-toggle' : ''; ?>" data-toggle-selector="#trace-html-<?= $prefix; ?>-<?= $i; ?>" data-toggle-initial="<?= 'expanded' === $style ? 'display' : ''; ?>">
-    <?php if ($trace['file']) { ?>
-        <span class="icon icon-close"><?= $this->include('assets/images/icon-minus-square.svg'); ?></span>
-        <span class="icon icon-open"><?= $this->include('assets/images/icon-plus-square.svg'); ?></span>
-    <?php } ?>
-
-    <?php if ('compact' !== $style && $trace['function']) { ?>
-        <span class="trace-class"><?= $this->abbrClass($trace['class']); ?></span><?php if ($trace['type']) { ?><span class="trace-type"><?= $trace['type']; ?></span><?php } ?><span class="trace-method"><?= $trace['function']; ?></span><?php if (isset($trace['args'])) { ?><span class="trace-arguments">(<?= $this->formatArgs($trace['args']); ?>)</span><?php } ?>
-    <?php } ?>
-
-    <?php if ($trace['file']) { ?>
-        <?php
-        $lineNumber = $trace['line'] ?: 1;
-        $fileLink = $this->getFileLink($trace['file'], $lineNumber);
-        $filePath = strtr(strip_tags($this->formatFile($trace['file'], $lineNumber)), [' at line '.$lineNumber => '']);
-        $filePathParts = explode(\DIRECTORY_SEPARATOR, $filePath);
-        ?>
-        <span class="block trace-file-path">
-            in
-            <a href="<?= $fileLink; ?>">
-                <?= implode(\DIRECTORY_SEPARATOR, array_slice($filePathParts, 0, -1)).\DIRECTORY_SEPARATOR; ?><strong><?= end($filePathParts); ?></strong>
-            </a>
-            <?php if ('compact' === $style && $trace['function']) { ?>
-                <span class="trace-type"><?= $trace['type']; ?></span>
-                <span class="trace-method"><?= $trace['function']; ?></span>
-            <?php } ?>
-            (line <?= $lineNumber; ?>)
-        </span>
-    <?php } ?>
-</div>
-<?php if ($trace['file']) { ?>
-    <div id="trace-html-<?= $prefix.'-'.$i; ?>" class="trace-code sf-toggle-content">
-        <?= strtr($this->fileExcerpt($trace['file'], $trace['line'], 5), [
-            '#DD0000' => 'var(--highlight-string)',
-            '#007700' => 'var(--highlight-keyword)',
-            '#0000BB' => 'var(--highlight-default)',
-            '#FF8000' => 'var(--highlight-comment)',
-        ]); ?>
-    </div>
-<?php } ?>
diff --git a/vendor/symfony/error-handler/Resources/views/traces.html.php b/vendor/symfony/error-handler/Resources/views/traces.html.php
deleted file mode 100644
index d587b058e26bf6e9eb1f20fbc928dd27a96f1d30..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/views/traces.html.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<div class="trace trace-as-html" id="trace-box-<?= $index; ?>">
-    <div class="trace-details">
-        <div class="trace-head">
-            <span class="sf-toggle" data-toggle-selector="#trace-html-<?= $index; ?>" data-toggle-initial="<?= $expand ? 'display' : ''; ?>">
-                <h3 class="trace-class">
-                    <span class="icon icon-close"><?= $this->include('assets/images/icon-minus-square-o.svg'); ?></span>
-                    <span class="icon icon-open"><?= $this->include('assets/images/icon-plus-square-o.svg'); ?></span>
-
-                    <span class="trace-namespace">
-                        <?= implode('\\', array_slice(explode('\\', $exception['class']), 0, -1)); ?><?= count(explode('\\', $exception['class'])) > 1 ? '\\' : ''; ?>
-                    </span>
-                    <?= ($parts = explode('\\', $exception['class'])) ? end($parts) : ''; ?>
-                </h3>
-
-                <?php if ($exception['message'] && $index > 1) { ?>
-                    <p class="break-long-words trace-message"><?= $this->escape($exception['message']); ?></p>
-                <?php } ?>
-            </span>
-        </div>
-
-        <div id="trace-html-<?= $index; ?>" class="sf-toggle-content">
-        <?php
-        $isFirstUserCode = true;
-        foreach ($exception['trace'] as $i => $trace) {
-            $isVendorTrace = $trace['file'] && (false !== mb_strpos($trace['file'], '/vendor/') || false !== mb_strpos($trace['file'], '/var/cache/'));
-            $displayCodeSnippet = $isFirstUserCode && !$isVendorTrace;
-            if ($displayCodeSnippet) {
-                $isFirstUserCode = false;
-            } ?>
-            <div class="trace-line <?= $isVendorTrace ? 'trace-from-vendor' : ''; ?>">
-                <?= $this->include('views/trace.html.php', [
-                    'prefix' => $index,
-                    'i' => $i,
-                    'trace' => $trace,
-                    'style' => $isVendorTrace ? 'compact' : ($displayCodeSnippet ? 'expanded' : ''),
-                ]); ?>
-            </div>
-            <?php
-        } ?>
-        </div>
-    </div>
-</div>
diff --git a/vendor/symfony/error-handler/Resources/views/traces_text.html.php b/vendor/symfony/error-handler/Resources/views/traces_text.html.php
deleted file mode 100644
index a7090fbe8909eb1fbdc846215d4187766eb263dc..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/Resources/views/traces_text.html.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<table class="trace trace-as-text">
-    <thead class="trace-head">
-        <tr>
-            <th class="sf-toggle" data-toggle-selector="#trace-text-<?= $index; ?>" data-toggle-initial="<?= 1 === $index ? 'display' : ''; ?>">
-                <h3 class="trace-class">
-                    <?php if ($numExceptions > 1) { ?>
-                        <span class="text-muted">[<?= $numExceptions - $index + 1; ?>/<?= $numExceptions; ?>]</span>
-                    <?php } ?>
-                    <?= ($parts = explode('\\', $exception['class'])) ? end($parts) : ''; ?>
-                    <span class="icon icon-close"><?= $this->include('assets/images/icon-minus-square-o.svg'); ?></span>
-                    <span class="icon icon-open"><?= $this->include('assets/images/icon-plus-square-o.svg'); ?></span>
-                </h3>
-            </th>
-        </tr>
-    </thead>
-
-    <tbody id="trace-text-<?= $index; ?>">
-        <tr>
-            <td>
-                <?php if ($exception['trace']) { ?>
-                <pre class="stacktrace">
-<?php
-                    echo $this->escape($exception['class']).":\n";
-                    if ($exception['message']) {
-                        echo $this->escape($exception['message'])."\n";
-                    }
-
-                    foreach ($exception['trace'] as $trace) {
-                        echo "\n  ";
-                        if ($trace['function']) {
-                            echo $this->escape('at '.$trace['class'].$trace['type'].$trace['function']).'('.(isset($trace['args']) ? $this->formatArgsAsText($trace['args']) : '').')';
-                        }
-                        if ($trace['file'] && $trace['line']) {
-                            echo($trace['function'] ? "\n     (" : 'at ').strtr(strip_tags($this->formatFile($trace['file'], $trace['line'])), [' at line '.$trace['line'] => '']).':'.$trace['line'].($trace['function'] ? ')' : '');
-                        }
-                    }
-?>
-                </pre>
-                <?php } ?>
-            </td>
-        </tr>
-    </tbody>
-</table>
diff --git a/vendor/symfony/error-handler/ThrowableUtils.php b/vendor/symfony/error-handler/ThrowableUtils.php
deleted file mode 100644
index d6efcbefa0cc02f9a07471f3e756325676f9ae28..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/ThrowableUtils.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ErrorHandler;
-
-/**
- * @internal
- */
-class ThrowableUtils
-{
-    public static function getSeverity(\Throwable $throwable): int
-    {
-        if ($throwable instanceof \ErrorException) {
-            return $throwable->getSeverity();
-        }
-
-        if ($throwable instanceof \ParseError) {
-            return \E_PARSE;
-        }
-
-        if ($throwable instanceof \TypeError) {
-            return \E_RECOVERABLE_ERROR;
-        }
-
-        return \E_ERROR;
-    }
-}
diff --git a/vendor/symfony/error-handler/composer.json b/vendor/symfony/error-handler/composer.json
deleted file mode 100644
index 263e6f59e9a840c62745986f3352a403980b054b..0000000000000000000000000000000000000000
--- a/vendor/symfony/error-handler/composer.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-    "name": "symfony/error-handler",
-    "type": "library",
-    "description": "Symfony ErrorHandler Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1.3",
-        "psr/log": "~1.0",
-        "symfony/debug": "^4.4.5",
-        "symfony/polyfill-php80": "^1.15",
-        "symfony/var-dumper": "^4.4|^5.0"
-    },
-    "require-dev": {
-        "symfony/http-kernel": "^4.4|^5.0",
-        "symfony/serializer": "^4.4|^5.0"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\ErrorHandler\\": "" },
-        "exclude-from-classmap": [
-            "/Tests/"
-        ]
-    },
-    "minimum-stability": "dev"
-}
diff --git a/vendor/symfony/event-dispatcher-contracts/.gitignore b/vendor/symfony/event-dispatcher-contracts/.gitignore
deleted file mode 100644
index c49a5d8df5c6548379f00c77fe572a7217bce218..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher-contracts/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/event-dispatcher-contracts/Event.php b/vendor/symfony/event-dispatcher-contracts/Event.php
deleted file mode 100644
index 84f60f3ed0460ca1b1be1ba742b81c1a2a136e40..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher-contracts/Event.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\EventDispatcher;
-
-use Psr\EventDispatcher\StoppableEventInterface;
-
-if (interface_exists(StoppableEventInterface::class)) {
-    /**
-     * Event is the base class for classes containing event data.
-     *
-     * This class contains no event data. It is used by events that do not pass
-     * state information to an event handler when an event is raised.
-     *
-     * You can call the method stopPropagation() to abort the execution of
-     * further listeners in your event listener.
-     *
-     * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
-     * @author Jonathan Wage <jonwage@gmail.com>
-     * @author Roman Borschel <roman@code-factory.org>
-     * @author Bernhard Schussek <bschussek@gmail.com>
-     * @author Nicolas Grekas <p@tchwork.com>
-     */
-    class Event implements StoppableEventInterface
-    {
-        private $propagationStopped = false;
-
-        /**
-         * Returns whether further event listeners should be triggered.
-         */
-        public function isPropagationStopped(): bool
-        {
-            return $this->propagationStopped;
-        }
-
-        /**
-         * Stops the propagation of the event to further event listeners.
-         *
-         * If multiple event listeners are connected to the same event, no
-         * further event listener will be triggered once any trigger calls
-         * stopPropagation().
-         */
-        public function stopPropagation(): void
-        {
-            $this->propagationStopped = true;
-        }
-    }
-} else {
-    /**
-     * Event is the base class for classes containing event data.
-     *
-     * This class contains no event data. It is used by events that do not pass
-     * state information to an event handler when an event is raised.
-     *
-     * You can call the method stopPropagation() to abort the execution of
-     * further listeners in your event listener.
-     *
-     * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
-     * @author Jonathan Wage <jonwage@gmail.com>
-     * @author Roman Borschel <roman@code-factory.org>
-     * @author Bernhard Schussek <bschussek@gmail.com>
-     * @author Nicolas Grekas <p@tchwork.com>
-     */
-    class Event
-    {
-        private $propagationStopped = false;
-
-        /**
-         * Returns whether further event listeners should be triggered.
-         */
-        public function isPropagationStopped(): bool
-        {
-            return $this->propagationStopped;
-        }
-
-        /**
-         * Stops the propagation of the event to further event listeners.
-         *
-         * If multiple event listeners are connected to the same event, no
-         * further event listener will be triggered once any trigger calls
-         * stopPropagation().
-         */
-        public function stopPropagation(): void
-        {
-            $this->propagationStopped = true;
-        }
-    }
-}
diff --git a/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php b/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php
deleted file mode 100644
index 2d470af92006c4915440e95a6c90fedeb05b3f00..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\EventDispatcher;
-
-use Psr\EventDispatcher\EventDispatcherInterface as PsrEventDispatcherInterface;
-
-if (interface_exists(PsrEventDispatcherInterface::class)) {
-    /**
-     * Allows providing hooks on domain-specific lifecycles by dispatching events.
-     */
-    interface EventDispatcherInterface extends PsrEventDispatcherInterface
-    {
-        /**
-         * Dispatches an event to all registered listeners.
-         *
-         * For BC with Symfony 4, the $eventName argument is not declared explicitly on the
-         * signature of the method. Implementations that are not bound by this BC constraint
-         * MUST declare it explicitly, as allowed by PHP.
-         *
-         * @param object      $event     The event to pass to the event handlers/listeners
-         * @param string|null $eventName The name of the event to dispatch. If not supplied,
-         *                               the class of $event should be used instead.
-         *
-         * @return object The passed $event MUST be returned
-         */
-        public function dispatch($event/*, string $eventName = null*/);
-    }
-} else {
-    /**
-     * Allows providing hooks on domain-specific lifecycles by dispatching events.
-     */
-    interface EventDispatcherInterface
-    {
-        /**
-         * Dispatches an event to all registered listeners.
-         *
-         * For BC with Symfony 4, the $eventName argument is not declared explicitly on the
-         * signature of the method. Implementations that are not bound by this BC constraint
-         * MUST declare it explicitly, as allowed by PHP.
-         *
-         * @param object      $event     The event to pass to the event handlers/listeners
-         * @param string|null $eventName The name of the event to dispatch. If not supplied,
-         *                               the class of $event should be used instead.
-         *
-         * @return object The passed $event MUST be returned
-         */
-        public function dispatch($event/*, string $eventName = null*/);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher-contracts/LICENSE b/vendor/symfony/event-dispatcher-contracts/LICENSE
deleted file mode 100644
index 69d925ba7511e664a16b2af1fabce06b8767455d..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher-contracts/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2018-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/event-dispatcher-contracts/README.md b/vendor/symfony/event-dispatcher-contracts/README.md
deleted file mode 100644
index fb051c73fc74eae97b6f896f051955aa08f7ea38..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher-contracts/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Symfony EventDispatcher Contracts
-=================================
-
-A set of abstractions extracted out of the Symfony components.
-
-Can be used to build on semantics that the Symfony components proved useful - and
-that already have battle tested implementations.
-
-See https://github.com/symfony/contracts/blob/master/README.md for more information.
diff --git a/vendor/symfony/event-dispatcher-contracts/composer.json b/vendor/symfony/event-dispatcher-contracts/composer.json
deleted file mode 100644
index 862c2565f08f12c90a789ff7916e460b1020ed7a..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher-contracts/composer.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-    "name": "symfony/event-dispatcher-contracts",
-    "type": "library",
-    "description": "Generic abstractions related to dispatching event",
-    "keywords": ["abstractions", "contracts", "decoupling", "interfaces", "interoperability", "standards"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Nicolas Grekas",
-            "email": "p@tchwork.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1.3"
-    },
-    "suggest": {
-        "psr/event-dispatcher": "",
-        "symfony/event-dispatcher-implementation": ""
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Contracts\\EventDispatcher\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.1-dev"
-        },
-        "thanks": {
-            "name": "symfony/contracts",
-            "url": "https://github.com/symfony/contracts"
-        }
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/CHANGELOG.md b/vendor/symfony/event-dispatcher/CHANGELOG.md
deleted file mode 100644
index 54fd04227b36c41d668dd19092af969c4d7c4863..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/CHANGELOG.md
+++ /dev/null
@@ -1,67 +0,0 @@
-CHANGELOG
-=========
-
-4.4.0
------
-
- * `AddEventAliasesPass` has been added, allowing applications and bundles to extend the event alias mapping used by `RegisterListenersPass`.
- * Made the `event` attribute of the `kernel.event_listener` tag optional for FQCN events.
-
-4.3.0
------
-
- * The signature of the `EventDispatcherInterface::dispatch()` method should be updated to `dispatch($event, string $eventName = null)`, not doing so is deprecated
- * deprecated the `Event` class, use `Symfony\Contracts\EventDispatcher\Event` instead
-
-4.1.0
------
-
- * added support for invokable event listeners tagged with `kernel.event_listener` by default
- * The `TraceableEventDispatcher::getOrphanedEvents()` method has been added.
- * The `TraceableEventDispatcherInterface` has been deprecated.
-
-4.0.0
------
-
- * removed the `ContainerAwareEventDispatcher` class
- * added the `reset()` method to the `TraceableEventDispatcherInterface`
-
-3.4.0
------
-
-  * Implementing `TraceableEventDispatcherInterface` without the `reset()` method has been deprecated.
-
-3.3.0
------
-
-  * The ContainerAwareEventDispatcher class has been deprecated. Use EventDispatcher with closure factories instead.
-
-3.0.0
------
-
-  * The method `getListenerPriority($eventName, $listener)` has been added to the
-    `EventDispatcherInterface`.
-  * The methods `Event::setDispatcher()`, `Event::getDispatcher()`, `Event::setName()`
-    and `Event::getName()` have been removed.
-    The event dispatcher and the event name are passed to the listener call.
-
-2.5.0
------
-
- * added Debug\TraceableEventDispatcher (originally in HttpKernel)
- * changed Debug\TraceableEventDispatcherInterface to extend EventDispatcherInterface
- * added RegisterListenersPass (originally in HttpKernel)
-
-2.1.0
------
-
- * added TraceableEventDispatcherInterface
- * added ContainerAwareEventDispatcher
- * added a reference to the EventDispatcher on the Event
- * added a reference to the Event name on the event
- * added fluid interface to the dispatch() method which now returns the Event
-   object
- * added GenericEvent event class
- * added the possibility for subscribers to subscribe several times for the
-   same event
- * added ImmutableEventDispatcher
diff --git a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
deleted file mode 100644
index d320a2620be4a629589f603977bf06469ef6715f..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
+++ /dev/null
@@ -1,407 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Debug;
-
-use Psr\EventDispatcher\StoppableEventInterface;
-use Psr\Log\LoggerInterface;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy;
-use Symfony\Component\EventDispatcher\LegacyEventProxy;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\Stopwatch\Stopwatch;
-use Symfony\Contracts\EventDispatcher\Event as ContractsEvent;
-
-/**
- * Collects some data about event listeners.
- *
- * This event dispatcher delegates the dispatching to another one.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TraceableEventDispatcher implements TraceableEventDispatcherInterface
-{
-    protected $logger;
-    protected $stopwatch;
-
-    private $callStack;
-    private $dispatcher;
-    private $wrappedListeners;
-    private $orphanedEvents;
-    private $requestStack;
-    private $currentRequestHash = '';
-
-    public function __construct(EventDispatcherInterface $dispatcher, Stopwatch $stopwatch, LoggerInterface $logger = null, RequestStack $requestStack = null)
-    {
-        $this->dispatcher = LegacyEventDispatcherProxy::decorate($dispatcher);
-        $this->stopwatch = $stopwatch;
-        $this->logger = $logger;
-        $this->wrappedListeners = [];
-        $this->orphanedEvents = [];
-        $this->requestStack = $requestStack;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addListener($eventName, $listener, $priority = 0)
-    {
-        $this->dispatcher->addListener($eventName, $listener, $priority);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSubscriber(EventSubscriberInterface $subscriber)
-    {
-        $this->dispatcher->addSubscriber($subscriber);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeListener($eventName, $listener)
-    {
-        if (isset($this->wrappedListeners[$eventName])) {
-            foreach ($this->wrappedListeners[$eventName] as $index => $wrappedListener) {
-                if ($wrappedListener->getWrappedListener() === $listener) {
-                    $listener = $wrappedListener;
-                    unset($this->wrappedListeners[$eventName][$index]);
-                    break;
-                }
-            }
-        }
-
-        return $this->dispatcher->removeListener($eventName, $listener);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeSubscriber(EventSubscriberInterface $subscriber)
-    {
-        return $this->dispatcher->removeSubscriber($subscriber);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListeners($eventName = null)
-    {
-        return $this->dispatcher->getListeners($eventName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListenerPriority($eventName, $listener)
-    {
-        // we might have wrapped listeners for the event (if called while dispatching)
-        // in that case get the priority by wrapper
-        if (isset($this->wrappedListeners[$eventName])) {
-            foreach ($this->wrappedListeners[$eventName] as $index => $wrappedListener) {
-                if ($wrappedListener->getWrappedListener() === $listener) {
-                    return $this->dispatcher->getListenerPriority($eventName, $wrappedListener);
-                }
-            }
-        }
-
-        return $this->dispatcher->getListenerPriority($eventName, $listener);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasListeners($eventName = null)
-    {
-        return $this->dispatcher->hasListeners($eventName);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param string|null $eventName
-     */
-    public function dispatch($event/*, string $eventName = null*/)
-    {
-        if (null === $this->callStack) {
-            $this->callStack = new \SplObjectStorage();
-        }
-
-        $currentRequestHash = $this->currentRequestHash = $this->requestStack && ($request = $this->requestStack->getCurrentRequest()) ? spl_object_hash($request) : '';
-        $eventName = 1 < \func_num_args() ? func_get_arg(1) : null;
-
-        if (\is_object($event)) {
-            $eventName = $eventName ?? \get_class($event);
-        } else {
-            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as first argument is deprecated since Symfony 4.3, pass it second and provide the event object first instead.', EventDispatcherInterface::class), \E_USER_DEPRECATED);
-            $swap = $event;
-            $event = $eventName ?? new Event();
-            $eventName = $swap;
-
-            if (!$event instanceof Event) {
-                throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an instance of "%s", "%s" given.', EventDispatcherInterface::class, Event::class, \is_object($event) ? \get_class($event) : \gettype($event)));
-            }
-        }
-
-        if (null !== $this->logger && ($event instanceof Event || $event instanceof ContractsEvent || $event instanceof StoppableEventInterface) && $event->isPropagationStopped()) {
-            $this->logger->debug(sprintf('The "%s" event is already stopped. No listeners have been called.', $eventName));
-        }
-
-        $this->preProcess($eventName);
-        try {
-            $this->beforeDispatch($eventName, $event);
-            try {
-                $e = $this->stopwatch->start($eventName, 'section');
-                try {
-                    $this->dispatcher->dispatch($event, $eventName);
-                } finally {
-                    if ($e->isStarted()) {
-                        $e->stop();
-                    }
-                }
-            } finally {
-                $this->afterDispatch($eventName, $event);
-            }
-        } finally {
-            $this->currentRequestHash = $currentRequestHash;
-            $this->postProcess($eventName);
-        }
-
-        return $event;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param Request|null $request The request to get listeners for
-     */
-    public function getCalledListeners(/* Request $request = null */)
-    {
-        if (null === $this->callStack) {
-            return [];
-        }
-
-        $hash = 1 <= \func_num_args() && null !== ($request = func_get_arg(0)) ? spl_object_hash($request) : null;
-        $called = [];
-        foreach ($this->callStack as $listener) {
-            list($eventName, $requestHash) = $this->callStack->getInfo();
-            if (null === $hash || $hash === $requestHash) {
-                $called[] = $listener->getInfo($eventName);
-            }
-        }
-
-        return $called;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param Request|null $request The request to get listeners for
-     */
-    public function getNotCalledListeners(/* Request $request = null */)
-    {
-        try {
-            $allListeners = $this->getListeners();
-        } catch (\Exception $e) {
-            if (null !== $this->logger) {
-                $this->logger->info('An exception was thrown while getting the uncalled listeners.', ['exception' => $e]);
-            }
-
-            // unable to retrieve the uncalled listeners
-            return [];
-        }
-
-        $hash = 1 <= \func_num_args() && null !== ($request = func_get_arg(0)) ? spl_object_hash($request) : null;
-        $calledListeners = [];
-
-        if (null !== $this->callStack) {
-            foreach ($this->callStack as $calledListener) {
-                list(, $requestHash) = $this->callStack->getInfo();
-
-                if (null === $hash || $hash === $requestHash) {
-                    $calledListeners[] = $calledListener->getWrappedListener();
-                }
-            }
-        }
-
-        $notCalled = [];
-        foreach ($allListeners as $eventName => $listeners) {
-            foreach ($listeners as $listener) {
-                if (!\in_array($listener, $calledListeners, true)) {
-                    if (!$listener instanceof WrappedListener) {
-                        $listener = new WrappedListener($listener, null, $this->stopwatch, $this);
-                    }
-                    $notCalled[] = $listener->getInfo($eventName);
-                }
-            }
-        }
-
-        uasort($notCalled, [$this, 'sortNotCalledListeners']);
-
-        return $notCalled;
-    }
-
-    /**
-     * @param Request|null $request The request to get orphaned events for
-     */
-    public function getOrphanedEvents(/* Request $request = null */): array
-    {
-        if (1 <= \func_num_args() && null !== $request = func_get_arg(0)) {
-            return $this->orphanedEvents[spl_object_hash($request)] ?? [];
-        }
-
-        if (!$this->orphanedEvents) {
-            return [];
-        }
-
-        return array_merge(...array_values($this->orphanedEvents));
-    }
-
-    public function reset()
-    {
-        $this->callStack = null;
-        $this->orphanedEvents = [];
-        $this->currentRequestHash = '';
-    }
-
-    /**
-     * Proxies all method calls to the original event dispatcher.
-     *
-     * @param string $method    The method name
-     * @param array  $arguments The method arguments
-     *
-     * @return mixed
-     */
-    public function __call($method, $arguments)
-    {
-        return $this->dispatcher->{$method}(...$arguments);
-    }
-
-    /**
-     * Called before dispatching the event.
-     *
-     * @param object $event
-     */
-    protected function beforeDispatch(string $eventName, $event)
-    {
-        $this->preDispatch($eventName, $event instanceof Event ? $event : new LegacyEventProxy($event));
-    }
-
-    /**
-     * Called after dispatching the event.
-     *
-     * @param object $event
-     */
-    protected function afterDispatch(string $eventName, $event)
-    {
-        $this->postDispatch($eventName, $event instanceof Event ? $event : new LegacyEventProxy($event));
-    }
-
-    /**
-     * @deprecated since Symfony 4.3, will be removed in 5.0, use beforeDispatch instead
-     */
-    protected function preDispatch($eventName, Event $event)
-    {
-    }
-
-    /**
-     * @deprecated since Symfony 4.3, will be removed in 5.0, use afterDispatch instead
-     */
-    protected function postDispatch($eventName, Event $event)
-    {
-    }
-
-    private function preProcess(string $eventName)
-    {
-        if (!$this->dispatcher->hasListeners($eventName)) {
-            $this->orphanedEvents[$this->currentRequestHash][] = $eventName;
-
-            return;
-        }
-
-        foreach ($this->dispatcher->getListeners($eventName) as $listener) {
-            $priority = $this->getListenerPriority($eventName, $listener);
-            $wrappedListener = new WrappedListener($listener instanceof WrappedListener ? $listener->getWrappedListener() : $listener, null, $this->stopwatch, $this);
-            $this->wrappedListeners[$eventName][] = $wrappedListener;
-            $this->dispatcher->removeListener($eventName, $listener);
-            $this->dispatcher->addListener($eventName, $wrappedListener, $priority);
-            $this->callStack->attach($wrappedListener, [$eventName, $this->currentRequestHash]);
-        }
-    }
-
-    private function postProcess(string $eventName)
-    {
-        unset($this->wrappedListeners[$eventName]);
-        $skipped = false;
-        foreach ($this->dispatcher->getListeners($eventName) as $listener) {
-            if (!$listener instanceof WrappedListener) { // #12845: a new listener was added during dispatch.
-                continue;
-            }
-            // Unwrap listener
-            $priority = $this->getListenerPriority($eventName, $listener);
-            $this->dispatcher->removeListener($eventName, $listener);
-            $this->dispatcher->addListener($eventName, $listener->getWrappedListener(), $priority);
-
-            if (null !== $this->logger) {
-                $context = ['event' => $eventName, 'listener' => $listener->getPretty()];
-            }
-
-            if ($listener->wasCalled()) {
-                if (null !== $this->logger) {
-                    $this->logger->debug('Notified event "{event}" to listener "{listener}".', $context);
-                }
-            } else {
-                $this->callStack->detach($listener);
-            }
-
-            if (null !== $this->logger && $skipped) {
-                $this->logger->debug('Listener "{listener}" was not called for event "{event}".', $context);
-            }
-
-            if ($listener->stoppedPropagation()) {
-                if (null !== $this->logger) {
-                    $this->logger->debug('Listener "{listener}" stopped propagation of the event "{event}".', $context);
-                }
-
-                $skipped = true;
-            }
-        }
-    }
-
-    private function sortNotCalledListeners(array $a, array $b)
-    {
-        if (0 !== $cmp = strcmp($a['event'], $b['event'])) {
-            return $cmp;
-        }
-
-        if (\is_int($a['priority']) && !\is_int($b['priority'])) {
-            return 1;
-        }
-
-        if (!\is_int($a['priority']) && \is_int($b['priority'])) {
-            return -1;
-        }
-
-        if ($a['priority'] === $b['priority']) {
-            return 0;
-        }
-
-        if ($a['priority'] > $b['priority']) {
-            return -1;
-        }
-
-        return 1;
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php
deleted file mode 100644
index 4fedb9a413a3bd1fdbcbb83c276e5e889195d6d6..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Debug;
-
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Contracts\Service\ResetInterface;
-
-/**
- * @deprecated since Symfony 4.1
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface TraceableEventDispatcherInterface extends EventDispatcherInterface, ResetInterface
-{
-    /**
-     * Gets the called listeners.
-     *
-     * @param Request|null $request The request to get listeners for
-     *
-     * @return array An array of called listeners
-     */
-    public function getCalledListeners(/* Request $request = null */);
-
-    /**
-     * Gets the not called listeners.
-     *
-     * @param Request|null $request The request to get listeners for
-     *
-     * @return array An array of not called listeners
-     */
-    public function getNotCalledListeners(/* Request $request = null */);
-}
diff --git a/vendor/symfony/event-dispatcher/Debug/WrappedListener.php b/vendor/symfony/event-dispatcher/Debug/WrappedListener.php
deleted file mode 100644
index e047639081c78173175af0af1836d4af4f2c47d3..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Debug/WrappedListener.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Debug;
-
-use Psr\EventDispatcher\StoppableEventInterface;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\LegacyEventProxy;
-use Symfony\Component\Stopwatch\Stopwatch;
-use Symfony\Component\VarDumper\Caster\ClassStub;
-use Symfony\Contracts\EventDispatcher\Event as ContractsEvent;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.3: the "Event" type-hint on __invoke() will be replaced by "object" in 5.0
- */
-class WrappedListener
-{
-    private $listener;
-    private $optimizedListener;
-    private $name;
-    private $called;
-    private $stoppedPropagation;
-    private $stopwatch;
-    private $dispatcher;
-    private $pretty;
-    private $stub;
-    private $priority;
-    private static $hasClassStub;
-
-    public function __construct($listener, ?string $name, Stopwatch $stopwatch, EventDispatcherInterface $dispatcher = null)
-    {
-        $this->listener = $listener;
-        $this->optimizedListener = $listener instanceof \Closure ? $listener : (\is_callable($listener) ? \Closure::fromCallable($listener) : null);
-        $this->stopwatch = $stopwatch;
-        $this->dispatcher = $dispatcher;
-        $this->called = false;
-        $this->stoppedPropagation = false;
-
-        if (\is_array($listener)) {
-            $this->name = \is_object($listener[0]) ? \get_class($listener[0]) : $listener[0];
-            $this->pretty = $this->name.'::'.$listener[1];
-        } elseif ($listener instanceof \Closure) {
-            $r = new \ReflectionFunction($listener);
-            if (false !== strpos($r->name, '{closure}')) {
-                $this->pretty = $this->name = 'closure';
-            } elseif ($class = $r->getClosureScopeClass()) {
-                $this->name = $class->name;
-                $this->pretty = $this->name.'::'.$r->name;
-            } else {
-                $this->pretty = $this->name = $r->name;
-            }
-        } elseif (\is_string($listener)) {
-            $this->pretty = $this->name = $listener;
-        } else {
-            $this->name = \get_class($listener);
-            $this->pretty = $this->name.'::__invoke';
-        }
-
-        if (null !== $name) {
-            $this->name = $name;
-        }
-
-        if (null === self::$hasClassStub) {
-            self::$hasClassStub = class_exists(ClassStub::class);
-        }
-    }
-
-    public function getWrappedListener()
-    {
-        return $this->listener;
-    }
-
-    public function wasCalled()
-    {
-        return $this->called;
-    }
-
-    public function stoppedPropagation()
-    {
-        return $this->stoppedPropagation;
-    }
-
-    public function getPretty()
-    {
-        return $this->pretty;
-    }
-
-    public function getInfo($eventName)
-    {
-        if (null === $this->stub) {
-            $this->stub = self::$hasClassStub ? new ClassStub($this->pretty.'()', $this->listener) : $this->pretty.'()';
-        }
-
-        return [
-            'event' => $eventName,
-            'priority' => null !== $this->priority ? $this->priority : (null !== $this->dispatcher ? $this->dispatcher->getListenerPriority($eventName, $this->listener) : null),
-            'pretty' => $this->pretty,
-            'stub' => $this->stub,
-        ];
-    }
-
-    public function __invoke(Event $event, $eventName, EventDispatcherInterface $dispatcher)
-    {
-        if ($event instanceof LegacyEventProxy) {
-            $event = $event->getEvent();
-        }
-
-        $dispatcher = $this->dispatcher ?: $dispatcher;
-
-        $this->called = true;
-        $this->priority = $dispatcher->getListenerPriority($eventName, $this->listener);
-
-        $e = $this->stopwatch->start($this->name, 'event_listener');
-
-        ($this->optimizedListener ?? $this->listener)($event, $eventName, $dispatcher);
-
-        if ($e->isStarted()) {
-            $e->stop();
-        }
-
-        if (($event instanceof Event || $event instanceof ContractsEvent || $event instanceof StoppableEventInterface) && $event->isPropagationStopped()) {
-            $this->stoppedPropagation = true;
-        }
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php b/vendor/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php
deleted file mode 100644
index c4ea50f7868ed50e14ec1ea22954d71d8e14688e..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * This pass allows bundles to extend the list of event aliases.
- *
- * @author Alexander M. Turek <me@derrabus.de>
- */
-class AddEventAliasesPass implements CompilerPassInterface
-{
-    private $eventAliases;
-    private $eventAliasesParameter;
-
-    public function __construct(array $eventAliases, string $eventAliasesParameter = 'event_dispatcher.event_aliases')
-    {
-        $this->eventAliases = $eventAliases;
-        $this->eventAliasesParameter = $eventAliasesParameter;
-    }
-
-    public function process(ContainerBuilder $container): void
-    {
-        $eventAliases = $container->hasParameter($this->eventAliasesParameter) ? $container->getParameter($this->eventAliasesParameter) : [];
-
-        $container->setParameter(
-            $this->eventAliasesParameter,
-            array_merge($eventAliases, $this->eventAliases)
-        );
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php b/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php
deleted file mode 100644
index 4b27d3b23aef43c0420802bb0accdd09a7d197cd..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php
+++ /dev/null
@@ -1,178 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\EventDispatcher\Event as LegacyEvent;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Contracts\EventDispatcher\Event;
-
-/**
- * Compiler pass to register tagged services for an event dispatcher.
- */
-class RegisterListenersPass implements CompilerPassInterface
-{
-    protected $dispatcherService;
-    protected $listenerTag;
-    protected $subscriberTag;
-    protected $eventAliasesParameter;
-
-    private $hotPathEvents = [];
-    private $hotPathTagName;
-
-    public function __construct(string $dispatcherService = 'event_dispatcher', string $listenerTag = 'kernel.event_listener', string $subscriberTag = 'kernel.event_subscriber', string $eventAliasesParameter = 'event_dispatcher.event_aliases')
-    {
-        $this->dispatcherService = $dispatcherService;
-        $this->listenerTag = $listenerTag;
-        $this->subscriberTag = $subscriberTag;
-        $this->eventAliasesParameter = $eventAliasesParameter;
-    }
-
-    public function setHotPathEvents(array $hotPathEvents, $tagName = 'container.hot_path')
-    {
-        $this->hotPathEvents = array_flip($hotPathEvents);
-        $this->hotPathTagName = $tagName;
-
-        return $this;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        if (!$container->hasDefinition($this->dispatcherService) && !$container->hasAlias($this->dispatcherService)) {
-            return;
-        }
-
-        $aliases = [];
-
-        if ($container->hasParameter($this->eventAliasesParameter)) {
-            $aliases = $container->getParameter($this->eventAliasesParameter);
-        }
-
-        $definition = $container->findDefinition($this->dispatcherService);
-
-        foreach ($container->findTaggedServiceIds($this->listenerTag, true) as $id => $events) {
-            foreach ($events as $event) {
-                $priority = isset($event['priority']) ? $event['priority'] : 0;
-
-                if (!isset($event['event'])) {
-                    if ($container->getDefinition($id)->hasTag($this->subscriberTag)) {
-                        continue;
-                    }
-
-                    $event['method'] = $event['method'] ?? '__invoke';
-                    $event['event'] = $this->getEventFromTypeDeclaration($container, $id, $event['method']);
-                }
-
-                $event['event'] = $aliases[$event['event']] ?? $event['event'];
-
-                if (!isset($event['method'])) {
-                    $event['method'] = 'on'.preg_replace_callback([
-                        '/(?<=\b)[a-z]/i',
-                        '/[^a-z0-9]/i',
-                    ], function ($matches) { return strtoupper($matches[0]); }, $event['event']);
-                    $event['method'] = preg_replace('/[^a-z0-9]/i', '', $event['method']);
-
-                    if (null !== ($class = $container->getDefinition($id)->getClass()) && ($r = $container->getReflectionClass($class, false)) && !$r->hasMethod($event['method']) && $r->hasMethod('__invoke')) {
-                        $event['method'] = '__invoke';
-                    }
-                }
-
-                $definition->addMethodCall('addListener', [$event['event'], [new ServiceClosureArgument(new Reference($id)), $event['method']], $priority]);
-
-                if (isset($this->hotPathEvents[$event['event']])) {
-                    $container->getDefinition($id)->addTag($this->hotPathTagName);
-                }
-            }
-        }
-
-        $extractingDispatcher = new ExtractingEventDispatcher();
-
-        foreach ($container->findTaggedServiceIds($this->subscriberTag, true) as $id => $attributes) {
-            $def = $container->getDefinition($id);
-
-            // We must assume that the class value has been correctly filled, even if the service is created by a factory
-            $class = $def->getClass();
-
-            if (!$r = $container->getReflectionClass($class)) {
-                throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id));
-            }
-            if (!$r->isSubclassOf(EventSubscriberInterface::class)) {
-                throw new InvalidArgumentException(sprintf('Service "%s" must implement interface "%s".', $id, EventSubscriberInterface::class));
-            }
-            $class = $r->name;
-
-            ExtractingEventDispatcher::$aliases = $aliases;
-            ExtractingEventDispatcher::$subscriber = $class;
-            $extractingDispatcher->addSubscriber($extractingDispatcher);
-            foreach ($extractingDispatcher->listeners as $args) {
-                $args[1] = [new ServiceClosureArgument(new Reference($id)), $args[1]];
-                $definition->addMethodCall('addListener', $args);
-
-                if (isset($this->hotPathEvents[$args[0]])) {
-                    $container->getDefinition($id)->addTag($this->hotPathTagName);
-                }
-            }
-            $extractingDispatcher->listeners = [];
-            ExtractingEventDispatcher::$aliases = [];
-        }
-    }
-
-    private function getEventFromTypeDeclaration(ContainerBuilder $container, string $id, string $method): string
-    {
-        if (
-            null === ($class = $container->getDefinition($id)->getClass())
-            || !($r = $container->getReflectionClass($class, false))
-            || !$r->hasMethod($method)
-            || 1 > ($m = $r->getMethod($method))->getNumberOfParameters()
-            || !($type = $m->getParameters()[0]->getType()) instanceof \ReflectionNamedType
-            || $type->isBuiltin()
-            || Event::class === ($name = $type->getName())
-            || LegacyEvent::class === $name
-        ) {
-            throw new InvalidArgumentException(sprintf('Service "%s" must define the "event" attribute on "%s" tags.', $id, $this->listenerTag));
-        }
-
-        return $name;
-    }
-}
-
-/**
- * @internal
- */
-class ExtractingEventDispatcher extends EventDispatcher implements EventSubscriberInterface
-{
-    public $listeners = [];
-
-    public static $aliases = [];
-    public static $subscriber;
-
-    public function addListener($eventName, $listener, $priority = 0)
-    {
-        $this->listeners[] = [$eventName, $listener[1], $priority];
-    }
-
-    public static function getSubscribedEvents(): array
-    {
-        $events = [];
-
-        foreach ([self::$subscriber, 'getSubscribedEvents']() as $eventName => $params) {
-            $events[self::$aliases[$eventName] ?? $eventName] = $params;
-        }
-
-        return $events;
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Event.php b/vendor/symfony/event-dispatcher/Event.php
deleted file mode 100644
index 307c4be5de0c2ff126834043eb4324b5c6fc92f3..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Event.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher;
-
-/**
- * @deprecated since Symfony 4.3, use "Symfony\Contracts\EventDispatcher\Event" instead
- */
-class Event
-{
-    private $propagationStopped = false;
-
-    /**
-     * @return bool Whether propagation was already stopped for this event
-     *
-     * @deprecated since Symfony 4.3, use "Symfony\Contracts\EventDispatcher\Event" instead
-     */
-    public function isPropagationStopped()
-    {
-        return $this->propagationStopped;
-    }
-
-    /**
-     * @deprecated since Symfony 4.3, use "Symfony\Contracts\EventDispatcher\Event" instead
-     */
-    public function stopPropagation()
-    {
-        $this->propagationStopped = true;
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/EventDispatcher.php b/vendor/symfony/event-dispatcher/EventDispatcher.php
deleted file mode 100644
index d22bcea1f8757519d8639d82b4d1cc2a763fadc5..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/EventDispatcher.php
+++ /dev/null
@@ -1,314 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher;
-
-use Psr\EventDispatcher\StoppableEventInterface;
-use Symfony\Component\EventDispatcher\Debug\WrappedListener;
-use Symfony\Contracts\EventDispatcher\Event as ContractsEvent;
-
-/**
- * The EventDispatcherInterface is the central point of Symfony's event listener system.
- *
- * Listeners are registered on the manager and events are dispatched through the
- * manager.
- *
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author Bernhard Schussek <bschussek@gmail.com>
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Jordi Boggiano <j.boggiano@seld.be>
- * @author Jordan Alliot <jordan.alliot@gmail.com>
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class EventDispatcher implements EventDispatcherInterface
-{
-    private $listeners = [];
-    private $sorted = [];
-    private $optimized;
-
-    public function __construct()
-    {
-        if (__CLASS__ === static::class) {
-            $this->optimized = [];
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param string|null $eventName
-     */
-    public function dispatch($event/*, string $eventName = null*/)
-    {
-        $eventName = 1 < \func_num_args() ? func_get_arg(1) : null;
-
-        if (\is_object($event)) {
-            $eventName = $eventName ?? \get_class($event);
-        } elseif (\is_string($event) && (null === $eventName || $eventName instanceof ContractsEvent || $eventName instanceof Event)) {
-            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', EventDispatcherInterface::class), \E_USER_DEPRECATED);
-            $swap = $event;
-            $event = $eventName ?? new Event();
-            $eventName = $swap;
-        } else {
-            throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, "%s" given.', EventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event)));
-        }
-
-        if (null !== $this->optimized && null !== $eventName) {
-            $listeners = $this->optimized[$eventName] ?? (empty($this->listeners[$eventName]) ? [] : $this->optimizeListeners($eventName));
-        } else {
-            $listeners = $this->getListeners($eventName);
-        }
-
-        if ($listeners) {
-            $this->callListeners($listeners, $eventName, $event);
-        }
-
-        return $event;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListeners($eventName = null)
-    {
-        if (null !== $eventName) {
-            if (empty($this->listeners[$eventName])) {
-                return [];
-            }
-
-            if (!isset($this->sorted[$eventName])) {
-                $this->sortListeners($eventName);
-            }
-
-            return $this->sorted[$eventName];
-        }
-
-        foreach ($this->listeners as $eventName => $eventListeners) {
-            if (!isset($this->sorted[$eventName])) {
-                $this->sortListeners($eventName);
-            }
-        }
-
-        return array_filter($this->sorted);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListenerPriority($eventName, $listener)
-    {
-        if (empty($this->listeners[$eventName])) {
-            return null;
-        }
-
-        if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
-            $listener[0] = $listener[0]();
-            $listener[1] = $listener[1] ?? '__invoke';
-        }
-
-        foreach ($this->listeners[$eventName] as $priority => &$listeners) {
-            foreach ($listeners as &$v) {
-                if ($v !== $listener && \is_array($v) && isset($v[0]) && $v[0] instanceof \Closure && 2 >= \count($v)) {
-                    $v[0] = $v[0]();
-                    $v[1] = $v[1] ?? '__invoke';
-                }
-                if ($v === $listener) {
-                    return $priority;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasListeners($eventName = null)
-    {
-        if (null !== $eventName) {
-            return !empty($this->listeners[$eventName]);
-        }
-
-        foreach ($this->listeners as $eventListeners) {
-            if ($eventListeners) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addListener($eventName, $listener, $priority = 0)
-    {
-        $this->listeners[$eventName][$priority][] = $listener;
-        unset($this->sorted[$eventName], $this->optimized[$eventName]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeListener($eventName, $listener)
-    {
-        if (empty($this->listeners[$eventName])) {
-            return;
-        }
-
-        if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
-            $listener[0] = $listener[0]();
-            $listener[1] = $listener[1] ?? '__invoke';
-        }
-
-        foreach ($this->listeners[$eventName] as $priority => &$listeners) {
-            foreach ($listeners as $k => &$v) {
-                if ($v !== $listener && \is_array($v) && isset($v[0]) && $v[0] instanceof \Closure && 2 >= \count($v)) {
-                    $v[0] = $v[0]();
-                    $v[1] = $v[1] ?? '__invoke';
-                }
-                if ($v === $listener) {
-                    unset($listeners[$k], $this->sorted[$eventName], $this->optimized[$eventName]);
-                }
-            }
-
-            if (!$listeners) {
-                unset($this->listeners[$eventName][$priority]);
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSubscriber(EventSubscriberInterface $subscriber)
-    {
-        foreach ($subscriber->getSubscribedEvents() as $eventName => $params) {
-            if (\is_string($params)) {
-                $this->addListener($eventName, [$subscriber, $params]);
-            } elseif (\is_string($params[0])) {
-                $this->addListener($eventName, [$subscriber, $params[0]], isset($params[1]) ? $params[1] : 0);
-            } else {
-                foreach ($params as $listener) {
-                    $this->addListener($eventName, [$subscriber, $listener[0]], isset($listener[1]) ? $listener[1] : 0);
-                }
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeSubscriber(EventSubscriberInterface $subscriber)
-    {
-        foreach ($subscriber->getSubscribedEvents() as $eventName => $params) {
-            if (\is_array($params) && \is_array($params[0])) {
-                foreach ($params as $listener) {
-                    $this->removeListener($eventName, [$subscriber, $listener[0]]);
-                }
-            } else {
-                $this->removeListener($eventName, [$subscriber, \is_string($params) ? $params : $params[0]]);
-            }
-        }
-    }
-
-    /**
-     * Triggers the listeners of an event.
-     *
-     * This method can be overridden to add functionality that is executed
-     * for each listener.
-     *
-     * @param callable[] $listeners The event listeners
-     * @param string     $eventName The name of the event to dispatch
-     * @param object     $event     The event object to pass to the event handlers/listeners
-     */
-    protected function callListeners(iterable $listeners, string $eventName, $event)
-    {
-        if ($event instanceof Event) {
-            $this->doDispatch($listeners, $eventName, $event);
-
-            return;
-        }
-
-        $stoppable = $event instanceof ContractsEvent || $event instanceof StoppableEventInterface;
-
-        foreach ($listeners as $listener) {
-            if ($stoppable && $event->isPropagationStopped()) {
-                break;
-            }
-            // @deprecated: the ternary operator is part of a BC layer and should be removed in 5.0
-            $listener($listener instanceof WrappedListener ? new LegacyEventProxy($event) : $event, $eventName, $this);
-        }
-    }
-
-    /**
-     * @deprecated since Symfony 4.3, use callListeners() instead
-     */
-    protected function doDispatch($listeners, $eventName, Event $event)
-    {
-        foreach ($listeners as $listener) {
-            if ($event->isPropagationStopped()) {
-                break;
-            }
-            $listener($event, $eventName, $this);
-        }
-    }
-
-    /**
-     * Sorts the internal list of listeners for the given event by priority.
-     */
-    private function sortListeners(string $eventName)
-    {
-        krsort($this->listeners[$eventName]);
-        $this->sorted[$eventName] = [];
-
-        foreach ($this->listeners[$eventName] as &$listeners) {
-            foreach ($listeners as $k => &$listener) {
-                if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
-                    $listener[0] = $listener[0]();
-                    $listener[1] = $listener[1] ?? '__invoke';
-                }
-                $this->sorted[$eventName][] = $listener;
-            }
-        }
-    }
-
-    /**
-     * Optimizes the internal list of listeners for the given event by priority.
-     */
-    private function optimizeListeners(string $eventName): array
-    {
-        krsort($this->listeners[$eventName]);
-        $this->optimized[$eventName] = [];
-
-        foreach ($this->listeners[$eventName] as &$listeners) {
-            foreach ($listeners as &$listener) {
-                $closure = &$this->optimized[$eventName][];
-                if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
-                    $closure = static function (...$args) use (&$listener, &$closure) {
-                        if ($listener[0] instanceof \Closure) {
-                            $listener[0] = $listener[0]();
-                            $listener[1] = $listener[1] ?? '__invoke';
-                        }
-                        ($closure = \Closure::fromCallable($listener))(...$args);
-                    };
-                } else {
-                    $closure = $listener instanceof \Closure || $listener instanceof WrappedListener ? $listener : \Closure::fromCallable($listener);
-                }
-            }
-        }
-
-        return $this->optimized[$eventName];
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/EventDispatcherInterface.php b/vendor/symfony/event-dispatcher/EventDispatcherInterface.php
deleted file mode 100644
index ceaa62aeb0472101e83e561634f8a67bd4ca89ad..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/EventDispatcherInterface.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher;
-
-use Symfony\Contracts\EventDispatcher\EventDispatcherInterface as ContractsEventDispatcherInterface;
-
-/**
- * The EventDispatcherInterface is the central point of Symfony's event listener system.
- * Listeners are registered on the manager and events are dispatched through the
- * manager.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface EventDispatcherInterface extends ContractsEventDispatcherInterface
-{
-    /**
-     * Adds an event listener that listens on the specified events.
-     *
-     * @param string   $eventName The event to listen on
-     * @param callable $listener  The listener
-     * @param int      $priority  The higher this value, the earlier an event
-     *                            listener will be triggered in the chain (defaults to 0)
-     */
-    public function addListener($eventName, $listener, $priority = 0);
-
-    /**
-     * Adds an event subscriber.
-     *
-     * The subscriber is asked for all the events it is
-     * interested in and added as a listener for these events.
-     */
-    public function addSubscriber(EventSubscriberInterface $subscriber);
-
-    /**
-     * Removes an event listener from the specified events.
-     *
-     * @param string   $eventName The event to remove a listener from
-     * @param callable $listener  The listener to remove
-     */
-    public function removeListener($eventName, $listener);
-
-    public function removeSubscriber(EventSubscriberInterface $subscriber);
-
-    /**
-     * Gets the listeners of a specific event or all listeners sorted by descending priority.
-     *
-     * @param string|null $eventName The name of the event
-     *
-     * @return array The event listeners for the specified event, or all event listeners by event name
-     */
-    public function getListeners($eventName = null);
-
-    /**
-     * Gets the listener priority for a specific event.
-     *
-     * Returns null if the event or the listener does not exist.
-     *
-     * @param string   $eventName The name of the event
-     * @param callable $listener  The listener
-     *
-     * @return int|null The event listener priority
-     */
-    public function getListenerPriority($eventName, $listener);
-
-    /**
-     * Checks whether an event has any registered listeners.
-     *
-     * @param string|null $eventName The name of the event
-     *
-     * @return bool true if the specified event has any listeners, false otherwise
-     */
-    public function hasListeners($eventName = null);
-}
diff --git a/vendor/symfony/event-dispatcher/EventSubscriberInterface.php b/vendor/symfony/event-dispatcher/EventSubscriberInterface.php
deleted file mode 100644
index 741590b1bf3a3d8971ebbc5dc2985aad5ae1f8d1..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/EventSubscriberInterface.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher;
-
-/**
- * An EventSubscriber knows itself what events it is interested in.
- * If an EventSubscriber is added to an EventDispatcherInterface, the manager invokes
- * {@link getSubscribedEvents} and registers the subscriber as a listener for all
- * returned events.
- *
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface EventSubscriberInterface
-{
-    /**
-     * Returns an array of event names this subscriber wants to listen to.
-     *
-     * The array keys are event names and the value can be:
-     *
-     *  * The method name to call (priority defaults to 0)
-     *  * An array composed of the method name to call and the priority
-     *  * An array of arrays composed of the method names to call and respective
-     *    priorities, or 0 if unset
-     *
-     * For instance:
-     *
-     *  * ['eventName' => 'methodName']
-     *  * ['eventName' => ['methodName', $priority]]
-     *  * ['eventName' => [['methodName1', $priority], ['methodName2']]]
-     *
-     * The code must not depend on runtime state as it will only be called at compile time.
-     * All logic depending on runtime state must be put into the individual methods handling the events.
-     *
-     * @return array The event names to listen to
-     */
-    public static function getSubscribedEvents();
-}
diff --git a/vendor/symfony/event-dispatcher/GenericEvent.php b/vendor/symfony/event-dispatcher/GenericEvent.php
deleted file mode 100644
index f005e3a3db0762e55c1274b59b56d3cb0035e8c1..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/GenericEvent.php
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher;
-
-/**
- * Event encapsulation class.
- *
- * Encapsulates events thus decoupling the observer from the subject they encapsulate.
- *
- * @author Drak <drak@zikula.org>
- */
-class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate
-{
-    protected $subject;
-    protected $arguments;
-
-    /**
-     * Encapsulate an event with $subject and $args.
-     *
-     * @param mixed $subject   The subject of the event, usually an object or a callable
-     * @param array $arguments Arguments to store in the event
-     */
-    public function __construct($subject = null, array $arguments = [])
-    {
-        $this->subject = $subject;
-        $this->arguments = $arguments;
-    }
-
-    /**
-     * Getter for subject property.
-     *
-     * @return mixed The observer subject
-     */
-    public function getSubject()
-    {
-        return $this->subject;
-    }
-
-    /**
-     * Get argument by key.
-     *
-     * @param string $key Key
-     *
-     * @return mixed Contents of array key
-     *
-     * @throws \InvalidArgumentException if key is not found
-     */
-    public function getArgument($key)
-    {
-        if ($this->hasArgument($key)) {
-            return $this->arguments[$key];
-        }
-
-        throw new \InvalidArgumentException(sprintf('Argument "%s" not found.', $key));
-    }
-
-    /**
-     * Add argument to event.
-     *
-     * @param string $key   Argument name
-     * @param mixed  $value Value
-     *
-     * @return $this
-     */
-    public function setArgument($key, $value)
-    {
-        $this->arguments[$key] = $value;
-
-        return $this;
-    }
-
-    /**
-     * Getter for all arguments.
-     *
-     * @return array
-     */
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    /**
-     * Set args property.
-     *
-     * @param array $args Arguments
-     *
-     * @return $this
-     */
-    public function setArguments(array $args = [])
-    {
-        $this->arguments = $args;
-
-        return $this;
-    }
-
-    /**
-     * Has argument.
-     *
-     * @param string $key Key of arguments array
-     *
-     * @return bool
-     */
-    public function hasArgument($key)
-    {
-        return \array_key_exists($key, $this->arguments);
-    }
-
-    /**
-     * ArrayAccess for argument getter.
-     *
-     * @param string $key Array key
-     *
-     * @return mixed
-     *
-     * @throws \InvalidArgumentException if key does not exist in $this->args
-     */
-    public function offsetGet($key)
-    {
-        return $this->getArgument($key);
-    }
-
-    /**
-     * ArrayAccess for argument setter.
-     *
-     * @param string $key   Array key to set
-     * @param mixed  $value Value
-     */
-    public function offsetSet($key, $value)
-    {
-        $this->setArgument($key, $value);
-    }
-
-    /**
-     * ArrayAccess for unset argument.
-     *
-     * @param string $key Array key
-     */
-    public function offsetUnset($key)
-    {
-        if ($this->hasArgument($key)) {
-            unset($this->arguments[$key]);
-        }
-    }
-
-    /**
-     * ArrayAccess has argument.
-     *
-     * @param string $key Array key
-     *
-     * @return bool
-     */
-    public function offsetExists($key)
-    {
-        return $this->hasArgument($key);
-    }
-
-    /**
-     * IteratorAggregate for iterating over the object like an array.
-     *
-     * @return \ArrayIterator
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->arguments);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php b/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php
deleted file mode 100644
index 75a7d7318187b41766e6bb4e56800d0a249c9ecf..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher;
-
-/**
- * A read-only proxy for an event dispatcher.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ImmutableEventDispatcher implements EventDispatcherInterface
-{
-    private $dispatcher;
-
-    public function __construct(EventDispatcherInterface $dispatcher)
-    {
-        $this->dispatcher = LegacyEventDispatcherProxy::decorate($dispatcher);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param string|null $eventName
-     */
-    public function dispatch($event/*, string $eventName = null*/)
-    {
-        $eventName = 1 < \func_num_args() ? func_get_arg(1) : null;
-
-        if (is_scalar($event)) {
-            // deprecated
-            $swap = $event;
-            $event = $eventName ?? new Event();
-            $eventName = $swap;
-        }
-
-        return $this->dispatcher->dispatch($event, $eventName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addListener($eventName, $listener, $priority = 0)
-    {
-        throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSubscriber(EventSubscriberInterface $subscriber)
-    {
-        throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeListener($eventName, $listener)
-    {
-        throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeSubscriber(EventSubscriberInterface $subscriber)
-    {
-        throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListeners($eventName = null)
-    {
-        return $this->dispatcher->getListeners($eventName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListenerPriority($eventName, $listener)
-    {
-        return $this->dispatcher->getListenerPriority($eventName, $listener);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasListeners($eventName = null)
-    {
-        return $this->dispatcher->hasListeners($eventName);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/LICENSE b/vendor/symfony/event-dispatcher/LICENSE
deleted file mode 100644
index 9e936ec0448b8549e5edf08e5ac5f01491a8bfc8..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php b/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php
deleted file mode 100644
index 8ee6cba1b5112ca9805881b457efcad5afaa4b86..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher;
-
-use Psr\EventDispatcher\StoppableEventInterface;
-use Symfony\Contracts\EventDispatcher\Event as ContractsEvent;
-use Symfony\Contracts\EventDispatcher\EventDispatcherInterface as ContractsEventDispatcherInterface;
-
-/**
- * A helper class to provide BC/FC with the legacy signature of EventDispatcherInterface::dispatch().
- *
- * This class should be deprecated in Symfony 5.1
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-final class LegacyEventDispatcherProxy implements EventDispatcherInterface
-{
-    private $dispatcher;
-
-    public static function decorate(?ContractsEventDispatcherInterface $dispatcher): ?ContractsEventDispatcherInterface
-    {
-        if (null === $dispatcher) {
-            return null;
-        }
-        $r = new \ReflectionMethod($dispatcher, 'dispatch');
-        $param2 = $r->getParameters()[1] ?? null;
-
-        if (!$param2 || !$param2->hasType() || $param2->getType()->isBuiltin()) {
-            return $dispatcher;
-        }
-
-        @trigger_error(sprintf('The signature of the "%s::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3.', $r->class), \E_USER_DEPRECATED);
-
-        $self = new self();
-        $self->dispatcher = $dispatcher;
-
-        return $self;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param string|null $eventName
-     *
-     * @return object
-     */
-    public function dispatch($event/*, string $eventName = null*/)
-    {
-        $eventName = 1 < \func_num_args() ? func_get_arg(1) : null;
-
-        if (\is_object($event)) {
-            $eventName = $eventName ?? \get_class($event);
-        } elseif (\is_string($event) && (null === $eventName || $eventName instanceof ContractsEvent || $eventName instanceof Event)) {
-            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', ContractsEventDispatcherInterface::class), \E_USER_DEPRECATED);
-            $swap = $event;
-            $event = $eventName ?? new Event();
-            $eventName = $swap;
-        } else {
-            throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, "%s" given.', ContractsEventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event)));
-        }
-
-        $listeners = $this->getListeners($eventName);
-        $stoppable = $event instanceof Event || $event instanceof ContractsEvent || $event instanceof StoppableEventInterface;
-
-        foreach ($listeners as $listener) {
-            if ($stoppable && $event->isPropagationStopped()) {
-                break;
-            }
-            $listener($event, $eventName, $this);
-        }
-
-        return $event;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addListener($eventName, $listener, $priority = 0)
-    {
-        return $this->dispatcher->addListener($eventName, $listener, $priority);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSubscriber(EventSubscriberInterface $subscriber)
-    {
-        return $this->dispatcher->addSubscriber($subscriber);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeListener($eventName, $listener)
-    {
-        return $this->dispatcher->removeListener($eventName, $listener);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeSubscriber(EventSubscriberInterface $subscriber)
-    {
-        return $this->dispatcher->removeSubscriber($subscriber);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListeners($eventName = null): array
-    {
-        return $this->dispatcher->getListeners($eventName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListenerPriority($eventName, $listener): ?int
-    {
-        return $this->dispatcher->getListenerPriority($eventName, $listener);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasListeners($eventName = null): bool
-    {
-        return $this->dispatcher->hasListeners($eventName);
-    }
-
-    /**
-     * Proxies all method calls to the original event dispatcher.
-     */
-    public function __call($method, $arguments)
-    {
-        return $this->dispatcher->{$method}(...$arguments);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/LegacyEventProxy.php b/vendor/symfony/event-dispatcher/LegacyEventProxy.php
deleted file mode 100644
index 45ee251d6a98dc2450fa77186528455811ce8287..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/LegacyEventProxy.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher;
-
-use Psr\EventDispatcher\StoppableEventInterface;
-use Symfony\Contracts\EventDispatcher\Event as ContractsEvent;
-
-/**
- * @internal to be removed in 5.0.
- */
-final class LegacyEventProxy extends Event
-{
-    private $event;
-
-    /**
-     * @param object $event
-     */
-    public function __construct($event)
-    {
-        $this->event = $event;
-    }
-
-    /**
-     * @return object $event
-     */
-    public function getEvent()
-    {
-        return $this->event;
-    }
-
-    public function isPropagationStopped(): bool
-    {
-        if (!$this->event instanceof ContractsEvent && !$this->event instanceof StoppableEventInterface) {
-            return false;
-        }
-
-        return $this->event->isPropagationStopped();
-    }
-
-    public function stopPropagation()
-    {
-        if (!$this->event instanceof ContractsEvent) {
-            return;
-        }
-
-        $this->event->stopPropagation();
-    }
-
-    public function __call($name, $args)
-    {
-        return $this->event->{$name}(...$args);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/README.md b/vendor/symfony/event-dispatcher/README.md
deleted file mode 100644
index e0d38eed017f8f46eac131d33e05ac2bdac4929b..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-EventDispatcher Component
-=========================
-
-The EventDispatcher component provides tools that allow your application
-components to communicate with each other by dispatching events and listening to
-them.
-
-Resources
----------
-
-  * [Documentation](https://symfony.com/doc/current/components/event_dispatcher.html)
-  * [Contributing](https://symfony.com/doc/current/contributing/index.html)
-  * [Report issues](https://github.com/symfony/symfony/issues) and
-    [send Pull Requests](https://github.com/symfony/symfony/pulls)
-    in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/vendor/symfony/event-dispatcher/composer.json b/vendor/symfony/event-dispatcher/composer.json
deleted file mode 100644
index 5bb0f7d4e68228f33f8ee5e652391f78149ae462..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/composer.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-    "name": "symfony/event-dispatcher",
-    "type": "library",
-    "description": "Symfony EventDispatcher Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1.3",
-        "symfony/event-dispatcher-contracts": "^1.1"
-    },
-    "require-dev": {
-        "symfony/dependency-injection": "^3.4|^4.0|^5.0",
-        "symfony/expression-language": "^3.4|^4.0|^5.0",
-        "symfony/config": "^3.4|^4.0|^5.0",
-        "symfony/error-handler": "~3.4|~4.4",
-        "symfony/http-foundation": "^3.4|^4.0|^5.0",
-        "symfony/service-contracts": "^1.1|^2",
-        "symfony/stopwatch": "^3.4|^4.0|^5.0",
-        "psr/log": "~1.0"
-    },
-    "conflict": {
-        "symfony/dependency-injection": "<3.4"
-    },
-    "provide": {
-        "psr/event-dispatcher-implementation": "1.0",
-        "symfony/event-dispatcher-implementation": "1.1"
-    },
-    "suggest": {
-        "symfony/dependency-injection": "",
-        "symfony/http-kernel": ""
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" },
-        "exclude-from-classmap": [
-            "/Tests/"
-        ]
-    },
-    "minimum-stability": "dev"
-}
diff --git a/vendor/symfony/http-client-contracts/.gitignore b/vendor/symfony/http-client-contracts/.gitignore
deleted file mode 100644
index c49a5d8df5c6548379f00c77fe572a7217bce218..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/http-client-contracts/CHANGELOG.md b/vendor/symfony/http-client-contracts/CHANGELOG.md
deleted file mode 100644
index e9847779ba985366b4bff79d369c09db31d620eb..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/CHANGELOG.md
+++ /dev/null
@@ -1,5 +0,0 @@
-CHANGELOG
-=========
-
-The changelog is maintained for all Symfony contracts at the following URL:
-https://github.com/symfony/contracts/blob/master/CHANGELOG.md
diff --git a/vendor/symfony/http-client-contracts/ChunkInterface.php b/vendor/symfony/http-client-contracts/ChunkInterface.php
deleted file mode 100644
index 0800cb3665e3a040b2ecc3143c3c74ce0d6813fd..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/ChunkInterface.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient;
-
-use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
-
-/**
- * The interface of chunks returned by ResponseStreamInterface::current().
- *
- * When the chunk is first, last or timeout, the content MUST be empty.
- * When an unchecked timeout or a network error occurs, a TransportExceptionInterface
- * MUST be thrown by the destructor unless one was already thrown by another method.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface ChunkInterface
-{
-    /**
-     * Tells when the idle timeout has been reached.
-     *
-     * @throws TransportExceptionInterface on a network error
-     */
-    public function isTimeout(): bool;
-
-    /**
-     * Tells when headers just arrived.
-     *
-     * @throws TransportExceptionInterface on a network error or when the idle timeout is reached
-     */
-    public function isFirst(): bool;
-
-    /**
-     * Tells when the body just completed.
-     *
-     * @throws TransportExceptionInterface on a network error or when the idle timeout is reached
-     */
-    public function isLast(): bool;
-
-    /**
-     * Returns a [status code, headers] tuple when a 1xx status code was just received.
-     *
-     * @throws TransportExceptionInterface on a network error or when the idle timeout is reached
-     */
-    public function getInformationalStatus(): ?array;
-
-    /**
-     * Returns the content of the response chunk.
-     *
-     * @throws TransportExceptionInterface on a network error or when the idle timeout is reached
-     */
-    public function getContent(): string;
-
-    /**
-     * Returns the offset of the chunk in the response body.
-     */
-    public function getOffset(): int;
-
-    /**
-     * In case of error, returns the message that describes it.
-     */
-    public function getError(): ?string;
-}
diff --git a/vendor/symfony/http-client-contracts/Exception/ClientExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/ClientExceptionInterface.php
deleted file mode 100644
index 22d2b456a6e08613d2bb568cbf736ad1bbc6205e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/Exception/ClientExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient\Exception;
-
-/**
- * When a 4xx response is returned.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface ClientExceptionInterface extends HttpExceptionInterface
-{
-}
diff --git a/vendor/symfony/http-client-contracts/Exception/DecodingExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/DecodingExceptionInterface.php
deleted file mode 100644
index 971a7a29b3d671ac2e373ee6e6ecd42ff3864518..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/Exception/DecodingExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient\Exception;
-
-/**
- * When a content-type cannot be decoded to the expected representation.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface DecodingExceptionInterface extends ExceptionInterface
-{
-}
diff --git a/vendor/symfony/http-client-contracts/Exception/ExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/ExceptionInterface.php
deleted file mode 100644
index e553b47a1d64d49588ee72d2e6e595912b34fbda..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient\Exception;
-
-/**
- * The base interface for all exceptions in the contract.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface ExceptionInterface extends \Throwable
-{
-}
diff --git a/vendor/symfony/http-client-contracts/Exception/HttpExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/HttpExceptionInterface.php
deleted file mode 100644
index 17865ed367d248b4c12d1a63582930027948c163..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/Exception/HttpExceptionInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient\Exception;
-
-use Symfony\Contracts\HttpClient\ResponseInterface;
-
-/**
- * Base interface for HTTP-related exceptions.
- *
- * @author Anton Chernikov <anton_ch1989@mail.ru>
- */
-interface HttpExceptionInterface extends ExceptionInterface
-{
-    public function getResponse(): ResponseInterface;
-}
diff --git a/vendor/symfony/http-client-contracts/Exception/RedirectionExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/RedirectionExceptionInterface.php
deleted file mode 100644
index edd9b8a9bb6e58405f1e56a2dd4c00610e9c099b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/Exception/RedirectionExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient\Exception;
-
-/**
- * When a 3xx response is returned and the "max_redirects" option has been reached.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface RedirectionExceptionInterface extends HttpExceptionInterface
-{
-}
diff --git a/vendor/symfony/http-client-contracts/Exception/ServerExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/ServerExceptionInterface.php
deleted file mode 100644
index 9bfe1354b52460b7309b246541e3c8da8002f908..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/Exception/ServerExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient\Exception;
-
-/**
- * When a 5xx response is returned.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface ServerExceptionInterface extends HttpExceptionInterface
-{
-}
diff --git a/vendor/symfony/http-client-contracts/Exception/TimeoutExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/TimeoutExceptionInterface.php
deleted file mode 100644
index 08acf9fb6db90daaa1ab0255735c827844f45171..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/Exception/TimeoutExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient\Exception;
-
-/**
- * When an idle timeout occurs.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface TimeoutExceptionInterface extends TransportExceptionInterface
-{
-}
diff --git a/vendor/symfony/http-client-contracts/Exception/TransportExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/TransportExceptionInterface.php
deleted file mode 100644
index 0c8d131a058e7af42114c94c802cbcd23999f05d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/Exception/TransportExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient\Exception;
-
-/**
- * When any error happens at the transport level.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface TransportExceptionInterface extends ExceptionInterface
-{
-}
diff --git a/vendor/symfony/http-client-contracts/HttpClientInterface.php b/vendor/symfony/http-client-contracts/HttpClientInterface.php
deleted file mode 100644
index 4388eb84ce48b38971f1346077e815a90b39d0f0..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/HttpClientInterface.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient;
-
-use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
-use Symfony\Contracts\HttpClient\Test\HttpClientTestCase;
-
-/**
- * Provides flexible methods for requesting HTTP resources synchronously or asynchronously.
- *
- * @see HttpClientTestCase for a reference test suite
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface HttpClientInterface
-{
-    public const OPTIONS_DEFAULTS = [
-        'auth_basic' => null,   // array|string - an array containing the username as first value, and optionally the
-                                //   password as the second one; or string like username:password - enabling HTTP Basic
-                                //   authentication (RFC 7617)
-        'auth_bearer' => null,  // string - a token enabling HTTP Bearer authorization (RFC 6750)
-        'query' => [],          // string[] - associative array of query string values to merge with the request's URL
-        'headers' => [],        // iterable|string[]|string[][] - headers names provided as keys or as part of values
-        'body' => '',           // array|string|resource|\Traversable|\Closure - the callback SHOULD yield a string
-                                //   smaller than the amount requested as argument; the empty string signals EOF; if
-                                //   an array is passed, it is meant as a form payload of field names and values
-        'json' => null,         // mixed - if set, implementations MUST set the "body" option to the JSON-encoded
-                                //   value and set the "content-type" header to a JSON-compatible value if it is not
-                                //   explicitly defined in the headers option - typically "application/json"
-        'user_data' => null,    // mixed - any extra data to attach to the request (scalar, callable, object...) that
-                                //   MUST be available via $response->getInfo('user_data') - not used internally
-        'max_redirects' => 20,  // int - the maximum number of redirects to follow; a value lower than or equal to 0
-                                //   means redirects should not be followed; "Authorization" and "Cookie" headers MUST
-                                //   NOT follow except for the initial host name
-        'http_version' => null, // string - defaults to the best supported version, typically 1.1 or 2.0
-        'base_uri' => null,     // string - the URI to resolve relative URLs, following rules in RFC 3986, section 2
-        'buffer' => true,       // bool|resource|\Closure - whether the content of the response should be buffered or not,
-                                //   or a stream resource where the response body should be written,
-                                //   or a closure telling if/where the response should be buffered based on its headers
-        'on_progress' => null,  // callable(int $dlNow, int $dlSize, array $info) - throwing any exceptions MUST abort
-                                //   the request; it MUST be called on DNS resolution, on arrival of headers and on
-                                //   completion; it SHOULD be called on upload/download of data and at least 1/s
-        'resolve' => [],        // string[] - a map of host to IP address that SHOULD replace DNS resolution
-        'proxy' => null,        // string - by default, the proxy-related env vars handled by curl SHOULD be honored
-        'no_proxy' => null,     // string - a comma separated list of hosts that do not require a proxy to be reached
-        'timeout' => null,      // float - the idle timeout - defaults to ini_get('default_socket_timeout')
-        'max_duration' => 0,    // float - the maximum execution time for the request+response as a whole;
-                                //   a value lower than or equal to 0 means it is unlimited
-        'bindto' => '0',        // string - the interface or the local socket to bind to
-        'verify_peer' => true,  // see https://php.net/context.ssl for the following options
-        'verify_host' => true,
-        'cafile' => null,
-        'capath' => null,
-        'local_cert' => null,
-        'local_pk' => null,
-        'passphrase' => null,
-        'ciphers' => null,
-        'peer_fingerprint' => null,
-        'capture_peer_cert_chain' => false,
-        'extra' => [],          // array - additional options that can be ignored if unsupported, unlike regular options
-    ];
-
-    /**
-     * Requests an HTTP resource.
-     *
-     * Responses MUST be lazy, but their status code MUST be
-     * checked even if none of their public methods are called.
-     *
-     * Implementations are not required to support all options described above; they can also
-     * support more custom options; but in any case, they MUST throw a TransportExceptionInterface
-     * when an unsupported option is passed.
-     *
-     * @throws TransportExceptionInterface When an unsupported option is passed
-     */
-    public function request(string $method, string $url, array $options = []): ResponseInterface;
-
-    /**
-     * Yields responses chunk by chunk as they complete.
-     *
-     * @param ResponseInterface|ResponseInterface[]|iterable $responses One or more responses created by the current HTTP client
-     * @param float|null                                     $timeout   The idle timeout before yielding timeout chunks
-     */
-    public function stream($responses, float $timeout = null): ResponseStreamInterface;
-}
diff --git a/vendor/symfony/http-client-contracts/LICENSE b/vendor/symfony/http-client-contracts/LICENSE
deleted file mode 100644
index 69d925ba7511e664a16b2af1fabce06b8767455d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2018-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/http-client-contracts/README.md b/vendor/symfony/http-client-contracts/README.md
deleted file mode 100644
index 01f8118949bd8da7395ae17c3da3db4aa5b882b6..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Symfony HttpClient Contracts
-============================
-
-A set of abstractions extracted out of the Symfony components.
-
-Can be used to build on semantics that the Symfony components proved useful - and
-that already have battle tested implementations.
-
-See https://github.com/symfony/contracts/blob/master/README.md for more information.
diff --git a/vendor/symfony/http-client-contracts/ResponseInterface.php b/vendor/symfony/http-client-contracts/ResponseInterface.php
deleted file mode 100644
index fd5b635cd55ed52b350687fd5c2271f5cb7456ab..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/ResponseInterface.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient;
-
-use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface;
-use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
-use Symfony\Contracts\HttpClient\Exception\ExceptionInterface;
-use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface;
-use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface;
-use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
-
-/**
- * A (lazily retrieved) HTTP response.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface ResponseInterface
-{
-    /**
-     * Gets the HTTP status code of the response.
-     *
-     * @throws TransportExceptionInterface when a network error occurs
-     */
-    public function getStatusCode(): int;
-
-    /**
-     * Gets the HTTP headers of the response.
-     *
-     * @param bool $throw Whether an exception should be thrown on 3/4/5xx status codes
-     *
-     * @return string[][] The headers of the response keyed by header names in lowercase
-     *
-     * @throws TransportExceptionInterface   When a network error occurs
-     * @throws RedirectionExceptionInterface On a 3xx when $throw is true and the "max_redirects" option has been reached
-     * @throws ClientExceptionInterface      On a 4xx when $throw is true
-     * @throws ServerExceptionInterface      On a 5xx when $throw is true
-     */
-    public function getHeaders(bool $throw = true): array;
-
-    /**
-     * Gets the response body as a string.
-     *
-     * @param bool $throw Whether an exception should be thrown on 3/4/5xx status codes
-     *
-     * @throws TransportExceptionInterface   When a network error occurs
-     * @throws RedirectionExceptionInterface On a 3xx when $throw is true and the "max_redirects" option has been reached
-     * @throws ClientExceptionInterface      On a 4xx when $throw is true
-     * @throws ServerExceptionInterface      On a 5xx when $throw is true
-     */
-    public function getContent(bool $throw = true): string;
-
-    /**
-     * Gets the response body decoded as array, typically from a JSON payload.
-     *
-     * @param bool $throw Whether an exception should be thrown on 3/4/5xx status codes
-     *
-     * @throws DecodingExceptionInterface    When the body cannot be decoded to an array
-     * @throws TransportExceptionInterface   When a network error occurs
-     * @throws RedirectionExceptionInterface On a 3xx when $throw is true and the "max_redirects" option has been reached
-     * @throws ClientExceptionInterface      On a 4xx when $throw is true
-     * @throws ServerExceptionInterface      On a 5xx when $throw is true
-     */
-    public function toArray(bool $throw = true): array;
-
-    /**
-     * Closes the response stream and all related buffers.
-     *
-     * No further chunk will be yielded after this method has been called.
-     */
-    public function cancel(): void;
-
-    /**
-     * Returns info coming from the transport layer.
-     *
-     * This method SHOULD NOT throw any ExceptionInterface and SHOULD be non-blocking.
-     * The returned info is "live": it can be empty and can change from one call to
-     * another, as the request/response progresses.
-     *
-     * The following info MUST be returned:
-     *  - canceled (bool) - true if the response was canceled using ResponseInterface::cancel(), false otherwise
-     *  - error (string|null) - the error message when the transfer was aborted, null otherwise
-     *  - http_code (int) - the last response code or 0 when it is not known yet
-     *  - http_method (string) - the HTTP verb of the last request
-     *  - redirect_count (int) - the number of redirects followed while executing the request
-     *  - redirect_url (string|null) - the resolved location of redirect responses, null otherwise
-     *  - response_headers (array) - an array modelled after the special $http_response_header variable
-     *  - start_time (float) - the time when the request was sent or 0.0 when it's pending
-     *  - url (string) - the last effective URL of the request
-     *  - user_data (mixed|null) - the value of the "user_data" request option, null if not set
-     *
-     * When the "capture_peer_cert_chain" option is true, the "peer_certificate_chain"
-     * attribute SHOULD list the peer certificates as an array of OpenSSL X.509 resources.
-     *
-     * Other info SHOULD be named after curl_getinfo()'s associative return value.
-     *
-     * @return array|mixed|null An array of all available info, or one of them when $type is
-     *                          provided, or null when an unsupported type is requested
-     */
-    public function getInfo(string $type = null);
-}
diff --git a/vendor/symfony/http-client-contracts/ResponseStreamInterface.php b/vendor/symfony/http-client-contracts/ResponseStreamInterface.php
deleted file mode 100644
index febe5d14255476dc0b3c6e699c03a5de173ef045..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/ResponseStreamInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient;
-
-/**
- * Yields response chunks, returned by HttpClientInterface::stream().
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface ResponseStreamInterface extends \Iterator
-{
-    public function key(): ResponseInterface;
-
-    public function current(): ChunkInterface;
-}
diff --git a/vendor/symfony/http-client-contracts/Test/Fixtures/web/index.php b/vendor/symfony/http-client-contracts/Test/Fixtures/web/index.php
deleted file mode 100644
index 68406e69c4c3c8ede3925f66b0b05093c7637182..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/Test/Fixtures/web/index.php
+++ /dev/null
@@ -1,192 +0,0 @@
-<?php
-
-if ('cli-server' !== \PHP_SAPI) {
-    // safe guard against unwanted execution
-    throw new \Exception("You cannot run this script directly, it's a fixture for TestHttpServer.");
-}
-
-$vars = [];
-
-if (!$_POST) {
-    $_POST = json_decode(file_get_contents('php://input'), true);
-    $_POST['content-type'] = $_SERVER['HTTP_CONTENT_TYPE'] ?? '?';
-}
-
-foreach ($_SERVER as $k => $v) {
-    switch ($k) {
-        default:
-            if (0 !== strpos($k, 'HTTP_')) {
-                continue 2;
-            }
-            // no break
-        case 'SERVER_NAME':
-        case 'SERVER_PROTOCOL':
-        case 'REQUEST_URI':
-        case 'REQUEST_METHOD':
-        case 'PHP_AUTH_USER':
-        case 'PHP_AUTH_PW':
-            $vars[$k] = $v;
-    }
-}
-
-$json = json_encode($vars, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
-
-switch ($vars['REQUEST_URI']) {
-    default:
-        exit;
-
-    case '/head':
-        header('Content-Length: '.strlen($json), true);
-        break;
-
-    case '/':
-    case '/?a=a&b=b':
-    case 'http://127.0.0.1:8057/':
-    case 'http://localhost:8057/':
-        ob_start('ob_gzhandler');
-        break;
-
-    case '/103':
-        header('HTTP/1.1 103 Early Hints');
-        header('Link: </style.css>; rel=preload; as=style', false);
-        header('Link: </script.js>; rel=preload; as=script', false);
-        flush();
-        usleep(1000);
-        echo "HTTP/1.1 200 OK\r\n";
-        echo "Date: Fri, 26 May 2017 10:02:11 GMT\r\n";
-        echo "Content-Length: 13\r\n";
-        echo "\r\n";
-        echo 'Here the body';
-        exit;
-
-    case '/404':
-        header('Content-Type: application/json', true, 404);
-        break;
-
-    case '/404-gzipped':
-        header('Content-Type: text/plain', true, 404);
-        ob_start('ob_gzhandler');
-        @ob_flush();
-        flush();
-        usleep(300000);
-        echo 'some text';
-        exit;
-
-    case '/301':
-        if ('Basic Zm9vOmJhcg==' === $vars['HTTP_AUTHORIZATION']) {
-            header('Location: http://127.0.0.1:8057/302', true, 301);
-        }
-        break;
-
-    case '/301/bad-tld':
-        header('Location: http://foo.example.', true, 301);
-        break;
-
-    case '/301/invalid':
-        header('Location: //?foo=bar', true, 301);
-        break;
-
-    case '/302':
-        if (!isset($vars['HTTP_AUTHORIZATION'])) {
-            header('Location: http://localhost:8057/', true, 302);
-        }
-        break;
-
-    case '/302/relative':
-        header('Location: ..', true, 302);
-        break;
-
-    case '/304':
-        header('Content-Length: 10', true, 304);
-        echo '12345';
-
-        return;
-
-    case '/307':
-        header('Location: http://localhost:8057/post', true, 307);
-        break;
-
-    case '/length-broken':
-        header('Content-Length: 1000');
-        break;
-
-    case '/post':
-        $output = json_encode($_POST + ['REQUEST_METHOD' => $vars['REQUEST_METHOD']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
-        header('Content-Type: application/json', true);
-        header('Content-Length: '.strlen($output));
-        echo $output;
-        exit;
-
-    case '/timeout-header':
-        usleep(300000);
-        break;
-
-    case '/timeout-body':
-        echo '<1>';
-        @ob_flush();
-        flush();
-        usleep(500000);
-        echo '<2>';
-        exit;
-
-    case '/timeout-long':
-        ignore_user_abort(false);
-        sleep(1);
-        while (true) {
-            echo '<1>';
-            @ob_flush();
-            flush();
-            usleep(500);
-        }
-        exit;
-
-    case '/chunked':
-        header('Transfer-Encoding: chunked');
-        echo "8\r\nSymfony \r\n5\r\nis aw\r\n6\r\nesome!\r\n0\r\n\r\n";
-        exit;
-
-    case '/chunked-broken':
-        header('Transfer-Encoding: chunked');
-        echo "8\r\nSymfony \r\n5\r\nis aw\r\n6\r\ne";
-        exit;
-
-    case '/gzip-broken':
-        header('Content-Encoding: gzip');
-        echo str_repeat('-', 1000);
-        exit;
-
-    case '/max-duration':
-        ignore_user_abort(false);
-        while (true) {
-            echo '<1>';
-            @ob_flush();
-            flush();
-            usleep(500);
-        }
-        exit;
-
-    case '/json':
-        header('Content-Type: application/json');
-        echo json_encode([
-            'documents' => [
-                ['id' => '/json/1'],
-                ['id' => '/json/2'],
-                ['id' => '/json/3'],
-            ],
-        ]);
-        exit;
-
-    case '/json/1':
-    case '/json/2':
-    case '/json/3':
-        header('Content-Type: application/json');
-        echo json_encode([
-            'title' => $vars['REQUEST_URI'],
-        ]);
-
-        exit;
-}
-
-header('Content-Type: application/json', true);
-
-echo $json;
diff --git a/vendor/symfony/http-client-contracts/Test/HttpClientTestCase.php b/vendor/symfony/http-client-contracts/Test/HttpClientTestCase.php
deleted file mode 100644
index 74997eaafcf922559a29593ce0b1c74135eab39f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/Test/HttpClientTestCase.php
+++ /dev/null
@@ -1,1041 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient\Test;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface;
-use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface;
-use Symfony\Contracts\HttpClient\Exception\TimeoutExceptionInterface;
-use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
-use Symfony\Contracts\HttpClient\HttpClientInterface;
-
-/**
- * A reference test suite for HttpClientInterface implementations.
- */
-abstract class HttpClientTestCase extends TestCase
-{
-    public static function setUpBeforeClass(): void
-    {
-        TestHttpServer::start();
-    }
-
-    abstract protected function getHttpClient(string $testCase): HttpClientInterface;
-
-    public function testGetRequest()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057', [
-            'headers' => ['Foo' => 'baR'],
-            'user_data' => $data = new \stdClass(),
-        ]);
-
-        $this->assertSame([], $response->getInfo('response_headers'));
-        $this->assertSame($data, $response->getInfo()['user_data']);
-        $this->assertSame(200, $response->getStatusCode());
-
-        $info = $response->getInfo();
-        $this->assertNull($info['error']);
-        $this->assertSame(0, $info['redirect_count']);
-        $this->assertSame('HTTP/1.1 200 OK', $info['response_headers'][0]);
-        $this->assertSame('Host: localhost:8057', $info['response_headers'][1]);
-        $this->assertSame('http://localhost:8057/', $info['url']);
-
-        $headers = $response->getHeaders();
-
-        $this->assertSame('localhost:8057', $headers['host'][0]);
-        $this->assertSame(['application/json'], $headers['content-type']);
-
-        $body = json_decode($response->getContent(), true);
-        $this->assertSame($body, $response->toArray());
-
-        $this->assertSame('HTTP/1.1', $body['SERVER_PROTOCOL']);
-        $this->assertSame('/', $body['REQUEST_URI']);
-        $this->assertSame('GET', $body['REQUEST_METHOD']);
-        $this->assertSame('localhost:8057', $body['HTTP_HOST']);
-        $this->assertSame('baR', $body['HTTP_FOO']);
-
-        $response = $client->request('GET', 'http://localhost:8057/length-broken');
-
-        $this->expectException(TransportExceptionInterface::class);
-        $response->getContent();
-    }
-
-    public function testHeadRequest()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('HEAD', 'http://localhost:8057/head', [
-            'headers' => ['Foo' => 'baR'],
-            'user_data' => $data = new \stdClass(),
-            'buffer' => false,
-        ]);
-
-        $this->assertSame([], $response->getInfo('response_headers'));
-        $this->assertSame(200, $response->getStatusCode());
-
-        $info = $response->getInfo();
-        $this->assertSame('HTTP/1.1 200 OK', $info['response_headers'][0]);
-        $this->assertSame('Host: localhost:8057', $info['response_headers'][1]);
-
-        $headers = $response->getHeaders();
-
-        $this->assertSame('localhost:8057', $headers['host'][0]);
-        $this->assertSame(['application/json'], $headers['content-type']);
-        $this->assertTrue(0 < $headers['content-length'][0]);
-
-        $this->assertSame('', $response->getContent());
-    }
-
-    public function testNonBufferedGetRequest()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057', [
-            'buffer' => false,
-            'headers' => ['Foo' => 'baR'],
-        ]);
-
-        $body = $response->toArray();
-        $this->assertSame('baR', $body['HTTP_FOO']);
-
-        $this->expectException(TransportExceptionInterface::class);
-        $response->getContent();
-    }
-
-    public function testBufferSink()
-    {
-        $sink = fopen('php://temp', 'w+');
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057', [
-            'buffer' => $sink,
-            'headers' => ['Foo' => 'baR'],
-        ]);
-
-        $body = $response->toArray();
-        $this->assertSame('baR', $body['HTTP_FOO']);
-
-        rewind($sink);
-        $sink = stream_get_contents($sink);
-        $this->assertSame($sink, $response->getContent());
-    }
-
-    public function testConditionalBuffering()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057');
-        $firstContent = $response->getContent();
-        $secondContent = $response->getContent();
-
-        $this->assertSame($firstContent, $secondContent);
-
-        $response = $client->request('GET', 'http://localhost:8057', ['buffer' => function () { return false; }]);
-        $response->getContent();
-
-        $this->expectException(TransportExceptionInterface::class);
-        $response->getContent();
-    }
-
-    public function testReentrantBufferCallback()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $response = $client->request('GET', 'http://localhost:8057', ['buffer' => function () use (&$response) {
-            $response->cancel();
-
-            return true;
-        }]);
-
-        $this->assertSame(200, $response->getStatusCode());
-
-        $this->expectException(TransportExceptionInterface::class);
-        $response->getContent();
-    }
-
-    public function testThrowingBufferCallback()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $response = $client->request('GET', 'http://localhost:8057', ['buffer' => function () {
-            throw new \Exception('Boo.');
-        }]);
-
-        $this->assertSame(200, $response->getStatusCode());
-
-        $this->expectException(TransportExceptionInterface::class);
-        $this->expectExceptionMessage('Boo');
-        $response->getContent();
-    }
-
-    public function testUnsupportedOption()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $this->expectException(\InvalidArgumentException::class);
-        $client->request('GET', 'http://localhost:8057', [
-            'capture_peer_cert' => 1.0,
-        ]);
-    }
-
-    public function testHttpVersion()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057', [
-            'http_version' => 1.0,
-        ]);
-
-        $this->assertSame(200, $response->getStatusCode());
-        $this->assertSame('HTTP/1.0 200 OK', $response->getInfo('response_headers')[0]);
-
-        $body = $response->toArray();
-
-        $this->assertSame('HTTP/1.0', $body['SERVER_PROTOCOL']);
-        $this->assertSame('GET', $body['REQUEST_METHOD']);
-        $this->assertSame('/', $body['REQUEST_URI']);
-    }
-
-    public function testChunkedEncoding()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/chunked');
-
-        $this->assertSame(['chunked'], $response->getHeaders()['transfer-encoding']);
-        $this->assertSame('Symfony is awesome!', $response->getContent());
-
-        $response = $client->request('GET', 'http://localhost:8057/chunked-broken');
-
-        $this->expectException(TransportExceptionInterface::class);
-        $response->getContent();
-    }
-
-    public function testClientError()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/404');
-
-        $client->stream($response)->valid();
-
-        $this->assertSame(404, $response->getInfo('http_code'));
-
-        try {
-            $response->getHeaders();
-            $this->fail(ClientExceptionInterface::class.' expected');
-        } catch (ClientExceptionInterface $e) {
-        }
-
-        try {
-            $response->getContent();
-            $this->fail(ClientExceptionInterface::class.' expected');
-        } catch (ClientExceptionInterface $e) {
-        }
-
-        $this->assertSame(404, $response->getStatusCode());
-        $this->assertSame(['application/json'], $response->getHeaders(false)['content-type']);
-        $this->assertNotEmpty($response->getContent(false));
-
-        $response = $client->request('GET', 'http://localhost:8057/404');
-
-        try {
-            foreach ($client->stream($response) as $chunk) {
-                $this->assertTrue($chunk->isFirst());
-            }
-            $this->fail(ClientExceptionInterface::class.' expected');
-        } catch (ClientExceptionInterface $e) {
-        }
-    }
-
-    public function testIgnoreErrors()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/404');
-
-        $this->assertSame(404, $response->getStatusCode());
-    }
-
-    public function testDnsError()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/301/bad-tld');
-
-        try {
-            $response->getStatusCode();
-            $this->fail(TransportExceptionInterface::class.' expected');
-        } catch (TransportExceptionInterface $e) {
-            $this->addToAssertionCount(1);
-        }
-
-        try {
-            $response->getStatusCode();
-            $this->fail(TransportExceptionInterface::class.' still expected');
-        } catch (TransportExceptionInterface $e) {
-            $this->addToAssertionCount(1);
-        }
-
-        $response = $client->request('GET', 'http://localhost:8057/301/bad-tld');
-
-        try {
-            foreach ($client->stream($response) as $r => $chunk) {
-            }
-            $this->fail(TransportExceptionInterface::class.' expected');
-        } catch (TransportExceptionInterface $e) {
-            $this->addToAssertionCount(1);
-        }
-
-        $this->assertSame($response, $r);
-        $this->assertNotNull($chunk->getError());
-
-        $this->expectException(TransportExceptionInterface::class);
-        foreach ($client->stream($response) as $chunk) {
-        }
-    }
-
-    public function testInlineAuth()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://foo:bar%3Dbar@localhost:8057');
-
-        $body = $response->toArray();
-
-        $this->assertSame('foo', $body['PHP_AUTH_USER']);
-        $this->assertSame('bar=bar', $body['PHP_AUTH_PW']);
-    }
-
-    public function testBadRequestBody()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $this->expectException(TransportExceptionInterface::class);
-
-        $response = $client->request('POST', 'http://localhost:8057/', [
-            'body' => function () { yield []; },
-        ]);
-
-        $response->getStatusCode();
-    }
-
-    public function test304()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/304', [
-            'headers' => ['If-Match' => '"abc"'],
-            'buffer' => false,
-        ]);
-
-        $this->assertSame(304, $response->getStatusCode());
-        $this->assertSame('', $response->getContent(false));
-    }
-
-    public function testRedirects()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('POST', 'http://localhost:8057/301', [
-            'auth_basic' => 'foo:bar',
-            'body' => function () {
-                yield 'foo=bar';
-            },
-        ]);
-
-        $body = $response->toArray();
-        $this->assertSame('GET', $body['REQUEST_METHOD']);
-        $this->assertSame('Basic Zm9vOmJhcg==', $body['HTTP_AUTHORIZATION']);
-        $this->assertSame('http://localhost:8057/', $response->getInfo('url'));
-
-        $this->assertSame(2, $response->getInfo('redirect_count'));
-        $this->assertNull($response->getInfo('redirect_url'));
-
-        $expected = [
-            'HTTP/1.1 301 Moved Permanently',
-            'Location: http://127.0.0.1:8057/302',
-            'Content-Type: application/json',
-            'HTTP/1.1 302 Found',
-            'Location: http://localhost:8057/',
-            'Content-Type: application/json',
-            'HTTP/1.1 200 OK',
-            'Content-Type: application/json',
-        ];
-
-        $filteredHeaders = array_values(array_filter($response->getInfo('response_headers'), function ($h) {
-            return \in_array(substr($h, 0, 4), ['HTTP', 'Loca', 'Cont'], true) && 'Content-Encoding: gzip' !== $h;
-        }));
-
-        $this->assertSame($expected, $filteredHeaders);
-    }
-
-    public function testInvalidRedirect()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/301/invalid');
-
-        $this->assertSame(301, $response->getStatusCode());
-        $this->assertSame(['//?foo=bar'], $response->getHeaders(false)['location']);
-        $this->assertSame(0, $response->getInfo('redirect_count'));
-        $this->assertNull($response->getInfo('redirect_url'));
-
-        $this->expectException(RedirectionExceptionInterface::class);
-        $response->getHeaders();
-    }
-
-    public function testRelativeRedirects()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/302/relative');
-
-        $body = $response->toArray();
-
-        $this->assertSame('/', $body['REQUEST_URI']);
-        $this->assertNull($response->getInfo('redirect_url'));
-
-        $response = $client->request('GET', 'http://localhost:8057/302/relative', [
-            'max_redirects' => 0,
-        ]);
-
-        $this->assertSame(302, $response->getStatusCode());
-        $this->assertSame('http://localhost:8057/', $response->getInfo('redirect_url'));
-    }
-
-    public function testRedirect307()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $response = $client->request('POST', 'http://localhost:8057/307', [
-            'body' => function () {
-                yield 'foo=bar';
-            },
-            'max_redirects' => 0,
-        ]);
-
-        $this->assertSame(307, $response->getStatusCode());
-
-        $response = $client->request('POST', 'http://localhost:8057/307', [
-            'body' => 'foo=bar',
-        ]);
-
-        $body = $response->toArray();
-
-        $this->assertSame(['foo' => 'bar', 'REQUEST_METHOD' => 'POST'], $body);
-    }
-
-    public function testMaxRedirects()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/301', [
-            'max_redirects' => 1,
-            'auth_basic' => 'foo:bar',
-        ]);
-
-        try {
-            $response->getHeaders();
-            $this->fail(RedirectionExceptionInterface::class.' expected');
-        } catch (RedirectionExceptionInterface $e) {
-        }
-
-        $this->assertSame(302, $response->getStatusCode());
-        $this->assertSame(1, $response->getInfo('redirect_count'));
-        $this->assertSame('http://localhost:8057/', $response->getInfo('redirect_url'));
-
-        $expected = [
-            'HTTP/1.1 301 Moved Permanently',
-            'Location: http://127.0.0.1:8057/302',
-            'Content-Type: application/json',
-            'HTTP/1.1 302 Found',
-            'Location: http://localhost:8057/',
-            'Content-Type: application/json',
-        ];
-
-        $filteredHeaders = array_values(array_filter($response->getInfo('response_headers'), function ($h) {
-            return \in_array(substr($h, 0, 4), ['HTTP', 'Loca', 'Cont'], true);
-        }));
-
-        $this->assertSame($expected, $filteredHeaders);
-    }
-
-    public function testStream()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $response = $client->request('GET', 'http://localhost:8057');
-        $chunks = $client->stream($response);
-        $result = [];
-
-        foreach ($chunks as $r => $chunk) {
-            if ($chunk->isTimeout()) {
-                $result[] = 't';
-            } elseif ($chunk->isLast()) {
-                $result[] = 'l';
-            } elseif ($chunk->isFirst()) {
-                $result[] = 'f';
-            }
-        }
-
-        $this->assertSame($response, $r);
-        $this->assertSame(['f', 'l'], $result);
-
-        $chunk = null;
-        $i = 0;
-
-        foreach ($client->stream($response) as $chunk) {
-            ++$i;
-        }
-
-        $this->assertSame(1, $i);
-        $this->assertTrue($chunk->isLast());
-    }
-
-    public function testAddToStream()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $r1 = $client->request('GET', 'http://localhost:8057');
-
-        $completed = [];
-
-        $pool = [$r1];
-
-        while ($pool) {
-            $chunks = $client->stream($pool);
-            $pool = [];
-
-            foreach ($chunks as $r => $chunk) {
-                if (!$chunk->isLast()) {
-                    continue;
-                }
-
-                if ($r1 === $r) {
-                    $r2 = $client->request('GET', 'http://localhost:8057');
-                    $pool[] = $r2;
-                }
-
-                $completed[] = $r;
-            }
-        }
-
-        $this->assertSame([$r1, $r2], $completed);
-    }
-
-    public function testCompleteTypeError()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $this->expectException(\TypeError::class);
-        $client->stream(123);
-    }
-
-    public function testOnProgress()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('POST', 'http://localhost:8057/post', [
-            'headers' => ['Content-Length' => 14],
-            'body' => 'foo=0123456789',
-            'on_progress' => function (...$state) use (&$steps) { $steps[] = $state; },
-        ]);
-
-        $body = $response->toArray();
-
-        $this->assertSame(['foo' => '0123456789', 'REQUEST_METHOD' => 'POST'], $body);
-        $this->assertSame([0, 0], \array_slice($steps[0], 0, 2));
-        $lastStep = \array_slice($steps, -1)[0];
-        $this->assertSame([57, 57], \array_slice($lastStep, 0, 2));
-        $this->assertSame('http://localhost:8057/post', $steps[0][2]['url']);
-    }
-
-    public function testPostJson()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $response = $client->request('POST', 'http://localhost:8057/post', [
-            'json' => ['foo' => 'bar'],
-        ]);
-
-        $body = $response->toArray();
-
-        $this->assertStringContainsString('json', $body['content-type']);
-        unset($body['content-type']);
-        $this->assertSame(['foo' => 'bar', 'REQUEST_METHOD' => 'POST'], $body);
-    }
-
-    public function testPostArray()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $response = $client->request('POST', 'http://localhost:8057/post', [
-            'body' => ['foo' => 'bar'],
-        ]);
-
-        $this->assertSame(['foo' => 'bar', 'REQUEST_METHOD' => 'POST'], $response->toArray());
-    }
-
-    public function testPostResource()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $h = fopen('php://temp', 'w+');
-        fwrite($h, 'foo=0123456789');
-        rewind($h);
-
-        $response = $client->request('POST', 'http://localhost:8057/post', [
-            'body' => $h,
-        ]);
-
-        $body = $response->toArray();
-
-        $this->assertSame(['foo' => '0123456789', 'REQUEST_METHOD' => 'POST'], $body);
-    }
-
-    public function testPostCallback()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $response = $client->request('POST', 'http://localhost:8057/post', [
-            'body' => function () {
-                yield 'foo';
-                yield '';
-                yield '=';
-                yield '0123456789';
-            },
-        ]);
-
-        $this->assertSame(['foo' => '0123456789', 'REQUEST_METHOD' => 'POST'], $response->toArray());
-    }
-
-    public function testCancel()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/timeout-header');
-
-        $response->cancel();
-        $this->expectException(TransportExceptionInterface::class);
-        $response->getHeaders();
-    }
-
-    public function testInfoOnCanceledResponse()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $response = $client->request('GET', 'http://localhost:8057/timeout-header');
-
-        $this->assertFalse($response->getInfo('canceled'));
-        $response->cancel();
-        $this->assertTrue($response->getInfo('canceled'));
-    }
-
-    public function testCancelInStream()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/404');
-
-        foreach ($client->stream($response) as $chunk) {
-            $response->cancel();
-        }
-
-        $this->expectException(TransportExceptionInterface::class);
-
-        foreach ($client->stream($response) as $chunk) {
-        }
-    }
-
-    public function testOnProgressCancel()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/timeout-body', [
-            'on_progress' => function ($dlNow) {
-                if (0 < $dlNow) {
-                    throw new \Exception('Aborting the request.');
-                }
-            },
-        ]);
-
-        try {
-            foreach ($client->stream([$response]) as $chunk) {
-            }
-            $this->fail(ClientExceptionInterface::class.' expected');
-        } catch (TransportExceptionInterface $e) {
-            $this->assertSame('Aborting the request.', $e->getPrevious()->getMessage());
-        }
-
-        $this->assertNotNull($response->getInfo('error'));
-        $this->expectException(TransportExceptionInterface::class);
-        $response->getContent();
-    }
-
-    public function testOnProgressError()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/timeout-body', [
-            'on_progress' => function ($dlNow) {
-                if (0 < $dlNow) {
-                    throw new \Error('BUG.');
-                }
-            },
-        ]);
-
-        try {
-            foreach ($client->stream([$response]) as $chunk) {
-            }
-            $this->fail('Error expected');
-        } catch (\Error $e) {
-            $this->assertSame('BUG.', $e->getMessage());
-        }
-
-        $this->assertNotNull($response->getInfo('error'));
-        $this->expectException(TransportExceptionInterface::class);
-        $response->getContent();
-    }
-
-    public function testResolve()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://symfony.com:8057/', [
-            'resolve' => ['symfony.com' => '127.0.0.1'],
-        ]);
-
-        $this->assertSame(200, $response->getStatusCode());
-        $this->assertSame(200, $client->request('GET', 'http://symfony.com:8057/')->getStatusCode());
-
-        $response = null;
-        $this->expectException(TransportExceptionInterface::class);
-        $client->request('GET', 'http://symfony.com:8057/', ['timeout' => 1]);
-    }
-
-    public function testIdnResolve()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $response = $client->request('GET', 'http://0-------------------------------------------------------------0.com:8057/', [
-            'resolve' => ['0-------------------------------------------------------------0.com' => '127.0.0.1'],
-        ]);
-
-        $this->assertSame(200, $response->getStatusCode());
-
-        $response = $client->request('GET', 'http://Bücher.example:8057/', [
-            'resolve' => ['xn--bcher-kva.example' => '127.0.0.1'],
-        ]);
-
-        $this->assertSame(200, $response->getStatusCode());
-    }
-
-    public function testNotATimeout()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/timeout-header', [
-            'timeout' => 0.9,
-        ]);
-        sleep(1);
-        $this->assertSame(200, $response->getStatusCode());
-    }
-
-    public function testTimeoutOnAccess()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/timeout-header', [
-            'timeout' => 0.1,
-        ]);
-
-        $this->expectException(TransportExceptionInterface::class);
-        $response->getHeaders();
-    }
-
-    public function testTimeoutIsNotAFatalError()
-    {
-        usleep(300000); // wait for the previous test to release the server
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/timeout-body', [
-            'timeout' => 0.25,
-        ]);
-
-        try {
-            $response->getContent();
-            $this->fail(TimeoutExceptionInterface::class.' expected');
-        } catch (TimeoutExceptionInterface $e) {
-        }
-
-        for ($i = 0; $i < 10; ++$i) {
-            try {
-                $this->assertSame('<1><2>', $response->getContent());
-                break;
-            } catch (TimeoutExceptionInterface $e) {
-            }
-        }
-
-        if (10 === $i) {
-            throw $e;
-        }
-    }
-
-    public function testTimeoutOnStream()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/timeout-body');
-
-        $this->assertSame(200, $response->getStatusCode());
-        $chunks = $client->stream([$response], 0.2);
-
-        $result = [];
-
-        foreach ($chunks as $r => $chunk) {
-            if ($chunk->isTimeout()) {
-                $result[] = 't';
-            } else {
-                $result[] = $chunk->getContent();
-            }
-        }
-
-        $this->assertSame(['<1>', 't'], $result);
-
-        $chunks = $client->stream([$response]);
-
-        foreach ($chunks as $r => $chunk) {
-            $this->assertSame('<2>', $chunk->getContent());
-            $this->assertSame('<1><2>', $r->getContent());
-
-            return;
-        }
-
-        $this->fail('The response should have completed');
-    }
-
-    public function testUncheckedTimeoutThrows()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/timeout-body');
-        $chunks = $client->stream([$response], 0.1);
-
-        $this->expectException(TransportExceptionInterface::class);
-
-        foreach ($chunks as $r => $chunk) {
-        }
-    }
-
-    public function testTimeoutWithActiveConcurrentStream()
-    {
-        $p1 = TestHttpServer::start(8067);
-        $p2 = TestHttpServer::start(8077);
-
-        $client = $this->getHttpClient(__FUNCTION__);
-        $streamingResponse = $client->request('GET', 'http://localhost:8067/max-duration');
-        $blockingResponse = $client->request('GET', 'http://localhost:8077/timeout-body', [
-            'timeout' => 0.25,
-        ]);
-
-        $this->assertSame(200, $streamingResponse->getStatusCode());
-        $this->assertSame(200, $blockingResponse->getStatusCode());
-
-        $this->expectException(TransportExceptionInterface::class);
-
-        try {
-            $blockingResponse->getContent();
-        } finally {
-            $p1->stop();
-            $p2->stop();
-        }
-    }
-
-    public function testDestruct()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        $start = microtime(true);
-        $client->request('GET', 'http://localhost:8057/timeout-long');
-        $client = null;
-        $duration = microtime(true) - $start;
-
-        $this->assertGreaterThan(1, $duration);
-        $this->assertLessThan(4, $duration);
-    }
-
-    public function testGetContentAfterDestruct()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        try {
-            $client->request('GET', 'http://localhost:8057/404');
-            $this->fail(ClientExceptionInterface::class.' expected');
-        } catch (ClientExceptionInterface $e) {
-            $this->assertSame('GET', $e->getResponse()->toArray(false)['REQUEST_METHOD']);
-        }
-    }
-
-    public function testGetEncodedContentAfterDestruct()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-
-        try {
-            $client->request('GET', 'http://localhost:8057/404-gzipped');
-            $this->fail(ClientExceptionInterface::class.' expected');
-        } catch (ClientExceptionInterface $e) {
-            $this->assertSame('some text', $e->getResponse()->getContent(false));
-        }
-    }
-
-    public function testProxy()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/', [
-            'proxy' => 'http://localhost:8057',
-        ]);
-
-        $body = $response->toArray();
-        $this->assertSame('localhost:8057', $body['HTTP_HOST']);
-        $this->assertMatchesRegularExpression('#^http://(localhost|127\.0\.0\.1):8057/$#', $body['REQUEST_URI']);
-
-        $response = $client->request('GET', 'http://localhost:8057/', [
-            'proxy' => 'http://foo:b%3Dar@localhost:8057',
-        ]);
-
-        $body = $response->toArray();
-        $this->assertSame('Basic Zm9vOmI9YXI=', $body['HTTP_PROXY_AUTHORIZATION']);
-    }
-
-    public function testNoProxy()
-    {
-        putenv('no_proxy='.$_SERVER['no_proxy'] = 'example.com, localhost');
-
-        try {
-            $client = $this->getHttpClient(__FUNCTION__);
-            $response = $client->request('GET', 'http://localhost:8057/', [
-                'proxy' => 'http://localhost:8057',
-            ]);
-
-            $body = $response->toArray();
-
-            $this->assertSame('HTTP/1.1', $body['SERVER_PROTOCOL']);
-            $this->assertSame('/', $body['REQUEST_URI']);
-            $this->assertSame('GET', $body['REQUEST_METHOD']);
-        } finally {
-            putenv('no_proxy');
-            unset($_SERVER['no_proxy']);
-        }
-    }
-
-    /**
-     * @requires extension zlib
-     */
-    public function testAutoEncodingRequest()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057');
-
-        $this->assertSame(200, $response->getStatusCode());
-
-        $headers = $response->getHeaders();
-
-        $this->assertSame(['Accept-Encoding'], $headers['vary']);
-        $this->assertStringContainsString('gzip', $headers['content-encoding'][0]);
-
-        $body = $response->toArray();
-
-        $this->assertStringContainsString('gzip', $body['HTTP_ACCEPT_ENCODING']);
-    }
-
-    public function testBaseUri()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', '../404', [
-            'base_uri' => 'http://localhost:8057/abc/',
-        ]);
-
-        $this->assertSame(404, $response->getStatusCode());
-        $this->assertSame(['application/json'], $response->getHeaders(false)['content-type']);
-    }
-
-    public function testQuery()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/?a=a', [
-            'query' => ['b' => 'b'],
-        ]);
-
-        $body = $response->toArray();
-        $this->assertSame('GET', $body['REQUEST_METHOD']);
-        $this->assertSame('/?a=a&b=b', $body['REQUEST_URI']);
-    }
-
-    public function testInformationalResponse()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/103');
-
-        $this->assertSame('Here the body', $response->getContent());
-        $this->assertSame(200, $response->getStatusCode());
-    }
-
-    public function testInformationalResponseStream()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/103');
-
-        $chunks = [];
-        foreach ($client->stream($response) as $chunk) {
-            $chunks[] = $chunk;
-        }
-
-        $this->assertSame(103, $chunks[0]->getInformationalStatus()[0]);
-        $this->assertSame(['</style.css>; rel=preload; as=style', '</script.js>; rel=preload; as=script'], $chunks[0]->getInformationalStatus()[1]['link']);
-        $this->assertTrue($chunks[1]->isFirst());
-        $this->assertSame('Here the body', $chunks[2]->getContent());
-        $this->assertTrue($chunks[3]->isLast());
-        $this->assertNull($chunks[3]->getInformationalStatus());
-
-        $this->assertSame(['date', 'content-length'], array_keys($response->getHeaders()));
-        $this->assertContains('Link: </style.css>; rel=preload; as=style', $response->getInfo('response_headers'));
-    }
-
-    /**
-     * @requires extension zlib
-     */
-    public function testUserlandEncodingRequest()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057', [
-            'headers' => ['Accept-Encoding' => 'gzip'],
-        ]);
-
-        $headers = $response->getHeaders();
-
-        $this->assertSame(['Accept-Encoding'], $headers['vary']);
-        $this->assertStringContainsString('gzip', $headers['content-encoding'][0]);
-
-        $body = $response->getContent();
-        $this->assertSame("\x1F", $body[0]);
-
-        $body = json_decode(gzdecode($body), true);
-        $this->assertSame('gzip', $body['HTTP_ACCEPT_ENCODING']);
-    }
-
-    /**
-     * @requires extension zlib
-     */
-    public function testGzipBroken()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/gzip-broken');
-
-        $this->expectException(TransportExceptionInterface::class);
-        $response->getContent();
-    }
-
-    public function testMaxDuration()
-    {
-        $client = $this->getHttpClient(__FUNCTION__);
-        $response = $client->request('GET', 'http://localhost:8057/max-duration', [
-            'max_duration' => 0.1,
-        ]);
-
-        $start = microtime(true);
-
-        try {
-            $response->getContent();
-        } catch (TransportExceptionInterface $e) {
-            $this->addToAssertionCount(1);
-        }
-
-        $duration = microtime(true) - $start;
-
-        $this->assertLessThan(10, $duration);
-    }
-}
diff --git a/vendor/symfony/http-client-contracts/Test/TestHttpServer.php b/vendor/symfony/http-client-contracts/Test/TestHttpServer.php
deleted file mode 100644
index 1af9130f964f61f56ad98a011342a0fd844f5660..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/Test/TestHttpServer.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Contracts\HttpClient\Test;
-
-use Symfony\Component\Process\PhpExecutableFinder;
-use Symfony\Component\Process\Process;
-
-class TestHttpServer
-{
-    private static $process = [];
-
-    public static function start(int $port = 8057)
-    {
-        if (isset(self::$process[$port])) {
-            self::$process[$port]->stop();
-        } else {
-            register_shutdown_function(static function () use ($port) {
-                self::$process[$port]->stop();
-            });
-        }
-
-        $finder = new PhpExecutableFinder();
-        $process = new Process(array_merge([$finder->find(false)], $finder->findArguments(), ['-dopcache.enable=0', '-dvariables_order=EGPCS', '-S', '127.0.0.1:'.$port]));
-        $process->setWorkingDirectory(__DIR__.'/Fixtures/web');
-        $process->start();
-        self::$process[$port] = $process;
-
-        do {
-            usleep(50000);
-        } while (!@fopen('http://127.0.0.1:'.$port, 'r'));
-
-        return $process;
-    }
-}
diff --git a/vendor/symfony/http-client-contracts/composer.json b/vendor/symfony/http-client-contracts/composer.json
deleted file mode 100644
index 2dc9990e1e886aee0f5aebfef4c949f17577c982..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-client-contracts/composer.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-    "name": "symfony/http-client-contracts",
-    "type": "library",
-    "description": "Generic abstractions related to HTTP clients",
-    "keywords": ["abstractions", "contracts", "decoupling", "interfaces", "interoperability", "standards"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Nicolas Grekas",
-            "email": "p@tchwork.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.2.5"
-    },
-    "suggest": {
-        "symfony/http-client-implementation": ""
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Contracts\\HttpClient\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-version": "2.3",
-        "branch-alias": {
-            "dev-main": "2.3-dev"
-        },
-        "thanks": {
-            "name": "symfony/contracts",
-            "url": "https://github.com/symfony/contracts"
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/AcceptHeader.php b/vendor/symfony/http-foundation/AcceptHeader.php
deleted file mode 100644
index c3c8d0c3560e19708e7a8c1640a941ca7632c3c1..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/AcceptHeader.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-// Help opcache.preload discover always-needed symbols
-class_exists(AcceptHeaderItem::class);
-
-/**
- * Represents an Accept-* header.
- *
- * An accept header is compound with a list of items,
- * sorted by descending quality.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- */
-class AcceptHeader
-{
-    /**
-     * @var AcceptHeaderItem[]
-     */
-    private $items = [];
-
-    /**
-     * @var bool
-     */
-    private $sorted = true;
-
-    /**
-     * @param AcceptHeaderItem[] $items
-     */
-    public function __construct(array $items)
-    {
-        foreach ($items as $item) {
-            $this->add($item);
-        }
-    }
-
-    /**
-     * Builds an AcceptHeader instance from a string.
-     *
-     * @param string $headerValue
-     *
-     * @return self
-     */
-    public static function fromString($headerValue)
-    {
-        $index = 0;
-
-        $parts = HeaderUtils::split((string) $headerValue, ',;=');
-
-        return new self(array_map(function ($subParts) use (&$index) {
-            $part = array_shift($subParts);
-            $attributes = HeaderUtils::combine($subParts);
-
-            $item = new AcceptHeaderItem($part[0], $attributes);
-            $item->setIndex($index++);
-
-            return $item;
-        }, $parts));
-    }
-
-    /**
-     * Returns header value's string representation.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return implode(',', $this->items);
-    }
-
-    /**
-     * Tests if header has given value.
-     *
-     * @param string $value
-     *
-     * @return bool
-     */
-    public function has($value)
-    {
-        return isset($this->items[$value]);
-    }
-
-    /**
-     * Returns given value's item, if exists.
-     *
-     * @param string $value
-     *
-     * @return AcceptHeaderItem|null
-     */
-    public function get($value)
-    {
-        return $this->items[$value] ?? $this->items[explode('/', $value)[0].'/*'] ?? $this->items['*/*'] ?? $this->items['*'] ?? null;
-    }
-
-    /**
-     * Adds an item.
-     *
-     * @return $this
-     */
-    public function add(AcceptHeaderItem $item)
-    {
-        $this->items[$item->getValue()] = $item;
-        $this->sorted = false;
-
-        return $this;
-    }
-
-    /**
-     * Returns all items.
-     *
-     * @return AcceptHeaderItem[]
-     */
-    public function all()
-    {
-        $this->sort();
-
-        return $this->items;
-    }
-
-    /**
-     * Filters items on their value using given regex.
-     *
-     * @param string $pattern
-     *
-     * @return self
-     */
-    public function filter($pattern)
-    {
-        return new self(array_filter($this->items, function (AcceptHeaderItem $item) use ($pattern) {
-            return preg_match($pattern, $item->getValue());
-        }));
-    }
-
-    /**
-     * Returns first item.
-     *
-     * @return AcceptHeaderItem|null
-     */
-    public function first()
-    {
-        $this->sort();
-
-        return !empty($this->items) ? reset($this->items) : null;
-    }
-
-    /**
-     * Sorts items by descending quality.
-     */
-    private function sort(): void
-    {
-        if (!$this->sorted) {
-            uasort($this->items, function (AcceptHeaderItem $a, AcceptHeaderItem $b) {
-                $qA = $a->getQuality();
-                $qB = $b->getQuality();
-
-                if ($qA === $qB) {
-                    return $a->getIndex() > $b->getIndex() ? 1 : -1;
-                }
-
-                return $qA > $qB ? -1 : 1;
-            });
-
-            $this->sorted = true;
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/AcceptHeaderItem.php b/vendor/symfony/http-foundation/AcceptHeaderItem.php
deleted file mode 100644
index 954aac60145442c5b46c08951bb8fbea58a2a5ee..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/AcceptHeaderItem.php
+++ /dev/null
@@ -1,191 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * Represents an Accept-* header item.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- */
-class AcceptHeaderItem
-{
-    private $value;
-    private $quality = 1.0;
-    private $index = 0;
-    private $attributes = [];
-
-    public function __construct(string $value, array $attributes = [])
-    {
-        $this->value = $value;
-        foreach ($attributes as $name => $value) {
-            $this->setAttribute($name, $value);
-        }
-    }
-
-    /**
-     * Builds an AcceptHeaderInstance instance from a string.
-     *
-     * @param string $itemValue
-     *
-     * @return self
-     */
-    public static function fromString($itemValue)
-    {
-        $parts = HeaderUtils::split($itemValue, ';=');
-
-        $part = array_shift($parts);
-        $attributes = HeaderUtils::combine($parts);
-
-        return new self($part[0], $attributes);
-    }
-
-    /**
-     * Returns header value's string representation.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        $string = $this->value.($this->quality < 1 ? ';q='.$this->quality : '');
-        if (\count($this->attributes) > 0) {
-            $string .= '; '.HeaderUtils::toString($this->attributes, ';');
-        }
-
-        return $string;
-    }
-
-    /**
-     * Set the item value.
-     *
-     * @param string $value
-     *
-     * @return $this
-     */
-    public function setValue($value)
-    {
-        $this->value = $value;
-
-        return $this;
-    }
-
-    /**
-     * Returns the item value.
-     *
-     * @return string
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Set the item quality.
-     *
-     * @param float $quality
-     *
-     * @return $this
-     */
-    public function setQuality($quality)
-    {
-        $this->quality = $quality;
-
-        return $this;
-    }
-
-    /**
-     * Returns the item quality.
-     *
-     * @return float
-     */
-    public function getQuality()
-    {
-        return $this->quality;
-    }
-
-    /**
-     * Set the item index.
-     *
-     * @param int $index
-     *
-     * @return $this
-     */
-    public function setIndex($index)
-    {
-        $this->index = $index;
-
-        return $this;
-    }
-
-    /**
-     * Returns the item index.
-     *
-     * @return int
-     */
-    public function getIndex()
-    {
-        return $this->index;
-    }
-
-    /**
-     * Tests if an attribute exists.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    public function hasAttribute($name)
-    {
-        return isset($this->attributes[$name]);
-    }
-
-    /**
-     * Returns an attribute by its name.
-     *
-     * @param string $name
-     * @param mixed  $default
-     *
-     * @return mixed
-     */
-    public function getAttribute($name, $default = null)
-    {
-        return isset($this->attributes[$name]) ? $this->attributes[$name] : $default;
-    }
-
-    /**
-     * Returns all attributes.
-     *
-     * @return array
-     */
-    public function getAttributes()
-    {
-        return $this->attributes;
-    }
-
-    /**
-     * Set an attribute.
-     *
-     * @param string $name
-     * @param string $value
-     *
-     * @return $this
-     */
-    public function setAttribute($name, $value)
-    {
-        if ('q' === $name) {
-            $this->quality = (float) $value;
-        } else {
-            $this->attributes[$name] = (string) $value;
-        }
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/http-foundation/ApacheRequest.php b/vendor/symfony/http-foundation/ApacheRequest.php
deleted file mode 100644
index 5d9426879de183ac221a70380469a73dfa0d8517..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/ApacheRequest.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ApacheRequest::class, Request::class), \E_USER_DEPRECATED);
-
-/**
- * Request represents an HTTP request from an Apache server.
- *
- * @deprecated since Symfony 4.4. Use the Request class instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ApacheRequest extends Request
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function prepareRequestUri()
-    {
-        return $this->server->get('REQUEST_URI');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function prepareBaseUrl()
-    {
-        $baseUrl = $this->server->get('SCRIPT_NAME');
-
-        if (false === strpos($this->server->get('REQUEST_URI'), $baseUrl)) {
-            // assume mod_rewrite
-            return rtrim(\dirname($baseUrl), '/\\');
-        }
-
-        return $baseUrl;
-    }
-}
diff --git a/vendor/symfony/http-foundation/BinaryFileResponse.php b/vendor/symfony/http-foundation/BinaryFileResponse.php
deleted file mode 100644
index 07ecb1fc8a749d1abe7dab0d789c2244f8310298..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/BinaryFileResponse.php
+++ /dev/null
@@ -1,362 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-use Symfony\Component\HttpFoundation\File\Exception\FileException;
-use Symfony\Component\HttpFoundation\File\File;
-
-/**
- * BinaryFileResponse represents an HTTP response delivering a file.
- *
- * @author Niklas Fiekas <niklas.fiekas@tu-clausthal.de>
- * @author stealth35 <stealth35-php@live.fr>
- * @author Igor Wiedler <igor@wiedler.ch>
- * @author Jordan Alliot <jordan.alliot@gmail.com>
- * @author Sergey Linnik <linniksa@gmail.com>
- */
-class BinaryFileResponse extends Response
-{
-    protected static $trustXSendfileTypeHeader = false;
-
-    /**
-     * @var File
-     */
-    protected $file;
-    protected $offset = 0;
-    protected $maxlen = -1;
-    protected $deleteFileAfterSend = false;
-
-    /**
-     * @param \SplFileInfo|string $file               The file to stream
-     * @param int                 $status             The response status code
-     * @param array               $headers            An array of response headers
-     * @param bool                $public             Files are public by default
-     * @param string|null         $contentDisposition The type of Content-Disposition to set automatically with the filename
-     * @param bool                $autoEtag           Whether the ETag header should be automatically set
-     * @param bool                $autoLastModified   Whether the Last-Modified header should be automatically set
-     */
-    public function __construct($file, int $status = 200, array $headers = [], bool $public = true, string $contentDisposition = null, bool $autoEtag = false, bool $autoLastModified = true)
-    {
-        parent::__construct(null, $status, $headers);
-
-        $this->setFile($file, $contentDisposition, $autoEtag, $autoLastModified);
-
-        if ($public) {
-            $this->setPublic();
-        }
-    }
-
-    /**
-     * @param \SplFileInfo|string $file               The file to stream
-     * @param int                 $status             The response status code
-     * @param array               $headers            An array of response headers
-     * @param bool                $public             Files are public by default
-     * @param string|null         $contentDisposition The type of Content-Disposition to set automatically with the filename
-     * @param bool                $autoEtag           Whether the ETag header should be automatically set
-     * @param bool                $autoLastModified   Whether the Last-Modified header should be automatically set
-     *
-     * @return static
-     */
-    public static function create($file = null, $status = 200, $headers = [], $public = true, $contentDisposition = null, $autoEtag = false, $autoLastModified = true)
-    {
-        return new static($file, $status, $headers, $public, $contentDisposition, $autoEtag, $autoLastModified);
-    }
-
-    /**
-     * Sets the file to stream.
-     *
-     * @param \SplFileInfo|string $file               The file to stream
-     * @param string              $contentDisposition
-     * @param bool                $autoEtag
-     * @param bool                $autoLastModified
-     *
-     * @return $this
-     *
-     * @throws FileException
-     */
-    public function setFile($file, $contentDisposition = null, $autoEtag = false, $autoLastModified = true)
-    {
-        if (!$file instanceof File) {
-            if ($file instanceof \SplFileInfo) {
-                $file = new File($file->getPathname());
-            } else {
-                $file = new File((string) $file);
-            }
-        }
-
-        if (!$file->isReadable()) {
-            throw new FileException('File must be readable.');
-        }
-
-        $this->file = $file;
-
-        if ($autoEtag) {
-            $this->setAutoEtag();
-        }
-
-        if ($autoLastModified) {
-            $this->setAutoLastModified();
-        }
-
-        if ($contentDisposition) {
-            $this->setContentDisposition($contentDisposition);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Gets the file.
-     *
-     * @return File The file to stream
-     */
-    public function getFile()
-    {
-        return $this->file;
-    }
-
-    /**
-     * Automatically sets the Last-Modified header according the file modification date.
-     */
-    public function setAutoLastModified()
-    {
-        $this->setLastModified(\DateTime::createFromFormat('U', $this->file->getMTime()));
-
-        return $this;
-    }
-
-    /**
-     * Automatically sets the ETag header according to the checksum of the file.
-     */
-    public function setAutoEtag()
-    {
-        $this->setEtag(base64_encode(hash_file('sha256', $this->file->getPathname(), true)));
-
-        return $this;
-    }
-
-    /**
-     * Sets the Content-Disposition header with the given filename.
-     *
-     * @param string $disposition      ResponseHeaderBag::DISPOSITION_INLINE or ResponseHeaderBag::DISPOSITION_ATTACHMENT
-     * @param string $filename         Optionally use this UTF-8 encoded filename instead of the real name of the file
-     * @param string $filenameFallback A fallback filename, containing only ASCII characters. Defaults to an automatically encoded filename
-     *
-     * @return $this
-     */
-    public function setContentDisposition($disposition, $filename = '', $filenameFallback = '')
-    {
-        if ('' === $filename) {
-            $filename = $this->file->getFilename();
-        }
-
-        if ('' === $filenameFallback && (!preg_match('/^[\x20-\x7e]*$/', $filename) || false !== strpos($filename, '%'))) {
-            $encoding = mb_detect_encoding($filename, null, true) ?: '8bit';
-
-            for ($i = 0, $filenameLength = mb_strlen($filename, $encoding); $i < $filenameLength; ++$i) {
-                $char = mb_substr($filename, $i, 1, $encoding);
-
-                if ('%' === $char || \ord($char) < 32 || \ord($char) > 126) {
-                    $filenameFallback .= '_';
-                } else {
-                    $filenameFallback .= $char;
-                }
-            }
-        }
-
-        $dispositionHeader = $this->headers->makeDisposition($disposition, $filename, $filenameFallback);
-        $this->headers->set('Content-Disposition', $dispositionHeader);
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function prepare(Request $request)
-    {
-        if (!$this->headers->has('Content-Type')) {
-            $this->headers->set('Content-Type', $this->file->getMimeType() ?: 'application/octet-stream');
-        }
-
-        if ('HTTP/1.0' !== $request->server->get('SERVER_PROTOCOL')) {
-            $this->setProtocolVersion('1.1');
-        }
-
-        $this->ensureIEOverSSLCompatibility($request);
-
-        $this->offset = 0;
-        $this->maxlen = -1;
-
-        if (false === $fileSize = $this->file->getSize()) {
-            return $this;
-        }
-        $this->headers->set('Content-Length', $fileSize);
-
-        if (!$this->headers->has('Accept-Ranges')) {
-            // Only accept ranges on safe HTTP methods
-            $this->headers->set('Accept-Ranges', $request->isMethodSafe() ? 'bytes' : 'none');
-        }
-
-        if (self::$trustXSendfileTypeHeader && $request->headers->has('X-Sendfile-Type')) {
-            // Use X-Sendfile, do not send any content.
-            $type = $request->headers->get('X-Sendfile-Type');
-            $path = $this->file->getRealPath();
-            // Fall back to scheme://path for stream wrapped locations.
-            if (false === $path) {
-                $path = $this->file->getPathname();
-            }
-            if ('x-accel-redirect' === strtolower($type)) {
-                // Do X-Accel-Mapping substitutions.
-                // @link https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/#x-accel-redirect
-                $parts = HeaderUtils::split($request->headers->get('X-Accel-Mapping', ''), ',=');
-                foreach ($parts as $part) {
-                    list($pathPrefix, $location) = $part;
-                    if (substr($path, 0, \strlen($pathPrefix)) === $pathPrefix) {
-                        $path = $location.substr($path, \strlen($pathPrefix));
-                        // Only set X-Accel-Redirect header if a valid URI can be produced
-                        // as nginx does not serve arbitrary file paths.
-                        $this->headers->set($type, $path);
-                        $this->maxlen = 0;
-                        break;
-                    }
-                }
-            } else {
-                $this->headers->set($type, $path);
-                $this->maxlen = 0;
-            }
-        } elseif ($request->headers->has('Range') && $request->isMethod('GET')) {
-            // Process the range headers.
-            if (!$request->headers->has('If-Range') || $this->hasValidIfRangeHeader($request->headers->get('If-Range'))) {
-                $range = $request->headers->get('Range');
-
-                if (0 === strpos($range, 'bytes=')) {
-                    list($start, $end) = explode('-', substr($range, 6), 2) + [0];
-
-                    $end = ('' === $end) ? $fileSize - 1 : (int) $end;
-
-                    if ('' === $start) {
-                        $start = $fileSize - $end;
-                        $end = $fileSize - 1;
-                    } else {
-                        $start = (int) $start;
-                    }
-
-                    if ($start <= $end) {
-                        $end = min($end, $fileSize - 1);
-                        if ($start < 0 || $start > $end) {
-                            $this->setStatusCode(416);
-                            $this->headers->set('Content-Range', sprintf('bytes */%s', $fileSize));
-                        } elseif ($end - $start < $fileSize - 1) {
-                            $this->maxlen = $end < $fileSize ? $end - $start + 1 : -1;
-                            $this->offset = $start;
-
-                            $this->setStatusCode(206);
-                            $this->headers->set('Content-Range', sprintf('bytes %s-%s/%s', $start, $end, $fileSize));
-                            $this->headers->set('Content-Length', $end - $start + 1);
-                        }
-                    }
-                }
-            }
-        }
-
-        return $this;
-    }
-
-    private function hasValidIfRangeHeader(?string $header): bool
-    {
-        if ($this->getEtag() === $header) {
-            return true;
-        }
-
-        if (null === $lastModified = $this->getLastModified()) {
-            return false;
-        }
-
-        return $lastModified->format('D, d M Y H:i:s').' GMT' === $header;
-    }
-
-    /**
-     * Sends the file.
-     *
-     * {@inheritdoc}
-     */
-    public function sendContent()
-    {
-        if (!$this->isSuccessful()) {
-            return parent::sendContent();
-        }
-
-        if (0 === $this->maxlen) {
-            return $this;
-        }
-
-        $out = fopen('php://output', 'wb');
-        $file = fopen($this->file->getPathname(), 'rb');
-
-        stream_copy_to_stream($file, $out, $this->maxlen, $this->offset);
-
-        fclose($out);
-        fclose($file);
-
-        if ($this->deleteFileAfterSend && file_exists($this->file->getPathname())) {
-            unlink($this->file->getPathname());
-        }
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws \LogicException when the content is not null
-     */
-    public function setContent($content)
-    {
-        if (null !== $content) {
-            throw new \LogicException('The content cannot be set on a BinaryFileResponse instance.');
-        }
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContent()
-    {
-        return false;
-    }
-
-    /**
-     * Trust X-Sendfile-Type header.
-     */
-    public static function trustXSendfileTypeHeader()
-    {
-        self::$trustXSendfileTypeHeader = true;
-    }
-
-    /**
-     * If this is set to true, the file will be unlinked after the request is sent
-     * Note: If the X-Sendfile header is used, the deleteFileAfterSend setting will not be used.
-     *
-     * @param bool $shouldDelete
-     *
-     * @return $this
-     */
-    public function deleteFileAfterSend($shouldDelete = true)
-    {
-        $this->deleteFileAfterSend = $shouldDelete;
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/http-foundation/CHANGELOG.md b/vendor/symfony/http-foundation/CHANGELOG.md
deleted file mode 100644
index 3fa73a26a907496cdf3103f5d2a11fc4f7783db8..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/CHANGELOG.md
+++ /dev/null
@@ -1,237 +0,0 @@
-CHANGELOG
-=========
-
-4.4.0
------
-
- * passing arguments to `Request::isMethodSafe()` is deprecated.
- * `ApacheRequest` is deprecated, use the `Request` class instead.
- * passing a third argument to `HeaderBag::get()` is deprecated, use method `all()` instead
- * [BC BREAK] `PdoSessionHandler` with MySQL changed the type of the lifetime column,
-   make sure to run `ALTER TABLE sessions MODIFY sess_lifetime INTEGER UNSIGNED NOT NULL` to
-   update your database.
- * `PdoSessionHandler` now precalculates the expiry timestamp in the lifetime column,
-    make sure to run `CREATE INDEX EXPIRY ON sessions (sess_lifetime)` to update your database
-    to speed up garbage collection of expired sessions.
- * added `SessionHandlerFactory` to create session handlers with a DSN
- * added `IpUtils::anonymize()` to help with GDPR compliance.
-
-4.3.0
------
-
- * added PHPUnit constraints: `RequestAttributeValueSame`, `ResponseCookieValueSame`, `ResponseHasCookie`,
-   `ResponseHasHeader`, `ResponseHeaderSame`, `ResponseIsRedirected`, `ResponseIsSuccessful`, and `ResponseStatusCodeSame`
- * deprecated `MimeTypeGuesserInterface` and `ExtensionGuesserInterface` in favor of `Symfony\Component\Mime\MimeTypesInterface`.
- * deprecated `MimeType` and `MimeTypeExtensionGuesser` in favor of `Symfony\Component\Mime\MimeTypes`.
- * deprecated `FileBinaryMimeTypeGuesser` in favor of `Symfony\Component\Mime\FileBinaryMimeTypeGuesser`.
- * deprecated `FileinfoMimeTypeGuesser` in favor of `Symfony\Component\Mime\FileinfoMimeTypeGuesser`.
- * added `UrlHelper` that allows to get an absolute URL and a relative path for a given path
-
-4.2.0
------
-
- * the default value of the "$secure" and "$samesite" arguments of Cookie's constructor
-   will respectively change from "false" to "null" and from "null" to "lax" in Symfony
-   5.0, you should define their values explicitly or use "Cookie::create()" instead.
- * added `matchPort()` in RequestMatcher
-
-4.1.3
------
-
- * [BC BREAK] Support for the IIS-only `X_ORIGINAL_URL` and `X_REWRITE_URL`
-   HTTP headers has been dropped for security reasons.
-
-4.1.0
------
-
- * Query string normalization uses `parse_str()` instead of custom parsing logic.
- * Passing the file size to the constructor of the `UploadedFile` class is deprecated.
- * The `getClientSize()` method of the `UploadedFile` class is deprecated. Use `getSize()` instead.
- * added `RedisSessionHandler` to use Redis as a session storage
- * The `get()` method of the `AcceptHeader` class now takes into account the
-   `*` and `*/*` default values (if they are present in the Accept HTTP header)
-   when looking for items.
- * deprecated `Request::getSession()` when no session has been set. Use `Request::hasSession()` instead.
- * added `CannotWriteFileException`, `ExtensionFileException`, `FormSizeFileException`,
-   `IniSizeFileException`, `NoFileException`, `NoTmpDirFileException`, `PartialFileException` to
-   handle failed `UploadedFile`.
- * added `MigratingSessionHandler` for migrating between two session handlers without losing sessions
- * added `HeaderUtils`.
-
-4.0.0
------
-
- * the `Request::setTrustedHeaderName()` and `Request::getTrustedHeaderName()`
-   methods have been removed
- * the `Request::HEADER_CLIENT_IP` constant has been removed, use
-   `Request::HEADER_X_FORWARDED_FOR` instead
- * the `Request::HEADER_CLIENT_HOST` constant has been removed, use
-   `Request::HEADER_X_FORWARDED_HOST` instead
- * the `Request::HEADER_CLIENT_PROTO` constant has been removed, use
-   `Request::HEADER_X_FORWARDED_PROTO` instead
- * the `Request::HEADER_CLIENT_PORT` constant has been removed, use
-   `Request::HEADER_X_FORWARDED_PORT` instead
- * checking for cacheable HTTP methods using the `Request::isMethodSafe()`
-   method (by not passing `false` as its argument) is not supported anymore and
-   throws a `\BadMethodCallException`
- * the `WriteCheckSessionHandler`, `NativeSessionHandler` and `NativeProxy` classes have been removed
- * setting session save handlers that do not implement `\SessionHandlerInterface` in
-   `NativeSessionStorage::setSaveHandler()` is not supported anymore and throws a
-   `\TypeError`
-
-3.4.0
------
-
- * implemented PHP 7.0's `SessionUpdateTimestampHandlerInterface` with a new
-   `AbstractSessionHandler` base class and a new `StrictSessionHandler` wrapper
- * deprecated the `WriteCheckSessionHandler`, `NativeSessionHandler` and `NativeProxy` classes
- * deprecated setting session save handlers that do not implement `\SessionHandlerInterface` in `NativeSessionStorage::setSaveHandler()`
- * deprecated using `MongoDbSessionHandler` with the legacy mongo extension; use it with the mongodb/mongodb package and ext-mongodb instead
- * deprecated `MemcacheSessionHandler`; use `MemcachedSessionHandler` instead
-
-3.3.0
------
-
- * the `Request::setTrustedProxies()` method takes a new `$trustedHeaderSet` argument,
-   see https://symfony.com/doc/current/deployment/proxies.html for more info,
- * deprecated the `Request::setTrustedHeaderName()` and `Request::getTrustedHeaderName()` methods,
- * added `File\Stream`, to be passed to `BinaryFileResponse` when the size of the served file is unknown,
-   disabling `Range` and `Content-Length` handling, switching to chunked encoding instead
- * added the `Cookie::fromString()` method that allows to create a cookie from a
-   raw header string
-
-3.1.0
------
-
- * Added support for creating `JsonResponse` with a string of JSON data
-
-3.0.0
------
-
- * The precedence of parameters returned from `Request::get()` changed from "GET, PATH, BODY" to "PATH, GET, BODY"
-
-2.8.0
------
-
- * Finding deep items in `ParameterBag::get()` is deprecated since version 2.8 and
-   will be removed in 3.0.
-
-2.6.0
------
-
- * PdoSessionHandler changes
-   - implemented different session locking strategies to prevent loss of data by concurrent access to the same session
-   - [BC BREAK] save session data in a binary column without base64_encode
-   - [BC BREAK] added lifetime column to the session table which allows to have different lifetimes for each session
-   - implemented lazy connections that are only opened when a session is used by either passing a dsn string
-     explicitly or falling back to session.save_path ini setting
-   - added a createTable method that initializes a correctly defined table depending on the database vendor
-
-2.5.0
------
-
- * added `JsonResponse::setEncodingOptions()` & `JsonResponse::getEncodingOptions()` for easier manipulation
-   of the options used while encoding data to JSON format.
-
-2.4.0
------
-
- * added RequestStack
- * added Request::getEncodings()
- * added accessors methods to session handlers
-
-2.3.0
------
-
- * added support for ranges of IPs in trusted proxies
- * `UploadedFile::isValid` now returns false if the file was not uploaded via HTTP (in a non-test mode)
- * Improved error-handling of `\Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler`
-   to ensure the supplied PDO handler throws Exceptions on error (as the class expects). Added related test cases
-   to verify that Exceptions are properly thrown when the PDO queries fail.
-
-2.2.0
------
-
- * fixed the Request::create() precedence (URI information always take precedence now)
- * added Request::getTrustedProxies()
- * deprecated Request::isProxyTrusted()
- * [BC BREAK] JsonResponse does not turn a top level empty array to an object anymore, use an ArrayObject to enforce objects
- * added a IpUtils class to check if an IP belongs to a CIDR
- * added Request::getRealMethod() to get the "real" HTTP method (getMethod() returns the "intended" HTTP method)
- * disabled _method request parameter support by default (call Request::enableHttpMethodParameterOverride() to
-   enable it, and Request::getHttpMethodParameterOverride() to check if it is supported)
- * Request::splitHttpAcceptHeader() method is deprecated and will be removed in 2.3
- * Deprecated Flashbag::count() and \Countable interface, will be removed in 2.3
-
-2.1.0
------
-
- * added Request::getSchemeAndHttpHost() and Request::getUserInfo()
- * added a fluent interface to the Response class
- * added Request::isProxyTrusted()
- * added JsonResponse
- * added a getTargetUrl method to RedirectResponse
- * added support for streamed responses
- * made Response::prepare() method the place to enforce HTTP specification
- * [BC BREAK] moved management of the locale from the Session class to the Request class
- * added a generic access to the PHP built-in filter mechanism: ParameterBag::filter()
- * made FileBinaryMimeTypeGuesser command configurable
- * added Request::getUser() and Request::getPassword()
- * added support for the PATCH method in Request
- * removed the ContentTypeMimeTypeGuesser class as it is deprecated and never used on PHP 5.3
- * added ResponseHeaderBag::makeDisposition() (implements RFC 6266)
- * made mimetype to extension conversion configurable
- * [BC BREAK] Moved all session related classes and interfaces into own namespace, as
-   `Symfony\Component\HttpFoundation\Session` and renamed classes accordingly.
-   Session handlers are located in the subnamespace `Symfony\Component\HttpFoundation\Session\Handler`.
- * SessionHandlers must implement `\SessionHandlerInterface` or extend from the
-   `Symfony\Component\HttpFoundation\Storage\Handler\NativeSessionHandler` base class.
- * Added internal storage driver proxy mechanism for forward compatibility with
-   PHP 5.4 `\SessionHandler` class.
- * Added session handlers for custom Memcache, Memcached and Null session save handlers.
- * [BC BREAK] Removed `NativeSessionStorage` and replaced with `NativeFileSessionHandler`.
- * [BC BREAK] `SessionStorageInterface` methods removed: `write()`, `read()` and
-   `remove()`.  Added `getBag()`, `registerBag()`.  The `NativeSessionStorage` class
-   is a mediator for the session storage internals including the session handlers
-   which do the real work of participating in the internal PHP session workflow.
- * [BC BREAK] Introduced mock implementations of `SessionStorage` to enable unit
-   and functional testing without starting real PHP sessions.  Removed
-   `ArraySessionStorage`, and replaced with `MockArraySessionStorage` for unit
-   tests; removed `FilesystemSessionStorage`, and replaced with`MockFileSessionStorage`
-   for functional tests.  These do not interact with global session ini
-   configuration values, session functions or `$_SESSION` superglobal. This means
-   they can be configured directly allowing multiple instances to work without
-   conflicting in the same PHP process.
- * [BC BREAK] Removed the `close()` method from the `Session` class, as this is
-   now redundant.
- * Deprecated the following methods from the Session class: `setFlash()`, `setFlashes()`
-   `getFlash()`, `hasFlash()`, and `removeFlash()`. Use `getFlashBag()` instead
-   which returns a `FlashBagInterface`.
- * `Session->clear()` now only clears session attributes as before it cleared
-   flash messages and attributes. `Session->getFlashBag()->all()` clears flashes now.
- * Session data is now managed by `SessionBagInterface` to better encapsulate
-   session data.
- * Refactored session attribute and flash messages system to their own
-  `SessionBagInterface` implementations.
- * Added `FlashBag`. Flashes expire when retrieved by `get()` or `all()`. This
-   implementation is ESI compatible.
- * Added `AutoExpireFlashBag` (default) to replicate Symfony 2.0.x auto expire
-   behavior of messages auto expiring after one page page load.  Messages must
-   be retrieved by `get()` or `all()`.
- * Added `Symfony\Component\HttpFoundation\Attribute\AttributeBag` to replicate
-   attributes storage behavior from 2.0.x (default).
- * Added `Symfony\Component\HttpFoundation\Attribute\NamespacedAttributeBag` for
-   namespace session attributes.
- * Flash API can stores messages in an array so there may be multiple messages
-   per flash type.  The old `Session` class API remains without BC break as it
-   will allow single messages as before.
- * Added basic session meta-data to the session to record session create time,
-   last updated time, and the lifetime of the session cookie that was provided
-   to the client.
- * Request::getClientIp() method doesn't take a parameter anymore but bases
-   itself on the trustProxy parameter.
- * Added isMethod() to Request object.
- * [BC BREAK] The methods `getPathInfo()`, `getBaseUrl()` and `getBasePath()` of
-   a `Request` now all return a raw value (vs a urldecoded value before). Any call
-   to one of these methods must be checked and wrapped in a `rawurldecode()` if
-   needed.
diff --git a/vendor/symfony/http-foundation/Cookie.php b/vendor/symfony/http-foundation/Cookie.php
deleted file mode 100644
index 70eb5ea8845b5d14dffb5920fdf04019a1a331bd..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Cookie.php
+++ /dev/null
@@ -1,309 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * Represents a cookie.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class Cookie
-{
-    const SAMESITE_NONE = 'none';
-    const SAMESITE_LAX = 'lax';
-    const SAMESITE_STRICT = 'strict';
-
-    protected $name;
-    protected $value;
-    protected $domain;
-    protected $expire;
-    protected $path;
-    protected $secure;
-    protected $httpOnly;
-
-    private $raw;
-    private $sameSite;
-    private $secureDefault = false;
-
-    private static $reservedCharsList = "=,; \t\r\n\v\f";
-    private static $reservedCharsFrom = ['=', ',', ';', ' ', "\t", "\r", "\n", "\v", "\f"];
-    private static $reservedCharsTo = ['%3D', '%2C', '%3B', '%20', '%09', '%0D', '%0A', '%0B', '%0C'];
-
-    /**
-     * Creates cookie from raw header string.
-     *
-     * @param string $cookie
-     * @param bool   $decode
-     *
-     * @return static
-     */
-    public static function fromString($cookie, $decode = false)
-    {
-        $data = [
-            'expires' => 0,
-            'path' => '/',
-            'domain' => null,
-            'secure' => false,
-            'httponly' => false,
-            'raw' => !$decode,
-            'samesite' => null,
-        ];
-
-        $parts = HeaderUtils::split($cookie, ';=');
-        $part = array_shift($parts);
-
-        $name = $decode ? urldecode($part[0]) : $part[0];
-        $value = isset($part[1]) ? ($decode ? urldecode($part[1]) : $part[1]) : null;
-
-        $data = HeaderUtils::combine($parts) + $data;
-
-        if (isset($data['max-age'])) {
-            $data['expires'] = time() + (int) $data['max-age'];
-        }
-
-        return new static($name, $value, $data['expires'], $data['path'], $data['domain'], $data['secure'], $data['httponly'], $data['raw'], $data['samesite']);
-    }
-
-    public static function create(string $name, string $value = null, $expire = 0, ?string $path = '/', string $domain = null, bool $secure = null, bool $httpOnly = true, bool $raw = false, ?string $sameSite = self::SAMESITE_LAX): self
-    {
-        return new self($name, $value, $expire, $path, $domain, $secure, $httpOnly, $raw, $sameSite);
-    }
-
-    /**
-     * @param string                        $name     The name of the cookie
-     * @param string|null                   $value    The value of the cookie
-     * @param int|string|\DateTimeInterface $expire   The time the cookie expires
-     * @param string                        $path     The path on the server in which the cookie will be available on
-     * @param string|null                   $domain   The domain that the cookie is available to
-     * @param bool|null                     $secure   Whether the client should send back the cookie only over HTTPS or null to auto-enable this when the request is already using HTTPS
-     * @param bool                          $httpOnly Whether the cookie will be made accessible only through the HTTP protocol
-     * @param bool                          $raw      Whether the cookie value should be sent with no url encoding
-     * @param string|null                   $sameSite Whether the cookie will be available for cross-site requests
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function __construct(string $name, string $value = null, $expire = 0, ?string $path = '/', string $domain = null, ?bool $secure = false, bool $httpOnly = true, bool $raw = false, string $sameSite = null)
-    {
-        if (9 > \func_num_args()) {
-            @trigger_error(sprintf('The default value of the "$secure" and "$samesite" arguments of "%s"\'s constructor will respectively change from "false" to "null" and from "null" to "lax" in Symfony 5.0, you should define their values explicitly or use "Cookie::create()" instead.', __METHOD__), \E_USER_DEPRECATED);
-        }
-
-        // from PHP source code
-        if ($raw && false !== strpbrk($name, self::$reservedCharsList)) {
-            throw new \InvalidArgumentException(sprintf('The cookie name "%s" contains invalid characters.', $name));
-        }
-
-        if (empty($name)) {
-            throw new \InvalidArgumentException('The cookie name cannot be empty.');
-        }
-
-        // convert expiration time to a Unix timestamp
-        if ($expire instanceof \DateTimeInterface) {
-            $expire = $expire->format('U');
-        } elseif (!is_numeric($expire)) {
-            $expire = strtotime($expire);
-
-            if (false === $expire) {
-                throw new \InvalidArgumentException('The cookie expiration time is not valid.');
-            }
-        }
-
-        $this->name = $name;
-        $this->value = $value;
-        $this->domain = $domain;
-        $this->expire = 0 < $expire ? (int) $expire : 0;
-        $this->path = empty($path) ? '/' : $path;
-        $this->secure = $secure;
-        $this->httpOnly = $httpOnly;
-        $this->raw = $raw;
-
-        if ('' === $sameSite) {
-            $sameSite = null;
-        } elseif (null !== $sameSite) {
-            $sameSite = strtolower($sameSite);
-        }
-
-        if (!\in_array($sameSite, [self::SAMESITE_LAX, self::SAMESITE_STRICT, self::SAMESITE_NONE, null], true)) {
-            throw new \InvalidArgumentException('The "sameSite" parameter value is not valid.');
-        }
-
-        $this->sameSite = $sameSite;
-    }
-
-    /**
-     * Returns the cookie as a string.
-     *
-     * @return string The cookie
-     */
-    public function __toString()
-    {
-        if ($this->isRaw()) {
-            $str = $this->getName();
-        } else {
-            $str = str_replace(self::$reservedCharsFrom, self::$reservedCharsTo, $this->getName());
-        }
-
-        $str .= '=';
-
-        if ('' === (string) $this->getValue()) {
-            $str .= 'deleted; expires='.gmdate('D, d-M-Y H:i:s T', time() - 31536001).'; Max-Age=0';
-        } else {
-            $str .= $this->isRaw() ? $this->getValue() : rawurlencode($this->getValue());
-
-            if (0 !== $this->getExpiresTime()) {
-                $str .= '; expires='.gmdate('D, d-M-Y H:i:s T', $this->getExpiresTime()).'; Max-Age='.$this->getMaxAge();
-            }
-        }
-
-        if ($this->getPath()) {
-            $str .= '; path='.$this->getPath();
-        }
-
-        if ($this->getDomain()) {
-            $str .= '; domain='.$this->getDomain();
-        }
-
-        if (true === $this->isSecure()) {
-            $str .= '; secure';
-        }
-
-        if (true === $this->isHttpOnly()) {
-            $str .= '; httponly';
-        }
-
-        if (null !== $this->getSameSite()) {
-            $str .= '; samesite='.$this->getSameSite();
-        }
-
-        return $str;
-    }
-
-    /**
-     * Gets the name of the cookie.
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Gets the value of the cookie.
-     *
-     * @return string|null
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Gets the domain that the cookie is available to.
-     *
-     * @return string|null
-     */
-    public function getDomain()
-    {
-        return $this->domain;
-    }
-
-    /**
-     * Gets the time the cookie expires.
-     *
-     * @return int
-     */
-    public function getExpiresTime()
-    {
-        return $this->expire;
-    }
-
-    /**
-     * Gets the max-age attribute.
-     *
-     * @return int
-     */
-    public function getMaxAge()
-    {
-        $maxAge = $this->expire - time();
-
-        return 0 >= $maxAge ? 0 : $maxAge;
-    }
-
-    /**
-     * Gets the path on the server in which the cookie will be available on.
-     *
-     * @return string
-     */
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    /**
-     * Checks whether the cookie should only be transmitted over a secure HTTPS connection from the client.
-     *
-     * @return bool
-     */
-    public function isSecure()
-    {
-        return $this->secure ?? $this->secureDefault;
-    }
-
-    /**
-     * Checks whether the cookie will be made accessible only through the HTTP protocol.
-     *
-     * @return bool
-     */
-    public function isHttpOnly()
-    {
-        return $this->httpOnly;
-    }
-
-    /**
-     * Whether this cookie is about to be cleared.
-     *
-     * @return bool
-     */
-    public function isCleared()
-    {
-        return 0 !== $this->expire && $this->expire < time();
-    }
-
-    /**
-     * Checks if the cookie value should be sent with no url encoding.
-     *
-     * @return bool
-     */
-    public function isRaw()
-    {
-        return $this->raw;
-    }
-
-    /**
-     * Gets the SameSite attribute.
-     *
-     * @return string|null
-     */
-    public function getSameSite()
-    {
-        return $this->sameSite;
-    }
-
-    /**
-     * @param bool $default The default value of the "secure" flag when it is set to null
-     */
-    public function setSecureDefault(bool $default): void
-    {
-        $this->secureDefault = $default;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Exception/ConflictingHeadersException.php b/vendor/symfony/http-foundation/Exception/ConflictingHeadersException.php
deleted file mode 100644
index 5fcf5b42695e7d7c2928f9f24d270d86deca5fa4..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Exception/ConflictingHeadersException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Exception;
-
-/**
- * The HTTP request contains headers with conflicting information.
- *
- * @author Magnus Nordlander <magnus@fervo.se>
- */
-class ConflictingHeadersException extends \UnexpectedValueException implements RequestExceptionInterface
-{
-}
diff --git a/vendor/symfony/http-foundation/Exception/RequestExceptionInterface.php b/vendor/symfony/http-foundation/Exception/RequestExceptionInterface.php
deleted file mode 100644
index 478d0dc7e4e6b34bf0cd661483d9219da07a3666..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Exception/RequestExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Exception;
-
-/**
- * Interface for Request exceptions.
- *
- * Exceptions implementing this interface should trigger an HTTP 400 response in the application code.
- */
-interface RequestExceptionInterface
-{
-}
diff --git a/vendor/symfony/http-foundation/Exception/SuspiciousOperationException.php b/vendor/symfony/http-foundation/Exception/SuspiciousOperationException.php
deleted file mode 100644
index ae7a5f1332b1fd618304ce98104580adae58b992..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Exception/SuspiciousOperationException.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Exception;
-
-/**
- * Raised when a user has performed an operation that should be considered
- * suspicious from a security perspective.
- */
-class SuspiciousOperationException extends \UnexpectedValueException implements RequestExceptionInterface
-{
-}
diff --git a/vendor/symfony/http-foundation/ExpressionRequestMatcher.php b/vendor/symfony/http-foundation/ExpressionRequestMatcher.php
deleted file mode 100644
index 26bed7d3713ebe1102d7398c1e8fcfd435e78eba..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/ExpressionRequestMatcher.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
-
-/**
- * ExpressionRequestMatcher uses an expression to match a Request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ExpressionRequestMatcher extends RequestMatcher
-{
-    private $language;
-    private $expression;
-
-    public function setExpression(ExpressionLanguage $language, $expression)
-    {
-        $this->language = $language;
-        $this->expression = $expression;
-    }
-
-    public function matches(Request $request)
-    {
-        if (!$this->language) {
-            throw new \LogicException('Unable to match the request as the expression language is not available.');
-        }
-
-        return $this->language->evaluate($this->expression, [
-            'request' => $request,
-            'method' => $request->getMethod(),
-            'path' => rawurldecode($request->getPathInfo()),
-            'host' => $request->getHost(),
-            'ip' => $request->getClientIp(),
-            'attributes' => $request->attributes->all(),
-        ]) && parent::matches($request);
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php b/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php
deleted file mode 100644
index 136d2a9f51b162edcd4ad7930b9795d2e49bef7e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-/**
- * Thrown when the access on a file was denied.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class AccessDeniedException extends FileException
-{
-    public function __construct(string $path)
-    {
-        parent::__construct(sprintf('The file %s could not be accessed', $path));
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/CannotWriteFileException.php b/vendor/symfony/http-foundation/File/Exception/CannotWriteFileException.php
deleted file mode 100644
index c49f53a6cfe9fffa41b5471f4ff69d7ef17f0808..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/CannotWriteFileException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-/**
- * Thrown when an UPLOAD_ERR_CANT_WRITE error occurred with UploadedFile.
- *
- * @author Florent Mata <florentmata@gmail.com>
- */
-class CannotWriteFileException extends FileException
-{
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/ExtensionFileException.php b/vendor/symfony/http-foundation/File/Exception/ExtensionFileException.php
deleted file mode 100644
index ed83499c004a76259fcac3e5ae93cecb31a3c47a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/ExtensionFileException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-/**
- * Thrown when an UPLOAD_ERR_EXTENSION error occurred with UploadedFile.
- *
- * @author Florent Mata <florentmata@gmail.com>
- */
-class ExtensionFileException extends FileException
-{
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/FileException.php b/vendor/symfony/http-foundation/File/Exception/FileException.php
deleted file mode 100644
index fad5133e1b745c108b33a2662564eeb1828a789b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/FileException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-/**
- * Thrown when an error occurred in the component File.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FileException extends \RuntimeException
-{
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php b/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php
deleted file mode 100644
index 31bdf68fef7b5229949af260463df7aad620f7c2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-/**
- * Thrown when a file was not found.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FileNotFoundException extends FileException
-{
-    public function __construct(string $path)
-    {
-        parent::__construct(sprintf('The file "%s" does not exist', $path));
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/FormSizeFileException.php b/vendor/symfony/http-foundation/File/Exception/FormSizeFileException.php
deleted file mode 100644
index 8741be0884c364aa7b772e2f1d78bae6b8edbf46..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/FormSizeFileException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-/**
- * Thrown when an UPLOAD_ERR_FORM_SIZE error occurred with UploadedFile.
- *
- * @author Florent Mata <florentmata@gmail.com>
- */
-class FormSizeFileException extends FileException
-{
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/IniSizeFileException.php b/vendor/symfony/http-foundation/File/Exception/IniSizeFileException.php
deleted file mode 100644
index c8fde6103ab279e13f52e189764d2dccd1f17144..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/IniSizeFileException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-/**
- * Thrown when an UPLOAD_ERR_INI_SIZE error occurred with UploadedFile.
- *
- * @author Florent Mata <florentmata@gmail.com>
- */
-class IniSizeFileException extends FileException
-{
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/NoFileException.php b/vendor/symfony/http-foundation/File/Exception/NoFileException.php
deleted file mode 100644
index 4b48cc7799d2a979bacfa2565826485bcca77306..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/NoFileException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-/**
- * Thrown when an UPLOAD_ERR_NO_FILE error occurred with UploadedFile.
- *
- * @author Florent Mata <florentmata@gmail.com>
- */
-class NoFileException extends FileException
-{
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/NoTmpDirFileException.php b/vendor/symfony/http-foundation/File/Exception/NoTmpDirFileException.php
deleted file mode 100644
index bdead2d91c8a71b3f89eb06138eed87b869c7947..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/NoTmpDirFileException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-/**
- * Thrown when an UPLOAD_ERR_NO_TMP_DIR error occurred with UploadedFile.
- *
- * @author Florent Mata <florentmata@gmail.com>
- */
-class NoTmpDirFileException extends FileException
-{
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/PartialFileException.php b/vendor/symfony/http-foundation/File/Exception/PartialFileException.php
deleted file mode 100644
index 4641efb55a3aaac83049d96d10e415b5c3e51a58..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/PartialFileException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-/**
- * Thrown when an UPLOAD_ERR_PARTIAL error occurred with UploadedFile.
- *
- * @author Florent Mata <florentmata@gmail.com>
- */
-class PartialFileException extends FileException
-{
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/UnexpectedTypeException.php b/vendor/symfony/http-foundation/File/Exception/UnexpectedTypeException.php
deleted file mode 100644
index 82b982b3789893a18e23fb9b7f7361b1971ff3fa..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/UnexpectedTypeException.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-class UnexpectedTypeException extends FileException
-{
-    public function __construct($value, string $expectedType)
-    {
-        parent::__construct(sprintf('Expected argument of type %s, %s given', $expectedType, \is_object($value) ? \get_class($value) : \gettype($value)));
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/UploadException.php b/vendor/symfony/http-foundation/File/Exception/UploadException.php
deleted file mode 100644
index 7074e7653d0eda28f662fcd6e168d927dbc2e706..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Exception/UploadException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\Exception;
-
-/**
- * Thrown when an error occurred during file upload.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class UploadException extends FileException
-{
-}
diff --git a/vendor/symfony/http-foundation/File/File.php b/vendor/symfony/http-foundation/File/File.php
deleted file mode 100644
index c72a6d991b04162efda8da6535c67b4ea57a5903..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/File.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File;
-
-use Symfony\Component\HttpFoundation\File\Exception\FileException;
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\Mime\MimeTypes;
-
-/**
- * A file in the file system.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class File extends \SplFileInfo
-{
-    /**
-     * Constructs a new file from the given path.
-     *
-     * @param string $path      The path to the file
-     * @param bool   $checkPath Whether to check the path or not
-     *
-     * @throws FileNotFoundException If the given path is not a file
-     */
-    public function __construct(string $path, bool $checkPath = true)
-    {
-        if ($checkPath && !is_file($path)) {
-            throw new FileNotFoundException($path);
-        }
-
-        parent::__construct($path);
-    }
-
-    /**
-     * Returns the extension based on the mime type.
-     *
-     * If the mime type is unknown, returns null.
-     *
-     * This method uses the mime type as guessed by getMimeType()
-     * to guess the file extension.
-     *
-     * @return string|null The guessed extension or null if it cannot be guessed
-     *
-     * @see MimeTypes
-     * @see getMimeType()
-     */
-    public function guessExtension()
-    {
-        return MimeTypes::getDefault()->getExtensions($this->getMimeType())[0] ?? null;
-    }
-
-    /**
-     * Returns the mime type of the file.
-     *
-     * The mime type is guessed using a MimeTypeGuesserInterface instance,
-     * which uses finfo_file() then the "file" system binary,
-     * depending on which of those are available.
-     *
-     * @return string|null The guessed mime type (e.g. "application/pdf")
-     *
-     * @see MimeTypes
-     */
-    public function getMimeType()
-    {
-        return MimeTypes::getDefault()->guessMimeType($this->getPathname());
-    }
-
-    /**
-     * Moves the file to a new location.
-     *
-     * @param string $directory The destination folder
-     * @param string $name      The new file name
-     *
-     * @return self A File object representing the new file
-     *
-     * @throws FileException if the target file could not be created
-     */
-    public function move($directory, $name = null)
-    {
-        $target = $this->getTargetFile($directory, $name);
-
-        set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; });
-        $renamed = rename($this->getPathname(), $target);
-        restore_error_handler();
-        if (!$renamed) {
-            throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error)));
-        }
-
-        @chmod($target, 0666 & ~umask());
-
-        return $target;
-    }
-
-    /**
-     * @return self
-     */
-    protected function getTargetFile($directory, $name = null)
-    {
-        if (!is_dir($directory)) {
-            if (false === @mkdir($directory, 0777, true) && !is_dir($directory)) {
-                throw new FileException(sprintf('Unable to create the "%s" directory.', $directory));
-            }
-        } elseif (!is_writable($directory)) {
-            throw new FileException(sprintf('Unable to write in the "%s" directory.', $directory));
-        }
-
-        $target = rtrim($directory, '/\\').\DIRECTORY_SEPARATOR.(null === $name ? $this->getBasename() : $this->getName($name));
-
-        return new self($target, false);
-    }
-
-    /**
-     * Returns locale independent base name of the given path.
-     *
-     * @param string $name The new file name
-     *
-     * @return string
-     */
-    protected function getName($name)
-    {
-        $originalName = str_replace('\\', '/', $name);
-        $pos = strrpos($originalName, '/');
-        $originalName = false === $pos ? $originalName : substr($originalName, $pos + 1);
-
-        return $originalName;
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php b/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php
deleted file mode 100644
index f35bb37bf5646fb4b1b81140ba8935b3470c5532..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\MimeType;
-
-use Symfony\Component\Mime\MimeTypes;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', ExtensionGuesser::class, MimeTypes::class), \E_USER_DEPRECATED);
-
-/**
- * A singleton mime type to file extension guesser.
- *
- * A default guesser is provided.
- * You can register custom guessers by calling the register()
- * method on the singleton instance:
- *
- *     $guesser = ExtensionGuesser::getInstance();
- *     $guesser->register(new MyCustomExtensionGuesser());
- *
- * The last registered guesser is preferred over previously registered ones.
- *
- * @deprecated since Symfony 4.3, use {@link MimeTypes} instead
- */
-class ExtensionGuesser implements ExtensionGuesserInterface
-{
-    /**
-     * The singleton instance.
-     *
-     * @var ExtensionGuesser
-     */
-    private static $instance = null;
-
-    /**
-     * All registered ExtensionGuesserInterface instances.
-     *
-     * @var array
-     */
-    protected $guessers = [];
-
-    /**
-     * Returns the singleton instance.
-     *
-     * @return self
-     */
-    public static function getInstance()
-    {
-        if (null === self::$instance) {
-            self::$instance = new self();
-        }
-
-        return self::$instance;
-    }
-
-    /**
-     * Registers all natively provided extension guessers.
-     */
-    private function __construct()
-    {
-        $this->register(new MimeTypeExtensionGuesser());
-    }
-
-    /**
-     * Registers a new extension guesser.
-     *
-     * When guessing, this guesser is preferred over previously registered ones.
-     */
-    public function register(ExtensionGuesserInterface $guesser)
-    {
-        array_unshift($this->guessers, $guesser);
-    }
-
-    /**
-     * Tries to guess the extension.
-     *
-     * The mime type is passed to each registered mime type guesser in reverse order
-     * of their registration (last registered is queried first). Once a guesser
-     * returns a value that is not NULL, this method terminates and returns the
-     * value.
-     *
-     * @param string $mimeType The mime type
-     *
-     * @return string The guessed extension or NULL, if none could be guessed
-     */
-    public function guess($mimeType)
-    {
-        foreach ($this->guessers as $guesser) {
-            if (null !== $extension = $guesser->guess($mimeType)) {
-                return $extension;
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesserInterface.php b/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesserInterface.php
deleted file mode 100644
index 69fe6efb286c403a85e3a0ec199e4a40a64680d5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesserInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\MimeType;
-
-use Symfony\Component\Mime\MimeTypesInterface;
-
-/**
- * Guesses the file extension corresponding to a given mime type.
- *
- * @deprecated since Symfony 4.3, use {@link MimeTypesInterface} instead
- */
-interface ExtensionGuesserInterface
-{
-    /**
-     * Makes a best guess for a file extension, given a mime type.
-     *
-     * @param string $mimeType The mime type
-     *
-     * @return string The guessed extension or NULL, if none could be guessed
-     */
-    public function guess($mimeType);
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php
deleted file mode 100644
index 6d2c274a9dd5ba920db12f4c763d08c3843238b5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\MimeType;
-
-use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\Mime\FileBinaryMimeTypeGuesser as NewFileBinaryMimeTypeGuesser;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileBinaryMimeTypeGuesser::class, NewFileBinaryMimeTypeGuesser::class), \E_USER_DEPRECATED);
-
-/**
- * Guesses the mime type with the binary "file" (only available on *nix).
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since Symfony 4.3, use {@link NewFileBinaryMimeTypeGuesser} instead
- */
-class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
-{
-    private $cmd;
-
-    /**
-     * The $cmd pattern must contain a "%s" string that will be replaced
-     * with the file name to guess.
-     *
-     * The command output must start with the mime type of the file.
-     *
-     * @param string $cmd The command to run to get the mime type of a file
-     */
-    public function __construct(string $cmd = 'file -b --mime -- %s 2>/dev/null')
-    {
-        $this->cmd = $cmd;
-    }
-
-    /**
-     * Returns whether this guesser is supported on the current OS.
-     *
-     * @return bool
-     */
-    public static function isSupported()
-    {
-        static $supported = null;
-
-        if (null !== $supported) {
-            return $supported;
-        }
-
-        if ('\\' === \DIRECTORY_SEPARATOR || !\function_exists('passthru') || !\function_exists('escapeshellarg')) {
-            return $supported = false;
-        }
-
-        ob_start();
-        passthru('command -v file', $exitStatus);
-        $binPath = trim(ob_get_clean());
-
-        return $supported = 0 === $exitStatus && '' !== $binPath;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function guess($path)
-    {
-        if (!is_file($path)) {
-            throw new FileNotFoundException($path);
-        }
-
-        if (!is_readable($path)) {
-            throw new AccessDeniedException($path);
-        }
-
-        if (!self::isSupported()) {
-            return null;
-        }
-
-        ob_start();
-
-        // need to use --mime instead of -i. see #6641
-        passthru(sprintf($this->cmd, escapeshellarg((0 === strpos($path, '-') ? './' : '').$path)), $return);
-        if ($return > 0) {
-            ob_end_clean();
-
-            return null;
-        }
-
-        $type = trim(ob_get_clean());
-
-        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\+\.]+)#i', $type, $match)) {
-            // it's not a type, but an error message
-            return null;
-        }
-
-        return $match[1];
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php
deleted file mode 100644
index 658ad607ee87abf82452af6fa3826cee8a01c422..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\MimeType;
-
-use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\Mime\FileinfoMimeTypeGuesser as NewFileinfoMimeTypeGuesser;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileinfoMimeTypeGuesser::class, NewFileinfoMimeTypeGuesser::class), \E_USER_DEPRECATED);
-
-/**
- * Guesses the mime type using the PECL extension FileInfo.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since Symfony 4.3, use {@link NewFileinfoMimeTypeGuesser} instead
- */
-class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
-{
-    private $magicFile;
-
-    /**
-     * @param string $magicFile A magic file to use with the finfo instance
-     *
-     * @see https://php.net/finfo-open
-     */
-    public function __construct(string $magicFile = null)
-    {
-        $this->magicFile = $magicFile;
-    }
-
-    /**
-     * Returns whether this guesser is supported on the current OS/PHP setup.
-     *
-     * @return bool
-     */
-    public static function isSupported()
-    {
-        return \function_exists('finfo_open');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function guess($path)
-    {
-        if (!is_file($path)) {
-            throw new FileNotFoundException($path);
-        }
-
-        if (!is_readable($path)) {
-            throw new AccessDeniedException($path);
-        }
-
-        if (!self::isSupported()) {
-            return null;
-        }
-
-        if (!$finfo = new \finfo(\FILEINFO_MIME_TYPE, $this->magicFile)) {
-            return null;
-        }
-        $mimeType = $finfo->file($path);
-
-        if ($mimeType && 0 === (\strlen($mimeType) % 2)) {
-            $mimeStart = substr($mimeType, 0, \strlen($mimeType) >> 1);
-            $mimeType = $mimeStart.$mimeStart === $mimeType ? $mimeStart : $mimeType;
-        }
-
-        return $mimeType;
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php
deleted file mode 100644
index 2380919bca77f950337792f7b5bb0fc1a666d81e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php
+++ /dev/null
@@ -1,826 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\MimeType;
-
-use Symfony\Component\Mime\MimeTypes;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeExtensionGuesser::class, MimeTypes::class), \E_USER_DEPRECATED);
-
-/**
- * Provides a best-guess mapping of mime type to file extension.
- *
- * @deprecated since Symfony 4.3, use {@link MimeTypes} instead
- */
-class MimeTypeExtensionGuesser implements ExtensionGuesserInterface
-{
-    /**
-     * A map of mime types and their default extensions.
-     *
-     * This list has been placed under the public domain by the Apache HTTPD project.
-     * This list has been updated from upstream on 2019-01-14.
-     *
-     * @see https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
-     */
-    protected $defaultExtensions = [
-        'application/andrew-inset' => 'ez',
-        'application/applixware' => 'aw',
-        'application/atom+xml' => 'atom',
-        'application/atomcat+xml' => 'atomcat',
-        'application/atomsvc+xml' => 'atomsvc',
-        'application/ccxml+xml' => 'ccxml',
-        'application/cdmi-capability' => 'cdmia',
-        'application/cdmi-container' => 'cdmic',
-        'application/cdmi-domain' => 'cdmid',
-        'application/cdmi-object' => 'cdmio',
-        'application/cdmi-queue' => 'cdmiq',
-        'application/cu-seeme' => 'cu',
-        'application/davmount+xml' => 'davmount',
-        'application/docbook+xml' => 'dbk',
-        'application/dssc+der' => 'dssc',
-        'application/dssc+xml' => 'xdssc',
-        'application/ecmascript' => 'ecma',
-        'application/emma+xml' => 'emma',
-        'application/epub+zip' => 'epub',
-        'application/exi' => 'exi',
-        'application/font-tdpfr' => 'pfr',
-        'application/gml+xml' => 'gml',
-        'application/gpx+xml' => 'gpx',
-        'application/gxf' => 'gxf',
-        'application/hyperstudio' => 'stk',
-        'application/inkml+xml' => 'ink',
-        'application/ipfix' => 'ipfix',
-        'application/java-archive' => 'jar',
-        'application/java-serialized-object' => 'ser',
-        'application/java-vm' => 'class',
-        'application/javascript' => 'js',
-        'application/json' => 'json',
-        'application/jsonml+json' => 'jsonml',
-        'application/lost+xml' => 'lostxml',
-        'application/mac-binhex40' => 'hqx',
-        'application/mac-compactpro' => 'cpt',
-        'application/mads+xml' => 'mads',
-        'application/marc' => 'mrc',
-        'application/marcxml+xml' => 'mrcx',
-        'application/mathematica' => 'ma',
-        'application/mathml+xml' => 'mathml',
-        'application/mbox' => 'mbox',
-        'application/mediaservercontrol+xml' => 'mscml',
-        'application/metalink+xml' => 'metalink',
-        'application/metalink4+xml' => 'meta4',
-        'application/mets+xml' => 'mets',
-        'application/mods+xml' => 'mods',
-        'application/mp21' => 'm21',
-        'application/mp4' => 'mp4s',
-        'application/msword' => 'doc',
-        'application/mxf' => 'mxf',
-        'application/octet-stream' => 'bin',
-        'application/oda' => 'oda',
-        'application/oebps-package+xml' => 'opf',
-        'application/ogg' => 'ogx',
-        'application/omdoc+xml' => 'omdoc',
-        'application/onenote' => 'onetoc',
-        'application/oxps' => 'oxps',
-        'application/patch-ops-error+xml' => 'xer',
-        'application/pdf' => 'pdf',
-        'application/pgp-encrypted' => 'pgp',
-        'application/pgp-signature' => 'asc',
-        'application/pics-rules' => 'prf',
-        'application/pkcs10' => 'p10',
-        'application/pkcs7-mime' => 'p7m',
-        'application/pkcs7-signature' => 'p7s',
-        'application/pkcs8' => 'p8',
-        'application/pkix-attr-cert' => 'ac',
-        'application/pkix-cert' => 'cer',
-        'application/pkix-crl' => 'crl',
-        'application/pkix-pkipath' => 'pkipath',
-        'application/pkixcmp' => 'pki',
-        'application/pls+xml' => 'pls',
-        'application/postscript' => 'ai',
-        'application/prs.cww' => 'cww',
-        'application/pskc+xml' => 'pskcxml',
-        'application/rdf+xml' => 'rdf',
-        'application/reginfo+xml' => 'rif',
-        'application/relax-ng-compact-syntax' => 'rnc',
-        'application/resource-lists+xml' => 'rl',
-        'application/resource-lists-diff+xml' => 'rld',
-        'application/rls-services+xml' => 'rs',
-        'application/rpki-ghostbusters' => 'gbr',
-        'application/rpki-manifest' => 'mft',
-        'application/rpki-roa' => 'roa',
-        'application/rsd+xml' => 'rsd',
-        'application/rss+xml' => 'rss',
-        'application/rtf' => 'rtf',
-        'application/sbml+xml' => 'sbml',
-        'application/scvp-cv-request' => 'scq',
-        'application/scvp-cv-response' => 'scs',
-        'application/scvp-vp-request' => 'spq',
-        'application/scvp-vp-response' => 'spp',
-        'application/sdp' => 'sdp',
-        'application/set-payment-initiation' => 'setpay',
-        'application/set-registration-initiation' => 'setreg',
-        'application/shf+xml' => 'shf',
-        'application/smil+xml' => 'smi',
-        'application/sparql-query' => 'rq',
-        'application/sparql-results+xml' => 'srx',
-        'application/srgs' => 'gram',
-        'application/srgs+xml' => 'grxml',
-        'application/sru+xml' => 'sru',
-        'application/ssdl+xml' => 'ssdl',
-        'application/ssml+xml' => 'ssml',
-        'application/tei+xml' => 'tei',
-        'application/thraud+xml' => 'tfi',
-        'application/timestamped-data' => 'tsd',
-        'application/vnd.3gpp.pic-bw-large' => 'plb',
-        'application/vnd.3gpp.pic-bw-small' => 'psb',
-        'application/vnd.3gpp.pic-bw-var' => 'pvb',
-        'application/vnd.3gpp2.tcap' => 'tcap',
-        'application/vnd.3m.post-it-notes' => 'pwn',
-        'application/vnd.accpac.simply.aso' => 'aso',
-        'application/vnd.accpac.simply.imp' => 'imp',
-        'application/vnd.acucobol' => 'acu',
-        'application/vnd.acucorp' => 'atc',
-        'application/vnd.adobe.air-application-installer-package+zip' => 'air',
-        'application/vnd.adobe.formscentral.fcdt' => 'fcdt',
-        'application/vnd.adobe.fxp' => 'fxp',
-        'application/vnd.adobe.xdp+xml' => 'xdp',
-        'application/vnd.adobe.xfdf' => 'xfdf',
-        'application/vnd.ahead.space' => 'ahead',
-        'application/vnd.airzip.filesecure.azf' => 'azf',
-        'application/vnd.airzip.filesecure.azs' => 'azs',
-        'application/vnd.amazon.ebook' => 'azw',
-        'application/vnd.americandynamics.acc' => 'acc',
-        'application/vnd.amiga.ami' => 'ami',
-        'application/vnd.android.package-archive' => 'apk',
-        'application/vnd.anser-web-certificate-issue-initiation' => 'cii',
-        'application/vnd.anser-web-funds-transfer-initiation' => 'fti',
-        'application/vnd.antix.game-component' => 'atx',
-        'application/vnd.apple.installer+xml' => 'mpkg',
-        'application/vnd.apple.mpegurl' => 'm3u8',
-        'application/vnd.aristanetworks.swi' => 'swi',
-        'application/vnd.astraea-software.iota' => 'iota',
-        'application/vnd.audiograph' => 'aep',
-        'application/vnd.blueice.multipass' => 'mpm',
-        'application/vnd.bmi' => 'bmi',
-        'application/vnd.businessobjects' => 'rep',
-        'application/vnd.chemdraw+xml' => 'cdxml',
-        'application/vnd.chipnuts.karaoke-mmd' => 'mmd',
-        'application/vnd.cinderella' => 'cdy',
-        'application/vnd.claymore' => 'cla',
-        'application/vnd.cloanto.rp9' => 'rp9',
-        'application/vnd.clonk.c4group' => 'c4g',
-        'application/vnd.cluetrust.cartomobile-config' => 'c11amc',
-        'application/vnd.cluetrust.cartomobile-config-pkg' => 'c11amz',
-        'application/vnd.commonspace' => 'csp',
-        'application/vnd.contact.cmsg' => 'cdbcmsg',
-        'application/vnd.cosmocaller' => 'cmc',
-        'application/vnd.crick.clicker' => 'clkx',
-        'application/vnd.crick.clicker.keyboard' => 'clkk',
-        'application/vnd.crick.clicker.palette' => 'clkp',
-        'application/vnd.crick.clicker.template' => 'clkt',
-        'application/vnd.crick.clicker.wordbank' => 'clkw',
-        'application/vnd.criticaltools.wbs+xml' => 'wbs',
-        'application/vnd.ctc-posml' => 'pml',
-        'application/vnd.cups-ppd' => 'ppd',
-        'application/vnd.curl.car' => 'car',
-        'application/vnd.curl.pcurl' => 'pcurl',
-        'application/vnd.dart' => 'dart',
-        'application/vnd.data-vision.rdz' => 'rdz',
-        'application/vnd.dece.data' => 'uvf',
-        'application/vnd.dece.ttml+xml' => 'uvt',
-        'application/vnd.dece.unspecified' => 'uvx',
-        'application/vnd.dece.zip' => 'uvz',
-        'application/vnd.denovo.fcselayout-link' => 'fe_launch',
-        'application/vnd.dna' => 'dna',
-        'application/vnd.dolby.mlp' => 'mlp',
-        'application/vnd.dpgraph' => 'dpg',
-        'application/vnd.dreamfactory' => 'dfac',
-        'application/vnd.ds-keypoint' => 'kpxx',
-        'application/vnd.dvb.ait' => 'ait',
-        'application/vnd.dvb.service' => 'svc',
-        'application/vnd.dynageo' => 'geo',
-        'application/vnd.ecowin.chart' => 'mag',
-        'application/vnd.enliven' => 'nml',
-        'application/vnd.epson.esf' => 'esf',
-        'application/vnd.epson.msf' => 'msf',
-        'application/vnd.epson.quickanime' => 'qam',
-        'application/vnd.epson.salt' => 'slt',
-        'application/vnd.epson.ssf' => 'ssf',
-        'application/vnd.eszigno3+xml' => 'es3',
-        'application/vnd.ezpix-album' => 'ez2',
-        'application/vnd.ezpix-package' => 'ez3',
-        'application/vnd.fdf' => 'fdf',
-        'application/vnd.fdsn.mseed' => 'mseed',
-        'application/vnd.fdsn.seed' => 'seed',
-        'application/vnd.flographit' => 'gph',
-        'application/vnd.fluxtime.clip' => 'ftc',
-        'application/vnd.framemaker' => 'fm',
-        'application/vnd.frogans.fnc' => 'fnc',
-        'application/vnd.frogans.ltf' => 'ltf',
-        'application/vnd.fsc.weblaunch' => 'fsc',
-        'application/vnd.fujitsu.oasys' => 'oas',
-        'application/vnd.fujitsu.oasys2' => 'oa2',
-        'application/vnd.fujitsu.oasys3' => 'oa3',
-        'application/vnd.fujitsu.oasysgp' => 'fg5',
-        'application/vnd.fujitsu.oasysprs' => 'bh2',
-        'application/vnd.fujixerox.ddd' => 'ddd',
-        'application/vnd.fujixerox.docuworks' => 'xdw',
-        'application/vnd.fujixerox.docuworks.binder' => 'xbd',
-        'application/vnd.fuzzysheet' => 'fzs',
-        'application/vnd.genomatix.tuxedo' => 'txd',
-        'application/vnd.geogebra.file' => 'ggb',
-        'application/vnd.geogebra.tool' => 'ggt',
-        'application/vnd.geometry-explorer' => 'gex',
-        'application/vnd.geonext' => 'gxt',
-        'application/vnd.geoplan' => 'g2w',
-        'application/vnd.geospace' => 'g3w',
-        'application/vnd.gmx' => 'gmx',
-        'application/vnd.google-earth.kml+xml' => 'kml',
-        'application/vnd.google-earth.kmz' => 'kmz',
-        'application/vnd.grafeq' => 'gqf',
-        'application/vnd.groove-account' => 'gac',
-        'application/vnd.groove-help' => 'ghf',
-        'application/vnd.groove-identity-message' => 'gim',
-        'application/vnd.groove-injector' => 'grv',
-        'application/vnd.groove-tool-message' => 'gtm',
-        'application/vnd.groove-tool-template' => 'tpl',
-        'application/vnd.groove-vcard' => 'vcg',
-        'application/vnd.hal+xml' => 'hal',
-        'application/vnd.handheld-entertainment+xml' => 'zmm',
-        'application/vnd.hbci' => 'hbci',
-        'application/vnd.hhe.lesson-player' => 'les',
-        'application/vnd.hp-hpgl' => 'hpgl',
-        'application/vnd.hp-hpid' => 'hpid',
-        'application/vnd.hp-hps' => 'hps',
-        'application/vnd.hp-jlyt' => 'jlt',
-        'application/vnd.hp-pcl' => 'pcl',
-        'application/vnd.hp-pclxl' => 'pclxl',
-        'application/vnd.hydrostatix.sof-data' => 'sfd-hdstx',
-        'application/vnd.ibm.minipay' => 'mpy',
-        'application/vnd.ibm.modcap' => 'afp',
-        'application/vnd.ibm.rights-management' => 'irm',
-        'application/vnd.ibm.secure-container' => 'sc',
-        'application/vnd.iccprofile' => 'icc',
-        'application/vnd.igloader' => 'igl',
-        'application/vnd.immervision-ivp' => 'ivp',
-        'application/vnd.immervision-ivu' => 'ivu',
-        'application/vnd.insors.igm' => 'igm',
-        'application/vnd.intercon.formnet' => 'xpw',
-        'application/vnd.intergeo' => 'i2g',
-        'application/vnd.intu.qbo' => 'qbo',
-        'application/vnd.intu.qfx' => 'qfx',
-        'application/vnd.ipunplugged.rcprofile' => 'rcprofile',
-        'application/vnd.irepository.package+xml' => 'irp',
-        'application/vnd.is-xpr' => 'xpr',
-        'application/vnd.isac.fcs' => 'fcs',
-        'application/vnd.jam' => 'jam',
-        'application/vnd.jcp.javame.midlet-rms' => 'rms',
-        'application/vnd.jisp' => 'jisp',
-        'application/vnd.joost.joda-archive' => 'joda',
-        'application/vnd.kahootz' => 'ktz',
-        'application/vnd.kde.karbon' => 'karbon',
-        'application/vnd.kde.kchart' => 'chrt',
-        'application/vnd.kde.kformula' => 'kfo',
-        'application/vnd.kde.kivio' => 'flw',
-        'application/vnd.kde.kontour' => 'kon',
-        'application/vnd.kde.kpresenter' => 'kpr',
-        'application/vnd.kde.kspread' => 'ksp',
-        'application/vnd.kde.kword' => 'kwd',
-        'application/vnd.kenameaapp' => 'htke',
-        'application/vnd.kidspiration' => 'kia',
-        'application/vnd.kinar' => 'kne',
-        'application/vnd.koan' => 'skp',
-        'application/vnd.kodak-descriptor' => 'sse',
-        'application/vnd.las.las+xml' => 'lasxml',
-        'application/vnd.llamagraphics.life-balance.desktop' => 'lbd',
-        'application/vnd.llamagraphics.life-balance.exchange+xml' => 'lbe',
-        'application/vnd.lotus-1-2-3' => '123',
-        'application/vnd.lotus-approach' => 'apr',
-        'application/vnd.lotus-freelance' => 'pre',
-        'application/vnd.lotus-notes' => 'nsf',
-        'application/vnd.lotus-organizer' => 'org',
-        'application/vnd.lotus-screencam' => 'scm',
-        'application/vnd.lotus-wordpro' => 'lwp',
-        'application/vnd.macports.portpkg' => 'portpkg',
-        'application/vnd.mcd' => 'mcd',
-        'application/vnd.medcalcdata' => 'mc1',
-        'application/vnd.mediastation.cdkey' => 'cdkey',
-        'application/vnd.mfer' => 'mwf',
-        'application/vnd.mfmp' => 'mfm',
-        'application/vnd.micrografx.flo' => 'flo',
-        'application/vnd.micrografx.igx' => 'igx',
-        'application/vnd.mif' => 'mif',
-        'application/vnd.mobius.daf' => 'daf',
-        'application/vnd.mobius.dis' => 'dis',
-        'application/vnd.mobius.mbk' => 'mbk',
-        'application/vnd.mobius.mqy' => 'mqy',
-        'application/vnd.mobius.msl' => 'msl',
-        'application/vnd.mobius.plc' => 'plc',
-        'application/vnd.mobius.txf' => 'txf',
-        'application/vnd.mophun.application' => 'mpn',
-        'application/vnd.mophun.certificate' => 'mpc',
-        'application/vnd.mozilla.xul+xml' => 'xul',
-        'application/vnd.ms-artgalry' => 'cil',
-        'application/vnd.ms-cab-compressed' => 'cab',
-        'application/vnd.ms-excel' => 'xls',
-        'application/vnd.ms-excel.addin.macroenabled.12' => 'xlam',
-        'application/vnd.ms-excel.sheet.binary.macroenabled.12' => 'xlsb',
-        'application/vnd.ms-excel.sheet.macroenabled.12' => 'xlsm',
-        'application/vnd.ms-excel.template.macroenabled.12' => 'xltm',
-        'application/vnd.ms-fontobject' => 'eot',
-        'application/vnd.ms-htmlhelp' => 'chm',
-        'application/vnd.ms-ims' => 'ims',
-        'application/vnd.ms-lrm' => 'lrm',
-        'application/vnd.ms-officetheme' => 'thmx',
-        'application/vnd.ms-pki.seccat' => 'cat',
-        'application/vnd.ms-pki.stl' => 'stl',
-        'application/vnd.ms-powerpoint' => 'ppt',
-        'application/vnd.ms-powerpoint.addin.macroenabled.12' => 'ppam',
-        'application/vnd.ms-powerpoint.presentation.macroenabled.12' => 'pptm',
-        'application/vnd.ms-powerpoint.slide.macroenabled.12' => 'sldm',
-        'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => 'ppsm',
-        'application/vnd.ms-powerpoint.template.macroenabled.12' => 'potm',
-        'application/vnd.ms-project' => 'mpp',
-        'application/vnd.ms-word.document.macroenabled.12' => 'docm',
-        'application/vnd.ms-word.template.macroenabled.12' => 'dotm',
-        'application/vnd.ms-works' => 'wps',
-        'application/vnd.ms-wpl' => 'wpl',
-        'application/vnd.ms-xpsdocument' => 'xps',
-        'application/vnd.mseq' => 'mseq',
-        'application/vnd.musician' => 'mus',
-        'application/vnd.muvee.style' => 'msty',
-        'application/vnd.mynfc' => 'taglet',
-        'application/vnd.neurolanguage.nlu' => 'nlu',
-        'application/vnd.nitf' => 'ntf',
-        'application/vnd.noblenet-directory' => 'nnd',
-        'application/vnd.noblenet-sealer' => 'nns',
-        'application/vnd.noblenet-web' => 'nnw',
-        'application/vnd.nokia.n-gage.data' => 'ngdat',
-        'application/vnd.nokia.n-gage.symbian.install' => 'n-gage',
-        'application/vnd.nokia.radio-preset' => 'rpst',
-        'application/vnd.nokia.radio-presets' => 'rpss',
-        'application/vnd.novadigm.edm' => 'edm',
-        'application/vnd.novadigm.edx' => 'edx',
-        'application/vnd.novadigm.ext' => 'ext',
-        'application/vnd.oasis.opendocument.chart' => 'odc',
-        'application/vnd.oasis.opendocument.chart-template' => 'otc',
-        'application/vnd.oasis.opendocument.database' => 'odb',
-        'application/vnd.oasis.opendocument.formula' => 'odf',
-        'application/vnd.oasis.opendocument.formula-template' => 'odft',
-        'application/vnd.oasis.opendocument.graphics' => 'odg',
-        'application/vnd.oasis.opendocument.graphics-template' => 'otg',
-        'application/vnd.oasis.opendocument.image' => 'odi',
-        'application/vnd.oasis.opendocument.image-template' => 'oti',
-        'application/vnd.oasis.opendocument.presentation' => 'odp',
-        'application/vnd.oasis.opendocument.presentation-template' => 'otp',
-        'application/vnd.oasis.opendocument.spreadsheet' => 'ods',
-        'application/vnd.oasis.opendocument.spreadsheet-template' => 'ots',
-        'application/vnd.oasis.opendocument.text' => 'odt',
-        'application/vnd.oasis.opendocument.text-master' => 'odm',
-        'application/vnd.oasis.opendocument.text-template' => 'ott',
-        'application/vnd.oasis.opendocument.text-web' => 'oth',
-        'application/vnd.olpc-sugar' => 'xo',
-        'application/vnd.oma.dd2+xml' => 'dd2',
-        'application/vnd.openofficeorg.extension' => 'oxt',
-        'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx',
-        'application/vnd.openxmlformats-officedocument.presentationml.slide' => 'sldx',
-        'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 'ppsx',
-        'application/vnd.openxmlformats-officedocument.presentationml.template' => 'potx',
-        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'xlsx',
-        'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => 'xltx',
-        'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx',
-        'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => 'dotx',
-        'application/vnd.osgeo.mapguide.package' => 'mgp',
-        'application/vnd.osgi.dp' => 'dp',
-        'application/vnd.osgi.subsystem' => 'esa',
-        'application/vnd.palm' => 'pdb',
-        'application/vnd.pawaafile' => 'paw',
-        'application/vnd.pg.format' => 'str',
-        'application/vnd.pg.osasli' => 'ei6',
-        'application/vnd.picsel' => 'efif',
-        'application/vnd.pmi.widget' => 'wg',
-        'application/vnd.pocketlearn' => 'plf',
-        'application/vnd.powerbuilder6' => 'pbd',
-        'application/vnd.previewsystems.box' => 'box',
-        'application/vnd.proteus.magazine' => 'mgz',
-        'application/vnd.publishare-delta-tree' => 'qps',
-        'application/vnd.pvi.ptid1' => 'ptid',
-        'application/vnd.quark.quarkxpress' => 'qxd',
-        'application/vnd.realvnc.bed' => 'bed',
-        'application/vnd.recordare.musicxml' => 'mxl',
-        'application/vnd.recordare.musicxml+xml' => 'musicxml',
-        'application/vnd.rig.cryptonote' => 'cryptonote',
-        'application/vnd.rim.cod' => 'cod',
-        'application/vnd.rn-realmedia' => 'rm',
-        'application/vnd.rn-realmedia-vbr' => 'rmvb',
-        'application/vnd.route66.link66+xml' => 'link66',
-        'application/vnd.sailingtracker.track' => 'st',
-        'application/vnd.seemail' => 'see',
-        'application/vnd.sema' => 'sema',
-        'application/vnd.semd' => 'semd',
-        'application/vnd.semf' => 'semf',
-        'application/vnd.shana.informed.formdata' => 'ifm',
-        'application/vnd.shana.informed.formtemplate' => 'itp',
-        'application/vnd.shana.informed.interchange' => 'iif',
-        'application/vnd.shana.informed.package' => 'ipk',
-        'application/vnd.simtech-mindmapper' => 'twd',
-        'application/vnd.smaf' => 'mmf',
-        'application/vnd.smart.teacher' => 'teacher',
-        'application/vnd.solent.sdkm+xml' => 'sdkm',
-        'application/vnd.spotfire.dxp' => 'dxp',
-        'application/vnd.spotfire.sfs' => 'sfs',
-        'application/vnd.stardivision.calc' => 'sdc',
-        'application/vnd.stardivision.draw' => 'sda',
-        'application/vnd.stardivision.impress' => 'sdd',
-        'application/vnd.stardivision.math' => 'smf',
-        'application/vnd.stardivision.writer' => 'sdw',
-        'application/vnd.stardivision.writer-global' => 'sgl',
-        'application/vnd.stepmania.package' => 'smzip',
-        'application/vnd.stepmania.stepchart' => 'sm',
-        'application/vnd.sun.xml.calc' => 'sxc',
-        'application/vnd.sun.xml.calc.template' => 'stc',
-        'application/vnd.sun.xml.draw' => 'sxd',
-        'application/vnd.sun.xml.draw.template' => 'std',
-        'application/vnd.sun.xml.impress' => 'sxi',
-        'application/vnd.sun.xml.impress.template' => 'sti',
-        'application/vnd.sun.xml.math' => 'sxm',
-        'application/vnd.sun.xml.writer' => 'sxw',
-        'application/vnd.sun.xml.writer.global' => 'sxg',
-        'application/vnd.sun.xml.writer.template' => 'stw',
-        'application/vnd.sus-calendar' => 'sus',
-        'application/vnd.svd' => 'svd',
-        'application/vnd.symbian.install' => 'sis',
-        'application/vnd.syncml+xml' => 'xsm',
-        'application/vnd.syncml.dm+wbxml' => 'bdm',
-        'application/vnd.syncml.dm+xml' => 'xdm',
-        'application/vnd.tao.intent-module-archive' => 'tao',
-        'application/vnd.tcpdump.pcap' => 'pcap',
-        'application/vnd.tmobile-livetv' => 'tmo',
-        'application/vnd.trid.tpt' => 'tpt',
-        'application/vnd.triscape.mxs' => 'mxs',
-        'application/vnd.trueapp' => 'tra',
-        'application/vnd.ufdl' => 'ufd',
-        'application/vnd.uiq.theme' => 'utz',
-        'application/vnd.umajin' => 'umj',
-        'application/vnd.unity' => 'unityweb',
-        'application/vnd.uoml+xml' => 'uoml',
-        'application/vnd.vcx' => 'vcx',
-        'application/vnd.visio' => 'vsd',
-        'application/vnd.visionary' => 'vis',
-        'application/vnd.vsf' => 'vsf',
-        'application/vnd.wap.wbxml' => 'wbxml',
-        'application/vnd.wap.wmlc' => 'wmlc',
-        'application/vnd.wap.wmlscriptc' => 'wmlsc',
-        'application/vnd.webturbo' => 'wtb',
-        'application/vnd.wolfram.player' => 'nbp',
-        'application/vnd.wordperfect' => 'wpd',
-        'application/vnd.wqd' => 'wqd',
-        'application/vnd.wt.stf' => 'stf',
-        'application/vnd.xara' => 'xar',
-        'application/vnd.xfdl' => 'xfdl',
-        'application/vnd.yamaha.hv-dic' => 'hvd',
-        'application/vnd.yamaha.hv-script' => 'hvs',
-        'application/vnd.yamaha.hv-voice' => 'hvp',
-        'application/vnd.yamaha.openscoreformat' => 'osf',
-        'application/vnd.yamaha.openscoreformat.osfpvg+xml' => 'osfpvg',
-        'application/vnd.yamaha.smaf-audio' => 'saf',
-        'application/vnd.yamaha.smaf-phrase' => 'spf',
-        'application/vnd.yellowriver-custom-menu' => 'cmp',
-        'application/vnd.zul' => 'zir',
-        'application/vnd.zzazz.deck+xml' => 'zaz',
-        'application/voicexml+xml' => 'vxml',
-        'application/widget' => 'wgt',
-        'application/winhlp' => 'hlp',
-        'application/wsdl+xml' => 'wsdl',
-        'application/wspolicy+xml' => 'wspolicy',
-        'application/x-7z-compressed' => '7z',
-        'application/x-abiword' => 'abw',
-        'application/x-ace-compressed' => 'ace',
-        'application/x-apple-diskimage' => 'dmg',
-        'application/x-authorware-bin' => 'aab',
-        'application/x-authorware-map' => 'aam',
-        'application/x-authorware-seg' => 'aas',
-        'application/x-bcpio' => 'bcpio',
-        'application/x-bittorrent' => 'torrent',
-        'application/x-blorb' => 'blb',
-        'application/x-bzip' => 'bz',
-        'application/x-bzip2' => 'bz2',
-        'application/x-cbr' => 'cbr',
-        'application/x-cdlink' => 'vcd',
-        'application/x-cfs-compressed' => 'cfs',
-        'application/x-chat' => 'chat',
-        'application/x-chess-pgn' => 'pgn',
-        'application/x-conference' => 'nsc',
-        'application/x-cpio' => 'cpio',
-        'application/x-csh' => 'csh',
-        'application/x-debian-package' => 'deb',
-        'application/x-dgc-compressed' => 'dgc',
-        'application/x-director' => 'dir',
-        'application/x-doom' => 'wad',
-        'application/x-dtbncx+xml' => 'ncx',
-        'application/x-dtbook+xml' => 'dtb',
-        'application/x-dtbresource+xml' => 'res',
-        'application/x-dvi' => 'dvi',
-        'application/x-envoy' => 'evy',
-        'application/x-eva' => 'eva',
-        'application/x-font-bdf' => 'bdf',
-        'application/x-font-ghostscript' => 'gsf',
-        'application/x-font-linux-psf' => 'psf',
-        'application/x-font-otf' => 'otf',
-        'application/x-font-pcf' => 'pcf',
-        'application/x-font-snf' => 'snf',
-        'application/x-font-ttf' => 'ttf',
-        'application/x-font-type1' => 'pfa',
-        'application/x-font-woff' => 'woff',
-        'application/x-freearc' => 'arc',
-        'application/x-futuresplash' => 'spl',
-        'application/x-gca-compressed' => 'gca',
-        'application/x-glulx' => 'ulx',
-        'application/x-gnumeric' => 'gnumeric',
-        'application/x-gramps-xml' => 'gramps',
-        'application/x-gtar' => 'gtar',
-        'application/x-hdf' => 'hdf',
-        'application/x-install-instructions' => 'install',
-        'application/x-iso9660-image' => 'iso',
-        'application/x-java-jnlp-file' => 'jnlp',
-        'application/x-latex' => 'latex',
-        'application/x-lzh-compressed' => 'lzh',
-        'application/x-mie' => 'mie',
-        'application/x-mobipocket-ebook' => 'prc',
-        'application/x-ms-application' => 'application',
-        'application/x-ms-shortcut' => 'lnk',
-        'application/x-ms-wmd' => 'wmd',
-        'application/x-ms-wmz' => 'wmz',
-        'application/x-ms-xbap' => 'xbap',
-        'application/x-msaccess' => 'mdb',
-        'application/x-msbinder' => 'obd',
-        'application/x-mscardfile' => 'crd',
-        'application/x-msclip' => 'clp',
-        'application/x-msdownload' => 'exe',
-        'application/x-msmediaview' => 'mvb',
-        'application/x-msmetafile' => 'wmf',
-        'application/x-msmoney' => 'mny',
-        'application/x-mspublisher' => 'pub',
-        'application/x-msschedule' => 'scd',
-        'application/x-msterminal' => 'trm',
-        'application/x-mswrite' => 'wri',
-        'application/x-netcdf' => 'nc',
-        'application/x-nzb' => 'nzb',
-        'application/x-pkcs12' => 'p12',
-        'application/x-pkcs7-certificates' => 'p7b',
-        'application/x-pkcs7-certreqresp' => 'p7r',
-        'application/x-rar-compressed' => 'rar',
-        'application/x-rar' => 'rar',
-        'application/x-research-info-systems' => 'ris',
-        'application/x-sh' => 'sh',
-        'application/x-shar' => 'shar',
-        'application/x-shockwave-flash' => 'swf',
-        'application/x-silverlight-app' => 'xap',
-        'application/x-sql' => 'sql',
-        'application/x-stuffit' => 'sit',
-        'application/x-stuffitx' => 'sitx',
-        'application/x-subrip' => 'srt',
-        'application/x-sv4cpio' => 'sv4cpio',
-        'application/x-sv4crc' => 'sv4crc',
-        'application/x-t3vm-image' => 't3',
-        'application/x-tads' => 'gam',
-        'application/x-tar' => 'tar',
-        'application/x-tcl' => 'tcl',
-        'application/x-tex' => 'tex',
-        'application/x-tex-tfm' => 'tfm',
-        'application/x-texinfo' => 'texinfo',
-        'application/x-tgif' => 'obj',
-        'application/x-ustar' => 'ustar',
-        'application/x-wais-source' => 'src',
-        'application/x-x509-ca-cert' => 'der',
-        'application/x-xfig' => 'fig',
-        'application/x-xliff+xml' => 'xlf',
-        'application/x-xpinstall' => 'xpi',
-        'application/x-xz' => 'xz',
-        'application/x-zip-compressed' => 'zip',
-        'application/x-zmachine' => 'z1',
-        'application/xaml+xml' => 'xaml',
-        'application/xcap-diff+xml' => 'xdf',
-        'application/xenc+xml' => 'xenc',
-        'application/xhtml+xml' => 'xhtml',
-        'application/xml' => 'xml',
-        'application/xml-dtd' => 'dtd',
-        'application/xop+xml' => 'xop',
-        'application/xproc+xml' => 'xpl',
-        'application/xslt+xml' => 'xslt',
-        'application/xspf+xml' => 'xspf',
-        'application/xv+xml' => 'mxml',
-        'application/yang' => 'yang',
-        'application/yin+xml' => 'yin',
-        'application/zip' => 'zip',
-        'audio/adpcm' => 'adp',
-        'audio/basic' => 'au',
-        'audio/midi' => 'mid',
-        'audio/mp4' => 'm4a',
-        'audio/mpeg' => 'mp3',
-        'audio/ogg' => 'oga',
-        'audio/s3m' => 's3m',
-        'audio/silk' => 'sil',
-        'audio/vnd.dece.audio' => 'uva',
-        'audio/vnd.digital-winds' => 'eol',
-        'audio/vnd.dra' => 'dra',
-        'audio/vnd.dts' => 'dts',
-        'audio/vnd.dts.hd' => 'dtshd',
-        'audio/vnd.lucent.voice' => 'lvp',
-        'audio/vnd.ms-playready.media.pya' => 'pya',
-        'audio/vnd.nuera.ecelp4800' => 'ecelp4800',
-        'audio/vnd.nuera.ecelp7470' => 'ecelp7470',
-        'audio/vnd.nuera.ecelp9600' => 'ecelp9600',
-        'audio/vnd.rip' => 'rip',
-        'audio/webm' => 'weba',
-        'audio/x-aac' => 'aac',
-        'audio/x-aiff' => 'aif',
-        'audio/x-caf' => 'caf',
-        'audio/x-flac' => 'flac',
-        'audio/x-hx-aac-adts' => 'aac',
-        'audio/x-matroska' => 'mka',
-        'audio/x-mpegurl' => 'm3u',
-        'audio/x-ms-wax' => 'wax',
-        'audio/x-ms-wma' => 'wma',
-        'audio/x-pn-realaudio' => 'ram',
-        'audio/x-pn-realaudio-plugin' => 'rmp',
-        'audio/x-wav' => 'wav',
-        'audio/xm' => 'xm',
-        'chemical/x-cdx' => 'cdx',
-        'chemical/x-cif' => 'cif',
-        'chemical/x-cmdf' => 'cmdf',
-        'chemical/x-cml' => 'cml',
-        'chemical/x-csml' => 'csml',
-        'chemical/x-xyz' => 'xyz',
-        'font/collection' => 'ttc',
-        'font/otf' => 'otf',
-        'font/ttf' => 'ttf',
-        'font/woff' => 'woff',
-        'font/woff2' => 'woff2',
-        'image/bmp' => 'bmp',
-        'image/x-ms-bmp' => 'bmp',
-        'image/cgm' => 'cgm',
-        'image/g3fax' => 'g3',
-        'image/gif' => 'gif',
-        'image/ief' => 'ief',
-        'image/jpeg' => 'jpeg',
-        'image/pjpeg' => 'jpeg',
-        'image/ktx' => 'ktx',
-        'image/png' => 'png',
-        'image/prs.btif' => 'btif',
-        'image/sgi' => 'sgi',
-        'image/svg+xml' => 'svg',
-        'image/tiff' => 'tiff',
-        'image/vnd.adobe.photoshop' => 'psd',
-        'image/vnd.dece.graphic' => 'uvi',
-        'image/vnd.djvu' => 'djvu',
-        'image/vnd.dvb.subtitle' => 'sub',
-        'image/vnd.dwg' => 'dwg',
-        'image/vnd.dxf' => 'dxf',
-        'image/vnd.fastbidsheet' => 'fbs',
-        'image/vnd.fpx' => 'fpx',
-        'image/vnd.fst' => 'fst',
-        'image/vnd.fujixerox.edmics-mmr' => 'mmr',
-        'image/vnd.fujixerox.edmics-rlc' => 'rlc',
-        'image/vnd.ms-modi' => 'mdi',
-        'image/vnd.ms-photo' => 'wdp',
-        'image/vnd.net-fpx' => 'npx',
-        'image/vnd.wap.wbmp' => 'wbmp',
-        'image/vnd.xiff' => 'xif',
-        'image/webp' => 'webp',
-        'image/x-3ds' => '3ds',
-        'image/x-cmu-raster' => 'ras',
-        'image/x-cmx' => 'cmx',
-        'image/x-freehand' => 'fh',
-        'image/x-icon' => 'ico',
-        'image/x-mrsid-image' => 'sid',
-        'image/x-pcx' => 'pcx',
-        'image/x-pict' => 'pic',
-        'image/x-portable-anymap' => 'pnm',
-        'image/x-portable-bitmap' => 'pbm',
-        'image/x-portable-graymap' => 'pgm',
-        'image/x-portable-pixmap' => 'ppm',
-        'image/x-rgb' => 'rgb',
-        'image/x-tga' => 'tga',
-        'image/x-xbitmap' => 'xbm',
-        'image/x-xpixmap' => 'xpm',
-        'image/x-xwindowdump' => 'xwd',
-        'message/rfc822' => 'eml',
-        'model/iges' => 'igs',
-        'model/mesh' => 'msh',
-        'model/vnd.collada+xml' => 'dae',
-        'model/vnd.dwf' => 'dwf',
-        'model/vnd.gdl' => 'gdl',
-        'model/vnd.gtw' => 'gtw',
-        'model/vnd.mts' => 'mts',
-        'model/vnd.vtu' => 'vtu',
-        'model/vrml' => 'wrl',
-        'model/x3d+binary' => 'x3db',
-        'model/x3d+vrml' => 'x3dv',
-        'model/x3d+xml' => 'x3d',
-        'text/cache-manifest' => 'appcache',
-        'text/calendar' => 'ics',
-        'text/css' => 'css',
-        'text/csv' => 'csv',
-        'text/html' => 'html',
-        'text/n3' => 'n3',
-        'text/plain' => 'txt',
-        'text/prs.lines.tag' => 'dsc',
-        'text/richtext' => 'rtx',
-        'text/rtf' => 'rtf',
-        'text/sgml' => 'sgml',
-        'text/tab-separated-values' => 'tsv',
-        'text/troff' => 't',
-        'text/turtle' => 'ttl',
-        'text/uri-list' => 'uri',
-        'text/vcard' => 'vcard',
-        'text/vnd.curl' => 'curl',
-        'text/vnd.curl.dcurl' => 'dcurl',
-        'text/vnd.curl.mcurl' => 'mcurl',
-        'text/vnd.curl.scurl' => 'scurl',
-        'text/vnd.dvb.subtitle' => 'sub',
-        'text/vnd.fly' => 'fly',
-        'text/vnd.fmi.flexstor' => 'flx',
-        'text/vnd.graphviz' => 'gv',
-        'text/vnd.in3d.3dml' => '3dml',
-        'text/vnd.in3d.spot' => 'spot',
-        'text/vnd.sun.j2me.app-descriptor' => 'jad',
-        'text/vnd.wap.wml' => 'wml',
-        'text/vnd.wap.wmlscript' => 'wmls',
-        'text/vtt' => 'vtt',
-        'text/x-asm' => 's',
-        'text/x-c' => 'c',
-        'text/x-fortran' => 'f',
-        'text/x-java-source' => 'java',
-        'text/x-nfo' => 'nfo',
-        'text/x-opml' => 'opml',
-        'text/x-pascal' => 'p',
-        'text/x-setext' => 'etx',
-        'text/x-sfv' => 'sfv',
-        'text/x-uuencode' => 'uu',
-        'text/x-vcalendar' => 'vcs',
-        'text/x-vcard' => 'vcf',
-        'video/3gpp' => '3gp',
-        'video/3gpp2' => '3g2',
-        'video/h261' => 'h261',
-        'video/h263' => 'h263',
-        'video/h264' => 'h264',
-        'video/jpeg' => 'jpgv',
-        'video/jpm' => 'jpm',
-        'video/mj2' => 'mj2',
-        'video/mp4' => 'mp4',
-        'video/mpeg' => 'mpeg',
-        'video/ogg' => 'ogv',
-        'video/quicktime' => 'qt',
-        'video/vnd.dece.hd' => 'uvh',
-        'video/vnd.dece.mobile' => 'uvm',
-        'video/vnd.dece.pd' => 'uvp',
-        'video/vnd.dece.sd' => 'uvs',
-        'video/vnd.dece.video' => 'uvv',
-        'video/vnd.dvb.file' => 'dvb',
-        'video/vnd.fvt' => 'fvt',
-        'video/vnd.mpegurl' => 'mxu',
-        'video/vnd.ms-playready.media.pyv' => 'pyv',
-        'video/vnd.uvvu.mp4' => 'uvu',
-        'video/vnd.vivo' => 'viv',
-        'video/webm' => 'webm',
-        'video/x-f4v' => 'f4v',
-        'video/x-fli' => 'fli',
-        'video/x-flv' => 'flv',
-        'video/x-m4v' => 'm4v',
-        'video/x-matroska' => 'mkv',
-        'video/x-mng' => 'mng',
-        'video/x-ms-asf' => 'asf',
-        'video/x-ms-vob' => 'vob',
-        'video/x-ms-wm' => 'wm',
-        'video/x-ms-wmv' => 'wmv',
-        'video/x-ms-wmx' => 'wmx',
-        'video/x-ms-wvx' => 'wvx',
-        'video/x-msvideo' => 'avi',
-        'video/x-sgi-movie' => 'movie',
-        'video/x-smv' => 'smv',
-        'x-conference/x-cooltalk' => 'ice',
-    ];
-
-    /**
-     * {@inheritdoc}
-     */
-    public function guess($mimeType)
-    {
-        if (isset($this->defaultExtensions[$mimeType])) {
-            return $this->defaultExtensions[$mimeType];
-        }
-
-        $lcMimeType = strtolower($mimeType);
-
-        return isset($this->defaultExtensions[$lcMimeType]) ? $this->defaultExtensions[$lcMimeType] : null;
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php
deleted file mode 100644
index bdac43149779c9640695bafd0f064e5c60e3385d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\MimeType;
-
-use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\Mime\MimeTypes;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeGuesser::class, MimeTypes::class), \E_USER_DEPRECATED);
-
-/**
- * A singleton mime type guesser.
- *
- * By default, all mime type guessers provided by the framework are installed
- * (if available on the current OS/PHP setup).
- *
- * You can register custom guessers by calling the register() method on the
- * singleton instance. Custom guessers are always called before any default ones.
- *
- *     $guesser = MimeTypeGuesser::getInstance();
- *     $guesser->register(new MyCustomMimeTypeGuesser());
- *
- * If you want to change the order of the default guessers, just re-register your
- * preferred one as a custom one. The last registered guesser is preferred over
- * previously registered ones.
- *
- * Re-registering a built-in guesser also allows you to configure it:
- *
- *     $guesser = MimeTypeGuesser::getInstance();
- *     $guesser->register(new FileinfoMimeTypeGuesser('/path/to/magic/file'));
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class MimeTypeGuesser implements MimeTypeGuesserInterface
-{
-    /**
-     * The singleton instance.
-     *
-     * @var MimeTypeGuesser
-     */
-    private static $instance = null;
-
-    /**
-     * All registered MimeTypeGuesserInterface instances.
-     *
-     * @var array
-     */
-    protected $guessers = [];
-
-    /**
-     * Returns the singleton instance.
-     *
-     * @return self
-     */
-    public static function getInstance()
-    {
-        if (null === self::$instance) {
-            self::$instance = new self();
-        }
-
-        return self::$instance;
-    }
-
-    /**
-     * Resets the singleton instance.
-     */
-    public static function reset()
-    {
-        self::$instance = null;
-    }
-
-    /**
-     * Registers all natively provided mime type guessers.
-     */
-    private function __construct()
-    {
-        $this->register(new FileBinaryMimeTypeGuesser());
-        $this->register(new FileinfoMimeTypeGuesser());
-    }
-
-    /**
-     * Registers a new mime type guesser.
-     *
-     * When guessing, this guesser is preferred over previously registered ones.
-     */
-    public function register(MimeTypeGuesserInterface $guesser)
-    {
-        array_unshift($this->guessers, $guesser);
-    }
-
-    /**
-     * Tries to guess the mime type of the given file.
-     *
-     * The file is passed to each registered mime type guesser in reverse order
-     * of their registration (last registered is queried first). Once a guesser
-     * returns a value that is not NULL, this method terminates and returns the
-     * value.
-     *
-     * @param string $path The path to the file
-     *
-     * @return string The mime type or NULL, if none could be guessed
-     *
-     * @throws \LogicException
-     * @throws FileNotFoundException
-     * @throws AccessDeniedException
-     */
-    public function guess($path)
-    {
-        if (!is_file($path)) {
-            throw new FileNotFoundException($path);
-        }
-
-        if (!is_readable($path)) {
-            throw new AccessDeniedException($path);
-        }
-
-        foreach ($this->guessers as $guesser) {
-            if (null !== $mimeType = $guesser->guess($path)) {
-                return $mimeType;
-            }
-        }
-
-        if (2 === \count($this->guessers) && !FileBinaryMimeTypeGuesser::isSupported() && !FileinfoMimeTypeGuesser::isSupported()) {
-            throw new \LogicException('Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?).');
-        }
-
-        return null;
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesserInterface.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesserInterface.php
deleted file mode 100644
index eab444890efe11954f8f887326d4abec26aa2424..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesserInterface.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File\MimeType;
-
-use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\Mime\MimeTypesInterface;
-
-/**
- * Guesses the mime type of a file.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since Symfony 4.3, use {@link MimeTypesInterface} instead
- */
-interface MimeTypeGuesserInterface
-{
-    /**
-     * Guesses the mime type of the file with the given path.
-     *
-     * @param string $path The path to the file
-     *
-     * @return string|null The mime type or NULL, if none could be guessed
-     *
-     * @throws FileNotFoundException If the file does not exist
-     * @throws AccessDeniedException If the file could not be read
-     */
-    public function guess($path);
-}
diff --git a/vendor/symfony/http-foundation/File/Stream.php b/vendor/symfony/http-foundation/File/Stream.php
deleted file mode 100644
index 69ae74c110bb8681afc171e300e7b2cf47b98384..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/Stream.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File;
-
-/**
- * A PHP stream of unknown size.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class Stream extends File
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getSize()
-    {
-        return false;
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/UploadedFile.php b/vendor/symfony/http-foundation/File/UploadedFile.php
deleted file mode 100644
index e0b068a5dc498a793434860273b563d8540316b3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/File/UploadedFile.php
+++ /dev/null
@@ -1,308 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\File;
-
-use Symfony\Component\HttpFoundation\File\Exception\CannotWriteFileException;
-use Symfony\Component\HttpFoundation\File\Exception\ExtensionFileException;
-use Symfony\Component\HttpFoundation\File\Exception\FileException;
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\HttpFoundation\File\Exception\FormSizeFileException;
-use Symfony\Component\HttpFoundation\File\Exception\IniSizeFileException;
-use Symfony\Component\HttpFoundation\File\Exception\NoFileException;
-use Symfony\Component\HttpFoundation\File\Exception\NoTmpDirFileException;
-use Symfony\Component\HttpFoundation\File\Exception\PartialFileException;
-use Symfony\Component\Mime\MimeTypes;
-
-/**
- * A file uploaded through a form.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- * @author Florian Eckerstorfer <florian@eckerstorfer.org>
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class UploadedFile extends File
-{
-    private $test;
-    private $originalName;
-    private $mimeType;
-    private $error;
-
-    /**
-     * Accepts the information of the uploaded file as provided by the PHP global $_FILES.
-     *
-     * The file object is only created when the uploaded file is valid (i.e. when the
-     * isValid() method returns true). Otherwise the only methods that could be called
-     * on an UploadedFile instance are:
-     *
-     *   * getClientOriginalName,
-     *   * getClientMimeType,
-     *   * isValid,
-     *   * getError.
-     *
-     * Calling any other method on an non-valid instance will cause an unpredictable result.
-     *
-     * @param string      $path         The full temporary path to the file
-     * @param string      $originalName The original file name of the uploaded file
-     * @param string|null $mimeType     The type of the file as provided by PHP; null defaults to application/octet-stream
-     * @param int|null    $error        The error constant of the upload (one of PHP's UPLOAD_ERR_XXX constants); null defaults to UPLOAD_ERR_OK
-     * @param bool        $test         Whether the test mode is active
-     *                                  Local files are used in test mode hence the code should not enforce HTTP uploads
-     *
-     * @throws FileException         If file_uploads is disabled
-     * @throws FileNotFoundException If the file does not exist
-     */
-    public function __construct(string $path, string $originalName, string $mimeType = null, int $error = null, $test = false)
-    {
-        $this->originalName = $this->getName($originalName);
-        $this->mimeType = $mimeType ?: 'application/octet-stream';
-
-        if (4 < \func_num_args() ? !\is_bool($test) : null !== $error && @filesize($path) === $error) {
-            @trigger_error(sprintf('Passing a size as 4th argument to the constructor of "%s" is deprecated since Symfony 4.1.', __CLASS__), \E_USER_DEPRECATED);
-            $error = $test;
-            $test = 5 < \func_num_args() ? func_get_arg(5) : false;
-        }
-
-        $this->error = $error ?: \UPLOAD_ERR_OK;
-        $this->test = $test;
-
-        parent::__construct($path, \UPLOAD_ERR_OK === $this->error);
-    }
-
-    /**
-     * Returns the original file name.
-     *
-     * It is extracted from the request from which the file has been uploaded.
-     * Then it should not be considered as a safe value.
-     *
-     * @return string The original name
-     */
-    public function getClientOriginalName()
-    {
-        return $this->originalName;
-    }
-
-    /**
-     * Returns the original file extension.
-     *
-     * It is extracted from the original file name that was uploaded.
-     * Then it should not be considered as a safe value.
-     *
-     * @return string The extension
-     */
-    public function getClientOriginalExtension()
-    {
-        return pathinfo($this->originalName, \PATHINFO_EXTENSION);
-    }
-
-    /**
-     * Returns the file mime type.
-     *
-     * The client mime type is extracted from the request from which the file
-     * was uploaded, so it should not be considered as a safe value.
-     *
-     * For a trusted mime type, use getMimeType() instead (which guesses the mime
-     * type based on the file content).
-     *
-     * @return string The mime type
-     *
-     * @see getMimeType()
-     */
-    public function getClientMimeType()
-    {
-        return $this->mimeType;
-    }
-
-    /**
-     * Returns the extension based on the client mime type.
-     *
-     * If the mime type is unknown, returns null.
-     *
-     * This method uses the mime type as guessed by getClientMimeType()
-     * to guess the file extension. As such, the extension returned
-     * by this method cannot be trusted.
-     *
-     * For a trusted extension, use guessExtension() instead (which guesses
-     * the extension based on the guessed mime type for the file).
-     *
-     * @return string|null The guessed extension or null if it cannot be guessed
-     *
-     * @see guessExtension()
-     * @see getClientMimeType()
-     */
-    public function guessClientExtension()
-    {
-        return MimeTypes::getDefault()->getExtensions($this->getClientMimeType())[0] ?? null;
-    }
-
-    /**
-     * Returns the file size.
-     *
-     * It is extracted from the request from which the file has been uploaded.
-     * Then it should not be considered as a safe value.
-     *
-     * @deprecated since Symfony 4.1, use getSize() instead.
-     *
-     * @return int|null The file sizes
-     */
-    public function getClientSize()
-    {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1. Use getSize() instead.', __METHOD__), \E_USER_DEPRECATED);
-
-        return $this->getSize();
-    }
-
-    /**
-     * Returns the upload error.
-     *
-     * If the upload was successful, the constant UPLOAD_ERR_OK is returned.
-     * Otherwise one of the other UPLOAD_ERR_XXX constants is returned.
-     *
-     * @return int The upload error
-     */
-    public function getError()
-    {
-        return $this->error;
-    }
-
-    /**
-     * Returns whether the file was uploaded successfully.
-     *
-     * @return bool True if the file has been uploaded with HTTP and no error occurred
-     */
-    public function isValid()
-    {
-        $isOk = \UPLOAD_ERR_OK === $this->error;
-
-        return $this->test ? $isOk : $isOk && is_uploaded_file($this->getPathname());
-    }
-
-    /**
-     * Moves the file to a new location.
-     *
-     * @param string $directory The destination folder
-     * @param string $name      The new file name
-     *
-     * @return File A File object representing the new file
-     *
-     * @throws FileException if, for any reason, the file could not have been moved
-     */
-    public function move($directory, $name = null)
-    {
-        if ($this->isValid()) {
-            if ($this->test) {
-                return parent::move($directory, $name);
-            }
-
-            $target = $this->getTargetFile($directory, $name);
-
-            set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; });
-            $moved = move_uploaded_file($this->getPathname(), $target);
-            restore_error_handler();
-            if (!$moved) {
-                throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error)));
-            }
-
-            @chmod($target, 0666 & ~umask());
-
-            return $target;
-        }
-
-        switch ($this->error) {
-            case \UPLOAD_ERR_INI_SIZE:
-                throw new IniSizeFileException($this->getErrorMessage());
-            case \UPLOAD_ERR_FORM_SIZE:
-                throw new FormSizeFileException($this->getErrorMessage());
-            case \UPLOAD_ERR_PARTIAL:
-                throw new PartialFileException($this->getErrorMessage());
-            case \UPLOAD_ERR_NO_FILE:
-                throw new NoFileException($this->getErrorMessage());
-            case \UPLOAD_ERR_CANT_WRITE:
-                throw new CannotWriteFileException($this->getErrorMessage());
-            case \UPLOAD_ERR_NO_TMP_DIR:
-                throw new NoTmpDirFileException($this->getErrorMessage());
-            case \UPLOAD_ERR_EXTENSION:
-                throw new ExtensionFileException($this->getErrorMessage());
-        }
-
-        throw new FileException($this->getErrorMessage());
-    }
-
-    /**
-     * Returns the maximum size of an uploaded file as configured in php.ini.
-     *
-     * @return int The maximum size of an uploaded file in bytes
-     */
-    public static function getMaxFilesize()
-    {
-        $sizePostMax = self::parseFilesize(ini_get('post_max_size'));
-        $sizeUploadMax = self::parseFilesize(ini_get('upload_max_filesize'));
-
-        return min($sizePostMax ?: \PHP_INT_MAX, $sizeUploadMax ?: \PHP_INT_MAX);
-    }
-
-    /**
-     * Returns the given size from an ini value in bytes.
-     */
-    private static function parseFilesize($size): int
-    {
-        if ('' === $size) {
-            return 0;
-        }
-
-        $size = strtolower($size);
-
-        $max = ltrim($size, '+');
-        if (0 === strpos($max, '0x')) {
-            $max = \intval($max, 16);
-        } elseif (0 === strpos($max, '0')) {
-            $max = \intval($max, 8);
-        } else {
-            $max = (int) $max;
-        }
-
-        switch (substr($size, -1)) {
-            case 't': $max *= 1024;
-            // no break
-            case 'g': $max *= 1024;
-            // no break
-            case 'm': $max *= 1024;
-            // no break
-            case 'k': $max *= 1024;
-        }
-
-        return $max;
-    }
-
-    /**
-     * Returns an informative upload error message.
-     *
-     * @return string The error message regarding the specified error code
-     */
-    public function getErrorMessage()
-    {
-        static $errors = [
-            \UPLOAD_ERR_INI_SIZE => 'The file "%s" exceeds your upload_max_filesize ini directive (limit is %d KiB).',
-            \UPLOAD_ERR_FORM_SIZE => 'The file "%s" exceeds the upload limit defined in your form.',
-            \UPLOAD_ERR_PARTIAL => 'The file "%s" was only partially uploaded.',
-            \UPLOAD_ERR_NO_FILE => 'No file was uploaded.',
-            \UPLOAD_ERR_CANT_WRITE => 'The file "%s" could not be written on disk.',
-            \UPLOAD_ERR_NO_TMP_DIR => 'File could not be uploaded: missing temporary directory.',
-            \UPLOAD_ERR_EXTENSION => 'File upload was stopped by a PHP extension.',
-        ];
-
-        $errorCode = $this->error;
-        $maxFilesize = \UPLOAD_ERR_INI_SIZE === $errorCode ? self::getMaxFilesize() / 1024 : 0;
-        $message = isset($errors[$errorCode]) ? $errors[$errorCode] : 'The file "%s" was not uploaded due to an unknown error.';
-
-        return sprintf($message, $this->getClientOriginalName(), $maxFilesize);
-    }
-}
diff --git a/vendor/symfony/http-foundation/FileBag.php b/vendor/symfony/http-foundation/FileBag.php
deleted file mode 100644
index 46744434590b26cfcf6c2df0df62a6bdc44460c4..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/FileBag.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-
-/**
- * FileBag is a container for uploaded files.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- */
-class FileBag extends ParameterBag
-{
-    private static $fileKeys = ['error', 'name', 'size', 'tmp_name', 'type'];
-
-    /**
-     * @param array|UploadedFile[] $parameters An array of HTTP files
-     */
-    public function __construct(array $parameters = [])
-    {
-        $this->replace($parameters);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function replace(array $files = [])
-    {
-        $this->parameters = [];
-        $this->add($files);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($key, $value)
-    {
-        if (!\is_array($value) && !$value instanceof UploadedFile) {
-            throw new \InvalidArgumentException('An uploaded file must be an array or an instance of UploadedFile.');
-        }
-
-        parent::set($key, $this->convertFileInformation($value));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add(array $files = [])
-    {
-        foreach ($files as $key => $file) {
-            $this->set($key, $file);
-        }
-    }
-
-    /**
-     * Converts uploaded files to UploadedFile instances.
-     *
-     * @param array|UploadedFile $file A (multi-dimensional) array of uploaded file information
-     *
-     * @return UploadedFile[]|UploadedFile|null A (multi-dimensional) array of UploadedFile instances
-     */
-    protected function convertFileInformation($file)
-    {
-        if ($file instanceof UploadedFile) {
-            return $file;
-        }
-
-        if (\is_array($file)) {
-            $file = $this->fixPhpFilesArray($file);
-            $keys = array_keys($file);
-            sort($keys);
-
-            if ($keys == self::$fileKeys) {
-                if (\UPLOAD_ERR_NO_FILE == $file['error']) {
-                    $file = null;
-                } else {
-                    $file = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['error'], false);
-                }
-            } else {
-                $file = array_map([$this, 'convertFileInformation'], $file);
-                if (array_keys($keys) === $keys) {
-                    $file = array_filter($file);
-                }
-            }
-        }
-
-        return $file;
-    }
-
-    /**
-     * Fixes a malformed PHP $_FILES array.
-     *
-     * PHP has a bug that the format of the $_FILES array differs, depending on
-     * whether the uploaded file fields had normal field names or array-like
-     * field names ("normal" vs. "parent[child]").
-     *
-     * This method fixes the array to look like the "normal" $_FILES array.
-     *
-     * It's safe to pass an already converted array, in which case this method
-     * just returns the original array unmodified.
-     *
-     * @param array $data
-     *
-     * @return array
-     */
-    protected function fixPhpFilesArray($data)
-    {
-        $keys = array_keys($data);
-        sort($keys);
-
-        if (self::$fileKeys != $keys || !isset($data['name']) || !\is_array($data['name'])) {
-            return $data;
-        }
-
-        $files = $data;
-        foreach (self::$fileKeys as $k) {
-            unset($files[$k]);
-        }
-
-        foreach ($data['name'] as $key => $name) {
-            $files[$key] = $this->fixPhpFilesArray([
-                'error' => $data['error'][$key],
-                'name' => $name,
-                'type' => $data['type'][$key],
-                'tmp_name' => $data['tmp_name'][$key],
-                'size' => $data['size'][$key],
-            ]);
-        }
-
-        return $files;
-    }
-}
diff --git a/vendor/symfony/http-foundation/HeaderBag.php b/vendor/symfony/http-foundation/HeaderBag.php
deleted file mode 100644
index a74dce883be5404001be13dbc510daa6fa4460f9..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/HeaderBag.php
+++ /dev/null
@@ -1,317 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * HeaderBag is a container for HTTP headers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HeaderBag implements \IteratorAggregate, \Countable
-{
-    protected const UPPER = '_ABCDEFGHIJKLMNOPQRSTUVWXYZ';
-    protected const LOWER = '-abcdefghijklmnopqrstuvwxyz';
-
-    protected $headers = [];
-    protected $cacheControl = [];
-
-    public function __construct(array $headers = [])
-    {
-        foreach ($headers as $key => $values) {
-            $this->set($key, $values);
-        }
-    }
-
-    /**
-     * Returns the headers as a string.
-     *
-     * @return string The headers
-     */
-    public function __toString()
-    {
-        if (!$headers = $this->all()) {
-            return '';
-        }
-
-        ksort($headers);
-        $max = max(array_map('strlen', array_keys($headers))) + 1;
-        $content = '';
-        foreach ($headers as $name => $values) {
-            $name = ucwords($name, '-');
-            foreach ($values as $value) {
-                $content .= sprintf("%-{$max}s %s\r\n", $name.':', $value);
-            }
-        }
-
-        return $content;
-    }
-
-    /**
-     * Returns the headers.
-     *
-     * @param string|null $key The name of the headers to return or null to get them all
-     *
-     * @return array An array of headers
-     */
-    public function all(/*string $key = null*/)
-    {
-        if (1 <= \func_num_args() && null !== $key = func_get_arg(0)) {
-            return $this->headers[strtr($key, self::UPPER, self::LOWER)] ?? [];
-        }
-
-        return $this->headers;
-    }
-
-    /**
-     * Returns the parameter keys.
-     *
-     * @return array An array of parameter keys
-     */
-    public function keys()
-    {
-        return array_keys($this->all());
-    }
-
-    /**
-     * Replaces the current HTTP headers by a new set.
-     */
-    public function replace(array $headers = [])
-    {
-        $this->headers = [];
-        $this->add($headers);
-    }
-
-    /**
-     * Adds new headers the current HTTP headers set.
-     */
-    public function add(array $headers)
-    {
-        foreach ($headers as $key => $values) {
-            $this->set($key, $values);
-        }
-    }
-
-    /**
-     * Returns a header value by name.
-     *
-     * @param string      $key     The header name
-     * @param string|null $default The default value
-     *
-     * @return string|null The first header value or default value
-     */
-    public function get($key, $default = null)
-    {
-        $headers = $this->all((string) $key);
-        if (2 < \func_num_args()) {
-            @trigger_error(sprintf('Passing a third argument to "%s()" is deprecated since Symfony 4.4, use method "all()" instead', __METHOD__), \E_USER_DEPRECATED);
-
-            if (!func_get_arg(2)) {
-                return $headers;
-            }
-        }
-
-        if (!$headers) {
-            return $default;
-        }
-
-        if (null === $headers[0]) {
-            return null;
-        }
-
-        return (string) $headers[0];
-    }
-
-    /**
-     * Sets a header by name.
-     *
-     * @param string          $key     The key
-     * @param string|string[] $values  The value or an array of values
-     * @param bool            $replace Whether to replace the actual value or not (true by default)
-     */
-    public function set($key, $values, $replace = true)
-    {
-        $key = strtr($key, self::UPPER, self::LOWER);
-
-        if (\is_array($values)) {
-            $values = array_values($values);
-
-            if (true === $replace || !isset($this->headers[$key])) {
-                $this->headers[$key] = $values;
-            } else {
-                $this->headers[$key] = array_merge($this->headers[$key], $values);
-            }
-        } else {
-            if (true === $replace || !isset($this->headers[$key])) {
-                $this->headers[$key] = [$values];
-            } else {
-                $this->headers[$key][] = $values;
-            }
-        }
-
-        if ('cache-control' === $key) {
-            $this->cacheControl = $this->parseCacheControl(implode(', ', $this->headers[$key]));
-        }
-    }
-
-    /**
-     * Returns true if the HTTP header is defined.
-     *
-     * @param string $key The HTTP header
-     *
-     * @return bool true if the parameter exists, false otherwise
-     */
-    public function has($key)
-    {
-        return \array_key_exists(strtr($key, self::UPPER, self::LOWER), $this->all());
-    }
-
-    /**
-     * Returns true if the given HTTP header contains the given value.
-     *
-     * @param string $key   The HTTP header name
-     * @param string $value The HTTP value
-     *
-     * @return bool true if the value is contained in the header, false otherwise
-     */
-    public function contains($key, $value)
-    {
-        return \in_array($value, $this->all((string) $key));
-    }
-
-    /**
-     * Removes a header.
-     *
-     * @param string $key The HTTP header name
-     */
-    public function remove($key)
-    {
-        $key = strtr($key, self::UPPER, self::LOWER);
-
-        unset($this->headers[$key]);
-
-        if ('cache-control' === $key) {
-            $this->cacheControl = [];
-        }
-    }
-
-    /**
-     * Returns the HTTP header value converted to a date.
-     *
-     * @param string $key The parameter key
-     *
-     * @return \DateTimeInterface|null The parsed DateTime or the default value if the header does not exist
-     *
-     * @throws \RuntimeException When the HTTP header is not parseable
-     */
-    public function getDate($key, \DateTime $default = null)
-    {
-        if (null === $value = $this->get($key)) {
-            return $default;
-        }
-
-        if (false === $date = \DateTime::createFromFormat(\DATE_RFC2822, $value)) {
-            throw new \RuntimeException(sprintf('The "%s" HTTP header is not parseable (%s).', $key, $value));
-        }
-
-        return $date;
-    }
-
-    /**
-     * Adds a custom Cache-Control directive.
-     *
-     * @param string $key   The Cache-Control directive name
-     * @param mixed  $value The Cache-Control directive value
-     */
-    public function addCacheControlDirective($key, $value = true)
-    {
-        $this->cacheControl[$key] = $value;
-
-        $this->set('Cache-Control', $this->getCacheControlHeader());
-    }
-
-    /**
-     * Returns true if the Cache-Control directive is defined.
-     *
-     * @param string $key The Cache-Control directive
-     *
-     * @return bool true if the directive exists, false otherwise
-     */
-    public function hasCacheControlDirective($key)
-    {
-        return \array_key_exists($key, $this->cacheControl);
-    }
-
-    /**
-     * Returns a Cache-Control directive value by name.
-     *
-     * @param string $key The directive name
-     *
-     * @return mixed|null The directive value if defined, null otherwise
-     */
-    public function getCacheControlDirective($key)
-    {
-        return \array_key_exists($key, $this->cacheControl) ? $this->cacheControl[$key] : null;
-    }
-
-    /**
-     * Removes a Cache-Control directive.
-     *
-     * @param string $key The Cache-Control directive
-     */
-    public function removeCacheControlDirective($key)
-    {
-        unset($this->cacheControl[$key]);
-
-        $this->set('Cache-Control', $this->getCacheControlHeader());
-    }
-
-    /**
-     * Returns an iterator for headers.
-     *
-     * @return \ArrayIterator An \ArrayIterator instance
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->headers);
-    }
-
-    /**
-     * Returns the number of headers.
-     *
-     * @return int The number of headers
-     */
-    public function count()
-    {
-        return \count($this->headers);
-    }
-
-    protected function getCacheControlHeader()
-    {
-        ksort($this->cacheControl);
-
-        return HeaderUtils::toString($this->cacheControl, ',');
-    }
-
-    /**
-     * Parses a Cache-Control HTTP header.
-     *
-     * @param string $header The value of the Cache-Control HTTP header
-     *
-     * @return array An array representing the attribute values
-     */
-    protected function parseCacheControl($header)
-    {
-        $parts = HeaderUtils::split($header, ',=');
-
-        return HeaderUtils::combine($parts);
-    }
-}
diff --git a/vendor/symfony/http-foundation/HeaderUtils.php b/vendor/symfony/http-foundation/HeaderUtils.php
deleted file mode 100644
index f4add930eb22b14f00eaba1507120517a5653acf..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/HeaderUtils.php
+++ /dev/null
@@ -1,224 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * HTTP header utility functions.
- *
- * @author Christian Schmidt <github@chsc.dk>
- */
-class HeaderUtils
-{
-    public const DISPOSITION_ATTACHMENT = 'attachment';
-    public const DISPOSITION_INLINE = 'inline';
-
-    /**
-     * This class should not be instantiated.
-     */
-    private function __construct()
-    {
-    }
-
-    /**
-     * Splits an HTTP header by one or more separators.
-     *
-     * Example:
-     *
-     *     HeaderUtils::split("da, en-gb;q=0.8", ",;")
-     *     // => ['da'], ['en-gb', 'q=0.8']]
-     *
-     * @param string $separators List of characters to split on, ordered by
-     *                           precedence, e.g. ",", ";=", or ",;="
-     *
-     * @return array Nested array with as many levels as there are characters in
-     *               $separators
-     */
-    public static function split(string $header, string $separators): array
-    {
-        $quotedSeparators = preg_quote($separators, '/');
-
-        preg_match_all('
-            /
-                (?!\s)
-                    (?:
-                        # quoted-string
-                        "(?:[^"\\\\]|\\\\.)*(?:"|\\\\|$)
-                    |
-                        # token
-                        [^"'.$quotedSeparators.']+
-                    )+
-                (?<!\s)
-            |
-                # separator
-                \s*
-                (?<separator>['.$quotedSeparators.'])
-                \s*
-            /x', trim($header), $matches, \PREG_SET_ORDER);
-
-        return self::groupParts($matches, $separators);
-    }
-
-    /**
-     * Combines an array of arrays into one associative array.
-     *
-     * Each of the nested arrays should have one or two elements. The first
-     * value will be used as the keys in the associative array, and the second
-     * will be used as the values, or true if the nested array only contains one
-     * element. Array keys are lowercased.
-     *
-     * Example:
-     *
-     *     HeaderUtils::combine([["foo", "abc"], ["bar"]])
-     *     // => ["foo" => "abc", "bar" => true]
-     */
-    public static function combine(array $parts): array
-    {
-        $assoc = [];
-        foreach ($parts as $part) {
-            $name = strtolower($part[0]);
-            $value = $part[1] ?? true;
-            $assoc[$name] = $value;
-        }
-
-        return $assoc;
-    }
-
-    /**
-     * Joins an associative array into a string for use in an HTTP header.
-     *
-     * The key and value of each entry are joined with "=", and all entries
-     * are joined with the specified separator and an additional space (for
-     * readability). Values are quoted if necessary.
-     *
-     * Example:
-     *
-     *     HeaderUtils::toString(["foo" => "abc", "bar" => true, "baz" => "a b c"], ",")
-     *     // => 'foo=abc, bar, baz="a b c"'
-     */
-    public static function toString(array $assoc, string $separator): string
-    {
-        $parts = [];
-        foreach ($assoc as $name => $value) {
-            if (true === $value) {
-                $parts[] = $name;
-            } else {
-                $parts[] = $name.'='.self::quote($value);
-            }
-        }
-
-        return implode($separator.' ', $parts);
-    }
-
-    /**
-     * Encodes a string as a quoted string, if necessary.
-     *
-     * If a string contains characters not allowed by the "token" construct in
-     * the HTTP specification, it is backslash-escaped and enclosed in quotes
-     * to match the "quoted-string" construct.
-     */
-    public static function quote(string $s): string
-    {
-        if (preg_match('/^[a-z0-9!#$%&\'*.^_`|~-]+$/i', $s)) {
-            return $s;
-        }
-
-        return '"'.addcslashes($s, '"\\"').'"';
-    }
-
-    /**
-     * Decodes a quoted string.
-     *
-     * If passed an unquoted string that matches the "token" construct (as
-     * defined in the HTTP specification), it is passed through verbatimly.
-     */
-    public static function unquote(string $s): string
-    {
-        return preg_replace('/\\\\(.)|"/', '$1', $s);
-    }
-
-    /**
-     * Generates a HTTP Content-Disposition field-value.
-     *
-     * @param string $disposition      One of "inline" or "attachment"
-     * @param string $filename         A unicode string
-     * @param string $filenameFallback A string containing only ASCII characters that
-     *                                 is semantically equivalent to $filename. If the filename is already ASCII,
-     *                                 it can be omitted, or just copied from $filename
-     *
-     * @return string A string suitable for use as a Content-Disposition field-value
-     *
-     * @throws \InvalidArgumentException
-     *
-     * @see RFC 6266
-     */
-    public static function makeDisposition(string $disposition, string $filename, string $filenameFallback = ''): string
-    {
-        if (!\in_array($disposition, [self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE])) {
-            throw new \InvalidArgumentException(sprintf('The disposition must be either "%s" or "%s".', self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE));
-        }
-
-        if ('' === $filenameFallback) {
-            $filenameFallback = $filename;
-        }
-
-        // filenameFallback is not ASCII.
-        if (!preg_match('/^[\x20-\x7e]*$/', $filenameFallback)) {
-            throw new \InvalidArgumentException('The filename fallback must only contain ASCII characters.');
-        }
-
-        // percent characters aren't safe in fallback.
-        if (false !== strpos($filenameFallback, '%')) {
-            throw new \InvalidArgumentException('The filename fallback cannot contain the "%" character.');
-        }
-
-        // path separators aren't allowed in either.
-        if (false !== strpos($filename, '/') || false !== strpos($filename, '\\') || false !== strpos($filenameFallback, '/') || false !== strpos($filenameFallback, '\\')) {
-            throw new \InvalidArgumentException('The filename and the fallback cannot contain the "/" and "\\" characters.');
-        }
-
-        $params = ['filename' => $filenameFallback];
-        if ($filename !== $filenameFallback) {
-            $params['filename*'] = "utf-8''".rawurlencode($filename);
-        }
-
-        return $disposition.'; '.self::toString($params, ';');
-    }
-
-    private static function groupParts(array $matches, string $separators): array
-    {
-        $separator = $separators[0];
-        $partSeparators = substr($separators, 1);
-
-        $i = 0;
-        $partMatches = [];
-        foreach ($matches as $match) {
-            if (isset($match['separator']) && $match['separator'] === $separator) {
-                ++$i;
-            } else {
-                $partMatches[$i][] = $match;
-            }
-        }
-
-        $parts = [];
-        if ($partSeparators) {
-            foreach ($partMatches as $matches) {
-                $parts[] = self::groupParts($matches, $partSeparators);
-            }
-        } else {
-            foreach ($partMatches as $matches) {
-                $parts[] = self::unquote($matches[0][0]);
-            }
-        }
-
-        return $parts;
-    }
-}
diff --git a/vendor/symfony/http-foundation/IpUtils.php b/vendor/symfony/http-foundation/IpUtils.php
deleted file mode 100644
index a61d3e53f930e982fefb5df4101162a08183137c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/IpUtils.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * Http utility functions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class IpUtils
-{
-    private static $checkedIps = [];
-
-    /**
-     * This class should not be instantiated.
-     */
-    private function __construct()
-    {
-    }
-
-    /**
-     * Checks if an IPv4 or IPv6 address is contained in the list of given IPs or subnets.
-     *
-     * @param string       $requestIp IP to check
-     * @param string|array $ips       List of IPs or subnets (can be a string if only a single one)
-     *
-     * @return bool Whether the IP is valid
-     */
-    public static function checkIp($requestIp, $ips)
-    {
-        if (!\is_array($ips)) {
-            $ips = [$ips];
-        }
-
-        $method = substr_count($requestIp, ':') > 1 ? 'checkIp6' : 'checkIp4';
-
-        foreach ($ips as $ip) {
-            if (self::$method($requestIp, $ip)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Compares two IPv4 addresses.
-     * In case a subnet is given, it checks if it contains the request IP.
-     *
-     * @param string $requestIp IPv4 address to check
-     * @param string $ip        IPv4 address or subnet in CIDR notation
-     *
-     * @return bool Whether the request IP matches the IP, or whether the request IP is within the CIDR subnet
-     */
-    public static function checkIp4($requestIp, $ip)
-    {
-        $cacheKey = $requestIp.'-'.$ip;
-        if (isset(self::$checkedIps[$cacheKey])) {
-            return self::$checkedIps[$cacheKey];
-        }
-
-        if (!filter_var($requestIp, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV4)) {
-            return self::$checkedIps[$cacheKey] = false;
-        }
-
-        if (false !== strpos($ip, '/')) {
-            list($address, $netmask) = explode('/', $ip, 2);
-
-            if ('0' === $netmask) {
-                return self::$checkedIps[$cacheKey] = filter_var($address, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV4);
-            }
-
-            if ($netmask < 0 || $netmask > 32) {
-                return self::$checkedIps[$cacheKey] = false;
-            }
-        } else {
-            $address = $ip;
-            $netmask = 32;
-        }
-
-        if (false === ip2long($address)) {
-            return self::$checkedIps[$cacheKey] = false;
-        }
-
-        return self::$checkedIps[$cacheKey] = 0 === substr_compare(sprintf('%032b', ip2long($requestIp)), sprintf('%032b', ip2long($address)), 0, $netmask);
-    }
-
-    /**
-     * Compares two IPv6 addresses.
-     * In case a subnet is given, it checks if it contains the request IP.
-     *
-     * @author David Soria Parra <dsp at php dot net>
-     *
-     * @see https://github.com/dsp/v6tools
-     *
-     * @param string $requestIp IPv6 address to check
-     * @param string $ip        IPv6 address or subnet in CIDR notation
-     *
-     * @return bool Whether the IP is valid
-     *
-     * @throws \RuntimeException When IPV6 support is not enabled
-     */
-    public static function checkIp6($requestIp, $ip)
-    {
-        $cacheKey = $requestIp.'-'.$ip;
-        if (isset(self::$checkedIps[$cacheKey])) {
-            return self::$checkedIps[$cacheKey];
-        }
-
-        if (!((\extension_loaded('sockets') && \defined('AF_INET6')) || @inet_pton('::1'))) {
-            throw new \RuntimeException('Unable to check Ipv6. Check that PHP was not compiled with option "disable-ipv6".');
-        }
-
-        if (false !== strpos($ip, '/')) {
-            list($address, $netmask) = explode('/', $ip, 2);
-
-            if ('0' === $netmask) {
-                return (bool) unpack('n*', @inet_pton($address));
-            }
-
-            if ($netmask < 1 || $netmask > 128) {
-                return self::$checkedIps[$cacheKey] = false;
-            }
-        } else {
-            $address = $ip;
-            $netmask = 128;
-        }
-
-        $bytesAddr = unpack('n*', @inet_pton($address));
-        $bytesTest = unpack('n*', @inet_pton($requestIp));
-
-        if (!$bytesAddr || !$bytesTest) {
-            return self::$checkedIps[$cacheKey] = false;
-        }
-
-        for ($i = 1, $ceil = ceil($netmask / 16); $i <= $ceil; ++$i) {
-            $left = $netmask - 16 * ($i - 1);
-            $left = ($left <= 16) ? $left : 16;
-            $mask = ~(0xffff >> $left) & 0xffff;
-            if (($bytesAddr[$i] & $mask) != ($bytesTest[$i] & $mask)) {
-                return self::$checkedIps[$cacheKey] = false;
-            }
-        }
-
-        return self::$checkedIps[$cacheKey] = true;
-    }
-
-    /**
-     * Anonymizes an IP/IPv6.
-     *
-     * Removes the last byte for v4 and the last 8 bytes for v6 IPs
-     */
-    public static function anonymize(string $ip): string
-    {
-        $wrappedIPv6 = false;
-        if ('[' === substr($ip, 0, 1) && ']' === substr($ip, -1, 1)) {
-            $wrappedIPv6 = true;
-            $ip = substr($ip, 1, -1);
-        }
-
-        $packedAddress = inet_pton($ip);
-        if (4 === \strlen($packedAddress)) {
-            $mask = '255.255.255.0';
-        } elseif ($ip === inet_ntop($packedAddress & inet_pton('::ffff:ffff:ffff'))) {
-            $mask = '::ffff:ffff:ff00';
-        } elseif ($ip === inet_ntop($packedAddress & inet_pton('::ffff:ffff'))) {
-            $mask = '::ffff:ff00';
-        } else {
-            $mask = 'ffff:ffff:ffff:ffff:0000:0000:0000:0000';
-        }
-        $ip = inet_ntop($packedAddress & inet_pton($mask));
-
-        if ($wrappedIPv6) {
-            $ip = '['.$ip.']';
-        }
-
-        return $ip;
-    }
-}
diff --git a/vendor/symfony/http-foundation/JsonResponse.php b/vendor/symfony/http-foundation/JsonResponse.php
deleted file mode 100644
index f6b247bfa1f10996094dcde6b397c5d68207008b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/JsonResponse.php
+++ /dev/null
@@ -1,219 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * Response represents an HTTP response in JSON format.
- *
- * Note that this class does not force the returned JSON content to be an
- * object. It is however recommended that you do return an object as it
- * protects yourself against XSSI and JSON-JavaScript Hijacking.
- *
- * @see https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/AJAX_Security_Cheat_Sheet.md#always-return-json-with-an-object-on-the-outside
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class JsonResponse extends Response
-{
-    protected $data;
-    protected $callback;
-
-    // Encode <, >, ', &, and " characters in the JSON, making it also safe to be embedded into HTML.
-    // 15 === JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT
-    const DEFAULT_ENCODING_OPTIONS = 15;
-
-    protected $encodingOptions = self::DEFAULT_ENCODING_OPTIONS;
-
-    /**
-     * @param mixed $data    The response data
-     * @param int   $status  The response status code
-     * @param array $headers An array of response headers
-     * @param bool  $json    If the data is already a JSON string
-     */
-    public function __construct($data = null, int $status = 200, array $headers = [], bool $json = false)
-    {
-        parent::__construct('', $status, $headers);
-
-        if (null === $data) {
-            $data = new \ArrayObject();
-        }
-
-        $json ? $this->setJson($data) : $this->setData($data);
-    }
-
-    /**
-     * Factory method for chainability.
-     *
-     * Example:
-     *
-     *     return JsonResponse::create(['key' => 'value'])
-     *         ->setSharedMaxAge(300);
-     *
-     * @param mixed $data    The JSON response data
-     * @param int   $status  The response status code
-     * @param array $headers An array of response headers
-     *
-     * @return static
-     */
-    public static function create($data = null, $status = 200, $headers = [])
-    {
-        return new static($data, $status, $headers);
-    }
-
-    /**
-     * Factory method for chainability.
-     *
-     * Example:
-     *
-     *     return JsonResponse::fromJsonString('{"key": "value"}')
-     *         ->setSharedMaxAge(300);
-     *
-     * @param string|null $data    The JSON response string
-     * @param int         $status  The response status code
-     * @param array       $headers An array of response headers
-     *
-     * @return static
-     */
-    public static function fromJsonString($data = null, $status = 200, $headers = [])
-    {
-        return new static($data, $status, $headers, true);
-    }
-
-    /**
-     * Sets the JSONP callback.
-     *
-     * @param string|null $callback The JSONP callback or null to use none
-     *
-     * @return $this
-     *
-     * @throws \InvalidArgumentException When the callback name is not valid
-     */
-    public function setCallback($callback = null)
-    {
-        if (null !== $callback) {
-            // partially taken from https://geekality.net/2011/08/03/valid-javascript-identifier/
-            // partially taken from https://github.com/willdurand/JsonpCallbackValidator
-            //      JsonpCallbackValidator is released under the MIT License. See https://github.com/willdurand/JsonpCallbackValidator/blob/v1.1.0/LICENSE for details.
-            //      (c) William Durand <william.durand1@gmail.com>
-            $pattern = '/^[$_\p{L}][$_\p{L}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{200C}\x{200D}]*(?:\[(?:"(?:\\\.|[^"\\\])*"|\'(?:\\\.|[^\'\\\])*\'|\d+)\])*?$/u';
-            $reserved = [
-                'break', 'do', 'instanceof', 'typeof', 'case', 'else', 'new', 'var', 'catch', 'finally', 'return', 'void', 'continue', 'for', 'switch', 'while',
-                'debugger', 'function', 'this', 'with', 'default', 'if', 'throw', 'delete', 'in', 'try', 'class', 'enum', 'extends', 'super',  'const', 'export',
-                'import', 'implements', 'let', 'private', 'public', 'yield', 'interface', 'package', 'protected', 'static', 'null', 'true', 'false',
-            ];
-            $parts = explode('.', $callback);
-            foreach ($parts as $part) {
-                if (!preg_match($pattern, $part) || \in_array($part, $reserved, true)) {
-                    throw new \InvalidArgumentException('The callback name is not valid.');
-                }
-            }
-        }
-
-        $this->callback = $callback;
-
-        return $this->update();
-    }
-
-    /**
-     * Sets a raw string containing a JSON document to be sent.
-     *
-     * @param string $json
-     *
-     * @return $this
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setJson($json)
-    {
-        $this->data = $json;
-
-        return $this->update();
-    }
-
-    /**
-     * Sets the data to be sent as JSON.
-     *
-     * @param mixed $data
-     *
-     * @return $this
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setData($data = [])
-    {
-        try {
-            $data = json_encode($data, $this->encodingOptions);
-        } catch (\Exception $e) {
-            if ('Exception' === \get_class($e) && 0 === strpos($e->getMessage(), 'Failed calling ')) {
-                throw $e->getPrevious() ?: $e;
-            }
-            throw $e;
-        }
-
-        if (\PHP_VERSION_ID >= 70300 && (\JSON_THROW_ON_ERROR & $this->encodingOptions)) {
-            return $this->setJson($data);
-        }
-
-        if (\JSON_ERROR_NONE !== json_last_error()) {
-            throw new \InvalidArgumentException(json_last_error_msg());
-        }
-
-        return $this->setJson($data);
-    }
-
-    /**
-     * Returns options used while encoding data to JSON.
-     *
-     * @return int
-     */
-    public function getEncodingOptions()
-    {
-        return $this->encodingOptions;
-    }
-
-    /**
-     * Sets options used while encoding data to JSON.
-     *
-     * @param int $encodingOptions
-     *
-     * @return $this
-     */
-    public function setEncodingOptions($encodingOptions)
-    {
-        $this->encodingOptions = (int) $encodingOptions;
-
-        return $this->setData(json_decode($this->data));
-    }
-
-    /**
-     * Updates the content and headers according to the JSON data and callback.
-     *
-     * @return $this
-     */
-    protected function update()
-    {
-        if (null !== $this->callback) {
-            // Not using application/javascript for compatibility reasons with older browsers.
-            $this->headers->set('Content-Type', 'text/javascript');
-
-            return $this->setContent(sprintf('/**/%s(%s);', $this->callback, $this->data));
-        }
-
-        // Only set the header when there is none or when it equals 'text/javascript' (from a previous update with callback)
-        // in order to not overwrite a custom definition.
-        if (!$this->headers->has('Content-Type') || 'text/javascript' === $this->headers->get('Content-Type')) {
-            $this->headers->set('Content-Type', 'application/json');
-        }
-
-        return $this->setContent($this->data);
-    }
-}
diff --git a/vendor/symfony/http-foundation/LICENSE b/vendor/symfony/http-foundation/LICENSE
deleted file mode 100644
index 9e936ec0448b8549e5edf08e5ac5f01491a8bfc8..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/http-foundation/ParameterBag.php b/vendor/symfony/http-foundation/ParameterBag.php
deleted file mode 100644
index 1de753d3da37bfeb82279094b711e4ff49ca8145..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/ParameterBag.php
+++ /dev/null
@@ -1,227 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * ParameterBag is a container for key/value pairs.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ParameterBag implements \IteratorAggregate, \Countable
-{
-    /**
-     * Parameter storage.
-     */
-    protected $parameters;
-
-    public function __construct(array $parameters = [])
-    {
-        $this->parameters = $parameters;
-    }
-
-    /**
-     * Returns the parameters.
-     *
-     * @return array An array of parameters
-     */
-    public function all()
-    {
-        return $this->parameters;
-    }
-
-    /**
-     * Returns the parameter keys.
-     *
-     * @return array An array of parameter keys
-     */
-    public function keys()
-    {
-        return array_keys($this->parameters);
-    }
-
-    /**
-     * Replaces the current parameters by a new set.
-     */
-    public function replace(array $parameters = [])
-    {
-        $this->parameters = $parameters;
-    }
-
-    /**
-     * Adds parameters.
-     */
-    public function add(array $parameters = [])
-    {
-        $this->parameters = array_replace($this->parameters, $parameters);
-    }
-
-    /**
-     * Returns a parameter by name.
-     *
-     * @param string $key     The key
-     * @param mixed  $default The default value if the parameter key does not exist
-     *
-     * @return mixed
-     */
-    public function get($key, $default = null)
-    {
-        return \array_key_exists($key, $this->parameters) ? $this->parameters[$key] : $default;
-    }
-
-    /**
-     * Sets a parameter by name.
-     *
-     * @param string $key   The key
-     * @param mixed  $value The value
-     */
-    public function set($key, $value)
-    {
-        $this->parameters[$key] = $value;
-    }
-
-    /**
-     * Returns true if the parameter is defined.
-     *
-     * @param string $key The key
-     *
-     * @return bool true if the parameter exists, false otherwise
-     */
-    public function has($key)
-    {
-        return \array_key_exists($key, $this->parameters);
-    }
-
-    /**
-     * Removes a parameter.
-     *
-     * @param string $key The key
-     */
-    public function remove($key)
-    {
-        unset($this->parameters[$key]);
-    }
-
-    /**
-     * Returns the alphabetic characters of the parameter value.
-     *
-     * @param string $key     The parameter key
-     * @param string $default The default value if the parameter key does not exist
-     *
-     * @return string The filtered value
-     */
-    public function getAlpha($key, $default = '')
-    {
-        return preg_replace('/[^[:alpha:]]/', '', $this->get($key, $default));
-    }
-
-    /**
-     * Returns the alphabetic characters and digits of the parameter value.
-     *
-     * @param string $key     The parameter key
-     * @param string $default The default value if the parameter key does not exist
-     *
-     * @return string The filtered value
-     */
-    public function getAlnum($key, $default = '')
-    {
-        return preg_replace('/[^[:alnum:]]/', '', $this->get($key, $default));
-    }
-
-    /**
-     * Returns the digits of the parameter value.
-     *
-     * @param string $key     The parameter key
-     * @param string $default The default value if the parameter key does not exist
-     *
-     * @return string The filtered value
-     */
-    public function getDigits($key, $default = '')
-    {
-        // we need to remove - and + because they're allowed in the filter
-        return str_replace(['-', '+'], '', $this->filter($key, $default, \FILTER_SANITIZE_NUMBER_INT));
-    }
-
-    /**
-     * Returns the parameter value converted to integer.
-     *
-     * @param string $key     The parameter key
-     * @param int    $default The default value if the parameter key does not exist
-     *
-     * @return int The filtered value
-     */
-    public function getInt($key, $default = 0)
-    {
-        return (int) $this->get($key, $default);
-    }
-
-    /**
-     * Returns the parameter value converted to boolean.
-     *
-     * @param string $key     The parameter key
-     * @param bool   $default The default value if the parameter key does not exist
-     *
-     * @return bool The filtered value
-     */
-    public function getBoolean($key, $default = false)
-    {
-        return $this->filter($key, $default, \FILTER_VALIDATE_BOOLEAN);
-    }
-
-    /**
-     * Filter key.
-     *
-     * @param string $key     Key
-     * @param mixed  $default Default = null
-     * @param int    $filter  FILTER_* constant
-     * @param mixed  $options Filter options
-     *
-     * @see https://php.net/filter-var
-     *
-     * @return mixed
-     */
-    public function filter($key, $default = null, $filter = \FILTER_DEFAULT, $options = [])
-    {
-        $value = $this->get($key, $default);
-
-        // Always turn $options into an array - this allows filter_var option shortcuts.
-        if (!\is_array($options) && $options) {
-            $options = ['flags' => $options];
-        }
-
-        // Add a convenience check for arrays.
-        if (\is_array($value) && !isset($options['flags'])) {
-            $options['flags'] = \FILTER_REQUIRE_ARRAY;
-        }
-
-        return filter_var($value, $filter, $options);
-    }
-
-    /**
-     * Returns an iterator for parameters.
-     *
-     * @return \ArrayIterator An \ArrayIterator instance
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->parameters);
-    }
-
-    /**
-     * Returns the number of parameters.
-     *
-     * @return int The number of parameters
-     */
-    public function count()
-    {
-        return \count($this->parameters);
-    }
-}
diff --git a/vendor/symfony/http-foundation/README.md b/vendor/symfony/http-foundation/README.md
deleted file mode 100644
index ac98f9b80ad5de3f85f6d797f05b5cfecf382d82..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-HttpFoundation Component
-========================
-
-The HttpFoundation component defines an object-oriented layer for the HTTP
-specification.
-
-Resources
----------
-
-  * [Documentation](https://symfony.com/doc/current/components/http_foundation.html)
-  * [Contributing](https://symfony.com/doc/current/contributing/index.html)
-  * [Report issues](https://github.com/symfony/symfony/issues) and
-    [send Pull Requests](https://github.com/symfony/symfony/pulls)
-    in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/vendor/symfony/http-foundation/RedirectResponse.php b/vendor/symfony/http-foundation/RedirectResponse.php
deleted file mode 100644
index 6348aca5026ef56c100ca4825761e4cfdd3c158a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/RedirectResponse.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * RedirectResponse represents an HTTP response doing a redirect.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RedirectResponse extends Response
-{
-    protected $targetUrl;
-
-    /**
-     * Creates a redirect response so that it conforms to the rules defined for a redirect status code.
-     *
-     * @param string $url     The URL to redirect to. The URL should be a full URL, with schema etc.,
-     *                        but practically every browser redirects on paths only as well
-     * @param int    $status  The status code (302 by default)
-     * @param array  $headers The headers (Location is always set to the given URL)
-     *
-     * @throws \InvalidArgumentException
-     *
-     * @see https://tools.ietf.org/html/rfc2616#section-10.3
-     */
-    public function __construct(?string $url, int $status = 302, array $headers = [])
-    {
-        if (null === $url) {
-            @trigger_error(sprintf('Passing a null url when instantiating a "%s" is deprecated since Symfony 4.4.', __CLASS__), \E_USER_DEPRECATED);
-            $url = '';
-        }
-
-        parent::__construct('', $status, $headers);
-
-        $this->setTargetUrl($url);
-
-        if (!$this->isRedirect()) {
-            throw new \InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $status));
-        }
-
-        if (301 == $status && !\array_key_exists('cache-control', array_change_key_case($headers, \CASE_LOWER))) {
-            $this->headers->remove('cache-control');
-        }
-    }
-
-    /**
-     * Factory method for chainability.
-     *
-     * @param string $url     The url to redirect to
-     * @param int    $status  The response status code
-     * @param array  $headers An array of response headers
-     *
-     * @return static
-     */
-    public static function create($url = '', $status = 302, $headers = [])
-    {
-        return new static($url, $status, $headers);
-    }
-
-    /**
-     * Returns the target URL.
-     *
-     * @return string target URL
-     */
-    public function getTargetUrl()
-    {
-        return $this->targetUrl;
-    }
-
-    /**
-     * Sets the redirect target of this response.
-     *
-     * @param string $url The URL to redirect to
-     *
-     * @return $this
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setTargetUrl($url)
-    {
-        if ('' === ($url ?? '')) {
-            throw new \InvalidArgumentException('Cannot redirect to an empty URL.');
-        }
-
-        $this->targetUrl = $url;
-
-        $this->setContent(
-            sprintf('<!DOCTYPE html>
-<html>
-    <head>
-        <meta charset="UTF-8" />
-        <meta http-equiv="refresh" content="0;url=\'%1$s\'" />
-
-        <title>Redirecting to %1$s</title>
-    </head>
-    <body>
-        Redirecting to <a href="%1$s">%1$s</a>.
-    </body>
-</html>', htmlspecialchars($url, \ENT_QUOTES, 'UTF-8')));
-
-        $this->headers->set('Location', $url);
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Request.php b/vendor/symfony/http-foundation/Request.php
deleted file mode 100644
index faaa65f991225a956971c953accb28967aafb87f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Request.php
+++ /dev/null
@@ -1,2096 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException;
-use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-
-// Help opcache.preload discover always-needed symbols
-class_exists(AcceptHeader::class);
-class_exists(FileBag::class);
-class_exists(HeaderBag::class);
-class_exists(HeaderUtils::class);
-class_exists(ParameterBag::class);
-class_exists(ServerBag::class);
-
-/**
- * Request represents an HTTP request.
- *
- * The methods dealing with URL accept / return a raw path (% encoded):
- *   * getBasePath
- *   * getBaseUrl
- *   * getPathInfo
- *   * getRequestUri
- *   * getUri
- *   * getUriForPath
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Request
-{
-    const HEADER_FORWARDED = 0b00001; // When using RFC 7239
-    const HEADER_X_FORWARDED_FOR = 0b00010;
-    const HEADER_X_FORWARDED_HOST = 0b00100;
-    const HEADER_X_FORWARDED_PROTO = 0b01000;
-    const HEADER_X_FORWARDED_PORT = 0b10000;
-    const HEADER_X_FORWARDED_ALL = 0b11110; // All "X-Forwarded-*" headers
-    const HEADER_X_FORWARDED_AWS_ELB = 0b11010; // AWS ELB doesn't send X-Forwarded-Host
-
-    const METHOD_HEAD = 'HEAD';
-    const METHOD_GET = 'GET';
-    const METHOD_POST = 'POST';
-    const METHOD_PUT = 'PUT';
-    const METHOD_PATCH = 'PATCH';
-    const METHOD_DELETE = 'DELETE';
-    const METHOD_PURGE = 'PURGE';
-    const METHOD_OPTIONS = 'OPTIONS';
-    const METHOD_TRACE = 'TRACE';
-    const METHOD_CONNECT = 'CONNECT';
-
-    /**
-     * @var string[]
-     */
-    protected static $trustedProxies = [];
-
-    /**
-     * @var string[]
-     */
-    protected static $trustedHostPatterns = [];
-
-    /**
-     * @var string[]
-     */
-    protected static $trustedHosts = [];
-
-    protected static $httpMethodParameterOverride = false;
-
-    /**
-     * Custom parameters.
-     *
-     * @var ParameterBag
-     */
-    public $attributes;
-
-    /**
-     * Request body parameters ($_POST).
-     *
-     * @var ParameterBag
-     */
-    public $request;
-
-    /**
-     * Query string parameters ($_GET).
-     *
-     * @var ParameterBag
-     */
-    public $query;
-
-    /**
-     * Server and execution environment parameters ($_SERVER).
-     *
-     * @var ServerBag
-     */
-    public $server;
-
-    /**
-     * Uploaded files ($_FILES).
-     *
-     * @var FileBag
-     */
-    public $files;
-
-    /**
-     * Cookies ($_COOKIE).
-     *
-     * @var ParameterBag
-     */
-    public $cookies;
-
-    /**
-     * Headers (taken from the $_SERVER).
-     *
-     * @var HeaderBag
-     */
-    public $headers;
-
-    /**
-     * @var string|resource|false|null
-     */
-    protected $content;
-
-    /**
-     * @var array
-     */
-    protected $languages;
-
-    /**
-     * @var array
-     */
-    protected $charsets;
-
-    /**
-     * @var array
-     */
-    protected $encodings;
-
-    /**
-     * @var array
-     */
-    protected $acceptableContentTypes;
-
-    /**
-     * @var string
-     */
-    protected $pathInfo;
-
-    /**
-     * @var string
-     */
-    protected $requestUri;
-
-    /**
-     * @var string
-     */
-    protected $baseUrl;
-
-    /**
-     * @var string
-     */
-    protected $basePath;
-
-    /**
-     * @var string
-     */
-    protected $method;
-
-    /**
-     * @var string
-     */
-    protected $format;
-
-    /**
-     * @var SessionInterface
-     */
-    protected $session;
-
-    /**
-     * @var string
-     */
-    protected $locale;
-
-    /**
-     * @var string
-     */
-    protected $defaultLocale = 'en';
-
-    /**
-     * @var array
-     */
-    protected static $formats;
-
-    protected static $requestFactory;
-
-    /**
-     * @var string|null
-     */
-    private $preferredFormat;
-    private $isHostValid = true;
-    private $isForwardedValid = true;
-
-    private static $trustedHeaderSet = -1;
-
-    private static $forwardedParams = [
-        self::HEADER_X_FORWARDED_FOR => 'for',
-        self::HEADER_X_FORWARDED_HOST => 'host',
-        self::HEADER_X_FORWARDED_PROTO => 'proto',
-        self::HEADER_X_FORWARDED_PORT => 'host',
-    ];
-
-    /**
-     * Names for headers that can be trusted when
-     * using trusted proxies.
-     *
-     * The FORWARDED header is the standard as of rfc7239.
-     *
-     * The other headers are non-standard, but widely used
-     * by popular reverse proxies (like Apache mod_proxy or Amazon EC2).
-     */
-    private static $trustedHeaders = [
-        self::HEADER_FORWARDED => 'FORWARDED',
-        self::HEADER_X_FORWARDED_FOR => 'X_FORWARDED_FOR',
-        self::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST',
-        self::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO',
-        self::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT',
-    ];
-
-    /**
-     * @param array                $query      The GET parameters
-     * @param array                $request    The POST parameters
-     * @param array                $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
-     * @param array                $cookies    The COOKIE parameters
-     * @param array                $files      The FILES parameters
-     * @param array                $server     The SERVER parameters
-     * @param string|resource|null $content    The raw body data
-     */
-    public function __construct(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null)
-    {
-        $this->initialize($query, $request, $attributes, $cookies, $files, $server, $content);
-    }
-
-    /**
-     * Sets the parameters for this request.
-     *
-     * This method also re-initializes all properties.
-     *
-     * @param array                $query      The GET parameters
-     * @param array                $request    The POST parameters
-     * @param array                $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
-     * @param array                $cookies    The COOKIE parameters
-     * @param array                $files      The FILES parameters
-     * @param array                $server     The SERVER parameters
-     * @param string|resource|null $content    The raw body data
-     */
-    public function initialize(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null)
-    {
-        $this->request = new ParameterBag($request);
-        $this->query = new ParameterBag($query);
-        $this->attributes = new ParameterBag($attributes);
-        $this->cookies = new ParameterBag($cookies);
-        $this->files = new FileBag($files);
-        $this->server = new ServerBag($server);
-        $this->headers = new HeaderBag($this->server->getHeaders());
-
-        $this->content = $content;
-        $this->languages = null;
-        $this->charsets = null;
-        $this->encodings = null;
-        $this->acceptableContentTypes = null;
-        $this->pathInfo = null;
-        $this->requestUri = null;
-        $this->baseUrl = null;
-        $this->basePath = null;
-        $this->method = null;
-        $this->format = null;
-    }
-
-    /**
-     * Creates a new request with values from PHP's super globals.
-     *
-     * @return static
-     */
-    public static function createFromGlobals()
-    {
-        $request = self::createRequestFromFactory($_GET, $_POST, [], $_COOKIE, $_FILES, $_SERVER);
-
-        if (0 === strpos($request->headers->get('CONTENT_TYPE'), 'application/x-www-form-urlencoded')
-            && \in_array(strtoupper($request->server->get('REQUEST_METHOD', 'GET')), ['PUT', 'DELETE', 'PATCH'])
-        ) {
-            parse_str($request->getContent(), $data);
-            $request->request = new ParameterBag($data);
-        }
-
-        return $request;
-    }
-
-    /**
-     * Creates a Request based on a given URI and configuration.
-     *
-     * The information contained in the URI always take precedence
-     * over the other information (server and parameters).
-     *
-     * @param string               $uri        The URI
-     * @param string               $method     The HTTP method
-     * @param array                $parameters The query (GET) or request (POST) parameters
-     * @param array                $cookies    The request cookies ($_COOKIE)
-     * @param array                $files      The request files ($_FILES)
-     * @param array                $server     The server parameters ($_SERVER)
-     * @param string|resource|null $content    The raw body data
-     *
-     * @return static
-     */
-    public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
-    {
-        $server = array_replace([
-            'SERVER_NAME' => 'localhost',
-            'SERVER_PORT' => 80,
-            'HTTP_HOST' => 'localhost',
-            'HTTP_USER_AGENT' => 'Symfony',
-            'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
-            'HTTP_ACCEPT_LANGUAGE' => 'en-us,en;q=0.5',
-            'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
-            'REMOTE_ADDR' => '127.0.0.1',
-            'SCRIPT_NAME' => '',
-            'SCRIPT_FILENAME' => '',
-            'SERVER_PROTOCOL' => 'HTTP/1.1',
-            'REQUEST_TIME' => time(),
-        ], $server);
-
-        $server['PATH_INFO'] = '';
-        $server['REQUEST_METHOD'] = strtoupper($method);
-
-        $components = parse_url($uri);
-        if (isset($components['host'])) {
-            $server['SERVER_NAME'] = $components['host'];
-            $server['HTTP_HOST'] = $components['host'];
-        }
-
-        if (isset($components['scheme'])) {
-            if ('https' === $components['scheme']) {
-                $server['HTTPS'] = 'on';
-                $server['SERVER_PORT'] = 443;
-            } else {
-                unset($server['HTTPS']);
-                $server['SERVER_PORT'] = 80;
-            }
-        }
-
-        if (isset($components['port'])) {
-            $server['SERVER_PORT'] = $components['port'];
-            $server['HTTP_HOST'] .= ':'.$components['port'];
-        }
-
-        if (isset($components['user'])) {
-            $server['PHP_AUTH_USER'] = $components['user'];
-        }
-
-        if (isset($components['pass'])) {
-            $server['PHP_AUTH_PW'] = $components['pass'];
-        }
-
-        if (!isset($components['path'])) {
-            $components['path'] = '/';
-        }
-
-        switch (strtoupper($method)) {
-            case 'POST':
-            case 'PUT':
-            case 'DELETE':
-                if (!isset($server['CONTENT_TYPE'])) {
-                    $server['CONTENT_TYPE'] = 'application/x-www-form-urlencoded';
-                }
-                // no break
-            case 'PATCH':
-                $request = $parameters;
-                $query = [];
-                break;
-            default:
-                $request = [];
-                $query = $parameters;
-                break;
-        }
-
-        $queryString = '';
-        if (isset($components['query'])) {
-            parse_str(html_entity_decode($components['query']), $qs);
-
-            if ($query) {
-                $query = array_replace($qs, $query);
-                $queryString = http_build_query($query, '', '&');
-            } else {
-                $query = $qs;
-                $queryString = $components['query'];
-            }
-        } elseif ($query) {
-            $queryString = http_build_query($query, '', '&');
-        }
-
-        $server['REQUEST_URI'] = $components['path'].('' !== $queryString ? '?'.$queryString : '');
-        $server['QUERY_STRING'] = $queryString;
-
-        return self::createRequestFromFactory($query, $request, [], $cookies, $files, $server, $content);
-    }
-
-    /**
-     * Sets a callable able to create a Request instance.
-     *
-     * This is mainly useful when you need to override the Request class
-     * to keep BC with an existing system. It should not be used for any
-     * other purpose.
-     *
-     * @param callable|null $callable A PHP callable
-     */
-    public static function setFactory($callable)
-    {
-        self::$requestFactory = $callable;
-    }
-
-    /**
-     * Clones a request and overrides some of its parameters.
-     *
-     * @param array $query      The GET parameters
-     * @param array $request    The POST parameters
-     * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
-     * @param array $cookies    The COOKIE parameters
-     * @param array $files      The FILES parameters
-     * @param array $server     The SERVER parameters
-     *
-     * @return static
-     */
-    public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null)
-    {
-        $dup = clone $this;
-        if (null !== $query) {
-            $dup->query = new ParameterBag($query);
-        }
-        if (null !== $request) {
-            $dup->request = new ParameterBag($request);
-        }
-        if (null !== $attributes) {
-            $dup->attributes = new ParameterBag($attributes);
-        }
-        if (null !== $cookies) {
-            $dup->cookies = new ParameterBag($cookies);
-        }
-        if (null !== $files) {
-            $dup->files = new FileBag($files);
-        }
-        if (null !== $server) {
-            $dup->server = new ServerBag($server);
-            $dup->headers = new HeaderBag($dup->server->getHeaders());
-        }
-        $dup->languages = null;
-        $dup->charsets = null;
-        $dup->encodings = null;
-        $dup->acceptableContentTypes = null;
-        $dup->pathInfo = null;
-        $dup->requestUri = null;
-        $dup->baseUrl = null;
-        $dup->basePath = null;
-        $dup->method = null;
-        $dup->format = null;
-
-        if (!$dup->get('_format') && $this->get('_format')) {
-            $dup->attributes->set('_format', $this->get('_format'));
-        }
-
-        if (!$dup->getRequestFormat(null)) {
-            $dup->setRequestFormat($this->getRequestFormat(null));
-        }
-
-        return $dup;
-    }
-
-    /**
-     * Clones the current request.
-     *
-     * Note that the session is not cloned as duplicated requests
-     * are most of the time sub-requests of the main one.
-     */
-    public function __clone()
-    {
-        $this->query = clone $this->query;
-        $this->request = clone $this->request;
-        $this->attributes = clone $this->attributes;
-        $this->cookies = clone $this->cookies;
-        $this->files = clone $this->files;
-        $this->server = clone $this->server;
-        $this->headers = clone $this->headers;
-    }
-
-    /**
-     * Returns the request as a string.
-     *
-     * @return string The request
-     */
-    public function __toString()
-    {
-        try {
-            $content = $this->getContent();
-        } catch (\LogicException $e) {
-            if (\PHP_VERSION_ID >= 70400) {
-                throw $e;
-            }
-
-            return trigger_error($e, \E_USER_ERROR);
-        }
-
-        $cookieHeader = '';
-        $cookies = [];
-
-        foreach ($this->cookies as $k => $v) {
-            $cookies[] = $k.'='.$v;
-        }
-
-        if (!empty($cookies)) {
-            $cookieHeader = 'Cookie: '.implode('; ', $cookies)."\r\n";
-        }
-
-        return
-            sprintf('%s %s %s', $this->getMethod(), $this->getRequestUri(), $this->server->get('SERVER_PROTOCOL'))."\r\n".
-            $this->headers.
-            $cookieHeader."\r\n".
-            $content;
-    }
-
-    /**
-     * Overrides the PHP global variables according to this request instance.
-     *
-     * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE.
-     * $_FILES is never overridden, see rfc1867
-     */
-    public function overrideGlobals()
-    {
-        $this->server->set('QUERY_STRING', static::normalizeQueryString(http_build_query($this->query->all(), '', '&')));
-
-        $_GET = $this->query->all();
-        $_POST = $this->request->all();
-        $_SERVER = $this->server->all();
-        $_COOKIE = $this->cookies->all();
-
-        foreach ($this->headers->all() as $key => $value) {
-            $key = strtoupper(str_replace('-', '_', $key));
-            if (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH', 'CONTENT_MD5'], true)) {
-                $_SERVER[$key] = implode(', ', $value);
-            } else {
-                $_SERVER['HTTP_'.$key] = implode(', ', $value);
-            }
-        }
-
-        $request = ['g' => $_GET, 'p' => $_POST, 'c' => $_COOKIE];
-
-        $requestOrder = ini_get('request_order') ?: ini_get('variables_order');
-        $requestOrder = preg_replace('#[^cgp]#', '', strtolower($requestOrder)) ?: 'gp';
-
-        $_REQUEST = [[]];
-
-        foreach (str_split($requestOrder) as $order) {
-            $_REQUEST[] = $request[$order];
-        }
-
-        $_REQUEST = array_merge(...$_REQUEST);
-    }
-
-    /**
-     * Sets a list of trusted proxies.
-     *
-     * You should only list the reverse proxies that you manage directly.
-     *
-     * @param array $proxies          A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR']
-     * @param int   $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies
-     *
-     * @throws \InvalidArgumentException When $trustedHeaderSet is invalid
-     */
-    public static function setTrustedProxies(array $proxies, int $trustedHeaderSet)
-    {
-        self::$trustedProxies = array_reduce($proxies, function ($proxies, $proxy) {
-            if ('REMOTE_ADDR' !== $proxy) {
-                $proxies[] = $proxy;
-            } elseif (isset($_SERVER['REMOTE_ADDR'])) {
-                $proxies[] = $_SERVER['REMOTE_ADDR'];
-            }
-
-            return $proxies;
-        }, []);
-        self::$trustedHeaderSet = $trustedHeaderSet;
-    }
-
-    /**
-     * Gets the list of trusted proxies.
-     *
-     * @return array An array of trusted proxies
-     */
-    public static function getTrustedProxies()
-    {
-        return self::$trustedProxies;
-    }
-
-    /**
-     * Gets the set of trusted headers from trusted proxies.
-     *
-     * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies
-     */
-    public static function getTrustedHeaderSet()
-    {
-        return self::$trustedHeaderSet;
-    }
-
-    /**
-     * Sets a list of trusted host patterns.
-     *
-     * You should only list the hosts you manage using regexs.
-     *
-     * @param array $hostPatterns A list of trusted host patterns
-     */
-    public static function setTrustedHosts(array $hostPatterns)
-    {
-        self::$trustedHostPatterns = array_map(function ($hostPattern) {
-            return sprintf('{%s}i', $hostPattern);
-        }, $hostPatterns);
-        // we need to reset trusted hosts on trusted host patterns change
-        self::$trustedHosts = [];
-    }
-
-    /**
-     * Gets the list of trusted host patterns.
-     *
-     * @return array An array of trusted host patterns
-     */
-    public static function getTrustedHosts()
-    {
-        return self::$trustedHostPatterns;
-    }
-
-    /**
-     * Normalizes a query string.
-     *
-     * It builds a normalized query string, where keys/value pairs are alphabetized,
-     * have consistent escaping and unneeded delimiters are removed.
-     *
-     * @param string $qs Query string
-     *
-     * @return string A normalized query string for the Request
-     */
-    public static function normalizeQueryString($qs)
-    {
-        if ('' === ($qs ?? '')) {
-            return '';
-        }
-
-        parse_str($qs, $qs);
-        ksort($qs);
-
-        return http_build_query($qs, '', '&', \PHP_QUERY_RFC3986);
-    }
-
-    /**
-     * Enables support for the _method request parameter to determine the intended HTTP method.
-     *
-     * Be warned that enabling this feature might lead to CSRF issues in your code.
-     * Check that you are using CSRF tokens when required.
-     * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered
-     * and used to send a "PUT" or "DELETE" request via the _method request parameter.
-     * If these methods are not protected against CSRF, this presents a possible vulnerability.
-     *
-     * The HTTP method can only be overridden when the real HTTP method is POST.
-     */
-    public static function enableHttpMethodParameterOverride()
-    {
-        self::$httpMethodParameterOverride = true;
-    }
-
-    /**
-     * Checks whether support for the _method request parameter is enabled.
-     *
-     * @return bool True when the _method request parameter is enabled, false otherwise
-     */
-    public static function getHttpMethodParameterOverride()
-    {
-        return self::$httpMethodParameterOverride;
-    }
-
-    /**
-     * Gets a "parameter" value from any bag.
-     *
-     * This method is mainly useful for libraries that want to provide some flexibility. If you don't need the
-     * flexibility in controllers, it is better to explicitly get request parameters from the appropriate
-     * public property instead (attributes, query, request).
-     *
-     * Order of precedence: PATH (routing placeholders or custom attributes), GET, BODY
-     *
-     * @param string $key     The key
-     * @param mixed  $default The default value if the parameter key does not exist
-     *
-     * @return mixed
-     */
-    public function get($key, $default = null)
-    {
-        if ($this !== $result = $this->attributes->get($key, $this)) {
-            return $result;
-        }
-
-        if ($this !== $result = $this->query->get($key, $this)) {
-            return $result;
-        }
-
-        if ($this !== $result = $this->request->get($key, $this)) {
-            return $result;
-        }
-
-        return $default;
-    }
-
-    /**
-     * Gets the Session.
-     *
-     * @return SessionInterface The session
-     */
-    public function getSession()
-    {
-        $session = $this->session;
-        if (!$session instanceof SessionInterface && null !== $session) {
-            $this->setSession($session = $session());
-        }
-
-        if (null === $session) {
-            @trigger_error(sprintf('Calling "%s()" when no session has been set is deprecated since Symfony 4.1 and will throw an exception in 5.0. Use "hasSession()" instead.', __METHOD__), \E_USER_DEPRECATED);
-            // throw new \BadMethodCallException('Session has not been set.');
-        }
-
-        return $session;
-    }
-
-    /**
-     * Whether the request contains a Session which was started in one of the
-     * previous requests.
-     *
-     * @return bool
-     */
-    public function hasPreviousSession()
-    {
-        // the check for $this->session avoids malicious users trying to fake a session cookie with proper name
-        return $this->hasSession() && $this->cookies->has($this->getSession()->getName());
-    }
-
-    /**
-     * Whether the request contains a Session object.
-     *
-     * This method does not give any information about the state of the session object,
-     * like whether the session is started or not. It is just a way to check if this Request
-     * is associated with a Session instance.
-     *
-     * @return bool true when the Request contains a Session object, false otherwise
-     */
-    public function hasSession()
-    {
-        return null !== $this->session;
-    }
-
-    public function setSession(SessionInterface $session)
-    {
-        $this->session = $session;
-    }
-
-    /**
-     * @internal
-     */
-    public function setSessionFactory(callable $factory)
-    {
-        $this->session = $factory;
-    }
-
-    /**
-     * Returns the client IP addresses.
-     *
-     * In the returned array the most trusted IP address is first, and the
-     * least trusted one last. The "real" client IP address is the last one,
-     * but this is also the least trusted one. Trusted proxies are stripped.
-     *
-     * Use this method carefully; you should use getClientIp() instead.
-     *
-     * @return array The client IP addresses
-     *
-     * @see getClientIp()
-     */
-    public function getClientIps()
-    {
-        $ip = $this->server->get('REMOTE_ADDR');
-
-        if (!$this->isFromTrustedProxy()) {
-            return [$ip];
-        }
-
-        return $this->getTrustedValues(self::HEADER_X_FORWARDED_FOR, $ip) ?: [$ip];
-    }
-
-    /**
-     * Returns the client IP address.
-     *
-     * This method can read the client IP address from the "X-Forwarded-For" header
-     * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For"
-     * header value is a comma+space separated list of IP addresses, the left-most
-     * being the original client, and each successive proxy that passed the request
-     * adding the IP address where it received the request from.
-     *
-     * If your reverse proxy uses a different header name than "X-Forwarded-For",
-     * ("Client-Ip" for instance), configure it via the $trustedHeaderSet
-     * argument of the Request::setTrustedProxies() method instead.
-     *
-     * @return string|null The client IP address
-     *
-     * @see getClientIps()
-     * @see https://wikipedia.org/wiki/X-Forwarded-For
-     */
-    public function getClientIp()
-    {
-        $ipAddresses = $this->getClientIps();
-
-        return $ipAddresses[0];
-    }
-
-    /**
-     * Returns current script name.
-     *
-     * @return string
-     */
-    public function getScriptName()
-    {
-        return $this->server->get('SCRIPT_NAME', $this->server->get('ORIG_SCRIPT_NAME', ''));
-    }
-
-    /**
-     * Returns the path being requested relative to the executed script.
-     *
-     * The path info always starts with a /.
-     *
-     * Suppose this request is instantiated from /mysite on localhost:
-     *
-     *  * http://localhost/mysite              returns an empty string
-     *  * http://localhost/mysite/about        returns '/about'
-     *  * http://localhost/mysite/enco%20ded   returns '/enco%20ded'
-     *  * http://localhost/mysite/about?var=1  returns '/about'
-     *
-     * @return string The raw path (i.e. not urldecoded)
-     */
-    public function getPathInfo()
-    {
-        if (null === $this->pathInfo) {
-            $this->pathInfo = $this->preparePathInfo();
-        }
-
-        return $this->pathInfo;
-    }
-
-    /**
-     * Returns the root path from which this request is executed.
-     *
-     * Suppose that an index.php file instantiates this request object:
-     *
-     *  * http://localhost/index.php         returns an empty string
-     *  * http://localhost/index.php/page    returns an empty string
-     *  * http://localhost/web/index.php     returns '/web'
-     *  * http://localhost/we%20b/index.php  returns '/we%20b'
-     *
-     * @return string The raw path (i.e. not urldecoded)
-     */
-    public function getBasePath()
-    {
-        if (null === $this->basePath) {
-            $this->basePath = $this->prepareBasePath();
-        }
-
-        return $this->basePath;
-    }
-
-    /**
-     * Returns the root URL from which this request is executed.
-     *
-     * The base URL never ends with a /.
-     *
-     * This is similar to getBasePath(), except that it also includes the
-     * script filename (e.g. index.php) if one exists.
-     *
-     * @return string The raw URL (i.e. not urldecoded)
-     */
-    public function getBaseUrl()
-    {
-        if (null === $this->baseUrl) {
-            $this->baseUrl = $this->prepareBaseUrl();
-        }
-
-        return $this->baseUrl;
-    }
-
-    /**
-     * Gets the request's scheme.
-     *
-     * @return string
-     */
-    public function getScheme()
-    {
-        return $this->isSecure() ? 'https' : 'http';
-    }
-
-    /**
-     * Returns the port on which the request is made.
-     *
-     * This method can read the client port from the "X-Forwarded-Port" header
-     * when trusted proxies were set via "setTrustedProxies()".
-     *
-     * The "X-Forwarded-Port" header must contain the client port.
-     *
-     * @return int|string can be a string if fetched from the server bag
-     */
-    public function getPort()
-    {
-        if ($this->isFromTrustedProxy() && $host = $this->getTrustedValues(self::HEADER_X_FORWARDED_PORT)) {
-            $host = $host[0];
-        } elseif ($this->isFromTrustedProxy() && $host = $this->getTrustedValues(self::HEADER_X_FORWARDED_HOST)) {
-            $host = $host[0];
-        } elseif (!$host = $this->headers->get('HOST')) {
-            return $this->server->get('SERVER_PORT');
-        }
-
-        if ('[' === $host[0]) {
-            $pos = strpos($host, ':', strrpos($host, ']'));
-        } else {
-            $pos = strrpos($host, ':');
-        }
-
-        if (false !== $pos && $port = substr($host, $pos + 1)) {
-            return (int) $port;
-        }
-
-        return 'https' === $this->getScheme() ? 443 : 80;
-    }
-
-    /**
-     * Returns the user.
-     *
-     * @return string|null
-     */
-    public function getUser()
-    {
-        return $this->headers->get('PHP_AUTH_USER');
-    }
-
-    /**
-     * Returns the password.
-     *
-     * @return string|null
-     */
-    public function getPassword()
-    {
-        return $this->headers->get('PHP_AUTH_PW');
-    }
-
-    /**
-     * Gets the user info.
-     *
-     * @return string A user name and, optionally, scheme-specific information about how to gain authorization to access the server
-     */
-    public function getUserInfo()
-    {
-        $userinfo = $this->getUser();
-
-        $pass = $this->getPassword();
-        if ('' != $pass) {
-            $userinfo .= ":$pass";
-        }
-
-        return $userinfo;
-    }
-
-    /**
-     * Returns the HTTP host being requested.
-     *
-     * The port name will be appended to the host if it's non-standard.
-     *
-     * @return string
-     */
-    public function getHttpHost()
-    {
-        $scheme = $this->getScheme();
-        $port = $this->getPort();
-
-        if (('http' == $scheme && 80 == $port) || ('https' == $scheme && 443 == $port)) {
-            return $this->getHost();
-        }
-
-        return $this->getHost().':'.$port;
-    }
-
-    /**
-     * Returns the requested URI (path and query string).
-     *
-     * @return string The raw URI (i.e. not URI decoded)
-     */
-    public function getRequestUri()
-    {
-        if (null === $this->requestUri) {
-            $this->requestUri = $this->prepareRequestUri();
-        }
-
-        return $this->requestUri;
-    }
-
-    /**
-     * Gets the scheme and HTTP host.
-     *
-     * If the URL was called with basic authentication, the user
-     * and the password are not added to the generated string.
-     *
-     * @return string The scheme and HTTP host
-     */
-    public function getSchemeAndHttpHost()
-    {
-        return $this->getScheme().'://'.$this->getHttpHost();
-    }
-
-    /**
-     * Generates a normalized URI (URL) for the Request.
-     *
-     * @return string A normalized URI (URL) for the Request
-     *
-     * @see getQueryString()
-     */
-    public function getUri()
-    {
-        if (null !== $qs = $this->getQueryString()) {
-            $qs = '?'.$qs;
-        }
-
-        return $this->getSchemeAndHttpHost().$this->getBaseUrl().$this->getPathInfo().$qs;
-    }
-
-    /**
-     * Generates a normalized URI for the given path.
-     *
-     * @param string $path A path to use instead of the current one
-     *
-     * @return string The normalized URI for the path
-     */
-    public function getUriForPath($path)
-    {
-        return $this->getSchemeAndHttpHost().$this->getBaseUrl().$path;
-    }
-
-    /**
-     * Returns the path as relative reference from the current Request path.
-     *
-     * Only the URIs path component (no schema, host etc.) is relevant and must be given.
-     * Both paths must be absolute and not contain relative parts.
-     * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives.
-     * Furthermore, they can be used to reduce the link size in documents.
-     *
-     * Example target paths, given a base path of "/a/b/c/d":
-     * - "/a/b/c/d"     -> ""
-     * - "/a/b/c/"      -> "./"
-     * - "/a/b/"        -> "../"
-     * - "/a/b/c/other" -> "other"
-     * - "/a/x/y"       -> "../../x/y"
-     *
-     * @param string $path The target path
-     *
-     * @return string The relative target path
-     */
-    public function getRelativeUriForPath($path)
-    {
-        // be sure that we are dealing with an absolute path
-        if (!isset($path[0]) || '/' !== $path[0]) {
-            return $path;
-        }
-
-        if ($path === $basePath = $this->getPathInfo()) {
-            return '';
-        }
-
-        $sourceDirs = explode('/', isset($basePath[0]) && '/' === $basePath[0] ? substr($basePath, 1) : $basePath);
-        $targetDirs = explode('/', substr($path, 1));
-        array_pop($sourceDirs);
-        $targetFile = array_pop($targetDirs);
-
-        foreach ($sourceDirs as $i => $dir) {
-            if (isset($targetDirs[$i]) && $dir === $targetDirs[$i]) {
-                unset($sourceDirs[$i], $targetDirs[$i]);
-            } else {
-                break;
-            }
-        }
-
-        $targetDirs[] = $targetFile;
-        $path = str_repeat('../', \count($sourceDirs)).implode('/', $targetDirs);
-
-        // A reference to the same base directory or an empty subdirectory must be prefixed with "./".
-        // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used
-        // as the first segment of a relative-path reference, as it would be mistaken for a scheme name
-        // (see https://tools.ietf.org/html/rfc3986#section-4.2).
-        return !isset($path[0]) || '/' === $path[0]
-            || false !== ($colonPos = strpos($path, ':')) && ($colonPos < ($slashPos = strpos($path, '/')) || false === $slashPos)
-            ? "./$path" : $path;
-    }
-
-    /**
-     * Generates the normalized query string for the Request.
-     *
-     * It builds a normalized query string, where keys/value pairs are alphabetized
-     * and have consistent escaping.
-     *
-     * @return string|null A normalized query string for the Request
-     */
-    public function getQueryString()
-    {
-        $qs = static::normalizeQueryString($this->server->get('QUERY_STRING'));
-
-        return '' === $qs ? null : $qs;
-    }
-
-    /**
-     * Checks whether the request is secure or not.
-     *
-     * This method can read the client protocol from the "X-Forwarded-Proto" header
-     * when trusted proxies were set via "setTrustedProxies()".
-     *
-     * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http".
-     *
-     * @return bool
-     */
-    public function isSecure()
-    {
-        if ($this->isFromTrustedProxy() && $proto = $this->getTrustedValues(self::HEADER_X_FORWARDED_PROTO)) {
-            return \in_array(strtolower($proto[0]), ['https', 'on', 'ssl', '1'], true);
-        }
-
-        $https = $this->server->get('HTTPS');
-
-        return !empty($https) && 'off' !== strtolower($https);
-    }
-
-    /**
-     * Returns the host name.
-     *
-     * This method can read the client host name from the "X-Forwarded-Host" header
-     * when trusted proxies were set via "setTrustedProxies()".
-     *
-     * The "X-Forwarded-Host" header must contain the client host name.
-     *
-     * @return string
-     *
-     * @throws SuspiciousOperationException when the host name is invalid or not trusted
-     */
-    public function getHost()
-    {
-        if ($this->isFromTrustedProxy() && $host = $this->getTrustedValues(self::HEADER_X_FORWARDED_HOST)) {
-            $host = $host[0];
-        } elseif (!$host = $this->headers->get('HOST')) {
-            if (!$host = $this->server->get('SERVER_NAME')) {
-                $host = $this->server->get('SERVER_ADDR', '');
-            }
-        }
-
-        // trim and remove port number from host
-        // host is lowercase as per RFC 952/2181
-        $host = strtolower(preg_replace('/:\d+$/', '', trim($host)));
-
-        // as the host can come from the user (HTTP_HOST and depending on the configuration, SERVER_NAME too can come from the user)
-        // check that it does not contain forbidden characters (see RFC 952 and RFC 2181)
-        // use preg_replace() instead of preg_match() to prevent DoS attacks with long host names
-        if ($host && '' !== preg_replace('/(?:^\[)?[a-zA-Z0-9-:\]_]+\.?/', '', $host)) {
-            if (!$this->isHostValid) {
-                return '';
-            }
-            $this->isHostValid = false;
-
-            throw new SuspiciousOperationException(sprintf('Invalid Host "%s".', $host));
-        }
-
-        if (\count(self::$trustedHostPatterns) > 0) {
-            // to avoid host header injection attacks, you should provide a list of trusted host patterns
-
-            if (\in_array($host, self::$trustedHosts)) {
-                return $host;
-            }
-
-            foreach (self::$trustedHostPatterns as $pattern) {
-                if (preg_match($pattern, $host)) {
-                    self::$trustedHosts[] = $host;
-
-                    return $host;
-                }
-            }
-
-            if (!$this->isHostValid) {
-                return '';
-            }
-            $this->isHostValid = false;
-
-            throw new SuspiciousOperationException(sprintf('Untrusted Host "%s".', $host));
-        }
-
-        return $host;
-    }
-
-    /**
-     * Sets the request method.
-     *
-     * @param string $method
-     */
-    public function setMethod($method)
-    {
-        $this->method = null;
-        $this->server->set('REQUEST_METHOD', $method);
-    }
-
-    /**
-     * Gets the request "intended" method.
-     *
-     * If the X-HTTP-Method-Override header is set, and if the method is a POST,
-     * then it is used to determine the "real" intended HTTP method.
-     *
-     * The _method request parameter can also be used to determine the HTTP method,
-     * but only if enableHttpMethodParameterOverride() has been called.
-     *
-     * The method is always an uppercased string.
-     *
-     * @return string The request method
-     *
-     * @see getRealMethod()
-     */
-    public function getMethod()
-    {
-        if (null !== $this->method) {
-            return $this->method;
-        }
-
-        $this->method = strtoupper($this->server->get('REQUEST_METHOD', 'GET'));
-
-        if ('POST' !== $this->method) {
-            return $this->method;
-        }
-
-        $method = $this->headers->get('X-HTTP-METHOD-OVERRIDE');
-
-        if (!$method && self::$httpMethodParameterOverride) {
-            $method = $this->request->get('_method', $this->query->get('_method', 'POST'));
-        }
-
-        if (!\is_string($method)) {
-            return $this->method;
-        }
-
-        $method = strtoupper($method);
-
-        if (\in_array($method, ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'PATCH', 'PURGE', 'TRACE'], true)) {
-            return $this->method = $method;
-        }
-
-        if (!preg_match('/^[A-Z]++$/D', $method)) {
-            throw new SuspiciousOperationException(sprintf('Invalid method override "%s".', $method));
-        }
-
-        return $this->method = $method;
-    }
-
-    /**
-     * Gets the "real" request method.
-     *
-     * @return string The request method
-     *
-     * @see getMethod()
-     */
-    public function getRealMethod()
-    {
-        return strtoupper($this->server->get('REQUEST_METHOD', 'GET'));
-    }
-
-    /**
-     * Gets the mime type associated with the format.
-     *
-     * @param string $format The format
-     *
-     * @return string|null The associated mime type (null if not found)
-     */
-    public function getMimeType($format)
-    {
-        if (null === static::$formats) {
-            static::initializeFormats();
-        }
-
-        return isset(static::$formats[$format]) ? static::$formats[$format][0] : null;
-    }
-
-    /**
-     * Gets the mime types associated with the format.
-     *
-     * @param string $format The format
-     *
-     * @return array The associated mime types
-     */
-    public static function getMimeTypes($format)
-    {
-        if (null === static::$formats) {
-            static::initializeFormats();
-        }
-
-        return isset(static::$formats[$format]) ? static::$formats[$format] : [];
-    }
-
-    /**
-     * Gets the format associated with the mime type.
-     *
-     * @param string $mimeType The associated mime type
-     *
-     * @return string|null The format (null if not found)
-     */
-    public function getFormat($mimeType)
-    {
-        $canonicalMimeType = null;
-        if (false !== $pos = strpos($mimeType, ';')) {
-            $canonicalMimeType = trim(substr($mimeType, 0, $pos));
-        }
-
-        if (null === static::$formats) {
-            static::initializeFormats();
-        }
-
-        foreach (static::$formats as $format => $mimeTypes) {
-            if (\in_array($mimeType, (array) $mimeTypes)) {
-                return $format;
-            }
-            if (null !== $canonicalMimeType && \in_array($canonicalMimeType, (array) $mimeTypes)) {
-                return $format;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Associates a format with mime types.
-     *
-     * @param string       $format    The format
-     * @param string|array $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type)
-     */
-    public function setFormat($format, $mimeTypes)
-    {
-        if (null === static::$formats) {
-            static::initializeFormats();
-        }
-
-        static::$formats[$format] = \is_array($mimeTypes) ? $mimeTypes : [$mimeTypes];
-    }
-
-    /**
-     * Gets the request format.
-     *
-     * Here is the process to determine the format:
-     *
-     *  * format defined by the user (with setRequestFormat())
-     *  * _format request attribute
-     *  * $default
-     *
-     * @see getPreferredFormat
-     *
-     * @param string|null $default The default format
-     *
-     * @return string|null The request format
-     */
-    public function getRequestFormat($default = 'html')
-    {
-        if (null === $this->format) {
-            $this->format = $this->attributes->get('_format');
-        }
-
-        return null === $this->format ? $default : $this->format;
-    }
-
-    /**
-     * Sets the request format.
-     *
-     * @param string $format The request format
-     */
-    public function setRequestFormat($format)
-    {
-        $this->format = $format;
-    }
-
-    /**
-     * Gets the format associated with the request.
-     *
-     * @return string|null The format (null if no content type is present)
-     */
-    public function getContentType()
-    {
-        return $this->getFormat($this->headers->get('CONTENT_TYPE'));
-    }
-
-    /**
-     * Sets the default locale.
-     *
-     * @param string $locale
-     */
-    public function setDefaultLocale($locale)
-    {
-        $this->defaultLocale = $locale;
-
-        if (null === $this->locale) {
-            $this->setPhpDefaultLocale($locale);
-        }
-    }
-
-    /**
-     * Get the default locale.
-     *
-     * @return string
-     */
-    public function getDefaultLocale()
-    {
-        return $this->defaultLocale;
-    }
-
-    /**
-     * Sets the locale.
-     *
-     * @param string $locale
-     */
-    public function setLocale($locale)
-    {
-        $this->setPhpDefaultLocale($this->locale = $locale);
-    }
-
-    /**
-     * Get the locale.
-     *
-     * @return string
-     */
-    public function getLocale()
-    {
-        return null === $this->locale ? $this->defaultLocale : $this->locale;
-    }
-
-    /**
-     * Checks if the request method is of specified type.
-     *
-     * @param string $method Uppercase request method (GET, POST etc)
-     *
-     * @return bool
-     */
-    public function isMethod($method)
-    {
-        return $this->getMethod() === strtoupper($method);
-    }
-
-    /**
-     * Checks whether or not the method is safe.
-     *
-     * @see https://tools.ietf.org/html/rfc7231#section-4.2.1
-     *
-     * @return bool
-     */
-    public function isMethodSafe()
-    {
-        if (\func_num_args() > 0) {
-            @trigger_error(sprintf('Passing arguments to "%s()" has been deprecated since Symfony 4.4; use "%s::isMethodCacheable()" to check if the method is cacheable instead.', __METHOD__, __CLASS__), \E_USER_DEPRECATED);
-        }
-
-        return \in_array($this->getMethod(), ['GET', 'HEAD', 'OPTIONS', 'TRACE']);
-    }
-
-    /**
-     * Checks whether or not the method is idempotent.
-     *
-     * @return bool
-     */
-    public function isMethodIdempotent()
-    {
-        return \in_array($this->getMethod(), ['HEAD', 'GET', 'PUT', 'DELETE', 'TRACE', 'OPTIONS', 'PURGE']);
-    }
-
-    /**
-     * Checks whether the method is cacheable or not.
-     *
-     * @see https://tools.ietf.org/html/rfc7231#section-4.2.3
-     *
-     * @return bool True for GET and HEAD, false otherwise
-     */
-    public function isMethodCacheable()
-    {
-        return \in_array($this->getMethod(), ['GET', 'HEAD']);
-    }
-
-    /**
-     * Returns the protocol version.
-     *
-     * If the application is behind a proxy, the protocol version used in the
-     * requests between the client and the proxy and between the proxy and the
-     * server might be different. This returns the former (from the "Via" header)
-     * if the proxy is trusted (see "setTrustedProxies()"), otherwise it returns
-     * the latter (from the "SERVER_PROTOCOL" server parameter).
-     *
-     * @return string
-     */
-    public function getProtocolVersion()
-    {
-        if ($this->isFromTrustedProxy()) {
-            preg_match('~^(HTTP/)?([1-9]\.[0-9]) ~', $this->headers->get('Via'), $matches);
-
-            if ($matches) {
-                return 'HTTP/'.$matches[2];
-            }
-        }
-
-        return $this->server->get('SERVER_PROTOCOL');
-    }
-
-    /**
-     * Returns the request body content.
-     *
-     * @param bool $asResource If true, a resource will be returned
-     *
-     * @return string|resource The request body content or a resource to read the body stream
-     *
-     * @throws \LogicException
-     */
-    public function getContent($asResource = false)
-    {
-        $currentContentIsResource = \is_resource($this->content);
-
-        if (true === $asResource) {
-            if ($currentContentIsResource) {
-                rewind($this->content);
-
-                return $this->content;
-            }
-
-            // Content passed in parameter (test)
-            if (\is_string($this->content)) {
-                $resource = fopen('php://temp', 'r+');
-                fwrite($resource, $this->content);
-                rewind($resource);
-
-                return $resource;
-            }
-
-            $this->content = false;
-
-            return fopen('php://input', 'rb');
-        }
-
-        if ($currentContentIsResource) {
-            rewind($this->content);
-
-            return stream_get_contents($this->content);
-        }
-
-        if (null === $this->content || false === $this->content) {
-            $this->content = file_get_contents('php://input');
-        }
-
-        return $this->content;
-    }
-
-    /**
-     * Gets the Etags.
-     *
-     * @return array The entity tags
-     */
-    public function getETags()
-    {
-        return preg_split('/\s*,\s*/', $this->headers->get('if_none_match'), null, \PREG_SPLIT_NO_EMPTY);
-    }
-
-    /**
-     * @return bool
-     */
-    public function isNoCache()
-    {
-        return $this->headers->hasCacheControlDirective('no-cache') || 'no-cache' == $this->headers->get('Pragma');
-    }
-
-    /**
-     * Gets the preferred format for the response by inspecting, in the following order:
-     *   * the request format set using setRequestFormat
-     *   * the values of the Accept HTTP header.
-     *
-     * Note that if you use this method, you should send the "Vary: Accept" header
-     * in the response to prevent any issues with intermediary HTTP caches.
-     */
-    public function getPreferredFormat(?string $default = 'html'): ?string
-    {
-        if (null !== $this->preferredFormat || null !== $this->preferredFormat = $this->getRequestFormat(null)) {
-            return $this->preferredFormat;
-        }
-
-        foreach ($this->getAcceptableContentTypes() as $mimeType) {
-            if ($this->preferredFormat = $this->getFormat($mimeType)) {
-                return $this->preferredFormat;
-            }
-        }
-
-        return $default;
-    }
-
-    /**
-     * Returns the preferred language.
-     *
-     * @param string[] $locales An array of ordered available locales
-     *
-     * @return string|null The preferred locale
-     */
-    public function getPreferredLanguage(array $locales = null)
-    {
-        $preferredLanguages = $this->getLanguages();
-
-        if (empty($locales)) {
-            return isset($preferredLanguages[0]) ? $preferredLanguages[0] : null;
-        }
-
-        if (!$preferredLanguages) {
-            return $locales[0];
-        }
-
-        $extendedPreferredLanguages = [];
-        foreach ($preferredLanguages as $language) {
-            $extendedPreferredLanguages[] = $language;
-            if (false !== $position = strpos($language, '_')) {
-                $superLanguage = substr($language, 0, $position);
-                if (!\in_array($superLanguage, $preferredLanguages)) {
-                    $extendedPreferredLanguages[] = $superLanguage;
-                }
-            }
-        }
-
-        $preferredLanguages = array_values(array_intersect($extendedPreferredLanguages, $locales));
-
-        return isset($preferredLanguages[0]) ? $preferredLanguages[0] : $locales[0];
-    }
-
-    /**
-     * Gets a list of languages acceptable by the client browser.
-     *
-     * @return array Languages ordered in the user browser preferences
-     */
-    public function getLanguages()
-    {
-        if (null !== $this->languages) {
-            return $this->languages;
-        }
-
-        $languages = AcceptHeader::fromString($this->headers->get('Accept-Language'))->all();
-        $this->languages = [];
-        foreach ($languages as $lang => $acceptHeaderItem) {
-            if (false !== strpos($lang, '-')) {
-                $codes = explode('-', $lang);
-                if ('i' === $codes[0]) {
-                    // Language not listed in ISO 639 that are not variants
-                    // of any listed language, which can be registered with the
-                    // i-prefix, such as i-cherokee
-                    if (\count($codes) > 1) {
-                        $lang = $codes[1];
-                    }
-                } else {
-                    for ($i = 0, $max = \count($codes); $i < $max; ++$i) {
-                        if (0 === $i) {
-                            $lang = strtolower($codes[0]);
-                        } else {
-                            $lang .= '_'.strtoupper($codes[$i]);
-                        }
-                    }
-                }
-            }
-
-            $this->languages[] = $lang;
-        }
-
-        return $this->languages;
-    }
-
-    /**
-     * Gets a list of charsets acceptable by the client browser.
-     *
-     * @return array List of charsets in preferable order
-     */
-    public function getCharsets()
-    {
-        if (null !== $this->charsets) {
-            return $this->charsets;
-        }
-
-        return $this->charsets = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all());
-    }
-
-    /**
-     * Gets a list of encodings acceptable by the client browser.
-     *
-     * @return array List of encodings in preferable order
-     */
-    public function getEncodings()
-    {
-        if (null !== $this->encodings) {
-            return $this->encodings;
-        }
-
-        return $this->encodings = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all());
-    }
-
-    /**
-     * Gets a list of content types acceptable by the client browser.
-     *
-     * @return array List of content types in preferable order
-     */
-    public function getAcceptableContentTypes()
-    {
-        if (null !== $this->acceptableContentTypes) {
-            return $this->acceptableContentTypes;
-        }
-
-        return $this->acceptableContentTypes = array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all());
-    }
-
-    /**
-     * Returns true if the request is a XMLHttpRequest.
-     *
-     * It works if your JavaScript library sets an X-Requested-With HTTP header.
-     * It is known to work with common JavaScript frameworks:
-     *
-     * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript
-     *
-     * @return bool true if the request is an XMLHttpRequest, false otherwise
-     */
-    public function isXmlHttpRequest()
-    {
-        return 'XMLHttpRequest' == $this->headers->get('X-Requested-With');
-    }
-
-    /*
-     * The following methods are derived from code of the Zend Framework (1.10dev - 2010-01-24)
-     *
-     * Code subject to the new BSD license (https://framework.zend.com/license).
-     *
-     * Copyright (c) 2005-2010 Zend Technologies USA Inc. (https://www.zend.com/)
-     */
-
-    protected function prepareRequestUri()
-    {
-        $requestUri = '';
-
-        if ('1' == $this->server->get('IIS_WasUrlRewritten') && '' != $this->server->get('UNENCODED_URL')) {
-            // IIS7 with URL Rewrite: make sure we get the unencoded URL (double slash problem)
-            $requestUri = $this->server->get('UNENCODED_URL');
-            $this->server->remove('UNENCODED_URL');
-            $this->server->remove('IIS_WasUrlRewritten');
-        } elseif ($this->server->has('REQUEST_URI')) {
-            $requestUri = $this->server->get('REQUEST_URI');
-
-            if ('' !== $requestUri && '/' === $requestUri[0]) {
-                // To only use path and query remove the fragment.
-                if (false !== $pos = strpos($requestUri, '#')) {
-                    $requestUri = substr($requestUri, 0, $pos);
-                }
-            } else {
-                // HTTP proxy reqs setup request URI with scheme and host [and port] + the URL path,
-                // only use URL path.
-                $uriComponents = parse_url($requestUri);
-
-                if (isset($uriComponents['path'])) {
-                    $requestUri = $uriComponents['path'];
-                }
-
-                if (isset($uriComponents['query'])) {
-                    $requestUri .= '?'.$uriComponents['query'];
-                }
-            }
-        } elseif ($this->server->has('ORIG_PATH_INFO')) {
-            // IIS 5.0, PHP as CGI
-            $requestUri = $this->server->get('ORIG_PATH_INFO');
-            if ('' != $this->server->get('QUERY_STRING')) {
-                $requestUri .= '?'.$this->server->get('QUERY_STRING');
-            }
-            $this->server->remove('ORIG_PATH_INFO');
-        }
-
-        // normalize the request URI to ease creating sub-requests from this request
-        $this->server->set('REQUEST_URI', $requestUri);
-
-        return $requestUri;
-    }
-
-    /**
-     * Prepares the base URL.
-     *
-     * @return string
-     */
-    protected function prepareBaseUrl()
-    {
-        $filename = basename($this->server->get('SCRIPT_FILENAME'));
-
-        if (basename($this->server->get('SCRIPT_NAME')) === $filename) {
-            $baseUrl = $this->server->get('SCRIPT_NAME');
-        } elseif (basename($this->server->get('PHP_SELF')) === $filename) {
-            $baseUrl = $this->server->get('PHP_SELF');
-        } elseif (basename($this->server->get('ORIG_SCRIPT_NAME')) === $filename) {
-            $baseUrl = $this->server->get('ORIG_SCRIPT_NAME'); // 1and1 shared hosting compatibility
-        } else {
-            // Backtrack up the script_filename to find the portion matching
-            // php_self
-            $path = $this->server->get('PHP_SELF', '');
-            $file = $this->server->get('SCRIPT_FILENAME', '');
-            $segs = explode('/', trim($file, '/'));
-            $segs = array_reverse($segs);
-            $index = 0;
-            $last = \count($segs);
-            $baseUrl = '';
-            do {
-                $seg = $segs[$index];
-                $baseUrl = '/'.$seg.$baseUrl;
-                ++$index;
-            } while ($last > $index && (false !== $pos = strpos($path, $baseUrl)) && 0 != $pos);
-        }
-
-        // Does the baseUrl have anything in common with the request_uri?
-        $requestUri = $this->getRequestUri();
-        if ('' !== $requestUri && '/' !== $requestUri[0]) {
-            $requestUri = '/'.$requestUri;
-        }
-
-        if ($baseUrl && null !== $prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl)) {
-            // full $baseUrl matches
-            return $prefix;
-        }
-
-        if ($baseUrl && null !== $prefix = $this->getUrlencodedPrefix($requestUri, rtrim(\dirname($baseUrl), '/'.\DIRECTORY_SEPARATOR).'/')) {
-            // directory portion of $baseUrl matches
-            return rtrim($prefix, '/'.\DIRECTORY_SEPARATOR);
-        }
-
-        $truncatedRequestUri = $requestUri;
-        if (false !== $pos = strpos($requestUri, '?')) {
-            $truncatedRequestUri = substr($requestUri, 0, $pos);
-        }
-
-        $basename = basename($baseUrl);
-        if (empty($basename) || !strpos(rawurldecode($truncatedRequestUri), $basename)) {
-            // no match whatsoever; set it blank
-            return '';
-        }
-
-        // If using mod_rewrite or ISAPI_Rewrite strip the script filename
-        // out of baseUrl. $pos !== 0 makes sure it is not matching a value
-        // from PATH_INFO or QUERY_STRING
-        if (\strlen($requestUri) >= \strlen($baseUrl) && (false !== $pos = strpos($requestUri, $baseUrl)) && 0 !== $pos) {
-            $baseUrl = substr($requestUri, 0, $pos + \strlen($baseUrl));
-        }
-
-        return rtrim($baseUrl, '/'.\DIRECTORY_SEPARATOR);
-    }
-
-    /**
-     * Prepares the base path.
-     *
-     * @return string base path
-     */
-    protected function prepareBasePath()
-    {
-        $baseUrl = $this->getBaseUrl();
-        if (empty($baseUrl)) {
-            return '';
-        }
-
-        $filename = basename($this->server->get('SCRIPT_FILENAME'));
-        if (basename($baseUrl) === $filename) {
-            $basePath = \dirname($baseUrl);
-        } else {
-            $basePath = $baseUrl;
-        }
-
-        if ('\\' === \DIRECTORY_SEPARATOR) {
-            $basePath = str_replace('\\', '/', $basePath);
-        }
-
-        return rtrim($basePath, '/');
-    }
-
-    /**
-     * Prepares the path info.
-     *
-     * @return string path info
-     */
-    protected function preparePathInfo()
-    {
-        if (null === ($requestUri = $this->getRequestUri())) {
-            return '/';
-        }
-
-        // Remove the query string from REQUEST_URI
-        if (false !== $pos = strpos($requestUri, '?')) {
-            $requestUri = substr($requestUri, 0, $pos);
-        }
-        if ('' !== $requestUri && '/' !== $requestUri[0]) {
-            $requestUri = '/'.$requestUri;
-        }
-
-        if (null === ($baseUrl = $this->getBaseUrl())) {
-            return $requestUri;
-        }
-
-        $pathInfo = substr($requestUri, \strlen($baseUrl));
-        if (false === $pathInfo || '' === $pathInfo) {
-            // If substr() returns false then PATH_INFO is set to an empty string
-            return '/';
-        }
-
-        return (string) $pathInfo;
-    }
-
-    /**
-     * Initializes HTTP request formats.
-     */
-    protected static function initializeFormats()
-    {
-        static::$formats = [
-            'html' => ['text/html', 'application/xhtml+xml'],
-            'txt' => ['text/plain'],
-            'js' => ['application/javascript', 'application/x-javascript', 'text/javascript'],
-            'css' => ['text/css'],
-            'json' => ['application/json', 'application/x-json'],
-            'jsonld' => ['application/ld+json'],
-            'xml' => ['text/xml', 'application/xml', 'application/x-xml'],
-            'rdf' => ['application/rdf+xml'],
-            'atom' => ['application/atom+xml'],
-            'rss' => ['application/rss+xml'],
-            'form' => ['application/x-www-form-urlencoded'],
-        ];
-    }
-
-    private function setPhpDefaultLocale(string $locale): void
-    {
-        // if either the class Locale doesn't exist, or an exception is thrown when
-        // setting the default locale, the intl module is not installed, and
-        // the call can be ignored:
-        try {
-            if (class_exists('Locale', false)) {
-                \Locale::setDefault($locale);
-            }
-        } catch (\Exception $e) {
-        }
-    }
-
-    /**
-     * Returns the prefix as encoded in the string when the string starts with
-     * the given prefix, null otherwise.
-     */
-    private function getUrlencodedPrefix(string $string, string $prefix): ?string
-    {
-        if (0 !== strpos(rawurldecode($string), $prefix)) {
-            return null;
-        }
-
-        $len = \strlen($prefix);
-
-        if (preg_match(sprintf('#^(%%[[:xdigit:]]{2}|.){%d}#', $len), $string, $match)) {
-            return $match[0];
-        }
-
-        return null;
-    }
-
-    private static function createRequestFromFactory(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null): self
-    {
-        if (self::$requestFactory) {
-            $request = (self::$requestFactory)($query, $request, $attributes, $cookies, $files, $server, $content);
-
-            if (!$request instanceof self) {
-                throw new \LogicException('The Request factory must return an instance of Symfony\Component\HttpFoundation\Request.');
-            }
-
-            return $request;
-        }
-
-        return new static($query, $request, $attributes, $cookies, $files, $server, $content);
-    }
-
-    /**
-     * Indicates whether this request originated from a trusted proxy.
-     *
-     * This can be useful to determine whether or not to trust the
-     * contents of a proxy-specific header.
-     *
-     * @return bool true if the request came from a trusted proxy, false otherwise
-     */
-    public function isFromTrustedProxy()
-    {
-        return self::$trustedProxies && IpUtils::checkIp($this->server->get('REMOTE_ADDR'), self::$trustedProxies);
-    }
-
-    private function getTrustedValues(int $type, string $ip = null): array
-    {
-        $clientValues = [];
-        $forwardedValues = [];
-
-        if ((self::$trustedHeaderSet & $type) && $this->headers->has(self::$trustedHeaders[$type])) {
-            foreach (explode(',', $this->headers->get(self::$trustedHeaders[$type])) as $v) {
-                $clientValues[] = (self::HEADER_X_FORWARDED_PORT === $type ? '0.0.0.0:' : '').trim($v);
-            }
-        }
-
-        if ((self::$trustedHeaderSet & self::HEADER_FORWARDED) && $this->headers->has(self::$trustedHeaders[self::HEADER_FORWARDED])) {
-            $forwarded = $this->headers->get(self::$trustedHeaders[self::HEADER_FORWARDED]);
-            $parts = HeaderUtils::split($forwarded, ',;=');
-            $forwardedValues = [];
-            $param = self::$forwardedParams[$type];
-            foreach ($parts as $subParts) {
-                if (null === $v = HeaderUtils::combine($subParts)[$param] ?? null) {
-                    continue;
-                }
-                if (self::HEADER_X_FORWARDED_PORT === $type) {
-                    if (']' === substr($v, -1) || false === $v = strrchr($v, ':')) {
-                        $v = $this->isSecure() ? ':443' : ':80';
-                    }
-                    $v = '0.0.0.0'.$v;
-                }
-                $forwardedValues[] = $v;
-            }
-        }
-
-        if (null !== $ip) {
-            $clientValues = $this->normalizeAndFilterClientIps($clientValues, $ip);
-            $forwardedValues = $this->normalizeAndFilterClientIps($forwardedValues, $ip);
-        }
-
-        if ($forwardedValues === $clientValues || !$clientValues) {
-            return $forwardedValues;
-        }
-
-        if (!$forwardedValues) {
-            return $clientValues;
-        }
-
-        if (!$this->isForwardedValid) {
-            return null !== $ip ? ['0.0.0.0', $ip] : [];
-        }
-        $this->isForwardedValid = false;
-
-        throw new ConflictingHeadersException(sprintf('The request has both a trusted "%s" header and a trusted "%s" header, conflicting with each other. You should either configure your proxy to remove one of them, or configure your project to distrust the offending one.', self::$trustedHeaders[self::HEADER_FORWARDED], self::$trustedHeaders[$type]));
-    }
-
-    private function normalizeAndFilterClientIps(array $clientIps, string $ip): array
-    {
-        if (!$clientIps) {
-            return [];
-        }
-        $clientIps[] = $ip; // Complete the IP chain with the IP the request actually came from
-        $firstTrustedIp = null;
-
-        foreach ($clientIps as $key => $clientIp) {
-            if (strpos($clientIp, '.')) {
-                // Strip :port from IPv4 addresses. This is allowed in Forwarded
-                // and may occur in X-Forwarded-For.
-                $i = strpos($clientIp, ':');
-                if ($i) {
-                    $clientIps[$key] = $clientIp = substr($clientIp, 0, $i);
-                }
-            } elseif (0 === strpos($clientIp, '[')) {
-                // Strip brackets and :port from IPv6 addresses.
-                $i = strpos($clientIp, ']', 1);
-                $clientIps[$key] = $clientIp = substr($clientIp, 1, $i - 1);
-            }
-
-            if (!filter_var($clientIp, \FILTER_VALIDATE_IP)) {
-                unset($clientIps[$key]);
-
-                continue;
-            }
-
-            if (IpUtils::checkIp($clientIp, self::$trustedProxies)) {
-                unset($clientIps[$key]);
-
-                // Fallback to this when the client IP falls into the range of trusted proxies
-                if (null === $firstTrustedIp) {
-                    $firstTrustedIp = $clientIp;
-                }
-            }
-        }
-
-        // Now the IP chain contains only untrusted proxies and the client IP
-        return $clientIps ? array_reverse($clientIps) : [$firstTrustedIp];
-    }
-}
diff --git a/vendor/symfony/http-foundation/RequestMatcher.php b/vendor/symfony/http-foundation/RequestMatcher.php
deleted file mode 100644
index 9a4a2a13761e154d2c1abf2a83293e7cac1b07c9..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/RequestMatcher.php
+++ /dev/null
@@ -1,195 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * RequestMatcher compares a pre-defined set of checks against a Request instance.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RequestMatcher implements RequestMatcherInterface
-{
-    /**
-     * @var string|null
-     */
-    private $path;
-
-    /**
-     * @var string|null
-     */
-    private $host;
-
-    /**
-     * @var int|null
-     */
-    private $port;
-
-    /**
-     * @var string[]
-     */
-    private $methods = [];
-
-    /**
-     * @var string[]
-     */
-    private $ips = [];
-
-    /**
-     * @var array
-     */
-    private $attributes = [];
-
-    /**
-     * @var string[]
-     */
-    private $schemes = [];
-
-    /**
-     * @param string|string[]|null $methods
-     * @param string|string[]|null $ips
-     * @param string|string[]|null $schemes
-     */
-    public function __construct(string $path = null, string $host = null, $methods = null, $ips = null, array $attributes = [], $schemes = null, int $port = null)
-    {
-        $this->matchPath($path);
-        $this->matchHost($host);
-        $this->matchMethod($methods);
-        $this->matchIps($ips);
-        $this->matchScheme($schemes);
-        $this->matchPort($port);
-
-        foreach ($attributes as $k => $v) {
-            $this->matchAttribute($k, $v);
-        }
-    }
-
-    /**
-     * Adds a check for the HTTP scheme.
-     *
-     * @param string|string[]|null $scheme An HTTP scheme or an array of HTTP schemes
-     */
-    public function matchScheme($scheme)
-    {
-        $this->schemes = null !== $scheme ? array_map('strtolower', (array) $scheme) : [];
-    }
-
-    /**
-     * Adds a check for the URL host name.
-     *
-     * @param string|null $regexp A Regexp
-     */
-    public function matchHost($regexp)
-    {
-        $this->host = $regexp;
-    }
-
-    /**
-     * Adds a check for the the URL port.
-     *
-     * @param int|null $port The port number to connect to
-     */
-    public function matchPort(?int $port)
-    {
-        $this->port = $port;
-    }
-
-    /**
-     * Adds a check for the URL path info.
-     *
-     * @param string|null $regexp A Regexp
-     */
-    public function matchPath($regexp)
-    {
-        $this->path = $regexp;
-    }
-
-    /**
-     * Adds a check for the client IP.
-     *
-     * @param string $ip A specific IP address or a range specified using IP/netmask like 192.168.1.0/24
-     */
-    public function matchIp($ip)
-    {
-        $this->matchIps($ip);
-    }
-
-    /**
-     * Adds a check for the client IP.
-     *
-     * @param string|string[]|null $ips A specific IP address or a range specified using IP/netmask like 192.168.1.0/24
-     */
-    public function matchIps($ips)
-    {
-        $this->ips = null !== $ips ? (array) $ips : [];
-    }
-
-    /**
-     * Adds a check for the HTTP method.
-     *
-     * @param string|string[]|null $method An HTTP method or an array of HTTP methods
-     */
-    public function matchMethod($method)
-    {
-        $this->methods = null !== $method ? array_map('strtoupper', (array) $method) : [];
-    }
-
-    /**
-     * Adds a check for request attribute.
-     *
-     * @param string $key    The request attribute name
-     * @param string $regexp A Regexp
-     */
-    public function matchAttribute($key, $regexp)
-    {
-        $this->attributes[$key] = $regexp;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function matches(Request $request)
-    {
-        if ($this->schemes && !\in_array($request->getScheme(), $this->schemes, true)) {
-            return false;
-        }
-
-        if ($this->methods && !\in_array($request->getMethod(), $this->methods, true)) {
-            return false;
-        }
-
-        foreach ($this->attributes as $key => $pattern) {
-            if (!preg_match('{'.$pattern.'}', $request->attributes->get($key))) {
-                return false;
-            }
-        }
-
-        if (null !== $this->path && !preg_match('{'.$this->path.'}', rawurldecode($request->getPathInfo()))) {
-            return false;
-        }
-
-        if (null !== $this->host && !preg_match('{'.$this->host.'}i', $request->getHost())) {
-            return false;
-        }
-
-        if (null !== $this->port && 0 < $this->port && $request->getPort() !== $this->port) {
-            return false;
-        }
-
-        if (IpUtils::checkIp($request->getClientIp(), $this->ips)) {
-            return true;
-        }
-
-        // Note to future implementors: add additional checks above the
-        // foreach above or else your check might not be run!
-        return 0 === \count($this->ips);
-    }
-}
diff --git a/vendor/symfony/http-foundation/RequestMatcherInterface.php b/vendor/symfony/http-foundation/RequestMatcherInterface.php
deleted file mode 100644
index c26db3e6f4e66e819f01bf1560bbb933b11c093d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/RequestMatcherInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * RequestMatcherInterface is an interface for strategies to match a Request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface RequestMatcherInterface
-{
-    /**
-     * Decides whether the rule(s) implemented by the strategy matches the supplied request.
-     *
-     * @return bool true if the request matches, false otherwise
-     */
-    public function matches(Request $request);
-}
diff --git a/vendor/symfony/http-foundation/RequestStack.php b/vendor/symfony/http-foundation/RequestStack.php
deleted file mode 100644
index 244a77d631a8f6c8bb504d85f9bb4f7092be3f34..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/RequestStack.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * Request stack that controls the lifecycle of requests.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class RequestStack
-{
-    /**
-     * @var Request[]
-     */
-    private $requests = [];
-
-    /**
-     * Pushes a Request on the stack.
-     *
-     * This method should generally not be called directly as the stack
-     * management should be taken care of by the application itself.
-     */
-    public function push(Request $request)
-    {
-        $this->requests[] = $request;
-    }
-
-    /**
-     * Pops the current request from the stack.
-     *
-     * This operation lets the current request go out of scope.
-     *
-     * This method should generally not be called directly as the stack
-     * management should be taken care of by the application itself.
-     *
-     * @return Request|null
-     */
-    public function pop()
-    {
-        if (!$this->requests) {
-            return null;
-        }
-
-        return array_pop($this->requests);
-    }
-
-    /**
-     * @return Request|null
-     */
-    public function getCurrentRequest()
-    {
-        return end($this->requests) ?: null;
-    }
-
-    /**
-     * Gets the master Request.
-     *
-     * Be warned that making your code aware of the master request
-     * might make it un-compatible with other features of your framework
-     * like ESI support.
-     *
-     * @return Request|null
-     */
-    public function getMasterRequest()
-    {
-        if (!$this->requests) {
-            return null;
-        }
-
-        return $this->requests[0];
-    }
-
-    /**
-     * Returns the parent request of the current.
-     *
-     * Be warned that making your code aware of the parent request
-     * might make it un-compatible with other features of your framework
-     * like ESI support.
-     *
-     * If current Request is the master request, it returns null.
-     *
-     * @return Request|null
-     */
-    public function getParentRequest()
-    {
-        $pos = \count($this->requests) - 2;
-
-        if (!isset($this->requests[$pos])) {
-            return null;
-        }
-
-        return $this->requests[$pos];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Response.php b/vendor/symfony/http-foundation/Response.php
deleted file mode 100644
index e64b2729460f04cf1c0d3a3f685813dde75228e2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Response.php
+++ /dev/null
@@ -1,1246 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-// Help opcache.preload discover always-needed symbols
-class_exists(ResponseHeaderBag::class);
-
-/**
- * Response represents an HTTP response.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Response
-{
-    const HTTP_CONTINUE = 100;
-    const HTTP_SWITCHING_PROTOCOLS = 101;
-    const HTTP_PROCESSING = 102;            // RFC2518
-    const HTTP_EARLY_HINTS = 103;           // RFC8297
-    const HTTP_OK = 200;
-    const HTTP_CREATED = 201;
-    const HTTP_ACCEPTED = 202;
-    const HTTP_NON_AUTHORITATIVE_INFORMATION = 203;
-    const HTTP_NO_CONTENT = 204;
-    const HTTP_RESET_CONTENT = 205;
-    const HTTP_PARTIAL_CONTENT = 206;
-    const HTTP_MULTI_STATUS = 207;          // RFC4918
-    const HTTP_ALREADY_REPORTED = 208;      // RFC5842
-    const HTTP_IM_USED = 226;               // RFC3229
-    const HTTP_MULTIPLE_CHOICES = 300;
-    const HTTP_MOVED_PERMANENTLY = 301;
-    const HTTP_FOUND = 302;
-    const HTTP_SEE_OTHER = 303;
-    const HTTP_NOT_MODIFIED = 304;
-    const HTTP_USE_PROXY = 305;
-    const HTTP_RESERVED = 306;
-    const HTTP_TEMPORARY_REDIRECT = 307;
-    const HTTP_PERMANENTLY_REDIRECT = 308;  // RFC7238
-    const HTTP_BAD_REQUEST = 400;
-    const HTTP_UNAUTHORIZED = 401;
-    const HTTP_PAYMENT_REQUIRED = 402;
-    const HTTP_FORBIDDEN = 403;
-    const HTTP_NOT_FOUND = 404;
-    const HTTP_METHOD_NOT_ALLOWED = 405;
-    const HTTP_NOT_ACCEPTABLE = 406;
-    const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407;
-    const HTTP_REQUEST_TIMEOUT = 408;
-    const HTTP_CONFLICT = 409;
-    const HTTP_GONE = 410;
-    const HTTP_LENGTH_REQUIRED = 411;
-    const HTTP_PRECONDITION_FAILED = 412;
-    const HTTP_REQUEST_ENTITY_TOO_LARGE = 413;
-    const HTTP_REQUEST_URI_TOO_LONG = 414;
-    const HTTP_UNSUPPORTED_MEDIA_TYPE = 415;
-    const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
-    const HTTP_EXPECTATION_FAILED = 417;
-    const HTTP_I_AM_A_TEAPOT = 418;                                               // RFC2324
-    const HTTP_MISDIRECTED_REQUEST = 421;                                         // RFC7540
-    const HTTP_UNPROCESSABLE_ENTITY = 422;                                        // RFC4918
-    const HTTP_LOCKED = 423;                                                      // RFC4918
-    const HTTP_FAILED_DEPENDENCY = 424;                                           // RFC4918
-
-    /**
-     * @deprecated
-     */
-    const HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL = 425;   // RFC2817
-    const HTTP_TOO_EARLY = 425;                                                   // RFC-ietf-httpbis-replay-04
-    const HTTP_UPGRADE_REQUIRED = 426;                                            // RFC2817
-    const HTTP_PRECONDITION_REQUIRED = 428;                                       // RFC6585
-    const HTTP_TOO_MANY_REQUESTS = 429;                                           // RFC6585
-    const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;                             // RFC6585
-    const HTTP_UNAVAILABLE_FOR_LEGAL_REASONS = 451;
-    const HTTP_INTERNAL_SERVER_ERROR = 500;
-    const HTTP_NOT_IMPLEMENTED = 501;
-    const HTTP_BAD_GATEWAY = 502;
-    const HTTP_SERVICE_UNAVAILABLE = 503;
-    const HTTP_GATEWAY_TIMEOUT = 504;
-    const HTTP_VERSION_NOT_SUPPORTED = 505;
-    const HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL = 506;                        // RFC2295
-    const HTTP_INSUFFICIENT_STORAGE = 507;                                        // RFC4918
-    const HTTP_LOOP_DETECTED = 508;                                               // RFC5842
-    const HTTP_NOT_EXTENDED = 510;                                                // RFC2774
-    const HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511;                             // RFC6585
-
-    /**
-     * @var ResponseHeaderBag
-     */
-    public $headers;
-
-    /**
-     * @var string
-     */
-    protected $content;
-
-    /**
-     * @var string
-     */
-    protected $version;
-
-    /**
-     * @var int
-     */
-    protected $statusCode;
-
-    /**
-     * @var string
-     */
-    protected $statusText;
-
-    /**
-     * @var string
-     */
-    protected $charset;
-
-    /**
-     * Status codes translation table.
-     *
-     * The list of codes is complete according to the
-     * {@link https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml Hypertext Transfer Protocol (HTTP) Status Code Registry}
-     * (last updated 2016-03-01).
-     *
-     * Unless otherwise noted, the status code is defined in RFC2616.
-     *
-     * @var array
-     */
-    public static $statusTexts = [
-        100 => 'Continue',
-        101 => 'Switching Protocols',
-        102 => 'Processing',            // RFC2518
-        103 => 'Early Hints',
-        200 => 'OK',
-        201 => 'Created',
-        202 => 'Accepted',
-        203 => 'Non-Authoritative Information',
-        204 => 'No Content',
-        205 => 'Reset Content',
-        206 => 'Partial Content',
-        207 => 'Multi-Status',          // RFC4918
-        208 => 'Already Reported',      // RFC5842
-        226 => 'IM Used',               // RFC3229
-        300 => 'Multiple Choices',
-        301 => 'Moved Permanently',
-        302 => 'Found',
-        303 => 'See Other',
-        304 => 'Not Modified',
-        305 => 'Use Proxy',
-        307 => 'Temporary Redirect',
-        308 => 'Permanent Redirect',    // RFC7238
-        400 => 'Bad Request',
-        401 => 'Unauthorized',
-        402 => 'Payment Required',
-        403 => 'Forbidden',
-        404 => 'Not Found',
-        405 => 'Method Not Allowed',
-        406 => 'Not Acceptable',
-        407 => 'Proxy Authentication Required',
-        408 => 'Request Timeout',
-        409 => 'Conflict',
-        410 => 'Gone',
-        411 => 'Length Required',
-        412 => 'Precondition Failed',
-        413 => 'Payload Too Large',
-        414 => 'URI Too Long',
-        415 => 'Unsupported Media Type',
-        416 => 'Range Not Satisfiable',
-        417 => 'Expectation Failed',
-        418 => 'I\'m a teapot',                                               // RFC2324
-        421 => 'Misdirected Request',                                         // RFC7540
-        422 => 'Unprocessable Entity',                                        // RFC4918
-        423 => 'Locked',                                                      // RFC4918
-        424 => 'Failed Dependency',                                           // RFC4918
-        425 => 'Too Early',                                                   // RFC-ietf-httpbis-replay-04
-        426 => 'Upgrade Required',                                            // RFC2817
-        428 => 'Precondition Required',                                       // RFC6585
-        429 => 'Too Many Requests',                                           // RFC6585
-        431 => 'Request Header Fields Too Large',                             // RFC6585
-        451 => 'Unavailable For Legal Reasons',                               // RFC7725
-        500 => 'Internal Server Error',
-        501 => 'Not Implemented',
-        502 => 'Bad Gateway',
-        503 => 'Service Unavailable',
-        504 => 'Gateway Timeout',
-        505 => 'HTTP Version Not Supported',
-        506 => 'Variant Also Negotiates',                                     // RFC2295
-        507 => 'Insufficient Storage',                                        // RFC4918
-        508 => 'Loop Detected',                                               // RFC5842
-        510 => 'Not Extended',                                                // RFC2774
-        511 => 'Network Authentication Required',                             // RFC6585
-    ];
-
-    /**
-     * @throws \InvalidArgumentException When the HTTP status code is not valid
-     */
-    public function __construct($content = '', int $status = 200, array $headers = [])
-    {
-        $this->headers = new ResponseHeaderBag($headers);
-        $this->setContent($content);
-        $this->setStatusCode($status);
-        $this->setProtocolVersion('1.0');
-    }
-
-    /**
-     * Factory method for chainability.
-     *
-     * Example:
-     *
-     *     return Response::create($body, 200)
-     *         ->setSharedMaxAge(300);
-     *
-     * @param mixed $content The response content, see setContent()
-     * @param int   $status  The response status code
-     * @param array $headers An array of response headers
-     *
-     * @return static
-     */
-    public static function create($content = '', $status = 200, $headers = [])
-    {
-        return new static($content, $status, $headers);
-    }
-
-    /**
-     * Returns the Response as an HTTP string.
-     *
-     * The string representation of the Response is the same as the
-     * one that will be sent to the client only if the prepare() method
-     * has been called before.
-     *
-     * @return string The Response as an HTTP string
-     *
-     * @see prepare()
-     */
-    public function __toString()
-    {
-        return
-            sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText)."\r\n".
-            $this->headers."\r\n".
-            $this->getContent();
-    }
-
-    /**
-     * Clones the current Response instance.
-     */
-    public function __clone()
-    {
-        $this->headers = clone $this->headers;
-    }
-
-    /**
-     * Prepares the Response before it is sent to the client.
-     *
-     * This method tweaks the Response to ensure that it is
-     * compliant with RFC 2616. Most of the changes are based on
-     * the Request that is "associated" with this Response.
-     *
-     * @return $this
-     */
-    public function prepare(Request $request)
-    {
-        $headers = $this->headers;
-
-        if ($this->isInformational() || $this->isEmpty()) {
-            $this->setContent(null);
-            $headers->remove('Content-Type');
-            $headers->remove('Content-Length');
-            // prevent PHP from sending the Content-Type header based on default_mimetype
-            ini_set('default_mimetype', '');
-        } else {
-            // Content-type based on the Request
-            if (!$headers->has('Content-Type')) {
-                $format = $request->getRequestFormat(null);
-                if (null !== $format && $mimeType = $request->getMimeType($format)) {
-                    $headers->set('Content-Type', $mimeType);
-                }
-            }
-
-            // Fix Content-Type
-            $charset = $this->charset ?: 'UTF-8';
-            if (!$headers->has('Content-Type')) {
-                $headers->set('Content-Type', 'text/html; charset='.$charset);
-            } elseif (0 === stripos($headers->get('Content-Type'), 'text/') && false === stripos($headers->get('Content-Type'), 'charset')) {
-                // add the charset
-                $headers->set('Content-Type', $headers->get('Content-Type').'; charset='.$charset);
-            }
-
-            // Fix Content-Length
-            if ($headers->has('Transfer-Encoding')) {
-                $headers->remove('Content-Length');
-            }
-
-            if ($request->isMethod('HEAD')) {
-                // cf. RFC2616 14.13
-                $length = $headers->get('Content-Length');
-                $this->setContent(null);
-                if ($length) {
-                    $headers->set('Content-Length', $length);
-                }
-            }
-        }
-
-        // Fix protocol
-        if ('HTTP/1.0' != $request->server->get('SERVER_PROTOCOL')) {
-            $this->setProtocolVersion('1.1');
-        }
-
-        // Check if we need to send extra expire info headers
-        if ('1.0' == $this->getProtocolVersion() && false !== strpos($headers->get('Cache-Control'), 'no-cache')) {
-            $headers->set('pragma', 'no-cache');
-            $headers->set('expires', -1);
-        }
-
-        $this->ensureIEOverSSLCompatibility($request);
-
-        if ($request->isSecure()) {
-            foreach ($headers->getCookies() as $cookie) {
-                $cookie->setSecureDefault(true);
-            }
-        }
-
-        return $this;
-    }
-
-    /**
-     * Sends HTTP headers.
-     *
-     * @return $this
-     */
-    public function sendHeaders()
-    {
-        // headers have already been sent by the developer
-        if (headers_sent()) {
-            return $this;
-        }
-
-        // headers
-        foreach ($this->headers->allPreserveCaseWithoutCookies() as $name => $values) {
-            $replace = 0 === strcasecmp($name, 'Content-Type');
-            foreach ($values as $value) {
-                header($name.': '.$value, $replace, $this->statusCode);
-            }
-        }
-
-        // cookies
-        foreach ($this->headers->getCookies() as $cookie) {
-            header('Set-Cookie: '.$cookie, false, $this->statusCode);
-        }
-
-        // status
-        header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText), true, $this->statusCode);
-
-        return $this;
-    }
-
-    /**
-     * Sends content for the current web response.
-     *
-     * @return $this
-     */
-    public function sendContent()
-    {
-        echo $this->content;
-
-        return $this;
-    }
-
-    /**
-     * Sends HTTP headers and content.
-     *
-     * @return $this
-     */
-    public function send()
-    {
-        $this->sendHeaders();
-        $this->sendContent();
-
-        if (\function_exists('fastcgi_finish_request')) {
-            fastcgi_finish_request();
-        } elseif (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) {
-            static::closeOutputBuffers(0, true);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Sets the response content.
-     *
-     * Valid types are strings, numbers, null, and objects that implement a __toString() method.
-     *
-     * @param mixed $content Content that can be cast to string
-     *
-     * @return $this
-     *
-     * @throws \UnexpectedValueException
-     */
-    public function setContent($content)
-    {
-        if (null !== $content && !\is_string($content) && !is_numeric($content) && !\is_callable([$content, '__toString'])) {
-            throw new \UnexpectedValueException(sprintf('The Response content must be a string or object implementing __toString(), "%s" given.', \gettype($content)));
-        }
-
-        $this->content = (string) $content;
-
-        return $this;
-    }
-
-    /**
-     * Gets the current response content.
-     *
-     * @return string|false
-     */
-    public function getContent()
-    {
-        return $this->content;
-    }
-
-    /**
-     * Sets the HTTP protocol version (1.0 or 1.1).
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setProtocolVersion(string $version)
-    {
-        $this->version = $version;
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTP protocol version.
-     *
-     * @final
-     */
-    public function getProtocolVersion(): string
-    {
-        return $this->version;
-    }
-
-    /**
-     * Sets the response status code.
-     *
-     * If the status text is null it will be automatically populated for the known
-     * status codes and left empty otherwise.
-     *
-     * @return $this
-     *
-     * @throws \InvalidArgumentException When the HTTP status code is not valid
-     *
-     * @final
-     */
-    public function setStatusCode(int $code, $text = null)
-    {
-        $this->statusCode = $code;
-        if ($this->isInvalid()) {
-            throw new \InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $code));
-        }
-
-        if (null === $text) {
-            $this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : 'unknown status';
-
-            return $this;
-        }
-
-        if (false === $text) {
-            $this->statusText = '';
-
-            return $this;
-        }
-
-        $this->statusText = $text;
-
-        return $this;
-    }
-
-    /**
-     * Retrieves the status code for the current web response.
-     *
-     * @final
-     */
-    public function getStatusCode(): int
-    {
-        return $this->statusCode;
-    }
-
-    /**
-     * Sets the response charset.
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setCharset(string $charset)
-    {
-        $this->charset = $charset;
-
-        return $this;
-    }
-
-    /**
-     * Retrieves the response charset.
-     *
-     * @final
-     */
-    public function getCharset(): ?string
-    {
-        return $this->charset;
-    }
-
-    /**
-     * Returns true if the response may safely be kept in a shared (surrogate) cache.
-     *
-     * Responses marked "private" with an explicit Cache-Control directive are
-     * considered uncacheable.
-     *
-     * Responses with neither a freshness lifetime (Expires, max-age) nor cache
-     * validator (Last-Modified, ETag) are considered uncacheable because there is
-     * no way to tell when or how to remove them from the cache.
-     *
-     * Note that RFC 7231 and RFC 7234 possibly allow for a more permissive implementation,
-     * for example "status codes that are defined as cacheable by default [...]
-     * can be reused by a cache with heuristic expiration unless otherwise indicated"
-     * (https://tools.ietf.org/html/rfc7231#section-6.1)
-     *
-     * @final
-     */
-    public function isCacheable(): bool
-    {
-        if (!\in_array($this->statusCode, [200, 203, 300, 301, 302, 404, 410])) {
-            return false;
-        }
-
-        if ($this->headers->hasCacheControlDirective('no-store') || $this->headers->getCacheControlDirective('private')) {
-            return false;
-        }
-
-        return $this->isValidateable() || $this->isFresh();
-    }
-
-    /**
-     * Returns true if the response is "fresh".
-     *
-     * Fresh responses may be served from cache without any interaction with the
-     * origin. A response is considered fresh when it includes a Cache-Control/max-age
-     * indicator or Expires header and the calculated age is less than the freshness lifetime.
-     *
-     * @final
-     */
-    public function isFresh(): bool
-    {
-        return $this->getTtl() > 0;
-    }
-
-    /**
-     * Returns true if the response includes headers that can be used to validate
-     * the response with the origin server using a conditional GET request.
-     *
-     * @final
-     */
-    public function isValidateable(): bool
-    {
-        return $this->headers->has('Last-Modified') || $this->headers->has('ETag');
-    }
-
-    /**
-     * Marks the response as "private".
-     *
-     * It makes the response ineligible for serving other clients.
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setPrivate()
-    {
-        $this->headers->removeCacheControlDirective('public');
-        $this->headers->addCacheControlDirective('private');
-
-        return $this;
-    }
-
-    /**
-     * Marks the response as "public".
-     *
-     * It makes the response eligible for serving other clients.
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setPublic()
-    {
-        $this->headers->addCacheControlDirective('public');
-        $this->headers->removeCacheControlDirective('private');
-
-        return $this;
-    }
-
-    /**
-     * Marks the response as "immutable".
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setImmutable(bool $immutable = true)
-    {
-        if ($immutable) {
-            $this->headers->addCacheControlDirective('immutable');
-        } else {
-            $this->headers->removeCacheControlDirective('immutable');
-        }
-
-        return $this;
-    }
-
-    /**
-     * Returns true if the response is marked as "immutable".
-     *
-     * @final
-     */
-    public function isImmutable(): bool
-    {
-        return $this->headers->hasCacheControlDirective('immutable');
-    }
-
-    /**
-     * Returns true if the response must be revalidated by shared caches once it has become stale.
-     *
-     * This method indicates that the response must not be served stale by a
-     * cache in any circumstance without first revalidating with the origin.
-     * When present, the TTL of the response should not be overridden to be
-     * greater than the value provided by the origin.
-     *
-     * @final
-     */
-    public function mustRevalidate(): bool
-    {
-        return $this->headers->hasCacheControlDirective('must-revalidate') || $this->headers->hasCacheControlDirective('proxy-revalidate');
-    }
-
-    /**
-     * Returns the Date header as a DateTime instance.
-     *
-     * @throws \RuntimeException When the header is not parseable
-     *
-     * @final
-     */
-    public function getDate(): ?\DateTimeInterface
-    {
-        return $this->headers->getDate('Date');
-    }
-
-    /**
-     * Sets the Date header.
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setDate(\DateTimeInterface $date)
-    {
-        if ($date instanceof \DateTime) {
-            $date = \DateTimeImmutable::createFromMutable($date);
-        }
-
-        $date = $date->setTimezone(new \DateTimeZone('UTC'));
-        $this->headers->set('Date', $date->format('D, d M Y H:i:s').' GMT');
-
-        return $this;
-    }
-
-    /**
-     * Returns the age of the response in seconds.
-     *
-     * @final
-     */
-    public function getAge(): int
-    {
-        if (null !== $age = $this->headers->get('Age')) {
-            return (int) $age;
-        }
-
-        return max(time() - (int) $this->getDate()->format('U'), 0);
-    }
-
-    /**
-     * Marks the response stale by setting the Age header to be equal to the maximum age of the response.
-     *
-     * @return $this
-     */
-    public function expire()
-    {
-        if ($this->isFresh()) {
-            $this->headers->set('Age', $this->getMaxAge());
-            $this->headers->remove('Expires');
-        }
-
-        return $this;
-    }
-
-    /**
-     * Returns the value of the Expires header as a DateTime instance.
-     *
-     * @final
-     */
-    public function getExpires(): ?\DateTimeInterface
-    {
-        try {
-            return $this->headers->getDate('Expires');
-        } catch (\RuntimeException $e) {
-            // according to RFC 2616 invalid date formats (e.g. "0" and "-1") must be treated as in the past
-            return \DateTime::createFromFormat('U', time() - 172800);
-        }
-    }
-
-    /**
-     * Sets the Expires HTTP header with a DateTime instance.
-     *
-     * Passing null as value will remove the header.
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setExpires(\DateTimeInterface $date = null)
-    {
-        if (null === $date) {
-            $this->headers->remove('Expires');
-
-            return $this;
-        }
-
-        if ($date instanceof \DateTime) {
-            $date = \DateTimeImmutable::createFromMutable($date);
-        }
-
-        $date = $date->setTimezone(new \DateTimeZone('UTC'));
-        $this->headers->set('Expires', $date->format('D, d M Y H:i:s').' GMT');
-
-        return $this;
-    }
-
-    /**
-     * Returns the number of seconds after the time specified in the response's Date
-     * header when the response should no longer be considered fresh.
-     *
-     * First, it checks for a s-maxage directive, then a max-age directive, and then it falls
-     * back on an expires header. It returns null when no maximum age can be established.
-     *
-     * @final
-     */
-    public function getMaxAge(): ?int
-    {
-        if ($this->headers->hasCacheControlDirective('s-maxage')) {
-            return (int) $this->headers->getCacheControlDirective('s-maxage');
-        }
-
-        if ($this->headers->hasCacheControlDirective('max-age')) {
-            return (int) $this->headers->getCacheControlDirective('max-age');
-        }
-
-        if (null !== $this->getExpires()) {
-            return (int) $this->getExpires()->format('U') - (int) $this->getDate()->format('U');
-        }
-
-        return null;
-    }
-
-    /**
-     * Sets the number of seconds after which the response should no longer be considered fresh.
-     *
-     * This methods sets the Cache-Control max-age directive.
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setMaxAge(int $value)
-    {
-        $this->headers->addCacheControlDirective('max-age', $value);
-
-        return $this;
-    }
-
-    /**
-     * Sets the number of seconds after which the response should no longer be considered fresh by shared caches.
-     *
-     * This methods sets the Cache-Control s-maxage directive.
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setSharedMaxAge(int $value)
-    {
-        $this->setPublic();
-        $this->headers->addCacheControlDirective('s-maxage', $value);
-
-        return $this;
-    }
-
-    /**
-     * Returns the response's time-to-live in seconds.
-     *
-     * It returns null when no freshness information is present in the response.
-     *
-     * When the responses TTL is <= 0, the response may not be served from cache without first
-     * revalidating with the origin.
-     *
-     * @final
-     */
-    public function getTtl(): ?int
-    {
-        $maxAge = $this->getMaxAge();
-
-        return null !== $maxAge ? $maxAge - $this->getAge() : null;
-    }
-
-    /**
-     * Sets the response's time-to-live for shared caches in seconds.
-     *
-     * This method adjusts the Cache-Control/s-maxage directive.
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setTtl(int $seconds)
-    {
-        $this->setSharedMaxAge($this->getAge() + $seconds);
-
-        return $this;
-    }
-
-    /**
-     * Sets the response's time-to-live for private/client caches in seconds.
-     *
-     * This method adjusts the Cache-Control/max-age directive.
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setClientTtl(int $seconds)
-    {
-        $this->setMaxAge($this->getAge() + $seconds);
-
-        return $this;
-    }
-
-    /**
-     * Returns the Last-Modified HTTP header as a DateTime instance.
-     *
-     * @throws \RuntimeException When the HTTP header is not parseable
-     *
-     * @final
-     */
-    public function getLastModified(): ?\DateTimeInterface
-    {
-        return $this->headers->getDate('Last-Modified');
-    }
-
-    /**
-     * Sets the Last-Modified HTTP header with a DateTime instance.
-     *
-     * Passing null as value will remove the header.
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setLastModified(\DateTimeInterface $date = null)
-    {
-        if (null === $date) {
-            $this->headers->remove('Last-Modified');
-
-            return $this;
-        }
-
-        if ($date instanceof \DateTime) {
-            $date = \DateTimeImmutable::createFromMutable($date);
-        }
-
-        $date = $date->setTimezone(new \DateTimeZone('UTC'));
-        $this->headers->set('Last-Modified', $date->format('D, d M Y H:i:s').' GMT');
-
-        return $this;
-    }
-
-    /**
-     * Returns the literal value of the ETag HTTP header.
-     *
-     * @final
-     */
-    public function getEtag(): ?string
-    {
-        return $this->headers->get('ETag');
-    }
-
-    /**
-     * Sets the ETag value.
-     *
-     * @param string|null $etag The ETag unique identifier or null to remove the header
-     * @param bool        $weak Whether you want a weak ETag or not
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setEtag(string $etag = null, bool $weak = false)
-    {
-        if (null === $etag) {
-            $this->headers->remove('Etag');
-        } else {
-            if (0 !== strpos($etag, '"')) {
-                $etag = '"'.$etag.'"';
-            }
-
-            $this->headers->set('ETag', (true === $weak ? 'W/' : '').$etag);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Sets the response's cache headers (validation and/or expiration).
-     *
-     * Available options are: etag, last_modified, max_age, s_maxage, private, public and immutable.
-     *
-     * @return $this
-     *
-     * @throws \InvalidArgumentException
-     *
-     * @final
-     */
-    public function setCache(array $options)
-    {
-        if ($diff = array_diff(array_keys($options), ['etag', 'last_modified', 'max_age', 's_maxage', 'private', 'public', 'immutable'])) {
-            throw new \InvalidArgumentException(sprintf('Response does not support the following options: "%s".', implode('", "', $diff)));
-        }
-
-        if (isset($options['etag'])) {
-            $this->setEtag($options['etag']);
-        }
-
-        if (isset($options['last_modified'])) {
-            $this->setLastModified($options['last_modified']);
-        }
-
-        if (isset($options['max_age'])) {
-            $this->setMaxAge($options['max_age']);
-        }
-
-        if (isset($options['s_maxage'])) {
-            $this->setSharedMaxAge($options['s_maxage']);
-        }
-
-        if (isset($options['public'])) {
-            if ($options['public']) {
-                $this->setPublic();
-            } else {
-                $this->setPrivate();
-            }
-        }
-
-        if (isset($options['private'])) {
-            if ($options['private']) {
-                $this->setPrivate();
-            } else {
-                $this->setPublic();
-            }
-        }
-
-        if (isset($options['immutable'])) {
-            $this->setImmutable((bool) $options['immutable']);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Modifies the response so that it conforms to the rules defined for a 304 status code.
-     *
-     * This sets the status, removes the body, and discards any headers
-     * that MUST NOT be included in 304 responses.
-     *
-     * @return $this
-     *
-     * @see https://tools.ietf.org/html/rfc2616#section-10.3.5
-     *
-     * @final
-     */
-    public function setNotModified()
-    {
-        $this->setStatusCode(304);
-        $this->setContent(null);
-
-        // remove headers that MUST NOT be included with 304 Not Modified responses
-        foreach (['Allow', 'Content-Encoding', 'Content-Language', 'Content-Length', 'Content-MD5', 'Content-Type', 'Last-Modified'] as $header) {
-            $this->headers->remove($header);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Returns true if the response includes a Vary header.
-     *
-     * @final
-     */
-    public function hasVary(): bool
-    {
-        return null !== $this->headers->get('Vary');
-    }
-
-    /**
-     * Returns an array of header names given in the Vary header.
-     *
-     * @final
-     */
-    public function getVary(): array
-    {
-        if (!$vary = $this->headers->all('Vary')) {
-            return [];
-        }
-
-        $ret = [];
-        foreach ($vary as $item) {
-            $ret = array_merge($ret, preg_split('/[\s,]+/', $item));
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Sets the Vary header.
-     *
-     * @param string|array $headers
-     * @param bool         $replace Whether to replace the actual value or not (true by default)
-     *
-     * @return $this
-     *
-     * @final
-     */
-    public function setVary($headers, bool $replace = true)
-    {
-        $this->headers->set('Vary', $headers, $replace);
-
-        return $this;
-    }
-
-    /**
-     * Determines if the Response validators (ETag, Last-Modified) match
-     * a conditional value specified in the Request.
-     *
-     * If the Response is not modified, it sets the status code to 304 and
-     * removes the actual content by calling the setNotModified() method.
-     *
-     * @return bool true if the Response validators match the Request, false otherwise
-     *
-     * @final
-     */
-    public function isNotModified(Request $request): bool
-    {
-        if (!$request->isMethodCacheable()) {
-            return false;
-        }
-
-        $notModified = false;
-        $lastModified = $this->headers->get('Last-Modified');
-        $modifiedSince = $request->headers->get('If-Modified-Since');
-
-        if ($etags = $request->getETags()) {
-            $notModified = \in_array($this->getEtag(), $etags) || \in_array('*', $etags);
-        }
-
-        if ($modifiedSince && $lastModified) {
-            $notModified = strtotime($modifiedSince) >= strtotime($lastModified) && (!$etags || $notModified);
-        }
-
-        if ($notModified) {
-            $this->setNotModified();
-        }
-
-        return $notModified;
-    }
-
-    /**
-     * Is response invalid?
-     *
-     * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
-     *
-     * @final
-     */
-    public function isInvalid(): bool
-    {
-        return $this->statusCode < 100 || $this->statusCode >= 600;
-    }
-
-    /**
-     * Is response informative?
-     *
-     * @final
-     */
-    public function isInformational(): bool
-    {
-        return $this->statusCode >= 100 && $this->statusCode < 200;
-    }
-
-    /**
-     * Is response successful?
-     *
-     * @final
-     */
-    public function isSuccessful(): bool
-    {
-        return $this->statusCode >= 200 && $this->statusCode < 300;
-    }
-
-    /**
-     * Is the response a redirect?
-     *
-     * @final
-     */
-    public function isRedirection(): bool
-    {
-        return $this->statusCode >= 300 && $this->statusCode < 400;
-    }
-
-    /**
-     * Is there a client error?
-     *
-     * @final
-     */
-    public function isClientError(): bool
-    {
-        return $this->statusCode >= 400 && $this->statusCode < 500;
-    }
-
-    /**
-     * Was there a server side error?
-     *
-     * @final
-     */
-    public function isServerError(): bool
-    {
-        return $this->statusCode >= 500 && $this->statusCode < 600;
-    }
-
-    /**
-     * Is the response OK?
-     *
-     * @final
-     */
-    public function isOk(): bool
-    {
-        return 200 === $this->statusCode;
-    }
-
-    /**
-     * Is the response forbidden?
-     *
-     * @final
-     */
-    public function isForbidden(): bool
-    {
-        return 403 === $this->statusCode;
-    }
-
-    /**
-     * Is the response a not found error?
-     *
-     * @final
-     */
-    public function isNotFound(): bool
-    {
-        return 404 === $this->statusCode;
-    }
-
-    /**
-     * Is the response a redirect of some form?
-     *
-     * @final
-     */
-    public function isRedirect(string $location = null): bool
-    {
-        return \in_array($this->statusCode, [201, 301, 302, 303, 307, 308]) && (null === $location ?: $location == $this->headers->get('Location'));
-    }
-
-    /**
-     * Is the response empty?
-     *
-     * @final
-     */
-    public function isEmpty(): bool
-    {
-        return \in_array($this->statusCode, [204, 304]);
-    }
-
-    /**
-     * Cleans or flushes output buffers up to target level.
-     *
-     * Resulting level can be greater than target level if a non-removable buffer has been encountered.
-     *
-     * @final
-     */
-    public static function closeOutputBuffers(int $targetLevel, bool $flush): void
-    {
-        $status = ob_get_status(true);
-        $level = \count($status);
-        $flags = \PHP_OUTPUT_HANDLER_REMOVABLE | ($flush ? \PHP_OUTPUT_HANDLER_FLUSHABLE : \PHP_OUTPUT_HANDLER_CLEANABLE);
-
-        while ($level-- > $targetLevel && ($s = $status[$level]) && (!isset($s['del']) ? !isset($s['flags']) || ($s['flags'] & $flags) === $flags : $s['del'])) {
-            if ($flush) {
-                ob_end_flush();
-            } else {
-                ob_end_clean();
-            }
-        }
-    }
-
-    /**
-     * Checks if we need to remove Cache-Control for SSL encrypted downloads when using IE < 9.
-     *
-     * @see http://support.microsoft.com/kb/323308
-     *
-     * @final
-     */
-    protected function ensureIEOverSSLCompatibility(Request $request): void
-    {
-        if (false !== stripos($this->headers->get('Content-Disposition'), 'attachment') && 1 == preg_match('/MSIE (.*?);/i', $request->server->get('HTTP_USER_AGENT'), $match) && true === $request->isSecure()) {
-            if ((int) preg_replace('/(MSIE )(.*?);/', '$2', $match[0]) < 9) {
-                $this->headers->remove('Cache-Control');
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/ResponseHeaderBag.php b/vendor/symfony/http-foundation/ResponseHeaderBag.php
deleted file mode 100644
index e71034abac98b1bd616fa98a330ec2f9487cef1d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/ResponseHeaderBag.php
+++ /dev/null
@@ -1,310 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * ResponseHeaderBag is a container for Response HTTP headers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ResponseHeaderBag extends HeaderBag
-{
-    const COOKIES_FLAT = 'flat';
-    const COOKIES_ARRAY = 'array';
-
-    const DISPOSITION_ATTACHMENT = 'attachment';
-    const DISPOSITION_INLINE = 'inline';
-
-    protected $computedCacheControl = [];
-    protected $cookies = [];
-    protected $headerNames = [];
-
-    public function __construct(array $headers = [])
-    {
-        parent::__construct($headers);
-
-        if (!isset($this->headers['cache-control'])) {
-            $this->set('Cache-Control', '');
-        }
-
-        /* RFC2616 - 14.18 says all Responses need to have a Date */
-        if (!isset($this->headers['date'])) {
-            $this->initDate();
-        }
-    }
-
-    /**
-     * Returns the headers, with original capitalizations.
-     *
-     * @return array An array of headers
-     */
-    public function allPreserveCase()
-    {
-        $headers = [];
-        foreach ($this->all() as $name => $value) {
-            $headers[$this->headerNames[$name] ?? $name] = $value;
-        }
-
-        return $headers;
-    }
-
-    public function allPreserveCaseWithoutCookies()
-    {
-        $headers = $this->allPreserveCase();
-        if (isset($this->headerNames['set-cookie'])) {
-            unset($headers[$this->headerNames['set-cookie']]);
-        }
-
-        return $headers;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function replace(array $headers = [])
-    {
-        $this->headerNames = [];
-
-        parent::replace($headers);
-
-        if (!isset($this->headers['cache-control'])) {
-            $this->set('Cache-Control', '');
-        }
-
-        if (!isset($this->headers['date'])) {
-            $this->initDate();
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param string|null $key The name of the headers to return or null to get them all
-     */
-    public function all(/*string $key = null*/)
-    {
-        $headers = parent::all();
-
-        if (1 <= \func_num_args() && null !== $key = func_get_arg(0)) {
-            $key = strtr($key, self::UPPER, self::LOWER);
-
-            return 'set-cookie' !== $key ? $headers[$key] ?? [] : array_map('strval', $this->getCookies());
-        }
-
-        foreach ($this->getCookies() as $cookie) {
-            $headers['set-cookie'][] = (string) $cookie;
-        }
-
-        return $headers;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($key, $values, $replace = true)
-    {
-        $uniqueKey = strtr($key, self::UPPER, self::LOWER);
-
-        if ('set-cookie' === $uniqueKey) {
-            if ($replace) {
-                $this->cookies = [];
-            }
-            foreach ((array) $values as $cookie) {
-                $this->setCookie(Cookie::fromString($cookie));
-            }
-            $this->headerNames[$uniqueKey] = $key;
-
-            return;
-        }
-
-        $this->headerNames[$uniqueKey] = $key;
-
-        parent::set($key, $values, $replace);
-
-        // ensure the cache-control header has sensible defaults
-        if (\in_array($uniqueKey, ['cache-control', 'etag', 'last-modified', 'expires'], true) && '' !== $computed = $this->computeCacheControlValue()) {
-            $this->headers['cache-control'] = [$computed];
-            $this->headerNames['cache-control'] = 'Cache-Control';
-            $this->computedCacheControl = $this->parseCacheControl($computed);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function remove($key)
-    {
-        $uniqueKey = strtr($key, self::UPPER, self::LOWER);
-        unset($this->headerNames[$uniqueKey]);
-
-        if ('set-cookie' === $uniqueKey) {
-            $this->cookies = [];
-
-            return;
-        }
-
-        parent::remove($key);
-
-        if ('cache-control' === $uniqueKey) {
-            $this->computedCacheControl = [];
-        }
-
-        if ('date' === $uniqueKey) {
-            $this->initDate();
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasCacheControlDirective($key)
-    {
-        return \array_key_exists($key, $this->computedCacheControl);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCacheControlDirective($key)
-    {
-        return \array_key_exists($key, $this->computedCacheControl) ? $this->computedCacheControl[$key] : null;
-    }
-
-    public function setCookie(Cookie $cookie)
-    {
-        $this->cookies[$cookie->getDomain()][$cookie->getPath()][$cookie->getName()] = $cookie;
-        $this->headerNames['set-cookie'] = 'Set-Cookie';
-    }
-
-    /**
-     * Removes a cookie from the array, but does not unset it in the browser.
-     *
-     * @param string $name
-     * @param string $path
-     * @param string $domain
-     */
-    public function removeCookie($name, $path = '/', $domain = null)
-    {
-        if (null === $path) {
-            $path = '/';
-        }
-
-        unset($this->cookies[$domain][$path][$name]);
-
-        if (empty($this->cookies[$domain][$path])) {
-            unset($this->cookies[$domain][$path]);
-
-            if (empty($this->cookies[$domain])) {
-                unset($this->cookies[$domain]);
-            }
-        }
-
-        if (empty($this->cookies)) {
-            unset($this->headerNames['set-cookie']);
-        }
-    }
-
-    /**
-     * Returns an array with all cookies.
-     *
-     * @param string $format
-     *
-     * @return Cookie[]
-     *
-     * @throws \InvalidArgumentException When the $format is invalid
-     */
-    public function getCookies($format = self::COOKIES_FLAT)
-    {
-        if (!\in_array($format, [self::COOKIES_FLAT, self::COOKIES_ARRAY])) {
-            throw new \InvalidArgumentException(sprintf('Format "%s" invalid (%s).', $format, implode(', ', [self::COOKIES_FLAT, self::COOKIES_ARRAY])));
-        }
-
-        if (self::COOKIES_ARRAY === $format) {
-            return $this->cookies;
-        }
-
-        $flattenedCookies = [];
-        foreach ($this->cookies as $path) {
-            foreach ($path as $cookies) {
-                foreach ($cookies as $cookie) {
-                    $flattenedCookies[] = $cookie;
-                }
-            }
-        }
-
-        return $flattenedCookies;
-    }
-
-    /**
-     * Clears a cookie in the browser.
-     *
-     * @param string $name
-     * @param string $path
-     * @param string $domain
-     * @param bool   $secure
-     * @param bool   $httpOnly
-     * @param string $sameSite
-     */
-    public function clearCookie($name, $path = '/', $domain = null, $secure = false, $httpOnly = true/*, $sameSite = null*/)
-    {
-        $sameSite = \func_num_args() > 5 ? func_get_arg(5) : null;
-
-        $this->setCookie(new Cookie($name, null, 1, $path, $domain, $secure, $httpOnly, false, $sameSite));
-    }
-
-    /**
-     * @see HeaderUtils::makeDisposition()
-     */
-    public function makeDisposition($disposition, $filename, $filenameFallback = '')
-    {
-        return HeaderUtils::makeDisposition((string) $disposition, (string) $filename, (string) $filenameFallback);
-    }
-
-    /**
-     * Returns the calculated value of the cache-control header.
-     *
-     * This considers several other headers and calculates or modifies the
-     * cache-control header to a sensible, conservative value.
-     *
-     * @return string
-     */
-    protected function computeCacheControlValue()
-    {
-        if (!$this->cacheControl) {
-            if ($this->has('Last-Modified') || $this->has('Expires')) {
-                return 'private, must-revalidate'; // allows for heuristic expiration (RFC 7234 Section 4.2.2) in the case of "Last-Modified"
-            }
-
-            // conservative by default
-            return 'no-cache, private';
-        }
-
-        $header = $this->getCacheControlHeader();
-        if (isset($this->cacheControl['public']) || isset($this->cacheControl['private'])) {
-            return $header;
-        }
-
-        // public if s-maxage is defined, private otherwise
-        if (!isset($this->cacheControl['s-maxage'])) {
-            return $header.', private';
-        }
-
-        return $header;
-    }
-
-    private function initDate(): void
-    {
-        $now = \DateTime::createFromFormat('U', time());
-        $now->setTimezone(new \DateTimeZone('UTC'));
-        $this->set('Date', $now->format('D, d M Y H:i:s').' GMT');
-    }
-}
diff --git a/vendor/symfony/http-foundation/ServerBag.php b/vendor/symfony/http-foundation/ServerBag.php
deleted file mode 100644
index 02c70911c19f1b184c13aadd1f77025543c57627..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/ServerBag.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * ServerBag is a container for HTTP headers from the $_SERVER variable.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- * @author Robert Kiss <kepten@gmail.com>
- */
-class ServerBag extends ParameterBag
-{
-    /**
-     * Gets the HTTP headers.
-     *
-     * @return array
-     */
-    public function getHeaders()
-    {
-        $headers = [];
-        foreach ($this->parameters as $key => $value) {
-            if (0 === strpos($key, 'HTTP_')) {
-                $headers[substr($key, 5)] = $value;
-            } elseif (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH', 'CONTENT_MD5'], true)) {
-                $headers[$key] = $value;
-            }
-        }
-
-        if (isset($this->parameters['PHP_AUTH_USER'])) {
-            $headers['PHP_AUTH_USER'] = $this->parameters['PHP_AUTH_USER'];
-            $headers['PHP_AUTH_PW'] = isset($this->parameters['PHP_AUTH_PW']) ? $this->parameters['PHP_AUTH_PW'] : '';
-        } else {
-            /*
-             * php-cgi under Apache does not pass HTTP Basic user/pass to PHP by default
-             * For this workaround to work, add these lines to your .htaccess file:
-             * RewriteCond %{HTTP:Authorization} .+
-             * RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
-             *
-             * A sample .htaccess file:
-             * RewriteEngine On
-             * RewriteCond %{HTTP:Authorization} .+
-             * RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
-             * RewriteCond %{REQUEST_FILENAME} !-f
-             * RewriteRule ^(.*)$ app.php [QSA,L]
-             */
-
-            $authorizationHeader = null;
-            if (isset($this->parameters['HTTP_AUTHORIZATION'])) {
-                $authorizationHeader = $this->parameters['HTTP_AUTHORIZATION'];
-            } elseif (isset($this->parameters['REDIRECT_HTTP_AUTHORIZATION'])) {
-                $authorizationHeader = $this->parameters['REDIRECT_HTTP_AUTHORIZATION'];
-            }
-
-            if (null !== $authorizationHeader) {
-                if (0 === stripos($authorizationHeader, 'basic ')) {
-                    // Decode AUTHORIZATION header into PHP_AUTH_USER and PHP_AUTH_PW when authorization header is basic
-                    $exploded = explode(':', base64_decode(substr($authorizationHeader, 6)), 2);
-                    if (2 == \count($exploded)) {
-                        list($headers['PHP_AUTH_USER'], $headers['PHP_AUTH_PW']) = $exploded;
-                    }
-                } elseif (empty($this->parameters['PHP_AUTH_DIGEST']) && (0 === stripos($authorizationHeader, 'digest '))) {
-                    // In some circumstances PHP_AUTH_DIGEST needs to be set
-                    $headers['PHP_AUTH_DIGEST'] = $authorizationHeader;
-                    $this->parameters['PHP_AUTH_DIGEST'] = $authorizationHeader;
-                } elseif (0 === stripos($authorizationHeader, 'bearer ')) {
-                    /*
-                     * XXX: Since there is no PHP_AUTH_BEARER in PHP predefined variables,
-                     *      I'll just set $headers['AUTHORIZATION'] here.
-                     *      https://php.net/reserved.variables.server
-                     */
-                    $headers['AUTHORIZATION'] = $authorizationHeader;
-                }
-            }
-        }
-
-        if (isset($headers['AUTHORIZATION'])) {
-            return $headers;
-        }
-
-        // PHP_AUTH_USER/PHP_AUTH_PW
-        if (isset($headers['PHP_AUTH_USER'])) {
-            $headers['AUTHORIZATION'] = 'Basic '.base64_encode($headers['PHP_AUTH_USER'].':'.$headers['PHP_AUTH_PW']);
-        } elseif (isset($headers['PHP_AUTH_DIGEST'])) {
-            $headers['AUTHORIZATION'] = $headers['PHP_AUTH_DIGEST'];
-        }
-
-        return $headers;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php b/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php
deleted file mode 100644
index ee33698cf0842aa2fb21d538c0f6e6bf6bf6035f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Attribute;
-
-/**
- * This class relates to session attribute storage.
- */
-class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Countable
-{
-    private $name = 'attributes';
-    private $storageKey;
-
-    protected $attributes = [];
-
-    /**
-     * @param string $storageKey The key used to store attributes in the session
-     */
-    public function __construct(string $storageKey = '_sf2_attributes')
-    {
-        $this->storageKey = $storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function initialize(array &$attributes)
-    {
-        $this->attributes = &$attributes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStorageKey()
-    {
-        return $this->storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($name)
-    {
-        return \array_key_exists($name, $this->attributes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($name, $default = null)
-    {
-        return \array_key_exists($name, $this->attributes) ? $this->attributes[$name] : $default;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($name, $value)
-    {
-        $this->attributes[$name] = $value;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function all()
-    {
-        return $this->attributes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function replace(array $attributes)
-    {
-        $this->attributes = [];
-        foreach ($attributes as $key => $value) {
-            $this->set($key, $value);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function remove($name)
-    {
-        $retval = null;
-        if (\array_key_exists($name, $this->attributes)) {
-            $retval = $this->attributes[$name];
-            unset($this->attributes[$name]);
-        }
-
-        return $retval;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        $return = $this->attributes;
-        $this->attributes = [];
-
-        return $return;
-    }
-
-    /**
-     * Returns an iterator for attributes.
-     *
-     * @return \ArrayIterator An \ArrayIterator instance
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->attributes);
-    }
-
-    /**
-     * Returns the number of attributes.
-     *
-     * @return int The number of attributes
-     */
-    public function count()
-    {
-        return \count($this->attributes);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php b/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php
deleted file mode 100644
index 6fa2293970b90d007900d1641403a4cb4a30507d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Attribute;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-
-/**
- * Attributes store.
- *
- * @author Drak <drak@zikula.org>
- */
-interface AttributeBagInterface extends SessionBagInterface
-{
-    /**
-     * Checks if an attribute is defined.
-     *
-     * @param string $name The attribute name
-     *
-     * @return bool true if the attribute is defined, false otherwise
-     */
-    public function has($name);
-
-    /**
-     * Returns an attribute.
-     *
-     * @param string $name    The attribute name
-     * @param mixed  $default The default value if not found
-     *
-     * @return mixed
-     */
-    public function get($name, $default = null);
-
-    /**
-     * Sets an attribute.
-     *
-     * @param string $name
-     * @param mixed  $value
-     */
-    public function set($name, $value);
-
-    /**
-     * Returns attributes.
-     *
-     * @return array
-     */
-    public function all();
-
-    public function replace(array $attributes);
-
-    /**
-     * Removes an attribute.
-     *
-     * @param string $name
-     *
-     * @return mixed The removed value or null when it does not exist
-     */
-    public function remove($name);
-}
diff --git a/vendor/symfony/http-foundation/Session/Attribute/NamespacedAttributeBag.php b/vendor/symfony/http-foundation/Session/Attribute/NamespacedAttributeBag.php
deleted file mode 100644
index 2cf0743cf9d5e54845ae3e38e83cd4ba1ab0f32d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Attribute/NamespacedAttributeBag.php
+++ /dev/null
@@ -1,159 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Attribute;
-
-/**
- * This class provides structured storage of session attributes using
- * a name spacing character in the key.
- *
- * @author Drak <drak@zikula.org>
- */
-class NamespacedAttributeBag extends AttributeBag
-{
-    private $namespaceCharacter;
-
-    /**
-     * @param string $storageKey         Session storage key
-     * @param string $namespaceCharacter Namespace character to use in keys
-     */
-    public function __construct(string $storageKey = '_sf2_attributes', string $namespaceCharacter = '/')
-    {
-        $this->namespaceCharacter = $namespaceCharacter;
-        parent::__construct($storageKey);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($name)
-    {
-        // reference mismatch: if fixed, re-introduced in array_key_exists; keep as it is
-        $attributes = $this->resolveAttributePath($name);
-        $name = $this->resolveKey($name);
-
-        if (null === $attributes) {
-            return false;
-        }
-
-        return \array_key_exists($name, $attributes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($name, $default = null)
-    {
-        // reference mismatch: if fixed, re-introduced in array_key_exists; keep as it is
-        $attributes = $this->resolveAttributePath($name);
-        $name = $this->resolveKey($name);
-
-        if (null === $attributes) {
-            return $default;
-        }
-
-        return \array_key_exists($name, $attributes) ? $attributes[$name] : $default;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($name, $value)
-    {
-        $attributes = &$this->resolveAttributePath($name, true);
-        $name = $this->resolveKey($name);
-        $attributes[$name] = $value;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function remove($name)
-    {
-        $retval = null;
-        $attributes = &$this->resolveAttributePath($name);
-        $name = $this->resolveKey($name);
-        if (null !== $attributes && \array_key_exists($name, $attributes)) {
-            $retval = $attributes[$name];
-            unset($attributes[$name]);
-        }
-
-        return $retval;
-    }
-
-    /**
-     * Resolves a path in attributes property and returns it as a reference.
-     *
-     * This method allows structured namespacing of session attributes.
-     *
-     * @param string $name         Key name
-     * @param bool   $writeContext Write context, default false
-     *
-     * @return array|null
-     */
-    protected function &resolveAttributePath($name, $writeContext = false)
-    {
-        $array = &$this->attributes;
-        $name = (0 === strpos($name, $this->namespaceCharacter)) ? substr($name, 1) : $name;
-
-        // Check if there is anything to do, else return
-        if (!$name) {
-            return $array;
-        }
-
-        $parts = explode($this->namespaceCharacter, $name);
-        if (\count($parts) < 2) {
-            if (!$writeContext) {
-                return $array;
-            }
-
-            $array[$parts[0]] = [];
-
-            return $array;
-        }
-
-        unset($parts[\count($parts) - 1]);
-
-        foreach ($parts as $part) {
-            if (null !== $array && !\array_key_exists($part, $array)) {
-                if (!$writeContext) {
-                    $null = null;
-
-                    return $null;
-                }
-
-                $array[$part] = [];
-            }
-
-            $array = &$array[$part];
-        }
-
-        return $array;
-    }
-
-    /**
-     * Resolves the key from the name.
-     *
-     * This is the last part in a dot separated string.
-     *
-     * @param string $name
-     *
-     * @return string
-     */
-    protected function resolveKey($name)
-    {
-        if (false !== $pos = strrpos($name, $this->namespaceCharacter)) {
-            $name = substr($name, $pos + 1);
-        }
-
-        return $name;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php b/vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php
deleted file mode 100644
index 6502f3d50155f8280d9f488db9eaa6a4326b7efb..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Flash;
-
-/**
- * AutoExpireFlashBag flash message container.
- *
- * @author Drak <drak@zikula.org>
- */
-class AutoExpireFlashBag implements FlashBagInterface
-{
-    private $name = 'flashes';
-    private $flashes = ['display' => [], 'new' => []];
-    private $storageKey;
-
-    /**
-     * @param string $storageKey The key used to store flashes in the session
-     */
-    public function __construct(string $storageKey = '_symfony_flashes')
-    {
-        $this->storageKey = $storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function initialize(array &$flashes)
-    {
-        $this->flashes = &$flashes;
-
-        // The logic: messages from the last request will be stored in new, so we move them to previous
-        // This request we will show what is in 'display'.  What is placed into 'new' this time round will
-        // be moved to display next time round.
-        $this->flashes['display'] = \array_key_exists('new', $this->flashes) ? $this->flashes['new'] : [];
-        $this->flashes['new'] = [];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add($type, $message)
-    {
-        $this->flashes['new'][$type][] = $message;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function peek($type, array $default = [])
-    {
-        return $this->has($type) ? $this->flashes['display'][$type] : $default;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function peekAll()
-    {
-        return \array_key_exists('display', $this->flashes) ? (array) $this->flashes['display'] : [];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($type, array $default = [])
-    {
-        $return = $default;
-
-        if (!$this->has($type)) {
-            return $return;
-        }
-
-        if (isset($this->flashes['display'][$type])) {
-            $return = $this->flashes['display'][$type];
-            unset($this->flashes['display'][$type]);
-        }
-
-        return $return;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function all()
-    {
-        $return = $this->flashes['display'];
-        $this->flashes['display'] = [];
-
-        return $return;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setAll(array $messages)
-    {
-        $this->flashes['new'] = $messages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($type, $messages)
-    {
-        $this->flashes['new'][$type] = (array) $messages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($type)
-    {
-        return \array_key_exists($type, $this->flashes['display']) && $this->flashes['display'][$type];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function keys()
-    {
-        return array_keys($this->flashes['display']);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStorageKey()
-    {
-        return $this->storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        return $this->all();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Flash/FlashBag.php b/vendor/symfony/http-foundation/Session/Flash/FlashBag.php
deleted file mode 100644
index c6b7ce354cec478124b9be7b6b10a9e3d87d72c9..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Flash/FlashBag.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Flash;
-
-/**
- * FlashBag flash message container.
- *
- * @author Drak <drak@zikula.org>
- */
-class FlashBag implements FlashBagInterface
-{
-    private $name = 'flashes';
-    private $flashes = [];
-    private $storageKey;
-
-    /**
-     * @param string $storageKey The key used to store flashes in the session
-     */
-    public function __construct(string $storageKey = '_symfony_flashes')
-    {
-        $this->storageKey = $storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function initialize(array &$flashes)
-    {
-        $this->flashes = &$flashes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add($type, $message)
-    {
-        $this->flashes[$type][] = $message;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function peek($type, array $default = [])
-    {
-        return $this->has($type) ? $this->flashes[$type] : $default;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function peekAll()
-    {
-        return $this->flashes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($type, array $default = [])
-    {
-        if (!$this->has($type)) {
-            return $default;
-        }
-
-        $return = $this->flashes[$type];
-
-        unset($this->flashes[$type]);
-
-        return $return;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function all()
-    {
-        $return = $this->peekAll();
-        $this->flashes = [];
-
-        return $return;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($type, $messages)
-    {
-        $this->flashes[$type] = (array) $messages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setAll(array $messages)
-    {
-        $this->flashes = $messages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($type)
-    {
-        return \array_key_exists($type, $this->flashes) && $this->flashes[$type];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function keys()
-    {
-        return array_keys($this->flashes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStorageKey()
-    {
-        return $this->storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        return $this->all();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php b/vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php
deleted file mode 100644
index 99e8074214b622dfdd618f912b8c56031703cf0d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Flash;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-
-/**
- * FlashBagInterface.
- *
- * @author Drak <drak@zikula.org>
- */
-interface FlashBagInterface extends SessionBagInterface
-{
-    /**
-     * Adds a flash message for the given type.
-     *
-     * @param string $type
-     * @param mixed  $message
-     */
-    public function add($type, $message);
-
-    /**
-     * Registers one or more messages for a given type.
-     *
-     * @param string       $type
-     * @param string|array $messages
-     */
-    public function set($type, $messages);
-
-    /**
-     * Gets flash messages for a given type.
-     *
-     * @param string $type    Message category type
-     * @param array  $default Default value if $type does not exist
-     *
-     * @return array
-     */
-    public function peek($type, array $default = []);
-
-    /**
-     * Gets all flash messages.
-     *
-     * @return array
-     */
-    public function peekAll();
-
-    /**
-     * Gets and clears flash from the stack.
-     *
-     * @param string $type
-     * @param array  $default Default value if $type does not exist
-     *
-     * @return array
-     */
-    public function get($type, array $default = []);
-
-    /**
-     * Gets and clears flashes from the stack.
-     *
-     * @return array
-     */
-    public function all();
-
-    /**
-     * Sets all flash messages.
-     */
-    public function setAll(array $messages);
-
-    /**
-     * Has flash messages for a given type?
-     *
-     * @param string $type
-     *
-     * @return bool
-     */
-    public function has($type);
-
-    /**
-     * Returns a list of all defined types.
-     *
-     * @return array
-     */
-    public function keys();
-}
diff --git a/vendor/symfony/http-foundation/Session/Session.php b/vendor/symfony/http-foundation/Session/Session.php
deleted file mode 100644
index b6973aaabb9892a8c4b6efe0c81f61c5bb78b1e5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Session.php
+++ /dev/null
@@ -1,273 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session;
-
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface;
-
-// Help opcache.preload discover always-needed symbols
-class_exists(AttributeBag::class);
-class_exists(FlashBag::class);
-class_exists(SessionBagProxy::class);
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Drak <drak@zikula.org>
- */
-class Session implements SessionInterface, \IteratorAggregate, \Countable
-{
-    protected $storage;
-
-    private $flashName;
-    private $attributeName;
-    private $data = [];
-    private $usageIndex = 0;
-
-    public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null)
-    {
-        $this->storage = $storage ?: new NativeSessionStorage();
-
-        $attributes = $attributes ?: new AttributeBag();
-        $this->attributeName = $attributes->getName();
-        $this->registerBag($attributes);
-
-        $flashes = $flashes ?: new FlashBag();
-        $this->flashName = $flashes->getName();
-        $this->registerBag($flashes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        return $this->storage->start();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($name)
-    {
-        return $this->getAttributeBag()->has($name);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($name, $default = null)
-    {
-        return $this->getAttributeBag()->get($name, $default);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($name, $value)
-    {
-        $this->getAttributeBag()->set($name, $value);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function all()
-    {
-        return $this->getAttributeBag()->all();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function replace(array $attributes)
-    {
-        $this->getAttributeBag()->replace($attributes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function remove($name)
-    {
-        return $this->getAttributeBag()->remove($name);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        $this->getAttributeBag()->clear();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isStarted()
-    {
-        return $this->storage->isStarted();
-    }
-
-    /**
-     * Returns an iterator for attributes.
-     *
-     * @return \ArrayIterator An \ArrayIterator instance
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->getAttributeBag()->all());
-    }
-
-    /**
-     * Returns the number of attributes.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return \count($this->getAttributeBag()->all());
-    }
-
-    public function &getUsageIndex(): int
-    {
-        return $this->usageIndex;
-    }
-
-    /**
-     * @internal
-     */
-    public function isEmpty(): bool
-    {
-        if ($this->isStarted()) {
-            ++$this->usageIndex;
-        }
-        foreach ($this->data as &$data) {
-            if (!empty($data)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function invalidate($lifetime = null)
-    {
-        $this->storage->clear();
-
-        return $this->migrate(true, $lifetime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function migrate($destroy = false, $lifetime = null)
-    {
-        return $this->storage->regenerate($destroy, $lifetime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function save()
-    {
-        $this->storage->save();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getId()
-    {
-        return $this->storage->getId();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setId($id)
-    {
-        if ($this->storage->getId() !== $id) {
-            $this->storage->setId($id);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->storage->getName();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setName($name)
-    {
-        $this->storage->setName($name);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataBag()
-    {
-        ++$this->usageIndex;
-
-        return $this->storage->getMetadataBag();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function registerBag(SessionBagInterface $bag)
-    {
-        $this->storage->registerBag(new SessionBagProxy($bag, $this->data, $this->usageIndex));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getBag($name)
-    {
-        $bag = $this->storage->getBag($name);
-
-        return method_exists($bag, 'getBag') ? $bag->getBag() : $bag;
-    }
-
-    /**
-     * Gets the flashbag interface.
-     *
-     * @return FlashBagInterface
-     */
-    public function getFlashBag()
-    {
-        return $this->getBag($this->flashName);
-    }
-
-    /**
-     * Gets the attributebag interface.
-     *
-     * Note that this method was added to help with IDE autocompletion.
-     */
-    private function getAttributeBag(): AttributeBagInterface
-    {
-        return $this->getBag($this->attributeName);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/SessionBagInterface.php b/vendor/symfony/http-foundation/Session/SessionBagInterface.php
deleted file mode 100644
index 8e37d06d65da3e729528188503e68e8dae9e10fc..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/SessionBagInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session;
-
-/**
- * Session Bag store.
- *
- * @author Drak <drak@zikula.org>
- */
-interface SessionBagInterface
-{
-    /**
-     * Gets this bag's name.
-     *
-     * @return string
-     */
-    public function getName();
-
-    /**
-     * Initializes the Bag.
-     */
-    public function initialize(array &$array);
-
-    /**
-     * Gets the storage key for this bag.
-     *
-     * @return string
-     */
-    public function getStorageKey();
-
-    /**
-     * Clears out data from bag.
-     *
-     * @return mixed Whatever data was contained
-     */
-    public function clear();
-}
diff --git a/vendor/symfony/http-foundation/Session/SessionBagProxy.php b/vendor/symfony/http-foundation/Session/SessionBagProxy.php
deleted file mode 100644
index 0ae8231ef8fb24e91cd95e4bd1c9b557f6f16fbe..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/SessionBagProxy.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-final class SessionBagProxy implements SessionBagInterface
-{
-    private $bag;
-    private $data;
-    private $usageIndex;
-
-    public function __construct(SessionBagInterface $bag, array &$data, ?int &$usageIndex)
-    {
-        $this->bag = $bag;
-        $this->data = &$data;
-        $this->usageIndex = &$usageIndex;
-    }
-
-    public function getBag(): SessionBagInterface
-    {
-        ++$this->usageIndex;
-
-        return $this->bag;
-    }
-
-    public function isEmpty(): bool
-    {
-        if (!isset($this->data[$this->bag->getStorageKey()])) {
-            return true;
-        }
-        ++$this->usageIndex;
-
-        return empty($this->data[$this->bag->getStorageKey()]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName(): string
-    {
-        return $this->bag->getName();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function initialize(array &$array): void
-    {
-        ++$this->usageIndex;
-        $this->data[$this->bag->getStorageKey()] = &$array;
-
-        $this->bag->initialize($array);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStorageKey(): string
-    {
-        return $this->bag->getStorageKey();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        return $this->bag->clear();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/SessionInterface.php b/vendor/symfony/http-foundation/Session/SessionInterface.php
deleted file mode 100644
index e758c6bda6018b4d799659ee2a3a524863d5e1c5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/SessionInterface.php
+++ /dev/null
@@ -1,178 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session;
-
-use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag;
-
-/**
- * Interface for the session.
- *
- * @author Drak <drak@zikula.org>
- */
-interface SessionInterface
-{
-    /**
-     * Starts the session storage.
-     *
-     * @return bool
-     *
-     * @throws \RuntimeException if session fails to start
-     */
-    public function start();
-
-    /**
-     * Returns the session ID.
-     *
-     * @return string
-     */
-    public function getId();
-
-    /**
-     * Sets the session ID.
-     *
-     * @param string $id
-     */
-    public function setId($id);
-
-    /**
-     * Returns the session name.
-     *
-     * @return string
-     */
-    public function getName();
-
-    /**
-     * Sets the session name.
-     *
-     * @param string $name
-     */
-    public function setName($name);
-
-    /**
-     * Invalidates the current session.
-     *
-     * Clears all session attributes and flashes and regenerates the
-     * session and deletes the old session from persistence.
-     *
-     * @param int $lifetime Sets the cookie lifetime for the session cookie. A null value
-     *                      will leave the system settings unchanged, 0 sets the cookie
-     *                      to expire with browser session. Time is in seconds, and is
-     *                      not a Unix timestamp.
-     *
-     * @return bool
-     */
-    public function invalidate($lifetime = null);
-
-    /**
-     * Migrates the current session to a new session id while maintaining all
-     * session attributes.
-     *
-     * @param bool $destroy  Whether to delete the old session or leave it to garbage collection
-     * @param int  $lifetime Sets the cookie lifetime for the session cookie. A null value
-     *                       will leave the system settings unchanged, 0 sets the cookie
-     *                       to expire with browser session. Time is in seconds, and is
-     *                       not a Unix timestamp.
-     *
-     * @return bool
-     */
-    public function migrate($destroy = false, $lifetime = null);
-
-    /**
-     * Force the session to be saved and closed.
-     *
-     * This method is generally not required for real sessions as
-     * the session will be automatically saved at the end of
-     * code execution.
-     */
-    public function save();
-
-    /**
-     * Checks if an attribute is defined.
-     *
-     * @param string $name The attribute name
-     *
-     * @return bool
-     */
-    public function has($name);
-
-    /**
-     * Returns an attribute.
-     *
-     * @param string $name    The attribute name
-     * @param mixed  $default The default value if not found
-     *
-     * @return mixed
-     */
-    public function get($name, $default = null);
-
-    /**
-     * Sets an attribute.
-     *
-     * @param string $name
-     * @param mixed  $value
-     */
-    public function set($name, $value);
-
-    /**
-     * Returns attributes.
-     *
-     * @return array
-     */
-    public function all();
-
-    /**
-     * Sets attributes.
-     */
-    public function replace(array $attributes);
-
-    /**
-     * Removes an attribute.
-     *
-     * @param string $name
-     *
-     * @return mixed The removed value or null when it does not exist
-     */
-    public function remove($name);
-
-    /**
-     * Clears all attributes.
-     */
-    public function clear();
-
-    /**
-     * Checks if the session was started.
-     *
-     * @return bool
-     */
-    public function isStarted();
-
-    /**
-     * Registers a SessionBagInterface with the session.
-     */
-    public function registerBag(SessionBagInterface $bag);
-
-    /**
-     * Gets a bag instance by name.
-     *
-     * @param string $name
-     *
-     * @return SessionBagInterface
-     */
-    public function getBag($name);
-
-    /**
-     * Gets session meta.
-     *
-     * @return MetadataBag
-     */
-    public function getMetadataBag();
-}
diff --git a/vendor/symfony/http-foundation/Session/SessionUtils.php b/vendor/symfony/http-foundation/Session/SessionUtils.php
deleted file mode 100644
index b5bce4a884eff6afb2b1b180b2708e589d8f9b7d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/SessionUtils.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session;
-
-/**
- * Session utility functions.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- * @author Rémon van de Kamp <rpkamp@gmail.com>
- *
- * @internal
- */
-final class SessionUtils
-{
-    /**
-     * Finds the session header amongst the headers that are to be sent, removes it, and returns
-     * it so the caller can process it further.
-     */
-    public static function popSessionCookie(string $sessionName, string $sessionId): ?string
-    {
-        $sessionCookie = null;
-        $sessionCookiePrefix = sprintf(' %s=', urlencode($sessionName));
-        $sessionCookieWithId = sprintf('%s%s;', $sessionCookiePrefix, urlencode($sessionId));
-        $otherCookies = [];
-        foreach (headers_list() as $h) {
-            if (0 !== stripos($h, 'Set-Cookie:')) {
-                continue;
-            }
-            if (11 === strpos($h, $sessionCookiePrefix, 11)) {
-                $sessionCookie = $h;
-
-                if (11 !== strpos($h, $sessionCookieWithId, 11)) {
-                    $otherCookies[] = $h;
-                }
-            } else {
-                $otherCookies[] = $h;
-            }
-        }
-        if (null === $sessionCookie) {
-            return null;
-        }
-
-        header_remove('Set-Cookie');
-        foreach ($otherCookies as $h) {
-            header($h, false);
-        }
-
-        return $sessionCookie;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php
deleted file mode 100644
index 42c3df54a28400ae5411b226afa22c80b87ffbbe..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
-
-use Symfony\Component\HttpFoundation\Session\SessionUtils;
-
-/**
- * This abstract session handler provides a generic implementation
- * of the PHP 7.0 SessionUpdateTimestampHandlerInterface,
- * enabling strict and lazy session handling.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-abstract class AbstractSessionHandler implements \SessionHandlerInterface, \SessionUpdateTimestampHandlerInterface
-{
-    private $sessionName;
-    private $prefetchId;
-    private $prefetchData;
-    private $newSessionId;
-    private $igbinaryEmptyData;
-
-    /**
-     * @return bool
-     */
-    public function open($savePath, $sessionName)
-    {
-        $this->sessionName = $sessionName;
-        if (!headers_sent() && !ini_get('session.cache_limiter') && '0' !== ini_get('session.cache_limiter')) {
-            header(sprintf('Cache-Control: max-age=%d, private, must-revalidate', 60 * (int) ini_get('session.cache_expire')));
-        }
-
-        return true;
-    }
-
-    /**
-     * @param string $sessionId
-     *
-     * @return string
-     */
-    abstract protected function doRead($sessionId);
-
-    /**
-     * @param string $sessionId
-     * @param string $data
-     *
-     * @return bool
-     */
-    abstract protected function doWrite($sessionId, $data);
-
-    /**
-     * @param string $sessionId
-     *
-     * @return bool
-     */
-    abstract protected function doDestroy($sessionId);
-
-    /**
-     * @return bool
-     */
-    public function validateId($sessionId)
-    {
-        $this->prefetchData = $this->read($sessionId);
-        $this->prefetchId = $sessionId;
-
-        if (\PHP_VERSION_ID < 70317 || (70400 <= \PHP_VERSION_ID && \PHP_VERSION_ID < 70405)) {
-            // work around https://bugs.php.net/79413
-            foreach (debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS) as $frame) {
-                if (!isset($frame['class']) && isset($frame['function']) && \in_array($frame['function'], ['session_regenerate_id', 'session_create_id'], true)) {
-                    return '' === $this->prefetchData;
-                }
-            }
-        }
-
-        return '' !== $this->prefetchData;
-    }
-
-    /**
-     * @return string
-     */
-    public function read($sessionId)
-    {
-        if (null !== $this->prefetchId) {
-            $prefetchId = $this->prefetchId;
-            $prefetchData = $this->prefetchData;
-            $this->prefetchId = $this->prefetchData = null;
-
-            if ($prefetchId === $sessionId || '' === $prefetchData) {
-                $this->newSessionId = '' === $prefetchData ? $sessionId : null;
-
-                return $prefetchData;
-            }
-        }
-
-        $data = $this->doRead($sessionId);
-        $this->newSessionId = '' === $data ? $sessionId : null;
-
-        return $data;
-    }
-
-    /**
-     * @return bool
-     */
-    public function write($sessionId, $data)
-    {
-        if (null === $this->igbinaryEmptyData) {
-            // see https://github.com/igbinary/igbinary/issues/146
-            $this->igbinaryEmptyData = \function_exists('igbinary_serialize') ? igbinary_serialize([]) : '';
-        }
-        if ('' === $data || $this->igbinaryEmptyData === $data) {
-            return $this->destroy($sessionId);
-        }
-        $this->newSessionId = null;
-
-        return $this->doWrite($sessionId, $data);
-    }
-
-    /**
-     * @return bool
-     */
-    public function destroy($sessionId)
-    {
-        if (!headers_sent() && filter_var(ini_get('session.use_cookies'), \FILTER_VALIDATE_BOOLEAN)) {
-            if (!$this->sessionName) {
-                throw new \LogicException(sprintf('Session name cannot be empty, did you forget to call "parent::open()" in "%s"?.', static::class));
-            }
-            $cookie = SessionUtils::popSessionCookie($this->sessionName, $sessionId);
-
-            /*
-             * We send an invalidation Set-Cookie header (zero lifetime)
-             * when either the session was started or a cookie with
-             * the session name was sent by the client (in which case
-             * we know it's invalid as a valid session cookie would've
-             * started the session).
-             */
-            if (null === $cookie || isset($_COOKIE[$this->sessionName])) {
-                if (\PHP_VERSION_ID < 70300) {
-                    setcookie($this->sessionName, '', 0, ini_get('session.cookie_path'), ini_get('session.cookie_domain'), filter_var(ini_get('session.cookie_secure'), \FILTER_VALIDATE_BOOLEAN), filter_var(ini_get('session.cookie_httponly'), \FILTER_VALIDATE_BOOLEAN));
-                } else {
-                    $params = session_get_cookie_params();
-                    unset($params['lifetime']);
-                    setcookie($this->sessionName, '', $params);
-                }
-            }
-        }
-
-        return $this->newSessionId === $sessionId || $this->doDestroy($sessionId);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php
deleted file mode 100644
index 6711e0a55f9d7246088da9ae96bb160296397575..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
-
-/**
- * Memcached based session storage handler based on the Memcached class
- * provided by the PHP memcached extension.
- *
- * @see https://php.net/memcached
- *
- * @author Drak <drak@zikula.org>
- */
-class MemcachedSessionHandler extends AbstractSessionHandler
-{
-    private $memcached;
-
-    /**
-     * @var int Time to live in seconds
-     */
-    private $ttl;
-
-    /**
-     * @var string Key prefix for shared environments
-     */
-    private $prefix;
-
-    /**
-     * Constructor.
-     *
-     * List of available options:
-     *  * prefix: The prefix to use for the memcached keys in order to avoid collision
-     *  * expiretime: The time to live in seconds.
-     *
-     * @throws \InvalidArgumentException When unsupported options are passed
-     */
-    public function __construct(\Memcached $memcached, array $options = [])
-    {
-        $this->memcached = $memcached;
-
-        if ($diff = array_diff(array_keys($options), ['prefix', 'expiretime'])) {
-            throw new \InvalidArgumentException(sprintf('The following options are not supported "%s".', implode(', ', $diff)));
-        }
-
-        $this->ttl = isset($options['expiretime']) ? (int) $options['expiretime'] : 86400;
-        $this->prefix = isset($options['prefix']) ? $options['prefix'] : 'sf2s';
-    }
-
-    /**
-     * @return bool
-     */
-    public function close()
-    {
-        return $this->memcached->quit();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doRead($sessionId)
-    {
-        return $this->memcached->get($this->prefix.$sessionId) ?: '';
-    }
-
-    /**
-     * @return bool
-     */
-    public function updateTimestamp($sessionId, $data)
-    {
-        $this->memcached->touch($this->prefix.$sessionId, time() + $this->ttl);
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doWrite($sessionId, $data)
-    {
-        return $this->memcached->set($this->prefix.$sessionId, $data, time() + $this->ttl);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDestroy($sessionId)
-    {
-        $result = $this->memcached->delete($this->prefix.$sessionId);
-
-        return $result || \Memcached::RES_NOTFOUND == $this->memcached->getResultCode();
-    }
-
-    /**
-     * @return bool
-     */
-    public function gc($maxlifetime)
-    {
-        // not required here because memcached will auto expire the records anyhow.
-        return true;
-    }
-
-    /**
-     * Return a Memcached instance.
-     *
-     * @return \Memcached
-     */
-    protected function getMemcached()
-    {
-        return $this->memcached;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php
deleted file mode 100644
index c6b16d11c854423e3de531009b03ca2a6b7eb80d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
-
-/**
- * Migrating session handler for migrating from one handler to another. It reads
- * from the current handler and writes both the current and new ones.
- *
- * It ignores errors from the new handler.
- *
- * @author Ross Motley <ross.motley@amara.com>
- * @author Oliver Radwell <oliver.radwell@amara.com>
- */
-class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdateTimestampHandlerInterface
-{
-    private $currentHandler;
-    private $writeOnlyHandler;
-
-    public function __construct(\SessionHandlerInterface $currentHandler, \SessionHandlerInterface $writeOnlyHandler)
-    {
-        if (!$currentHandler instanceof \SessionUpdateTimestampHandlerInterface) {
-            $currentHandler = new StrictSessionHandler($currentHandler);
-        }
-        if (!$writeOnlyHandler instanceof \SessionUpdateTimestampHandlerInterface) {
-            $writeOnlyHandler = new StrictSessionHandler($writeOnlyHandler);
-        }
-
-        $this->currentHandler = $currentHandler;
-        $this->writeOnlyHandler = $writeOnlyHandler;
-    }
-
-    /**
-     * @return bool
-     */
-    public function close()
-    {
-        $result = $this->currentHandler->close();
-        $this->writeOnlyHandler->close();
-
-        return $result;
-    }
-
-    /**
-     * @return bool
-     */
-    public function destroy($sessionId)
-    {
-        $result = $this->currentHandler->destroy($sessionId);
-        $this->writeOnlyHandler->destroy($sessionId);
-
-        return $result;
-    }
-
-    /**
-     * @return bool
-     */
-    public function gc($maxlifetime)
-    {
-        $result = $this->currentHandler->gc($maxlifetime);
-        $this->writeOnlyHandler->gc($maxlifetime);
-
-        return $result;
-    }
-
-    /**
-     * @return bool
-     */
-    public function open($savePath, $sessionName)
-    {
-        $result = $this->currentHandler->open($savePath, $sessionName);
-        $this->writeOnlyHandler->open($savePath, $sessionName);
-
-        return $result;
-    }
-
-    /**
-     * @return string
-     */
-    public function read($sessionId)
-    {
-        // No reading from new handler until switch-over
-        return $this->currentHandler->read($sessionId);
-    }
-
-    /**
-     * @return bool
-     */
-    public function write($sessionId, $sessionData)
-    {
-        $result = $this->currentHandler->write($sessionId, $sessionData);
-        $this->writeOnlyHandler->write($sessionId, $sessionData);
-
-        return $result;
-    }
-
-    /**
-     * @return bool
-     */
-    public function validateId($sessionId)
-    {
-        // No reading from new handler until switch-over
-        return $this->currentHandler->validateId($sessionId);
-    }
-
-    /**
-     * @return bool
-     */
-    public function updateTimestamp($sessionId, $sessionData)
-    {
-        $result = $this->currentHandler->updateTimestamp($sessionId, $sessionData);
-        $this->writeOnlyHandler->updateTimestamp($sessionId, $sessionData);
-
-        return $result;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php
deleted file mode 100644
index 6cb8847786538c2cc8b9d3c3028011f27008ff3b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
-
-/**
- * Session handler using the mongodb/mongodb package and MongoDB driver extension.
- *
- * @author Markus Bachmann <markus.bachmann@bachi.biz>
- *
- * @see https://packagist.org/packages/mongodb/mongodb
- * @see https://php.net/mongodb
- */
-class MongoDbSessionHandler extends AbstractSessionHandler
-{
-    private $mongo;
-
-    /**
-     * @var \MongoDB\Collection
-     */
-    private $collection;
-
-    /**
-     * @var array
-     */
-    private $options;
-
-    /**
-     * Constructor.
-     *
-     * List of available options:
-     *  * database: The name of the database [required]
-     *  * collection: The name of the collection [required]
-     *  * id_field: The field name for storing the session id [default: _id]
-     *  * data_field: The field name for storing the session data [default: data]
-     *  * time_field: The field name for storing the timestamp [default: time]
-     *  * expiry_field: The field name for storing the expiry-timestamp [default: expires_at].
-     *
-     * It is strongly recommended to put an index on the `expiry_field` for
-     * garbage-collection. Alternatively it's possible to automatically expire
-     * the sessions in the database as described below:
-     *
-     * A TTL collections can be used on MongoDB 2.2+ to cleanup expired sessions
-     * automatically. Such an index can for example look like this:
-     *
-     *     db.<session-collection>.ensureIndex(
-     *         { "<expiry-field>": 1 },
-     *         { "expireAfterSeconds": 0 }
-     *     )
-     *
-     * More details on: https://docs.mongodb.org/manual/tutorial/expire-data/
-     *
-     * If you use such an index, you can drop `gc_probability` to 0 since
-     * no garbage-collection is required.
-     *
-     * @throws \InvalidArgumentException When "database" or "collection" not provided
-     */
-    public function __construct(\MongoDB\Client $mongo, array $options)
-    {
-        if (!isset($options['database']) || !isset($options['collection'])) {
-            throw new \InvalidArgumentException('You must provide the "database" and "collection" option for MongoDBSessionHandler.');
-        }
-
-        $this->mongo = $mongo;
-
-        $this->options = array_merge([
-            'id_field' => '_id',
-            'data_field' => 'data',
-            'time_field' => 'time',
-            'expiry_field' => 'expires_at',
-        ], $options);
-    }
-
-    /**
-     * @return bool
-     */
-    public function close()
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDestroy($sessionId)
-    {
-        $this->getCollection()->deleteOne([
-            $this->options['id_field'] => $sessionId,
-        ]);
-
-        return true;
-    }
-
-    /**
-     * @return bool
-     */
-    public function gc($maxlifetime)
-    {
-        $this->getCollection()->deleteMany([
-            $this->options['expiry_field'] => ['$lt' => new \MongoDB\BSON\UTCDateTime()],
-        ]);
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doWrite($sessionId, $data)
-    {
-        $expiry = new \MongoDB\BSON\UTCDateTime((time() + (int) ini_get('session.gc_maxlifetime')) * 1000);
-
-        $fields = [
-            $this->options['time_field'] => new \MongoDB\BSON\UTCDateTime(),
-            $this->options['expiry_field'] => $expiry,
-            $this->options['data_field'] => new \MongoDB\BSON\Binary($data, \MongoDB\BSON\Binary::TYPE_OLD_BINARY),
-        ];
-
-        $this->getCollection()->updateOne(
-            [$this->options['id_field'] => $sessionId],
-            ['$set' => $fields],
-            ['upsert' => true]
-        );
-
-        return true;
-    }
-
-    /**
-     * @return bool
-     */
-    public function updateTimestamp($sessionId, $data)
-    {
-        $expiry = new \MongoDB\BSON\UTCDateTime((time() + (int) ini_get('session.gc_maxlifetime')) * 1000);
-
-        $this->getCollection()->updateOne(
-            [$this->options['id_field'] => $sessionId],
-            ['$set' => [
-                $this->options['time_field'] => new \MongoDB\BSON\UTCDateTime(),
-                $this->options['expiry_field'] => $expiry,
-            ]]
-        );
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doRead($sessionId)
-    {
-        $dbData = $this->getCollection()->findOne([
-            $this->options['id_field'] => $sessionId,
-            $this->options['expiry_field'] => ['$gte' => new \MongoDB\BSON\UTCDateTime()],
-        ]);
-
-        if (null === $dbData) {
-            return '';
-        }
-
-        return $dbData[$this->options['data_field']]->getData();
-    }
-
-    private function getCollection(): \MongoDB\Collection
-    {
-        if (null === $this->collection) {
-            $this->collection = $this->mongo->selectCollection($this->options['database'], $this->options['collection']);
-        }
-
-        return $this->collection;
-    }
-
-    /**
-     * @return \MongoDB\Client
-     */
-    protected function getMongo()
-    {
-        return $this->mongo;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php
deleted file mode 100644
index effc9db544bcfb835966645c033d61ff3ae9a6a4..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
-
-/**
- * Native session handler using PHP's built in file storage.
- *
- * @author Drak <drak@zikula.org>
- */
-class NativeFileSessionHandler extends \SessionHandler
-{
-    /**
-     * @param string $savePath Path of directory to save session files
-     *                         Default null will leave setting as defined by PHP.
-     *                         '/path', 'N;/path', or 'N;octal-mode;/path
-     *
-     * @see https://php.net/session.configuration#ini.session.save-path for further details.
-     *
-     * @throws \InvalidArgumentException On invalid $savePath
-     * @throws \RuntimeException         When failing to create the save directory
-     */
-    public function __construct(string $savePath = null)
-    {
-        if (null === $savePath) {
-            $savePath = ini_get('session.save_path');
-        }
-
-        $baseDir = $savePath;
-
-        if ($count = substr_count($savePath, ';')) {
-            if ($count > 2) {
-                throw new \InvalidArgumentException(sprintf('Invalid argument $savePath \'%s\'.', $savePath));
-            }
-
-            // characters after last ';' are the path
-            $baseDir = ltrim(strrchr($savePath, ';'), ';');
-        }
-
-        if ($baseDir && !is_dir($baseDir) && !@mkdir($baseDir, 0777, true) && !is_dir($baseDir)) {
-            throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s".', $baseDir));
-        }
-
-        ini_set('session.save_path', $savePath);
-        ini_set('session.save_handler', 'files');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php
deleted file mode 100644
index 0634e46dd53f4152ca27bdeb77bec60b28621640..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
-
-/**
- * Can be used in unit testing or in a situations where persisted sessions are not desired.
- *
- * @author Drak <drak@zikula.org>
- */
-class NullSessionHandler extends AbstractSessionHandler
-{
-    /**
-     * @return bool
-     */
-    public function close()
-    {
-        return true;
-    }
-
-    /**
-     * @return bool
-     */
-    public function validateId($sessionId)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doRead($sessionId)
-    {
-        return '';
-    }
-
-    /**
-     * @return bool
-     */
-    public function updateTimestamp($sessionId, $data)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doWrite($sessionId, $data)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDestroy($sessionId)
-    {
-        return true;
-    }
-
-    /**
-     * @return bool
-     */
-    public function gc($maxlifetime)
-    {
-        return true;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php
deleted file mode 100644
index 01b4120519d29189cbbf22de7f1676e26f4abc61..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php
+++ /dev/null
@@ -1,901 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
-
-/**
- * Session handler using a PDO connection to read and write data.
- *
- * It works with MySQL, PostgreSQL, Oracle, SQL Server and SQLite and implements
- * different locking strategies to handle concurrent access to the same session.
- * Locking is necessary to prevent loss of data due to race conditions and to keep
- * the session data consistent between read() and write(). With locking, requests
- * for the same session will wait until the other one finished writing. For this
- * reason it's best practice to close a session as early as possible to improve
- * concurrency. PHPs internal files session handler also implements locking.
- *
- * Attention: Since SQLite does not support row level locks but locks the whole database,
- * it means only one session can be accessed at a time. Even different sessions would wait
- * for another to finish. So saving session in SQLite should only be considered for
- * development or prototypes.
- *
- * Session data is a binary string that can contain non-printable characters like the null byte.
- * For this reason it must be saved in a binary column in the database like BLOB in MySQL.
- * Saving it in a character column could corrupt the data. You can use createTable()
- * to initialize a correctly defined table.
- *
- * @see https://php.net/sessionhandlerinterface
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Michael Williams <michael.williams@funsational.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class PdoSessionHandler extends AbstractSessionHandler
-{
-    /**
-     * No locking is done. This means sessions are prone to loss of data due to
-     * race conditions of concurrent requests to the same session. The last session
-     * write will win in this case. It might be useful when you implement your own
-     * logic to deal with this like an optimistic approach.
-     */
-    const LOCK_NONE = 0;
-
-    /**
-     * Creates an application-level lock on a session. The disadvantage is that the
-     * lock is not enforced by the database and thus other, unaware parts of the
-     * application could still concurrently modify the session. The advantage is it
-     * does not require a transaction.
-     * This mode is not available for SQLite and not yet implemented for oci and sqlsrv.
-     */
-    const LOCK_ADVISORY = 1;
-
-    /**
-     * Issues a real row lock. Since it uses a transaction between opening and
-     * closing a session, you have to be careful when you use same database connection
-     * that you also use for your application logic. This mode is the default because
-     * it's the only reliable solution across DBMSs.
-     */
-    const LOCK_TRANSACTIONAL = 2;
-
-    private const MAX_LIFETIME = 315576000;
-
-    /**
-     * @var \PDO|null PDO instance or null when not connected yet
-     */
-    private $pdo;
-
-    /**
-     * @var string|false|null DSN string or null for session.save_path or false when lazy connection disabled
-     */
-    private $dsn = false;
-
-    /**
-     * @var string Database driver
-     */
-    private $driver;
-
-    /**
-     * @var string Table name
-     */
-    private $table = 'sessions';
-
-    /**
-     * @var string Column for session id
-     */
-    private $idCol = 'sess_id';
-
-    /**
-     * @var string Column for session data
-     */
-    private $dataCol = 'sess_data';
-
-    /**
-     * @var string Column for lifetime
-     */
-    private $lifetimeCol = 'sess_lifetime';
-
-    /**
-     * @var string Column for timestamp
-     */
-    private $timeCol = 'sess_time';
-
-    /**
-     * @var string Username when lazy-connect
-     */
-    private $username = '';
-
-    /**
-     * @var string Password when lazy-connect
-     */
-    private $password = '';
-
-    /**
-     * @var array Connection options when lazy-connect
-     */
-    private $connectionOptions = [];
-
-    /**
-     * @var int The strategy for locking, see constants
-     */
-    private $lockMode = self::LOCK_TRANSACTIONAL;
-
-    /**
-     * It's an array to support multiple reads before closing which is manual, non-standard usage.
-     *
-     * @var \PDOStatement[] An array of statements to release advisory locks
-     */
-    private $unlockStatements = [];
-
-    /**
-     * @var bool True when the current session exists but expired according to session.gc_maxlifetime
-     */
-    private $sessionExpired = false;
-
-    /**
-     * @var bool Whether a transaction is active
-     */
-    private $inTransaction = false;
-
-    /**
-     * @var bool Whether gc() has been called
-     */
-    private $gcCalled = false;
-
-    /**
-     * You can either pass an existing database connection as PDO instance or
-     * pass a DSN string that will be used to lazy-connect to the database
-     * when the session is actually used. Furthermore it's possible to pass null
-     * which will then use the session.save_path ini setting as PDO DSN parameter.
-     *
-     * List of available options:
-     *  * db_table: The name of the table [default: sessions]
-     *  * db_id_col: The column where to store the session id [default: sess_id]
-     *  * db_data_col: The column where to store the session data [default: sess_data]
-     *  * db_lifetime_col: The column where to store the lifetime [default: sess_lifetime]
-     *  * db_time_col: The column where to store the timestamp [default: sess_time]
-     *  * db_username: The username when lazy-connect [default: '']
-     *  * db_password: The password when lazy-connect [default: '']
-     *  * db_connection_options: An array of driver-specific connection options [default: []]
-     *  * lock_mode: The strategy for locking, see constants [default: LOCK_TRANSACTIONAL]
-     *
-     * @param \PDO|string|null $pdoOrDsn A \PDO instance or DSN string or URL string or null
-     *
-     * @throws \InvalidArgumentException When PDO error mode is not PDO::ERRMODE_EXCEPTION
-     */
-    public function __construct($pdoOrDsn = null, array $options = [])
-    {
-        if ($pdoOrDsn instanceof \PDO) {
-            if (\PDO::ERRMODE_EXCEPTION !== $pdoOrDsn->getAttribute(\PDO::ATTR_ERRMODE)) {
-                throw new \InvalidArgumentException(sprintf('"%s" requires PDO error mode attribute be set to throw Exceptions (i.e. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)).', __CLASS__));
-            }
-
-            $this->pdo = $pdoOrDsn;
-            $this->driver = $this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME);
-        } elseif (\is_string($pdoOrDsn) && false !== strpos($pdoOrDsn, '://')) {
-            $this->dsn = $this->buildDsnFromUrl($pdoOrDsn);
-        } else {
-            $this->dsn = $pdoOrDsn;
-        }
-
-        $this->table = isset($options['db_table']) ? $options['db_table'] : $this->table;
-        $this->idCol = isset($options['db_id_col']) ? $options['db_id_col'] : $this->idCol;
-        $this->dataCol = isset($options['db_data_col']) ? $options['db_data_col'] : $this->dataCol;
-        $this->lifetimeCol = isset($options['db_lifetime_col']) ? $options['db_lifetime_col'] : $this->lifetimeCol;
-        $this->timeCol = isset($options['db_time_col']) ? $options['db_time_col'] : $this->timeCol;
-        $this->username = isset($options['db_username']) ? $options['db_username'] : $this->username;
-        $this->password = isset($options['db_password']) ? $options['db_password'] : $this->password;
-        $this->connectionOptions = isset($options['db_connection_options']) ? $options['db_connection_options'] : $this->connectionOptions;
-        $this->lockMode = isset($options['lock_mode']) ? $options['lock_mode'] : $this->lockMode;
-    }
-
-    /**
-     * Creates the table to store sessions which can be called once for setup.
-     *
-     * Session ID is saved in a column of maximum length 128 because that is enough even
-     * for a 512 bit configured session.hash_function like Whirlpool. Session data is
-     * saved in a BLOB. One could also use a shorter inlined varbinary column
-     * if one was sure the data fits into it.
-     *
-     * @throws \PDOException    When the table already exists
-     * @throws \DomainException When an unsupported PDO driver is used
-     */
-    public function createTable()
-    {
-        // connect if we are not yet
-        $this->getConnection();
-
-        switch ($this->driver) {
-            case 'mysql':
-                // We use varbinary for the ID column because it prevents unwanted conversions:
-                // - character set conversions between server and client
-                // - trailing space removal
-                // - case-insensitivity
-                // - language processing like é == e
-                $sql = "CREATE TABLE $this->table ($this->idCol VARBINARY(128) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER UNSIGNED NOT NULL, $this->timeCol INTEGER UNSIGNED NOT NULL) COLLATE utf8mb4_bin, ENGINE = InnoDB";
-                break;
-            case 'sqlite':
-                $sql = "CREATE TABLE $this->table ($this->idCol TEXT NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)";
-                break;
-            case 'pgsql':
-                $sql = "CREATE TABLE $this->table ($this->idCol VARCHAR(128) NOT NULL PRIMARY KEY, $this->dataCol BYTEA NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)";
-                break;
-            case 'oci':
-                $sql = "CREATE TABLE $this->table ($this->idCol VARCHAR2(128) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)";
-                break;
-            case 'sqlsrv':
-                $sql = "CREATE TABLE $this->table ($this->idCol VARCHAR(128) NOT NULL PRIMARY KEY, $this->dataCol VARBINARY(MAX) NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)";
-                break;
-            default:
-                throw new \DomainException(sprintf('Creating the session table is currently not implemented for PDO driver "%s".', $this->driver));
-        }
-
-        try {
-            $this->pdo->exec($sql);
-            $this->pdo->exec("CREATE INDEX EXPIRY ON $this->table ($this->lifetimeCol)");
-        } catch (\PDOException $e) {
-            $this->rollback();
-
-            throw $e;
-        }
-    }
-
-    /**
-     * Returns true when the current session exists but expired according to session.gc_maxlifetime.
-     *
-     * Can be used to distinguish between a new session and one that expired due to inactivity.
-     *
-     * @return bool Whether current session expired
-     */
-    public function isSessionExpired()
-    {
-        return $this->sessionExpired;
-    }
-
-    /**
-     * @return bool
-     */
-    public function open($savePath, $sessionName)
-    {
-        $this->sessionExpired = false;
-
-        if (null === $this->pdo) {
-            $this->connect($this->dsn ?: $savePath);
-        }
-
-        return parent::open($savePath, $sessionName);
-    }
-
-    /**
-     * @return string
-     */
-    public function read($sessionId)
-    {
-        try {
-            return parent::read($sessionId);
-        } catch (\PDOException $e) {
-            $this->rollback();
-
-            throw $e;
-        }
-    }
-
-    /**
-     * @return bool
-     */
-    public function gc($maxlifetime)
-    {
-        // We delay gc() to close() so that it is executed outside the transactional and blocking read-write process.
-        // This way, pruning expired sessions does not block them from being started while the current session is used.
-        $this->gcCalled = true;
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDestroy($sessionId)
-    {
-        // delete the record associated with this id
-        $sql = "DELETE FROM $this->table WHERE $this->idCol = :id";
-
-        try {
-            $stmt = $this->pdo->prepare($sql);
-            $stmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-            $stmt->execute();
-        } catch (\PDOException $e) {
-            $this->rollback();
-
-            throw $e;
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doWrite($sessionId, $data)
-    {
-        $maxlifetime = (int) ini_get('session.gc_maxlifetime');
-
-        try {
-            // We use a single MERGE SQL query when supported by the database.
-            $mergeStmt = $this->getMergeStatement($sessionId, $data, $maxlifetime);
-            if (null !== $mergeStmt) {
-                $mergeStmt->execute();
-
-                return true;
-            }
-
-            $updateStmt = $this->getUpdateStatement($sessionId, $data, $maxlifetime);
-            $updateStmt->execute();
-
-            // When MERGE is not supported, like in Postgres < 9.5, we have to use this approach that can result in
-            // duplicate key errors when the same session is written simultaneously (given the LOCK_NONE behavior).
-            // We can just catch such an error and re-execute the update. This is similar to a serializable
-            // transaction with retry logic on serialization failures but without the overhead and without possible
-            // false positives due to longer gap locking.
-            if (!$updateStmt->rowCount()) {
-                try {
-                    $insertStmt = $this->getInsertStatement($sessionId, $data, $maxlifetime);
-                    $insertStmt->execute();
-                } catch (\PDOException $e) {
-                    // Handle integrity violation SQLSTATE 23000 (or a subclass like 23505 in Postgres) for duplicate keys
-                    if (0 === strpos($e->getCode(), '23')) {
-                        $updateStmt->execute();
-                    } else {
-                        throw $e;
-                    }
-                }
-            }
-        } catch (\PDOException $e) {
-            $this->rollback();
-
-            throw $e;
-        }
-
-        return true;
-    }
-
-    /**
-     * @return bool
-     */
-    public function updateTimestamp($sessionId, $data)
-    {
-        $expiry = time() + (int) ini_get('session.gc_maxlifetime');
-
-        try {
-            $updateStmt = $this->pdo->prepare(
-                "UPDATE $this->table SET $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id"
-            );
-            $updateStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-            $updateStmt->bindParam(':expiry', $expiry, \PDO::PARAM_INT);
-            $updateStmt->bindValue(':time', time(), \PDO::PARAM_INT);
-            $updateStmt->execute();
-        } catch (\PDOException $e) {
-            $this->rollback();
-
-            throw $e;
-        }
-
-        return true;
-    }
-
-    /**
-     * @return bool
-     */
-    public function close()
-    {
-        $this->commit();
-
-        while ($unlockStmt = array_shift($this->unlockStatements)) {
-            $unlockStmt->execute();
-        }
-
-        if ($this->gcCalled) {
-            $this->gcCalled = false;
-
-            // delete the session records that have expired
-            $sql = "DELETE FROM $this->table WHERE $this->lifetimeCol < :time AND $this->lifetimeCol > :min";
-            $stmt = $this->pdo->prepare($sql);
-            $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
-            $stmt->bindValue(':min', self::MAX_LIFETIME, \PDO::PARAM_INT);
-            $stmt->execute();
-            // to be removed in 6.0
-            if ('mysql' === $this->driver) {
-                $legacySql = "DELETE FROM $this->table WHERE $this->lifetimeCol <= :min AND $this->lifetimeCol + $this->timeCol < :time";
-            } else {
-                $legacySql = "DELETE FROM $this->table WHERE $this->lifetimeCol <= :min AND $this->lifetimeCol < :time - $this->timeCol";
-            }
-
-            $stmt = $this->pdo->prepare($legacySql);
-            $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
-            $stmt->bindValue(':min', self::MAX_LIFETIME, \PDO::PARAM_INT);
-            $stmt->execute();
-        }
-
-        if (false !== $this->dsn) {
-            $this->pdo = null; // only close lazy-connection
-        }
-
-        return true;
-    }
-
-    /**
-     * Lazy-connects to the database.
-     */
-    private function connect(string $dsn): void
-    {
-        $this->pdo = new \PDO($dsn, $this->username, $this->password, $this->connectionOptions);
-        $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
-        $this->driver = $this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME);
-    }
-
-    /**
-     * Builds a PDO DSN from a URL-like connection string.
-     *
-     * @todo implement missing support for oci DSN (which look totally different from other PDO ones)
-     */
-    private function buildDsnFromUrl(string $dsnOrUrl): string
-    {
-        // (pdo_)?sqlite3?:///... => (pdo_)?sqlite3?://localhost/... or else the URL will be invalid
-        $url = preg_replace('#^((?:pdo_)?sqlite3?):///#', '$1://localhost/', $dsnOrUrl);
-
-        $params = parse_url($url);
-
-        if (false === $params) {
-            return $dsnOrUrl; // If the URL is not valid, let's assume it might be a DSN already.
-        }
-
-        $params = array_map('rawurldecode', $params);
-
-        // Override the default username and password. Values passed through options will still win over these in the constructor.
-        if (isset($params['user'])) {
-            $this->username = $params['user'];
-        }
-
-        if (isset($params['pass'])) {
-            $this->password = $params['pass'];
-        }
-
-        if (!isset($params['scheme'])) {
-            throw new \InvalidArgumentException('URLs without scheme are not supported to configure the PdoSessionHandler.');
-        }
-
-        $driverAliasMap = [
-            'mssql' => 'sqlsrv',
-            'mysql2' => 'mysql', // Amazon RDS, for some weird reason
-            'postgres' => 'pgsql',
-            'postgresql' => 'pgsql',
-            'sqlite3' => 'sqlite',
-        ];
-
-        $driver = isset($driverAliasMap[$params['scheme']]) ? $driverAliasMap[$params['scheme']] : $params['scheme'];
-
-        // Doctrine DBAL supports passing its internal pdo_* driver names directly too (allowing both dashes and underscores). This allows supporting the same here.
-        if (0 === strpos($driver, 'pdo_') || 0 === strpos($driver, 'pdo-')) {
-            $driver = substr($driver, 4);
-        }
-
-        switch ($driver) {
-            case 'mysql':
-            case 'pgsql':
-                $dsn = $driver.':';
-
-                if (isset($params['host']) && '' !== $params['host']) {
-                    $dsn .= 'host='.$params['host'].';';
-                }
-
-                if (isset($params['port']) && '' !== $params['port']) {
-                    $dsn .= 'port='.$params['port'].';';
-                }
-
-                if (isset($params['path'])) {
-                    $dbName = substr($params['path'], 1); // Remove the leading slash
-                    $dsn .= 'dbname='.$dbName.';';
-                }
-
-                return $dsn;
-
-            case 'sqlite':
-                return 'sqlite:'.substr($params['path'], 1);
-
-            case 'sqlsrv':
-                $dsn = 'sqlsrv:server=';
-
-                if (isset($params['host'])) {
-                    $dsn .= $params['host'];
-                }
-
-                if (isset($params['port']) && '' !== $params['port']) {
-                    $dsn .= ','.$params['port'];
-                }
-
-                if (isset($params['path'])) {
-                    $dbName = substr($params['path'], 1); // Remove the leading slash
-                    $dsn .= ';Database='.$dbName;
-                }
-
-                return $dsn;
-
-            default:
-                throw new \InvalidArgumentException(sprintf('The scheme "%s" is not supported by the PdoSessionHandler URL configuration. Pass a PDO DSN directly.', $params['scheme']));
-        }
-    }
-
-    /**
-     * Helper method to begin a transaction.
-     *
-     * Since SQLite does not support row level locks, we have to acquire a reserved lock
-     * on the database immediately. Because of https://bugs.php.net/42766 we have to create
-     * such a transaction manually which also means we cannot use PDO::commit or
-     * PDO::rollback or PDO::inTransaction for SQLite.
-     *
-     * Also MySQLs default isolation, REPEATABLE READ, causes deadlock for different sessions
-     * due to https://percona.com/blog/2013/12/12/one-more-innodb-gap-lock-to-avoid/ .
-     * So we change it to READ COMMITTED.
-     */
-    private function beginTransaction(): void
-    {
-        if (!$this->inTransaction) {
-            if ('sqlite' === $this->driver) {
-                $this->pdo->exec('BEGIN IMMEDIATE TRANSACTION');
-            } else {
-                if ('mysql' === $this->driver) {
-                    $this->pdo->exec('SET TRANSACTION ISOLATION LEVEL READ COMMITTED');
-                }
-                $this->pdo->beginTransaction();
-            }
-            $this->inTransaction = true;
-        }
-    }
-
-    /**
-     * Helper method to commit a transaction.
-     */
-    private function commit(): void
-    {
-        if ($this->inTransaction) {
-            try {
-                // commit read-write transaction which also releases the lock
-                if ('sqlite' === $this->driver) {
-                    $this->pdo->exec('COMMIT');
-                } else {
-                    $this->pdo->commit();
-                }
-                $this->inTransaction = false;
-            } catch (\PDOException $e) {
-                $this->rollback();
-
-                throw $e;
-            }
-        }
-    }
-
-    /**
-     * Helper method to rollback a transaction.
-     */
-    private function rollback(): void
-    {
-        // We only need to rollback if we are in a transaction. Otherwise the resulting
-        // error would hide the real problem why rollback was called. We might not be
-        // in a transaction when not using the transactional locking behavior or when
-        // two callbacks (e.g. destroy and write) are invoked that both fail.
-        if ($this->inTransaction) {
-            if ('sqlite' === $this->driver) {
-                $this->pdo->exec('ROLLBACK');
-            } else {
-                $this->pdo->rollBack();
-            }
-            $this->inTransaction = false;
-        }
-    }
-
-    /**
-     * Reads the session data in respect to the different locking strategies.
-     *
-     * We need to make sure we do not return session data that is already considered garbage according
-     * to the session.gc_maxlifetime setting because gc() is called after read() and only sometimes.
-     *
-     * @param string $sessionId Session ID
-     *
-     * @return string The session data
-     */
-    protected function doRead($sessionId)
-    {
-        if (self::LOCK_ADVISORY === $this->lockMode) {
-            $this->unlockStatements[] = $this->doAdvisoryLock($sessionId);
-        }
-
-        $selectSql = $this->getSelectSql();
-        $selectStmt = $this->pdo->prepare($selectSql);
-        $selectStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-        $insertStmt = null;
-
-        do {
-            $selectStmt->execute();
-            $sessionRows = $selectStmt->fetchAll(\PDO::FETCH_NUM);
-
-            if ($sessionRows) {
-                $expiry = (int) $sessionRows[0][1];
-                if ($expiry <= self::MAX_LIFETIME) {
-                    $expiry += $sessionRows[0][2];
-                }
-
-                if ($expiry < time()) {
-                    $this->sessionExpired = true;
-
-                    return '';
-                }
-
-                return \is_resource($sessionRows[0][0]) ? stream_get_contents($sessionRows[0][0]) : $sessionRows[0][0];
-            }
-
-            if (null !== $insertStmt) {
-                $this->rollback();
-                throw new \RuntimeException('Failed to read session: INSERT reported a duplicate id but next SELECT did not return any data.');
-            }
-
-            if (!filter_var(ini_get('session.use_strict_mode'), \FILTER_VALIDATE_BOOLEAN) && self::LOCK_TRANSACTIONAL === $this->lockMode && 'sqlite' !== $this->driver) {
-                // In strict mode, session fixation is not possible: new sessions always start with a unique
-                // random id, so that concurrency is not possible and this code path can be skipped.
-                // Exclusive-reading of non-existent rows does not block, so we need to do an insert to block
-                // until other connections to the session are committed.
-                try {
-                    $insertStmt = $this->getInsertStatement($sessionId, '', 0);
-                    $insertStmt->execute();
-                } catch (\PDOException $e) {
-                    // Catch duplicate key error because other connection created the session already.
-                    // It would only not be the case when the other connection destroyed the session.
-                    if (0 === strpos($e->getCode(), '23')) {
-                        // Retrieve finished session data written by concurrent connection by restarting the loop.
-                        // We have to start a new transaction as a failed query will mark the current transaction as
-                        // aborted in PostgreSQL and disallow further queries within it.
-                        $this->rollback();
-                        $this->beginTransaction();
-                        continue;
-                    }
-
-                    throw $e;
-                }
-            }
-
-            return '';
-        } while (true);
-    }
-
-    /**
-     * Executes an application-level lock on the database.
-     *
-     * @return \PDOStatement The statement that needs to be executed later to release the lock
-     *
-     * @throws \DomainException When an unsupported PDO driver is used
-     *
-     * @todo implement missing advisory locks
-     *       - for oci using DBMS_LOCK.REQUEST
-     *       - for sqlsrv using sp_getapplock with LockOwner = Session
-     */
-    private function doAdvisoryLock(string $sessionId): \PDOStatement
-    {
-        switch ($this->driver) {
-            case 'mysql':
-                // MySQL 5.7.5 and later enforces a maximum length on lock names of 64 characters. Previously, no limit was enforced.
-                $lockId = substr($sessionId, 0, 64);
-                // should we handle the return value? 0 on timeout, null on error
-                // we use a timeout of 50 seconds which is also the default for innodb_lock_wait_timeout
-                $stmt = $this->pdo->prepare('SELECT GET_LOCK(:key, 50)');
-                $stmt->bindValue(':key', $lockId, \PDO::PARAM_STR);
-                $stmt->execute();
-
-                $releaseStmt = $this->pdo->prepare('DO RELEASE_LOCK(:key)');
-                $releaseStmt->bindValue(':key', $lockId, \PDO::PARAM_STR);
-
-                return $releaseStmt;
-            case 'pgsql':
-                // Obtaining an exclusive session level advisory lock requires an integer key.
-                // When session.sid_bits_per_character > 4, the session id can contain non-hex-characters.
-                // So we cannot just use hexdec().
-                if (4 === \PHP_INT_SIZE) {
-                    $sessionInt1 = $this->convertStringToInt($sessionId);
-                    $sessionInt2 = $this->convertStringToInt(substr($sessionId, 4, 4));
-
-                    $stmt = $this->pdo->prepare('SELECT pg_advisory_lock(:key1, :key2)');
-                    $stmt->bindValue(':key1', $sessionInt1, \PDO::PARAM_INT);
-                    $stmt->bindValue(':key2', $sessionInt2, \PDO::PARAM_INT);
-                    $stmt->execute();
-
-                    $releaseStmt = $this->pdo->prepare('SELECT pg_advisory_unlock(:key1, :key2)');
-                    $releaseStmt->bindValue(':key1', $sessionInt1, \PDO::PARAM_INT);
-                    $releaseStmt->bindValue(':key2', $sessionInt2, \PDO::PARAM_INT);
-                } else {
-                    $sessionBigInt = $this->convertStringToInt($sessionId);
-
-                    $stmt = $this->pdo->prepare('SELECT pg_advisory_lock(:key)');
-                    $stmt->bindValue(':key', $sessionBigInt, \PDO::PARAM_INT);
-                    $stmt->execute();
-
-                    $releaseStmt = $this->pdo->prepare('SELECT pg_advisory_unlock(:key)');
-                    $releaseStmt->bindValue(':key', $sessionBigInt, \PDO::PARAM_INT);
-                }
-
-                return $releaseStmt;
-            case 'sqlite':
-                throw new \DomainException('SQLite does not support advisory locks.');
-            default:
-                throw new \DomainException(sprintf('Advisory locks are currently not implemented for PDO driver "%s".', $this->driver));
-        }
-    }
-
-    /**
-     * Encodes the first 4 (when PHP_INT_SIZE == 4) or 8 characters of the string as an integer.
-     *
-     * Keep in mind, PHP integers are signed.
-     */
-    private function convertStringToInt(string $string): int
-    {
-        if (4 === \PHP_INT_SIZE) {
-            return (\ord($string[3]) << 24) + (\ord($string[2]) << 16) + (\ord($string[1]) << 8) + \ord($string[0]);
-        }
-
-        $int1 = (\ord($string[7]) << 24) + (\ord($string[6]) << 16) + (\ord($string[5]) << 8) + \ord($string[4]);
-        $int2 = (\ord($string[3]) << 24) + (\ord($string[2]) << 16) + (\ord($string[1]) << 8) + \ord($string[0]);
-
-        return $int2 + ($int1 << 32);
-    }
-
-    /**
-     * Return a locking or nonlocking SQL query to read session information.
-     *
-     * @throws \DomainException When an unsupported PDO driver is used
-     */
-    private function getSelectSql(): string
-    {
-        if (self::LOCK_TRANSACTIONAL === $this->lockMode) {
-            $this->beginTransaction();
-
-            // selecting the time column should be removed in 6.0
-            switch ($this->driver) {
-                case 'mysql':
-                case 'oci':
-                case 'pgsql':
-                    return "SELECT $this->dataCol, $this->lifetimeCol, $this->timeCol FROM $this->table WHERE $this->idCol = :id FOR UPDATE";
-                case 'sqlsrv':
-                    return "SELECT $this->dataCol, $this->lifetimeCol, $this->timeCol FROM $this->table WITH (UPDLOCK, ROWLOCK) WHERE $this->idCol = :id";
-                case 'sqlite':
-                    // we already locked when starting transaction
-                    break;
-                default:
-                    throw new \DomainException(sprintf('Transactional locks are currently not implemented for PDO driver "%s".', $this->driver));
-            }
-        }
-
-        return "SELECT $this->dataCol, $this->lifetimeCol, $this->timeCol FROM $this->table WHERE $this->idCol = :id";
-    }
-
-    /**
-     * Returns an insert statement supported by the database for writing session data.
-     */
-    private function getInsertStatement(string $sessionId, string $sessionData, int $maxlifetime): \PDOStatement
-    {
-        switch ($this->driver) {
-            case 'oci':
-                $data = fopen('php://memory', 'r+');
-                fwrite($data, $sessionData);
-                rewind($data);
-                $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, EMPTY_BLOB(), :expiry, :time) RETURNING $this->dataCol into :data";
-                break;
-            default:
-                $data = $sessionData;
-                $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time)";
-                break;
-        }
-
-        $stmt = $this->pdo->prepare($sql);
-        $stmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-        $stmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-        $stmt->bindValue(':expiry', time() + $maxlifetime, \PDO::PARAM_INT);
-        $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
-
-        return $stmt;
-    }
-
-    /**
-     * Returns an update statement supported by the database for writing session data.
-     */
-    private function getUpdateStatement(string $sessionId, string $sessionData, int $maxlifetime): \PDOStatement
-    {
-        switch ($this->driver) {
-            case 'oci':
-                $data = fopen('php://memory', 'r+');
-                fwrite($data, $sessionData);
-                rewind($data);
-                $sql = "UPDATE $this->table SET $this->dataCol = EMPTY_BLOB(), $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id RETURNING $this->dataCol into :data";
-                break;
-            default:
-                $data = $sessionData;
-                $sql = "UPDATE $this->table SET $this->dataCol = :data, $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id";
-                break;
-        }
-
-        $stmt = $this->pdo->prepare($sql);
-        $stmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-        $stmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-        $stmt->bindValue(':expiry', time() + $maxlifetime, \PDO::PARAM_INT);
-        $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
-
-        return $stmt;
-    }
-
-    /**
-     * Returns a merge/upsert (i.e. insert or update) statement when supported by the database for writing session data.
-     */
-    private function getMergeStatement(string $sessionId, string $data, int $maxlifetime): ?\PDOStatement
-    {
-        switch (true) {
-            case 'mysql' === $this->driver:
-                $mergeSql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time) ".
-                    "ON DUPLICATE KEY UPDATE $this->dataCol = VALUES($this->dataCol), $this->lifetimeCol = VALUES($this->lifetimeCol), $this->timeCol = VALUES($this->timeCol)";
-                break;
-            case 'sqlsrv' === $this->driver && version_compare($this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION), '10', '>='):
-                // MERGE is only available since SQL Server 2008 and must be terminated by semicolon
-                // It also requires HOLDLOCK according to https://weblogs.sqlteam.com/dang/2009/01/31/upsert-race-condition-with-merge/
-                $mergeSql = "MERGE INTO $this->table WITH (HOLDLOCK) USING (SELECT 1 AS dummy) AS src ON ($this->idCol = ?) ".
-                    "WHEN NOT MATCHED THEN INSERT ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (?, ?, ?, ?) ".
-                    "WHEN MATCHED THEN UPDATE SET $this->dataCol = ?, $this->lifetimeCol = ?, $this->timeCol = ?;";
-                break;
-            case 'sqlite' === $this->driver:
-                $mergeSql = "INSERT OR REPLACE INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time)";
-                break;
-            case 'pgsql' === $this->driver && version_compare($this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION), '9.5', '>='):
-                $mergeSql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time) ".
-                    "ON CONFLICT ($this->idCol) DO UPDATE SET ($this->dataCol, $this->lifetimeCol, $this->timeCol) = (EXCLUDED.$this->dataCol, EXCLUDED.$this->lifetimeCol, EXCLUDED.$this->timeCol)";
-                break;
-            default:
-                // MERGE is not supported with LOBs: https://oracle.com/technetwork/articles/fuecks-lobs-095315.html
-                return null;
-        }
-
-        $mergeStmt = $this->pdo->prepare($mergeSql);
-
-        if ('sqlsrv' === $this->driver) {
-            $mergeStmt->bindParam(1, $sessionId, \PDO::PARAM_STR);
-            $mergeStmt->bindParam(2, $sessionId, \PDO::PARAM_STR);
-            $mergeStmt->bindParam(3, $data, \PDO::PARAM_LOB);
-            $mergeStmt->bindValue(4, time() + $maxlifetime, \PDO::PARAM_INT);
-            $mergeStmt->bindValue(5, time(), \PDO::PARAM_INT);
-            $mergeStmt->bindParam(6, $data, \PDO::PARAM_LOB);
-            $mergeStmt->bindValue(7, time() + $maxlifetime, \PDO::PARAM_INT);
-            $mergeStmt->bindValue(8, time(), \PDO::PARAM_INT);
-        } else {
-            $mergeStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-            $mergeStmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-            $mergeStmt->bindValue(':expiry', time() + $maxlifetime, \PDO::PARAM_INT);
-            $mergeStmt->bindValue(':time', time(), \PDO::PARAM_INT);
-        }
-
-        return $mergeStmt;
-    }
-
-    /**
-     * Return a PDO instance.
-     *
-     * @return \PDO
-     */
-    protected function getConnection()
-    {
-        if (null === $this->pdo) {
-            $this->connect($this->dsn ?: ini_get('session.save_path'));
-        }
-
-        return $this->pdo;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php
deleted file mode 100644
index 699d6da6f65efa5b5931b23bedfad3243ffd04f3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
-
-use Predis\Response\ErrorInterface;
-use Symfony\Component\Cache\Traits\RedisClusterProxy;
-use Symfony\Component\Cache\Traits\RedisProxy;
-
-/**
- * Redis based session storage handler based on the Redis class
- * provided by the PHP redis extension.
- *
- * @author Dalibor Karlović <dalibor@flexolabs.io>
- */
-class RedisSessionHandler extends AbstractSessionHandler
-{
-    private $redis;
-
-    /**
-     * @var string Key prefix for shared environments
-     */
-    private $prefix;
-
-    /**
-     * @var int Time to live in seconds
-     */
-    private $ttl;
-
-    /**
-     * List of available options:
-     *  * prefix: The prefix to use for the keys in order to avoid collision on the Redis server
-     *  * ttl: The time to live in seconds.
-     *
-     * @param \Redis|\RedisArray|\RedisCluster|\Predis\ClientInterface|RedisProxy|RedisClusterProxy $redis
-     *
-     * @throws \InvalidArgumentException When unsupported client or options are passed
-     */
-    public function __construct($redis, array $options = [])
-    {
-        if (
-            !$redis instanceof \Redis &&
-            !$redis instanceof \RedisArray &&
-            !$redis instanceof \RedisCluster &&
-            !$redis instanceof \Predis\ClientInterface &&
-            !$redis instanceof RedisProxy &&
-            !$redis instanceof RedisClusterProxy
-        ) {
-            throw new \InvalidArgumentException(sprintf('"%s()" expects parameter 1 to be Redis, RedisArray, RedisCluster or Predis\ClientInterface, "%s" given.', __METHOD__, \is_object($redis) ? \get_class($redis) : \gettype($redis)));
-        }
-
-        if ($diff = array_diff(array_keys($options), ['prefix', 'ttl'])) {
-            throw new \InvalidArgumentException(sprintf('The following options are not supported "%s".', implode(', ', $diff)));
-        }
-
-        $this->redis = $redis;
-        $this->prefix = $options['prefix'] ?? 'sf_s';
-        $this->ttl = $options['ttl'] ?? null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doRead($sessionId): string
-    {
-        return $this->redis->get($this->prefix.$sessionId) ?: '';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doWrite($sessionId, $data): bool
-    {
-        $result = $this->redis->setEx($this->prefix.$sessionId, (int) ($this->ttl ?? ini_get('session.gc_maxlifetime')), $data);
-
-        return $result && !$result instanceof ErrorInterface;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDestroy($sessionId): bool
-    {
-        $this->redis->del($this->prefix.$sessionId);
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close(): bool
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function gc($maxlifetime): bool
-    {
-        return true;
-    }
-
-    /**
-     * @return bool
-     */
-    public function updateTimestamp($sessionId, $data)
-    {
-        return (bool) $this->redis->expire($this->prefix.$sessionId, (int) ($this->ttl ?? ini_get('session.gc_maxlifetime')));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/SessionHandlerFactory.php b/vendor/symfony/http-foundation/Session/Storage/Handler/SessionHandlerFactory.php
deleted file mode 100644
index a5ebd29ebaa73b711255bf4762cecaf3bf4076be..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/SessionHandlerFactory.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
-
-use Doctrine\DBAL\DriverManager;
-use Symfony\Component\Cache\Adapter\AbstractAdapter;
-use Symfony\Component\Cache\Traits\RedisClusterProxy;
-use Symfony\Component\Cache\Traits\RedisProxy;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class SessionHandlerFactory
-{
-    /**
-     * @param \Redis|\RedisArray|\RedisCluster|\Predis\ClientInterface|RedisProxy|RedisClusterProxy|\Memcached|\PDO|string $connection Connection or DSN
-     */
-    public static function createHandler($connection): AbstractSessionHandler
-    {
-        if (!\is_string($connection) && !\is_object($connection)) {
-            throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a string or a connection object, "%s" given.', __METHOD__, \gettype($connection)));
-        }
-
-        switch (true) {
-            case $connection instanceof \Redis:
-            case $connection instanceof \RedisArray:
-            case $connection instanceof \RedisCluster:
-            case $connection instanceof \Predis\ClientInterface:
-            case $connection instanceof RedisProxy:
-            case $connection instanceof RedisClusterProxy:
-                return new RedisSessionHandler($connection);
-
-            case $connection instanceof \Memcached:
-                return new MemcachedSessionHandler($connection);
-
-            case $connection instanceof \PDO:
-                return new PdoSessionHandler($connection);
-
-            case !\is_string($connection):
-                throw new \InvalidArgumentException(sprintf('Unsupported Connection: "%s".', \get_class($connection)));
-            case 0 === strpos($connection, 'file://'):
-                return new StrictSessionHandler(new NativeFileSessionHandler(substr($connection, 7)));
-
-            case 0 === strpos($connection, 'redis:'):
-            case 0 === strpos($connection, 'rediss:'):
-            case 0 === strpos($connection, 'memcached:'):
-                if (!class_exists(AbstractAdapter::class)) {
-                    throw new \InvalidArgumentException(sprintf('Unsupported DSN "%s". Try running "composer require symfony/cache".', $connection));
-                }
-                $handlerClass = 0 === strpos($connection, 'memcached:') ? MemcachedSessionHandler::class : RedisSessionHandler::class;
-                $connection = AbstractAdapter::createConnection($connection, ['lazy' => true]);
-
-                return new $handlerClass($connection);
-
-            case 0 === strpos($connection, 'pdo_oci://'):
-                if (!class_exists(DriverManager::class)) {
-                    throw new \InvalidArgumentException(sprintf('Unsupported DSN "%s". Try running "composer require doctrine/dbal".', $connection));
-                }
-                $connection = DriverManager::getConnection(['url' => $connection])->getWrappedConnection();
-                // no break;
-
-            case 0 === strpos($connection, 'mssql://'):
-            case 0 === strpos($connection, 'mysql://'):
-            case 0 === strpos($connection, 'mysql2://'):
-            case 0 === strpos($connection, 'pgsql://'):
-            case 0 === strpos($connection, 'postgres://'):
-            case 0 === strpos($connection, 'postgresql://'):
-            case 0 === strpos($connection, 'sqlsrv://'):
-            case 0 === strpos($connection, 'sqlite://'):
-            case 0 === strpos($connection, 'sqlite3://'):
-                return new PdoSessionHandler($connection);
-        }
-
-        throw new \InvalidArgumentException(sprintf('Unsupported Connection: "%s".', $connection));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php
deleted file mode 100644
index 3144ea597ea6b4d3a6b76949179ac4a8341f2314..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
-
-/**
- * Adds basic `SessionUpdateTimestampHandlerInterface` behaviors to another `SessionHandlerInterface`.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class StrictSessionHandler extends AbstractSessionHandler
-{
-    private $handler;
-    private $doDestroy;
-
-    public function __construct(\SessionHandlerInterface $handler)
-    {
-        if ($handler instanceof \SessionUpdateTimestampHandlerInterface) {
-            throw new \LogicException(sprintf('"%s" is already an instance of "SessionUpdateTimestampHandlerInterface", you cannot wrap it with "%s".', \get_class($handler), self::class));
-        }
-
-        $this->handler = $handler;
-    }
-
-    /**
-     * @return bool
-     */
-    public function open($savePath, $sessionName)
-    {
-        parent::open($savePath, $sessionName);
-
-        return $this->handler->open($savePath, $sessionName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doRead($sessionId)
-    {
-        return $this->handler->read($sessionId);
-    }
-
-    /**
-     * @return bool
-     */
-    public function updateTimestamp($sessionId, $data)
-    {
-        return $this->write($sessionId, $data);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doWrite($sessionId, $data)
-    {
-        return $this->handler->write($sessionId, $data);
-    }
-
-    /**
-     * @return bool
-     */
-    public function destroy($sessionId)
-    {
-        $this->doDestroy = true;
-        $destroyed = parent::destroy($sessionId);
-
-        return $this->doDestroy ? $this->doDestroy($sessionId) : $destroyed;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDestroy($sessionId)
-    {
-        $this->doDestroy = false;
-
-        return $this->handler->destroy($sessionId);
-    }
-
-    /**
-     * @return bool
-     */
-    public function close()
-    {
-        return $this->handler->close();
-    }
-
-    /**
-     * @return bool
-     */
-    public function gc($maxlifetime)
-    {
-        return $this->handler->gc($maxlifetime);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php b/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php
deleted file mode 100644
index 5fe40fc1061837d4ce3b3110d4c559580d6d3750..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php
+++ /dev/null
@@ -1,168 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-
-/**
- * Metadata container.
- *
- * Adds metadata to the session.
- *
- * @author Drak <drak@zikula.org>
- */
-class MetadataBag implements SessionBagInterface
-{
-    const CREATED = 'c';
-    const UPDATED = 'u';
-    const LIFETIME = 'l';
-
-    /**
-     * @var string
-     */
-    private $name = '__metadata';
-
-    /**
-     * @var string
-     */
-    private $storageKey;
-
-    /**
-     * @var array
-     */
-    protected $meta = [self::CREATED => 0, self::UPDATED => 0, self::LIFETIME => 0];
-
-    /**
-     * Unix timestamp.
-     *
-     * @var int
-     */
-    private $lastUsed;
-
-    /**
-     * @var int
-     */
-    private $updateThreshold;
-
-    /**
-     * @param string $storageKey      The key used to store bag in the session
-     * @param int    $updateThreshold The time to wait between two UPDATED updates
-     */
-    public function __construct(string $storageKey = '_sf2_meta', int $updateThreshold = 0)
-    {
-        $this->storageKey = $storageKey;
-        $this->updateThreshold = $updateThreshold;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function initialize(array &$array)
-    {
-        $this->meta = &$array;
-
-        if (isset($array[self::CREATED])) {
-            $this->lastUsed = $this->meta[self::UPDATED];
-
-            $timeStamp = time();
-            if ($timeStamp - $array[self::UPDATED] >= $this->updateThreshold) {
-                $this->meta[self::UPDATED] = $timeStamp;
-            }
-        } else {
-            $this->stampCreated();
-        }
-    }
-
-    /**
-     * Gets the lifetime that the session cookie was set with.
-     *
-     * @return int
-     */
-    public function getLifetime()
-    {
-        return $this->meta[self::LIFETIME];
-    }
-
-    /**
-     * Stamps a new session's metadata.
-     *
-     * @param int $lifetime Sets the cookie lifetime for the session cookie. A null value
-     *                      will leave the system settings unchanged, 0 sets the cookie
-     *                      to expire with browser session. Time is in seconds, and is
-     *                      not a Unix timestamp.
-     */
-    public function stampNew($lifetime = null)
-    {
-        $this->stampCreated($lifetime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStorageKey()
-    {
-        return $this->storageKey;
-    }
-
-    /**
-     * Gets the created timestamp metadata.
-     *
-     * @return int Unix timestamp
-     */
-    public function getCreated()
-    {
-        return $this->meta[self::CREATED];
-    }
-
-    /**
-     * Gets the last used metadata.
-     *
-     * @return int Unix timestamp
-     */
-    public function getLastUsed()
-    {
-        return $this->lastUsed;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        // nothing to do
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Sets name.
-     *
-     * @param string $name
-     */
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    private function stampCreated(int $lifetime = null): void
-    {
-        $timeStamp = time();
-        $this->meta[self::CREATED] = $this->meta[self::UPDATED] = $this->lastUsed = $timeStamp;
-        $this->meta[self::LIFETIME] = (null === $lifetime) ? ini_get('session.cookie_lifetime') : $lifetime;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php
deleted file mode 100644
index db8f85e75d1793ce0b50614937eac79b5041843f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php
+++ /dev/null
@@ -1,252 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-
-/**
- * MockArraySessionStorage mocks the session for unit tests.
- *
- * No PHP session is actually started since a session can be initialized
- * and shutdown only once per PHP execution cycle.
- *
- * When doing functional testing, you should use MockFileSessionStorage instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- * @author Drak <drak@zikula.org>
- */
-class MockArraySessionStorage implements SessionStorageInterface
-{
-    /**
-     * @var string
-     */
-    protected $id = '';
-
-    /**
-     * @var string
-     */
-    protected $name;
-
-    /**
-     * @var bool
-     */
-    protected $started = false;
-
-    /**
-     * @var bool
-     */
-    protected $closed = false;
-
-    /**
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * @var MetadataBag
-     */
-    protected $metadataBag;
-
-    /**
-     * @var array|SessionBagInterface[]
-     */
-    protected $bags = [];
-
-    public function __construct(string $name = 'MOCKSESSID', MetadataBag $metaBag = null)
-    {
-        $this->name = $name;
-        $this->setMetadataBag($metaBag);
-    }
-
-    public function setSessionData(array $array)
-    {
-        $this->data = $array;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        if ($this->started) {
-            return true;
-        }
-
-        if (empty($this->id)) {
-            $this->id = $this->generateId();
-        }
-
-        $this->loadSession();
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function regenerate($destroy = false, $lifetime = null)
-    {
-        if (!$this->started) {
-            $this->start();
-        }
-
-        $this->metadataBag->stampNew($lifetime);
-        $this->id = $this->generateId();
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getId()
-    {
-        return $this->id;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setId($id)
-    {
-        if ($this->started) {
-            throw new \LogicException('Cannot set session ID after the session has started.');
-        }
-
-        $this->id = $id;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function save()
-    {
-        if (!$this->started || $this->closed) {
-            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed.');
-        }
-        // nothing to do since we don't persist the session data
-        $this->closed = false;
-        $this->started = false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        // clear out the bags
-        foreach ($this->bags as $bag) {
-            $bag->clear();
-        }
-
-        // clear out the session
-        $this->data = [];
-
-        // reconnect the bags to the session
-        $this->loadSession();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function registerBag(SessionBagInterface $bag)
-    {
-        $this->bags[$bag->getName()] = $bag;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getBag($name)
-    {
-        if (!isset($this->bags[$name])) {
-            throw new \InvalidArgumentException(sprintf('The SessionBagInterface "%s" is not registered.', $name));
-        }
-
-        if (!$this->started) {
-            $this->start();
-        }
-
-        return $this->bags[$name];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isStarted()
-    {
-        return $this->started;
-    }
-
-    public function setMetadataBag(MetadataBag $bag = null)
-    {
-        if (null === $bag) {
-            $bag = new MetadataBag();
-        }
-
-        $this->metadataBag = $bag;
-    }
-
-    /**
-     * Gets the MetadataBag.
-     *
-     * @return MetadataBag
-     */
-    public function getMetadataBag()
-    {
-        return $this->metadataBag;
-    }
-
-    /**
-     * Generates a session ID.
-     *
-     * This doesn't need to be particularly cryptographically secure since this is just
-     * a mock.
-     *
-     * @return string
-     */
-    protected function generateId()
-    {
-        return hash('sha256', uniqid('ss_mock_', true));
-    }
-
-    protected function loadSession()
-    {
-        $bags = array_merge($this->bags, [$this->metadataBag]);
-
-        foreach ($bags as $bag) {
-            $key = $bag->getStorageKey();
-            $this->data[$key] = isset($this->data[$key]) ? $this->data[$key] : [];
-            $bag->initialize($this->data[$key]);
-        }
-
-        $this->started = true;
-        $this->closed = false;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php
deleted file mode 100644
index c96b3cd9dc5684a151c0f7a79feb6d267684cf37..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage;
-
-/**
- * MockFileSessionStorage is used to mock sessions for
- * functional testing when done in a single PHP process.
- *
- * No PHP session is actually started since a session can be initialized
- * and shutdown only once per PHP execution cycle and this class does
- * not pollute any session related globals, including session_*() functions
- * or session.* PHP ini directives.
- *
- * @author Drak <drak@zikula.org>
- */
-class MockFileSessionStorage extends MockArraySessionStorage
-{
-    private $savePath;
-
-    /**
-     * @param string $savePath Path of directory to save session files
-     * @param string $name     Session name
-     */
-    public function __construct(string $savePath = null, string $name = 'MOCKSESSID', MetadataBag $metaBag = null)
-    {
-        if (null === $savePath) {
-            $savePath = sys_get_temp_dir();
-        }
-
-        if (!is_dir($savePath) && !@mkdir($savePath, 0777, true) && !is_dir($savePath)) {
-            throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s".', $savePath));
-        }
-
-        $this->savePath = $savePath;
-
-        parent::__construct($name, $metaBag);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        if ($this->started) {
-            return true;
-        }
-
-        if (!$this->id) {
-            $this->id = $this->generateId();
-        }
-
-        $this->read();
-
-        $this->started = true;
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function regenerate($destroy = false, $lifetime = null)
-    {
-        if (!$this->started) {
-            $this->start();
-        }
-
-        if ($destroy) {
-            $this->destroy();
-        }
-
-        return parent::regenerate($destroy, $lifetime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function save()
-    {
-        if (!$this->started) {
-            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed.');
-        }
-
-        $data = $this->data;
-
-        foreach ($this->bags as $bag) {
-            if (empty($data[$key = $bag->getStorageKey()])) {
-                unset($data[$key]);
-            }
-        }
-        if ([$key = $this->metadataBag->getStorageKey()] === array_keys($data)) {
-            unset($data[$key]);
-        }
-
-        try {
-            if ($data) {
-                file_put_contents($this->getFilePath(), serialize($data));
-            } else {
-                $this->destroy();
-            }
-        } finally {
-            $this->data = $data;
-        }
-
-        // this is needed for Silex, where the session object is re-used across requests
-        // in functional tests. In Symfony, the container is rebooted, so we don't have
-        // this issue
-        $this->started = false;
-    }
-
-    /**
-     * Deletes a session from persistent storage.
-     * Deliberately leaves session data in memory intact.
-     */
-    private function destroy(): void
-    {
-        if (is_file($this->getFilePath())) {
-            unlink($this->getFilePath());
-        }
-    }
-
-    /**
-     * Calculate path to file.
-     */
-    private function getFilePath(): string
-    {
-        return $this->savePath.'/'.$this->id.'.mocksess';
-    }
-
-    /**
-     * Reads session from storage and loads session.
-     */
-    private function read(): void
-    {
-        $filePath = $this->getFilePath();
-        $this->data = is_readable($filePath) && is_file($filePath) ? unserialize(file_get_contents($filePath)) : [];
-
-        $this->loadSession();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
deleted file mode 100644
index e1da95509e1e66fa6318d5a39463f5ed5f2e18fb..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
+++ /dev/null
@@ -1,467 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-use Symfony\Component\HttpFoundation\Session\SessionUtils;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\StrictSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy;
-
-// Help opcache.preload discover always-needed symbols
-class_exists(MetadataBag::class);
-class_exists(StrictSessionHandler::class);
-class_exists(SessionHandlerProxy::class);
-
-/**
- * This provides a base class for session attribute storage.
- *
- * @author Drak <drak@zikula.org>
- */
-class NativeSessionStorage implements SessionStorageInterface
-{
-    /**
-     * @var SessionBagInterface[]
-     */
-    protected $bags = [];
-
-    /**
-     * @var bool
-     */
-    protected $started = false;
-
-    /**
-     * @var bool
-     */
-    protected $closed = false;
-
-    /**
-     * @var AbstractProxy|\SessionHandlerInterface
-     */
-    protected $saveHandler;
-
-    /**
-     * @var MetadataBag
-     */
-    protected $metadataBag;
-
-    /**
-     * @var string|null
-     */
-    private $emulateSameSite;
-
-    /**
-     * Depending on how you want the storage driver to behave you probably
-     * want to override this constructor entirely.
-     *
-     * List of options for $options array with their defaults.
-     *
-     * @see https://php.net/session.configuration for options
-     * but we omit 'session.' from the beginning of the keys for convenience.
-     *
-     * ("auto_start", is not supported as it tells PHP to start a session before
-     * PHP starts to execute user-land code. Setting during runtime has no effect).
-     *
-     * cache_limiter, "" (use "0" to prevent headers from being sent entirely).
-     * cache_expire, "0"
-     * cookie_domain, ""
-     * cookie_httponly, ""
-     * cookie_lifetime, "0"
-     * cookie_path, "/"
-     * cookie_secure, ""
-     * cookie_samesite, null
-     * gc_divisor, "100"
-     * gc_maxlifetime, "1440"
-     * gc_probability, "1"
-     * lazy_write, "1"
-     * name, "PHPSESSID"
-     * referer_check, ""
-     * serialize_handler, "php"
-     * use_strict_mode, "0"
-     * use_cookies, "1"
-     * use_only_cookies, "1"
-     * use_trans_sid, "0"
-     * upload_progress.enabled, "1"
-     * upload_progress.cleanup, "1"
-     * upload_progress.prefix, "upload_progress_"
-     * upload_progress.name, "PHP_SESSION_UPLOAD_PROGRESS"
-     * upload_progress.freq, "1%"
-     * upload_progress.min-freq, "1"
-     * url_rewriter.tags, "a=href,area=href,frame=src,form=,fieldset="
-     * sid_length, "32"
-     * sid_bits_per_character, "5"
-     * trans_sid_hosts, $_SERVER['HTTP_HOST']
-     * trans_sid_tags, "a=href,area=href,frame=src,form="
-     *
-     * @param AbstractProxy|\SessionHandlerInterface|null $handler
-     */
-    public function __construct(array $options = [], $handler = null, MetadataBag $metaBag = null)
-    {
-        if (!\extension_loaded('session')) {
-            throw new \LogicException('PHP extension "session" is required.');
-        }
-
-        $options += [
-            'cache_limiter' => '',
-            'cache_expire' => 0,
-            'use_cookies' => 1,
-            'lazy_write' => 1,
-            'use_strict_mode' => 1,
-        ];
-
-        session_register_shutdown();
-
-        $this->setMetadataBag($metaBag);
-        $this->setOptions($options);
-        $this->setSaveHandler($handler);
-    }
-
-    /**
-     * Gets the save handler instance.
-     *
-     * @return AbstractProxy|\SessionHandlerInterface
-     */
-    public function getSaveHandler()
-    {
-        return $this->saveHandler;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        if ($this->started) {
-            return true;
-        }
-
-        if (\PHP_SESSION_ACTIVE === session_status()) {
-            throw new \RuntimeException('Failed to start the session: already started by PHP.');
-        }
-
-        if (filter_var(ini_get('session.use_cookies'), \FILTER_VALIDATE_BOOLEAN) && headers_sent($file, $line)) {
-            throw new \RuntimeException(sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line));
-        }
-
-        // ok to try and start the session
-        if (!session_start()) {
-            throw new \RuntimeException('Failed to start the session.');
-        }
-
-        if (null !== $this->emulateSameSite) {
-            $originalCookie = SessionUtils::popSessionCookie(session_name(), session_id());
-            if (null !== $originalCookie) {
-                header(sprintf('%s; SameSite=%s', $originalCookie, $this->emulateSameSite), false);
-            }
-        }
-
-        $this->loadSession();
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getId()
-    {
-        return $this->saveHandler->getId();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setId($id)
-    {
-        $this->saveHandler->setId($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->saveHandler->getName();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setName($name)
-    {
-        $this->saveHandler->setName($name);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function regenerate($destroy = false, $lifetime = null)
-    {
-        // Cannot regenerate the session ID for non-active sessions.
-        if (\PHP_SESSION_ACTIVE !== session_status()) {
-            return false;
-        }
-
-        if (headers_sent()) {
-            return false;
-        }
-
-        if (null !== $lifetime && $lifetime != ini_get('session.cookie_lifetime')) {
-            $this->save();
-            ini_set('session.cookie_lifetime', $lifetime);
-            $this->start();
-        }
-
-        if ($destroy) {
-            $this->metadataBag->stampNew();
-        }
-
-        $isRegenerated = session_regenerate_id($destroy);
-
-        if (null !== $this->emulateSameSite) {
-            $originalCookie = SessionUtils::popSessionCookie(session_name(), session_id());
-            if (null !== $originalCookie) {
-                header(sprintf('%s; SameSite=%s', $originalCookie, $this->emulateSameSite), false);
-            }
-        }
-
-        return $isRegenerated;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function save()
-    {
-        // Store a copy so we can restore the bags in case the session was not left empty
-        $session = $_SESSION;
-
-        foreach ($this->bags as $bag) {
-            if (empty($_SESSION[$key = $bag->getStorageKey()])) {
-                unset($_SESSION[$key]);
-            }
-        }
-        if ([$key = $this->metadataBag->getStorageKey()] === array_keys($_SESSION)) {
-            unset($_SESSION[$key]);
-        }
-
-        // Register error handler to add information about the current save handler
-        $previousHandler = set_error_handler(function ($type, $msg, $file, $line) use (&$previousHandler) {
-            if (\E_WARNING === $type && 0 === strpos($msg, 'session_write_close():')) {
-                $handler = $this->saveHandler instanceof SessionHandlerProxy ? $this->saveHandler->getHandler() : $this->saveHandler;
-                $msg = sprintf('session_write_close(): Failed to write session data with "%s" handler', \get_class($handler));
-            }
-
-            return $previousHandler ? $previousHandler($type, $msg, $file, $line) : false;
-        });
-
-        try {
-            session_write_close();
-        } finally {
-            restore_error_handler();
-
-            // Restore only if not empty
-            if ($_SESSION) {
-                $_SESSION = $session;
-            }
-        }
-
-        $this->closed = true;
-        $this->started = false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        // clear out the bags
-        foreach ($this->bags as $bag) {
-            $bag->clear();
-        }
-
-        // clear out the session
-        $_SESSION = [];
-
-        // reconnect the bags to the session
-        $this->loadSession();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function registerBag(SessionBagInterface $bag)
-    {
-        if ($this->started) {
-            throw new \LogicException('Cannot register a bag when the session is already started.');
-        }
-
-        $this->bags[$bag->getName()] = $bag;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getBag($name)
-    {
-        if (!isset($this->bags[$name])) {
-            throw new \InvalidArgumentException(sprintf('The SessionBagInterface "%s" is not registered.', $name));
-        }
-
-        if (!$this->started && $this->saveHandler->isActive()) {
-            $this->loadSession();
-        } elseif (!$this->started) {
-            $this->start();
-        }
-
-        return $this->bags[$name];
-    }
-
-    public function setMetadataBag(MetadataBag $metaBag = null)
-    {
-        if (null === $metaBag) {
-            $metaBag = new MetadataBag();
-        }
-
-        $this->metadataBag = $metaBag;
-    }
-
-    /**
-     * Gets the MetadataBag.
-     *
-     * @return MetadataBag
-     */
-    public function getMetadataBag()
-    {
-        return $this->metadataBag;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isStarted()
-    {
-        return $this->started;
-    }
-
-    /**
-     * Sets session.* ini variables.
-     *
-     * For convenience we omit 'session.' from the beginning of the keys.
-     * Explicitly ignores other ini keys.
-     *
-     * @param array $options Session ini directives [key => value]
-     *
-     * @see https://php.net/session.configuration
-     */
-    public function setOptions(array $options)
-    {
-        if (headers_sent() || \PHP_SESSION_ACTIVE === session_status()) {
-            return;
-        }
-
-        $validOptions = array_flip([
-            'cache_expire', 'cache_limiter', 'cookie_domain', 'cookie_httponly',
-            'cookie_lifetime', 'cookie_path', 'cookie_secure', 'cookie_samesite',
-            'gc_divisor', 'gc_maxlifetime', 'gc_probability',
-            'lazy_write', 'name', 'referer_check',
-            'serialize_handler', 'use_strict_mode', 'use_cookies',
-            'use_only_cookies', 'use_trans_sid', 'upload_progress.enabled',
-            'upload_progress.cleanup', 'upload_progress.prefix', 'upload_progress.name',
-            'upload_progress.freq', 'upload_progress.min_freq', 'url_rewriter.tags',
-            'sid_length', 'sid_bits_per_character', 'trans_sid_hosts', 'trans_sid_tags',
-        ]);
-
-        foreach ($options as $key => $value) {
-            if (isset($validOptions[$key])) {
-                if ('cookie_samesite' === $key && \PHP_VERSION_ID < 70300) {
-                    // PHP < 7.3 does not support same_site cookies. We will emulate it in
-                    // the start() method instead.
-                    $this->emulateSameSite = $value;
-                    continue;
-                }
-                ini_set('url_rewriter.tags' !== $key ? 'session.'.$key : $key, $value);
-            }
-        }
-    }
-
-    /**
-     * Registers session save handler as a PHP session handler.
-     *
-     * To use internal PHP session save handlers, override this method using ini_set with
-     * session.save_handler and session.save_path e.g.
-     *
-     *     ini_set('session.save_handler', 'files');
-     *     ini_set('session.save_path', '/tmp');
-     *
-     * or pass in a \SessionHandler instance which configures session.save_handler in the
-     * constructor, for a template see NativeFileSessionHandler.
-     *
-     * @see https://php.net/session-set-save-handler
-     * @see https://php.net/sessionhandlerinterface
-     * @see https://php.net/sessionhandler
-     *
-     * @param AbstractProxy|\SessionHandlerInterface|null $saveHandler
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setSaveHandler($saveHandler = null)
-    {
-        if (!$saveHandler instanceof AbstractProxy &&
-            !$saveHandler instanceof \SessionHandlerInterface &&
-            null !== $saveHandler) {
-            throw new \InvalidArgumentException('Must be instance of AbstractProxy; implement \SessionHandlerInterface; or be null.');
-        }
-
-        // Wrap $saveHandler in proxy and prevent double wrapping of proxy
-        if (!$saveHandler instanceof AbstractProxy && $saveHandler instanceof \SessionHandlerInterface) {
-            $saveHandler = new SessionHandlerProxy($saveHandler);
-        } elseif (!$saveHandler instanceof AbstractProxy) {
-            $saveHandler = new SessionHandlerProxy(new StrictSessionHandler(new \SessionHandler()));
-        }
-        $this->saveHandler = $saveHandler;
-
-        if (headers_sent() || \PHP_SESSION_ACTIVE === session_status()) {
-            return;
-        }
-
-        if ($this->saveHandler instanceof SessionHandlerProxy) {
-            session_set_save_handler($this->saveHandler, false);
-        }
-    }
-
-    /**
-     * Load the session with attributes.
-     *
-     * After starting the session, PHP retrieves the session from whatever handlers
-     * are set to (either PHP's internal, or a custom save handler set with session_set_save_handler()).
-     * PHP takes the return value from the read() handler, unserializes it
-     * and populates $_SESSION with the result automatically.
-     */
-    protected function loadSession(array &$session = null)
-    {
-        if (null === $session) {
-            $session = &$_SESSION;
-        }
-
-        $bags = array_merge($this->bags, [$this->metadataBag]);
-
-        foreach ($bags as $bag) {
-            $key = $bag->getStorageKey();
-            $session[$key] = isset($session[$key]) && \is_array($session[$key]) ? $session[$key] : [];
-            $bag->initialize($session[$key]);
-        }
-
-        $this->started = true;
-        $this->closed = false;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php
deleted file mode 100644
index 72dbef134671b8331b3c69e209ad0dd58387de37..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage;
-
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
-
-/**
- * Allows session to be started by PHP and managed by Symfony.
- *
- * @author Drak <drak@zikula.org>
- */
-class PhpBridgeSessionStorage extends NativeSessionStorage
-{
-    /**
-     * @param AbstractProxy|\SessionHandlerInterface|null $handler
-     */
-    public function __construct($handler = null, MetadataBag $metaBag = null)
-    {
-        if (!\extension_loaded('session')) {
-            throw new \LogicException('PHP extension "session" is required.');
-        }
-
-        $this->setMetadataBag($metaBag);
-        $this->setSaveHandler($handler);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        if ($this->started) {
-            return true;
-        }
-
-        $this->loadSession();
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        // clear out the bags and nothing else that may be set
-        // since the purpose of this driver is to share a handler
-        foreach ($this->bags as $bag) {
-            $bag->clear();
-        }
-
-        // reconnect the bags to the session
-        $this->loadSession();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php b/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php
deleted file mode 100644
index 9e1c94ddf6c6489072b7544c9c749ac3383513fe..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Proxy;
-
-/**
- * @author Drak <drak@zikula.org>
- */
-abstract class AbstractProxy
-{
-    /**
-     * Flag if handler wraps an internal PHP session handler (using \SessionHandler).
-     *
-     * @var bool
-     */
-    protected $wrapper = false;
-
-    /**
-     * @var string
-     */
-    protected $saveHandlerName;
-
-    /**
-     * Gets the session.save_handler name.
-     *
-     * @return string|null
-     */
-    public function getSaveHandlerName()
-    {
-        return $this->saveHandlerName;
-    }
-
-    /**
-     * Is this proxy handler and instance of \SessionHandlerInterface.
-     *
-     * @return bool
-     */
-    public function isSessionHandlerInterface()
-    {
-        return $this instanceof \SessionHandlerInterface;
-    }
-
-    /**
-     * Returns true if this handler wraps an internal PHP session save handler using \SessionHandler.
-     *
-     * @return bool
-     */
-    public function isWrapper()
-    {
-        return $this->wrapper;
-    }
-
-    /**
-     * Has a session started?
-     *
-     * @return bool
-     */
-    public function isActive()
-    {
-        return \PHP_SESSION_ACTIVE === session_status();
-    }
-
-    /**
-     * Gets the session ID.
-     *
-     * @return string
-     */
-    public function getId()
-    {
-        return session_id();
-    }
-
-    /**
-     * Sets the session ID.
-     *
-     * @param string $id
-     *
-     * @throws \LogicException
-     */
-    public function setId($id)
-    {
-        if ($this->isActive()) {
-            throw new \LogicException('Cannot change the ID of an active session.');
-        }
-
-        session_id($id);
-    }
-
-    /**
-     * Gets the session name.
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return session_name();
-    }
-
-    /**
-     * Sets the session name.
-     *
-     * @param string $name
-     *
-     * @throws \LogicException
-     */
-    public function setName($name)
-    {
-        if ($this->isActive()) {
-            throw new \LogicException('Cannot change the name of an active session.');
-        }
-
-        session_name($name);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php b/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php
deleted file mode 100644
index de4f550badbc5576166d1c585d6b20863fee68ac..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage\Proxy;
-
-/**
- * @author Drak <drak@zikula.org>
- */
-class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterface, \SessionUpdateTimestampHandlerInterface
-{
-    protected $handler;
-
-    public function __construct(\SessionHandlerInterface $handler)
-    {
-        $this->handler = $handler;
-        $this->wrapper = ($handler instanceof \SessionHandler);
-        $this->saveHandlerName = $this->wrapper ? ini_get('session.save_handler') : 'user';
-    }
-
-    /**
-     * @return \SessionHandlerInterface
-     */
-    public function getHandler()
-    {
-        return $this->handler;
-    }
-
-    // \SessionHandlerInterface
-
-    /**
-     * @return bool
-     */
-    public function open($savePath, $sessionName)
-    {
-        return (bool) $this->handler->open($savePath, $sessionName);
-    }
-
-    /**
-     * @return bool
-     */
-    public function close()
-    {
-        return (bool) $this->handler->close();
-    }
-
-    /**
-     * @return string
-     */
-    public function read($sessionId)
-    {
-        return (string) $this->handler->read($sessionId);
-    }
-
-    /**
-     * @return bool
-     */
-    public function write($sessionId, $data)
-    {
-        return (bool) $this->handler->write($sessionId, $data);
-    }
-
-    /**
-     * @return bool
-     */
-    public function destroy($sessionId)
-    {
-        return (bool) $this->handler->destroy($sessionId);
-    }
-
-    /**
-     * @return bool
-     */
-    public function gc($maxlifetime)
-    {
-        return (bool) $this->handler->gc($maxlifetime);
-    }
-
-    /**
-     * @return bool
-     */
-    public function validateId($sessionId)
-    {
-        return !$this->handler instanceof \SessionUpdateTimestampHandlerInterface || $this->handler->validateId($sessionId);
-    }
-
-    /**
-     * @return bool
-     */
-    public function updateTimestamp($sessionId, $data)
-    {
-        return $this->handler instanceof \SessionUpdateTimestampHandlerInterface ? $this->handler->updateTimestamp($sessionId, $data) : $this->write($sessionId, $data);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php b/vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php
deleted file mode 100644
index eeb396a2f131c453fbd574023ac4b9639fddc1ff..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Session\Storage;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-
-/**
- * StorageInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Drak <drak@zikula.org>
- */
-interface SessionStorageInterface
-{
-    /**
-     * Starts the session.
-     *
-     * @return bool True if started
-     *
-     * @throws \RuntimeException if something goes wrong starting the session
-     */
-    public function start();
-
-    /**
-     * Checks if the session is started.
-     *
-     * @return bool True if started, false otherwise
-     */
-    public function isStarted();
-
-    /**
-     * Returns the session ID.
-     *
-     * @return string The session ID or empty
-     */
-    public function getId();
-
-    /**
-     * Sets the session ID.
-     *
-     * @param string $id
-     */
-    public function setId($id);
-
-    /**
-     * Returns the session name.
-     *
-     * @return mixed The session name
-     */
-    public function getName();
-
-    /**
-     * Sets the session name.
-     *
-     * @param string $name
-     */
-    public function setName($name);
-
-    /**
-     * Regenerates id that represents this storage.
-     *
-     * This method must invoke session_regenerate_id($destroy) unless
-     * this interface is used for a storage object designed for unit
-     * or functional testing where a real PHP session would interfere
-     * with testing.
-     *
-     * Note regenerate+destroy should not clear the session data in memory
-     * only delete the session data from persistent storage.
-     *
-     * Care: When regenerating the session ID no locking is involved in PHP's
-     * session design. See https://bugs.php.net/61470 for a discussion.
-     * So you must make sure the regenerated session is saved BEFORE sending the
-     * headers with the new ID. Symfony's HttpKernel offers a listener for this.
-     * See Symfony\Component\HttpKernel\EventListener\SaveSessionListener.
-     * Otherwise session data could get lost again for concurrent requests with the
-     * new ID. One result could be that you get logged out after just logging in.
-     *
-     * @param bool $destroy  Destroy session when regenerating?
-     * @param int  $lifetime Sets the cookie lifetime for the session cookie. A null value
-     *                       will leave the system settings unchanged, 0 sets the cookie
-     *                       to expire with browser session. Time is in seconds, and is
-     *                       not a Unix timestamp.
-     *
-     * @return bool True if session regenerated, false if error
-     *
-     * @throws \RuntimeException If an error occurs while regenerating this storage
-     */
-    public function regenerate($destroy = false, $lifetime = null);
-
-    /**
-     * Force the session to be saved and closed.
-     *
-     * This method must invoke session_write_close() unless this interface is
-     * used for a storage object design for unit or functional testing where
-     * a real PHP session would interfere with testing, in which case
-     * it should actually persist the session data if required.
-     *
-     * @throws \RuntimeException if the session is saved without being started, or if the session
-     *                           is already closed
-     */
-    public function save();
-
-    /**
-     * Clear all session data in memory.
-     */
-    public function clear();
-
-    /**
-     * Gets a SessionBagInterface by name.
-     *
-     * @param string $name
-     *
-     * @return SessionBagInterface
-     *
-     * @throws \InvalidArgumentException If the bag does not exist
-     */
-    public function getBag($name);
-
-    /**
-     * Registers a SessionBagInterface for use.
-     */
-    public function registerBag(SessionBagInterface $bag);
-
-    /**
-     * @return MetadataBag
-     */
-    public function getMetadataBag();
-}
diff --git a/vendor/symfony/http-foundation/StreamedResponse.php b/vendor/symfony/http-foundation/StreamedResponse.php
deleted file mode 100644
index ef8095bbe22e60ba8163a42306ac3db60c2efd5b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/StreamedResponse.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-/**
- * StreamedResponse represents a streamed HTTP response.
- *
- * A StreamedResponse uses a callback for its content.
- *
- * The callback should use the standard PHP functions like echo
- * to stream the response back to the client. The flush() function
- * can also be used if needed.
- *
- * @see flush()
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class StreamedResponse extends Response
-{
-    protected $callback;
-    protected $streamed;
-    private $headersSent;
-
-    /**
-     * @param callable|null $callback A valid PHP callback or null to set it later
-     * @param int           $status   The response status code
-     * @param array         $headers  An array of response headers
-     */
-    public function __construct(callable $callback = null, int $status = 200, array $headers = [])
-    {
-        parent::__construct(null, $status, $headers);
-
-        if (null !== $callback) {
-            $this->setCallback($callback);
-        }
-        $this->streamed = false;
-        $this->headersSent = false;
-    }
-
-    /**
-     * Factory method for chainability.
-     *
-     * @param callable|null $callback A valid PHP callback or null to set it later
-     * @param int           $status   The response status code
-     * @param array         $headers  An array of response headers
-     *
-     * @return static
-     */
-    public static function create($callback = null, $status = 200, $headers = [])
-    {
-        return new static($callback, $status, $headers);
-    }
-
-    /**
-     * Sets the PHP callback associated with this Response.
-     *
-     * @return $this
-     */
-    public function setCallback(callable $callback)
-    {
-        $this->callback = $callback;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * This method only sends the headers once.
-     *
-     * @return $this
-     */
-    public function sendHeaders()
-    {
-        if ($this->headersSent) {
-            return $this;
-        }
-
-        $this->headersSent = true;
-
-        return parent::sendHeaders();
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * This method only sends the content once.
-     *
-     * @return $this
-     */
-    public function sendContent()
-    {
-        if ($this->streamed) {
-            return $this;
-        }
-
-        $this->streamed = true;
-
-        if (null === $this->callback) {
-            throw new \LogicException('The Response callback must not be null.');
-        }
-
-        ($this->callback)();
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws \LogicException when the content is not null
-     *
-     * @return $this
-     */
-    public function setContent($content)
-    {
-        if (null !== $content) {
-            throw new \LogicException('The content cannot be set on a StreamedResponse instance.');
-        }
-
-        $this->streamed = true;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContent()
-    {
-        return false;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php b/vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php
deleted file mode 100644
index cb216ea12a6a41a58f7359e61f13daec0804c9d2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\HttpFoundation\Request;
-
-final class RequestAttributeValueSame extends Constraint
-{
-    private $name;
-    private $value;
-
-    public function __construct(string $name, string $value)
-    {
-        $this->name = $name;
-        $this->value = $value;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return sprintf('has attribute "%s" with value "%s"', $this->name, $this->value);
-    }
-
-    /**
-     * @param Request $request
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($request): bool
-    {
-        return $this->value === $request->attributes->get($this->name);
-    }
-
-    /**
-     * @param Request $request
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($request): string
-    {
-        return 'the Request '.$this->toString();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseCookieValueSame.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseCookieValueSame.php
deleted file mode 100644
index 554e1a1602dd60ef281ca93702e1e84dcc963909..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Test/Constraint/ResponseCookieValueSame.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\Response;
-
-final class ResponseCookieValueSame extends Constraint
-{
-    private $name;
-    private $value;
-    private $path;
-    private $domain;
-
-    public function __construct(string $name, string $value, string $path = '/', string $domain = null)
-    {
-        $this->name = $name;
-        $this->value = $value;
-        $this->path = $path;
-        $this->domain = $domain;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        $str = sprintf('has cookie "%s"', $this->name);
-        if ('/' !== $this->path) {
-            $str .= sprintf(' with path "%s"', $this->path);
-        }
-        if ($this->domain) {
-            $str .= sprintf(' for domain "%s"', $this->domain);
-        }
-        $str .= sprintf(' with value "%s"', $this->value);
-
-        return $str;
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($response): bool
-    {
-        $cookie = $this->getCookie($response);
-        if (!$cookie) {
-            return false;
-        }
-
-        return $this->value === $cookie->getValue();
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($response): string
-    {
-        return 'the Response '.$this->toString();
-    }
-
-    protected function getCookie(Response $response): ?Cookie
-    {
-        $cookies = $response->headers->getCookies();
-
-        $filteredCookies = array_filter($cookies, function (Cookie $cookie) {
-            return $cookie->getName() === $this->name && $cookie->getPath() === $this->path && $cookie->getDomain() === $this->domain;
-        });
-
-        return reset($filteredCookies) ?: null;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php
deleted file mode 100644
index eae9e271bc74bda5312165506b150ebfcf2b51ce..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\Response;
-
-final class ResponseHasCookie extends Constraint
-{
-    private $name;
-    private $path;
-    private $domain;
-
-    public function __construct(string $name, string $path = '/', string $domain = null)
-    {
-        $this->name = $name;
-        $this->path = $path;
-        $this->domain = $domain;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        $str = sprintf('has cookie "%s"', $this->name);
-        if ('/' !== $this->path) {
-            $str .= sprintf(' with path "%s"', $this->path);
-        }
-        if ($this->domain) {
-            $str .= sprintf(' for domain "%s"', $this->domain);
-        }
-
-        return $str;
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($response): bool
-    {
-        return null !== $this->getCookie($response);
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($response): string
-    {
-        return 'the Response '.$this->toString();
-    }
-
-    private function getCookie(Response $response): ?Cookie
-    {
-        $cookies = $response->headers->getCookies();
-
-        $filteredCookies = array_filter($cookies, function (Cookie $cookie) {
-            return $cookie->getName() === $this->name && $cookie->getPath() === $this->path && $cookie->getDomain() === $this->domain;
-        });
-
-        return reset($filteredCookies) ?: null;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseHasHeader.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseHasHeader.php
deleted file mode 100644
index 68ad8273fd56884a976e12da5ce6b13a7c8be90e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Test/Constraint/ResponseHasHeader.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\HttpFoundation\Response;
-
-final class ResponseHasHeader extends Constraint
-{
-    private $headerName;
-
-    public function __construct(string $headerName)
-    {
-        $this->headerName = $headerName;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return sprintf('has header "%s"', $this->headerName);
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($response): bool
-    {
-        return $response->headers->has($this->headerName);
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($response): string
-    {
-        return 'the Response '.$this->toString();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php
deleted file mode 100644
index a27d0c73fded6ff79759663062a7d4f5fac7e882..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\HttpFoundation\Response;
-
-final class ResponseHeaderSame extends Constraint
-{
-    private $headerName;
-    private $expectedValue;
-
-    public function __construct(string $headerName, string $expectedValue)
-    {
-        $this->headerName = $headerName;
-        $this->expectedValue = $expectedValue;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return sprintf('has header "%s" with value "%s"', $this->headerName, $this->expectedValue);
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($response): bool
-    {
-        return $this->expectedValue === $response->headers->get($this->headerName, null);
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($response): string
-    {
-        return 'the Response '.$this->toString();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseIsRedirected.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseIsRedirected.php
deleted file mode 100644
index 8c4b883f0b076bba7ff5e9c2daaab4f0131d55bd..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Test/Constraint/ResponseIsRedirected.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\HttpFoundation\Response;
-
-final class ResponseIsRedirected extends Constraint
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return 'is redirected';
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($response): bool
-    {
-        return $response->isRedirect();
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($response): string
-    {
-        return 'the Response '.$this->toString();
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function additionalFailureDescription($response): string
-    {
-        return (string) $response;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseIsSuccessful.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseIsSuccessful.php
deleted file mode 100644
index 9c665589072b71e3a1f0b82ab3d3687184fef17e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Test/Constraint/ResponseIsSuccessful.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\HttpFoundation\Response;
-
-final class ResponseIsSuccessful extends Constraint
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return 'is successful';
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($response): bool
-    {
-        return $response->isSuccessful();
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($response): string
-    {
-        return 'the Response '.$this->toString();
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function additionalFailureDescription($response): string
-    {
-        return (string) $response;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseStatusCodeSame.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseStatusCodeSame.php
deleted file mode 100644
index 72bb000b8592c7d7a32dfdfc27cc0cad912e7132..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Test/Constraint/ResponseStatusCodeSame.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\HttpFoundation\Response;
-
-final class ResponseStatusCodeSame extends Constraint
-{
-    private $statusCode;
-
-    public function __construct(int $statusCode)
-    {
-        $this->statusCode = $statusCode;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return 'status code is '.$this->statusCode;
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($response): bool
-    {
-        return $this->statusCode === $response->getStatusCode();
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($response): string
-    {
-        return 'the Response '.$this->toString();
-    }
-
-    /**
-     * @param Response $response
-     *
-     * {@inheritdoc}
-     */
-    protected function additionalFailureDescription($response): string
-    {
-        return (string) $response;
-    }
-}
diff --git a/vendor/symfony/http-foundation/UrlHelper.php b/vendor/symfony/http-foundation/UrlHelper.php
deleted file mode 100644
index f114c0a9fb838cd41a248f4996d614a0b605ba9a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/UrlHelper.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation;
-
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * A helper service for manipulating URLs within and outside the request scope.
- *
- * @author Valentin Udaltsov <udaltsov.valentin@gmail.com>
- */
-final class UrlHelper
-{
-    private $requestStack;
-    private $requestContext;
-
-    public function __construct(RequestStack $requestStack, RequestContext $requestContext = null)
-    {
-        $this->requestStack = $requestStack;
-        $this->requestContext = $requestContext;
-    }
-
-    public function getAbsoluteUrl(string $path): string
-    {
-        if (false !== strpos($path, '://') || '//' === substr($path, 0, 2)) {
-            return $path;
-        }
-
-        if (null === $request = $this->requestStack->getMasterRequest()) {
-            return $this->getAbsoluteUrlFromContext($path);
-        }
-
-        if ('#' === $path[0]) {
-            $path = $request->getRequestUri().$path;
-        } elseif ('?' === $path[0]) {
-            $path = $request->getPathInfo().$path;
-        }
-
-        if (!$path || '/' !== $path[0]) {
-            $prefix = $request->getPathInfo();
-            $last = \strlen($prefix) - 1;
-            if ($last !== $pos = strrpos($prefix, '/')) {
-                $prefix = substr($prefix, 0, $pos).'/';
-            }
-
-            return $request->getUriForPath($prefix.$path);
-        }
-
-        return $request->getSchemeAndHttpHost().$path;
-    }
-
-    public function getRelativePath(string $path): string
-    {
-        if (false !== strpos($path, '://') || '//' === substr($path, 0, 2)) {
-            return $path;
-        }
-
-        if (null === $request = $this->requestStack->getMasterRequest()) {
-            return $path;
-        }
-
-        return $request->getRelativeUriForPath($path);
-    }
-
-    private function getAbsoluteUrlFromContext(string $path): string
-    {
-        if (null === $this->requestContext || '' === $host = $this->requestContext->getHost()) {
-            return $path;
-        }
-
-        $scheme = $this->requestContext->getScheme();
-        $port = '';
-
-        if ('http' === $scheme && 80 !== $this->requestContext->getHttpPort()) {
-            $port = ':'.$this->requestContext->getHttpPort();
-        } elseif ('https' === $scheme && 443 !== $this->requestContext->getHttpsPort()) {
-            $port = ':'.$this->requestContext->getHttpsPort();
-        }
-
-        if ('#' === $path[0]) {
-            $queryString = $this->requestContext->getQueryString();
-            $path = $this->requestContext->getPathInfo().($queryString ? '?'.$queryString : '').$path;
-        } elseif ('?' === $path[0]) {
-            $path = $this->requestContext->getPathInfo().$path;
-        }
-
-        if ('/' !== $path[0]) {
-            $path = rtrim($this->requestContext->getBaseUrl(), '/').'/'.$path;
-        }
-
-        return $scheme.'://'.$host.$port.$path;
-    }
-}
diff --git a/vendor/symfony/http-foundation/composer.json b/vendor/symfony/http-foundation/composer.json
deleted file mode 100644
index 79f4b396d0753326565a4ce1d99c6e13992f871b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/composer.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-    "name": "symfony/http-foundation",
-    "type": "library",
-    "description": "Symfony HttpFoundation Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1.3",
-        "symfony/mime": "^4.3|^5.0",
-        "symfony/polyfill-mbstring": "~1.1"
-    },
-    "require-dev": {
-        "predis/predis": "~1.0",
-        "symfony/expression-language": "^3.4|^4.0|^5.0"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" },
-        "exclude-from-classmap": [
-            "/Tests/"
-        ]
-    },
-    "minimum-stability": "dev"
-}
diff --git a/vendor/symfony/http-kernel/Bundle/Bundle.php b/vendor/symfony/http-kernel/Bundle/Bundle.php
deleted file mode 100644
index e8057737ed9afdb7e56d69f69b38bb580a9366be..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Bundle/Bundle.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Bundle;
-
-use Symfony\Component\Console\Application;
-use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\DependencyInjection\ContainerAwareTrait;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
-
-/**
- * An implementation of BundleInterface that adds a few conventions for DependencyInjection extensions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Bundle implements BundleInterface
-{
-    use ContainerAwareTrait;
-
-    protected $name;
-    protected $extension;
-    protected $path;
-    private $namespace;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function boot()
-    {
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function shutdown()
-    {
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * This method can be overridden to register compilation passes,
-     * other extensions, ...
-     */
-    public function build(ContainerBuilder $container)
-    {
-    }
-
-    /**
-     * Returns the bundle's container extension.
-     *
-     * @return ExtensionInterface|null The container extension
-     *
-     * @throws \LogicException
-     */
-    public function getContainerExtension()
-    {
-        if (null === $this->extension) {
-            $extension = $this->createContainerExtension();
-
-            if (null !== $extension) {
-                if (!$extension instanceof ExtensionInterface) {
-                    throw new \LogicException(sprintf('Extension "%s" must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', \get_class($extension)));
-                }
-
-                // check naming convention
-                $basename = preg_replace('/Bundle$/', '', $this->getName());
-                $expectedAlias = Container::underscore($basename);
-
-                if ($expectedAlias != $extension->getAlias()) {
-                    throw new \LogicException(sprintf('Users will expect the alias of the default extension of a bundle to be the underscored version of the bundle name ("%s"). You can override "Bundle::getContainerExtension()" if you want to use "%s" or another alias.', $expectedAlias, $extension->getAlias()));
-                }
-
-                $this->extension = $extension;
-            } else {
-                $this->extension = false;
-            }
-        }
-
-        return $this->extension ?: null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getNamespace()
-    {
-        if (null === $this->namespace) {
-            $this->parseClassName();
-        }
-
-        return $this->namespace;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPath()
-    {
-        if (null === $this->path) {
-            $reflected = new \ReflectionObject($this);
-            $this->path = \dirname($reflected->getFileName());
-        }
-
-        return $this->path;
-    }
-
-    /**
-     * Returns the bundle name (the class short name).
-     */
-    final public function getName(): string
-    {
-        if (null === $this->name) {
-            $this->parseClassName();
-        }
-
-        return $this->name;
-    }
-
-    public function registerCommands(Application $application)
-    {
-    }
-
-    /**
-     * Returns the bundle's container extension class.
-     *
-     * @return string
-     */
-    protected function getContainerExtensionClass()
-    {
-        $basename = preg_replace('/Bundle$/', '', $this->getName());
-
-        return $this->getNamespace().'\\DependencyInjection\\'.$basename.'Extension';
-    }
-
-    /**
-     * Creates the bundle's container extension.
-     *
-     * @return ExtensionInterface|null
-     */
-    protected function createContainerExtension()
-    {
-        return class_exists($class = $this->getContainerExtensionClass()) ? new $class() : null;
-    }
-
-    private function parseClassName()
-    {
-        $pos = strrpos(static::class, '\\');
-        $this->namespace = false === $pos ? '' : substr(static::class, 0, $pos);
-        if (null === $this->name) {
-            $this->name = false === $pos ? static::class : substr(static::class, $pos + 1);
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/Bundle/BundleInterface.php b/vendor/symfony/http-kernel/Bundle/BundleInterface.php
deleted file mode 100644
index 88a95d83329429332284c8e655f1fd6572152d88..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Bundle/BundleInterface.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Bundle;
-
-use Symfony\Component\DependencyInjection\ContainerAwareInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
-
-/**
- * BundleInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface BundleInterface extends ContainerAwareInterface
-{
-    /**
-     * Boots the Bundle.
-     */
-    public function boot();
-
-    /**
-     * Shutdowns the Bundle.
-     */
-    public function shutdown();
-
-    /**
-     * Builds the bundle.
-     *
-     * It is only ever called once when the cache is empty.
-     */
-    public function build(ContainerBuilder $container);
-
-    /**
-     * Returns the container extension that should be implicitly loaded.
-     *
-     * @return ExtensionInterface|null The default extension or null if there is none
-     */
-    public function getContainerExtension();
-
-    /**
-     * Returns the bundle name (the class short name).
-     *
-     * @return string The Bundle name
-     */
-    public function getName();
-
-    /**
-     * Gets the Bundle namespace.
-     *
-     * @return string The Bundle namespace
-     */
-    public function getNamespace();
-
-    /**
-     * Gets the Bundle directory path.
-     *
-     * The path should always be returned as a Unix path (with /).
-     *
-     * @return string The Bundle absolute path
-     */
-    public function getPath();
-}
diff --git a/vendor/symfony/http-kernel/CHANGELOG.md b/vendor/symfony/http-kernel/CHANGELOG.md
deleted file mode 100644
index 08a8cfddd733232ff97086d07ff1e90620c86187..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/CHANGELOG.md
+++ /dev/null
@@ -1,241 +0,0 @@
-CHANGELOG
-=========
-
-4.4.0
------
-
- * The `DebugHandlersListener` class has been marked as `final`
- * Added new Bundle directory convention consistent with standard skeletons
- * Deprecated the second and third argument of `KernelInterface::locateResource`
- * Deprecated the second and third argument of `FileLocator::__construct`
- * Deprecated loading resources from `%kernel.root_dir%/Resources` and `%kernel.root_dir%` as
-   fallback directories. Resources like service definitions are usually loaded relative to the
-   current directory or with a glob pattern. The fallback directories have never been advocated
-   so you likely do not use those in any app based on the SF Standard or Flex edition.
- * Marked all dispatched event classes as `@final`
- * Added `ErrorController` to enable the preview and error rendering mechanism
- * Getting the container from a non-booted kernel is deprecated.
- * Marked the `AjaxDataCollector`, `ConfigDataCollector`, `EventDataCollector`,
-   `ExceptionDataCollector`, `LoggerDataCollector`, `MemoryDataCollector`,
-   `RequestDataCollector` and `TimeDataCollector` classes as `@final`.
- * Marked the `RouterDataCollector::collect()` method as `@final`.
- * The `DataCollectorInterface::collect()` and `Profiler::collect()` methods third parameter signature
-   will be `\Throwable $exception = null` instead of `\Exception $exception = null` in Symfony 5.0.
- * Deprecated methods `ExceptionEvent::get/setException()`, use `get/setThrowable()` instead
- * Deprecated class `ExceptionListener`, use `ErrorListener` instead
-
-4.3.0
------
-
- * renamed `Client` to `HttpKernelBrowser`
- * `KernelInterface` doesn't extend `Serializable` anymore
- * deprecated the `Kernel::serialize()` and `unserialize()` methods
- * increased the priority of `Symfony\Component\HttpKernel\EventListener\AddRequestFormatsListener`
- * made `Symfony\Component\HttpKernel\EventListener\LocaleListener` set the default locale early
- * deprecated `TranslatorListener` in favor of `LocaleAwareListener`
- * added the registration of all `LocaleAwareInterface` implementations into the `LocaleAwareListener`
- * made `FileLinkFormatter` final and not implement `Serializable` anymore
- * the base `DataCollector` doesn't implement `Serializable` anymore, you should
-   store all the serialized state in the data property instead
- * `DumpDataCollector` has been marked as `final`
- * added an event listener to prevent search engines from indexing applications in debug mode.
- * renamed `FilterControllerArgumentsEvent` to `ControllerArgumentsEvent`
- * renamed `FilterControllerEvent` to `ControllerEvent`
- * renamed `FilterResponseEvent` to `ResponseEvent`
- * renamed `GetResponseEvent` to `RequestEvent`
- * renamed `GetResponseForControllerResultEvent` to `ViewEvent`
- * renamed `GetResponseForExceptionEvent` to `ExceptionEvent`
- * renamed `PostResponseEvent` to `TerminateEvent`
- * added `HttpClientKernel` for handling requests with an `HttpClientInterface` instance
- * added `trace_header` and `trace_level` configuration options to `HttpCache`
-
-4.2.0
------
-
- * deprecated `KernelInterface::getRootDir()` and the `kernel.root_dir` parameter
- * deprecated `KernelInterface::getName()` and the `kernel.name` parameter
- * deprecated the first and second constructor argument of `ConfigDataCollector`
- * deprecated `ConfigDataCollector::getApplicationName()`
- * deprecated `ConfigDataCollector::getApplicationVersion()`
-
-4.1.0
------
-
- * added orphaned events support to `EventDataCollector`
- * `ExceptionListener` now logs exceptions at priority `0` (previously logged at `-128`)
- * Added support for using `service::method` to reference controllers, making it consistent with other cases. It is recommended over the `service:action` syntax with a single colon, which will be deprecated in the future.
- * Added the ability to profile individual argument value resolvers via the
-   `Symfony\Component\HttpKernel\Controller\ArgumentResolver\TraceableValueResolver`
-
-4.0.0
------
-
- * removed the `DataCollector::varToString()` method, use `DataCollector::cloneVar()`
-   instead
- * using the `DataCollector::cloneVar()` method requires the VarDumper component
- * removed the `ValueExporter` class
- * removed `ControllerResolverInterface::getArguments()`
- * removed `TraceableControllerResolver::getArguments()`
- * removed `ControllerResolver::getArguments()` and the ability to resolve arguments
- * removed the `argument_resolver` service dependency from the `debug.controller_resolver`
- * removed `LazyLoadingFragmentHandler::addRendererService()`
- * removed `Psr6CacheClearer::addPool()`
- * removed `Extension::addClassesToCompile()` and `Extension::getClassesToCompile()`
- * removed `Kernel::loadClassCache()`, `Kernel::doLoadClassCache()`, `Kernel::setClassCache()`,
-   and `Kernel::getEnvParameters()`
- * support for the `X-Status-Code` when handling exceptions in the `HttpKernel`
-   has been dropped, use the `HttpKernel::allowCustomResponseCode()` method
-   instead
- * removed convention-based commands registration
- * removed the `ChainCacheClearer::add()` method
- * removed the `CacheaWarmerAggregate::add()` and `setWarmers()` methods
- * made `CacheWarmerAggregate` and `ChainCacheClearer` classes final
-
-3.4.0
------
-
- * added a minimalist PSR-3 `Logger` class that writes in `stderr`
- * made kernels implementing `CompilerPassInterface` able to process the container
- * deprecated bundle inheritance
- * added `RebootableInterface` and implemented it in `Kernel`
- * deprecated commands auto registration
- * deprecated `EnvParametersResource`
- * added `Symfony\Component\HttpKernel\Client::catchExceptions()`
- * deprecated the `ChainCacheClearer::add()` method
- * deprecated the `CacheaWarmerAggregate::add()` and `setWarmers()` methods
- * made `CacheWarmerAggregate` and `ChainCacheClearer` classes final
- * added the possibility to reset the profiler to its initial state
- * deprecated data collectors without a `reset()` method
- * deprecated implementing `DebugLoggerInterface` without a `clear()` method
-
-3.3.0
------
-
- * added `kernel.project_dir` and `Kernel::getProjectDir()`
- * deprecated `kernel.root_dir` and `Kernel::getRootDir()`
- * deprecated `Kernel::getEnvParameters()`
- * deprecated the special `SYMFONY__` environment variables
- * added the possibility to change the query string parameter used by `UriSigner`
- * deprecated `LazyLoadingFragmentHandler::addRendererService()`
- * deprecated `Extension::addClassesToCompile()` and `Extension::getClassesToCompile()`
- * deprecated `Psr6CacheClearer::addPool()`
-
-3.2.0
------
-
- * deprecated `DataCollector::varToString()`, use `cloneVar()` instead
- * changed surrogate capability name in `AbstractSurrogate::addSurrogateCapability` to 'symfony'
- * Added `ControllerArgumentValueResolverPass`
-
-3.1.0
------
- * deprecated passing objects as URI attributes to the ESI and SSI renderers
- * deprecated `ControllerResolver::getArguments()`
- * added `Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface`
- * added `Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface` as argument to `HttpKernel`
- * added `Symfony\Component\HttpKernel\Controller\ArgumentResolver`
- * added `Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::getMethod()`
- * added `Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::getRedirect()`
- * added the `kernel.controller_arguments` event, triggered after controller arguments have been resolved
-
-3.0.0
------
-
- * removed `Symfony\Component\HttpKernel\Kernel::init()`
- * removed `Symfony\Component\HttpKernel\Kernel::isClassInActiveBundle()` and `Symfony\Component\HttpKernel\KernelInterface::isClassInActiveBundle()`
- * removed `Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher::setProfiler()`
- * removed `Symfony\Component\HttpKernel\EventListener\FragmentListener::getLocalIpAddresses()`
- * removed `Symfony\Component\HttpKernel\EventListener\LocaleListener::setRequest()`
- * removed `Symfony\Component\HttpKernel\EventListener\RouterListener::setRequest()`
- * removed `Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest()`
- * removed `Symfony\Component\HttpKernel\Fragment\FragmentHandler::setRequest()`
- * removed `Symfony\Component\HttpKernel\HttpCache\Esi::hasSurrogateEsiCapability()`
- * removed `Symfony\Component\HttpKernel\HttpCache\Esi::addSurrogateEsiCapability()`
- * removed `Symfony\Component\HttpKernel\HttpCache\Esi::needsEsiParsing()`
- * removed `Symfony\Component\HttpKernel\HttpCache\HttpCache::getEsi()`
- * removed `Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel`
- * removed `Symfony\Component\HttpKernel\DependencyInjection\RegisterListenersPass`
- * removed `Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener`
- * removed `Symfony\Component\HttpKernel\EventListener\EsiListener`
- * removed `Symfony\Component\HttpKernel\HttpCache\EsiResponseCacheStrategy`
- * removed `Symfony\Component\HttpKernel\HttpCache\EsiResponseCacheStrategyInterface`
- * removed `Symfony\Component\HttpKernel\Log\LoggerInterface`
- * removed `Symfony\Component\HttpKernel\Log\NullLogger`
- * removed `Symfony\Component\HttpKernel\Profiler::import()`
- * removed `Symfony\Component\HttpKernel\Profiler::export()`
-
-2.8.0
------
-
- * deprecated `Profiler::import` and `Profiler::export`
-
-2.7.0
------
-
- * added the HTTP status code to profiles
-
-2.6.0
------
-
- * deprecated `Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener`, use `Symfony\Component\HttpKernel\EventListener\DebugHandlersListener` instead
- * deprecated unused method `Symfony\Component\HttpKernel\Kernel::isClassInActiveBundle` and `Symfony\Component\HttpKernel\KernelInterface::isClassInActiveBundle`
-
-2.5.0
------
-
- * deprecated `Symfony\Component\HttpKernel\DependencyInjection\RegisterListenersPass`, use `Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass` instead
-
-2.4.0
------
-
- * added event listeners for the session
- * added the KernelEvents::FINISH_REQUEST event
-
-2.3.0
------
-
- * [BC BREAK] renamed `Symfony\Component\HttpKernel\EventListener\DeprecationLoggerListener` to `Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener` and changed its constructor
- * deprecated `Symfony\Component\HttpKernel\Debug\ErrorHandler`, `Symfony\Component\HttpKernel\Debug\ExceptionHandler`,
-   `Symfony\Component\HttpKernel\Exception\FatalErrorException` and `Symfony\Component\HttpKernel\Exception\FlattenException`
- * deprecated `Symfony\Component\HttpKernel\Kernel::init()`
- * added the possibility to specify an id an extra attributes to hinclude tags
- * added the collect of data if a controller is a Closure in the Request collector
- * pass exceptions from the ExceptionListener to the logger using the logging context to allow for more
-   detailed messages
-
-2.2.0
------
-
- * [BC BREAK] the path info for sub-request is now always _fragment (or whatever you configured instead of the default)
- * added Symfony\Component\HttpKernel\EventListener\FragmentListener
- * added Symfony\Component\HttpKernel\UriSigner
- * added Symfony\Component\HttpKernel\FragmentRenderer and rendering strategies (in Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface)
- * added Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel
- * added ControllerReference to create reference of Controllers (used in the FragmentRenderer class)
- * [BC BREAK] renamed TimeDataCollector::getTotalTime() to
-   TimeDataCollector::getDuration()
- * updated the MemoryDataCollector to include the memory used in the
-   kernel.terminate event listeners
- * moved the Stopwatch classes to a new component
- * added TraceableControllerResolver
- * added TraceableEventDispatcher (removed ContainerAwareTraceableEventDispatcher)
- * added support for WinCache opcode cache in ConfigDataCollector
-
-2.1.0
------
-
- * [BC BREAK] the charset is now configured via the Kernel::getCharset() method
- * [BC BREAK] the current locale for the user is not stored anymore in the session
- * added the HTTP method to the profiler storage
- * updated all listeners to implement EventSubscriberInterface
- * added TimeDataCollector
- * added ContainerAwareTraceableEventDispatcher
- * moved TraceableEventDispatcherInterface to the EventDispatcher component
- * added RouterListener, LocaleListener, and StreamedResponseListener
- * added CacheClearerInterface (and ChainCacheClearer)
- * added a kernel.terminate event (via TerminableInterface and PostResponseEvent)
- * added a Stopwatch class
- * added WarmableInterface
- * improved extensibility between bundles
- * added profiler storages for Memcache(d), File-based, MongoDB, Redis
- * moved Filesystem class to its own component
diff --git a/vendor/symfony/http-kernel/CacheClearer/CacheClearerInterface.php b/vendor/symfony/http-kernel/CacheClearer/CacheClearerInterface.php
deleted file mode 100644
index 675c584234ef33ceddce196666fa952a0430cf36..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/CacheClearer/CacheClearerInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\CacheClearer;
-
-/**
- * CacheClearerInterface.
- *
- * @author Dustin Dobervich <ddobervich@gmail.com>
- */
-interface CacheClearerInterface
-{
-    /**
-     * Clears any caches necessary.
-     *
-     * @param string $cacheDir The cache directory
-     */
-    public function clear($cacheDir);
-}
diff --git a/vendor/symfony/http-kernel/CacheClearer/ChainCacheClearer.php b/vendor/symfony/http-kernel/CacheClearer/ChainCacheClearer.php
deleted file mode 100644
index 5061a8d1815e3874a341d052974bfd01d7b50af9..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/CacheClearer/ChainCacheClearer.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\CacheClearer;
-
-/**
- * ChainCacheClearer.
- *
- * @author Dustin Dobervich <ddobervich@gmail.com>
- *
- * @final
- */
-class ChainCacheClearer implements CacheClearerInterface
-{
-    private $clearers;
-
-    public function __construct(iterable $clearers = [])
-    {
-        $this->clearers = $clearers;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear($cacheDir)
-    {
-        foreach ($this->clearers as $clearer) {
-            $clearer->clear($cacheDir);
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php b/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php
deleted file mode 100644
index f5670f1b97a40581a027d45c5fda6e06fd56791f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\CacheClearer;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class Psr6CacheClearer implements CacheClearerInterface
-{
-    private $pools = [];
-
-    public function __construct(array $pools = [])
-    {
-        $this->pools = $pools;
-    }
-
-    public function hasPool($name)
-    {
-        return isset($this->pools[$name]);
-    }
-
-    public function getPool($name)
-    {
-        if (!$this->hasPool($name)) {
-            throw new \InvalidArgumentException(sprintf('Cache pool not found: "%s".', $name));
-        }
-
-        return $this->pools[$name];
-    }
-
-    public function clearPool($name)
-    {
-        if (!isset($this->pools[$name])) {
-            throw new \InvalidArgumentException(sprintf('Cache pool not found: "%s".', $name));
-        }
-
-        return $this->pools[$name]->clear();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear($cacheDir)
-    {
-        foreach ($this->pools as $pool) {
-            $pool->clear();
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmer.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmer.php
deleted file mode 100644
index 52dc2ad2c3d83f0ae1ff482237792b90d9c89ce3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmer.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\CacheWarmer;
-
-/**
- * Abstract cache warmer that knows how to write a file to the cache.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class CacheWarmer implements CacheWarmerInterface
-{
-    protected function writeCacheFile($file, $content)
-    {
-        $tmpFile = @tempnam(\dirname($file), basename($file));
-        if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $file)) {
-            @chmod($file, 0666 & ~umask());
-
-            return;
-        }
-
-        throw new \RuntimeException(sprintf('Failed to write cache file "%s".', $file));
-    }
-}
diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php
deleted file mode 100644
index baecfc5d30a73e5354b39af592617d2a0361512a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\CacheWarmer;
-
-/**
- * Aggregates several cache warmers into a single one.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final
- */
-class CacheWarmerAggregate implements CacheWarmerInterface
-{
-    private $warmers;
-    private $debug;
-    private $deprecationLogsFilepath;
-    private $optionalsEnabled = false;
-    private $onlyOptionalsEnabled = false;
-
-    public function __construct(iterable $warmers = [], bool $debug = false, string $deprecationLogsFilepath = null)
-    {
-        $this->warmers = $warmers;
-        $this->debug = $debug;
-        $this->deprecationLogsFilepath = $deprecationLogsFilepath;
-    }
-
-    public function enableOptionalWarmers()
-    {
-        $this->optionalsEnabled = true;
-    }
-
-    public function enableOnlyOptionalWarmers()
-    {
-        $this->onlyOptionalsEnabled = $this->optionalsEnabled = true;
-    }
-
-    /**
-     * Warms up the cache.
-     *
-     * @param string $cacheDir The cache directory
-     */
-    public function warmUp($cacheDir)
-    {
-        if ($collectDeprecations = $this->debug && !\defined('PHPUNIT_COMPOSER_INSTALL')) {
-            $collectedLogs = [];
-            $previousHandler = set_error_handler(function ($type, $message, $file, $line) use (&$collectedLogs, &$previousHandler) {
-                if (\E_USER_DEPRECATED !== $type && \E_DEPRECATED !== $type) {
-                    return $previousHandler ? $previousHandler($type, $message, $file, $line) : false;
-                }
-
-                if (isset($collectedLogs[$message])) {
-                    ++$collectedLogs[$message]['count'];
-
-                    return null;
-                }
-
-                $backtrace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 3);
-                // Clean the trace by removing first frames added by the error handler itself.
-                for ($i = 0; isset($backtrace[$i]); ++$i) {
-                    if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) {
-                        $backtrace = \array_slice($backtrace, 1 + $i);
-                        break;
-                    }
-                }
-
-                $collectedLogs[$message] = [
-                    'type' => $type,
-                    'message' => $message,
-                    'file' => $file,
-                    'line' => $line,
-                    'trace' => $backtrace,
-                    'count' => 1,
-                ];
-
-                return null;
-            });
-        }
-
-        try {
-            foreach ($this->warmers as $warmer) {
-                if (!$this->optionalsEnabled && $warmer->isOptional()) {
-                    continue;
-                }
-                if ($this->onlyOptionalsEnabled && !$warmer->isOptional()) {
-                    continue;
-                }
-
-                $warmer->warmUp($cacheDir);
-            }
-        } finally {
-            if ($collectDeprecations) {
-                restore_error_handler();
-
-                if (file_exists($this->deprecationLogsFilepath)) {
-                    $previousLogs = unserialize(file_get_contents($this->deprecationLogsFilepath));
-                    $collectedLogs = array_merge($previousLogs, $collectedLogs);
-                }
-
-                file_put_contents($this->deprecationLogsFilepath, serialize(array_values($collectedLogs)));
-            }
-        }
-    }
-
-    /**
-     * Checks whether this warmer is optional or not.
-     *
-     * @return bool always false
-     */
-    public function isOptional(): bool
-    {
-        return false;
-    }
-}
diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php
deleted file mode 100644
index 8fece5e95407c0f0564813a182fe63791c874379..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\CacheWarmer;
-
-/**
- * Interface for classes able to warm up the cache.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface CacheWarmerInterface extends WarmableInterface
-{
-    /**
-     * Checks whether this warmer is optional or not.
-     *
-     * Optional warmers can be ignored on certain conditions.
-     *
-     * A warmer should return true if the cache can be
-     * generated incrementally and on-demand.
-     *
-     * @return bool true if the warmer is optional, false otherwise
-     */
-    public function isOptional();
-}
diff --git a/vendor/symfony/http-kernel/CacheWarmer/WarmableInterface.php b/vendor/symfony/http-kernel/CacheWarmer/WarmableInterface.php
deleted file mode 100644
index 25d8ee8f61a8c81a415784c818374216931ac94d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/CacheWarmer/WarmableInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\CacheWarmer;
-
-/**
- * Interface for classes that support warming their cache.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface WarmableInterface
-{
-    /**
-     * Warms up the cache.
-     *
-     * @param string $cacheDir The cache directory
-     */
-    public function warmUp($cacheDir);
-}
diff --git a/vendor/symfony/http-kernel/Client.php b/vendor/symfony/http-kernel/Client.php
deleted file mode 100644
index f0dd66ece8de9208a71e9e846b19749fa94cf193..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Client.php
+++ /dev/null
@@ -1,201 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-use Symfony\Component\BrowserKit\AbstractBrowser;
-use Symfony\Component\BrowserKit\CookieJar;
-use Symfony\Component\BrowserKit\History;
-use Symfony\Component\BrowserKit\Request as DomRequest;
-use Symfony\Component\BrowserKit\Response as DomResponse;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Client simulates a browser and makes requests to an HttpKernel instance.
- *
- * @method Request  getRequest()  A Request instance
- * @method Response getResponse() A Response instance
- *
- * @deprecated since Symfony 4.3, use HttpKernelBrowser instead.
- */
-class Client extends AbstractBrowser
-{
-    protected $kernel;
-    private $catchExceptions = true;
-
-    /**
-     * @param array $server The server parameters (equivalent of $_SERVER)
-     */
-    public function __construct(HttpKernelInterface $kernel, array $server = [], History $history = null, CookieJar $cookieJar = null)
-    {
-        // These class properties must be set before calling the parent constructor, as it may depend on it.
-        $this->kernel = $kernel;
-        $this->followRedirects = false;
-
-        parent::__construct($server, $history, $cookieJar);
-    }
-
-    /**
-     * Sets whether to catch exceptions when the kernel is handling a request.
-     *
-     * @param bool $catchExceptions Whether to catch exceptions
-     */
-    public function catchExceptions($catchExceptions)
-    {
-        $this->catchExceptions = $catchExceptions;
-    }
-
-    /**
-     * Makes a request.
-     *
-     * @return Response A Response instance
-     */
-    protected function doRequest($request)
-    {
-        $response = $this->kernel->handle($request, HttpKernelInterface::MASTER_REQUEST, $this->catchExceptions);
-
-        if ($this->kernel instanceof TerminableInterface) {
-            $this->kernel->terminate($request, $response);
-        }
-
-        return $response;
-    }
-
-    /**
-     * Returns the script to execute when the request must be insulated.
-     *
-     * @return string
-     */
-    protected function getScript($request)
-    {
-        $kernel = var_export(serialize($this->kernel), true);
-        $request = var_export(serialize($request), true);
-
-        $errorReporting = error_reporting();
-
-        $requires = '';
-        foreach (get_declared_classes() as $class) {
-            if (0 === strpos($class, 'ComposerAutoloaderInit')) {
-                $r = new \ReflectionClass($class);
-                $file = \dirname($r->getFileName(), 2).'/autoload.php';
-                if (file_exists($file)) {
-                    $requires .= 'require_once '.var_export($file, true).";\n";
-                }
-            }
-        }
-
-        if (!$requires) {
-            throw new \RuntimeException('Composer autoloader not found.');
-        }
-
-        $code = <<<EOF
-<?php
-
-error_reporting($errorReporting);
-
-$requires
-
-\$kernel = unserialize($kernel);
-\$request = unserialize($request);
-EOF;
-
-        return $code.$this->getHandleScript();
-    }
-
-    protected function getHandleScript()
-    {
-        return <<<'EOF'
-$response = $kernel->handle($request);
-
-if ($kernel instanceof Symfony\Component\HttpKernel\TerminableInterface) {
-    $kernel->terminate($request, $response);
-}
-
-echo serialize($response);
-EOF;
-    }
-
-    /**
-     * Converts the BrowserKit request to a HttpKernel request.
-     *
-     * @return Request A Request instance
-     */
-    protected function filterRequest(DomRequest $request)
-    {
-        $httpRequest = Request::create($request->getUri(), $request->getMethod(), $request->getParameters(), $request->getCookies(), $request->getFiles(), $request->getServer(), $request->getContent());
-
-        foreach ($this->filterFiles($httpRequest->files->all()) as $key => $value) {
-            $httpRequest->files->set($key, $value);
-        }
-
-        return $httpRequest;
-    }
-
-    /**
-     * Filters an array of files.
-     *
-     * This method created test instances of UploadedFile so that the move()
-     * method can be called on those instances.
-     *
-     * If the size of a file is greater than the allowed size (from php.ini) then
-     * an invalid UploadedFile is returned with an error set to UPLOAD_ERR_INI_SIZE.
-     *
-     * @see UploadedFile
-     *
-     * @return array An array with all uploaded files marked as already moved
-     */
-    protected function filterFiles(array $files)
-    {
-        $filtered = [];
-        foreach ($files as $key => $value) {
-            if (\is_array($value)) {
-                $filtered[$key] = $this->filterFiles($value);
-            } elseif ($value instanceof UploadedFile) {
-                if ($value->isValid() && $value->getSize() > UploadedFile::getMaxFilesize()) {
-                    $filtered[$key] = new UploadedFile(
-                        '',
-                        $value->getClientOriginalName(),
-                        $value->getClientMimeType(),
-                        \UPLOAD_ERR_INI_SIZE,
-                        true
-                    );
-                } else {
-                    $filtered[$key] = new UploadedFile(
-                        $value->getPathname(),
-                        $value->getClientOriginalName(),
-                        $value->getClientMimeType(),
-                        $value->getError(),
-                        true
-                    );
-                }
-            }
-        }
-
-        return $filtered;
-    }
-
-    /**
-     * Converts the HttpKernel response to a BrowserKit response.
-     *
-     * @return DomResponse A DomResponse instance
-     */
-    protected function filterResponse($response)
-    {
-        // this is needed to support StreamedResponse
-        ob_start();
-        $response->sendContent();
-        $content = ob_get_clean();
-
-        return new DomResponse($content, $response->getStatusCode(), $response->headers->all());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Config/FileLocator.php b/vendor/symfony/http-kernel/Config/FileLocator.php
deleted file mode 100644
index 5dc82b33dc4d12b7724cbecd1f1d0db8080960a1..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Config/FileLocator.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Config;
-
-use Symfony\Component\Config\FileLocator as BaseFileLocator;
-use Symfony\Component\HttpKernel\KernelInterface;
-
-/**
- * FileLocator uses the KernelInterface to locate resources in bundles.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FileLocator extends BaseFileLocator
-{
-    private $kernel;
-
-    /**
-     * @deprecated since Symfony 4.4
-     */
-    private $path;
-
-    public function __construct(KernelInterface $kernel/*, string $path = null, array $paths = [], bool $triggerDeprecation = true*/)
-    {
-        $this->kernel = $kernel;
-
-        if (2 <= \func_num_args()) {
-            $this->path = func_get_arg(1);
-            $paths = 3 <= \func_num_args() ? func_get_arg(2) : [];
-            if (null !== $this->path) {
-                $paths[] = $this->path;
-            }
-
-            if (4 !== \func_num_args() || func_get_arg(3)) {
-                @trigger_error(sprintf('Passing more than one argument to %s is deprecated since Symfony 4.4 and will be removed in 5.0.', __METHOD__), \E_USER_DEPRECATED);
-            }
-        } else {
-            $paths = [];
-        }
-
-        parent::__construct($paths);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function locate($file, $currentPath = null, $first = true)
-    {
-        if (isset($file[0]) && '@' === $file[0]) {
-            return $this->kernel->locateResource($file, $this->path, $first, false);
-        }
-
-        $locations = parent::locate($file, $currentPath, $first);
-
-        if (isset($file[0]) && !(
-            '/' === $file[0] || '\\' === $file[0]
-            || (\strlen($file) > 3 && ctype_alpha($file[0]) && ':' === $file[1] && ('\\' === $file[2] || '/' === $file[2]))
-            || null !== parse_url($file, \PHP_URL_SCHEME)
-        )) {
-            $deprecation = false;
-
-            // no need to trigger deprecations when the loaded file is given as absolute path
-            foreach ($this->paths as $deprecatedPath) {
-                foreach ((array) $locations as $location) {
-                    if (null !== $currentPath && 0 === strpos($location, $currentPath)) {
-                        return $locations;
-                    }
-
-                    if (0 === strpos($location, $deprecatedPath) && (null === $currentPath || false === strpos($location, $currentPath))) {
-                        $deprecation = sprintf('Loading the file "%s" from the global resource directory "%s" is deprecated since Symfony 4.4 and will be removed in 5.0.', $file, $deprecatedPath);
-                    }
-                }
-            }
-
-            if ($deprecation) {
-                @trigger_error($deprecation, \E_USER_DEPRECATED);
-            }
-        }
-
-        return $locations;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver.php
deleted file mode 100644
index 3504ae614f58e4efe68fc3c751c0262dc45d438e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\SessionValueResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactoryInterface;
-
-/**
- * Responsible for resolving the arguments passed to an action.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-final class ArgumentResolver implements ArgumentResolverInterface
-{
-    private $argumentMetadataFactory;
-
-    /**
-     * @var iterable|ArgumentValueResolverInterface[]
-     */
-    private $argumentValueResolvers;
-
-    public function __construct(ArgumentMetadataFactoryInterface $argumentMetadataFactory = null, iterable $argumentValueResolvers = [])
-    {
-        $this->argumentMetadataFactory = $argumentMetadataFactory ?: new ArgumentMetadataFactory();
-        $this->argumentValueResolvers = $argumentValueResolvers ?: self::getDefaultArgumentValueResolvers();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getArguments(Request $request, $controller): array
-    {
-        $arguments = [];
-
-        foreach ($this->argumentMetadataFactory->createArgumentMetadata($controller) as $metadata) {
-            foreach ($this->argumentValueResolvers as $resolver) {
-                if (!$resolver->supports($request, $metadata)) {
-                    continue;
-                }
-
-                $resolved = $resolver->resolve($request, $metadata);
-
-                $atLeastOne = false;
-                foreach ($resolved as $append) {
-                    $atLeastOne = true;
-                    $arguments[] = $append;
-                }
-
-                if (!$atLeastOne) {
-                    throw new \InvalidArgumentException(sprintf('"%s::resolve()" must yield at least one value.', \get_class($resolver)));
-                }
-
-                // continue to the next controller argument
-                continue 2;
-            }
-
-            $representative = $controller;
-
-            if (\is_array($representative)) {
-                $representative = sprintf('%s::%s()', \get_class($representative[0]), $representative[1]);
-            } elseif (\is_object($representative)) {
-                $representative = \get_class($representative);
-            }
-
-            throw new \RuntimeException(sprintf('Controller "%s" requires that you provide a value for the "$%s" argument. Either the argument is nullable and no null value has been provided, no default value has been provided or because there is a non optional argument after this one.', $representative, $metadata->getName()));
-        }
-
-        return $arguments;
-    }
-
-    public static function getDefaultArgumentValueResolvers(): iterable
-    {
-        return [
-            new RequestAttributeValueResolver(),
-            new RequestValueResolver(),
-            new SessionValueResolver(),
-            new DefaultValueResolver(),
-            new VariadicValueResolver(),
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php
deleted file mode 100644
index 32a0e071d68849928f48cac54bb880197761ee9c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-/**
- * Yields the default value defined in the action signature when no value has been given.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-final class DefaultValueResolver implements ArgumentValueResolverInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function supports(Request $request, ArgumentMetadata $argument): bool
-    {
-        return $argument->hasDefaultValue() || (null !== $argument->getType() && $argument->isNullable() && !$argument->isVariadic());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function resolve(Request $request, ArgumentMetadata $argument): iterable
-    {
-        yield $argument->hasDefaultValue() ? $argument->getDefaultValue() : null;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php
deleted file mode 100644
index d4971cc1a507481c54c5f94c8f8c562c93544e69..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-
-use Psr\Container\ContainerInterface;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-/**
- * Provides an intuitive error message when controller fails because it is not registered as a service.
- *
- * @author Simeon Kolev <simeon.kolev9@gmail.com>
- */
-final class NotTaggedControllerValueResolver implements ArgumentValueResolverInterface
-{
-    private $container;
-
-    public function __construct(ContainerInterface $container)
-    {
-        $this->container = $container;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports(Request $request, ArgumentMetadata $argument): bool
-    {
-        $controller = $request->attributes->get('_controller');
-
-        if (\is_array($controller) && \is_callable($controller, true) && \is_string($controller[0])) {
-            $controller = $controller[0].'::'.$controller[1];
-        } elseif (!\is_string($controller) || '' === $controller) {
-            return false;
-        }
-
-        if ('\\' === $controller[0]) {
-            $controller = ltrim($controller, '\\');
-        }
-
-        if (!$this->container->has($controller) && false !== $i = strrpos($controller, ':')) {
-            $controller = substr($controller, 0, $i).strtolower(substr($controller, $i));
-        }
-
-        return false === $this->container->has($controller);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function resolve(Request $request, ArgumentMetadata $argument): iterable
-    {
-        if (\is_array($controller = $request->attributes->get('_controller'))) {
-            $controller = $controller[0].'::'.$controller[1];
-        }
-
-        if ('\\' === $controller[0]) {
-            $controller = ltrim($controller, '\\');
-        }
-
-        if (!$this->container->has($controller)) {
-            $i = strrpos($controller, ':');
-            $controller = substr($controller, 0, $i).strtolower(substr($controller, $i));
-        }
-
-        $what = sprintf('argument $%s of "%s()"', $argument->getName(), $controller);
-        $message = sprintf('Could not resolve %s, maybe you forgot to register the controller as a service or missed tagging it with the "controller.service_arguments"?', $what);
-
-        throw new RuntimeException($message);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php
deleted file mode 100644
index c62d327b65a2c807d1eabc54d75a870b97968817..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-/**
- * Yields a non-variadic argument's value from the request attributes.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-final class RequestAttributeValueResolver implements ArgumentValueResolverInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function supports(Request $request, ArgumentMetadata $argument): bool
-    {
-        return !$argument->isVariadic() && $request->attributes->has($argument->getName());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function resolve(Request $request, ArgumentMetadata $argument): iterable
-    {
-        yield $request->attributes->get($argument->getName());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php
deleted file mode 100644
index 75cbd97edbbfae9c1fae3d4a35d7917ddbd8929a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-/**
- * Yields the same instance as the request object passed along.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-final class RequestValueResolver implements ArgumentValueResolverInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function supports(Request $request, ArgumentMetadata $argument): bool
-    {
-        return Request::class === $argument->getType() || is_subclass_of($argument->getType(), Request::class);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function resolve(Request $request, ArgumentMetadata $argument): iterable
-    {
-        yield $request;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php
deleted file mode 100644
index 4ffb8c99eb4b5bc987d0a0591ab7819dba91151b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-
-use Psr\Container\ContainerInterface;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-/**
- * Yields a service keyed by _controller and argument name.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-final class ServiceValueResolver implements ArgumentValueResolverInterface
-{
-    private $container;
-
-    public function __construct(ContainerInterface $container)
-    {
-        $this->container = $container;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports(Request $request, ArgumentMetadata $argument): bool
-    {
-        $controller = $request->attributes->get('_controller');
-
-        if (\is_array($controller) && \is_callable($controller, true) && \is_string($controller[0])) {
-            $controller = $controller[0].'::'.$controller[1];
-        } elseif (!\is_string($controller) || '' === $controller) {
-            return false;
-        }
-
-        if ('\\' === $controller[0]) {
-            $controller = ltrim($controller, '\\');
-        }
-
-        if (!$this->container->has($controller) && false !== $i = strrpos($controller, ':')) {
-            $controller = substr($controller, 0, $i).strtolower(substr($controller, $i));
-        }
-
-        return $this->container->has($controller) && $this->container->get($controller)->has($argument->getName());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function resolve(Request $request, ArgumentMetadata $argument): iterable
-    {
-        if (\is_array($controller = $request->attributes->get('_controller'))) {
-            $controller = $controller[0].'::'.$controller[1];
-        }
-
-        if ('\\' === $controller[0]) {
-            $controller = ltrim($controller, '\\');
-        }
-
-        if (!$this->container->has($controller)) {
-            $i = strrpos($controller, ':');
-            $controller = substr($controller, 0, $i).strtolower(substr($controller, $i));
-        }
-
-        try {
-            yield $this->container->get($controller)->get($argument->getName());
-        } catch (RuntimeException $e) {
-            $what = sprintf('argument $%s of "%s()"', $argument->getName(), $controller);
-            $message = preg_replace('/service "\.service_locator\.[^"]++"/', $what, $e->getMessage());
-
-            if ($e->getMessage() === $message) {
-                $message = sprintf('Cannot resolve %s: %s', $what, $message);
-            }
-
-            $r = new \ReflectionProperty($e, 'message');
-            $r->setAccessible(true);
-            $r->setValue($e, $message);
-
-            throw $e;
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php
deleted file mode 100644
index a1e6b431595c3507ed1e192c218d1b12a277d7da..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-/**
- * Yields the Session.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-final class SessionValueResolver implements ArgumentValueResolverInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function supports(Request $request, ArgumentMetadata $argument): bool
-    {
-        if (!$request->hasSession()) {
-            return false;
-        }
-
-        $type = $argument->getType();
-        if (SessionInterface::class !== $type && !is_subclass_of($type, SessionInterface::class)) {
-            return false;
-        }
-
-        return $request->getSession() instanceof $type;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function resolve(Request $request, ArgumentMetadata $argument): iterable
-    {
-        yield $request->getSession();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/TraceableValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/TraceableValueResolver.php
deleted file mode 100644
index bde3c90c1a634e0a8f3a90abe39d014db63aff61..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/TraceableValueResolver.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-/**
- * Provides timing information via the stopwatch.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-final class TraceableValueResolver implements ArgumentValueResolverInterface
-{
-    private $inner;
-    private $stopwatch;
-
-    public function __construct(ArgumentValueResolverInterface $inner, Stopwatch $stopwatch)
-    {
-        $this->inner = $inner;
-        $this->stopwatch = $stopwatch;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports(Request $request, ArgumentMetadata $argument): bool
-    {
-        $method = \get_class($this->inner).'::'.__FUNCTION__;
-        $this->stopwatch->start($method, 'controller.argument_value_resolver');
-
-        $return = $this->inner->supports($request, $argument);
-
-        $this->stopwatch->stop($method);
-
-        return $return;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function resolve(Request $request, ArgumentMetadata $argument): iterable
-    {
-        $method = \get_class($this->inner).'::'.__FUNCTION__;
-        $this->stopwatch->start($method, 'controller.argument_value_resolver');
-
-        yield from $this->inner->resolve($request, $argument);
-
-        $this->stopwatch->stop($method);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php
deleted file mode 100644
index ed61420e67791aa6aa07ac968060124dfeeaf35e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-/**
- * Yields a variadic argument's values from the request attributes.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-final class VariadicValueResolver implements ArgumentValueResolverInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function supports(Request $request, ArgumentMetadata $argument): bool
-    {
-        return $argument->isVariadic() && $request->attributes->has($argument->getName());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function resolve(Request $request, ArgumentMetadata $argument): iterable
-    {
-        $values = $request->attributes->get($argument->getName());
-
-        if (!\is_array($values)) {
-            throw new \InvalidArgumentException(sprintf('The action argument "...$%1$s" is required to be an array, the request attribute "%1$s" contains a type of "%2$s" instead.', $argument->getName(), \gettype($values)));
-        }
-
-        yield from $values;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolverInterface.php b/vendor/symfony/http-kernel/Controller/ArgumentResolverInterface.php
deleted file mode 100644
index ba97775a90797860e61c4c3990edf6fd76fc05cd..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolverInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * An ArgumentResolverInterface instance knows how to determine the
- * arguments for a specific action.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ArgumentResolverInterface
-{
-    /**
-     * Returns the arguments to pass to the controller.
-     *
-     * @param callable $controller
-     *
-     * @return array An array of arguments to pass to the controller
-     *
-     * @throws \RuntimeException When no value could be provided for a required argument
-     */
-    public function getArguments(Request $request, $controller);
-}
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php b/vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php
deleted file mode 100644
index 1317707b1d5e7c6d587671948843e70d1c64277e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-/**
- * Responsible for resolving the value of an argument based on its metadata.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-interface ArgumentValueResolverInterface
-{
-    /**
-     * Whether this resolver can resolve the value for the given ArgumentMetadata.
-     *
-     * @return bool
-     */
-    public function supports(Request $request, ArgumentMetadata $argument);
-
-    /**
-     * Returns the possible value(s).
-     *
-     * @return iterable
-     */
-    public function resolve(Request $request, ArgumentMetadata $argument);
-}
diff --git a/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php b/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php
deleted file mode 100644
index 7eb028de1f198b0e579b39e48bbb097bfe56d424..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller;
-
-use Psr\Container\ContainerInterface;
-use Psr\Log\LoggerInterface;
-use Symfony\Component\DependencyInjection\Container;
-
-/**
- * A controller resolver searching for a controller in a psr-11 container when using the "service:method" notation.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- */
-class ContainerControllerResolver extends ControllerResolver
-{
-    protected $container;
-
-    public function __construct(ContainerInterface $container, LoggerInterface $logger = null)
-    {
-        $this->container = $container;
-
-        parent::__construct($logger);
-    }
-
-    protected function createController($controller)
-    {
-        if (1 === substr_count($controller, ':')) {
-            $controller = str_replace(':', '::', $controller);
-            // TODO deprecate this in 5.1
-        }
-
-        return parent::createController($controller);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function instantiateController($class)
-    {
-        $class = ltrim($class, '\\');
-
-        if ($this->container->has($class)) {
-            return $this->container->get($class);
-        }
-
-        try {
-            return parent::instantiateController($class);
-        } catch (\Error $e) {
-        }
-
-        $this->throwExceptionIfControllerWasRemoved($class, $e);
-
-        if ($e instanceof \ArgumentCountError) {
-            throw new \InvalidArgumentException(sprintf('Controller "%s" has required constructor arguments and does not exist in the container. Did you forget to define the controller as a service?', $class), 0, $e);
-        }
-
-        throw new \InvalidArgumentException(sprintf('Controller "%s" does neither exist as service nor as class.', $class), 0, $e);
-    }
-
-    private function throwExceptionIfControllerWasRemoved(string $controller, \Throwable $previous)
-    {
-        if ($this->container instanceof Container && isset($this->container->getRemovedIds()[$controller])) {
-            throw new \InvalidArgumentException(sprintf('Controller "%s" cannot be fetched from the container because it is private. Did you forget to tag the service with "controller.service_arguments"?', $controller), 0, $previous);
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ControllerReference.php b/vendor/symfony/http-kernel/Controller/ControllerReference.php
deleted file mode 100644
index b4fdadd21e122826dbbf79fcae83ac73f3c72882..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ControllerReference.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller;
-
-use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface;
-
-/**
- * Acts as a marker and a data holder for a Controller.
- *
- * Some methods in Symfony accept both a URI (as a string) or a controller as
- * an argument. In the latter case, instead of passing an array representing
- * the controller, you can use an instance of this class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @see FragmentRendererInterface
- */
-class ControllerReference
-{
-    public $controller;
-    public $attributes = [];
-    public $query = [];
-
-    /**
-     * @param string $controller The controller name
-     * @param array  $attributes An array of parameters to add to the Request attributes
-     * @param array  $query      An array of parameters to add to the Request query string
-     */
-    public function __construct(string $controller, array $attributes = [], array $query = [])
-    {
-        $this->controller = $controller;
-        $this->attributes = $attributes;
-        $this->query = $query;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ControllerResolver.php b/vendor/symfony/http-kernel/Controller/ControllerResolver.php
deleted file mode 100644
index 44f34d8ee8359f2241504d1ef387f970862a4cc4..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ControllerResolver.php
+++ /dev/null
@@ -1,224 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * This implementation uses the '_controller' request attribute to determine
- * the controller to execute.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class ControllerResolver implements ControllerResolverInterface
-{
-    private $logger;
-
-    public function __construct(LoggerInterface $logger = null)
-    {
-        $this->logger = $logger;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getController(Request $request)
-    {
-        if (!$controller = $request->attributes->get('_controller')) {
-            if (null !== $this->logger) {
-                $this->logger->warning('Unable to look for the controller as the "_controller" parameter is missing.');
-            }
-
-            return false;
-        }
-
-        if (\is_array($controller)) {
-            if (isset($controller[0]) && \is_string($controller[0]) && isset($controller[1])) {
-                try {
-                    $controller[0] = $this->instantiateController($controller[0]);
-                } catch (\Error | \LogicException $e) {
-                    try {
-                        // We cannot just check is_callable but have to use reflection because a non-static method
-                        // can still be called statically in PHP but we don't want that. This is deprecated in PHP 7, so we
-                        // could simplify this with PHP 8.
-                        if ((new \ReflectionMethod($controller[0], $controller[1]))->isStatic()) {
-                            return $controller;
-                        }
-                    } catch (\ReflectionException $reflectionException) {
-                        throw $e;
-                    }
-
-                    throw $e;
-                }
-            }
-
-            if (!\is_callable($controller)) {
-                throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$this->getControllerError($controller));
-            }
-
-            return $controller;
-        }
-
-        if (\is_object($controller)) {
-            if (!\is_callable($controller)) {
-                throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: '.$this->getControllerError($controller), $request->getPathInfo()));
-            }
-
-            return $controller;
-        }
-
-        if (\function_exists($controller)) {
-            return $controller;
-        }
-
-        try {
-            $callable = $this->createController($controller);
-        } catch (\InvalidArgumentException $e) {
-            throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$e->getMessage(), 0, $e);
-        }
-
-        if (!\is_callable($callable)) {
-            throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: '.$this->getControllerError($callable), $request->getPathInfo()));
-        }
-
-        return $callable;
-    }
-
-    /**
-     * Returns a callable for the given controller.
-     *
-     * @param string $controller A Controller string
-     *
-     * @return callable A PHP callable
-     *
-     * @throws \InvalidArgumentException When the controller cannot be created
-     */
-    protected function createController($controller)
-    {
-        if (false === strpos($controller, '::')) {
-            $controller = $this->instantiateController($controller);
-
-            if (!\is_callable($controller)) {
-                throw new \InvalidArgumentException($this->getControllerError($controller));
-            }
-
-            return $controller;
-        }
-
-        list($class, $method) = explode('::', $controller, 2);
-
-        try {
-            $controller = [$this->instantiateController($class), $method];
-        } catch (\Error | \LogicException $e) {
-            try {
-                if ((new \ReflectionMethod($class, $method))->isStatic()) {
-                    return $class.'::'.$method;
-                }
-            } catch (\ReflectionException $reflectionException) {
-                throw $e;
-            }
-
-            throw $e;
-        }
-
-        if (!\is_callable($controller)) {
-            throw new \InvalidArgumentException($this->getControllerError($controller));
-        }
-
-        return $controller;
-    }
-
-    /**
-     * Returns an instantiated controller.
-     *
-     * @param string $class A class name
-     *
-     * @return object
-     */
-    protected function instantiateController($class)
-    {
-        return new $class();
-    }
-
-    private function getControllerError($callable): string
-    {
-        if (\is_string($callable)) {
-            if (false !== strpos($callable, '::')) {
-                $callable = explode('::', $callable, 2);
-            } else {
-                return sprintf('Function "%s" does not exist.', $callable);
-            }
-        }
-
-        if (\is_object($callable)) {
-            $availableMethods = $this->getClassMethodsWithoutMagicMethods($callable);
-            $alternativeMsg = $availableMethods ? sprintf(' or use one of the available methods: "%s"', implode('", "', $availableMethods)) : '';
-
-            return sprintf('Controller class "%s" cannot be called without a method name. You need to implement "__invoke"%s.', \get_class($callable), $alternativeMsg);
-        }
-
-        if (!\is_array($callable)) {
-            return sprintf('Invalid type for controller given, expected string, array or object, got "%s".', \gettype($callable));
-        }
-
-        if (!isset($callable[0]) || !isset($callable[1]) || 2 !== \count($callable)) {
-            return 'Invalid array callable, expected [controller, method].';
-        }
-
-        list($controller, $method) = $callable;
-
-        if (\is_string($controller) && !class_exists($controller)) {
-            return sprintf('Class "%s" does not exist.', $controller);
-        }
-
-        $className = \is_object($controller) ? \get_class($controller) : $controller;
-
-        if (method_exists($controller, $method)) {
-            return sprintf('Method "%s" on class "%s" should be public and non-abstract.', $method, $className);
-        }
-
-        $collection = $this->getClassMethodsWithoutMagicMethods($controller);
-
-        $alternatives = [];
-
-        foreach ($collection as $item) {
-            $lev = levenshtein($method, $item);
-
-            if ($lev <= \strlen($method) / 3 || false !== strpos($item, $method)) {
-                $alternatives[] = $item;
-            }
-        }
-
-        asort($alternatives);
-
-        $message = sprintf('Expected method "%s" on class "%s"', $method, $className);
-
-        if (\count($alternatives) > 0) {
-            $message .= sprintf(', did you mean "%s"?', implode('", "', $alternatives));
-        } else {
-            $message .= sprintf('. Available methods: "%s".', implode('", "', $collection));
-        }
-
-        return $message;
-    }
-
-    private function getClassMethodsWithoutMagicMethods($classOrObject): array
-    {
-        $methods = get_class_methods($classOrObject);
-
-        return array_filter($methods, function (string $method) {
-            return 0 !== strncmp($method, '__', 2);
-        });
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ControllerResolverInterface.php b/vendor/symfony/http-kernel/Controller/ControllerResolverInterface.php
deleted file mode 100644
index 8b70a88f63dc8e8f4f650d0466f00da0987090a1..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ControllerResolverInterface.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * A ControllerResolverInterface implementation knows how to determine the
- * controller to execute based on a Request object.
- *
- * A Controller can be any valid PHP callable.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ControllerResolverInterface
-{
-    /**
-     * Returns the Controller instance associated with a Request.
-     *
-     * As several resolvers can exist for a single application, a resolver must
-     * return false when it is not able to determine the controller.
-     *
-     * The resolver must only throw an exception when it should be able to load a
-     * controller but cannot because of some errors made by the developer.
-     *
-     * @return callable|false A PHP callable representing the Controller,
-     *                        or false if this resolver is not able to determine the controller
-     *
-     * @throws \LogicException If a controller was found based on the request but it is not callable
-     */
-    public function getController(Request $request);
-}
diff --git a/vendor/symfony/http-kernel/Controller/ErrorController.php b/vendor/symfony/http-kernel/Controller/ErrorController.php
deleted file mode 100644
index b6c440103ffd340e76132ed3205a5d7db4a15aeb..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/ErrorController.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller;
-
-use Symfony\Component\ErrorHandler\ErrorRenderer\ErrorRendererInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Exception\HttpException;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * Renders error or exception pages from a given FlattenException.
- *
- * @author Yonel Ceruto <yonelceruto@gmail.com>
- * @author Matthias Pigulla <mp@webfactory.de>
- */
-class ErrorController
-{
-    private $kernel;
-    private $controller;
-    private $errorRenderer;
-
-    public function __construct(HttpKernelInterface $kernel, $controller, ErrorRendererInterface $errorRenderer)
-    {
-        $this->kernel = $kernel;
-        $this->controller = $controller;
-        $this->errorRenderer = $errorRenderer;
-    }
-
-    public function __invoke(\Throwable $exception): Response
-    {
-        $exception = $this->errorRenderer->render($exception);
-
-        return new Response($exception->getAsString(), $exception->getStatusCode(), $exception->getHeaders());
-    }
-
-    public function preview(Request $request, int $code): Response
-    {
-        /*
-         * This Request mimics the parameters set by
-         * \Symfony\Component\HttpKernel\EventListener\ErrorListener::duplicateRequest, with
-         * the additional "showException" flag.
-         */
-        $subRequest = $request->duplicate(null, null, [
-            '_controller' => $this->controller,
-            'exception' => new HttpException($code, 'This is a sample exception.'),
-            'logger' => null,
-            'showException' => false,
-        ]);
-
-        return $this->kernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/TraceableArgumentResolver.php b/vendor/symfony/http-kernel/Controller/TraceableArgumentResolver.php
deleted file mode 100644
index 39848127b76cfe2d32052118aaf3d0bbb043f65c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/TraceableArgumentResolver.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TraceableArgumentResolver implements ArgumentResolverInterface
-{
-    private $resolver;
-    private $stopwatch;
-
-    public function __construct(ArgumentResolverInterface $resolver, Stopwatch $stopwatch)
-    {
-        $this->resolver = $resolver;
-        $this->stopwatch = $stopwatch;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getArguments(Request $request, $controller)
-    {
-        $e = $this->stopwatch->start('controller.get_arguments');
-
-        $ret = $this->resolver->getArguments($request, $controller);
-
-        $e->stop();
-
-        return $ret;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/TraceableControllerResolver.php b/vendor/symfony/http-kernel/Controller/TraceableControllerResolver.php
deleted file mode 100644
index bf6b6aa1f2f8cb598832b2c61b85313b3c80970c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Controller/TraceableControllerResolver.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Controller;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TraceableControllerResolver implements ControllerResolverInterface
-{
-    private $resolver;
-    private $stopwatch;
-
-    public function __construct(ControllerResolverInterface $resolver, Stopwatch $stopwatch)
-    {
-        $this->resolver = $resolver;
-        $this->stopwatch = $stopwatch;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getController(Request $request)
-    {
-        $e = $this->stopwatch->start('controller.get_callable');
-
-        $ret = $this->resolver->getController($request);
-
-        $e->stop();
-
-        return $ret;
-    }
-}
diff --git a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php
deleted file mode 100644
index 6fc7e703447f0c6118904ff654519ffa4ab63fae..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\ControllerMetadata;
-
-/**
- * Responsible for storing metadata of an argument.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-class ArgumentMetadata
-{
-    private $name;
-    private $type;
-    private $isVariadic;
-    private $hasDefaultValue;
-    private $defaultValue;
-    private $isNullable;
-
-    public function __construct(string $name, ?string $type, bool $isVariadic, bool $hasDefaultValue, $defaultValue, bool $isNullable = false)
-    {
-        $this->name = $name;
-        $this->type = $type;
-        $this->isVariadic = $isVariadic;
-        $this->hasDefaultValue = $hasDefaultValue;
-        $this->defaultValue = $defaultValue;
-        $this->isNullable = $isNullable || null === $type || ($hasDefaultValue && null === $defaultValue);
-    }
-
-    /**
-     * Returns the name as given in PHP, $foo would yield "foo".
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Returns the type of the argument.
-     *
-     * The type is the PHP class in 5.5+ and additionally the basic type in PHP 7.0+.
-     *
-     * @return string|null
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * Returns whether the argument is defined as "...$variadic".
-     *
-     * @return bool
-     */
-    public function isVariadic()
-    {
-        return $this->isVariadic;
-    }
-
-    /**
-     * Returns whether the argument has a default value.
-     *
-     * Implies whether an argument is optional.
-     *
-     * @return bool
-     */
-    public function hasDefaultValue()
-    {
-        return $this->hasDefaultValue;
-    }
-
-    /**
-     * Returns whether the argument accepts null values.
-     *
-     * @return bool
-     */
-    public function isNullable()
-    {
-        return $this->isNullable;
-    }
-
-    /**
-     * Returns the default value of the argument.
-     *
-     * @throws \LogicException if no default value is present; {@see self::hasDefaultValue()}
-     *
-     * @return mixed
-     */
-    public function getDefaultValue()
-    {
-        if (!$this->hasDefaultValue) {
-            throw new \LogicException(sprintf('Argument $%s does not have a default value. Use "%s::hasDefaultValue()" to avoid this exception.', $this->name, __CLASS__));
-        }
-
-        return $this->defaultValue;
-    }
-}
diff --git a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php
deleted file mode 100644
index 05a68229a331a3226ec14ef1fa5b50c2438382c4..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\ControllerMetadata;
-
-/**
- * Builds {@see ArgumentMetadata} objects based on the given Controller.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-final class ArgumentMetadataFactory implements ArgumentMetadataFactoryInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function createArgumentMetadata($controller): array
-    {
-        $arguments = [];
-
-        if (\is_array($controller)) {
-            $reflection = new \ReflectionMethod($controller[0], $controller[1]);
-        } elseif (\is_object($controller) && !$controller instanceof \Closure) {
-            $reflection = (new \ReflectionObject($controller))->getMethod('__invoke');
-        } else {
-            $reflection = new \ReflectionFunction($controller);
-        }
-
-        foreach ($reflection->getParameters() as $param) {
-            $arguments[] = new ArgumentMetadata($param->getName(), $this->getType($param, $reflection), $param->isVariadic(), $param->isDefaultValueAvailable(), $param->isDefaultValueAvailable() ? $param->getDefaultValue() : null, $param->allowsNull());
-        }
-
-        return $arguments;
-    }
-
-    /**
-     * Returns an associated type to the given parameter if available.
-     */
-    private function getType(\ReflectionParameter $parameter, \ReflectionFunctionAbstract $function): ?string
-    {
-        if (!$type = $parameter->getType()) {
-            return null;
-        }
-        $name = $type instanceof \ReflectionNamedType ? $type->getName() : (string) $type;
-
-        if ($function instanceof \ReflectionMethod) {
-            $lcName = strtolower($name);
-            switch ($lcName) {
-                case 'self':
-                    return $function->getDeclaringClass()->name;
-                case 'parent':
-                    return ($parent = $function->getDeclaringClass()->getParentClass()) ? $parent->name : null;
-            }
-        }
-
-        return $name;
-    }
-}
diff --git a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactoryInterface.php b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactoryInterface.php
deleted file mode 100644
index 6ea179d783ef038347b3c47b3443564c3dbd430d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactoryInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\ControllerMetadata;
-
-/**
- * Builds method argument data.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-interface ArgumentMetadataFactoryInterface
-{
-    /**
-     * @param mixed $controller The controller to resolve the arguments for
-     *
-     * @return ArgumentMetadata[]
-     */
-    public function createArgumentMetadata($controller);
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php b/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php
deleted file mode 100644
index 356ce227e899308a3ce1b0ae7722e529c73c04d7..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * AjaxDataCollector.
- *
- * @author Bart van den Burg <bart@burgov.nl>
- *
- * @final since Symfony 4.4
- */
-class AjaxDataCollector extends DataCollector
-{
-    /**
-     * {@inheritdoc}
-     *
-     * @param \Throwable|null $exception
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
-    {
-        // all collecting is done client side
-    }
-
-    public function reset()
-    {
-        // all collecting is done client side
-    }
-
-    public function getName()
-    {
-        return 'ajax';
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php b/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php
deleted file mode 100644
index f005f1d9705c404be62f916854b0af56f1b9d12a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php
+++ /dev/null
@@ -1,359 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Kernel;
-use Symfony\Component\HttpKernel\KernelInterface;
-use Symfony\Component\VarDumper\Caster\ClassStub;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.4
- */
-class ConfigDataCollector extends DataCollector implements LateDataCollectorInterface
-{
-    /**
-     * @var KernelInterface
-     */
-    private $kernel;
-    private $name;
-    private $version;
-
-    public function __construct(string $name = null, string $version = null)
-    {
-        if (1 <= \func_num_args()) {
-            @trigger_error(sprintf('The "$name" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
-        }
-        if (2 <= \func_num_args()) {
-            @trigger_error(sprintf('The "$version" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
-        }
-
-        $this->name = $name;
-        $this->version = $version;
-    }
-
-    /**
-     * Sets the Kernel associated with this Request.
-     */
-    public function setKernel(KernelInterface $kernel = null)
-    {
-        $this->kernel = $kernel;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param \Throwable|null $exception
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
-    {
-        $this->data = [
-            'app_name' => $this->name,
-            'app_version' => $this->version,
-            'token' => $response->headers->get('X-Debug-Token'),
-            'symfony_version' => Kernel::VERSION,
-            'symfony_state' => 'unknown',
-            'env' => isset($this->kernel) ? $this->kernel->getEnvironment() : 'n/a',
-            'debug' => isset($this->kernel) ? $this->kernel->isDebug() : 'n/a',
-            'php_version' => \PHP_VERSION,
-            'php_architecture' => \PHP_INT_SIZE * 8,
-            'php_intl_locale' => class_exists('Locale', false) && \Locale::getDefault() ? \Locale::getDefault() : 'n/a',
-            'php_timezone' => date_default_timezone_get(),
-            'xdebug_enabled' => \extension_loaded('xdebug'),
-            'apcu_enabled' => \extension_loaded('apcu') && filter_var(ini_get('apc.enabled'), \FILTER_VALIDATE_BOOLEAN),
-            'zend_opcache_enabled' => \extension_loaded('Zend OPcache') && filter_var(ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN),
-            'bundles' => [],
-            'sapi_name' => \PHP_SAPI,
-        ];
-
-        if (isset($this->kernel)) {
-            foreach ($this->kernel->getBundles() as $name => $bundle) {
-                $this->data['bundles'][$name] = new ClassStub(\get_class($bundle));
-            }
-
-            $this->data['symfony_state'] = $this->determineSymfonyState();
-            $this->data['symfony_minor_version'] = sprintf('%s.%s', Kernel::MAJOR_VERSION, Kernel::MINOR_VERSION);
-            $this->data['symfony_lts'] = 4 === Kernel::MINOR_VERSION;
-            $eom = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_MAINTENANCE);
-            $eol = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_LIFE);
-            $this->data['symfony_eom'] = $eom->format('F Y');
-            $this->data['symfony_eol'] = $eol->format('F Y');
-        }
-
-        if (preg_match('~^(\d+(?:\.\d+)*)(.+)?$~', $this->data['php_version'], $matches) && isset($matches[2])) {
-            $this->data['php_version'] = $matches[1];
-            $this->data['php_version_extra'] = $matches[2];
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reset()
-    {
-        $this->data = [];
-    }
-
-    public function lateCollect()
-    {
-        $this->data = $this->cloneVar($this->data);
-    }
-
-    /**
-     * @deprecated since Symfony 4.2
-     */
-    public function getApplicationName()
-    {
-        @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
-
-        return $this->data['app_name'];
-    }
-
-    /**
-     * @deprecated since Symfony 4.2
-     */
-    public function getApplicationVersion()
-    {
-        @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
-
-        return $this->data['app_version'];
-    }
-
-    /**
-     * Gets the token.
-     *
-     * @return string|null The token
-     */
-    public function getToken()
-    {
-        return $this->data['token'];
-    }
-
-    /**
-     * Gets the Symfony version.
-     *
-     * @return string The Symfony version
-     */
-    public function getSymfonyVersion()
-    {
-        return $this->data['symfony_version'];
-    }
-
-    /**
-     * Returns the state of the current Symfony release.
-     *
-     * @return string One of: unknown, dev, stable, eom, eol
-     */
-    public function getSymfonyState()
-    {
-        return $this->data['symfony_state'];
-    }
-
-    /**
-     * Returns the minor Symfony version used (without patch numbers of extra
-     * suffix like "RC", "beta", etc.).
-     *
-     * @return string
-     */
-    public function getSymfonyMinorVersion()
-    {
-        return $this->data['symfony_minor_version'];
-    }
-
-    /**
-     * Returns if the current Symfony version is a Long-Term Support one.
-     */
-    public function isSymfonyLts(): bool
-    {
-        return $this->data['symfony_lts'];
-    }
-
-    /**
-     * Returns the human redable date when this Symfony version ends its
-     * maintenance period.
-     *
-     * @return string
-     */
-    public function getSymfonyEom()
-    {
-        return $this->data['symfony_eom'];
-    }
-
-    /**
-     * Returns the human redable date when this Symfony version reaches its
-     * "end of life" and won't receive bugs or security fixes.
-     *
-     * @return string
-     */
-    public function getSymfonyEol()
-    {
-        return $this->data['symfony_eol'];
-    }
-
-    /**
-     * Gets the PHP version.
-     *
-     * @return string The PHP version
-     */
-    public function getPhpVersion()
-    {
-        return $this->data['php_version'];
-    }
-
-    /**
-     * Gets the PHP version extra part.
-     *
-     * @return string|null The extra part
-     */
-    public function getPhpVersionExtra()
-    {
-        return isset($this->data['php_version_extra']) ? $this->data['php_version_extra'] : null;
-    }
-
-    /**
-     * @return int The PHP architecture as number of bits (e.g. 32 or 64)
-     */
-    public function getPhpArchitecture()
-    {
-        return $this->data['php_architecture'];
-    }
-
-    /**
-     * @return string
-     */
-    public function getPhpIntlLocale()
-    {
-        return $this->data['php_intl_locale'];
-    }
-
-    /**
-     * @return string
-     */
-    public function getPhpTimezone()
-    {
-        return $this->data['php_timezone'];
-    }
-
-    /**
-     * Gets the application name.
-     *
-     * @return string The application name
-     *
-     * @deprecated since Symfony 4.2
-     */
-    public function getAppName()
-    {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
-
-        return 'n/a';
-    }
-
-    /**
-     * Gets the environment.
-     *
-     * @return string The environment
-     */
-    public function getEnv()
-    {
-        return $this->data['env'];
-    }
-
-    /**
-     * Returns true if the debug is enabled.
-     *
-     * @return bool true if debug is enabled, false otherwise
-     */
-    public function isDebug()
-    {
-        return $this->data['debug'];
-    }
-
-    /**
-     * Returns true if the XDebug is enabled.
-     *
-     * @return bool true if XDebug is enabled, false otherwise
-     */
-    public function hasXDebug()
-    {
-        return $this->data['xdebug_enabled'];
-    }
-
-    /**
-     * Returns true if APCu is enabled.
-     *
-     * @return bool true if APCu is enabled, false otherwise
-     */
-    public function hasApcu()
-    {
-        return $this->data['apcu_enabled'];
-    }
-
-    /**
-     * Returns true if Zend OPcache is enabled.
-     *
-     * @return bool true if Zend OPcache is enabled, false otherwise
-     */
-    public function hasZendOpcache()
-    {
-        return $this->data['zend_opcache_enabled'];
-    }
-
-    public function getBundles()
-    {
-        return $this->data['bundles'];
-    }
-
-    /**
-     * Gets the PHP SAPI name.
-     *
-     * @return string The environment
-     */
-    public function getSapiName()
-    {
-        return $this->data['sapi_name'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'config';
-    }
-
-    /**
-     * Tries to retrieve information about the current Symfony version.
-     *
-     * @return string One of: dev, stable, eom, eol
-     */
-    private function determineSymfonyState(): string
-    {
-        $now = new \DateTime();
-        $eom = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_MAINTENANCE)->modify('last day of this month');
-        $eol = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_LIFE)->modify('last day of this month');
-
-        if ($now > $eol) {
-            $versionState = 'eol';
-        } elseif ($now > $eom) {
-            $versionState = 'eom';
-        } elseif ('' !== Kernel::EXTRA_VERSION) {
-            $versionState = 'dev';
-        } else {
-            $versionState = 'stable';
-        }
-
-        return $versionState;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/DataCollector.php b/vendor/symfony/http-kernel/DataCollector/DataCollector.php
deleted file mode 100644
index 832a5d9ebfd759351f3c148e6879980a6d7fe9e4..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/DataCollector.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\VarDumper\Caster\CutStub;
-use Symfony\Component\VarDumper\Caster\ReflectionCaster;
-use Symfony\Component\VarDumper\Cloner\ClonerInterface;
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Cloner\Stub;
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-
-/**
- * DataCollector.
- *
- * Children of this class must store the collected data in the data property.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bernhard Schussek <bschussek@symfony.com>
- */
-abstract class DataCollector implements DataCollectorInterface
-{
-    /**
-     * @var array|Data
-     */
-    protected $data = [];
-
-    /**
-     * @var ClonerInterface
-     */
-    private $cloner;
-
-    /**
-     * @deprecated since Symfony 4.3, store all the serialized state in the data property instead
-     */
-    public function serialize()
-    {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), \E_USER_DEPRECATED);
-
-        $trace = debug_backtrace(\DEBUG_BACKTRACE_PROVIDE_OBJECT, 2);
-        $isCalledFromOverridingMethod = isset($trace[1]['function'], $trace[1]['object']) && 'serialize' === $trace[1]['function'] && $this === $trace[1]['object'];
-
-        return $isCalledFromOverridingMethod ? $this->data : serialize($this->data);
-    }
-
-    /**
-     * @deprecated since Symfony 4.3, store all the serialized state in the data property instead
-     */
-    public function unserialize($data)
-    {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), \E_USER_DEPRECATED);
-
-        $this->data = \is_array($data) ? $data : unserialize($data);
-    }
-
-    /**
-     * Converts the variable into a serializable Data instance.
-     *
-     * This array can be displayed in the template using
-     * the VarDumper component.
-     *
-     * @param mixed $var
-     *
-     * @return Data
-     */
-    protected function cloneVar($var)
-    {
-        if ($var instanceof Data) {
-            return $var;
-        }
-        if (null === $this->cloner) {
-            $this->cloner = new VarCloner();
-            $this->cloner->setMaxItems(-1);
-            $this->cloner->addCasters($this->getCasters());
-        }
-
-        return $this->cloner->cloneVar($var);
-    }
-
-    /**
-     * @return callable[] The casters to add to the cloner
-     */
-    protected function getCasters()
-    {
-        $casters = [
-            '*' => function ($v, array $a, Stub $s, $isNested) {
-                if (!$v instanceof Stub) {
-                    foreach ($a as $k => $v) {
-                        if (\is_object($v) && !$v instanceof \DateTimeInterface && !$v instanceof Stub) {
-                            $a[$k] = new CutStub($v);
-                        }
-                    }
-                }
-
-                return $a;
-            },
-        ] + ReflectionCaster::UNSET_CLOSURE_FILE_INFO;
-
-        return $casters;
-    }
-
-    /**
-     * @return array
-     */
-    public function __sleep()
-    {
-        if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), \E_USER_DEPRECATED);
-            $this->data = $this->serialize();
-        }
-
-        return ['data'];
-    }
-
-    public function __wakeup()
-    {
-        if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'unserialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::unserialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), \E_USER_DEPRECATED);
-            $this->unserialize($this->data);
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php b/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php
deleted file mode 100644
index a302ad30095725551ef0d7b02ff3644afcac995c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Contracts\Service\ResetInterface;
-
-/**
- * DataCollectorInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface DataCollectorInterface extends ResetInterface
-{
-    /**
-     * Collects data for the given Request and Response.
-     *
-     * @param \Throwable|null $exception
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/);
-
-    /**
-     * Returns the name of the collector.
-     *
-     * @return string The collector name
-     */
-    public function getName();
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php b/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php
deleted file mode 100644
index 4e430f8f37e9925394cdb10eac902b8d39e7a90a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php
+++ /dev/null
@@ -1,289 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\Stopwatch\Stopwatch;
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-use Symfony\Component\VarDumper\Dumper\CliDumper;
-use Symfony\Component\VarDumper\Dumper\ContextProvider\SourceContextProvider;
-use Symfony\Component\VarDumper\Dumper\DataDumperInterface;
-use Symfony\Component\VarDumper\Dumper\HtmlDumper;
-use Symfony\Component\VarDumper\Server\Connection;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final since Symfony 4.3
- */
-class DumpDataCollector extends DataCollector implements DataDumperInterface
-{
-    private $stopwatch;
-    private $fileLinkFormat;
-    private $dataCount = 0;
-    private $isCollected = true;
-    private $clonesCount = 0;
-    private $clonesIndex = 0;
-    private $rootRefs;
-    private $charset;
-    private $requestStack;
-    private $dumper;
-    private $sourceContextProvider;
-
-    /**
-     * @param DataDumperInterface|Connection|null $dumper
-     */
-    public function __construct(Stopwatch $stopwatch = null, $fileLinkFormat = null, string $charset = null, RequestStack $requestStack = null, $dumper = null)
-    {
-        $this->stopwatch = $stopwatch;
-        $this->fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
-        $this->charset = $charset ?: ini_get('php.output_encoding') ?: ini_get('default_charset') ?: 'UTF-8';
-        $this->requestStack = $requestStack;
-        $this->dumper = $dumper;
-
-        // All clones share these properties by reference:
-        $this->rootRefs = [
-            &$this->data,
-            &$this->dataCount,
-            &$this->isCollected,
-            &$this->clonesCount,
-        ];
-
-        $this->sourceContextProvider = $dumper instanceof Connection && isset($dumper->getContextProviders()['source']) ? $dumper->getContextProviders()['source'] : new SourceContextProvider($this->charset);
-    }
-
-    public function __clone()
-    {
-        $this->clonesIndex = ++$this->clonesCount;
-    }
-
-    public function dump(Data $data)
-    {
-        if ($this->stopwatch) {
-            $this->stopwatch->start('dump');
-        }
-
-        list('name' => $name, 'file' => $file, 'line' => $line, 'file_excerpt' => $fileExcerpt) = $this->sourceContextProvider->getContext();
-
-        if ($this->dumper instanceof Connection) {
-            if (!$this->dumper->write($data)) {
-                $this->isCollected = false;
-            }
-        } elseif ($this->dumper) {
-            $this->doDump($this->dumper, $data, $name, $file, $line);
-        } else {
-            $this->isCollected = false;
-        }
-
-        if (!$this->dataCount) {
-            $this->data = [];
-        }
-        $this->data[] = compact('data', 'name', 'file', 'line', 'fileExcerpt');
-        ++$this->dataCount;
-
-        if ($this->stopwatch) {
-            $this->stopwatch->stop('dump');
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param \Throwable|null $exception
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
-    {
-        if (!$this->dataCount) {
-            $this->data = [];
-        }
-
-        // Sub-requests and programmatic calls stay in the collected profile.
-        if ($this->dumper || ($this->requestStack && $this->requestStack->getMasterRequest() !== $request) || $request->isXmlHttpRequest() || $request->headers->has('Origin')) {
-            return;
-        }
-
-        // In all other conditions that remove the web debug toolbar, dumps are written on the output.
-        if (!$this->requestStack
-            || !$response->headers->has('X-Debug-Token')
-            || $response->isRedirection()
-            || ($response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html'))
-            || 'html' !== $request->getRequestFormat()
-            || false === strripos($response->getContent(), '</body>')
-        ) {
-            if ($response->headers->has('Content-Type') && false !== strpos($response->headers->get('Content-Type'), 'html')) {
-                $dumper = new HtmlDumper('php://output', $this->charset);
-                $dumper->setDisplayOptions(['fileLinkFormat' => $this->fileLinkFormat]);
-            } else {
-                $dumper = new CliDumper('php://output', $this->charset);
-                if (method_exists($dumper, 'setDisplayOptions')) {
-                    $dumper->setDisplayOptions(['fileLinkFormat' => $this->fileLinkFormat]);
-                }
-            }
-
-            foreach ($this->data as $dump) {
-                $this->doDump($dumper, $dump['data'], $dump['name'], $dump['file'], $dump['line']);
-            }
-        }
-    }
-
-    public function reset()
-    {
-        if ($this->stopwatch) {
-            $this->stopwatch->reset();
-        }
-        $this->data = [];
-        $this->dataCount = 0;
-        $this->isCollected = true;
-        $this->clonesCount = 0;
-        $this->clonesIndex = 0;
-    }
-
-    /**
-     * @internal
-     */
-    public function __sleep(): array
-    {
-        if (!$this->dataCount) {
-            $this->data = [];
-        }
-
-        if ($this->clonesCount !== $this->clonesIndex) {
-            return [];
-        }
-
-        $this->data[] = $this->fileLinkFormat;
-        $this->data[] = $this->charset;
-        $this->dataCount = 0;
-        $this->isCollected = true;
-
-        return parent::__sleep();
-    }
-
-    /**
-     * @internal
-     */
-    public function __wakeup()
-    {
-        parent::__wakeup();
-
-        $charset = array_pop($this->data);
-        $fileLinkFormat = array_pop($this->data);
-        $this->dataCount = \count($this->data);
-
-        self::__construct($this->stopwatch, $fileLinkFormat, $charset);
-    }
-
-    public function getDumpsCount()
-    {
-        return $this->dataCount;
-    }
-
-    public function getDumps($format, $maxDepthLimit = -1, $maxItemsPerDepth = -1)
-    {
-        $data = fopen('php://memory', 'r+b');
-
-        if ('html' === $format) {
-            $dumper = new HtmlDumper($data, $this->charset);
-            $dumper->setDisplayOptions(['fileLinkFormat' => $this->fileLinkFormat]);
-        } else {
-            throw new \InvalidArgumentException(sprintf('Invalid dump format: "%s".', $format));
-        }
-        $dumps = [];
-
-        if (!$this->dataCount) {
-            return $this->data = [];
-        }
-
-        foreach ($this->data as $dump) {
-            $dumper->dump($dump['data']->withMaxDepth($maxDepthLimit)->withMaxItemsPerDepth($maxItemsPerDepth));
-            $dump['data'] = stream_get_contents($data, -1, 0);
-            ftruncate($data, 0);
-            rewind($data);
-            $dumps[] = $dump;
-        }
-
-        return $dumps;
-    }
-
-    public function getName()
-    {
-        return 'dump';
-    }
-
-    public function __destruct()
-    {
-        if (0 === $this->clonesCount-- && !$this->isCollected && $this->dataCount) {
-            $this->clonesCount = 0;
-            $this->isCollected = true;
-
-            $h = headers_list();
-            $i = \count($h);
-            array_unshift($h, 'Content-Type: '.ini_get('default_mimetype'));
-            while (0 !== stripos($h[$i], 'Content-Type:')) {
-                --$i;
-            }
-
-            if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && stripos($h[$i], 'html')) {
-                $dumper = new HtmlDumper('php://output', $this->charset);
-                $dumper->setDisplayOptions(['fileLinkFormat' => $this->fileLinkFormat]);
-            } else {
-                $dumper = new CliDumper('php://output', $this->charset);
-                if (method_exists($dumper, 'setDisplayOptions')) {
-                    $dumper->setDisplayOptions(['fileLinkFormat' => $this->fileLinkFormat]);
-                }
-            }
-
-            foreach ($this->data as $i => $dump) {
-                $this->data[$i] = null;
-                $this->doDump($dumper, $dump['data'], $dump['name'], $dump['file'], $dump['line']);
-            }
-
-            $this->data = [];
-            $this->dataCount = 0;
-        }
-    }
-
-    private function doDump(DataDumperInterface $dumper, $data, string $name, string $file, int $line)
-    {
-        if ($dumper instanceof CliDumper) {
-            $contextDumper = function ($name, $file, $line, $fmt) {
-                if ($this instanceof HtmlDumper) {
-                    if ($file) {
-                        $s = $this->style('meta', '%s');
-                        $f = strip_tags($this->style('', $file));
-                        $name = strip_tags($this->style('', $name));
-                        if ($fmt && $link = \is_string($fmt) ? strtr($fmt, ['%f' => $file, '%l' => $line]) : $fmt->format($file, $line)) {
-                            $name = sprintf('<a href="%s" title="%s">'.$s.'</a>', strip_tags($this->style('', $link)), $f, $name);
-                        } else {
-                            $name = sprintf('<abbr title="%s">'.$s.'</abbr>', $f, $name);
-                        }
-                    } else {
-                        $name = $this->style('meta', $name);
-                    }
-                    $this->line = $name.' on line '.$this->style('meta', $line).':';
-                } else {
-                    $this->line = $this->style('meta', $name).' on line '.$this->style('meta', $line).':';
-                }
-                $this->dumpLine(0);
-            };
-            $contextDumper = $contextDumper->bindTo($dumper, $dumper);
-            $contextDumper($name, $file, $line, $this->fileLinkFormat);
-        } else {
-            $cloner = new VarCloner();
-            $dumper->dump($cloner->cloneVar($name.' on line '.$line.':'));
-        }
-        $dumper->dump($data);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php b/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php
deleted file mode 100644
index 89fd18338688fa0f3c2bd6db4d297f1c7f4ee298..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher;
-use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcherInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
-use Symfony\Contracts\Service\ResetInterface;
-
-/**
- * EventDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.4
- */
-class EventDataCollector extends DataCollector implements LateDataCollectorInterface
-{
-    protected $dispatcher;
-    private $requestStack;
-    private $currentRequest;
-
-    public function __construct(EventDispatcherInterface $dispatcher = null, RequestStack $requestStack = null)
-    {
-        $this->dispatcher = $dispatcher;
-        $this->requestStack = $requestStack;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param \Throwable|null $exception
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
-    {
-        $this->currentRequest = $this->requestStack && $this->requestStack->getMasterRequest() !== $request ? $request : null;
-        $this->data = [
-            'called_listeners' => [],
-            'not_called_listeners' => [],
-            'orphaned_events' => [],
-        ];
-    }
-
-    public function reset()
-    {
-        $this->data = [];
-
-        if ($this->dispatcher instanceof ResetInterface) {
-            $this->dispatcher->reset();
-        }
-    }
-
-    public function lateCollect()
-    {
-        if ($this->dispatcher instanceof TraceableEventDispatcherInterface) {
-            $this->setCalledListeners($this->dispatcher->getCalledListeners($this->currentRequest));
-            $this->setNotCalledListeners($this->dispatcher->getNotCalledListeners($this->currentRequest));
-        }
-
-        if ($this->dispatcher instanceof TraceableEventDispatcher) {
-            $this->setOrphanedEvents($this->dispatcher->getOrphanedEvents($this->currentRequest));
-        }
-
-        $this->data = $this->cloneVar($this->data);
-    }
-
-    /**
-     * Sets the called listeners.
-     *
-     * @param array $listeners An array of called listeners
-     *
-     * @see TraceableEventDispatcher
-     */
-    public function setCalledListeners(array $listeners)
-    {
-        $this->data['called_listeners'] = $listeners;
-    }
-
-    /**
-     * Gets the called listeners.
-     *
-     * @return array An array of called listeners
-     *
-     * @see TraceableEventDispatcher
-     */
-    public function getCalledListeners()
-    {
-        return $this->data['called_listeners'];
-    }
-
-    /**
-     * Sets the not called listeners.
-     *
-     * @see TraceableEventDispatcher
-     */
-    public function setNotCalledListeners(array $listeners)
-    {
-        $this->data['not_called_listeners'] = $listeners;
-    }
-
-    /**
-     * Gets the not called listeners.
-     *
-     * @return array
-     *
-     * @see TraceableEventDispatcher
-     */
-    public function getNotCalledListeners()
-    {
-        return $this->data['not_called_listeners'];
-    }
-
-    /**
-     * Sets the orphaned events.
-     *
-     * @param array $events An array of orphaned events
-     *
-     * @see TraceableEventDispatcher
-     */
-    public function setOrphanedEvents(array $events)
-    {
-        $this->data['orphaned_events'] = $events;
-    }
-
-    /**
-     * Gets the orphaned events.
-     *
-     * @return array An array of orphaned events
-     *
-     * @see TraceableEventDispatcher
-     */
-    public function getOrphanedEvents()
-    {
-        return $this->data['orphaned_events'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'events';
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php b/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php
deleted file mode 100644
index 222cae5d2d24c1c7b84e39acaa343e8ebc3c6627..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\ErrorHandler\Exception\FlattenException;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * ExceptionDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.4
- */
-class ExceptionDataCollector extends DataCollector
-{
-    /**
-     * {@inheritdoc}
-     *
-     * @param \Throwable|null $exception
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
-    {
-        $exception = 2 < \func_num_args() ? func_get_arg(2) : null;
-
-        if (null !== $exception) {
-            $this->data = [
-                'exception' => FlattenException::createFromThrowable($exception),
-            ];
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reset()
-    {
-        $this->data = [];
-    }
-
-    /**
-     * Checks if the exception is not null.
-     *
-     * @return bool true if the exception is not null, false otherwise
-     */
-    public function hasException()
-    {
-        return isset($this->data['exception']);
-    }
-
-    /**
-     * Gets the exception.
-     *
-     * @return \Exception|FlattenException
-     */
-    public function getException()
-    {
-        return $this->data['exception'];
-    }
-
-    /**
-     * Gets the exception message.
-     *
-     * @return string The exception message
-     */
-    public function getMessage()
-    {
-        return $this->data['exception']->getMessage();
-    }
-
-    /**
-     * Gets the exception code.
-     *
-     * @return int The exception code
-     */
-    public function getCode()
-    {
-        return $this->data['exception']->getCode();
-    }
-
-    /**
-     * Gets the status code.
-     *
-     * @return int The status code
-     */
-    public function getStatusCode()
-    {
-        return $this->data['exception']->getStatusCode();
-    }
-
-    /**
-     * Gets the exception trace.
-     *
-     * @return array The exception trace
-     */
-    public function getTrace()
-    {
-        return $this->data['exception']->getTrace();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'exception';
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/LateDataCollectorInterface.php b/vendor/symfony/http-kernel/DataCollector/LateDataCollectorInterface.php
deleted file mode 100644
index 012332de479f742c4df52b8c4077af57d53ef6e8..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/LateDataCollectorInterface.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-/**
- * LateDataCollectorInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface LateDataCollectorInterface
-{
-    /**
-     * Collects data as late as possible.
-     */
-    public function lateCollect();
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php b/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php
deleted file mode 100644
index 07dd254d33957e0ca2ec24234c31eb795d28e13b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php
+++ /dev/null
@@ -1,284 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
-
-/**
- * LogDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.4
- */
-class LoggerDataCollector extends DataCollector implements LateDataCollectorInterface
-{
-    private $logger;
-    private $containerPathPrefix;
-    private $currentRequest;
-    private $requestStack;
-
-    public function __construct($logger = null, string $containerPathPrefix = null, RequestStack $requestStack = null)
-    {
-        if (null !== $logger && $logger instanceof DebugLoggerInterface) {
-            $this->logger = $logger;
-        }
-
-        $this->containerPathPrefix = $containerPathPrefix;
-        $this->requestStack = $requestStack;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param \Throwable|null $exception
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
-    {
-        $this->currentRequest = $this->requestStack && $this->requestStack->getMasterRequest() !== $request ? $request : null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reset()
-    {
-        if ($this->logger instanceof DebugLoggerInterface) {
-            $this->logger->clear();
-        }
-        $this->data = [];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function lateCollect()
-    {
-        if (null !== $this->logger) {
-            $containerDeprecationLogs = $this->getContainerDeprecationLogs();
-            $this->data = $this->computeErrorsCount($containerDeprecationLogs);
-            // get compiler logs later (only when they are needed) to improve performance
-            $this->data['compiler_logs'] = [];
-            $this->data['compiler_logs_filepath'] = $this->containerPathPrefix.'Compiler.log';
-            $this->data['logs'] = $this->sanitizeLogs(array_merge($this->logger->getLogs($this->currentRequest), $containerDeprecationLogs));
-            $this->data = $this->cloneVar($this->data);
-        }
-        $this->currentRequest = null;
-    }
-
-    public function getLogs()
-    {
-        return isset($this->data['logs']) ? $this->data['logs'] : [];
-    }
-
-    public function getPriorities()
-    {
-        return isset($this->data['priorities']) ? $this->data['priorities'] : [];
-    }
-
-    public function countErrors()
-    {
-        return isset($this->data['error_count']) ? $this->data['error_count'] : 0;
-    }
-
-    public function countDeprecations()
-    {
-        return isset($this->data['deprecation_count']) ? $this->data['deprecation_count'] : 0;
-    }
-
-    public function countWarnings()
-    {
-        return isset($this->data['warning_count']) ? $this->data['warning_count'] : 0;
-    }
-
-    public function countScreams()
-    {
-        return isset($this->data['scream_count']) ? $this->data['scream_count'] : 0;
-    }
-
-    public function getCompilerLogs()
-    {
-        return $this->cloneVar($this->getContainerCompilerLogs($this->data['compiler_logs_filepath'] ?? null));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'logger';
-    }
-
-    private function getContainerDeprecationLogs(): array
-    {
-        if (null === $this->containerPathPrefix || !file_exists($file = $this->containerPathPrefix.'Deprecations.log')) {
-            return [];
-        }
-
-        if ('' === $logContent = trim(file_get_contents($file))) {
-            return [];
-        }
-
-        $bootTime = filemtime($file);
-        $logs = [];
-        foreach (unserialize($logContent) as $log) {
-            $log['context'] = ['exception' => new SilencedErrorContext($log['type'], $log['file'], $log['line'], $log['trace'], $log['count'])];
-            $log['timestamp'] = $bootTime;
-            $log['priority'] = 100;
-            $log['priorityName'] = 'DEBUG';
-            $log['channel'] = null;
-            $log['scream'] = false;
-            unset($log['type'], $log['file'], $log['line'], $log['trace'], $log['trace'], $log['count']);
-            $logs[] = $log;
-        }
-
-        return $logs;
-    }
-
-    private function getContainerCompilerLogs(string $compilerLogsFilepath = null): array
-    {
-        if (!file_exists($compilerLogsFilepath)) {
-            return [];
-        }
-
-        $logs = [];
-        foreach (file($compilerLogsFilepath, \FILE_IGNORE_NEW_LINES) as $log) {
-            $log = explode(': ', $log, 2);
-            if (!isset($log[1]) || !preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)++$/', $log[0])) {
-                $log = ['Unknown Compiler Pass', implode(': ', $log)];
-            }
-
-            $logs[$log[0]][] = ['message' => $log[1]];
-        }
-
-        return $logs;
-    }
-
-    private function sanitizeLogs(array $logs)
-    {
-        $sanitizedLogs = [];
-        $silencedLogs = [];
-
-        foreach ($logs as $log) {
-            if (!$this->isSilencedOrDeprecationErrorLog($log)) {
-                $sanitizedLogs[] = $log;
-
-                continue;
-            }
-
-            $message = '_'.$log['message'];
-            $exception = $log['context']['exception'];
-
-            if ($exception instanceof SilencedErrorContext) {
-                if (isset($silencedLogs[$h = spl_object_hash($exception)])) {
-                    continue;
-                }
-                $silencedLogs[$h] = true;
-
-                if (!isset($sanitizedLogs[$message])) {
-                    $sanitizedLogs[$message] = $log + [
-                        'errorCount' => 0,
-                        'scream' => true,
-                    ];
-                }
-                $sanitizedLogs[$message]['errorCount'] += $exception->count;
-
-                continue;
-            }
-
-            $errorId = md5("{$exception->getSeverity()}/{$exception->getLine()}/{$exception->getFile()}\0{$message}", true);
-
-            if (isset($sanitizedLogs[$errorId])) {
-                ++$sanitizedLogs[$errorId]['errorCount'];
-            } else {
-                $log += [
-                    'errorCount' => 1,
-                    'scream' => false,
-                ];
-
-                $sanitizedLogs[$errorId] = $log;
-            }
-        }
-
-        return array_values($sanitizedLogs);
-    }
-
-    private function isSilencedOrDeprecationErrorLog(array $log): bool
-    {
-        if (!isset($log['context']['exception'])) {
-            return false;
-        }
-
-        $exception = $log['context']['exception'];
-
-        if ($exception instanceof SilencedErrorContext) {
-            return true;
-        }
-
-        if ($exception instanceof \ErrorException && \in_array($exception->getSeverity(), [\E_DEPRECATED, \E_USER_DEPRECATED], true)) {
-            return true;
-        }
-
-        return false;
-    }
-
-    private function computeErrorsCount(array $containerDeprecationLogs): array
-    {
-        $silencedLogs = [];
-        $count = [
-            'error_count' => $this->logger->countErrors($this->currentRequest),
-            'deprecation_count' => 0,
-            'warning_count' => 0,
-            'scream_count' => 0,
-            'priorities' => [],
-        ];
-
-        foreach ($this->logger->getLogs($this->currentRequest) as $log) {
-            if (isset($count['priorities'][$log['priority']])) {
-                ++$count['priorities'][$log['priority']]['count'];
-            } else {
-                $count['priorities'][$log['priority']] = [
-                    'count' => 1,
-                    'name' => $log['priorityName'],
-                ];
-            }
-            if ('WARNING' === $log['priorityName']) {
-                ++$count['warning_count'];
-            }
-
-            if ($this->isSilencedOrDeprecationErrorLog($log)) {
-                $exception = $log['context']['exception'];
-                if ($exception instanceof SilencedErrorContext) {
-                    if (isset($silencedLogs[$h = spl_object_hash($exception)])) {
-                        continue;
-                    }
-                    $silencedLogs[$h] = true;
-                    $count['scream_count'] += $exception->count;
-                } else {
-                    ++$count['deprecation_count'];
-                }
-            }
-        }
-
-        foreach ($containerDeprecationLogs as $deprecationLog) {
-            $count['deprecation_count'] += $deprecationLog['context']['exception']->count;
-        }
-
-        ksort($count['priorities']);
-
-        return $count;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php b/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php
deleted file mode 100644
index 7ffcdab41dca42de95abc39115c81f2b8a8aeeb1..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * MemoryDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.4
- */
-class MemoryDataCollector extends DataCollector implements LateDataCollectorInterface
-{
-    public function __construct()
-    {
-        $this->reset();
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param \Throwable|null $exception
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
-    {
-        $this->updateMemoryUsage();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reset()
-    {
-        $this->data = [
-            'memory' => 0,
-            'memory_limit' => $this->convertToBytes(ini_get('memory_limit')),
-        ];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function lateCollect()
-    {
-        $this->updateMemoryUsage();
-    }
-
-    /**
-     * Gets the memory.
-     *
-     * @return int The memory
-     */
-    public function getMemory()
-    {
-        return $this->data['memory'];
-    }
-
-    /**
-     * Gets the PHP memory limit.
-     *
-     * @return int The memory limit
-     */
-    public function getMemoryLimit()
-    {
-        return $this->data['memory_limit'];
-    }
-
-    /**
-     * Updates the memory usage data.
-     */
-    public function updateMemoryUsage()
-    {
-        $this->data['memory'] = memory_get_peak_usage(true);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'memory';
-    }
-
-    /**
-     * @return int|float
-     */
-    private function convertToBytes(string $memoryLimit)
-    {
-        if ('-1' === $memoryLimit) {
-            return -1;
-        }
-
-        $memoryLimit = strtolower($memoryLimit);
-        $max = strtolower(ltrim($memoryLimit, '+'));
-        if (0 === strpos($max, '0x')) {
-            $max = \intval($max, 16);
-        } elseif (0 === strpos($max, '0')) {
-            $max = \intval($max, 8);
-        } else {
-            $max = (int) $max;
-        }
-
-        switch (substr($memoryLimit, -1)) {
-            case 't': $max *= 1024;
-            // no break
-            case 'g': $max *= 1024;
-            // no break
-            case 'm': $max *= 1024;
-            // no break
-            case 'k': $max *= 1024;
-        }
-
-        return $max;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php b/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php
deleted file mode 100644
index ba68c6b99af25c0727e30d4c26e106c6d6fc6dd9..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php
+++ /dev/null
@@ -1,466 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\ParameterBag;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.4
- */
-class RequestDataCollector extends DataCollector implements EventSubscriberInterface, LateDataCollectorInterface
-{
-    protected $controllers;
-
-    public function __construct()
-    {
-        $this->controllers = new \SplObjectStorage();
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param \Throwable|null $exception
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
-    {
-        // attributes are serialized and as they can be anything, they need to be converted to strings.
-        $attributes = [];
-        $route = '';
-        foreach ($request->attributes->all() as $key => $value) {
-            if ('_route' === $key) {
-                $route = \is_object($value) ? $value->getPath() : $value;
-                $attributes[$key] = $route;
-            } else {
-                $attributes[$key] = $value;
-            }
-        }
-
-        try {
-            $content = $request->getContent();
-        } catch (\LogicException $e) {
-            // the user already got the request content as a resource
-            $content = false;
-        }
-
-        $sessionMetadata = [];
-        $sessionAttributes = [];
-        $flashes = [];
-        if ($request->hasSession()) {
-            $session = $request->getSession();
-            if ($session->isStarted()) {
-                $sessionMetadata['Created'] = date(\DATE_RFC822, $session->getMetadataBag()->getCreated());
-                $sessionMetadata['Last used'] = date(\DATE_RFC822, $session->getMetadataBag()->getLastUsed());
-                $sessionMetadata['Lifetime'] = $session->getMetadataBag()->getLifetime();
-                $sessionAttributes = $session->all();
-                $flashes = $session->getFlashBag()->peekAll();
-            }
-        }
-
-        $statusCode = $response->getStatusCode();
-
-        $responseCookies = [];
-        foreach ($response->headers->getCookies() as $cookie) {
-            $responseCookies[$cookie->getName()] = $cookie;
-        }
-
-        $dotenvVars = [];
-        foreach (explode(',', $_SERVER['SYMFONY_DOTENV_VARS'] ?? $_ENV['SYMFONY_DOTENV_VARS'] ?? '') as $name) {
-            if ('' !== $name && isset($_ENV[$name])) {
-                $dotenvVars[$name] = $_ENV[$name];
-            }
-        }
-
-        $this->data = [
-            'method' => $request->getMethod(),
-            'format' => $request->getRequestFormat(),
-            'content' => $content,
-            'content_type' => $response->headers->get('Content-Type', 'text/html'),
-            'status_text' => isset(Response::$statusTexts[$statusCode]) ? Response::$statusTexts[$statusCode] : '',
-            'status_code' => $statusCode,
-            'request_query' => $request->query->all(),
-            'request_request' => $request->request->all(),
-            'request_files' => $request->files->all(),
-            'request_headers' => $request->headers->all(),
-            'request_server' => $request->server->all(),
-            'request_cookies' => $request->cookies->all(),
-            'request_attributes' => $attributes,
-            'route' => $route,
-            'response_headers' => $response->headers->all(),
-            'response_cookies' => $responseCookies,
-            'session_metadata' => $sessionMetadata,
-            'session_attributes' => $sessionAttributes,
-            'flashes' => $flashes,
-            'path_info' => $request->getPathInfo(),
-            'controller' => 'n/a',
-            'locale' => $request->getLocale(),
-            'dotenv_vars' => $dotenvVars,
-        ];
-
-        if (isset($this->data['request_headers']['php-auth-pw'])) {
-            $this->data['request_headers']['php-auth-pw'] = '******';
-        }
-
-        if (isset($this->data['request_server']['PHP_AUTH_PW'])) {
-            $this->data['request_server']['PHP_AUTH_PW'] = '******';
-        }
-
-        if (isset($this->data['request_request']['_password'])) {
-            $this->data['request_request']['_password'] = '******';
-        }
-
-        foreach ($this->data as $key => $value) {
-            if (!\is_array($value)) {
-                continue;
-            }
-            if ('request_headers' === $key || 'response_headers' === $key) {
-                $this->data[$key] = array_map(function ($v) { return isset($v[0]) && !isset($v[1]) ? $v[0] : $v; }, $value);
-            }
-        }
-
-        if (isset($this->controllers[$request])) {
-            $this->data['controller'] = $this->parseController($this->controllers[$request]);
-            unset($this->controllers[$request]);
-        }
-
-        if ($request->attributes->has('_redirected') && $redirectCookie = $request->cookies->get('sf_redirect')) {
-            $this->data['redirect'] = json_decode($redirectCookie, true);
-
-            $response->headers->clearCookie('sf_redirect');
-        }
-
-        if ($response->isRedirect()) {
-            $response->headers->setCookie(new Cookie(
-                'sf_redirect',
-                json_encode([
-                    'token' => $response->headers->get('x-debug-token'),
-                    'route' => $request->attributes->get('_route', 'n/a'),
-                    'method' => $request->getMethod(),
-                    'controller' => $this->parseController($request->attributes->get('_controller')),
-                    'status_code' => $statusCode,
-                    'status_text' => Response::$statusTexts[(int) $statusCode],
-                ]),
-                0, '/', null, $request->isSecure(), true, false, 'lax'
-            ));
-        }
-
-        $this->data['identifier'] = $this->data['route'] ?: (\is_array($this->data['controller']) ? $this->data['controller']['class'].'::'.$this->data['controller']['method'].'()' : $this->data['controller']);
-
-        if ($response->headers->has('x-previous-debug-token')) {
-            $this->data['forward_token'] = $response->headers->get('x-previous-debug-token');
-        }
-    }
-
-    public function lateCollect()
-    {
-        $this->data = $this->cloneVar($this->data);
-    }
-
-    public function reset()
-    {
-        $this->data = [];
-        $this->controllers = new \SplObjectStorage();
-    }
-
-    public function getMethod()
-    {
-        return $this->data['method'];
-    }
-
-    public function getPathInfo()
-    {
-        return $this->data['path_info'];
-    }
-
-    public function getRequestRequest()
-    {
-        return new ParameterBag($this->data['request_request']->getValue());
-    }
-
-    public function getRequestQuery()
-    {
-        return new ParameterBag($this->data['request_query']->getValue());
-    }
-
-    public function getRequestFiles()
-    {
-        return new ParameterBag($this->data['request_files']->getValue());
-    }
-
-    public function getRequestHeaders()
-    {
-        return new ParameterBag($this->data['request_headers']->getValue());
-    }
-
-    public function getRequestServer($raw = false)
-    {
-        return new ParameterBag($this->data['request_server']->getValue($raw));
-    }
-
-    public function getRequestCookies($raw = false)
-    {
-        return new ParameterBag($this->data['request_cookies']->getValue($raw));
-    }
-
-    public function getRequestAttributes()
-    {
-        return new ParameterBag($this->data['request_attributes']->getValue());
-    }
-
-    public function getResponseHeaders()
-    {
-        return new ParameterBag($this->data['response_headers']->getValue());
-    }
-
-    public function getResponseCookies()
-    {
-        return new ParameterBag($this->data['response_cookies']->getValue());
-    }
-
-    public function getSessionMetadata()
-    {
-        return $this->data['session_metadata']->getValue();
-    }
-
-    public function getSessionAttributes()
-    {
-        return $this->data['session_attributes']->getValue();
-    }
-
-    public function getFlashes()
-    {
-        return $this->data['flashes']->getValue();
-    }
-
-    public function getContent()
-    {
-        return $this->data['content'];
-    }
-
-    public function isJsonRequest()
-    {
-        return 1 === preg_match('{^application/(?:\w+\++)*json$}i', $this->data['request_headers']['content-type']);
-    }
-
-    public function getPrettyJson()
-    {
-        $decoded = json_decode($this->getContent());
-
-        return \JSON_ERROR_NONE === json_last_error() ? json_encode($decoded, \JSON_PRETTY_PRINT) : null;
-    }
-
-    public function getContentType()
-    {
-        return $this->data['content_type'];
-    }
-
-    public function getStatusText()
-    {
-        return $this->data['status_text'];
-    }
-
-    public function getStatusCode()
-    {
-        return $this->data['status_code'];
-    }
-
-    public function getFormat()
-    {
-        return $this->data['format'];
-    }
-
-    public function getLocale()
-    {
-        return $this->data['locale'];
-    }
-
-    public function getDotenvVars()
-    {
-        return new ParameterBag($this->data['dotenv_vars']->getValue());
-    }
-
-    /**
-     * Gets the route name.
-     *
-     * The _route request attributes is automatically set by the Router Matcher.
-     *
-     * @return string The route
-     */
-    public function getRoute()
-    {
-        return $this->data['route'];
-    }
-
-    public function getIdentifier()
-    {
-        return $this->data['identifier'];
-    }
-
-    /**
-     * Gets the route parameters.
-     *
-     * The _route_params request attributes is automatically set by the RouterListener.
-     *
-     * @return array The parameters
-     */
-    public function getRouteParams()
-    {
-        return isset($this->data['request_attributes']['_route_params']) ? $this->data['request_attributes']['_route_params']->getValue() : [];
-    }
-
-    /**
-     * Gets the parsed controller.
-     *
-     * @return array|string The controller as a string or array of data
-     *                      with keys 'class', 'method', 'file' and 'line'
-     */
-    public function getController()
-    {
-        return $this->data['controller'];
-    }
-
-    /**
-     * Gets the previous request attributes.
-     *
-     * @return array|bool A legacy array of data from the previous redirection response
-     *                    or false otherwise
-     */
-    public function getRedirect()
-    {
-        return isset($this->data['redirect']) ? $this->data['redirect'] : false;
-    }
-
-    public function getForwardToken()
-    {
-        return isset($this->data['forward_token']) ? $this->data['forward_token'] : null;
-    }
-
-    /**
-     * @final since Symfony 4.3
-     */
-    public function onKernelController(FilterControllerEvent $event)
-    {
-        $this->controllers[$event->getRequest()] = $event->getController();
-    }
-
-    /**
-     * @final since Symfony 4.3
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        if ($event->getRequest()->cookies->has('sf_redirect')) {
-            $event->getRequest()->attributes->set('_redirected', true);
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::CONTROLLER => 'onKernelController',
-            KernelEvents::RESPONSE => 'onKernelResponse',
-        ];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'request';
-    }
-
-    /**
-     * Parse a controller.
-     *
-     * @param mixed $controller The controller to parse
-     *
-     * @return array|string An array of controller data or a simple string
-     */
-    protected function parseController($controller)
-    {
-        if (\is_string($controller) && false !== strpos($controller, '::')) {
-            $controller = explode('::', $controller);
-        }
-
-        if (\is_array($controller)) {
-            try {
-                $r = new \ReflectionMethod($controller[0], $controller[1]);
-
-                return [
-                    'class' => \is_object($controller[0]) ? \get_class($controller[0]) : $controller[0],
-                    'method' => $controller[1],
-                    'file' => $r->getFileName(),
-                    'line' => $r->getStartLine(),
-                ];
-            } catch (\ReflectionException $e) {
-                if (\is_callable($controller)) {
-                    // using __call or  __callStatic
-                    return [
-                        'class' => \is_object($controller[0]) ? \get_class($controller[0]) : $controller[0],
-                        'method' => $controller[1],
-                        'file' => 'n/a',
-                        'line' => 'n/a',
-                    ];
-                }
-            }
-        }
-
-        if ($controller instanceof \Closure) {
-            $r = new \ReflectionFunction($controller);
-
-            $controller = [
-                'class' => $r->getName(),
-                'method' => null,
-                'file' => $r->getFileName(),
-                'line' => $r->getStartLine(),
-            ];
-
-            if (false !== strpos($r->name, '{closure}')) {
-                return $controller;
-            }
-            $controller['method'] = $r->name;
-
-            if ($class = $r->getClosureScopeClass()) {
-                $controller['class'] = $class->name;
-            } else {
-                return $r->name;
-            }
-
-            return $controller;
-        }
-
-        if (\is_object($controller)) {
-            $r = new \ReflectionClass($controller);
-
-            return [
-                'class' => $r->getName(),
-                'method' => null,
-                'file' => $r->getFileName(),
-                'line' => $r->getStartLine(),
-            ];
-        }
-
-        return \is_string($controller) ? $controller : 'n/a';
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php b/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php
deleted file mode 100644
index 5f12392330883ff2116e7f19c79056b015a0460f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RouterDataCollector extends DataCollector
-{
-    /**
-     * @var \SplObjectStorage
-     */
-    protected $controllers;
-
-    public function __construct()
-    {
-        $this->reset();
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param \Throwable|null $exception
-     *
-     * @final since Symfony 4.4
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
-    {
-        if ($response instanceof RedirectResponse) {
-            $this->data['redirect'] = true;
-            $this->data['url'] = $response->getTargetUrl();
-
-            if ($this->controllers->contains($request)) {
-                $this->data['route'] = $this->guessRoute($request, $this->controllers[$request]);
-            }
-        }
-
-        unset($this->controllers[$request]);
-    }
-
-    public function reset()
-    {
-        $this->controllers = new \SplObjectStorage();
-
-        $this->data = [
-            'redirect' => false,
-            'url' => null,
-            'route' => null,
-        ];
-    }
-
-    protected function guessRoute(Request $request, $controller)
-    {
-        return 'n/a';
-    }
-
-    /**
-     * Remembers the controller associated to each request.
-     *
-     * @final since Symfony 4.3
-     */
-    public function onKernelController(FilterControllerEvent $event)
-    {
-        $this->controllers[$event->getRequest()] = $event->getController();
-    }
-
-    /**
-     * @return bool Whether this request will result in a redirect
-     */
-    public function getRedirect()
-    {
-        return $this->data['redirect'];
-    }
-
-    /**
-     * @return string|null The target URL
-     */
-    public function getTargetUrl()
-    {
-        return $this->data['url'];
-    }
-
-    /**
-     * @return string|null The target route
-     */
-    public function getTargetRoute()
-    {
-        return $this->data['route'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'router';
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php b/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php
deleted file mode 100644
index 7c0cdaa90d7d1600a051959dfc71ceed176231ab..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\KernelInterface;
-use Symfony\Component\Stopwatch\Stopwatch;
-use Symfony\Component\Stopwatch\StopwatchEvent;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.4
- */
-class TimeDataCollector extends DataCollector implements LateDataCollectorInterface
-{
-    protected $kernel;
-    protected $stopwatch;
-
-    public function __construct(KernelInterface $kernel = null, Stopwatch $stopwatch = null)
-    {
-        $this->kernel = $kernel;
-        $this->stopwatch = $stopwatch;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param \Throwable|null $exception
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
-    {
-        if (null !== $this->kernel) {
-            $startTime = $this->kernel->getStartTime();
-        } else {
-            $startTime = $request->server->get('REQUEST_TIME_FLOAT');
-        }
-
-        $this->data = [
-            'token' => $response->headers->get('X-Debug-Token'),
-            'start_time' => $startTime * 1000,
-            'events' => [],
-            'stopwatch_installed' => class_exists(Stopwatch::class, false),
-        ];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reset()
-    {
-        $this->data = [];
-
-        if (null !== $this->stopwatch) {
-            $this->stopwatch->reset();
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function lateCollect()
-    {
-        if (null !== $this->stopwatch && isset($this->data['token'])) {
-            $this->setEvents($this->stopwatch->getSectionEvents($this->data['token']));
-        }
-        unset($this->data['token']);
-    }
-
-    /**
-     * Sets the request events.
-     *
-     * @param StopwatchEvent[] $events The request events
-     */
-    public function setEvents(array $events)
-    {
-        foreach ($events as $event) {
-            $event->ensureStopped();
-        }
-
-        $this->data['events'] = $events;
-    }
-
-    /**
-     * Gets the request events.
-     *
-     * @return StopwatchEvent[] The request events
-     */
-    public function getEvents()
-    {
-        return $this->data['events'];
-    }
-
-    /**
-     * Gets the request elapsed time.
-     *
-     * @return float The elapsed time
-     */
-    public function getDuration()
-    {
-        if (!isset($this->data['events']['__section__'])) {
-            return 0;
-        }
-
-        $lastEvent = $this->data['events']['__section__'];
-
-        return $lastEvent->getOrigin() + $lastEvent->getDuration() - $this->getStartTime();
-    }
-
-    /**
-     * Gets the initialization time.
-     *
-     * This is the time spent until the beginning of the request handling.
-     *
-     * @return float The elapsed time
-     */
-    public function getInitTime()
-    {
-        if (!isset($this->data['events']['__section__'])) {
-            return 0;
-        }
-
-        return $this->data['events']['__section__']->getOrigin() - $this->getStartTime();
-    }
-
-    /**
-     * Gets the request time.
-     *
-     * @return float
-     */
-    public function getStartTime()
-    {
-        return $this->data['start_time'];
-    }
-
-    /**
-     * @return bool whether or not the stopwatch component is installed
-     */
-    public function isStopwatchInstalled()
-    {
-        return $this->data['stopwatch_installed'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'time';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php b/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php
deleted file mode 100644
index 6d7c1e942e616226522b720de4158e35926cb5b6..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Debug;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-
-/**
- * Formats debug file links.
- *
- * @author Jérémy Romey <jeremy@free-agent.fr>
- *
- * @final since Symfony 4.3
- */
-class FileLinkFormatter
-{
-    private $fileLinkFormat;
-    private $requestStack;
-    private $baseDir;
-    private $urlFormat;
-
-    /**
-     * @param string|\Closure $urlFormat the URL format, or a closure that returns it on-demand
-     */
-    public function __construct($fileLinkFormat = null, RequestStack $requestStack = null, string $baseDir = null, $urlFormat = null)
-    {
-        $fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
-        if ($fileLinkFormat && !\is_array($fileLinkFormat)) {
-            $i = strpos($f = $fileLinkFormat, '&', max(strrpos($f, '%f'), strrpos($f, '%l'))) ?: \strlen($f);
-            $fileLinkFormat = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, \PREG_SPLIT_DELIM_CAPTURE);
-        }
-
-        $this->fileLinkFormat = $fileLinkFormat;
-        $this->requestStack = $requestStack;
-        $this->baseDir = $baseDir;
-        $this->urlFormat = $urlFormat;
-    }
-
-    public function format($file, $line)
-    {
-        if ($fmt = $this->getFileLinkFormat()) {
-            for ($i = 1; isset($fmt[$i]); ++$i) {
-                if (0 === strpos($file, $k = $fmt[$i++])) {
-                    $file = substr_replace($file, $fmt[$i], 0, \strlen($k));
-                    break;
-                }
-            }
-
-            return strtr($fmt[0], ['%f' => $file, '%l' => $line]);
-        }
-
-        return false;
-    }
-
-    /**
-     * @internal
-     */
-    public function __sleep(): array
-    {
-        $this->fileLinkFormat = $this->getFileLinkFormat();
-
-        return ['fileLinkFormat'];
-    }
-
-    /**
-     * @internal
-     */
-    public static function generateUrlFormat(UrlGeneratorInterface $router, $routeName, $queryString)
-    {
-        try {
-            return $router->generate($routeName).$queryString;
-        } catch (\Throwable $e) {
-            return null;
-        }
-    }
-
-    private function getFileLinkFormat()
-    {
-        if ($this->fileLinkFormat) {
-            return $this->fileLinkFormat;
-        }
-
-        if ($this->requestStack && $this->baseDir && $this->urlFormat) {
-            $request = $this->requestStack->getMasterRequest();
-
-            if ($request instanceof Request && (!$this->urlFormat instanceof \Closure || $this->urlFormat = ($this->urlFormat)())) {
-                return [
-                    $request->getSchemeAndHttpHost().$this->urlFormat,
-                    $this->baseDir.\DIRECTORY_SEPARATOR, '',
-                ];
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php b/vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php
deleted file mode 100644
index ce4ddb35d3f752449d7e8afa3a31a2d0692ab034..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Debug;
-
-use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher as BaseTraceableEventDispatcher;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * Collects some data about event listeners.
- *
- * This event dispatcher delegates the dispatching to another one.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TraceableEventDispatcher extends BaseTraceableEventDispatcher
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function beforeDispatch(string $eventName, $event)
-    {
-        switch ($eventName) {
-            case KernelEvents::REQUEST:
-                $this->stopwatch->openSection();
-                break;
-            case KernelEvents::VIEW:
-            case KernelEvents::RESPONSE:
-                // stop only if a controller has been executed
-                if ($this->stopwatch->isStarted('controller')) {
-                    $this->stopwatch->stop('controller');
-                }
-                break;
-            case KernelEvents::TERMINATE:
-                $token = $event->getResponse()->headers->get('X-Debug-Token');
-                if (null === $token) {
-                    break;
-                }
-                // There is a very special case when using built-in AppCache class as kernel wrapper, in the case
-                // of an ESI request leading to a `stale` response [B]  inside a `fresh` cached response [A].
-                // In this case, `$token` contains the [B] debug token, but the  open `stopwatch` section ID
-                // is equal to the [A] debug token. Trying to reopen section with the [B] token throws an exception
-                // which must be caught.
-                try {
-                    $this->stopwatch->openSection($token);
-                } catch (\LogicException $e) {
-                }
-                break;
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function afterDispatch(string $eventName, $event)
-    {
-        switch ($eventName) {
-            case KernelEvents::CONTROLLER_ARGUMENTS:
-                $this->stopwatch->start('controller', 'section');
-                break;
-            case KernelEvents::RESPONSE:
-                $token = $event->getResponse()->headers->get('X-Debug-Token');
-                if (null === $token) {
-                    break;
-                }
-                $this->stopwatch->stopSection($token);
-                break;
-            case KernelEvents::TERMINATE:
-                // In the special case described in the `preDispatch` method above, the `$token` section
-                // does not exist, then closing it throws an exception which must be caught.
-                $token = $event->getResponse()->headers->get('X-Debug-Token');
-                if (null === $token) {
-                    break;
-                }
-                try {
-                    $this->stopwatch->stopSection($token);
-                } catch (\LogicException $e) {
-                }
-                break;
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php b/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php
deleted file mode 100644
index 5eb833b51d0742c1d566d1433af1a71f57d59767..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Composer\Autoload\ClassLoader;
-use Symfony\Component\Debug\DebugClassLoader as LegacyDebugClassLoader;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\ErrorHandler\DebugClassLoader;
-use Symfony\Component\HttpKernel\Kernel;
-
-/**
- * Sets the classes to compile in the cache for the container.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AddAnnotatedClassesToCachePass implements CompilerPassInterface
-{
-    private $kernel;
-
-    public function __construct(Kernel $kernel)
-    {
-        $this->kernel = $kernel;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $annotatedClasses = $this->kernel->getAnnotatedClassesToCompile();
-        foreach ($container->getExtensions() as $extension) {
-            if ($extension instanceof Extension) {
-                $annotatedClasses = array_merge($annotatedClasses, $extension->getAnnotatedClassesToCompile());
-            }
-        }
-
-        $existingClasses = $this->getClassesInComposerClassMaps();
-
-        $annotatedClasses = $container->getParameterBag()->resolveValue($annotatedClasses);
-        $this->kernel->setAnnotatedClassCache($this->expandClasses($annotatedClasses, $existingClasses));
-    }
-
-    /**
-     * Expands the given class patterns using a list of existing classes.
-     *
-     * @param array $patterns The class patterns to expand
-     * @param array $classes  The existing classes to match against the patterns
-     */
-    private function expandClasses(array $patterns, array $classes): array
-    {
-        $expanded = [];
-
-        // Explicit classes declared in the patterns are returned directly
-        foreach ($patterns as $key => $pattern) {
-            if ('\\' !== substr($pattern, -1) && false === strpos($pattern, '*')) {
-                unset($patterns[$key]);
-                $expanded[] = ltrim($pattern, '\\');
-            }
-        }
-
-        // Match patterns with the classes list
-        $regexps = $this->patternsToRegexps($patterns);
-
-        foreach ($classes as $class) {
-            $class = ltrim($class, '\\');
-
-            if ($this->matchAnyRegexps($class, $regexps)) {
-                $expanded[] = $class;
-            }
-        }
-
-        return array_unique($expanded);
-    }
-
-    private function getClassesInComposerClassMaps(): array
-    {
-        $classes = [];
-
-        foreach (spl_autoload_functions() as $function) {
-            if (!\is_array($function)) {
-                continue;
-            }
-
-            if ($function[0] instanceof DebugClassLoader || $function[0] instanceof LegacyDebugClassLoader) {
-                $function = $function[0]->getClassLoader();
-            }
-
-            if (\is_array($function) && $function[0] instanceof ClassLoader) {
-                $classes += array_filter($function[0]->getClassMap());
-            }
-        }
-
-        return array_keys($classes);
-    }
-
-    private function patternsToRegexps(array $patterns): array
-    {
-        $regexps = [];
-
-        foreach ($patterns as $pattern) {
-            // Escape user input
-            $regex = preg_quote(ltrim($pattern, '\\'));
-
-            // Wildcards * and **
-            $regex = strtr($regex, ['\\*\\*' => '.*?', '\\*' => '[^\\\\]*?']);
-
-            // If this class does not end by a slash, anchor the end
-            if ('\\' !== substr($regex, -1)) {
-                $regex .= '$';
-            }
-
-            $regexps[] = '{^\\\\'.$regex.'}';
-        }
-
-        return $regexps;
-    }
-
-    private function matchAnyRegexps(string $class, array $regexps): bool
-    {
-        $isTest = false !== strpos($class, 'Test');
-
-        foreach ($regexps as $regex) {
-            if ($isTest && false === strpos($regex, 'Test')) {
-                continue;
-            }
-
-            if (preg_match($regex, '\\'.$class)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/ConfigurableExtension.php b/vendor/symfony/http-kernel/DependencyInjection/ConfigurableExtension.php
deleted file mode 100644
index 072c35f1c1cc6b1a9e9256fb706dfff6a24a1790..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/ConfigurableExtension.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * This extension sub-class provides first-class integration with the
- * Config/Definition Component.
- *
- * You can use this as base class if
- *
- *    a) you use the Config/Definition component for configuration,
- *    b) your configuration class is named "Configuration", and
- *    c) the configuration class resides in the DependencyInjection sub-folder.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-abstract class ConfigurableExtension extends Extension
-{
-    /**
-     * {@inheritdoc}
-     */
-    final public function load(array $configs, ContainerBuilder $container)
-    {
-        $this->loadInternal($this->processConfiguration($this->getConfiguration($configs, $container), $configs), $container);
-    }
-
-    /**
-     * Configures the passed container according to the merged configuration.
-     */
-    abstract protected function loadInternal(array $mergedConfig, ContainerBuilder $container);
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/ControllerArgumentValueResolverPass.php b/vendor/symfony/http-kernel/DependencyInjection/ControllerArgumentValueResolverPass.php
deleted file mode 100644
index 705c88dbfaffc6d6cc1bd0237f330a4260a89bb8..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/ControllerArgumentValueResolverPass.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\TraceableValueResolver;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-/**
- * Gathers and configures the argument value resolvers.
- *
- * @author Iltar van der Berg <kjarli@gmail.com>
- */
-class ControllerArgumentValueResolverPass implements CompilerPassInterface
-{
-    use PriorityTaggedServiceTrait;
-
-    private $argumentResolverService;
-    private $argumentValueResolverTag;
-    private $traceableResolverStopwatch;
-
-    public function __construct(string $argumentResolverService = 'argument_resolver', string $argumentValueResolverTag = 'controller.argument_value_resolver', string $traceableResolverStopwatch = 'debug.stopwatch')
-    {
-        $this->argumentResolverService = $argumentResolverService;
-        $this->argumentValueResolverTag = $argumentValueResolverTag;
-        $this->traceableResolverStopwatch = $traceableResolverStopwatch;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        if (!$container->hasDefinition($this->argumentResolverService)) {
-            return;
-        }
-
-        $resolvers = $this->findAndSortTaggedServices($this->argumentValueResolverTag, $container);
-
-        if ($container->getParameter('kernel.debug') && class_exists(Stopwatch::class) && $container->has($this->traceableResolverStopwatch)) {
-            foreach ($resolvers as $resolverReference) {
-                $id = (string) $resolverReference;
-                $container->register("debug.$id", TraceableValueResolver::class)
-                    ->setDecoratedService($id)
-                    ->setArguments([new Reference("debug.$id.inner"), new Reference($this->traceableResolverStopwatch)]);
-            }
-        }
-
-        $container
-            ->getDefinition($this->argumentResolverService)
-            ->replaceArgument(1, new IteratorArgument($resolvers))
-        ;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/Extension.php b/vendor/symfony/http-kernel/DependencyInjection/Extension.php
deleted file mode 100644
index db376e6d9fb940badff03a46ef805c768b364073..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/Extension.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Extension\Extension as BaseExtension;
-
-/**
- * Allow adding classes to the class cache.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Extension extends BaseExtension
-{
-    private $annotatedClasses = [];
-
-    /**
-     * Gets the annotated classes to cache.
-     *
-     * @return array An array of classes
-     */
-    public function getAnnotatedClassesToCompile()
-    {
-        return $this->annotatedClasses;
-    }
-
-    /**
-     * Adds annotated classes to the class cache.
-     *
-     * @param array $annotatedClasses An array of class patterns
-     */
-    public function addAnnotatedClassesToCompile(array $annotatedClasses)
-    {
-        $this->annotatedClasses = array_merge($this->annotatedClasses, $annotatedClasses);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php b/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php
deleted file mode 100644
index 432f767202d770280f9bd121ff21baf7b2a75ea4..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface;
-
-/**
- * Adds services tagged kernel.fragment_renderer as HTTP content rendering strategies.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FragmentRendererPass implements CompilerPassInterface
-{
-    private $handlerService;
-    private $rendererTag;
-
-    public function __construct(string $handlerService = 'fragment.handler', string $rendererTag = 'kernel.fragment_renderer')
-    {
-        $this->handlerService = $handlerService;
-        $this->rendererTag = $rendererTag;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        if (!$container->hasDefinition($this->handlerService)) {
-            return;
-        }
-
-        $definition = $container->getDefinition($this->handlerService);
-        $renderers = [];
-        foreach ($container->findTaggedServiceIds($this->rendererTag, true) as $id => $tags) {
-            $def = $container->getDefinition($id);
-            $class = $container->getParameterBag()->resolveValue($def->getClass());
-
-            if (!$r = $container->getReflectionClass($class)) {
-                throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id));
-            }
-            if (!$r->isSubclassOf(FragmentRendererInterface::class)) {
-                throw new InvalidArgumentException(sprintf('Service "%s" must implement interface "%s".', $id, FragmentRendererInterface::class));
-            }
-
-            foreach ($tags as $tag) {
-                $renderers[$tag['alias']] = new Reference($id);
-            }
-        }
-
-        $definition->replaceArgument(0, ServiceLocatorTagPass::register($container, $renderers));
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php b/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php
deleted file mode 100644
index 526c11faacda27526e29e2ca6b7b3d21a3a97f36..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Psr\Container\ContainerInterface;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Fragment\FragmentHandler;
-
-/**
- * Lazily loads fragment renderers from the dependency injection container.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class LazyLoadingFragmentHandler extends FragmentHandler
-{
-    private $container;
-    private $initialized = [];
-
-    public function __construct(ContainerInterface $container, RequestStack $requestStack, bool $debug = false)
-    {
-        $this->container = $container;
-
-        parent::__construct($requestStack, [], $debug);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function render($uri, $renderer = 'inline', array $options = [])
-    {
-        if (!isset($this->initialized[$renderer]) && $this->container->has($renderer)) {
-            $this->addRenderer($this->container->get($renderer));
-            $this->initialized[$renderer] = true;
-        }
-
-        return parent::render($uri, $renderer, $options);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/LoggerPass.php b/vendor/symfony/http-kernel/DependencyInjection/LoggerPass.php
deleted file mode 100644
index b6df1f6e614c8b570a9b4b1f5cef5ad307707132..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/LoggerPass.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\HttpKernel\Log\Logger;
-
-/**
- * Registers the default logger if necessary.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class LoggerPass implements CompilerPassInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $container->setAlias(LoggerInterface::class, 'logger')
-            ->setPublic(false);
-
-        if ($container->has('logger')) {
-            return;
-        }
-
-        $container->register('logger', Logger::class)
-            ->setPublic(false);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php b/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php
deleted file mode 100644
index 83e1b758de75b520c46e26973793a39013fa3cc8..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Compiler\MergeExtensionConfigurationPass as BaseMergeExtensionConfigurationPass;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * Ensures certain extensions are always loaded.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class MergeExtensionConfigurationPass extends BaseMergeExtensionConfigurationPass
-{
-    private $extensions;
-
-    public function __construct(array $extensions)
-    {
-        $this->extensions = $extensions;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        foreach ($this->extensions as $extension) {
-            if (!\count($container->getExtensionConfig($extension))) {
-                $container->loadFromExtension($extension, []);
-            }
-        }
-
-        parent::process($container);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php b/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
deleted file mode 100644
index f214fd125a3ef0e3e555268ba9b3ffa666a0e7ca..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
-use Symfony\Component\DependencyInjection\ChildDefinition;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass;
-use Symfony\Component\DependencyInjection\ContainerAwareInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\LazyProxy\ProxyHelper;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\TypedReference;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Creates the service-locators required by ServiceValueResolver.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface
-{
-    private $resolverServiceId;
-    private $controllerTag;
-    private $controllerLocator;
-    private $notTaggedControllerResolverServiceId;
-
-    public function __construct(string $resolverServiceId = 'argument_resolver.service', string $controllerTag = 'controller.service_arguments', string $controllerLocator = 'argument_resolver.controller_locator', string $notTaggedControllerResolverServiceId = 'argument_resolver.not_tagged_controller')
-    {
-        $this->resolverServiceId = $resolverServiceId;
-        $this->controllerTag = $controllerTag;
-        $this->controllerLocator = $controllerLocator;
-        $this->notTaggedControllerResolverServiceId = $notTaggedControllerResolverServiceId;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        if (false === $container->hasDefinition($this->resolverServiceId) && false === $container->hasDefinition($this->notTaggedControllerResolverServiceId)) {
-            return;
-        }
-
-        $parameterBag = $container->getParameterBag();
-        $controllers = [];
-
-        foreach ($container->findTaggedServiceIds($this->controllerTag, true) as $id => $tags) {
-            $def = $container->getDefinition($id);
-            $def->setPublic(true);
-            $class = $def->getClass();
-            $autowire = $def->isAutowired();
-            $bindings = $def->getBindings();
-
-            // resolve service class, taking parent definitions into account
-            while ($def instanceof ChildDefinition) {
-                $def = $container->findDefinition($def->getParent());
-                $class = $class ?: $def->getClass();
-                $bindings += $def->getBindings();
-            }
-            $class = $parameterBag->resolveValue($class);
-
-            if (!$r = $container->getReflectionClass($class)) {
-                throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id));
-            }
-            $isContainerAware = $r->implementsInterface(ContainerAwareInterface::class) || is_subclass_of($class, AbstractController::class);
-
-            // get regular public methods
-            $methods = [];
-            $arguments = [];
-            foreach ($r->getMethods(\ReflectionMethod::IS_PUBLIC) as $r) {
-                if ('setContainer' === $r->name && $isContainerAware) {
-                    continue;
-                }
-                if (!$r->isConstructor() && !$r->isDestructor() && !$r->isAbstract()) {
-                    $methods[strtolower($r->name)] = [$r, $r->getParameters()];
-                }
-            }
-
-            // validate and collect explicit per-actions and per-arguments service references
-            foreach ($tags as $attributes) {
-                if (!isset($attributes['action']) && !isset($attributes['argument']) && !isset($attributes['id'])) {
-                    $autowire = true;
-                    continue;
-                }
-                foreach (['action', 'argument', 'id'] as $k) {
-                    if (!isset($attributes[$k][0])) {
-                        throw new InvalidArgumentException(sprintf('Missing "%s" attribute on tag "%s" %s for service "%s".', $k, $this->controllerTag, json_encode($attributes, \JSON_UNESCAPED_UNICODE), $id));
-                    }
-                }
-                if (!isset($methods[$action = strtolower($attributes['action'])])) {
-                    throw new InvalidArgumentException(sprintf('Invalid "action" attribute on tag "%s" for service "%s": no public "%s()" method found on class "%s".', $this->controllerTag, $id, $attributes['action'], $class));
-                }
-                list($r, $parameters) = $methods[$action];
-                $found = false;
-
-                foreach ($parameters as $p) {
-                    if ($attributes['argument'] === $p->name) {
-                        if (!isset($arguments[$r->name][$p->name])) {
-                            $arguments[$r->name][$p->name] = $attributes['id'];
-                        }
-                        $found = true;
-                        break;
-                    }
-                }
-
-                if (!$found) {
-                    throw new InvalidArgumentException(sprintf('Invalid "%s" tag for service "%s": method "%s()" has no "%s" argument on class "%s".', $this->controllerTag, $id, $r->name, $attributes['argument'], $class));
-                }
-            }
-
-            foreach ($methods as list($r, $parameters)) {
-                /** @var \ReflectionMethod $r */
-
-                // create a per-method map of argument-names to service/type-references
-                $args = [];
-                foreach ($parameters as $p) {
-                    /** @var \ReflectionParameter $p */
-                    $type = ltrim($target = ProxyHelper::getTypeHint($r, $p), '\\');
-                    $invalidBehavior = ContainerInterface::IGNORE_ON_INVALID_REFERENCE;
-
-                    if (isset($arguments[$r->name][$p->name])) {
-                        $target = $arguments[$r->name][$p->name];
-                        if ('?' !== $target[0]) {
-                            $invalidBehavior = ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE;
-                        } elseif ('' === $target = (string) substr($target, 1)) {
-                            throw new InvalidArgumentException(sprintf('A "%s" tag must have non-empty "id" attributes for service "%s".', $this->controllerTag, $id));
-                        } elseif ($p->allowsNull() && !$p->isOptional()) {
-                            $invalidBehavior = ContainerInterface::NULL_ON_INVALID_REFERENCE;
-                        }
-                    } elseif (isset($bindings[$bindingName = $type.' $'.$p->name]) || isset($bindings[$bindingName = '$'.$p->name]) || isset($bindings[$bindingName = $type])) {
-                        $binding = $bindings[$bindingName];
-
-                        list($bindingValue, $bindingId, , $bindingType, $bindingFile) = $binding->getValues();
-                        $binding->setValues([$bindingValue, $bindingId, true, $bindingType, $bindingFile]);
-
-                        if (!$bindingValue instanceof Reference) {
-                            $args[$p->name] = new Reference('.value.'.$container->hash($bindingValue));
-                            $container->register((string) $args[$p->name], 'mixed')
-                                ->setFactory('current')
-                                ->addArgument([$bindingValue]);
-                        } else {
-                            $args[$p->name] = $bindingValue;
-                        }
-
-                        continue;
-                    } elseif (!$type || !$autowire || '\\' !== $target[0]) {
-                        continue;
-                    } elseif (!$p->allowsNull()) {
-                        $invalidBehavior = ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE;
-                    }
-
-                    if (Request::class === $type) {
-                        continue;
-                    }
-
-                    if ($type && !$p->isOptional() && !$p->allowsNull() && !class_exists($type) && !interface_exists($type, false)) {
-                        $message = sprintf('Cannot determine controller argument for "%s::%s()": the $%s argument is type-hinted with the non-existent class or interface: "%s".', $class, $r->name, $p->name, $type);
-
-                        // see if the type-hint lives in the same namespace as the controller
-                        if (0 === strncmp($type, $class, strrpos($class, '\\'))) {
-                            $message .= ' Did you forget to add a use statement?';
-                        }
-
-                        throw new InvalidArgumentException($message);
-                    }
-
-                    $target = ltrim($target, '\\');
-                    $args[$p->name] = $type ? new TypedReference($target, $type, $invalidBehavior, $p->name) : new Reference($target, $invalidBehavior);
-                }
-                // register the maps as a per-method service-locators
-                if ($args) {
-                    $controllers[$id.'::'.$r->name] = ServiceLocatorTagPass::register($container, $args);
-                }
-            }
-        }
-
-        $controllerLocatorRef = ServiceLocatorTagPass::register($container, $controllers);
-
-        if ($container->hasDefinition($this->resolverServiceId)) {
-            $container->getDefinition($this->resolverServiceId)
-                ->replaceArgument(0, $controllerLocatorRef);
-        }
-
-        if ($container->hasDefinition($this->notTaggedControllerResolverServiceId)) {
-            $container->getDefinition($this->notTaggedControllerResolverServiceId)
-                ->replaceArgument(0, $controllerLocatorRef);
-        }
-
-        $container->setAlias($this->controllerLocator, (string) $controllerLocatorRef);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php b/vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php
deleted file mode 100644
index 0efb164b72207ca26d8cac1a17304a23c03b8cb3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-
-/**
- * Register all services that have the "kernel.locale_aware" tag into the listener.
- *
- * @author Pierre Bobiet <pierrebobiet@gmail.com>
- */
-class RegisterLocaleAwareServicesPass implements CompilerPassInterface
-{
-    private $listenerServiceId;
-    private $localeAwareTag;
-
-    public function __construct(string $listenerServiceId = 'locale_aware_listener', string $localeAwareTag = 'kernel.locale_aware')
-    {
-        $this->listenerServiceId = $listenerServiceId;
-        $this->localeAwareTag = $localeAwareTag;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        if (!$container->hasDefinition($this->listenerServiceId)) {
-            return;
-        }
-
-        $services = [];
-
-        foreach ($container->findTaggedServiceIds($this->localeAwareTag) as $id => $tags) {
-            $services[] = new Reference($id);
-        }
-
-        if (!$services) {
-            $container->removeDefinition($this->listenerServiceId);
-
-            return;
-        }
-
-        $container
-            ->getDefinition($this->listenerServiceId)
-            ->setArgument(0, new IteratorArgument($services))
-        ;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php b/vendor/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php
deleted file mode 100644
index 596b6188f66cbea72d97cfa4a06460409ffc57ce..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * Removes empty service-locators registered for ServiceValueResolver.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class RemoveEmptyControllerArgumentLocatorsPass implements CompilerPassInterface
-{
-    private $controllerLocator;
-
-    public function __construct(string $controllerLocator = 'argument_resolver.controller_locator')
-    {
-        $this->controllerLocator = $controllerLocator;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        $controllerLocator = $container->findDefinition($this->controllerLocator);
-        $controllers = $controllerLocator->getArgument(0);
-
-        foreach ($controllers as $controller => $argumentRef) {
-            $argumentLocator = $container->getDefinition((string) $argumentRef->getValues()[0]);
-
-            if (!$argumentLocator->getArgument(0)) {
-                // remove empty argument locators
-                $reason = sprintf('Removing service-argument resolver for controller "%s": no corresponding services exist for the referenced types.', $controller);
-            } else {
-                // any methods listed for call-at-instantiation cannot be actions
-                $reason = false;
-                list($id, $action) = explode('::', $controller);
-                $controllerDef = $container->getDefinition($id);
-                foreach ($controllerDef->getMethodCalls() as list($method)) {
-                    if (0 === strcasecmp($action, $method)) {
-                        $reason = sprintf('Removing method "%s" of service "%s" from controller candidates: the method is called at instantiation, thus cannot be an action.', $action, $id);
-                        break;
-                    }
-                }
-                if (!$reason) {
-                    // Deprecated since Symfony 4.1. See Symfony\Component\HttpKernel\Controller\ContainerControllerResolver
-                    $controllers[$id.':'.$action] = $argumentRef;
-
-                    if ('__invoke' === $action) {
-                        $controllers[$id] = $argumentRef;
-                    }
-                    continue;
-                }
-            }
-
-            unset($controllers[$controller]);
-            $container->log($this, $reason);
-        }
-
-        $controllerLocator->replaceArgument(0, $controllers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php b/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php
deleted file mode 100644
index b5e46106a7422eb41ff14b4999dd46aaee9ea657..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-use Symfony\Component\DependencyInjection\Reference;
-
-/**
- * @author Alexander M. Turek <me@derrabus.de>
- */
-class ResettableServicePass implements CompilerPassInterface
-{
-    private $tagName;
-
-    public function __construct(string $tagName = 'kernel.reset')
-    {
-        $this->tagName = $tagName;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function process(ContainerBuilder $container)
-    {
-        if (!$container->has('services_resetter')) {
-            return;
-        }
-
-        $services = $methods = [];
-
-        foreach ($container->findTaggedServiceIds($this->tagName, true) as $id => $tags) {
-            $services[$id] = new Reference($id, ContainerInterface::IGNORE_ON_UNINITIALIZED_REFERENCE);
-
-            foreach ($tags as $attributes) {
-                if (!isset($attributes['method'])) {
-                    throw new RuntimeException(sprintf('Tag "%s" requires the "method" attribute to be set.', $this->tagName));
-                }
-
-                if (!isset($methods[$id])) {
-                    $methods[$id] = [];
-                }
-
-                $methods[$id][] = $attributes['method'];
-            }
-        }
-
-        if (!$services) {
-            $container->removeAlias('services_resetter');
-            $container->removeDefinition('services_resetter');
-
-            return;
-        }
-
-        $container->findDefinition('services_resetter')
-            ->setArgument(0, new IteratorArgument($services))
-            ->setArgument(1, $methods);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php b/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php
deleted file mode 100644
index d9e0028ce12278bd9ecbb635cd6ebaa23a31a89e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DependencyInjection;
-
-use Symfony\Contracts\Service\ResetInterface;
-
-/**
- * Resets provided services.
- *
- * @author Alexander M. Turek <me@derrabus.de>
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-class ServicesResetter implements ResetInterface
-{
-    private $resettableServices;
-    private $resetMethods;
-
-    public function __construct(\Traversable $resettableServices, array $resetMethods)
-    {
-        $this->resettableServices = $resettableServices;
-        $this->resetMethods = $resetMethods;
-    }
-
-    public function reset()
-    {
-        foreach ($this->resettableServices as $id => $service) {
-            foreach ((array) $this->resetMethods[$id] as $resetMethod) {
-                $service->$resetMethod();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php b/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php
deleted file mode 100644
index 5efb80cf8f44f259375667db05851134d161239d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-/**
- * Allows filtering of controller arguments.
- *
- * You can call getController() to retrieve the controller and getArguments
- * to retrieve the current arguments. With setArguments() you can replace
- * arguments that are used to call the controller.
- *
- * Arguments set in the event must be compatible with the signature of the
- * controller.
- *
- * @author Christophe Coevoet <stof@notk.org>
- *
- * @final since Symfony 4.4
- */
-class ControllerArgumentsEvent extends FilterControllerArgumentsEvent
-{
-}
diff --git a/vendor/symfony/http-kernel/Event/ControllerEvent.php b/vendor/symfony/http-kernel/Event/ControllerEvent.php
deleted file mode 100644
index 7b642eaa335328f47364268819c2bbba22ddd16d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/ControllerEvent.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-/**
- * Allows filtering of a controller callable.
- *
- * You can call getController() to retrieve the current controller. With
- * setController() you can set a new controller that is used in the processing
- * of the request.
- *
- * Controllers should be callables.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @final since Symfony 4.4
- */
-class ControllerEvent extends FilterControllerEvent
-{
-}
diff --git a/vendor/symfony/http-kernel/Event/ExceptionEvent.php b/vendor/symfony/http-kernel/Event/ExceptionEvent.php
deleted file mode 100644
index 3dae0d4ce69a2818525ee5250cc08eb8af26cb02..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/ExceptionEvent.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-/**
- * Allows to create a response for a thrown exception.
- *
- * Call setResponse() to set the response that will be returned for the
- * current request. The propagation of this event is stopped as soon as a
- * response is set.
- *
- * You can also call setException() to replace the thrown exception. This
- * exception will be thrown if no response is set during processing of this
- * event.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @final since Symfony 4.4
- */
-class ExceptionEvent extends GetResponseForExceptionEvent
-{
-}
diff --git a/vendor/symfony/http-kernel/Event/FilterControllerArgumentsEvent.php b/vendor/symfony/http-kernel/Event/FilterControllerArgumentsEvent.php
deleted file mode 100644
index f3c5dc34aa50a6e7840839e8e93b3e2152f303e9..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/FilterControllerArgumentsEvent.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @deprecated since Symfony 4.3, use ControllerArgumentsEvent instead
- */
-class FilterControllerArgumentsEvent extends FilterControllerEvent
-{
-    private $arguments;
-
-    public function __construct(HttpKernelInterface $kernel, callable $controller, array $arguments, Request $request, ?int $requestType)
-    {
-        parent::__construct($kernel, $controller, $request, $requestType);
-
-        $this->arguments = $arguments;
-    }
-
-    /**
-     * @return array
-     */
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    public function setArguments(array $arguments)
-    {
-        $this->arguments = $arguments;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/FilterControllerEvent.php b/vendor/symfony/http-kernel/Event/FilterControllerEvent.php
deleted file mode 100644
index 74fa681f809849de98c4dfbcb5ec3762c128b595..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/FilterControllerEvent.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @deprecated since Symfony 4.3, use ControllerEvent instead
- */
-class FilterControllerEvent extends KernelEvent
-{
-    private $controller;
-
-    public function __construct(HttpKernelInterface $kernel, callable $controller, Request $request, ?int $requestType)
-    {
-        parent::__construct($kernel, $request, $requestType);
-
-        $this->setController($controller);
-    }
-
-    /**
-     * Returns the current controller.
-     *
-     * @return callable
-     */
-    public function getController()
-    {
-        return $this->controller;
-    }
-
-    public function setController(callable $controller)
-    {
-        $this->controller = $controller;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/FilterResponseEvent.php b/vendor/symfony/http-kernel/Event/FilterResponseEvent.php
deleted file mode 100644
index eaa2e8256540eed2aab76d08d0dddb8dccd188e0..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/FilterResponseEvent.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @deprecated since Symfony 4.3, use ResponseEvent instead
- */
-class FilterResponseEvent extends KernelEvent
-{
-    private $response;
-
-    public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, Response $response)
-    {
-        parent::__construct($kernel, $request, $requestType);
-
-        $this->setResponse($response);
-    }
-
-    /**
-     * Returns the current response object.
-     *
-     * @return Response
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-
-    /**
-     * Sets a new response object.
-     */
-    public function setResponse(Response $response)
-    {
-        $this->response = $response;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/FinishRequestEvent.php b/vendor/symfony/http-kernel/Event/FinishRequestEvent.php
deleted file mode 100644
index 9374d2db954eda88407e5222db2014cfd88f7558..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/FinishRequestEvent.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-/**
- * Triggered whenever a request is fully processed.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- *
- * @final since Symfony 4.4
- */
-class FinishRequestEvent extends KernelEvent
-{
-}
diff --git a/vendor/symfony/http-kernel/Event/GetResponseEvent.php b/vendor/symfony/http-kernel/Event/GetResponseEvent.php
deleted file mode 100644
index fbed7beef570ffa4981ab6a916e4f0e84d3351d6..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/GetResponseEvent.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * @deprecated since Symfony 4.3, use RequestEvent instead
- */
-class GetResponseEvent extends KernelEvent
-{
-    private $response;
-
-    /**
-     * Returns the response object.
-     *
-     * @return Response|null
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-
-    /**
-     * Sets a response and stops event propagation.
-     */
-    public function setResponse(Response $response)
-    {
-        $this->response = $response;
-
-        $this->stopPropagation();
-    }
-
-    /**
-     * Returns whether a response was set.
-     *
-     * @return bool Whether a response was set
-     */
-    public function hasResponse()
-    {
-        return null !== $this->response;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/GetResponseForControllerResultEvent.php b/vendor/symfony/http-kernel/Event/GetResponseForControllerResultEvent.php
deleted file mode 100644
index 4e70dbc63e53e596837e11b9002a40aa6df9ea89..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/GetResponseForControllerResultEvent.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @deprecated since Symfony 4.3, use ViewEvent instead
- */
-class GetResponseForControllerResultEvent extends RequestEvent
-{
-    /**
-     * The return value of the controller.
-     *
-     * @var mixed
-     */
-    private $controllerResult;
-
-    public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, $controllerResult)
-    {
-        parent::__construct($kernel, $request, $requestType);
-
-        $this->controllerResult = $controllerResult;
-    }
-
-    /**
-     * Returns the return value of the controller.
-     *
-     * @return mixed The controller return value
-     */
-    public function getControllerResult()
-    {
-        return $this->controllerResult;
-    }
-
-    /**
-     * Assigns the return value of the controller.
-     *
-     * @param mixed $controllerResult The controller return value
-     */
-    public function setControllerResult($controllerResult)
-    {
-        $this->controllerResult = $controllerResult;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php b/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php
deleted file mode 100644
index bfec654ed5570c8de99e0cdf073d06ab7d6dd9ee..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-use Symfony\Component\Debug\Exception\FatalThrowableError;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @deprecated since Symfony 4.3, use ExceptionEvent instead
- */
-class GetResponseForExceptionEvent extends RequestEvent
-{
-    private $throwable;
-    private $exception;
-    private $allowCustomResponseCode = false;
-
-    public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, \Throwable $e)
-    {
-        parent::__construct($kernel, $request, $requestType);
-
-        $this->setThrowable($e);
-    }
-
-    public function getThrowable(): \Throwable
-    {
-        return $this->throwable;
-    }
-
-    /**
-     * Replaces the thrown exception.
-     *
-     * This exception will be thrown if no response is set in the event.
-     */
-    public function setThrowable(\Throwable $exception): void
-    {
-        $this->exception = null;
-        $this->throwable = $exception;
-    }
-
-    /**
-     * @deprecated since Symfony 4.4, use getThrowable instead
-     *
-     * @return \Exception The thrown exception
-     */
-    public function getException()
-    {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.4, use "getThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED);
-
-        return $this->exception ?? $this->exception = $this->throwable instanceof \Exception ? $this->throwable : new FatalThrowableError($this->throwable);
-    }
-
-    /**
-     * @deprecated since Symfony 4.4, use setThrowable instead
-     *
-     * @param \Exception $exception The thrown exception
-     */
-    public function setException(\Exception $exception)
-    {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.4, use "setThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED);
-
-        $this->throwable = $this->exception = $exception;
-    }
-
-    /**
-     * Mark the event as allowing a custom response code.
-     */
-    public function allowCustomResponseCode()
-    {
-        $this->allowCustomResponseCode = true;
-    }
-
-    /**
-     * Returns true if the event allows a custom response code.
-     *
-     * @return bool
-     */
-    public function isAllowingCustomResponseCode()
-    {
-        return $this->allowCustomResponseCode;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/KernelEvent.php b/vendor/symfony/http-kernel/Event/KernelEvent.php
deleted file mode 100644
index f6dff06ac855ed19c9c1f442b9496972ced81447..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/KernelEvent.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * Base class for events thrown in the HttpKernel component.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class KernelEvent extends Event
-{
-    private $kernel;
-    private $request;
-    private $requestType;
-
-    /**
-     * @param int $requestType The request type the kernel is currently processing; one of
-     *                         HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST
-     */
-    public function __construct(HttpKernelInterface $kernel, Request $request, ?int $requestType)
-    {
-        $this->kernel = $kernel;
-        $this->request = $request;
-        $this->requestType = $requestType;
-    }
-
-    /**
-     * Returns the kernel in which this event was thrown.
-     *
-     * @return HttpKernelInterface
-     */
-    public function getKernel()
-    {
-        return $this->kernel;
-    }
-
-    /**
-     * Returns the request the kernel is currently processing.
-     *
-     * @return Request
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-
-    /**
-     * Returns the request type the kernel is currently processing.
-     *
-     * @return int One of HttpKernelInterface::MASTER_REQUEST and
-     *             HttpKernelInterface::SUB_REQUEST
-     */
-    public function getRequestType()
-    {
-        return $this->requestType;
-    }
-
-    /**
-     * Checks if this is a master request.
-     *
-     * @return bool True if the request is a master request
-     */
-    public function isMasterRequest()
-    {
-        return HttpKernelInterface::MASTER_REQUEST === $this->requestType;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/PostResponseEvent.php b/vendor/symfony/http-kernel/Event/PostResponseEvent.php
deleted file mode 100644
index b86bf077424120725898e0d6fa7e173222a0fd6a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/PostResponseEvent.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @deprecated since Symfony 4.3, use TerminateEvent instead
- */
-class PostResponseEvent extends KernelEvent
-{
-    private $response;
-
-    public function __construct(HttpKernelInterface $kernel, Request $request, Response $response)
-    {
-        parent::__construct($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-
-        $this->response = $response;
-    }
-
-    /**
-     * Returns the response for which this event was thrown.
-     *
-     * @return Response
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/RequestEvent.php b/vendor/symfony/http-kernel/Event/RequestEvent.php
deleted file mode 100644
index c1beb929f31ea6e2538afaa5819aa51dfba5d963..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/RequestEvent.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-/**
- * Allows to create a response for a request.
- *
- * Call setResponse() to set the response that will be returned for the
- * current request. The propagation of this event is stopped as soon as a
- * response is set.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class RequestEvent extends GetResponseEvent
-{
-}
diff --git a/vendor/symfony/http-kernel/Event/ResponseEvent.php b/vendor/symfony/http-kernel/Event/ResponseEvent.php
deleted file mode 100644
index eae8c39cc3358eb19331a380aff09974e0a8a59b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/ResponseEvent.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-/**
- * Allows to filter a Response object.
- *
- * You can call getResponse() to retrieve the current response. With
- * setResponse() you can set a new response that will be returned to the
- * browser.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @final since Symfony 4.4
- */
-class ResponseEvent extends FilterResponseEvent
-{
-}
diff --git a/vendor/symfony/http-kernel/Event/TerminateEvent.php b/vendor/symfony/http-kernel/Event/TerminateEvent.php
deleted file mode 100644
index 6a74445d6781d79d96216171831a680dd0598d00..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/TerminateEvent.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-/**
- * Allows to execute logic after a response was sent.
- *
- * Since it's only triggered on master requests, the `getRequestType()` method
- * will always return the value of `HttpKernelInterface::MASTER_REQUEST`.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- *
- * @final since Symfony 4.4
- */
-class TerminateEvent extends PostResponseEvent
-{
-}
diff --git a/vendor/symfony/http-kernel/Event/ViewEvent.php b/vendor/symfony/http-kernel/Event/ViewEvent.php
deleted file mode 100644
index da50da82a9fcdb88c010e60a008fb4e20fa52b28..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Event/ViewEvent.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-/**
- * Allows to create a response for the return value of a controller.
- *
- * Call setResponse() to set the response that will be returned for the
- * current request. The propagation of this event is stopped as soon as a
- * response is set.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @final since Symfony 4.4
- */
-class ViewEvent extends GetResponseForControllerResultEvent
-{
-}
diff --git a/vendor/symfony/http-kernel/EventListener/AbstractSessionListener.php b/vendor/symfony/http-kernel/EventListener/AbstractSessionListener.php
deleted file mode 100644
index 0a6789d85ae2e7e9fb1b897eb6876ba5afff9c98..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/AbstractSessionListener.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Psr\Container\ContainerInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * Sets the session onto the request on the "kernel.request" event and saves
- * it on the "kernel.response" event.
- *
- * In addition, if the session has been started it overrides the Cache-Control
- * header in such a way that all caching is disabled in that case.
- * If you have a scenario where caching responses with session information in
- * them makes sense, you can disable this behaviour by setting the header
- * AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER on the response.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- * @author Tobias Schultze <http://tobion.de>
- *
- * @internal since Symfony 4.3
- */
-abstract class AbstractSessionListener implements EventSubscriberInterface
-{
-    const NO_AUTO_CACHE_CONTROL_HEADER = 'Symfony-Session-NoAutoCacheControl';
-
-    protected $container;
-    private $sessionUsageStack = [];
-
-    public function __construct(ContainerInterface $container = null)
-    {
-        $this->container = $container;
-    }
-
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $session = null;
-        $request = $event->getRequest();
-        if ($request->hasSession()) {
-            // no-op
-        } elseif (method_exists($request, 'setSessionFactory')) {
-            $request->setSessionFactory(function () { return $this->getSession(); });
-        } elseif ($session = $this->getSession()) {
-            $request->setSession($session);
-        }
-
-        $session = $session ?? ($this->container && $this->container->has('initialized_session') ? $this->container->get('initialized_session') : null);
-        $this->sessionUsageStack[] = $session instanceof Session ? $session->getUsageIndex() : 0;
-    }
-
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $response = $event->getResponse();
-        $autoCacheControl = !$response->headers->has(self::NO_AUTO_CACHE_CONTROL_HEADER);
-        // Always remove the internal header if present
-        $response->headers->remove(self::NO_AUTO_CACHE_CONTROL_HEADER);
-
-        if (!$session = $this->container && $this->container->has('initialized_session') ? $this->container->get('initialized_session') : $event->getRequest()->getSession()) {
-            return;
-        }
-
-        if ($session instanceof Session ? $session->getUsageIndex() !== end($this->sessionUsageStack) : $session->isStarted()) {
-            if ($autoCacheControl) {
-                $response
-                    ->setExpires(new \DateTime())
-                    ->setPrivate()
-                    ->setMaxAge(0)
-                    ->headers->addCacheControlDirective('must-revalidate');
-            }
-        }
-
-        if ($session->isStarted()) {
-            /*
-             * Saves the session, in case it is still open, before sending the response/headers.
-             *
-             * This ensures several things in case the developer did not save the session explicitly:
-             *
-             *  * If a session save handler without locking is used, it ensures the data is available
-             *    on the next request, e.g. after a redirect. PHPs auto-save at script end via
-             *    session_register_shutdown is executed after fastcgi_finish_request. So in this case
-             *    the data could be missing the next request because it might not be saved the moment
-             *    the new request is processed.
-             *  * A locking save handler (e.g. the native 'files') circumvents concurrency problems like
-             *    the one above. But by saving the session before long-running things in the terminate event,
-             *    we ensure the session is not blocked longer than needed.
-             *  * When regenerating the session ID no locking is involved in PHPs session design. See
-             *    https://bugs.php.net/61470 for a discussion. So in this case, the session must
-             *    be saved anyway before sending the headers with the new session ID. Otherwise session
-             *    data could get lost again for concurrent requests with the new ID. One result could be
-             *    that you get logged out after just logging in.
-             *
-             * This listener should be executed as one of the last listeners, so that previous listeners
-             * can still operate on the open session. This prevents the overhead of restarting it.
-             * Listeners after closing the session can still work with the session as usual because
-             * Symfonys session implementation starts the session on demand. So writing to it after
-             * it is saved will just restart it.
-             */
-            $session->save();
-        }
-    }
-
-    /**
-     * @internal
-     */
-    public function onFinishRequest(FinishRequestEvent $event)
-    {
-        if ($event->isMasterRequest()) {
-            array_pop($this->sessionUsageStack);
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::REQUEST => ['onKernelRequest', 128],
-            // low priority to come after regular response listeners, but higher than StreamedResponseListener
-            KernelEvents::RESPONSE => ['onKernelResponse', -1000],
-            KernelEvents::FINISH_REQUEST => ['onFinishRequest'],
-        ];
-    }
-
-    /**
-     * Gets the session object.
-     *
-     * @return SessionInterface|null A SessionInterface instance or null if no session is available
-     */
-    abstract protected function getSession();
-}
diff --git a/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php b/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php
deleted file mode 100644
index 86f179add761be59e56478909dbee37e246b50bc..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * TestSessionListener.
- *
- * Saves session in test environment.
- *
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @internal since Symfony 4.3
- */
-abstract class AbstractTestSessionListener implements EventSubscriberInterface
-{
-    private $sessionId;
-    private $sessionOptions;
-
-    public function __construct(array $sessionOptions = [])
-    {
-        $this->sessionOptions = $sessionOptions;
-    }
-
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        // bootstrap the session
-        if (!$session = $this->getSession()) {
-            return;
-        }
-
-        $cookies = $event->getRequest()->cookies;
-
-        if ($cookies->has($session->getName())) {
-            $this->sessionId = $cookies->get($session->getName());
-            $session->setId($this->sessionId);
-        }
-    }
-
-    /**
-     * Checks if session was initialized and saves if current request is master
-     * Runs on 'kernel.response' in test environment.
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $request = $event->getRequest();
-        if (!$request->hasSession()) {
-            return;
-        }
-
-        $session = $request->getSession();
-        if ($wasStarted = $session->isStarted()) {
-            $session->save();
-        }
-
-        if ($session instanceof Session ? !$session->isEmpty() || (null !== $this->sessionId && $session->getId() !== $this->sessionId) : $wasStarted) {
-            $params = session_get_cookie_params() + ['samesite' => null];
-            foreach ($this->sessionOptions as $k => $v) {
-                if (0 === strpos($k, 'cookie_')) {
-                    $params[substr($k, 7)] = $v;
-                }
-            }
-
-            foreach ($event->getResponse()->headers->getCookies() as $cookie) {
-                if ($session->getName() === $cookie->getName() && $params['path'] === $cookie->getPath() && $params['domain'] == $cookie->getDomain()) {
-                    return;
-                }
-            }
-
-            $event->getResponse()->headers->setCookie(new Cookie($session->getName(), $session->getId(), 0 === $params['lifetime'] ? 0 : time() + $params['lifetime'], $params['path'], $params['domain'], $params['secure'], $params['httponly'], false, $params['samesite'] ?: null));
-            $this->sessionId = $session->getId();
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::REQUEST => ['onKernelRequest', 192],
-            KernelEvents::RESPONSE => ['onKernelResponse', -128],
-        ];
-    }
-
-    /**
-     * Gets the session object.
-     *
-     * @return SessionInterface|null A SessionInterface instance or null if no session is available
-     */
-    abstract protected function getSession();
-}
diff --git a/vendor/symfony/http-kernel/EventListener/AddRequestFormatsListener.php b/vendor/symfony/http-kernel/EventListener/AddRequestFormatsListener.php
deleted file mode 100644
index 47c7069c9eadc3b7a612ce141fd872c4bce92c01..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/AddRequestFormatsListener.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * Adds configured formats to each request.
- *
- * @author Gildas Quemener <gildas.quemener@gmail.com>
- *
- * @final since Symfony 4.3
- */
-class AddRequestFormatsListener implements EventSubscriberInterface
-{
-    protected $formats;
-
-    public function __construct(array $formats)
-    {
-        $this->formats = $formats;
-    }
-
-    /**
-     * Adds request formats.
-     */
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $request = $event->getRequest();
-        foreach ($this->formats as $format => $mimeTypes) {
-            $request->setFormat($format, $mimeTypes);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public static function getSubscribedEvents()
-    {
-        return [KernelEvents::REQUEST => ['onKernelRequest', 100]];
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php b/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php
deleted file mode 100644
index f4781ccd8ec2f65ba302ca2f336af31599205f1e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php
+++ /dev/null
@@ -1,159 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Console\ConsoleEvents;
-use Symfony\Component\Console\Event\ConsoleEvent;
-use Symfony\Component\Console\Output\ConsoleOutputInterface;
-use Symfony\Component\Debug\ErrorHandler as LegacyErrorHandler;
-use Symfony\Component\Debug\Exception\FatalThrowableError;
-use Symfony\Component\ErrorHandler\ErrorHandler;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
-use Symfony\Component\HttpKernel\Event\KernelEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * Configures errors and exceptions handlers.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final since Symfony 4.4
- */
-class DebugHandlersListener implements EventSubscriberInterface
-{
-    private $exceptionHandler;
-    private $logger;
-    private $levels;
-    private $throwAt;
-    private $scream;
-    private $fileLinkFormat;
-    private $scope;
-    private $firstCall = true;
-    private $hasTerminatedWithException;
-
-    /**
-     * @param callable|null                 $exceptionHandler A handler that must support \Throwable instances that will be called on Exception
-     * @param array|int                     $levels           An array map of E_* to LogLevel::* or an integer bit field of E_* constants
-     * @param int|null                      $throwAt          Thrown errors in a bit field of E_* constants, or null to keep the current value
-     * @param bool                          $scream           Enables/disables screaming mode, where even silenced errors are logged
-     * @param string|FileLinkFormatter|null $fileLinkFormat   The format for links to source files
-     * @param bool                          $scope            Enables/disables scoping mode
-     */
-    public function __construct(callable $exceptionHandler = null, LoggerInterface $logger = null, $levels = \E_ALL, ?int $throwAt = \E_ALL, bool $scream = true, $fileLinkFormat = null, bool $scope = true)
-    {
-        $this->exceptionHandler = $exceptionHandler;
-        $this->logger = $logger;
-        $this->levels = null === $levels ? \E_ALL : $levels;
-        $this->throwAt = \is_int($throwAt) ? $throwAt : (null === $throwAt ? null : ($throwAt ? \E_ALL : null));
-        $this->scream = $scream;
-        $this->fileLinkFormat = $fileLinkFormat;
-        $this->scope = $scope;
-    }
-
-    /**
-     * Configures the error handler.
-     */
-    public function configure(Event $event = null)
-    {
-        if ($event instanceof ConsoleEvent && !\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) {
-            return;
-        }
-        if (!$event instanceof KernelEvent ? !$this->firstCall : !$event->isMasterRequest()) {
-            return;
-        }
-        $this->firstCall = $this->hasTerminatedWithException = false;
-
-        $handler = set_exception_handler('var_dump');
-        $handler = \is_array($handler) ? $handler[0] : null;
-        restore_exception_handler();
-
-        if ($this->logger || null !== $this->throwAt) {
-            if ($handler instanceof ErrorHandler || $handler instanceof LegacyErrorHandler) {
-                if ($this->logger) {
-                    $handler->setDefaultLogger($this->logger, $this->levels);
-                    if (\is_array($this->levels)) {
-                        $levels = 0;
-                        foreach ($this->levels as $type => $log) {
-                            $levels |= $type;
-                        }
-                    } else {
-                        $levels = $this->levels;
-                    }
-                    if ($this->scream) {
-                        $handler->screamAt($levels);
-                    }
-                    if ($this->scope) {
-                        $handler->scopeAt($levels & ~\E_USER_DEPRECATED & ~\E_DEPRECATED);
-                    } else {
-                        $handler->scopeAt(0, true);
-                    }
-                    $this->logger = $this->levels = null;
-                }
-                if (null !== $this->throwAt) {
-                    $handler->throwAt($this->throwAt, true);
-                }
-            }
-        }
-        if (!$this->exceptionHandler) {
-            if ($event instanceof KernelEvent) {
-                if (method_exists($kernel = $event->getKernel(), 'terminateWithException')) {
-                    $request = $event->getRequest();
-                    $hasRun = &$this->hasTerminatedWithException;
-                    $this->exceptionHandler = static function (\Throwable $e) use ($kernel, $request, &$hasRun) {
-                        if ($hasRun) {
-                            throw $e;
-                        }
-
-                        $hasRun = true;
-                        $kernel->terminateWithException($e, $request);
-                    };
-                }
-            } elseif ($event instanceof ConsoleEvent && $app = $event->getCommand()->getApplication()) {
-                $output = $event->getOutput();
-                if ($output instanceof ConsoleOutputInterface) {
-                    $output = $output->getErrorOutput();
-                }
-                $this->exceptionHandler = static function (\Throwable $e) use ($app, $output) {
-                    if (method_exists($app, 'renderThrowable')) {
-                        $app->renderThrowable($e, $output);
-                    } else {
-                        if (!$e instanceof \Exception) {
-                            $e = new FatalThrowableError($e);
-                        }
-
-                        $app->renderException($e, $output);
-                    }
-                };
-            }
-        }
-        if ($this->exceptionHandler) {
-            if ($handler instanceof ErrorHandler || $handler instanceof LegacyErrorHandler) {
-                $handler->setExceptionHandler($this->exceptionHandler);
-            }
-            $this->exceptionHandler = null;
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        $events = [KernelEvents::REQUEST => ['configure', 2048]];
-
-        if (\defined('Symfony\Component\Console\ConsoleEvents::COMMAND')) {
-            $events[ConsoleEvents::COMMAND] = ['configure', 2048];
-        }
-
-        return $events;
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/DisallowRobotsIndexingListener.php b/vendor/symfony/http-kernel/EventListener/DisallowRobotsIndexingListener.php
deleted file mode 100644
index 6607e49e999e874e0bb8f8b38577f97205dc4bd3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/DisallowRobotsIndexingListener.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * Ensures that the application is not indexed by search engines.
- *
- * @author Gary PEGEOT <garypegeot@gmail.com>
- */
-class DisallowRobotsIndexingListener implements EventSubscriberInterface
-{
-    private const HEADER_NAME = 'X-Robots-Tag';
-
-    public function onResponse(ResponseEvent $event): void
-    {
-        if (!$event->getResponse()->headers->has(static::HEADER_NAME)) {
-            $event->getResponse()->headers->set(static::HEADER_NAME, 'noindex');
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::RESPONSE => ['onResponse', -255],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/DumpListener.php b/vendor/symfony/http-kernel/EventListener/DumpListener.php
deleted file mode 100644
index 30908a4f45652ea728152619dc009bf2bd15326b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/DumpListener.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\Console\ConsoleEvents;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\VarDumper\Cloner\ClonerInterface;
-use Symfony\Component\VarDumper\Dumper\DataDumperInterface;
-use Symfony\Component\VarDumper\Server\Connection;
-use Symfony\Component\VarDumper\VarDumper;
-
-/**
- * Configures dump() handler.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DumpListener implements EventSubscriberInterface
-{
-    private $cloner;
-    private $dumper;
-    private $connection;
-
-    public function __construct(ClonerInterface $cloner, DataDumperInterface $dumper, Connection $connection = null)
-    {
-        $this->cloner = $cloner;
-        $this->dumper = $dumper;
-        $this->connection = $connection;
-    }
-
-    public function configure()
-    {
-        $cloner = $this->cloner;
-        $dumper = $this->dumper;
-        $connection = $this->connection;
-
-        VarDumper::setHandler(static function ($var) use ($cloner, $dumper, $connection) {
-            $data = $cloner->cloneVar($var);
-
-            if (!$connection || !$connection->write($data)) {
-                $dumper->dump($data);
-            }
-        });
-    }
-
-    public static function getSubscribedEvents()
-    {
-        if (!class_exists(ConsoleEvents::class)) {
-            return [];
-        }
-
-        // Register early to have a working dump() as early as possible
-        return [ConsoleEvents::COMMAND => ['configure', 1024]];
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/ErrorListener.php b/vendor/symfony/http-kernel/EventListener/ErrorListener.php
deleted file mode 100644
index 1ca6c9b458e4123c2b07f827bb571b8e49b28040..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/ErrorListener.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Debug\Exception\FlattenException as LegacyFlattenException;
-use Symfony\Component\ErrorHandler\Exception\FlattenException;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent;
-use Symfony\Component\HttpKernel\Event\ExceptionEvent;
-use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ErrorListener implements EventSubscriberInterface
-{
-    protected $controller;
-    protected $logger;
-    protected $debug;
-
-    public function __construct($controller, LoggerInterface $logger = null, $debug = false)
-    {
-        $this->controller = $controller;
-        $this->logger = $logger;
-        $this->debug = $debug;
-    }
-
-    public function logKernelException(ExceptionEvent $event)
-    {
-        $e = FlattenException::createFromThrowable($event->getThrowable());
-
-        $this->logException($event->getThrowable(), sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', $e->getClass(), $e->getMessage(), $e->getFile(), $e->getLine()));
-    }
-
-    public function onKernelException(ExceptionEvent $event, string $eventName = null, EventDispatcherInterface $eventDispatcher = null)
-    {
-        if (null === $this->controller) {
-            return;
-        }
-
-        $exception = $event->getThrowable();
-        $request = $this->duplicateRequest($exception, $event->getRequest());
-
-        try {
-            $response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false);
-        } catch (\Exception $e) {
-            $f = FlattenException::createFromThrowable($e);
-
-            $this->logException($e, sprintf('Exception thrown when handling an exception (%s: %s at %s line %s)', $f->getClass(), $f->getMessage(), $e->getFile(), $e->getLine()));
-
-            $prev = $e;
-            do {
-                if ($exception === $wrapper = $prev) {
-                    throw $e;
-                }
-            } while ($prev = $wrapper->getPrevious());
-
-            $prev = new \ReflectionProperty($wrapper instanceof \Exception ? \Exception::class : \Error::class, 'previous');
-            $prev->setAccessible(true);
-            $prev->setValue($wrapper, $exception);
-
-            throw $e;
-        }
-
-        $event->setResponse($response);
-
-        if ($this->debug && $eventDispatcher instanceof EventDispatcherInterface) {
-            $cspRemovalListener = function ($event) use (&$cspRemovalListener, $eventDispatcher) {
-                $event->getResponse()->headers->remove('Content-Security-Policy');
-                $eventDispatcher->removeListener(KernelEvents::RESPONSE, $cspRemovalListener);
-            };
-            $eventDispatcher->addListener(KernelEvents::RESPONSE, $cspRemovalListener, -128);
-        }
-    }
-
-    public function onControllerArguments(ControllerArgumentsEvent $event)
-    {
-        $e = $event->getRequest()->attributes->get('exception');
-
-        if (!$e instanceof \Throwable || false === $k = array_search($e, $event->getArguments(), true)) {
-            return;
-        }
-
-        $r = new \ReflectionFunction(\Closure::fromCallable($event->getController()));
-        $r = $r->getParameters()[$k] ?? null;
-
-        if ($r && (!($r = $r->getType()) instanceof \ReflectionNamedType || \in_array($r->getName(), [FlattenException::class, LegacyFlattenException::class], true))) {
-            $arguments = $event->getArguments();
-            $arguments[$k] = FlattenException::createFromThrowable($e);
-            $event->setArguments($arguments);
-        }
-    }
-
-    public static function getSubscribedEvents(): array
-    {
-        return [
-            KernelEvents::CONTROLLER_ARGUMENTS => 'onControllerArguments',
-            KernelEvents::EXCEPTION => [
-                ['logKernelException', 0],
-                ['onKernelException', -128],
-            ],
-        ];
-    }
-
-    /**
-     * Logs an exception.
-     */
-    protected function logException(\Throwable $exception, string $message): void
-    {
-        if (null !== $this->logger) {
-            if (!$exception instanceof HttpExceptionInterface || $exception->getStatusCode() >= 500) {
-                $this->logger->critical($message, ['exception' => $exception]);
-            } else {
-                $this->logger->error($message, ['exception' => $exception]);
-            }
-        }
-    }
-
-    /**
-     * Clones the request for the exception.
-     */
-    protected function duplicateRequest(\Throwable $exception, Request $request): Request
-    {
-        $attributes = [
-            '_controller' => $this->controller,
-            'exception' => $exception,
-            'logger' => $this->logger instanceof DebugLoggerInterface ? $this->logger : null,
-        ];
-        $request = $request->duplicate(null, null, $attributes);
-        $request->setMethod('GET');
-
-        return $request;
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/ExceptionListener.php b/vendor/symfony/http-kernel/EventListener/ExceptionListener.php
deleted file mode 100644
index ef5a71a3523b36127aa2b65543d1a9865c763f26..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/ExceptionListener.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\ErrorHandler\Exception\FlattenException;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "ErrorListener" instead.', ExceptionListener::class), \E_USER_DEPRECATED);
-
-/**
- * @deprecated since Symfony 4.4, use ErrorListener instead
- */
-class ExceptionListener implements EventSubscriberInterface
-{
-    protected $controller;
-    protected $logger;
-    protected $debug;
-
-    public function __construct($controller, LoggerInterface $logger = null, $debug = false)
-    {
-        $this->controller = $controller;
-        $this->logger = $logger;
-        $this->debug = $debug;
-    }
-
-    public function logKernelException(GetResponseForExceptionEvent $event)
-    {
-        $e = FlattenException::createFromThrowable($event->getException());
-
-        $this->logException($event->getException(), sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', $e->getClass(), $e->getMessage(), $e->getFile(), $e->getLine()));
-    }
-
-    public function onKernelException(GetResponseForExceptionEvent $event)
-    {
-        if (null === $this->controller) {
-            return;
-        }
-
-        $exception = $event->getException();
-        $request = $this->duplicateRequest($exception, $event->getRequest());
-        $eventDispatcher = \func_num_args() > 2 ? func_get_arg(2) : null;
-
-        try {
-            $response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false);
-        } catch (\Exception $e) {
-            $f = FlattenException::createFromThrowable($e);
-
-            $this->logException($e, sprintf('Exception thrown when handling an exception (%s: %s at %s line %s)', $f->getClass(), $f->getMessage(), $e->getFile(), $e->getLine()));
-
-            $prev = $e;
-            do {
-                if ($exception === $wrapper = $prev) {
-                    throw $e;
-                }
-            } while ($prev = $wrapper->getPrevious());
-
-            $prev = new \ReflectionProperty($wrapper instanceof \Exception ? \Exception::class : \Error::class, 'previous');
-            $prev->setAccessible(true);
-            $prev->setValue($wrapper, $exception);
-
-            throw $e;
-        }
-
-        $event->setResponse($response);
-
-        if ($this->debug && $eventDispatcher instanceof EventDispatcherInterface) {
-            $cspRemovalListener = function ($event) use (&$cspRemovalListener, $eventDispatcher) {
-                $event->getResponse()->headers->remove('Content-Security-Policy');
-                $eventDispatcher->removeListener(KernelEvents::RESPONSE, $cspRemovalListener);
-            };
-            $eventDispatcher->addListener(KernelEvents::RESPONSE, $cspRemovalListener, -128);
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::EXCEPTION => [
-                ['logKernelException', 0],
-                ['onKernelException', -128],
-            ],
-        ];
-    }
-
-    /**
-     * Logs an exception.
-     *
-     * @param \Exception $exception The \Exception instance
-     * @param string     $message   The error message to log
-     */
-    protected function logException(\Exception $exception, $message)
-    {
-        if (null !== $this->logger) {
-            if (!$exception instanceof HttpExceptionInterface || $exception->getStatusCode() >= 500) {
-                $this->logger->critical($message, ['exception' => $exception]);
-            } else {
-                $this->logger->error($message, ['exception' => $exception]);
-            }
-        }
-    }
-
-    /**
-     * Clones the request for the exception.
-     *
-     * @return Request The cloned request
-     */
-    protected function duplicateRequest(\Exception $exception, Request $request)
-    {
-        $attributes = [
-            '_controller' => $this->controller,
-            'exception' => FlattenException::createFromThrowable($exception),
-            'logger' => $this->logger instanceof DebugLoggerInterface ? $this->logger : null,
-        ];
-        $request = $request->duplicate(null, null, $attributes);
-        $request->setMethod('GET');
-
-        return $request;
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/FragmentListener.php b/vendor/symfony/http-kernel/EventListener/FragmentListener.php
deleted file mode 100644
index 5ae61daaaee012415112d5039553d336fd0545be..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/FragmentListener.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\UriSigner;
-
-/**
- * Handles content fragments represented by special URIs.
- *
- * All URL paths starting with /_fragment are handled as
- * content fragments by this listener.
- *
- * Throws an AccessDeniedHttpException exception if the request
- * is not signed or if it is not an internal sub-request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.3
- */
-class FragmentListener implements EventSubscriberInterface
-{
-    private $signer;
-    private $fragmentPath;
-
-    /**
-     * @param string $fragmentPath The path that triggers this listener
-     */
-    public function __construct(UriSigner $signer, string $fragmentPath = '/_fragment')
-    {
-        $this->signer = $signer;
-        $this->fragmentPath = $fragmentPath;
-    }
-
-    /**
-     * Fixes request attributes when the path is '/_fragment'.
-     *
-     * @throws AccessDeniedHttpException if the request does not come from a trusted IP
-     */
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $request = $event->getRequest();
-
-        if ($this->fragmentPath !== rawurldecode($request->getPathInfo())) {
-            return;
-        }
-
-        if ($request->attributes->has('_controller')) {
-            // Is a sub-request: no need to parse _path but it should still be removed from query parameters as below.
-            $request->query->remove('_path');
-
-            return;
-        }
-
-        if ($event->isMasterRequest()) {
-            $this->validateRequest($request);
-        }
-
-        parse_str($request->query->get('_path', ''), $attributes);
-        $request->attributes->add($attributes);
-        $request->attributes->set('_route_params', array_replace($request->attributes->get('_route_params', []), $attributes));
-        $request->query->remove('_path');
-    }
-
-    protected function validateRequest(Request $request)
-    {
-        // is the Request safe?
-        if (!$request->isMethodSafe()) {
-            throw new AccessDeniedHttpException();
-        }
-
-        // is the Request signed?
-        // we cannot use $request->getUri() here as we want to work with the original URI (no query string reordering)
-        if ($this->signer->check($request->getSchemeAndHttpHost().$request->getBaseUrl().$request->getPathInfo().(null !== ($qs = $request->server->get('QUERY_STRING')) ? '?'.$qs : ''))) {
-            return;
-        }
-
-        throw new AccessDeniedHttpException();
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::REQUEST => [['onKernelRequest', 48]],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php b/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php
deleted file mode 100644
index 62d03026a1c25112eefa1bef8520b32ae82769d3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Contracts\Translation\LocaleAwareInterface;
-
-/**
- * Pass the current locale to the provided services.
- *
- * @author Pierre Bobiet <pierrebobiet@gmail.com>
- */
-class LocaleAwareListener implements EventSubscriberInterface
-{
-    private $localeAwareServices;
-    private $requestStack;
-
-    /**
-     * @param LocaleAwareInterface[] $localeAwareServices
-     */
-    public function __construct(iterable $localeAwareServices, RequestStack $requestStack)
-    {
-        $this->localeAwareServices = $localeAwareServices;
-        $this->requestStack = $requestStack;
-    }
-
-    public function onKernelRequest(RequestEvent $event): void
-    {
-        $this->setLocale($event->getRequest()->getLocale(), $event->getRequest()->getDefaultLocale());
-    }
-
-    public function onKernelFinishRequest(FinishRequestEvent $event): void
-    {
-        if (null === $parentRequest = $this->requestStack->getParentRequest()) {
-            foreach ($this->localeAwareServices as $service) {
-                $service->setLocale($event->getRequest()->getDefaultLocale());
-            }
-
-            return;
-        }
-
-        $this->setLocale($parentRequest->getLocale(), $parentRequest->getDefaultLocale());
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            // must be registered after the Locale listener
-            KernelEvents::REQUEST => [['onKernelRequest', 15]],
-            KernelEvents::FINISH_REQUEST => [['onKernelFinishRequest', -15]],
-        ];
-    }
-
-    private function setLocale(string $locale, string $defaultLocale): void
-    {
-        foreach ($this->localeAwareServices as $service) {
-            try {
-                $service->setLocale($locale);
-            } catch (\InvalidArgumentException $e) {
-                $service->setLocale($defaultLocale);
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/LocaleListener.php b/vendor/symfony/http-kernel/EventListener/LocaleListener.php
deleted file mode 100644
index b09a6c76a22418fa6387973122871d32d5df53c2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/LocaleListener.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\KernelEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\Routing\RequestContextAwareInterface;
-
-/**
- * Initializes the locale based on the current request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.3
- */
-class LocaleListener implements EventSubscriberInterface
-{
-    private $router;
-    private $defaultLocale;
-    private $requestStack;
-
-    public function __construct(RequestStack $requestStack, string $defaultLocale = 'en', RequestContextAwareInterface $router = null)
-    {
-        $this->defaultLocale = $defaultLocale;
-        $this->requestStack = $requestStack;
-        $this->router = $router;
-    }
-
-    public function setDefaultLocale(KernelEvent $event)
-    {
-        $event->getRequest()->setDefaultLocale($this->defaultLocale);
-    }
-
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $request = $event->getRequest();
-
-        $this->setLocale($request);
-        $this->setRouterContext($request);
-    }
-
-    public function onKernelFinishRequest(FinishRequestEvent $event)
-    {
-        if (null !== $parentRequest = $this->requestStack->getParentRequest()) {
-            $this->setRouterContext($parentRequest);
-        }
-    }
-
-    private function setLocale(Request $request)
-    {
-        if ($locale = $request->attributes->get('_locale')) {
-            $request->setLocale($locale);
-        }
-    }
-
-    private function setRouterContext(Request $request)
-    {
-        if (null !== $this->router) {
-            $this->router->getContext()->setParameter('_locale', $request->getLocale());
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::REQUEST => [
-                ['setDefaultLocale', 100],
-                // must be registered after the Router to have access to the _locale
-                ['onKernelRequest', 16],
-            ],
-            KernelEvents::FINISH_REQUEST => [['onKernelFinishRequest', 0]],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php b/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
deleted file mode 100644
index b8464f16273535e8482ff839b98086fbc19f1040..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\RequestMatcherInterface;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\Event\PostResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Profiler\Profiler;
-
-/**
- * ProfilerListener collects data for the current request by listening to the kernel events.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.3
- */
-class ProfilerListener implements EventSubscriberInterface
-{
-    protected $profiler;
-    protected $matcher;
-    protected $onlyException;
-    protected $onlyMasterRequests;
-    protected $exception;
-    protected $profiles;
-    protected $requestStack;
-    protected $parents;
-
-    /**
-     * @param bool $onlyException      True if the profiler only collects data when an exception occurs, false otherwise
-     * @param bool $onlyMasterRequests True if the profiler only collects data when the request is a master request, false otherwise
-     */
-    public function __construct(Profiler $profiler, RequestStack $requestStack, RequestMatcherInterface $matcher = null, bool $onlyException = false, bool $onlyMasterRequests = false)
-    {
-        $this->profiler = $profiler;
-        $this->matcher = $matcher;
-        $this->onlyException = $onlyException;
-        $this->onlyMasterRequests = $onlyMasterRequests;
-        $this->profiles = new \SplObjectStorage();
-        $this->parents = new \SplObjectStorage();
-        $this->requestStack = $requestStack;
-    }
-
-    /**
-     * Handles the onKernelException event.
-     */
-    public function onKernelException(GetResponseForExceptionEvent $event)
-    {
-        if ($this->onlyMasterRequests && !$event->isMasterRequest()) {
-            return;
-        }
-
-        $this->exception = $event->getThrowable();
-    }
-
-    /**
-     * Handles the onKernelResponse event.
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        $master = $event->isMasterRequest();
-        if ($this->onlyMasterRequests && !$master) {
-            return;
-        }
-
-        if ($this->onlyException && null === $this->exception) {
-            return;
-        }
-
-        $request = $event->getRequest();
-        $exception = $this->exception;
-        $this->exception = null;
-
-        if (null !== $this->matcher && !$this->matcher->matches($request)) {
-            return;
-        }
-
-        if (!$profile = $this->profiler->collect($request, $event->getResponse(), $exception)) {
-            return;
-        }
-
-        $this->profiles[$request] = $profile;
-
-        $this->parents[$request] = $this->requestStack->getParentRequest();
-    }
-
-    public function onKernelTerminate(PostResponseEvent $event)
-    {
-        // attach children to parents
-        foreach ($this->profiles as $request) {
-            if (null !== $parentRequest = $this->parents[$request]) {
-                if (isset($this->profiles[$parentRequest])) {
-                    $this->profiles[$parentRequest]->addChild($this->profiles[$request]);
-                }
-            }
-        }
-
-        // save profiles
-        foreach ($this->profiles as $request) {
-            $this->profiler->saveProfile($this->profiles[$request]);
-        }
-
-        $this->profiles = new \SplObjectStorage();
-        $this->parents = new \SplObjectStorage();
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::RESPONSE => ['onKernelResponse', -100],
-            KernelEvents::EXCEPTION => ['onKernelException', 0],
-            KernelEvents::TERMINATE => ['onKernelTerminate', -1024],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/ResponseListener.php b/vendor/symfony/http-kernel/EventListener/ResponseListener.php
deleted file mode 100644
index 01973e222a0978f4b0021e782c8302965433a146..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/ResponseListener.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * ResponseListener fixes the Response headers based on the Request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.3
- */
-class ResponseListener implements EventSubscriberInterface
-{
-    private $charset;
-
-    public function __construct(string $charset)
-    {
-        $this->charset = $charset;
-    }
-
-    /**
-     * Filters the Response.
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $response = $event->getResponse();
-
-        if (null === $response->getCharset()) {
-            $response->setCharset($this->charset);
-        }
-
-        $response->prepare($event->getRequest());
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::RESPONSE => 'onKernelResponse',
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/RouterListener.php b/vendor/symfony/http-kernel/EventListener/RouterListener.php
deleted file mode 100644
index ee88debae45e8783491e3a7b32267965c1bc33be..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/RouterListener.php
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-use Symfony\Component\HttpKernel\Kernel;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\Exception\NoConfigurationException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RequestContextAwareInterface;
-
-/**
- * Initializes the context from the request and sets request attributes based on a matching route.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Yonel Ceruto <yonelceruto@gmail.com>
- *
- * @final since Symfony 4.3
- */
-class RouterListener implements EventSubscriberInterface
-{
-    private $matcher;
-    private $context;
-    private $logger;
-    private $requestStack;
-    private $projectDir;
-    private $debug;
-
-    /**
-     * @param UrlMatcherInterface|RequestMatcherInterface $matcher    The Url or Request matcher
-     * @param RequestContext|null                         $context    The RequestContext (can be null when $matcher implements RequestContextAwareInterface)
-     * @param string                                      $projectDir
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function __construct($matcher, RequestStack $requestStack, RequestContext $context = null, LoggerInterface $logger = null, string $projectDir = null, bool $debug = true)
-    {
-        if (!$matcher instanceof UrlMatcherInterface && !$matcher instanceof RequestMatcherInterface) {
-            throw new \InvalidArgumentException('Matcher must either implement UrlMatcherInterface or RequestMatcherInterface.');
-        }
-
-        if (null === $context && !$matcher instanceof RequestContextAwareInterface) {
-            throw new \InvalidArgumentException('You must either pass a RequestContext or the matcher must implement RequestContextAwareInterface.');
-        }
-
-        $this->matcher = $matcher;
-        $this->context = $context ?: $matcher->getContext();
-        $this->requestStack = $requestStack;
-        $this->logger = $logger;
-        $this->projectDir = $projectDir;
-        $this->debug = $debug;
-    }
-
-    private function setCurrentRequest(Request $request = null)
-    {
-        if (null !== $request) {
-            try {
-                $this->context->fromRequest($request);
-            } catch (\UnexpectedValueException $e) {
-                throw new BadRequestHttpException($e->getMessage(), $e, $e->getCode());
-            }
-        }
-    }
-
-    /**
-     * After a sub-request is done, we need to reset the routing context to the parent request so that the URL generator
-     * operates on the correct context again.
-     */
-    public function onKernelFinishRequest(FinishRequestEvent $event)
-    {
-        $this->setCurrentRequest($this->requestStack->getParentRequest());
-    }
-
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $request = $event->getRequest();
-
-        $this->setCurrentRequest($request);
-
-        if ($request->attributes->has('_controller')) {
-            // routing is already done
-            return;
-        }
-
-        // add attributes based on the request (routing)
-        try {
-            // matching a request is more powerful than matching a URL path + context, so try that first
-            if ($this->matcher instanceof RequestMatcherInterface) {
-                $parameters = $this->matcher->matchRequest($request);
-            } else {
-                $parameters = $this->matcher->match($request->getPathInfo());
-            }
-
-            if (null !== $this->logger) {
-                $this->logger->info('Matched route "{route}".', [
-                    'route' => isset($parameters['_route']) ? $parameters['_route'] : 'n/a',
-                    'route_parameters' => $parameters,
-                    'request_uri' => $request->getUri(),
-                    'method' => $request->getMethod(),
-                ]);
-            }
-
-            $request->attributes->add($parameters);
-            unset($parameters['_route'], $parameters['_controller']);
-            $request->attributes->set('_route_params', $parameters);
-        } catch (ResourceNotFoundException $e) {
-            $message = sprintf('No route found for "%s %s"', $request->getMethod(), $request->getPathInfo());
-
-            if ($referer = $request->headers->get('referer')) {
-                $message .= sprintf(' (from "%s")', $referer);
-            }
-
-            throw new NotFoundHttpException($message, $e);
-        } catch (MethodNotAllowedException $e) {
-            $message = sprintf('No route found for "%s %s": Method Not Allowed (Allow: %s)', $request->getMethod(), $request->getPathInfo(), implode(', ', $e->getAllowedMethods()));
-
-            throw new MethodNotAllowedHttpException($e->getAllowedMethods(), $message, $e);
-        }
-    }
-
-    public function onKernelException(GetResponseForExceptionEvent $event)
-    {
-        if (!$this->debug || !($e = $event->getThrowable()) instanceof NotFoundHttpException) {
-            return;
-        }
-
-        if ($e->getPrevious() instanceof NoConfigurationException) {
-            $event->setResponse($this->createWelcomeResponse());
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::REQUEST => [['onKernelRequest', 32]],
-            KernelEvents::FINISH_REQUEST => [['onKernelFinishRequest', 0]],
-            KernelEvents::EXCEPTION => ['onKernelException', -64],
-        ];
-    }
-
-    private function createWelcomeResponse(): Response
-    {
-        $version = Kernel::VERSION;
-        $projectDir = realpath($this->projectDir).\DIRECTORY_SEPARATOR;
-        $docVersion = substr(Kernel::VERSION, 0, 3);
-
-        ob_start();
-        include \dirname(__DIR__).'/Resources/welcome.html.php';
-
-        return new Response(ob_get_clean(), Response::HTTP_NOT_FOUND);
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php b/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php
deleted file mode 100644
index c3adaf84cef3f02f9fdc801d7477873894075d9f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.1, use AbstractSessionListener instead.', SaveSessionListener::class), \E_USER_DEPRECATED);
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * @author Tobias Schultze <http://tobion.de>
- *
- * @deprecated since Symfony 4.1, use AbstractSessionListener instead
- */
-class SaveSessionListener implements EventSubscriberInterface
-{
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $request = $event->getRequest();
-        if ($request->hasSession() && ($session = $request->getSession())->isStarted()) {
-            $session->save();
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            // low priority but higher than StreamedResponseListener
-            KernelEvents::RESPONSE => [['onKernelResponse', -1000]],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/SessionListener.php b/vendor/symfony/http-kernel/EventListener/SessionListener.php
deleted file mode 100644
index a53ade797cdace094d14a4e2a3ee4928f7092f2a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/SessionListener.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Psr\Container\ContainerInterface;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-/**
- * Sets the session in the request.
- *
- * When the passed container contains a "session_storage" entry which
- * holds a NativeSessionStorage instance, the "cookie_secure" option
- * will be set to true whenever the current master request is secure.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final
- */
-class SessionListener extends AbstractSessionListener
-{
-    public function __construct(ContainerInterface $container)
-    {
-        $this->container = $container;
-    }
-
-    protected function getSession(): ?SessionInterface
-    {
-        if (!$this->container->has('session')) {
-            return null;
-        }
-
-        if ($this->container->has('session_storage')
-            && ($storage = $this->container->get('session_storage')) instanceof NativeSessionStorage
-            && ($masterRequest = $this->container->get('request_stack')->getMasterRequest())
-            && $masterRequest->isSecure()
-        ) {
-            $storage->setOptions(['cookie_secure' => true]);
-        }
-
-        return $this->container->get('session');
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/StreamedResponseListener.php b/vendor/symfony/http-kernel/EventListener/StreamedResponseListener.php
deleted file mode 100644
index f28f5d868a2bfa914304270568966f2333081ed1..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/StreamedResponseListener.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * StreamedResponseListener is responsible for sending the Response
- * to the client.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.3
- */
-class StreamedResponseListener implements EventSubscriberInterface
-{
-    /**
-     * Filters the Response.
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $response = $event->getResponse();
-
-        if ($response instanceof StreamedResponse) {
-            $response->send();
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::RESPONSE => ['onKernelResponse', -1024],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/SurrogateListener.php b/vendor/symfony/http-kernel/EventListener/SurrogateListener.php
deleted file mode 100644
index 9c3e960b007390a3859516dd1886f33d5d47f570..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/SurrogateListener.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\HttpCache\HttpCache;
-use Symfony\Component\HttpKernel\HttpCache\SurrogateInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * SurrogateListener adds a Surrogate-Control HTTP header when the Response needs to be parsed for Surrogates.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.3
- */
-class SurrogateListener implements EventSubscriberInterface
-{
-    private $surrogate;
-
-    public function __construct(SurrogateInterface $surrogate = null)
-    {
-        $this->surrogate = $surrogate;
-    }
-
-    /**
-     * Filters the Response.
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $kernel = $event->getKernel();
-        $surrogate = $this->surrogate;
-        if ($kernel instanceof HttpCache) {
-            $surrogate = $kernel->getSurrogate();
-            if (null !== $this->surrogate && $this->surrogate->getName() !== $surrogate->getName()) {
-                $surrogate = $this->surrogate;
-            }
-        }
-
-        if (null === $surrogate) {
-            return;
-        }
-
-        $surrogate->addSurrogateControl($event->getResponse());
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::RESPONSE => 'onKernelResponse',
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/TestSessionListener.php b/vendor/symfony/http-kernel/EventListener/TestSessionListener.php
deleted file mode 100644
index ff8b4aaa614d66482de1a1006f714b696bb148b7..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/TestSessionListener.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Psr\Container\ContainerInterface;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-
-/**
- * Sets the session in the request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final
- */
-class TestSessionListener extends AbstractTestSessionListener
-{
-    private $container;
-
-    public function __construct(ContainerInterface $container, array $sessionOptions = [])
-    {
-        $this->container = $container;
-        parent::__construct($sessionOptions);
-    }
-
-    protected function getSession(): ?SessionInterface
-    {
-        if (!$this->container->has('session')) {
-            return null;
-        }
-
-        return $this->container->get('session');
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/TranslatorListener.php b/vendor/symfony/http-kernel/EventListener/TranslatorListener.php
deleted file mode 100644
index 6851c3b926ea53b43b21b7852d10ab400e566f8a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/TranslatorListener.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3 and will be removed in 5.0, use LocaleAwareListener instead.', TranslatorListener::class), \E_USER_DEPRECATED);
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Contracts\Translation\LocaleAwareInterface;
-
-/**
- * Synchronizes the locale between the request and the translator.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since Symfony 4.3, use LocaleAwareListener instead
- */
-class TranslatorListener implements EventSubscriberInterface
-{
-    private $translator;
-    private $requestStack;
-
-    /**
-     * @param LocaleAwareInterface $translator
-     */
-    public function __construct($translator, RequestStack $requestStack)
-    {
-        if (!$translator instanceof TranslatorInterface && !$translator instanceof LocaleAwareInterface) {
-            throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be an instance of "%s", "%s" given.', __METHOD__, LocaleAwareInterface::class, \is_object($translator) ? \get_class($translator) : \gettype($translator)));
-        }
-        $this->translator = $translator;
-        $this->requestStack = $requestStack;
-    }
-
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $this->setLocale($event->getRequest());
-    }
-
-    public function onKernelFinishRequest(FinishRequestEvent $event)
-    {
-        if (null === $parentRequest = $this->requestStack->getParentRequest()) {
-            return;
-        }
-
-        $this->setLocale($parentRequest);
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return [
-            // must be registered after the Locale listener
-            KernelEvents::REQUEST => [['onKernelRequest', 10]],
-            KernelEvents::FINISH_REQUEST => [['onKernelFinishRequest', 0]],
-        ];
-    }
-
-    private function setLocale(Request $request)
-    {
-        try {
-            $this->translator->setLocale($request->getLocale());
-        } catch (\InvalidArgumentException $e) {
-            $this->translator->setLocale($request->getDefaultLocale());
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/ValidateRequestListener.php b/vendor/symfony/http-kernel/EventListener/ValidateRequestListener.php
deleted file mode 100644
index 69c86b409564b4b6fabd9ca272707910f62bdc4e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/EventListener/ValidateRequestListener.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * Validates Requests.
- *
- * @author Magnus Nordlander <magnus@fervo.se>
- *
- * @final since Symfony 4.3
- */
-class ValidateRequestListener implements EventSubscriberInterface
-{
-    /**
-     * Performs the validation.
-     */
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-        $request = $event->getRequest();
-
-        if ($request::getTrustedProxies()) {
-            $request->getClientIps();
-        }
-
-        $request->getHost();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public static function getSubscribedEvents()
-    {
-        return [
-            KernelEvents::REQUEST => [
-                ['onKernelRequest', 256],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/AccessDeniedHttpException.php b/vendor/symfony/http-kernel/Exception/AccessDeniedHttpException.php
deleted file mode 100644
index 65e5f8c7866a59a5ba62ed1b838c86cb2085c261..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/AccessDeniedHttpException.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Christophe Coevoet <stof@notk.org>
- */
-class AccessDeniedHttpException extends HttpException
-{
-    /**
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(string $message = null, \Throwable $previous = null, int $code = 0, array $headers = [])
-    {
-        parent::__construct(403, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/BadRequestHttpException.php b/vendor/symfony/http-kernel/Exception/BadRequestHttpException.php
deleted file mode 100644
index 7de91054b4731b650073778ed02001fe9e00f364..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/BadRequestHttpException.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class BadRequestHttpException extends HttpException
-{
-    /**
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(string $message = null, \Throwable $previous = null, int $code = 0, array $headers = [])
-    {
-        parent::__construct(400, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/ConflictHttpException.php b/vendor/symfony/http-kernel/Exception/ConflictHttpException.php
deleted file mode 100644
index ebb86ba6e9e1e124ce97c4e59a404cd0723d35ce..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/ConflictHttpException.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class ConflictHttpException extends HttpException
-{
-    /**
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(string $message = null, \Throwable $previous = null, int $code = 0, array $headers = [])
-    {
-        parent::__construct(409, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/ControllerDoesNotReturnResponseException.php b/vendor/symfony/http-kernel/Exception/ControllerDoesNotReturnResponseException.php
deleted file mode 100644
index 1e87690ff1cc8c345dc7f796fdd899918a87bdca..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/ControllerDoesNotReturnResponseException.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- */
-class ControllerDoesNotReturnResponseException extends \LogicException
-{
-    public function __construct(string $message, callable $controller, string $file, int $line)
-    {
-        parent::__construct($message);
-
-        if (!$controllerDefinition = $this->parseControllerDefinition($controller)) {
-            return;
-        }
-
-        $this->file = $controllerDefinition['file'];
-        $this->line = $controllerDefinition['line'];
-        $r = new \ReflectionProperty(\Exception::class, 'trace');
-        $r->setAccessible(true);
-        $r->setValue($this, array_merge([
-            [
-                'line' => $line,
-                'file' => $file,
-            ],
-        ], $this->getTrace()));
-    }
-
-    private function parseControllerDefinition(callable $controller): ?array
-    {
-        if (\is_string($controller) && false !== strpos($controller, '::')) {
-            $controller = explode('::', $controller);
-        }
-
-        if (\is_array($controller)) {
-            try {
-                $r = new \ReflectionMethod($controller[0], $controller[1]);
-
-                return [
-                    'file' => $r->getFileName(),
-                    'line' => $r->getEndLine(),
-                ];
-            } catch (\ReflectionException $e) {
-                return null;
-            }
-        }
-
-        if ($controller instanceof \Closure) {
-            $r = new \ReflectionFunction($controller);
-
-            return [
-                'file' => $r->getFileName(),
-                'line' => $r->getEndLine(),
-            ];
-        }
-
-        if (\is_object($controller)) {
-            $r = new \ReflectionClass($controller);
-
-            try {
-                $line = $r->getMethod('__invoke')->getEndLine();
-            } catch (\ReflectionException $e) {
-                $line = $r->getEndLine();
-            }
-
-            return [
-                'file' => $r->getFileName(),
-                'line' => $line,
-            ];
-        }
-
-        return null;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/GoneHttpException.php b/vendor/symfony/http-kernel/Exception/GoneHttpException.php
deleted file mode 100644
index aea283a961cc526c62907c0f1956528b5f83efd7..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/GoneHttpException.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class GoneHttpException extends HttpException
-{
-    /**
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(string $message = null, \Throwable $previous = null, int $code = 0, array $headers = [])
-    {
-        parent::__construct(410, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/HttpException.php b/vendor/symfony/http-kernel/Exception/HttpException.php
deleted file mode 100644
index d822cd5d49a77e8a9ca50f495ad4e19627558c17..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/HttpException.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * HttpException.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class HttpException extends \RuntimeException implements HttpExceptionInterface
-{
-    private $statusCode;
-    private $headers;
-
-    public function __construct(int $statusCode, string $message = null, \Throwable $previous = null, array $headers = [], ?int $code = 0)
-    {
-        $this->statusCode = $statusCode;
-        $this->headers = $headers;
-
-        parent::__construct($message, $code, $previous);
-    }
-
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-
-    public function getHeaders()
-    {
-        return $this->headers;
-    }
-
-    /**
-     * Set response headers.
-     *
-     * @param array $headers Response headers
-     */
-    public function setHeaders(array $headers)
-    {
-        $this->headers = $headers;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php b/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php
deleted file mode 100644
index 735e9c805e2321049e135f79d6e99ce361f6b354..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * Interface for HTTP error exceptions.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-interface HttpExceptionInterface extends \Throwable
-{
-    /**
-     * Returns the status code.
-     *
-     * @return int An HTTP response status code
-     */
-    public function getStatusCode();
-
-    /**
-     * Returns response headers.
-     *
-     * @return array Response headers
-     */
-    public function getHeaders();
-}
diff --git a/vendor/symfony/http-kernel/Exception/LengthRequiredHttpException.php b/vendor/symfony/http-kernel/Exception/LengthRequiredHttpException.php
deleted file mode 100644
index 44fb770b60c8919c0d92c4602c5ee880944f346f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/LengthRequiredHttpException.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class LengthRequiredHttpException extends HttpException
-{
-    /**
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(string $message = null, \Throwable $previous = null, int $code = 0, array $headers = [])
-    {
-        parent::__construct(411, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php b/vendor/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php
deleted file mode 100644
index c15e46ffc3406e8c66d5f9ddbf2c392e338dd855..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class MethodNotAllowedHttpException extends HttpException
-{
-    /**
-     * @param array      $allow    An array of allowed methods
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(array $allow, string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        $headers['Allow'] = strtoupper(implode(', ', $allow));
-
-        parent::__construct(405, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/NotAcceptableHttpException.php b/vendor/symfony/http-kernel/Exception/NotAcceptableHttpException.php
deleted file mode 100644
index c5f5324b1a655ee3651fce24de0aa1ce0ca9eff3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/NotAcceptableHttpException.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class NotAcceptableHttpException extends HttpException
-{
-    /**
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(string $message = null, \Throwable $previous = null, int $code = 0, array $headers = [])
-    {
-        parent::__construct(406, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/NotFoundHttpException.php b/vendor/symfony/http-kernel/Exception/NotFoundHttpException.php
deleted file mode 100644
index 146b908a1e45dbe6d93b27aed1fcf1dc04a608d0..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/NotFoundHttpException.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class NotFoundHttpException extends HttpException
-{
-    /**
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(string $message = null, \Throwable $previous = null, int $code = 0, array $headers = [])
-    {
-        parent::__construct(404, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/PreconditionFailedHttpException.php b/vendor/symfony/http-kernel/Exception/PreconditionFailedHttpException.php
deleted file mode 100644
index e878b10ad355efdc6e783a423146cc943883ef13..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/PreconditionFailedHttpException.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class PreconditionFailedHttpException extends HttpException
-{
-    /**
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(string $message = null, \Throwable $previous = null, int $code = 0, array $headers = [])
-    {
-        parent::__construct(412, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php b/vendor/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php
deleted file mode 100644
index a6cb2f09a758ea0065ce5576892abc91991fe523..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Ben Ramsey <ben@benramsey.com>
- *
- * @see http://tools.ietf.org/html/rfc6585
- */
-class PreconditionRequiredHttpException extends HttpException
-{
-    /**
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(string $message = null, \Throwable $previous = null, int $code = 0, array $headers = [])
-    {
-        parent::__construct(428, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php b/vendor/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php
deleted file mode 100644
index c786ccf5f7fa7d9973330747624245885882ffa6..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class ServiceUnavailableHttpException extends HttpException
-{
-    /**
-     * @param int|string $retryAfter The number of seconds or HTTP-date after which the request may be retried
-     * @param string     $message    The internal exception message
-     * @param \Throwable $previous   The previous exception
-     * @param int        $code       The internal exception code
-     */
-    public function __construct($retryAfter = null, string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        if ($retryAfter) {
-            $headers['Retry-After'] = $retryAfter;
-        }
-
-        parent::__construct(503, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/TooManyRequestsHttpException.php b/vendor/symfony/http-kernel/Exception/TooManyRequestsHttpException.php
deleted file mode 100644
index b709f1a2f1e68f99d73d9067f9f90970d19a07d3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/TooManyRequestsHttpException.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Ben Ramsey <ben@benramsey.com>
- *
- * @see http://tools.ietf.org/html/rfc6585
- */
-class TooManyRequestsHttpException extends HttpException
-{
-    /**
-     * @param int|string $retryAfter The number of seconds or HTTP-date after which the request may be retried
-     * @param string     $message    The internal exception message
-     * @param \Throwable $previous   The previous exception
-     * @param int        $code       The internal exception code
-     */
-    public function __construct($retryAfter = null, string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        if ($retryAfter) {
-            $headers['Retry-After'] = $retryAfter;
-        }
-
-        parent::__construct(429, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/UnauthorizedHttpException.php b/vendor/symfony/http-kernel/Exception/UnauthorizedHttpException.php
deleted file mode 100644
index fb86c1ea95367638d264b46bc4f84efd8a8c62e2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/UnauthorizedHttpException.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class UnauthorizedHttpException extends HttpException
-{
-    /**
-     * @param string     $challenge WWW-Authenticate challenge string
-     * @param string     $message   The internal exception message
-     * @param \Throwable $previous  The previous exception
-     * @param int        $code      The internal exception code
-     */
-    public function __construct(string $challenge, string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        $headers['WWW-Authenticate'] = $challenge;
-
-        parent::__construct(401, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php b/vendor/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php
deleted file mode 100644
index 93d4bcef69158fd6a478f1594f983c5a7dc7212a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Steve Hutchins <hutchinsteve@gmail.com>
- */
-class UnprocessableEntityHttpException extends HttpException
-{
-    /**
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(string $message = null, \Throwable $previous = null, int $code = 0, array $headers = [])
-    {
-        parent::__construct(422, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php b/vendor/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php
deleted file mode 100644
index 7cda3a62028d515bcf39ea970f9aadcd0291e8f1..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Exception;
-
-/**
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class UnsupportedMediaTypeHttpException extends HttpException
-{
-    /**
-     * @param string     $message  The internal exception message
-     * @param \Throwable $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(string $message = null, \Throwable $previous = null, int $code = 0, array $headers = [])
-    {
-        parent::__construct(415, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php
deleted file mode 100644
index f81199d8838244b3a6995d71dfa275167344bb60..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Fragment;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\HttpCache\SurrogateInterface;
-use Symfony\Component\HttpKernel\UriSigner;
-
-/**
- * Implements Surrogate rendering strategy.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class AbstractSurrogateFragmentRenderer extends RoutableFragmentRenderer
-{
-    private $surrogate;
-    private $inlineStrategy;
-    private $signer;
-
-    /**
-     * The "fallback" strategy when surrogate is not available should always be an
-     * instance of InlineFragmentRenderer.
-     *
-     * @param FragmentRendererInterface $inlineStrategy The inline strategy to use when the surrogate is not supported
-     */
-    public function __construct(SurrogateInterface $surrogate = null, FragmentRendererInterface $inlineStrategy, UriSigner $signer = null)
-    {
-        $this->surrogate = $surrogate;
-        $this->inlineStrategy = $inlineStrategy;
-        $this->signer = $signer;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Note that if the current Request has no surrogate capability, this method
-     * falls back to use the inline rendering strategy.
-     *
-     * Additional available options:
-     *
-     *  * alt: an alternative URI to render in case of an error
-     *  * comment: a comment to add when returning the surrogate tag
-     *
-     * Note, that not all surrogate strategies support all options. For now
-     * 'alt' and 'comment' are only supported by ESI.
-     *
-     * @see Symfony\Component\HttpKernel\HttpCache\SurrogateInterface
-     */
-    public function render($uri, Request $request, array $options = [])
-    {
-        if (!$this->surrogate || !$this->surrogate->hasSurrogateCapability($request)) {
-            if ($uri instanceof ControllerReference && $this->containsNonScalars($uri->attributes)) {
-                throw new \InvalidArgumentException('Passing non-scalar values as part of URI attributes to the ESI and SSI rendering strategies is not supported. Use a different rendering strategy or pass scalar values.');
-            }
-
-            return $this->inlineStrategy->render($uri, $request, $options);
-        }
-
-        if ($uri instanceof ControllerReference) {
-            $uri = $this->generateSignedFragmentUri($uri, $request);
-        }
-
-        $alt = isset($options['alt']) ? $options['alt'] : null;
-        if ($alt instanceof ControllerReference) {
-            $alt = $this->generateSignedFragmentUri($alt, $request);
-        }
-
-        $tag = $this->surrogate->renderIncludeTag($uri, $alt, isset($options['ignore_errors']) ? $options['ignore_errors'] : false, isset($options['comment']) ? $options['comment'] : '');
-
-        return new Response($tag);
-    }
-
-    private function generateSignedFragmentUri(ControllerReference $uri, Request $request): string
-    {
-        if (null === $this->signer) {
-            throw new \LogicException('You must use a URI when using the ESI rendering strategy or set a URL signer.');
-        }
-
-        // we need to sign the absolute URI, but want to return the path only.
-        $fragmentUri = $this->signer->sign($this->generateFragmentUri($uri, $request, true));
-
-        return substr($fragmentUri, \strlen($request->getSchemeAndHttpHost()));
-    }
-
-    private function containsNonScalars(array $values): bool
-    {
-        foreach ($values as $value) {
-            if (\is_array($value)) {
-                return $this->containsNonScalars($value);
-            } elseif (!is_scalar($value) && null !== $value) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/EsiFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/EsiFragmentRenderer.php
deleted file mode 100644
index a4570e3beb0d4ae7db7c094d7582db490e4c2576..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Fragment/EsiFragmentRenderer.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Fragment;
-
-/**
- * Implements the ESI rendering strategy.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class EsiFragmentRenderer extends AbstractSurrogateFragmentRenderer
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'esi';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php b/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
deleted file mode 100644
index e981291b874c49a49b48359aa66529856cc330de..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Fragment;
-
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-
-/**
- * Renders a URI that represents a resource fragment.
- *
- * This class handles the rendering of resource fragments that are included into
- * a main resource. The handling of the rendering is managed by specialized renderers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @see FragmentRendererInterface
- */
-class FragmentHandler
-{
-    private $debug;
-    private $renderers = [];
-    private $requestStack;
-
-    /**
-     * @param FragmentRendererInterface[] $renderers An array of FragmentRendererInterface instances
-     * @param bool                        $debug     Whether the debug mode is enabled or not
-     */
-    public function __construct(RequestStack $requestStack, array $renderers = [], bool $debug = false)
-    {
-        $this->requestStack = $requestStack;
-        foreach ($renderers as $renderer) {
-            $this->addRenderer($renderer);
-        }
-        $this->debug = $debug;
-    }
-
-    /**
-     * Adds a renderer.
-     */
-    public function addRenderer(FragmentRendererInterface $renderer)
-    {
-        $this->renderers[$renderer->getName()] = $renderer;
-    }
-
-    /**
-     * Renders a URI and returns the Response content.
-     *
-     * Available options:
-     *
-     *  * ignore_errors: true to return an empty string in case of an error
-     *
-     * @param string|ControllerReference $uri      A URI as a string or a ControllerReference instance
-     * @param string                     $renderer The renderer name
-     *
-     * @return string|null The Response content or null when the Response is streamed
-     *
-     * @throws \InvalidArgumentException when the renderer does not exist
-     * @throws \LogicException           when no master request is being handled
-     */
-    public function render($uri, $renderer = 'inline', array $options = [])
-    {
-        if (!isset($options['ignore_errors'])) {
-            $options['ignore_errors'] = !$this->debug;
-        }
-
-        if (!isset($this->renderers[$renderer])) {
-            throw new \InvalidArgumentException(sprintf('The "%s" renderer does not exist.', $renderer));
-        }
-
-        if (!$request = $this->requestStack->getCurrentRequest()) {
-            throw new \LogicException('Rendering a fragment can only be done when handling a Request.');
-        }
-
-        return $this->deliver($this->renderers[$renderer]->render($uri, $request, $options));
-    }
-
-    /**
-     * Delivers the Response as a string.
-     *
-     * When the Response is a StreamedResponse, the content is streamed immediately
-     * instead of being returned.
-     *
-     * @return string|null The Response content or null when the Response is streamed
-     *
-     * @throws \RuntimeException when the Response is not successful
-     */
-    protected function deliver(Response $response)
-    {
-        if (!$response->isSuccessful()) {
-            throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %d).', $this->requestStack->getCurrentRequest()->getUri(), $response->getStatusCode()));
-        }
-
-        if (!$response instanceof StreamedResponse) {
-            return $response->getContent();
-        }
-
-        $response->sendContent();
-
-        return null;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php b/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php
deleted file mode 100644
index 4f8ac50b16e9293a4a5339112f9830f6c49f4933..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Fragment;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-
-/**
- * Interface implemented by all rendering strategies.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface FragmentRendererInterface
-{
-    /**
-     * Renders a URI and returns the Response content.
-     *
-     * @param string|ControllerReference $uri A URI as a string or a ControllerReference instance
-     *
-     * @return Response A Response instance
-     */
-    public function render($uri, Request $request, array $options = []);
-
-    /**
-     * Gets the name of the strategy.
-     *
-     * @return string The strategy name
-     */
-    public function getName();
-}
diff --git a/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php
deleted file mode 100644
index cca653342c42ee600c9f753bb02fbdbbb2395fd5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Fragment;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\UriSigner;
-use Symfony\Component\Templating\EngineInterface;
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Loader\ExistsLoaderInterface;
-use Twig\Loader\SourceContextLoaderInterface;
-
-/**
- * Implements the Hinclude rendering strategy.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HIncludeFragmentRenderer extends RoutableFragmentRenderer
-{
-    private $globalDefaultTemplate;
-    private $signer;
-    private $templating;
-    private $charset;
-
-    /**
-     * @param EngineInterface|Environment $templating            An EngineInterface or a Twig instance
-     * @param string                      $globalDefaultTemplate The global default content (it can be a template name or the content)
-     */
-    public function __construct($templating = null, UriSigner $signer = null, string $globalDefaultTemplate = null, string $charset = 'utf-8')
-    {
-        $this->setTemplating($templating);
-        $this->globalDefaultTemplate = $globalDefaultTemplate;
-        $this->signer = $signer;
-        $this->charset = $charset;
-    }
-
-    /**
-     * Sets the templating engine to use to render the default content.
-     *
-     * @param EngineInterface|Environment|null $templating An EngineInterface or an Environment instance
-     *
-     * @throws \InvalidArgumentException
-     *
-     * @internal
-     */
-    public function setTemplating($templating)
-    {
-        if (null !== $templating && !$templating instanceof EngineInterface && !$templating instanceof Environment) {
-            throw new \InvalidArgumentException('The hinclude rendering strategy needs an instance of Twig\Environment or Symfony\Component\Templating\EngineInterface.');
-        }
-
-        if ($templating instanceof EngineInterface) {
-            @trigger_error(sprintf('Using a "%s" instance for "%s" is deprecated since version 4.3; use a \Twig\Environment instance instead.', EngineInterface::class, __CLASS__), \E_USER_DEPRECATED);
-        }
-
-        $this->templating = $templating;
-    }
-
-    /**
-     * Checks if a templating engine has been set.
-     *
-     * @return bool true if the templating engine has been set, false otherwise
-     */
-    public function hasTemplating()
-    {
-        return null !== $this->templating;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Additional available options:
-     *
-     *  * default:    The default content (it can be a template name or the content)
-     *  * id:         An optional hx:include tag id attribute
-     *  * attributes: An optional array of hx:include tag attributes
-     */
-    public function render($uri, Request $request, array $options = [])
-    {
-        if ($uri instanceof ControllerReference) {
-            if (null === $this->signer) {
-                throw new \LogicException('You must use a proper URI when using the Hinclude rendering strategy or set a URL signer.');
-            }
-
-            // we need to sign the absolute URI, but want to return the path only.
-            $uri = substr($this->signer->sign($this->generateFragmentUri($uri, $request, true)), \strlen($request->getSchemeAndHttpHost()));
-        }
-
-        // We need to replace ampersands in the URI with the encoded form in order to return valid html/xml content.
-        $uri = str_replace('&', '&amp;', $uri);
-
-        $template = isset($options['default']) ? $options['default'] : $this->globalDefaultTemplate;
-        if (null !== $this->templating && $template && $this->templateExists($template)) {
-            $content = $this->templating->render($template);
-        } else {
-            $content = $template;
-        }
-
-        $attributes = isset($options['attributes']) && \is_array($options['attributes']) ? $options['attributes'] : [];
-        if (isset($options['id']) && $options['id']) {
-            $attributes['id'] = $options['id'];
-        }
-        $renderedAttributes = '';
-        if (\count($attributes) > 0) {
-            $flags = \ENT_QUOTES | \ENT_SUBSTITUTE;
-            foreach ($attributes as $attribute => $value) {
-                $renderedAttributes .= sprintf(
-                    ' %s="%s"',
-                    htmlspecialchars($attribute, $flags, $this->charset, false),
-                    htmlspecialchars($value, $flags, $this->charset, false)
-                );
-            }
-        }
-
-        return new Response(sprintf('<hx:include src="%s"%s>%s</hx:include>', $uri, $renderedAttributes, $content));
-    }
-
-    private function templateExists(string $template): bool
-    {
-        if ($this->templating instanceof EngineInterface) {
-            try {
-                return $this->templating->exists($template);
-            } catch (\Exception $e) {
-                return false;
-            }
-        }
-
-        $loader = $this->templating->getLoader();
-
-        if (1 === Environment::MAJOR_VERSION && !$loader instanceof ExistsLoaderInterface) {
-            try {
-                if ($loader instanceof SourceContextLoaderInterface) {
-                    $loader->getSourceContext($template);
-                } else {
-                    $loader->getSource($template);
-                }
-
-                return true;
-            } catch (LoaderError $e) {
-            }
-
-            return false;
-        }
-
-        return $loader->exists($template);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'hinclude';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php
deleted file mode 100644
index 8f89733b59721234f4b88dea51ebeda3b0051c6c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Fragment;
-
-use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\Event\ExceptionEvent;
-use Symfony\Component\HttpKernel\HttpCache\SubRequestHandler;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
-
-/**
- * Implements the inline rendering strategy where the Request is rendered by the current HTTP kernel.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class InlineFragmentRenderer extends RoutableFragmentRenderer
-{
-    private $kernel;
-    private $dispatcher;
-
-    public function __construct(HttpKernelInterface $kernel, EventDispatcherInterface $dispatcher = null)
-    {
-        $this->kernel = $kernel;
-        $this->dispatcher = LegacyEventDispatcherProxy::decorate($dispatcher);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Additional available options:
-     *
-     *  * alt: an alternative URI to render in case of an error
-     */
-    public function render($uri, Request $request, array $options = [])
-    {
-        $reference = null;
-        if ($uri instanceof ControllerReference) {
-            $reference = $uri;
-
-            // Remove attributes from the generated URI because if not, the Symfony
-            // routing system will use them to populate the Request attributes. We don't
-            // want that as we want to preserve objects (so we manually set Request attributes
-            // below instead)
-            $attributes = $reference->attributes;
-            $reference->attributes = [];
-
-            // The request format and locale might have been overridden by the user
-            foreach (['_format', '_locale'] as $key) {
-                if (isset($attributes[$key])) {
-                    $reference->attributes[$key] = $attributes[$key];
-                }
-            }
-
-            $uri = $this->generateFragmentUri($uri, $request, false, false);
-
-            $reference->attributes = array_merge($attributes, $reference->attributes);
-        }
-
-        $subRequest = $this->createSubRequest($uri, $request);
-
-        // override Request attributes as they can be objects (which are not supported by the generated URI)
-        if (null !== $reference) {
-            $subRequest->attributes->add($reference->attributes);
-        }
-
-        $level = ob_get_level();
-        try {
-            return SubRequestHandler::handle($this->kernel, $subRequest, HttpKernelInterface::SUB_REQUEST, false);
-        } catch (\Exception $e) {
-            // we dispatch the exception event to trigger the logging
-            // the response that comes back is ignored
-            if (isset($options['ignore_errors']) && $options['ignore_errors'] && $this->dispatcher) {
-                $event = new ExceptionEvent($this->kernel, $request, HttpKernelInterface::SUB_REQUEST, $e);
-
-                $this->dispatcher->dispatch($event, KernelEvents::EXCEPTION);
-            }
-
-            // let's clean up the output buffers that were created by the sub-request
-            Response::closeOutputBuffers($level, false);
-
-            if (isset($options['alt'])) {
-                $alt = $options['alt'];
-                unset($options['alt']);
-
-                return $this->render($alt, $request, $options);
-            }
-
-            if (!isset($options['ignore_errors']) || !$options['ignore_errors']) {
-                throw $e;
-            }
-
-            return new Response();
-        }
-    }
-
-    protected function createSubRequest($uri, Request $request)
-    {
-        $cookies = $request->cookies->all();
-        $server = $request->server->all();
-
-        unset($server['HTTP_IF_MODIFIED_SINCE']);
-        unset($server['HTTP_IF_NONE_MATCH']);
-
-        $subRequest = Request::create($uri, 'get', [], $cookies, [], $server);
-        if ($request->headers->has('Surrogate-Capability')) {
-            $subRequest->headers->set('Surrogate-Capability', $request->headers->get('Surrogate-Capability'));
-        }
-
-        static $setSession;
-
-        if (null === $setSession) {
-            $setSession = \Closure::bind(static function ($subRequest, $request) { $subRequest->session = $request->session; }, null, Request::class);
-        }
-        $setSession($subRequest, $request);
-
-        if ($request->get('_format')) {
-            $subRequest->attributes->set('_format', $request->get('_format'));
-        }
-        if ($request->getDefaultLocale() !== $request->getLocale()) {
-            $subRequest->setLocale($request->getLocale());
-        }
-
-        return $subRequest;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'inline';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php
deleted file mode 100644
index bd8f85b19a807479d3f41b538c90dc2021d74db5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Fragment;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\EventListener\FragmentListener;
-
-/**
- * Adds the possibility to generate a fragment URI for a given Controller.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class RoutableFragmentRenderer implements FragmentRendererInterface
-{
-    private $fragmentPath = '/_fragment';
-
-    /**
-     * Sets the fragment path that triggers the fragment listener.
-     *
-     * @param string $path The path
-     *
-     * @see FragmentListener
-     */
-    public function setFragmentPath($path)
-    {
-        $this->fragmentPath = $path;
-    }
-
-    /**
-     * Generates a fragment URI for a given controller.
-     *
-     * @param bool $absolute Whether to generate an absolute URL or not
-     * @param bool $strict   Whether to allow non-scalar attributes or not
-     *
-     * @return string A fragment URI
-     */
-    protected function generateFragmentUri(ControllerReference $reference, Request $request, $absolute = false, $strict = true)
-    {
-        if ($strict) {
-            $this->checkNonScalar($reference->attributes);
-        }
-
-        // We need to forward the current _format and _locale values as we don't have
-        // a proper routing pattern to do the job for us.
-        // This makes things inconsistent if you switch from rendering a controller
-        // to rendering a route if the route pattern does not contain the special
-        // _format and _locale placeholders.
-        if (!isset($reference->attributes['_format'])) {
-            $reference->attributes['_format'] = $request->getRequestFormat();
-        }
-        if (!isset($reference->attributes['_locale'])) {
-            $reference->attributes['_locale'] = $request->getLocale();
-        }
-
-        $reference->attributes['_controller'] = $reference->controller;
-
-        $reference->query['_path'] = http_build_query($reference->attributes, '', '&');
-
-        $path = $this->fragmentPath.'?'.http_build_query($reference->query, '', '&');
-
-        if ($absolute) {
-            return $request->getUriForPath($path);
-        }
-
-        return $request->getBaseUrl().$path;
-    }
-
-    private function checkNonScalar(array $values)
-    {
-        foreach ($values as $key => $value) {
-            if (\is_array($value)) {
-                $this->checkNonScalar($value);
-            } elseif (!is_scalar($value) && null !== $value) {
-                throw new \LogicException(sprintf('Controller attributes cannot contain non-scalar/non-null values (value for key "%s" is not a scalar or null).', $key));
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/SsiFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/SsiFragmentRenderer.php
deleted file mode 100644
index 45e7122f05f1e7a3965c9886e603964d3c495910..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Fragment/SsiFragmentRenderer.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Fragment;
-
-/**
- * Implements the SSI rendering strategy.
- *
- * @author Sebastian Krebs <krebs.seb@gmail.com>
- */
-class SsiFragmentRenderer extends AbstractSurrogateFragmentRenderer
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'ssi';
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php b/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php
deleted file mode 100644
index 472d87e483372f6e48265c8a2a4005c48e7bedd2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * Abstract class implementing Surrogate capabilities to Request and Response instances.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Robin Chalas <robin.chalas@gmail.com>
- */
-abstract class AbstractSurrogate implements SurrogateInterface
-{
-    protected $contentTypes;
-    protected $phpEscapeMap = [
-        ['<?', '<%', '<s', '<S'],
-        ['<?php echo "<?"; ?>', '<?php echo "<%"; ?>', '<?php echo "<s"; ?>', '<?php echo "<S"; ?>'],
-    ];
-
-    /**
-     * @param array $contentTypes An array of content-type that should be parsed for Surrogate information
-     *                            (default: text/html, text/xml, application/xhtml+xml, and application/xml)
-     */
-    public function __construct(array $contentTypes = ['text/html', 'text/xml', 'application/xhtml+xml', 'application/xml'])
-    {
-        $this->contentTypes = $contentTypes;
-    }
-
-    /**
-     * Returns a new cache strategy instance.
-     *
-     * @return ResponseCacheStrategyInterface A ResponseCacheStrategyInterface instance
-     */
-    public function createCacheStrategy()
-    {
-        return new ResponseCacheStrategy();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasSurrogateCapability(Request $request)
-    {
-        if (null === $value = $request->headers->get('Surrogate-Capability')) {
-            return false;
-        }
-
-        return false !== strpos($value, sprintf('%s/1.0', strtoupper($this->getName())));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSurrogateCapability(Request $request)
-    {
-        $current = $request->headers->get('Surrogate-Capability');
-        $new = sprintf('symfony="%s/1.0"', strtoupper($this->getName()));
-
-        $request->headers->set('Surrogate-Capability', $current ? $current.', '.$new : $new);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function needsParsing(Response $response)
-    {
-        if (!$control = $response->headers->get('Surrogate-Control')) {
-            return false;
-        }
-
-        $pattern = sprintf('#content="[^"]*%s/1.0[^"]*"#', strtoupper($this->getName()));
-
-        return (bool) preg_match($pattern, $control);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(HttpCache $cache, $uri, $alt, $ignoreErrors)
-    {
-        $subRequest = Request::create($uri, Request::METHOD_GET, [], $cache->getRequest()->cookies->all(), [], $cache->getRequest()->server->all());
-
-        try {
-            $response = $cache->handle($subRequest, HttpKernelInterface::SUB_REQUEST, true);
-
-            if (!$response->isSuccessful()) {
-                throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %d).', $subRequest->getUri(), $response->getStatusCode()));
-            }
-
-            return $response->getContent();
-        } catch (\Exception $e) {
-            if ($alt) {
-                return $this->handle($cache, $alt, '', $ignoreErrors);
-            }
-
-            if (!$ignoreErrors) {
-                throw $e;
-            }
-        }
-
-        return '';
-    }
-
-    /**
-     * Remove the Surrogate from the Surrogate-Control header.
-     */
-    protected function removeFromControl(Response $response)
-    {
-        if (!$response->headers->has('Surrogate-Control')) {
-            return;
-        }
-
-        $value = $response->headers->get('Surrogate-Control');
-        $upperName = strtoupper($this->getName());
-
-        if (sprintf('content="%s/1.0"', $upperName) == $value) {
-            $response->headers->remove('Surrogate-Control');
-        } elseif (preg_match(sprintf('#,\s*content="%s/1.0"#', $upperName), $value)) {
-            $response->headers->set('Surrogate-Control', preg_replace(sprintf('#,\s*content="%s/1.0"#', $upperName), '', $value));
-        } elseif (preg_match(sprintf('#content="%s/1.0",\s*#', $upperName), $value)) {
-            $response->headers->set('Surrogate-Control', preg_replace(sprintf('#content="%s/1.0",\s*#', $upperName), '', $value));
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/Esi.php b/vendor/symfony/http-kernel/HttpCache/Esi.php
deleted file mode 100644
index 3d461a7fe3ec5133d79ef3964e36f181da0ff513..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpCache/Esi.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Esi implements the ESI capabilities to Request and Response instances.
- *
- * For more information, read the following W3C notes:
- *
- *  * ESI Language Specification 1.0 (http://www.w3.org/TR/esi-lang)
- *
- *  * Edge Architecture Specification (http://www.w3.org/TR/edge-arch)
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Esi extends AbstractSurrogate
-{
-    public function getName()
-    {
-        return 'esi';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSurrogateControl(Response $response)
-    {
-        if (false !== strpos($response->getContent(), '<esi:include')) {
-            $response->headers->set('Surrogate-Control', 'content="ESI/1.0"');
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function renderIncludeTag($uri, $alt = null, $ignoreErrors = true, $comment = '')
-    {
-        $html = sprintf('<esi:include src="%s"%s%s />',
-            $uri,
-            $ignoreErrors ? ' onerror="continue"' : '',
-            $alt ? sprintf(' alt="%s"', $alt) : ''
-        );
-
-        if (!empty($comment)) {
-            return sprintf("<esi:comment text=\"%s\" />\n%s", $comment, $html);
-        }
-
-        return $html;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function process(Request $request, Response $response)
-    {
-        $type = $response->headers->get('Content-Type');
-        if (empty($type)) {
-            $type = 'text/html';
-        }
-
-        $parts = explode(';', $type);
-        if (!\in_array($parts[0], $this->contentTypes)) {
-            return $response;
-        }
-
-        // we don't use a proper XML parser here as we can have ESI tags in a plain text response
-        $content = $response->getContent();
-        $content = preg_replace('#<esi\:remove>.*?</esi\:remove>#s', '', $content);
-        $content = preg_replace('#<esi\:comment[^>]+>#s', '', $content);
-
-        $chunks = preg_split('#<esi\:include\s+(.*?)\s*(?:/|</esi\:include)>#', $content, -1, \PREG_SPLIT_DELIM_CAPTURE);
-        $chunks[0] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[0]);
-
-        $i = 1;
-        while (isset($chunks[$i])) {
-            $options = [];
-            preg_match_all('/(src|onerror|alt)="([^"]*?)"/', $chunks[$i], $matches, \PREG_SET_ORDER);
-            foreach ($matches as $set) {
-                $options[$set[1]] = $set[2];
-            }
-
-            if (!isset($options['src'])) {
-                throw new \RuntimeException('Unable to process an ESI tag without a "src" attribute.');
-            }
-
-            $chunks[$i] = sprintf('<?php echo $this->surrogate->handle($this, %s, %s, %s) ?>'."\n",
-                var_export($options['src'], true),
-                var_export(isset($options['alt']) ? $options['alt'] : '', true),
-                isset($options['onerror']) && 'continue' === $options['onerror'] ? 'true' : 'false'
-            );
-            ++$i;
-            $chunks[$i] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[$i]);
-            ++$i;
-        }
-        $content = implode('', $chunks);
-
-        $response->setContent($content);
-        $response->headers->set('X-Body-Eval', 'ESI');
-
-        // remove ESI/1.0 from the Surrogate-Control header
-        $this->removeFromControl($response);
-
-        return $response;
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/HttpCache.php b/vendor/symfony/http-kernel/HttpCache/HttpCache.php
deleted file mode 100644
index 6c4715802efdaf9bded3531657649ba142be5039..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpCache/HttpCache.php
+++ /dev/null
@@ -1,735 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- * (based on commit 02d2b48d75bcb63cf1c0c7149c077ad256542801)
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\TerminableInterface;
-
-/**
- * Cache provides HTTP caching.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HttpCache implements HttpKernelInterface, TerminableInterface
-{
-    private $kernel;
-    private $store;
-    private $request;
-    private $surrogate;
-    private $surrogateCacheStrategy;
-    private $options = [];
-    private $traces = [];
-
-    /**
-     * Constructor.
-     *
-     * The available options are:
-     *
-     *   * debug                  If true, exceptions are thrown when things go wrong. Otherwise, the cache
-     *                            will try to carry on and deliver a meaningful response.
-     *
-     *   * trace_level            May be one of 'none', 'short' and 'full'. For 'short', a concise trace of the
-     *                            master request will be added as an HTTP header. 'full' will add traces for all
-     *                            requests (including ESI subrequests). (default: 'full' if in debug; 'none' otherwise)
-     *
-     *   * trace_header           Header name to use for traces. (default: X-Symfony-Cache)
-     *
-     *   * default_ttl            The number of seconds that a cache entry should be considered
-     *                            fresh when no explicit freshness information is provided in
-     *                            a response. Explicit Cache-Control or Expires headers
-     *                            override this value. (default: 0)
-     *
-     *   * private_headers        Set of request headers that trigger "private" cache-control behavior
-     *                            on responses that don't explicitly state whether the response is
-     *                            public or private via a Cache-Control directive. (default: Authorization and Cookie)
-     *
-     *   * allow_reload           Specifies whether the client can force a cache reload by including a
-     *                            Cache-Control "no-cache" directive in the request. Set it to ``true``
-     *                            for compliance with RFC 2616. (default: false)
-     *
-     *   * allow_revalidate       Specifies whether the client can force a cache revalidate by including
-     *                            a Cache-Control "max-age=0" directive in the request. Set it to ``true``
-     *                            for compliance with RFC 2616. (default: false)
-     *
-     *   * stale_while_revalidate Specifies the default number of seconds (the granularity is the second as the
-     *                            Response TTL precision is a second) during which the cache can immediately return
-     *                            a stale response while it revalidates it in the background (default: 2).
-     *                            This setting is overridden by the stale-while-revalidate HTTP Cache-Control
-     *                            extension (see RFC 5861).
-     *
-     *   * stale_if_error         Specifies the default number of seconds (the granularity is the second) during which
-     *                            the cache can serve a stale response when an error is encountered (default: 60).
-     *                            This setting is overridden by the stale-if-error HTTP Cache-Control extension
-     *                            (see RFC 5861).
-     */
-    public function __construct(HttpKernelInterface $kernel, StoreInterface $store, SurrogateInterface $surrogate = null, array $options = [])
-    {
-        $this->store = $store;
-        $this->kernel = $kernel;
-        $this->surrogate = $surrogate;
-
-        // needed in case there is a fatal error because the backend is too slow to respond
-        register_shutdown_function([$this->store, 'cleanup']);
-
-        $this->options = array_merge([
-            'debug' => false,
-            'default_ttl' => 0,
-            'private_headers' => ['Authorization', 'Cookie'],
-            'allow_reload' => false,
-            'allow_revalidate' => false,
-            'stale_while_revalidate' => 2,
-            'stale_if_error' => 60,
-            'trace_level' => 'none',
-            'trace_header' => 'X-Symfony-Cache',
-        ], $options);
-
-        if (!isset($options['trace_level'])) {
-            $this->options['trace_level'] = $this->options['debug'] ? 'full' : 'none';
-        }
-    }
-
-    /**
-     * Gets the current store.
-     *
-     * @return StoreInterface A StoreInterface instance
-     */
-    public function getStore()
-    {
-        return $this->store;
-    }
-
-    /**
-     * Returns an array of events that took place during processing of the last request.
-     *
-     * @return array An array of events
-     */
-    public function getTraces()
-    {
-        return $this->traces;
-    }
-
-    private function addTraces(Response $response)
-    {
-        $traceString = null;
-
-        if ('full' === $this->options['trace_level']) {
-            $traceString = $this->getLog();
-        }
-
-        if ('short' === $this->options['trace_level'] && $masterId = array_key_first($this->traces)) {
-            $traceString = implode('/', $this->traces[$masterId]);
-        }
-
-        if (null !== $traceString) {
-            $response->headers->add([$this->options['trace_header'] => $traceString]);
-        }
-    }
-
-    /**
-     * Returns a log message for the events of the last request processing.
-     *
-     * @return string A log message
-     */
-    public function getLog()
-    {
-        $log = [];
-        foreach ($this->traces as $request => $traces) {
-            $log[] = sprintf('%s: %s', $request, implode(', ', $traces));
-        }
-
-        return implode('; ', $log);
-    }
-
-    /**
-     * Gets the Request instance associated with the master request.
-     *
-     * @return Request A Request instance
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-
-    /**
-     * Gets the Kernel instance.
-     *
-     * @return HttpKernelInterface An HttpKernelInterface instance
-     */
-    public function getKernel()
-    {
-        return $this->kernel;
-    }
-
-    /**
-     * Gets the Surrogate instance.
-     *
-     * @return SurrogateInterface A Surrogate instance
-     *
-     * @throws \LogicException
-     */
-    public function getSurrogate()
-    {
-        return $this->surrogate;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
-    {
-        // FIXME: catch exceptions and implement a 500 error page here? -> in Varnish, there is a built-in error page mechanism
-        if (HttpKernelInterface::MASTER_REQUEST === $type) {
-            $this->traces = [];
-            // Keep a clone of the original request for surrogates so they can access it.
-            // We must clone here to get a separate instance because the application will modify the request during
-            // the application flow (we know it always does because we do ourselves by setting REMOTE_ADDR to 127.0.0.1
-            // and adding the X-Forwarded-For header, see HttpCache::forward()).
-            $this->request = clone $request;
-            if (null !== $this->surrogate) {
-                $this->surrogateCacheStrategy = $this->surrogate->createCacheStrategy();
-            }
-        }
-
-        $this->traces[$this->getTraceKey($request)] = [];
-
-        if (!$request->isMethodSafe()) {
-            $response = $this->invalidate($request, $catch);
-        } elseif ($request->headers->has('expect') || !$request->isMethodCacheable()) {
-            $response = $this->pass($request, $catch);
-        } elseif ($this->options['allow_reload'] && $request->isNoCache()) {
-            /*
-                If allow_reload is configured and the client requests "Cache-Control: no-cache",
-                reload the cache by fetching a fresh response and caching it (if possible).
-            */
-            $this->record($request, 'reload');
-            $response = $this->fetch($request, $catch);
-        } else {
-            $response = $this->lookup($request, $catch);
-        }
-
-        $this->restoreResponseBody($request, $response);
-
-        if (HttpKernelInterface::MASTER_REQUEST === $type) {
-            $this->addTraces($response);
-        }
-
-        if (null !== $this->surrogate) {
-            if (HttpKernelInterface::MASTER_REQUEST === $type) {
-                $this->surrogateCacheStrategy->update($response);
-            } else {
-                $this->surrogateCacheStrategy->add($response);
-            }
-        }
-
-        $response->prepare($request);
-
-        $response->isNotModified($request);
-
-        return $response;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function terminate(Request $request, Response $response)
-    {
-        if ($this->getKernel() instanceof TerminableInterface) {
-            $this->getKernel()->terminate($request, $response);
-        }
-    }
-
-    /**
-     * Forwards the Request to the backend without storing the Response in the cache.
-     *
-     * @param bool $catch Whether to process exceptions
-     *
-     * @return Response A Response instance
-     */
-    protected function pass(Request $request, $catch = false)
-    {
-        $this->record($request, 'pass');
-
-        return $this->forward($request, $catch);
-    }
-
-    /**
-     * Invalidates non-safe methods (like POST, PUT, and DELETE).
-     *
-     * @param bool $catch Whether to process exceptions
-     *
-     * @return Response A Response instance
-     *
-     * @throws \Exception
-     *
-     * @see RFC2616 13.10
-     */
-    protected function invalidate(Request $request, $catch = false)
-    {
-        $response = $this->pass($request, $catch);
-
-        // invalidate only when the response is successful
-        if ($response->isSuccessful() || $response->isRedirect()) {
-            try {
-                $this->store->invalidate($request);
-
-                // As per the RFC, invalidate Location and Content-Location URLs if present
-                foreach (['Location', 'Content-Location'] as $header) {
-                    if ($uri = $response->headers->get($header)) {
-                        $subRequest = Request::create($uri, 'get', [], [], [], $request->server->all());
-
-                        $this->store->invalidate($subRequest);
-                    }
-                }
-
-                $this->record($request, 'invalidate');
-            } catch (\Exception $e) {
-                $this->record($request, 'invalidate-failed');
-
-                if ($this->options['debug']) {
-                    throw $e;
-                }
-            }
-        }
-
-        return $response;
-    }
-
-    /**
-     * Lookups a Response from the cache for the given Request.
-     *
-     * When a matching cache entry is found and is fresh, it uses it as the
-     * response without forwarding any request to the backend. When a matching
-     * cache entry is found but is stale, it attempts to "validate" the entry with
-     * the backend using conditional GET. When no matching cache entry is found,
-     * it triggers "miss" processing.
-     *
-     * @param bool $catch Whether to process exceptions
-     *
-     * @return Response A Response instance
-     *
-     * @throws \Exception
-     */
-    protected function lookup(Request $request, $catch = false)
-    {
-        try {
-            $entry = $this->store->lookup($request);
-        } catch (\Exception $e) {
-            $this->record($request, 'lookup-failed');
-
-            if ($this->options['debug']) {
-                throw $e;
-            }
-
-            return $this->pass($request, $catch);
-        }
-
-        if (null === $entry) {
-            $this->record($request, 'miss');
-
-            return $this->fetch($request, $catch);
-        }
-
-        if (!$this->isFreshEnough($request, $entry)) {
-            $this->record($request, 'stale');
-
-            return $this->validate($request, $entry, $catch);
-        }
-
-        if ($entry->headers->hasCacheControlDirective('no-cache')) {
-            return $this->validate($request, $entry, $catch);
-        }
-
-        $this->record($request, 'fresh');
-
-        $entry->headers->set('Age', $entry->getAge());
-
-        return $entry;
-    }
-
-    /**
-     * Validates that a cache entry is fresh.
-     *
-     * The original request is used as a template for a conditional
-     * GET request with the backend.
-     *
-     * @param bool $catch Whether to process exceptions
-     *
-     * @return Response A Response instance
-     */
-    protected function validate(Request $request, Response $entry, $catch = false)
-    {
-        $subRequest = clone $request;
-
-        // send no head requests because we want content
-        if ('HEAD' === $request->getMethod()) {
-            $subRequest->setMethod('GET');
-        }
-
-        // add our cached last-modified validator
-        if ($entry->headers->has('Last-Modified')) {
-            $subRequest->headers->set('if_modified_since', $entry->headers->get('Last-Modified'));
-        }
-
-        // Add our cached etag validator to the environment.
-        // We keep the etags from the client to handle the case when the client
-        // has a different private valid entry which is not cached here.
-        $cachedEtags = $entry->getEtag() ? [$entry->getEtag()] : [];
-        $requestEtags = $request->getETags();
-        if ($etags = array_unique(array_merge($cachedEtags, $requestEtags))) {
-            $subRequest->headers->set('if_none_match', implode(', ', $etags));
-        }
-
-        $response = $this->forward($subRequest, $catch, $entry);
-
-        if (304 == $response->getStatusCode()) {
-            $this->record($request, 'valid');
-
-            // return the response and not the cache entry if the response is valid but not cached
-            $etag = $response->getEtag();
-            if ($etag && \in_array($etag, $requestEtags) && !\in_array($etag, $cachedEtags)) {
-                return $response;
-            }
-
-            $entry = clone $entry;
-            $entry->headers->remove('Date');
-
-            foreach (['Date', 'Expires', 'Cache-Control', 'ETag', 'Last-Modified'] as $name) {
-                if ($response->headers->has($name)) {
-                    $entry->headers->set($name, $response->headers->get($name));
-                }
-            }
-
-            $response = $entry;
-        } else {
-            $this->record($request, 'invalid');
-        }
-
-        if ($response->isCacheable()) {
-            $this->store($request, $response);
-        }
-
-        return $response;
-    }
-
-    /**
-     * Unconditionally fetches a fresh response from the backend and
-     * stores it in the cache if is cacheable.
-     *
-     * @param bool $catch Whether to process exceptions
-     *
-     * @return Response A Response instance
-     */
-    protected function fetch(Request $request, $catch = false)
-    {
-        $subRequest = clone $request;
-
-        // send no head requests because we want content
-        if ('HEAD' === $request->getMethod()) {
-            $subRequest->setMethod('GET');
-        }
-
-        // avoid that the backend sends no content
-        $subRequest->headers->remove('if_modified_since');
-        $subRequest->headers->remove('if_none_match');
-
-        $response = $this->forward($subRequest, $catch);
-
-        if ($response->isCacheable()) {
-            $this->store($request, $response);
-        }
-
-        return $response;
-    }
-
-    /**
-     * Forwards the Request to the backend and returns the Response.
-     *
-     * All backend requests (cache passes, fetches, cache validations)
-     * run through this method.
-     *
-     * @param bool          $catch Whether to catch exceptions or not
-     * @param Response|null $entry A Response instance (the stale entry if present, null otherwise)
-     *
-     * @return Response A Response instance
-     */
-    protected function forward(Request $request, $catch = false, Response $entry = null)
-    {
-        if ($this->surrogate) {
-            $this->surrogate->addSurrogateCapability($request);
-        }
-
-        // always a "master" request (as the real master request can be in cache)
-        $response = SubRequestHandler::handle($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST, $catch);
-
-        /*
-         * Support stale-if-error given on Responses or as a config option.
-         * RFC 7234 summarizes in Section 4.2.4 (but also mentions with the individual
-         * Cache-Control directives) that
-         *
-         *      A cache MUST NOT generate a stale response if it is prohibited by an
-         *      explicit in-protocol directive (e.g., by a "no-store" or "no-cache"
-         *      cache directive, a "must-revalidate" cache-response-directive, or an
-         *      applicable "s-maxage" or "proxy-revalidate" cache-response-directive;
-         *      see Section 5.2.2).
-         *
-         * https://tools.ietf.org/html/rfc7234#section-4.2.4
-         *
-         * We deviate from this in one detail, namely that we *do* serve entries in the
-         * stale-if-error case even if they have a `s-maxage` Cache-Control directive.
-         */
-        if (null !== $entry
-            && \in_array($response->getStatusCode(), [500, 502, 503, 504])
-            && !$entry->headers->hasCacheControlDirective('no-cache')
-            && !$entry->mustRevalidate()
-        ) {
-            if (null === $age = $entry->headers->getCacheControlDirective('stale-if-error')) {
-                $age = $this->options['stale_if_error'];
-            }
-
-            /*
-             * stale-if-error gives the (extra) time that the Response may be used *after* it has become stale.
-             * So we compare the time the $entry has been sitting in the cache already with the
-             * time it was fresh plus the allowed grace period.
-             */
-            if ($entry->getAge() <= $entry->getMaxAge() + $age) {
-                $this->record($request, 'stale-if-error');
-
-                return $entry;
-            }
-        }
-
-        /*
-            RFC 7231 Sect. 7.1.1.2 says that a server that does not have a reasonably accurate
-            clock MUST NOT send a "Date" header, although it MUST send one in most other cases
-            except for 1xx or 5xx responses where it MAY do so.
-
-            Anyway, a client that received a message without a "Date" header MUST add it.
-        */
-        if (!$response->headers->has('Date')) {
-            $response->setDate(\DateTime::createFromFormat('U', time()));
-        }
-
-        $this->processResponseBody($request, $response);
-
-        if ($this->isPrivateRequest($request) && !$response->headers->hasCacheControlDirective('public')) {
-            $response->setPrivate();
-        } elseif ($this->options['default_ttl'] > 0 && null === $response->getTtl() && !$response->headers->getCacheControlDirective('must-revalidate')) {
-            $response->setTtl($this->options['default_ttl']);
-        }
-
-        return $response;
-    }
-
-    /**
-     * Checks whether the cache entry is "fresh enough" to satisfy the Request.
-     *
-     * @return bool true if the cache entry if fresh enough, false otherwise
-     */
-    protected function isFreshEnough(Request $request, Response $entry)
-    {
-        if (!$entry->isFresh()) {
-            return $this->lock($request, $entry);
-        }
-
-        if ($this->options['allow_revalidate'] && null !== $maxAge = $request->headers->getCacheControlDirective('max-age')) {
-            return $maxAge > 0 && $maxAge >= $entry->getAge();
-        }
-
-        return true;
-    }
-
-    /**
-     * Locks a Request during the call to the backend.
-     *
-     * @return bool true if the cache entry can be returned even if it is staled, false otherwise
-     */
-    protected function lock(Request $request, Response $entry)
-    {
-        // try to acquire a lock to call the backend
-        $lock = $this->store->lock($request);
-
-        if (true === $lock) {
-            // we have the lock, call the backend
-            return false;
-        }
-
-        // there is already another process calling the backend
-
-        // May we serve a stale response?
-        if ($this->mayServeStaleWhileRevalidate($entry)) {
-            $this->record($request, 'stale-while-revalidate');
-
-            return true;
-        }
-
-        // wait for the lock to be released
-        if ($this->waitForLock($request)) {
-            // replace the current entry with the fresh one
-            $new = $this->lookup($request);
-            $entry->headers = $new->headers;
-            $entry->setContent($new->getContent());
-            $entry->setStatusCode($new->getStatusCode());
-            $entry->setProtocolVersion($new->getProtocolVersion());
-            foreach ($new->headers->getCookies() as $cookie) {
-                $entry->headers->setCookie($cookie);
-            }
-        } else {
-            // backend is slow as hell, send a 503 response (to avoid the dog pile effect)
-            $entry->setStatusCode(503);
-            $entry->setContent('503 Service Unavailable');
-            $entry->headers->set('Retry-After', 10);
-        }
-
-        return true;
-    }
-
-    /**
-     * Writes the Response to the cache.
-     *
-     * @throws \Exception
-     */
-    protected function store(Request $request, Response $response)
-    {
-        try {
-            $this->store->write($request, $response);
-
-            $this->record($request, 'store');
-
-            $response->headers->set('Age', $response->getAge());
-        } catch (\Exception $e) {
-            $this->record($request, 'store-failed');
-
-            if ($this->options['debug']) {
-                throw $e;
-            }
-        }
-
-        // now that the response is cached, release the lock
-        $this->store->unlock($request);
-    }
-
-    /**
-     * Restores the Response body.
-     */
-    private function restoreResponseBody(Request $request, Response $response)
-    {
-        if ($response->headers->has('X-Body-Eval')) {
-            ob_start();
-
-            if ($response->headers->has('X-Body-File')) {
-                include $response->headers->get('X-Body-File');
-            } else {
-                eval('; ?>'.$response->getContent().'<?php ;');
-            }
-
-            $response->setContent(ob_get_clean());
-            $response->headers->remove('X-Body-Eval');
-            if (!$response->headers->has('Transfer-Encoding')) {
-                $response->headers->set('Content-Length', \strlen($response->getContent()));
-            }
-        } elseif ($response->headers->has('X-Body-File')) {
-            // Response does not include possibly dynamic content (ESI, SSI), so we need
-            // not handle the content for HEAD requests
-            if (!$request->isMethod('HEAD')) {
-                $response->setContent(file_get_contents($response->headers->get('X-Body-File')));
-            }
-        } else {
-            return;
-        }
-
-        $response->headers->remove('X-Body-File');
-    }
-
-    protected function processResponseBody(Request $request, Response $response)
-    {
-        if (null !== $this->surrogate && $this->surrogate->needsParsing($response)) {
-            $this->surrogate->process($request, $response);
-        }
-    }
-
-    /**
-     * Checks if the Request includes authorization or other sensitive information
-     * that should cause the Response to be considered private by default.
-     */
-    private function isPrivateRequest(Request $request): bool
-    {
-        foreach ($this->options['private_headers'] as $key) {
-            $key = strtolower(str_replace('HTTP_', '', $key));
-
-            if ('cookie' === $key) {
-                if (\count($request->cookies->all())) {
-                    return true;
-                }
-            } elseif ($request->headers->has($key)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Records that an event took place.
-     */
-    private function record(Request $request, string $event)
-    {
-        $this->traces[$this->getTraceKey($request)][] = $event;
-    }
-
-    /**
-     * Calculates the key we use in the "trace" array for a given request.
-     */
-    private function getTraceKey(Request $request): string
-    {
-        $path = $request->getPathInfo();
-        if ($qs = $request->getQueryString()) {
-            $path .= '?'.$qs;
-        }
-
-        return $request->getMethod().' '.$path;
-    }
-
-    /**
-     * Checks whether the given (cached) response may be served as "stale" when a revalidation
-     * is currently in progress.
-     */
-    private function mayServeStaleWhileRevalidate(Response $entry): bool
-    {
-        $timeout = $entry->headers->getCacheControlDirective('stale-while-revalidate');
-
-        if (null === $timeout) {
-            $timeout = $this->options['stale_while_revalidate'];
-        }
-
-        return abs($entry->getTtl()) < $timeout;
-    }
-
-    /**
-     * Waits for the store to release a locked entry.
-     */
-    private function waitForLock(Request $request): bool
-    {
-        $wait = 0;
-        while ($this->store->isLocked($request) && $wait < 100) {
-            usleep(50000);
-            ++$wait;
-        }
-
-        return $wait < 100;
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php b/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php
deleted file mode 100644
index c30fface603ebc267bc644450cc09457394edd86..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php
+++ /dev/null
@@ -1,213 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * ResponseCacheStrategy knows how to compute the Response cache HTTP header
- * based on the different response cache headers.
- *
- * This implementation changes the master response TTL to the smallest TTL received
- * or force validation if one of the surrogates has validation cache strategy.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ResponseCacheStrategy implements ResponseCacheStrategyInterface
-{
-    /**
-     * Cache-Control headers that are sent to the final response if they appear in ANY of the responses.
-     */
-    private static $overrideDirectives = ['private', 'no-cache', 'no-store', 'no-transform', 'must-revalidate', 'proxy-revalidate'];
-
-    /**
-     * Cache-Control headers that are sent to the final response if they appear in ALL of the responses.
-     */
-    private static $inheritDirectives = ['public', 'immutable'];
-
-    private $embeddedResponses = 0;
-    private $isNotCacheableResponseEmbedded = false;
-    private $age = 0;
-    private $flagDirectives = [
-        'no-cache' => null,
-        'no-store' => null,
-        'no-transform' => null,
-        'must-revalidate' => null,
-        'proxy-revalidate' => null,
-        'public' => null,
-        'private' => null,
-        'immutable' => null,
-    ];
-    private $ageDirectives = [
-        'max-age' => null,
-        's-maxage' => null,
-        'expires' => null,
-    ];
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add(Response $response)
-    {
-        ++$this->embeddedResponses;
-
-        foreach (self::$overrideDirectives as $directive) {
-            if ($response->headers->hasCacheControlDirective($directive)) {
-                $this->flagDirectives[$directive] = true;
-            }
-        }
-
-        foreach (self::$inheritDirectives as $directive) {
-            if (false !== $this->flagDirectives[$directive]) {
-                $this->flagDirectives[$directive] = $response->headers->hasCacheControlDirective($directive);
-            }
-        }
-
-        $age = $response->getAge();
-        $this->age = max($this->age, $age);
-
-        if ($this->willMakeFinalResponseUncacheable($response)) {
-            $this->isNotCacheableResponseEmbedded = true;
-
-            return;
-        }
-
-        $this->storeRelativeAgeDirective('max-age', $response->headers->getCacheControlDirective('max-age'), $age);
-        $this->storeRelativeAgeDirective('s-maxage', $response->headers->getCacheControlDirective('s-maxage') ?: $response->headers->getCacheControlDirective('max-age'), $age);
-
-        $expires = $response->getExpires();
-        $expires = null !== $expires ? (int) $expires->format('U') - (int) $response->getDate()->format('U') : null;
-        $this->storeRelativeAgeDirective('expires', $expires >= 0 ? $expires : null, 0);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function update(Response $response)
-    {
-        // if we have no embedded Response, do nothing
-        if (0 === $this->embeddedResponses) {
-            return;
-        }
-
-        // Remove validation related headers of the master response,
-        // because some of the response content comes from at least
-        // one embedded response (which likely has a different caching strategy).
-        $response->setEtag(null);
-        $response->setLastModified(null);
-
-        $this->add($response);
-
-        $response->headers->set('Age', $this->age);
-
-        if ($this->isNotCacheableResponseEmbedded) {
-            if ($this->flagDirectives['no-store']) {
-                $response->headers->set('Cache-Control', 'no-cache, no-store, must-revalidate');
-            } else {
-                $response->headers->set('Cache-Control', 'no-cache, must-revalidate');
-            }
-
-            return;
-        }
-
-        $flags = array_filter($this->flagDirectives);
-
-        if (isset($flags['must-revalidate'])) {
-            $flags['no-cache'] = true;
-        }
-
-        $response->headers->set('Cache-Control', implode(', ', array_keys($flags)));
-
-        $maxAge = null;
-
-        if (is_numeric($this->ageDirectives['max-age'])) {
-            $maxAge = $this->ageDirectives['max-age'] + $this->age;
-            $response->headers->addCacheControlDirective('max-age', $maxAge);
-        }
-
-        if (is_numeric($this->ageDirectives['s-maxage'])) {
-            $sMaxage = $this->ageDirectives['s-maxage'] + $this->age;
-
-            if ($maxAge !== $sMaxage) {
-                $response->headers->addCacheControlDirective('s-maxage', $sMaxage);
-            }
-        }
-
-        if (is_numeric($this->ageDirectives['expires'])) {
-            $date = clone $response->getDate();
-            $date->modify('+'.($this->ageDirectives['expires'] + $this->age).' seconds');
-            $response->setExpires($date);
-        }
-    }
-
-    /**
-     * RFC2616, Section 13.4.
-     *
-     * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.4
-     */
-    private function willMakeFinalResponseUncacheable(Response $response): bool
-    {
-        // RFC2616: A response received with a status code of 200, 203, 300, 301 or 410
-        // MAY be stored by a cache […] unless a cache-control directive prohibits caching.
-        if ($response->headers->hasCacheControlDirective('no-cache')
-            || $response->headers->getCacheControlDirective('no-store')
-        ) {
-            return true;
-        }
-
-        // Last-Modified and Etag headers cannot be merged, they render the response uncacheable
-        // by default (except if the response also has max-age etc.).
-        if (\in_array($response->getStatusCode(), [200, 203, 300, 301, 410])
-            && null === $response->getLastModified()
-            && null === $response->getEtag()
-        ) {
-            return false;
-        }
-
-        // RFC2616: A response received with any other status code (e.g. status codes 302 and 307)
-        // MUST NOT be returned in a reply to a subsequent request unless there are
-        // cache-control directives or another header(s) that explicitly allow it.
-        $cacheControl = ['max-age', 's-maxage', 'must-revalidate', 'proxy-revalidate', 'public', 'private'];
-        foreach ($cacheControl as $key) {
-            if ($response->headers->hasCacheControlDirective($key)) {
-                return false;
-            }
-        }
-
-        if ($response->headers->has('Expires')) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Store lowest max-age/s-maxage/expires for the final response.
-     *
-     * The response might have been stored in cache a while ago. To keep things comparable,
-     * we have to subtract the age so that the value is normalized for an age of 0.
-     *
-     * If the value is lower than the currently stored value, we update the value, to keep a rolling
-     * minimal value of each instruction. If the value is NULL, the directive will not be set on the final response.
-     */
-    private function storeRelativeAgeDirective(string $directive, ?int $value, int $age)
-    {
-        if (null === $value) {
-            $this->ageDirectives[$directive] = false;
-        }
-
-        if (false !== $this->ageDirectives[$directive]) {
-            $value -= $age;
-            $this->ageDirectives[$directive] = null !== $this->ageDirectives[$directive] ? min($this->ageDirectives[$directive], $value) : $value;
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategyInterface.php b/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategyInterface.php
deleted file mode 100644
index e282299aee8a3faa065c3931f9d3f219dc3687b2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategyInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- * (based on commit 02d2b48d75bcb63cf1c0c7149c077ad256542801)
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * ResponseCacheStrategyInterface implementations know how to compute the
- * Response cache HTTP header based on the different response cache headers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ResponseCacheStrategyInterface
-{
-    /**
-     * Adds a Response.
-     */
-    public function add(Response $response);
-
-    /**
-     * Updates the Response HTTP headers based on the embedded Responses.
-     */
-    public function update(Response $response);
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/Ssi.php b/vendor/symfony/http-kernel/HttpCache/Ssi.php
deleted file mode 100644
index 6dba4e11dfeb95c34281ab83f26c96b88177b8c6..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpCache/Ssi.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Ssi implements the SSI capabilities to Request and Response instances.
- *
- * @author Sebastian Krebs <krebs.seb@gmail.com>
- */
-class Ssi extends AbstractSurrogate
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'ssi';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSurrogateControl(Response $response)
-    {
-        if (false !== strpos($response->getContent(), '<!--#include')) {
-            $response->headers->set('Surrogate-Control', 'content="SSI/1.0"');
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function renderIncludeTag($uri, $alt = null, $ignoreErrors = true, $comment = '')
-    {
-        return sprintf('<!--#include virtual="%s" -->', $uri);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function process(Request $request, Response $response)
-    {
-        $type = $response->headers->get('Content-Type');
-        if (empty($type)) {
-            $type = 'text/html';
-        }
-
-        $parts = explode(';', $type);
-        if (!\in_array($parts[0], $this->contentTypes)) {
-            return $response;
-        }
-
-        // we don't use a proper XML parser here as we can have SSI tags in a plain text response
-        $content = $response->getContent();
-
-        $chunks = preg_split('#<!--\#include\s+(.*?)\s*-->#', $content, -1, \PREG_SPLIT_DELIM_CAPTURE);
-        $chunks[0] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[0]);
-
-        $i = 1;
-        while (isset($chunks[$i])) {
-            $options = [];
-            preg_match_all('/(virtual)="([^"]*?)"/', $chunks[$i], $matches, \PREG_SET_ORDER);
-            foreach ($matches as $set) {
-                $options[$set[1]] = $set[2];
-            }
-
-            if (!isset($options['virtual'])) {
-                throw new \RuntimeException('Unable to process an SSI tag without a "virtual" attribute.');
-            }
-
-            $chunks[$i] = sprintf('<?php echo $this->surrogate->handle($this, %s, \'\', false) ?>'."\n",
-                var_export($options['virtual'], true)
-            );
-            ++$i;
-            $chunks[$i] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[$i]);
-            ++$i;
-        }
-        $content = implode('', $chunks);
-
-        $response->setContent($content);
-        $response->headers->set('X-Body-Eval', 'SSI');
-
-        // remove SSI/1.0 from the Surrogate-Control header
-        $this->removeFromControl($response);
-
-        return $response;
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/Store.php b/vendor/symfony/http-kernel/HttpCache/Store.php
deleted file mode 100644
index 9536d78879bdd751f2b42145cabec355744a83aa..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpCache/Store.php
+++ /dev/null
@@ -1,475 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Store implements all the logic for storing cache metadata (Request and Response headers).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Store implements StoreInterface
-{
-    protected $root;
-    private $keyCache;
-    private $locks;
-
-    /**
-     * @throws \RuntimeException
-     */
-    public function __construct(string $root)
-    {
-        $this->root = $root;
-        if (!file_exists($this->root) && !@mkdir($this->root, 0777, true) && !is_dir($this->root)) {
-            throw new \RuntimeException(sprintf('Unable to create the store directory (%s).', $this->root));
-        }
-        $this->keyCache = new \SplObjectStorage();
-        $this->locks = [];
-    }
-
-    /**
-     * Cleanups storage.
-     */
-    public function cleanup()
-    {
-        // unlock everything
-        foreach ($this->locks as $lock) {
-            flock($lock, \LOCK_UN);
-            fclose($lock);
-        }
-
-        $this->locks = [];
-    }
-
-    /**
-     * Tries to lock the cache for a given Request, without blocking.
-     *
-     * @return bool|string true if the lock is acquired, the path to the current lock otherwise
-     */
-    public function lock(Request $request)
-    {
-        $key = $this->getCacheKey($request);
-
-        if (!isset($this->locks[$key])) {
-            $path = $this->getPath($key);
-            if (!file_exists(\dirname($path)) && false === @mkdir(\dirname($path), 0777, true) && !is_dir(\dirname($path))) {
-                return $path;
-            }
-            $h = fopen($path, 'cb');
-            if (!flock($h, \LOCK_EX | \LOCK_NB)) {
-                fclose($h);
-
-                return $path;
-            }
-
-            $this->locks[$key] = $h;
-        }
-
-        return true;
-    }
-
-    /**
-     * Releases the lock for the given Request.
-     *
-     * @return bool False if the lock file does not exist or cannot be unlocked, true otherwise
-     */
-    public function unlock(Request $request)
-    {
-        $key = $this->getCacheKey($request);
-
-        if (isset($this->locks[$key])) {
-            flock($this->locks[$key], \LOCK_UN);
-            fclose($this->locks[$key]);
-            unset($this->locks[$key]);
-
-            return true;
-        }
-
-        return false;
-    }
-
-    public function isLocked(Request $request)
-    {
-        $key = $this->getCacheKey($request);
-
-        if (isset($this->locks[$key])) {
-            return true; // shortcut if lock held by this process
-        }
-
-        if (!file_exists($path = $this->getPath($key))) {
-            return false;
-        }
-
-        $h = fopen($path, 'rb');
-        flock($h, \LOCK_EX | \LOCK_NB, $wouldBlock);
-        flock($h, \LOCK_UN); // release the lock we just acquired
-        fclose($h);
-
-        return (bool) $wouldBlock;
-    }
-
-    /**
-     * Locates a cached Response for the Request provided.
-     *
-     * @return Response|null A Response instance, or null if no cache entry was found
-     */
-    public function lookup(Request $request)
-    {
-        $key = $this->getCacheKey($request);
-
-        if (!$entries = $this->getMetadata($key)) {
-            return null;
-        }
-
-        // find a cached entry that matches the request.
-        $match = null;
-        foreach ($entries as $entry) {
-            if ($this->requestsMatch(isset($entry[1]['vary'][0]) ? implode(', ', $entry[1]['vary']) : '', $request->headers->all(), $entry[0])) {
-                $match = $entry;
-
-                break;
-            }
-        }
-
-        if (null === $match) {
-            return null;
-        }
-
-        $headers = $match[1];
-        if (file_exists($path = $this->getPath($headers['x-content-digest'][0]))) {
-            return $this->restoreResponse($headers, $path);
-        }
-
-        // TODO the metaStore referenced an entity that doesn't exist in
-        // the entityStore. We definitely want to return nil but we should
-        // also purge the entry from the meta-store when this is detected.
-        return null;
-    }
-
-    /**
-     * Writes a cache entry to the store for the given Request and Response.
-     *
-     * Existing entries are read and any that match the response are removed. This
-     * method calls write with the new list of cache entries.
-     *
-     * @return string The key under which the response is stored
-     *
-     * @throws \RuntimeException
-     */
-    public function write(Request $request, Response $response)
-    {
-        $key = $this->getCacheKey($request);
-        $storedEnv = $this->persistRequest($request);
-
-        if ($response->headers->has('X-Body-File')) {
-            // Assume the response came from disk, but at least perform some safeguard checks
-            if (!$response->headers->has('X-Content-Digest')) {
-                throw new \RuntimeException('A restored response must have the X-Content-Digest header.');
-            }
-
-            $digest = $response->headers->get('X-Content-Digest');
-            if ($this->getPath($digest) !== $response->headers->get('X-Body-File')) {
-                throw new \RuntimeException('X-Body-File and X-Content-Digest do not match.');
-            }
-            // Everything seems ok, omit writing content to disk
-        } else {
-            $digest = $this->generateContentDigest($response);
-            $response->headers->set('X-Content-Digest', $digest);
-
-            if (!$this->save($digest, $response->getContent(), false)) {
-                throw new \RuntimeException('Unable to store the entity.');
-            }
-
-            if (!$response->headers->has('Transfer-Encoding')) {
-                $response->headers->set('Content-Length', \strlen($response->getContent()));
-            }
-        }
-
-        // read existing cache entries, remove non-varying, and add this one to the list
-        $entries = [];
-        $vary = $response->headers->get('vary');
-        foreach ($this->getMetadata($key) as $entry) {
-            if (!isset($entry[1]['vary'][0])) {
-                $entry[1]['vary'] = [''];
-            }
-
-            if ($entry[1]['vary'][0] != $vary || !$this->requestsMatch($vary, $entry[0], $storedEnv)) {
-                $entries[] = $entry;
-            }
-        }
-
-        $headers = $this->persistResponse($response);
-        unset($headers['age']);
-
-        array_unshift($entries, [$storedEnv, $headers]);
-
-        if (!$this->save($key, serialize($entries))) {
-            throw new \RuntimeException('Unable to store the metadata.');
-        }
-
-        return $key;
-    }
-
-    /**
-     * Returns content digest for $response.
-     *
-     * @return string
-     */
-    protected function generateContentDigest(Response $response)
-    {
-        return 'en'.hash('sha256', $response->getContent());
-    }
-
-    /**
-     * Invalidates all cache entries that match the request.
-     *
-     * @throws \RuntimeException
-     */
-    public function invalidate(Request $request)
-    {
-        $modified = false;
-        $key = $this->getCacheKey($request);
-
-        $entries = [];
-        foreach ($this->getMetadata($key) as $entry) {
-            $response = $this->restoreResponse($entry[1]);
-            if ($response->isFresh()) {
-                $response->expire();
-                $modified = true;
-                $entries[] = [$entry[0], $this->persistResponse($response)];
-            } else {
-                $entries[] = $entry;
-            }
-        }
-
-        if ($modified && !$this->save($key, serialize($entries))) {
-            throw new \RuntimeException('Unable to store the metadata.');
-        }
-    }
-
-    /**
-     * Determines whether two Request HTTP header sets are non-varying based on
-     * the vary response header value provided.
-     *
-     * @param string $vary A Response vary header
-     * @param array  $env1 A Request HTTP header array
-     * @param array  $env2 A Request HTTP header array
-     */
-    private function requestsMatch(?string $vary, array $env1, array $env2): bool
-    {
-        if (empty($vary)) {
-            return true;
-        }
-
-        foreach (preg_split('/[\s,]+/', $vary) as $header) {
-            $key = str_replace('_', '-', strtolower($header));
-            $v1 = isset($env1[$key]) ? $env1[$key] : null;
-            $v2 = isset($env2[$key]) ? $env2[$key] : null;
-            if ($v1 !== $v2) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Gets all data associated with the given key.
-     *
-     * Use this method only if you know what you are doing.
-     */
-    private function getMetadata(string $key): array
-    {
-        if (!$entries = $this->load($key)) {
-            return [];
-        }
-
-        return unserialize($entries);
-    }
-
-    /**
-     * Purges data for the given URL.
-     *
-     * This method purges both the HTTP and the HTTPS version of the cache entry.
-     *
-     * @param string $url A URL
-     *
-     * @return bool true if the URL exists with either HTTP or HTTPS scheme and has been purged, false otherwise
-     */
-    public function purge($url)
-    {
-        $http = preg_replace('#^https:#', 'http:', $url);
-        $https = preg_replace('#^http:#', 'https:', $url);
-
-        $purgedHttp = $this->doPurge($http);
-        $purgedHttps = $this->doPurge($https);
-
-        return $purgedHttp || $purgedHttps;
-    }
-
-    /**
-     * Purges data for the given URL.
-     */
-    private function doPurge(string $url): bool
-    {
-        $key = $this->getCacheKey(Request::create($url));
-        if (isset($this->locks[$key])) {
-            flock($this->locks[$key], \LOCK_UN);
-            fclose($this->locks[$key]);
-            unset($this->locks[$key]);
-        }
-
-        if (file_exists($path = $this->getPath($key))) {
-            unlink($path);
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Loads data for the given key.
-     */
-    private function load(string $key): ?string
-    {
-        $path = $this->getPath($key);
-
-        return file_exists($path) && false !== ($contents = file_get_contents($path)) ? $contents : null;
-    }
-
-    /**
-     * Save data for the given key.
-     */
-    private function save(string $key, string $data, bool $overwrite = true): bool
-    {
-        $path = $this->getPath($key);
-
-        if (!$overwrite && file_exists($path)) {
-            return true;
-        }
-
-        if (isset($this->locks[$key])) {
-            $fp = $this->locks[$key];
-            @ftruncate($fp, 0);
-            @fseek($fp, 0);
-            $len = @fwrite($fp, $data);
-            if (\strlen($data) !== $len) {
-                @ftruncate($fp, 0);
-
-                return false;
-            }
-        } else {
-            if (!file_exists(\dirname($path)) && false === @mkdir(\dirname($path), 0777, true) && !is_dir(\dirname($path))) {
-                return false;
-            }
-
-            $tmpFile = tempnam(\dirname($path), basename($path));
-            if (false === $fp = @fopen($tmpFile, 'wb')) {
-                @unlink($tmpFile);
-
-                return false;
-            }
-            @fwrite($fp, $data);
-            @fclose($fp);
-
-            if ($data != file_get_contents($tmpFile)) {
-                @unlink($tmpFile);
-
-                return false;
-            }
-
-            if (false === @rename($tmpFile, $path)) {
-                @unlink($tmpFile);
-
-                return false;
-            }
-        }
-
-        @chmod($path, 0666 & ~umask());
-
-        return true;
-    }
-
-    public function getPath($key)
-    {
-        return $this->root.\DIRECTORY_SEPARATOR.substr($key, 0, 2).\DIRECTORY_SEPARATOR.substr($key, 2, 2).\DIRECTORY_SEPARATOR.substr($key, 4, 2).\DIRECTORY_SEPARATOR.substr($key, 6);
-    }
-
-    /**
-     * Generates a cache key for the given Request.
-     *
-     * This method should return a key that must only depend on a
-     * normalized version of the request URI.
-     *
-     * If the same URI can have more than one representation, based on some
-     * headers, use a Vary header to indicate them, and each representation will
-     * be stored independently under the same cache key.
-     *
-     * @return string A key for the given Request
-     */
-    protected function generateCacheKey(Request $request)
-    {
-        return 'md'.hash('sha256', $request->getUri());
-    }
-
-    /**
-     * Returns a cache key for the given Request.
-     */
-    private function getCacheKey(Request $request): string
-    {
-        if (isset($this->keyCache[$request])) {
-            return $this->keyCache[$request];
-        }
-
-        return $this->keyCache[$request] = $this->generateCacheKey($request);
-    }
-
-    /**
-     * Persists the Request HTTP headers.
-     */
-    private function persistRequest(Request $request): array
-    {
-        return $request->headers->all();
-    }
-
-    /**
-     * Persists the Response HTTP headers.
-     */
-    private function persistResponse(Response $response): array
-    {
-        $headers = $response->headers->all();
-        $headers['X-Status'] = [$response->getStatusCode()];
-
-        return $headers;
-    }
-
-    /**
-     * Restores a Response from the HTTP headers and body.
-     */
-    private function restoreResponse(array $headers, string $path = null): Response
-    {
-        $status = $headers['X-Status'][0];
-        unset($headers['X-Status']);
-
-        if (null !== $path) {
-            $headers['X-Body-File'] = [$path];
-        }
-
-        return new Response($path, $status, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/StoreInterface.php b/vendor/symfony/http-kernel/HttpCache/StoreInterface.php
deleted file mode 100644
index 8f1cf4409eee85aa0f5acebc2dbb49b033d90908..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpCache/StoreInterface.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Interface implemented by HTTP cache stores.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface StoreInterface
-{
-    /**
-     * Locates a cached Response for the Request provided.
-     *
-     * @return Response|null A Response instance, or null if no cache entry was found
-     */
-    public function lookup(Request $request);
-
-    /**
-     * Writes a cache entry to the store for the given Request and Response.
-     *
-     * Existing entries are read and any that match the response are removed. This
-     * method calls write with the new list of cache entries.
-     *
-     * @return string The key under which the response is stored
-     */
-    public function write(Request $request, Response $response);
-
-    /**
-     * Invalidates all cache entries that match the request.
-     */
-    public function invalidate(Request $request);
-
-    /**
-     * Locks the cache for a given Request.
-     *
-     * @return bool|string true if the lock is acquired, the path to the current lock otherwise
-     */
-    public function lock(Request $request);
-
-    /**
-     * Releases the lock for the given Request.
-     *
-     * @return bool False if the lock file does not exist or cannot be unlocked, true otherwise
-     */
-    public function unlock(Request $request);
-
-    /**
-     * Returns whether or not a lock exists.
-     *
-     * @return bool true if lock exists, false otherwise
-     */
-    public function isLocked(Request $request);
-
-    /**
-     * Purges data for the given URL.
-     *
-     * @param string $url A URL
-     *
-     * @return bool true if the URL exists and has been purged, false otherwise
-     */
-    public function purge($url);
-
-    /**
-     * Cleanups storage.
-     */
-    public function cleanup();
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php b/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php
deleted file mode 100644
index cef9817e01d6c8f42b3eb09bd8c6ceb8746756d1..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\IpUtils;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-class SubRequestHandler
-{
-    public static function handle(HttpKernelInterface $kernel, Request $request, $type, $catch): Response
-    {
-        // save global state related to trusted headers and proxies
-        $trustedProxies = Request::getTrustedProxies();
-        $trustedHeaderSet = Request::getTrustedHeaderSet();
-
-        // remove untrusted values
-        $remoteAddr = $request->server->get('REMOTE_ADDR');
-        if (!IpUtils::checkIp($remoteAddr, $trustedProxies)) {
-            $trustedHeaders = [
-                'FORWARDED' => $trustedHeaderSet & Request::HEADER_FORWARDED,
-                'X_FORWARDED_FOR' => $trustedHeaderSet & Request::HEADER_X_FORWARDED_FOR,
-                'X_FORWARDED_HOST' => $trustedHeaderSet & Request::HEADER_X_FORWARDED_HOST,
-                'X_FORWARDED_PROTO' => $trustedHeaderSet & Request::HEADER_X_FORWARDED_PROTO,
-                'X_FORWARDED_PORT' => $trustedHeaderSet & Request::HEADER_X_FORWARDED_PORT,
-            ];
-            foreach (array_filter($trustedHeaders) as $name => $key) {
-                $request->headers->remove($name);
-                $request->server->remove('HTTP_'.$name);
-            }
-        }
-
-        // compute trusted values, taking any trusted proxies into account
-        $trustedIps = [];
-        $trustedValues = [];
-        foreach (array_reverse($request->getClientIps()) as $ip) {
-            $trustedIps[] = $ip;
-            $trustedValues[] = sprintf('for="%s"', $ip);
-        }
-        if ($ip !== $remoteAddr) {
-            $trustedIps[] = $remoteAddr;
-            $trustedValues[] = sprintf('for="%s"', $remoteAddr);
-        }
-
-        // set trusted values, reusing as much as possible the global trusted settings
-        if (Request::HEADER_FORWARDED & $trustedHeaderSet) {
-            $trustedValues[0] .= sprintf(';host="%s";proto=%s', $request->getHttpHost(), $request->getScheme());
-            $request->headers->set('Forwarded', $v = implode(', ', $trustedValues));
-            $request->server->set('HTTP_FORWARDED', $v);
-        }
-        if (Request::HEADER_X_FORWARDED_FOR & $trustedHeaderSet) {
-            $request->headers->set('X-Forwarded-For', $v = implode(', ', $trustedIps));
-            $request->server->set('HTTP_X_FORWARDED_FOR', $v);
-        } elseif (!(Request::HEADER_FORWARDED & $trustedHeaderSet)) {
-            Request::setTrustedProxies($trustedProxies, $trustedHeaderSet | Request::HEADER_X_FORWARDED_FOR);
-            $request->headers->set('X-Forwarded-For', $v = implode(', ', $trustedIps));
-            $request->server->set('HTTP_X_FORWARDED_FOR', $v);
-        }
-
-        // fix the client IP address by setting it to 127.0.0.1,
-        // which is the core responsibility of this method
-        $request->server->set('REMOTE_ADDR', '127.0.0.1');
-
-        // ensure 127.0.0.1 is set as trusted proxy
-        if (!IpUtils::checkIp('127.0.0.1', $trustedProxies)) {
-            Request::setTrustedProxies(array_merge($trustedProxies, ['127.0.0.1']), Request::getTrustedHeaderSet());
-        }
-
-        try {
-            return $kernel->handle($request, $type, $catch);
-        } finally {
-            // restore global state
-            Request::setTrustedProxies($trustedProxies, $trustedHeaderSet);
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php b/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php
deleted file mode 100644
index a26698c9110ffc11f06ee0c83bb373bfcb16190d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-interface SurrogateInterface
-{
-    /**
-     * Returns surrogate name.
-     *
-     * @return string
-     */
-    public function getName();
-
-    /**
-     * Returns a new cache strategy instance.
-     *
-     * @return ResponseCacheStrategyInterface A ResponseCacheStrategyInterface instance
-     */
-    public function createCacheStrategy();
-
-    /**
-     * Checks that at least one surrogate has Surrogate capability.
-     *
-     * @return bool true if one surrogate has Surrogate capability, false otherwise
-     */
-    public function hasSurrogateCapability(Request $request);
-
-    /**
-     * Adds Surrogate-capability to the given Request.
-     */
-    public function addSurrogateCapability(Request $request);
-
-    /**
-     * Adds HTTP headers to specify that the Response needs to be parsed for Surrogate.
-     *
-     * This method only adds an Surrogate HTTP header if the Response has some Surrogate tags.
-     */
-    public function addSurrogateControl(Response $response);
-
-    /**
-     * Checks that the Response needs to be parsed for Surrogate tags.
-     *
-     * @return bool true if the Response needs to be parsed, false otherwise
-     */
-    public function needsParsing(Response $response);
-
-    /**
-     * Renders a Surrogate tag.
-     *
-     * @param string $uri          A URI
-     * @param string $alt          An alternate URI
-     * @param bool   $ignoreErrors Whether to ignore errors or not
-     * @param string $comment      A comment to add as an esi:include tag
-     *
-     * @return string
-     */
-    public function renderIncludeTag($uri, $alt = null, $ignoreErrors = true, $comment = '');
-
-    /**
-     * Replaces a Response Surrogate tags with the included resource content.
-     *
-     * @return Response
-     */
-    public function process(Request $request, Response $response);
-
-    /**
-     * Handles a Surrogate from the cache.
-     *
-     * @param string $uri          The main URI
-     * @param string $alt          An alternative URI
-     * @param bool   $ignoreErrors Whether to ignore errors or not
-     *
-     * @return string
-     *
-     * @throws \RuntimeException
-     * @throws \Exception
-     */
-    public function handle(HttpCache $cache, $uri, $alt, $ignoreErrors);
-}
diff --git a/vendor/symfony/http-kernel/HttpClientKernel.php b/vendor/symfony/http-kernel/HttpClientKernel.php
deleted file mode 100644
index 7acb04c893eaef362eb4cab4831f91c39a95f291..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpClientKernel.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-use Symfony\Component\HttpClient\HttpClient;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\ResponseHeaderBag;
-use Symfony\Component\Mime\Part\AbstractPart;
-use Symfony\Component\Mime\Part\DataPart;
-use Symfony\Component\Mime\Part\Multipart\FormDataPart;
-use Symfony\Component\Mime\Part\TextPart;
-use Symfony\Contracts\HttpClient\HttpClientInterface;
-
-// Help opcache.preload discover always-needed symbols
-class_exists(ResponseHeaderBag::class);
-
-/**
- * An implementation of a Symfony HTTP kernel using a "real" HTTP client.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class HttpClientKernel implements HttpKernelInterface
-{
-    private $client;
-
-    public function __construct(HttpClientInterface $client = null)
-    {
-        if (null === $client && !class_exists(HttpClient::class)) {
-            throw new \LogicException(sprintf('You cannot use "%s" as the HttpClient component is not installed. Try running "composer require symfony/http-client".', __CLASS__));
-        }
-
-        $this->client = $client ?? HttpClient::create();
-    }
-
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true): Response
-    {
-        $headers = $this->getHeaders($request);
-        $body = '';
-        if (null !== $part = $this->getBody($request)) {
-            $headers = array_merge($headers, $part->getPreparedHeaders()->toArray());
-            $body = $part->bodyToIterable();
-        }
-        $response = $this->client->request($request->getMethod(), $request->getUri(), [
-            'headers' => $headers,
-            'body' => $body,
-        ] + $request->attributes->get('http_client_options', []));
-
-        $response = new Response($response->getContent(!$catch), $response->getStatusCode(), $response->getHeaders(!$catch));
-
-        $response->headers->remove('X-Body-File');
-        $response->headers->remove('X-Body-Eval');
-        $response->headers->remove('X-Content-Digest');
-
-        $response->headers = new class($response->headers->all()) extends ResponseHeaderBag {
-            protected function computeCacheControlValue(): string
-            {
-                return $this->getCacheControlHeader(); // preserve the original value
-            }
-        };
-
-        return $response;
-    }
-
-    private function getBody(Request $request): ?AbstractPart
-    {
-        if (\in_array($request->getMethod(), ['GET', 'HEAD'])) {
-            return null;
-        }
-
-        if (!class_exists(AbstractPart::class)) {
-            throw new \LogicException('You cannot pass non-empty bodies as the Mime component is not installed. Try running "composer require symfony/mime".');
-        }
-
-        if ($content = $request->getContent()) {
-            return new TextPart($content, 'utf-8', 'plain', '8bit');
-        }
-
-        $fields = $request->request->all();
-        foreach ($request->files->all() as $name => $file) {
-            $fields[$name] = DataPart::fromPath($file->getPathname(), $file->getClientOriginalName(), $file->getClientMimeType());
-        }
-
-        return new FormDataPart($fields);
-    }
-
-    private function getHeaders(Request $request): array
-    {
-        $headers = [];
-        foreach ($request->headers as $key => $value) {
-            $headers[$key] = $value;
-        }
-        $cookies = [];
-        foreach ($request->cookies->all() as $name => $value) {
-            $cookies[] = $name.'='.$value;
-        }
-        if ($cookies) {
-            $headers['cookie'] = implode('; ', $cookies);
-        }
-
-        return $headers;
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpKernel.php b/vendor/symfony/http-kernel/HttpKernel.php
deleted file mode 100644
index 681e96321d03879df5212387ccb82586196f28bb..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpKernel.php
+++ /dev/null
@@ -1,295 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy;
-use Symfony\Component\HttpFoundation\Exception\RequestExceptionInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent;
-use Symfony\Component\HttpKernel\Event\ControllerEvent;
-use Symfony\Component\HttpKernel\Event\ExceptionEvent;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\Event\TerminateEvent;
-use Symfony\Component\HttpKernel\Event\ViewEvent;
-use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
-use Symfony\Component\HttpKernel\Exception\ControllerDoesNotReturnResponseException;
-use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
-
-// Help opcache.preload discover always-needed symbols
-class_exists(LegacyEventDispatcherProxy::class);
-class_exists(ControllerArgumentsEvent::class);
-class_exists(ControllerEvent::class);
-class_exists(ExceptionEvent::class);
-class_exists(FinishRequestEvent::class);
-class_exists(RequestEvent::class);
-class_exists(ResponseEvent::class);
-class_exists(TerminateEvent::class);
-class_exists(ViewEvent::class);
-class_exists(KernelEvents::class);
-
-/**
- * HttpKernel notifies events to convert a Request object to a Response one.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HttpKernel implements HttpKernelInterface, TerminableInterface
-{
-    protected $dispatcher;
-    protected $resolver;
-    protected $requestStack;
-    private $argumentResolver;
-
-    public function __construct(EventDispatcherInterface $dispatcher, ControllerResolverInterface $resolver, RequestStack $requestStack = null, ArgumentResolverInterface $argumentResolver = null)
-    {
-        $this->dispatcher = LegacyEventDispatcherProxy::decorate($dispatcher);
-        $this->resolver = $resolver;
-        $this->requestStack = $requestStack ?: new RequestStack();
-        $this->argumentResolver = $argumentResolver;
-
-        if (null === $this->argumentResolver) {
-            $this->argumentResolver = new ArgumentResolver();
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
-    {
-        $request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
-
-        try {
-            return $this->handleRaw($request, $type);
-        } catch (\Exception $e) {
-            if ($e instanceof RequestExceptionInterface) {
-                $e = new BadRequestHttpException($e->getMessage(), $e);
-            }
-            if (false === $catch) {
-                $this->finishRequest($request, $type);
-
-                throw $e;
-            }
-
-            return $this->handleThrowable($e, $request, $type);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function terminate(Request $request, Response $response)
-    {
-        $this->dispatcher->dispatch(new TerminateEvent($this, $request, $response), KernelEvents::TERMINATE);
-    }
-
-    /**
-     * @internal
-     */
-    public function terminateWithException(\Throwable $exception, Request $request = null)
-    {
-        if (!$request = $request ?: $this->requestStack->getMasterRequest()) {
-            throw $exception;
-        }
-
-        $response = $this->handleThrowable($exception, $request, self::MASTER_REQUEST);
-
-        $response->sendHeaders();
-        $response->sendContent();
-
-        $this->terminate($request, $response);
-    }
-
-    /**
-     * Handles a request to convert it to a response.
-     *
-     * Exceptions are not caught.
-     *
-     * @throws \LogicException       If one of the listener does not behave as expected
-     * @throws NotFoundHttpException When controller cannot be found
-     */
-    private function handleRaw(Request $request, int $type = self::MASTER_REQUEST): Response
-    {
-        $this->requestStack->push($request);
-
-        // request
-        $event = new RequestEvent($this, $request, $type);
-        $this->dispatcher->dispatch($event, KernelEvents::REQUEST);
-
-        if ($event->hasResponse()) {
-            return $this->filterResponse($event->getResponse(), $request, $type);
-        }
-
-        // load controller
-        if (false === $controller = $this->resolver->getController($request)) {
-            throw new NotFoundHttpException(sprintf('Unable to find the controller for path "%s". The route is wrongly configured.', $request->getPathInfo()));
-        }
-
-        $event = new ControllerEvent($this, $controller, $request, $type);
-        $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER);
-        $controller = $event->getController();
-
-        // controller arguments
-        $arguments = $this->argumentResolver->getArguments($request, $controller);
-
-        $event = new ControllerArgumentsEvent($this, $controller, $arguments, $request, $type);
-        $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS);
-        $controller = $event->getController();
-        $arguments = $event->getArguments();
-
-        // call controller
-        $response = $controller(...$arguments);
-
-        // view
-        if (!$response instanceof Response) {
-            $event = new ViewEvent($this, $request, $type, $response);
-            $this->dispatcher->dispatch($event, KernelEvents::VIEW);
-
-            if ($event->hasResponse()) {
-                $response = $event->getResponse();
-            } else {
-                $msg = sprintf('The controller must return a "Symfony\Component\HttpFoundation\Response" object but it returned %s.', $this->varToString($response));
-
-                // the user may have forgotten to return something
-                if (null === $response) {
-                    $msg .= ' Did you forget to add a return statement somewhere in your controller?';
-                }
-
-                throw new ControllerDoesNotReturnResponseException($msg, $controller, __FILE__, __LINE__ - 17);
-            }
-        }
-
-        return $this->filterResponse($response, $request, $type);
-    }
-
-    /**
-     * Filters a response object.
-     *
-     * @throws \RuntimeException if the passed object is not a Response instance
-     */
-    private function filterResponse(Response $response, Request $request, int $type): Response
-    {
-        $event = new ResponseEvent($this, $request, $type, $response);
-
-        $this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->finishRequest($request, $type);
-
-        return $event->getResponse();
-    }
-
-    /**
-     * Publishes the finish request event, then pop the request from the stack.
-     *
-     * Note that the order of the operations is important here, otherwise
-     * operations such as {@link RequestStack::getParentRequest()} can lead to
-     * weird results.
-     */
-    private function finishRequest(Request $request, int $type)
-    {
-        $this->dispatcher->dispatch(new FinishRequestEvent($this, $request, $type), KernelEvents::FINISH_REQUEST);
-        $this->requestStack->pop();
-    }
-
-    /**
-     * Handles a throwable by trying to convert it to a Response.
-     *
-     * @throws \Exception
-     */
-    private function handleThrowable(\Throwable $e, Request $request, int $type): Response
-    {
-        $event = new ExceptionEvent($this, $request, $type, $e);
-        $this->dispatcher->dispatch($event, KernelEvents::EXCEPTION);
-
-        // a listener might have replaced the exception
-        $e = $event->getThrowable();
-
-        if (!$event->hasResponse()) {
-            $this->finishRequest($request, $type);
-
-            throw $e;
-        }
-
-        $response = $event->getResponse();
-
-        // the developer asked for a specific status code
-        if (!$event->isAllowingCustomResponseCode() && !$response->isClientError() && !$response->isServerError() && !$response->isRedirect()) {
-            // ensure that we actually have an error response
-            if ($e instanceof HttpExceptionInterface) {
-                // keep the HTTP status code and headers
-                $response->setStatusCode($e->getStatusCode());
-                $response->headers->add($e->getHeaders());
-            } else {
-                $response->setStatusCode(500);
-            }
-        }
-
-        try {
-            return $this->filterResponse($response, $request, $type);
-        } catch (\Exception $e) {
-            return $response;
-        }
-    }
-
-    /**
-     * Returns a human-readable string for the specified variable.
-     */
-    private function varToString($var): string
-    {
-        if (\is_object($var)) {
-            return sprintf('an object of type %s', \get_class($var));
-        }
-
-        if (\is_array($var)) {
-            $a = [];
-            foreach ($var as $k => $v) {
-                $a[] = sprintf('%s => ...', $k);
-            }
-
-            return sprintf('an array ([%s])', mb_substr(implode(', ', $a), 0, 255));
-        }
-
-        if (\is_resource($var)) {
-            return sprintf('a resource (%s)', get_resource_type($var));
-        }
-
-        if (null === $var) {
-            return 'null';
-        }
-
-        if (false === $var) {
-            return 'a boolean value (false)';
-        }
-
-        if (true === $var) {
-            return 'a boolean value (true)';
-        }
-
-        if (\is_string($var)) {
-            return sprintf('a string ("%s%s")', mb_substr($var, 0, 255), mb_strlen($var) > 255 ? '...' : '');
-        }
-
-        if (is_numeric($var)) {
-            return sprintf('a number (%s)', (string) $var);
-        }
-
-        return (string) $var;
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpKernelBrowser.php b/vendor/symfony/http-kernel/HttpKernelBrowser.php
deleted file mode 100644
index e413634755da56e65e6606f5c1ccc398984a6c74..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpKernelBrowser.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Client simulates a browser and makes requests to an HttpKernel instance.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @method Request  getRequest()  A Request instance
- * @method Response getResponse() A Response instance
- */
-class HttpKernelBrowser extends Client
-{
-}
diff --git a/vendor/symfony/http-kernel/HttpKernelInterface.php b/vendor/symfony/http-kernel/HttpKernelInterface.php
deleted file mode 100644
index 7595d29d04234cd30c6d6603bdff3e6504774d99..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/HttpKernelInterface.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * HttpKernelInterface handles a Request to convert it to a Response.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface HttpKernelInterface
-{
-    const MASTER_REQUEST = 1;
-    const SUB_REQUEST = 2;
-
-    /**
-     * Handles a Request to convert it to a Response.
-     *
-     * When $catch is true, the implementation must catch all exceptions
-     * and do its best to convert them to a Response instance.
-     *
-     * @param int  $type  The type of the request
-     *                    (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
-     * @param bool $catch Whether to catch exceptions or not
-     *
-     * @return Response A Response instance
-     *
-     * @throws \Exception When an Exception occurs during processing
-     */
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true);
-}
diff --git a/vendor/symfony/http-kernel/Kernel.php b/vendor/symfony/http-kernel/Kernel.php
deleted file mode 100644
index c21108b0407adb0ea1dbbb58f54a8df58310dbab..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Kernel.php
+++ /dev/null
@@ -1,927 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-use Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator;
-use Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper;
-use Symfony\Component\Config\ConfigCache;
-use Symfony\Component\Config\Loader\DelegatingLoader;
-use Symfony\Component\Config\Loader\LoaderResolver;
-use Symfony\Component\Debug\DebugClassLoader as LegacyDebugClassLoader;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\Compiler\PassConfig;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
-use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
-use Symfony\Component\DependencyInjection\Loader\DirectoryLoader;
-use Symfony\Component\DependencyInjection\Loader\GlobFileLoader;
-use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
-use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
-use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
-use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
-use Symfony\Component\ErrorHandler\DebugClassLoader;
-use Symfony\Component\Filesystem\Filesystem;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Bundle\BundleInterface;
-use Symfony\Component\HttpKernel\Config\FileLocator;
-use Symfony\Component\HttpKernel\DependencyInjection\AddAnnotatedClassesToCachePass;
-use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass;
-
-/**
- * The Kernel is the heart of the Symfony system.
- *
- * It manages an environment made of bundles.
- *
- * Environment names must always start with a letter and
- * they must only contain letters and numbers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Kernel implements KernelInterface, RebootableInterface, TerminableInterface
-{
-    /**
-     * @var BundleInterface[]
-     */
-    protected $bundles = [];
-
-    protected $container;
-    /**
-     * @deprecated since Symfony 4.2
-     */
-    protected $rootDir;
-    protected $environment;
-    protected $debug;
-    protected $booted = false;
-    /**
-     * @deprecated since Symfony 4.2
-     */
-    protected $name;
-    protected $startTime;
-
-    private $projectDir;
-    private $warmupDir;
-    private $requestStackSize = 0;
-    private $resetServices = false;
-
-    private static $freshCache = [];
-
-    const VERSION = '4.4.16';
-    const VERSION_ID = 40416;
-    const MAJOR_VERSION = 4;
-    const MINOR_VERSION = 4;
-    const RELEASE_VERSION = 16;
-    const EXTRA_VERSION = '';
-
-    const END_OF_MAINTENANCE = '11/2022';
-    const END_OF_LIFE = '11/2023';
-
-    public function __construct(string $environment, bool $debug)
-    {
-        $this->environment = $environment;
-        $this->debug = $debug;
-        $this->rootDir = $this->getRootDir(false);
-        $this->name = $this->getName(false);
-    }
-
-    public function __clone()
-    {
-        $this->booted = false;
-        $this->container = null;
-        $this->requestStackSize = 0;
-        $this->resetServices = false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function boot()
-    {
-        if (true === $this->booted) {
-            if (!$this->requestStackSize && $this->resetServices) {
-                if ($this->container->has('services_resetter')) {
-                    $this->container->get('services_resetter')->reset();
-                }
-                $this->resetServices = false;
-                if ($this->debug) {
-                    $this->startTime = microtime(true);
-                }
-            }
-
-            return;
-        }
-        if ($this->debug) {
-            $this->startTime = microtime(true);
-        }
-        if ($this->debug && !isset($_ENV['SHELL_VERBOSITY']) && !isset($_SERVER['SHELL_VERBOSITY'])) {
-            putenv('SHELL_VERBOSITY=3');
-            $_ENV['SHELL_VERBOSITY'] = 3;
-            $_SERVER['SHELL_VERBOSITY'] = 3;
-        }
-
-        // init bundles
-        $this->initializeBundles();
-
-        // init container
-        $this->initializeContainer();
-
-        foreach ($this->getBundles() as $bundle) {
-            $bundle->setContainer($this->container);
-            $bundle->boot();
-        }
-
-        $this->booted = true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reboot($warmupDir)
-    {
-        $this->shutdown();
-        $this->warmupDir = $warmupDir;
-        $this->boot();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function terminate(Request $request, Response $response)
-    {
-        if (false === $this->booted) {
-            return;
-        }
-
-        if ($this->getHttpKernel() instanceof TerminableInterface) {
-            $this->getHttpKernel()->terminate($request, $response);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function shutdown()
-    {
-        if (false === $this->booted) {
-            return;
-        }
-
-        $this->booted = false;
-
-        foreach ($this->getBundles() as $bundle) {
-            $bundle->shutdown();
-            $bundle->setContainer(null);
-        }
-
-        $this->container = null;
-        $this->requestStackSize = 0;
-        $this->resetServices = false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
-    {
-        $this->boot();
-        ++$this->requestStackSize;
-        $this->resetServices = true;
-
-        try {
-            return $this->getHttpKernel()->handle($request, $type, $catch);
-        } finally {
-            --$this->requestStackSize;
-        }
-    }
-
-    /**
-     * Gets a HTTP kernel from the container.
-     *
-     * @return HttpKernelInterface
-     */
-    protected function getHttpKernel()
-    {
-        return $this->container->get('http_kernel');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getBundles()
-    {
-        return $this->bundles;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getBundle($name)
-    {
-        if (!isset($this->bundles[$name])) {
-            throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the "registerBundles()" method of your "%s.php" file?', $name, get_debug_type($this)));
-        }
-
-        return $this->bundles[$name];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function locateResource($name/*, $dir = null, $first = true, $triggerDeprecation = true*/)
-    {
-        if (2 <= \func_num_args()) {
-            $dir = func_get_arg(1);
-            $first = 3 <= \func_num_args() ? func_get_arg(2) : true;
-
-            if (4 !== \func_num_args() || func_get_arg(3)) {
-                @trigger_error(sprintf('Passing more than one argument to %s is deprecated since Symfony 4.4 and will be removed in 5.0.', __METHOD__), \E_USER_DEPRECATED);
-            }
-        } else {
-            $dir = null;
-            $first = true;
-        }
-
-        if ('@' !== $name[0]) {
-            throw new \InvalidArgumentException(sprintf('A resource name must start with @ ("%s" given).', $name));
-        }
-
-        if (false !== strpos($name, '..')) {
-            throw new \RuntimeException(sprintf('File name "%s" contains invalid characters (..).', $name));
-        }
-
-        $bundleName = substr($name, 1);
-        $path = '';
-        if (false !== strpos($bundleName, '/')) {
-            list($bundleName, $path) = explode('/', $bundleName, 2);
-        }
-
-        $isResource = 0 === strpos($path, 'Resources') && null !== $dir;
-        $overridePath = substr($path, 9);
-        $bundle = $this->getBundle($bundleName);
-        $files = [];
-
-        if ($isResource && file_exists($file = $dir.'/'.$bundle->getName().$overridePath)) {
-            $files[] = $file;
-
-            // see https://symfony.com/doc/current/bundles/override.html on how to overwrite parts of a bundle
-            @trigger_error(sprintf('Overwriting the resource "%s" with "%s" is deprecated since Symfony 4.4 and will be removed in 5.0.', $name, $file), \E_USER_DEPRECATED);
-        }
-
-        if (file_exists($file = $bundle->getPath().'/'.$path)) {
-            if ($first && !$isResource) {
-                return $file;
-            }
-            $files[] = $file;
-        }
-
-        if (\count($files) > 0) {
-            return $first && $isResource ? $files[0] : $files;
-        }
-
-        throw new \InvalidArgumentException(sprintf('Unable to find file "%s".', $name));
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since Symfony 4.2
-     */
-    public function getName(/* $triggerDeprecation = true */)
-    {
-        if (0 === \func_num_args() || func_get_arg(0)) {
-            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
-        }
-
-        if (null === $this->name) {
-            $this->name = preg_replace('/[^a-zA-Z0-9_]+/', '', basename($this->rootDir));
-            if (ctype_digit($this->name[0])) {
-                $this->name = '_'.$this->name;
-            }
-        }
-
-        return $this->name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getEnvironment()
-    {
-        return $this->environment;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isDebug()
-    {
-        return $this->debug;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since Symfony 4.2, use getProjectDir() instead
-     */
-    public function getRootDir(/* $triggerDeprecation = true */)
-    {
-        if (0 === \func_num_args() || func_get_arg(0)) {
-            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2, use getProjectDir() instead.', __METHOD__), \E_USER_DEPRECATED);
-        }
-
-        if (null === $this->rootDir) {
-            $r = new \ReflectionObject($this);
-            $this->rootDir = \dirname($r->getFileName());
-        }
-
-        return $this->rootDir;
-    }
-
-    /**
-     * Gets the application root dir (path of the project's composer file).
-     *
-     * @return string The project root dir
-     */
-    public function getProjectDir()
-    {
-        if (null === $this->projectDir) {
-            $r = new \ReflectionObject($this);
-
-            if (!file_exists($dir = $r->getFileName())) {
-                throw new \LogicException(sprintf('Cannot auto-detect project dir for kernel of class "%s".', $r->name));
-            }
-
-            $dir = $rootDir = \dirname($dir);
-            while (!file_exists($dir.'/composer.json')) {
-                if ($dir === \dirname($dir)) {
-                    return $this->projectDir = $rootDir;
-                }
-                $dir = \dirname($dir);
-            }
-            $this->projectDir = $dir;
-        }
-
-        return $this->projectDir;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContainer()
-    {
-        if (!$this->container) {
-            @trigger_error('Getting the container from a non-booted kernel is deprecated since Symfony 4.4.', \E_USER_DEPRECATED);
-        }
-
-        return $this->container;
-    }
-
-    /**
-     * @internal
-     */
-    public function setAnnotatedClassCache(array $annotatedClasses)
-    {
-        file_put_contents(($this->warmupDir ?: $this->getCacheDir()).'/annotations.map', sprintf('<?php return %s;', var_export($annotatedClasses, true)));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStartTime()
-    {
-        return $this->debug && null !== $this->startTime ? $this->startTime : -\INF;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCacheDir()
-    {
-        return $this->getProjectDir().'/var/cache/'.$this->environment;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getLogDir()
-    {
-        return $this->getProjectDir().'/var/log';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCharset()
-    {
-        return 'UTF-8';
-    }
-
-    /**
-     * Gets the patterns defining the classes to parse and cache for annotations.
-     */
-    public function getAnnotatedClassesToCompile(): array
-    {
-        return [];
-    }
-
-    /**
-     * Initializes bundles.
-     *
-     * @throws \LogicException if two bundles share a common name
-     */
-    protected function initializeBundles()
-    {
-        // init bundles
-        $this->bundles = [];
-        foreach ($this->registerBundles() as $bundle) {
-            $name = $bundle->getName();
-            if (isset($this->bundles[$name])) {
-                throw new \LogicException(sprintf('Trying to register two bundles with the same name "%s".', $name));
-            }
-            $this->bundles[$name] = $bundle;
-        }
-    }
-
-    /**
-     * The extension point similar to the Bundle::build() method.
-     *
-     * Use this method to register compiler passes and manipulate the container during the building process.
-     */
-    protected function build(ContainerBuilder $container)
-    {
-    }
-
-    /**
-     * Gets the container class.
-     *
-     * @throws \InvalidArgumentException If the generated classname is invalid
-     *
-     * @return string The container class
-     */
-    protected function getContainerClass()
-    {
-        $class = static::class;
-        $class = false !== strpos($class, "@anonymous\0") ? get_parent_class($class).str_replace('.', '_', ContainerBuilder::hash($class)) : $class;
-        $class = $this->name.str_replace('\\', '_', $class).ucfirst($this->environment).($this->debug ? 'Debug' : '').'Container';
-
-        if (!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $class)) {
-            throw new \InvalidArgumentException(sprintf('The environment "%s" contains invalid characters, it can only contain characters allowed in PHP class names.', $this->environment));
-        }
-
-        return $class;
-    }
-
-    /**
-     * Gets the container's base class.
-     *
-     * All names except Container must be fully qualified.
-     *
-     * @return string
-     */
-    protected function getContainerBaseClass()
-    {
-        return 'Container';
-    }
-
-    /**
-     * Initializes the service container.
-     *
-     * The cached version of the service container is used when fresh, otherwise the
-     * container is built.
-     */
-    protected function initializeContainer()
-    {
-        $class = $this->getContainerClass();
-        $cacheDir = $this->warmupDir ?: $this->getCacheDir();
-        $cache = new ConfigCache($cacheDir.'/'.$class.'.php', $this->debug);
-        $cachePath = $cache->getPath();
-
-        // Silence E_WARNING to ignore "include" failures - don't use "@" to prevent silencing fatal errors
-        $errorLevel = error_reporting(\E_ALL ^ \E_WARNING);
-
-        try {
-            if (file_exists($cachePath) && \is_object($this->container = include $cachePath)
-                && (!$this->debug || (self::$freshCache[$cachePath] ?? $cache->isFresh()))
-            ) {
-                self::$freshCache[$cachePath] = true;
-                $this->container->set('kernel', $this);
-                error_reporting($errorLevel);
-
-                return;
-            }
-        } catch (\Throwable $e) {
-        }
-
-        $oldContainer = \is_object($this->container) ? new \ReflectionClass($this->container) : $this->container = null;
-
-        try {
-            is_dir($cacheDir) ?: mkdir($cacheDir, 0777, true);
-
-            if ($lock = fopen($cachePath.'.lock', 'w')) {
-                flock($lock, \LOCK_EX | \LOCK_NB, $wouldBlock);
-
-                if (!flock($lock, $wouldBlock ? \LOCK_SH : \LOCK_EX)) {
-                    fclose($lock);
-                    $lock = null;
-                } elseif (!\is_object($this->container = include $cachePath)) {
-                    $this->container = null;
-                } elseif (!$oldContainer || \get_class($this->container) !== $oldContainer->name) {
-                    flock($lock, \LOCK_UN);
-                    fclose($lock);
-                    $this->container->set('kernel', $this);
-
-                    return;
-                }
-            }
-        } catch (\Throwable $e) {
-        } finally {
-            error_reporting($errorLevel);
-        }
-
-        if ($collectDeprecations = $this->debug && !\defined('PHPUNIT_COMPOSER_INSTALL')) {
-            $collectedLogs = [];
-            $previousHandler = set_error_handler(function ($type, $message, $file, $line) use (&$collectedLogs, &$previousHandler) {
-                if (\E_USER_DEPRECATED !== $type && \E_DEPRECATED !== $type) {
-                    return $previousHandler ? $previousHandler($type, $message, $file, $line) : false;
-                }
-
-                if (isset($collectedLogs[$message])) {
-                    ++$collectedLogs[$message]['count'];
-
-                    return null;
-                }
-
-                $backtrace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 5);
-                // Clean the trace by removing first frames added by the error handler itself.
-                for ($i = 0; isset($backtrace[$i]); ++$i) {
-                    if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) {
-                        $backtrace = \array_slice($backtrace, 1 + $i);
-                        break;
-                    }
-                }
-                // Remove frames added by DebugClassLoader.
-                for ($i = \count($backtrace) - 2; 0 < $i; --$i) {
-                    if (\in_array($backtrace[$i]['class'] ?? null, [DebugClassLoader::class, LegacyDebugClassLoader::class], true)) {
-                        $backtrace = [$backtrace[$i + 1]];
-                        break;
-                    }
-                }
-
-                $collectedLogs[$message] = [
-                    'type' => $type,
-                    'message' => $message,
-                    'file' => $file,
-                    'line' => $line,
-                    'trace' => [$backtrace[0]],
-                    'count' => 1,
-                ];
-
-                return null;
-            });
-        }
-
-        try {
-            $container = null;
-            $container = $this->buildContainer();
-            $container->compile();
-        } finally {
-            if ($collectDeprecations) {
-                restore_error_handler();
-
-                file_put_contents($cacheDir.'/'.$class.'Deprecations.log', serialize(array_values($collectedLogs)));
-                file_put_contents($cacheDir.'/'.$class.'Compiler.log', null !== $container ? implode("\n", $container->getCompiler()->getLog()) : '');
-            }
-        }
-
-        $this->dumpContainer($cache, $container, $class, $this->getContainerBaseClass());
-
-        if ($lock) {
-            flock($lock, \LOCK_UN);
-            fclose($lock);
-        }
-
-        $this->container = require $cachePath;
-        $this->container->set('kernel', $this);
-
-        if ($oldContainer && \get_class($this->container) !== $oldContainer->name) {
-            // Because concurrent requests might still be using them,
-            // old container files are not removed immediately,
-            // but on a next dump of the container.
-            static $legacyContainers = [];
-            $oldContainerDir = \dirname($oldContainer->getFileName());
-            $legacyContainers[$oldContainerDir.'.legacy'] = true;
-            foreach (glob(\dirname($oldContainerDir).\DIRECTORY_SEPARATOR.'*.legacy', \GLOB_NOSORT) as $legacyContainer) {
-                if (!isset($legacyContainers[$legacyContainer]) && @unlink($legacyContainer)) {
-                    (new Filesystem())->remove(substr($legacyContainer, 0, -7));
-                }
-            }
-
-            touch($oldContainerDir.'.legacy');
-        }
-
-        if ($this->container->has('cache_warmer')) {
-            $this->container->get('cache_warmer')->warmUp($this->container->getParameter('kernel.cache_dir'));
-        }
-    }
-
-    /**
-     * Returns the kernel parameters.
-     *
-     * @return array An array of kernel parameters
-     */
-    protected function getKernelParameters()
-    {
-        $bundles = [];
-        $bundlesMetadata = [];
-
-        foreach ($this->bundles as $name => $bundle) {
-            $bundles[$name] = \get_class($bundle);
-            $bundlesMetadata[$name] = [
-                'path' => $bundle->getPath(),
-                'namespace' => $bundle->getNamespace(),
-            ];
-        }
-
-        return [
-            /*
-             * @deprecated since Symfony 4.2, use kernel.project_dir instead
-             */
-            'kernel.root_dir' => realpath($this->rootDir) ?: $this->rootDir,
-            'kernel.project_dir' => realpath($this->getProjectDir()) ?: $this->getProjectDir(),
-            'kernel.environment' => $this->environment,
-            'kernel.debug' => $this->debug,
-            /*
-             * @deprecated since Symfony 4.2
-             */
-            'kernel.name' => $this->name,
-            'kernel.cache_dir' => realpath($cacheDir = $this->warmupDir ?: $this->getCacheDir()) ?: $cacheDir,
-            'kernel.logs_dir' => realpath($this->getLogDir()) ?: $this->getLogDir(),
-            'kernel.bundles' => $bundles,
-            'kernel.bundles_metadata' => $bundlesMetadata,
-            'kernel.charset' => $this->getCharset(),
-            'kernel.container_class' => $this->getContainerClass(),
-        ];
-    }
-
-    /**
-     * Builds the service container.
-     *
-     * @return ContainerBuilder The compiled service container
-     *
-     * @throws \RuntimeException
-     */
-    protected function buildContainer()
-    {
-        foreach (['cache' => $this->warmupDir ?: $this->getCacheDir(), 'logs' => $this->getLogDir()] as $name => $dir) {
-            if (!is_dir($dir)) {
-                if (false === @mkdir($dir, 0777, true) && !is_dir($dir)) {
-                    throw new \RuntimeException(sprintf('Unable to create the "%s" directory (%s).', $name, $dir));
-                }
-            } elseif (!is_writable($dir)) {
-                throw new \RuntimeException(sprintf('Unable to write in the "%s" directory (%s).', $name, $dir));
-            }
-        }
-
-        $container = $this->getContainerBuilder();
-        $container->addObjectResource($this);
-        $this->prepareContainer($container);
-
-        if (null !== $cont = $this->registerContainerConfiguration($this->getContainerLoader($container))) {
-            $container->merge($cont);
-        }
-
-        $container->addCompilerPass(new AddAnnotatedClassesToCachePass($this));
-
-        return $container;
-    }
-
-    /**
-     * Prepares the ContainerBuilder before it is compiled.
-     */
-    protected function prepareContainer(ContainerBuilder $container)
-    {
-        $extensions = [];
-        foreach ($this->bundles as $bundle) {
-            if ($extension = $bundle->getContainerExtension()) {
-                $container->registerExtension($extension);
-            }
-
-            if ($this->debug) {
-                $container->addObjectResource($bundle);
-            }
-        }
-
-        foreach ($this->bundles as $bundle) {
-            $bundle->build($container);
-        }
-
-        $this->build($container);
-
-        foreach ($container->getExtensions() as $extension) {
-            $extensions[] = $extension->getAlias();
-        }
-
-        // ensure these extensions are implicitly loaded
-        $container->getCompilerPassConfig()->setMergePass(new MergeExtensionConfigurationPass($extensions));
-    }
-
-    /**
-     * Gets a new ContainerBuilder instance used to build the service container.
-     *
-     * @return ContainerBuilder
-     */
-    protected function getContainerBuilder()
-    {
-        $container = new ContainerBuilder();
-        $container->getParameterBag()->add($this->getKernelParameters());
-
-        if ($this instanceof CompilerPassInterface) {
-            $container->addCompilerPass($this, PassConfig::TYPE_BEFORE_OPTIMIZATION, -10000);
-        }
-        if (class_exists('ProxyManager\Configuration') && class_exists('Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator')) {
-            $container->setProxyInstantiator(new RuntimeInstantiator());
-        }
-
-        return $container;
-    }
-
-    /**
-     * Dumps the service container to PHP code in the cache.
-     *
-     * @param string $class     The name of the class to generate
-     * @param string $baseClass The name of the container's base class
-     */
-    protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, $class, $baseClass)
-    {
-        // cache the container
-        $dumper = new PhpDumper($container);
-
-        if (class_exists('ProxyManager\Configuration') && class_exists('Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper')) {
-            $dumper->setProxyDumper(new ProxyDumper());
-        }
-
-        $content = $dumper->dump([
-            'class' => $class,
-            'base_class' => $baseClass,
-            'file' => $cache->getPath(),
-            'as_files' => true,
-            'debug' => $this->debug,
-            'build_time' => $container->hasParameter('kernel.container_build_time') ? $container->getParameter('kernel.container_build_time') : time(),
-            'preload_classes' => array_map('get_class', $this->bundles),
-        ]);
-
-        $rootCode = array_pop($content);
-        $dir = \dirname($cache->getPath()).'/';
-        $fs = new Filesystem();
-
-        foreach ($content as $file => $code) {
-            $fs->dumpFile($dir.$file, $code);
-            @chmod($dir.$file, 0666 & ~umask());
-        }
-        $legacyFile = \dirname($dir.key($content)).'.legacy';
-        if (file_exists($legacyFile)) {
-            @unlink($legacyFile);
-        }
-
-        $cache->write($rootCode, $container->getResources());
-    }
-
-    /**
-     * Returns a loader for the container.
-     *
-     * @return DelegatingLoader The loader
-     */
-    protected function getContainerLoader(ContainerInterface $container)
-    {
-        $locator = new FileLocator($this);
-        $resolver = new LoaderResolver([
-            new XmlFileLoader($container, $locator),
-            new YamlFileLoader($container, $locator),
-            new IniFileLoader($container, $locator),
-            new PhpFileLoader($container, $locator),
-            new GlobFileLoader($container, $locator),
-            new DirectoryLoader($container, $locator),
-            new ClosureLoader($container),
-        ]);
-
-        return new DelegatingLoader($resolver);
-    }
-
-    /**
-     * Removes comments from a PHP source string.
-     *
-     * We don't use the PHP php_strip_whitespace() function
-     * as we want the content to be readable and well-formatted.
-     *
-     * @param string $source A PHP string
-     *
-     * @return string The PHP string with the comments removed
-     */
-    public static function stripComments($source)
-    {
-        if (!\function_exists('token_get_all')) {
-            return $source;
-        }
-
-        $rawChunk = '';
-        $output = '';
-        $tokens = token_get_all($source);
-        $ignoreSpace = false;
-        for ($i = 0; isset($tokens[$i]); ++$i) {
-            $token = $tokens[$i];
-            if (!isset($token[1]) || 'b"' === $token) {
-                $rawChunk .= $token;
-            } elseif (\T_START_HEREDOC === $token[0]) {
-                $output .= $rawChunk.$token[1];
-                do {
-                    $token = $tokens[++$i];
-                    $output .= isset($token[1]) && 'b"' !== $token ? $token[1] : $token;
-                } while (\T_END_HEREDOC !== $token[0]);
-                $rawChunk = '';
-            } elseif (\T_WHITESPACE === $token[0]) {
-                if ($ignoreSpace) {
-                    $ignoreSpace = false;
-
-                    continue;
-                }
-
-                // replace multiple new lines with a single newline
-                $rawChunk .= preg_replace(['/\n{2,}/S'], "\n", $token[1]);
-            } elseif (\in_array($token[0], [\T_COMMENT, \T_DOC_COMMENT])) {
-                $ignoreSpace = true;
-            } else {
-                $rawChunk .= $token[1];
-
-                // The PHP-open tag already has a new-line
-                if (\T_OPEN_TAG === $token[0]) {
-                    $ignoreSpace = true;
-                }
-            }
-        }
-
-        $output .= $rawChunk;
-
-        unset($tokens, $rawChunk);
-        gc_mem_caches();
-
-        return $output;
-    }
-
-    /**
-     * @deprecated since Symfony 4.3
-     */
-    public function serialize()
-    {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), \E_USER_DEPRECATED);
-
-        return serialize([$this->environment, $this->debug]);
-    }
-
-    /**
-     * @deprecated since Symfony 4.3
-     */
-    public function unserialize($data)
-    {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), \E_USER_DEPRECATED);
-        list($environment, $debug) = unserialize($data, ['allowed_classes' => false]);
-
-        $this->__construct($environment, $debug);
-    }
-
-    /**
-     * @return array
-     */
-    public function __sleep()
-    {
-        if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), \E_USER_DEPRECATED);
-            $this->serialized = $this->serialize();
-
-            return ['serialized'];
-        }
-
-        return ['environment', 'debug'];
-    }
-
-    public function __wakeup()
-    {
-        if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), \E_USER_DEPRECATED);
-            $this->unserialize($this->serialized);
-            unset($this->serialized);
-
-            return;
-        }
-        $this->__construct($this->environment, $this->debug);
-    }
-}
diff --git a/vendor/symfony/http-kernel/KernelEvents.php b/vendor/symfony/http-kernel/KernelEvents.php
deleted file mode 100644
index 682561c32496605ddc171c5aaf74c6d28a94c181..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/KernelEvents.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-/**
- * Contains all events thrown in the HttpKernel component.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-final class KernelEvents
-{
-    /**
-     * The REQUEST event occurs at the very beginning of request
-     * dispatching.
-     *
-     * This event allows you to create a response for a request before any
-     * other code in the framework is executed.
-     *
-     * @Event("Symfony\Component\HttpKernel\Event\RequestEvent")
-     */
-    const REQUEST = 'kernel.request';
-
-    /**
-     * The EXCEPTION event occurs when an uncaught exception appears.
-     *
-     * This event allows you to create a response for a thrown exception or
-     * to modify the thrown exception.
-     *
-     * @Event("Symfony\Component\HttpKernel\Event\ExceptionEvent")
-     */
-    const EXCEPTION = 'kernel.exception';
-
-    /**
-     * The VIEW event occurs when the return value of a controller
-     * is not a Response instance.
-     *
-     * This event allows you to create a response for the return value of the
-     * controller.
-     *
-     * @Event("Symfony\Component\HttpKernel\Event\ViewEvent")
-     */
-    const VIEW = 'kernel.view';
-
-    /**
-     * The CONTROLLER event occurs once a controller was found for
-     * handling a request.
-     *
-     * This event allows you to change the controller that will handle the
-     * request.
-     *
-     * @Event("Symfony\Component\HttpKernel\Event\ControllerEvent")
-     */
-    const CONTROLLER = 'kernel.controller';
-
-    /**
-     * The CONTROLLER_ARGUMENTS event occurs once controller arguments have been resolved.
-     *
-     * This event allows you to change the arguments that will be passed to
-     * the controller.
-     *
-     * @Event("Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent")
-     */
-    const CONTROLLER_ARGUMENTS = 'kernel.controller_arguments';
-
-    /**
-     * The RESPONSE event occurs once a response was created for
-     * replying to a request.
-     *
-     * This event allows you to modify or replace the response that will be
-     * replied.
-     *
-     * @Event("Symfony\Component\HttpKernel\Event\ResponseEvent")
-     */
-    const RESPONSE = 'kernel.response';
-
-    /**
-     * The TERMINATE event occurs once a response was sent.
-     *
-     * This event allows you to run expensive post-response jobs.
-     *
-     * @Event("Symfony\Component\HttpKernel\Event\TerminateEvent")
-     */
-    const TERMINATE = 'kernel.terminate';
-
-    /**
-     * The FINISH_REQUEST event occurs when a response was generated for a request.
-     *
-     * This event allows you to reset the global and environmental state of
-     * the application, when it was changed during the request.
-     *
-     * @Event("Symfony\Component\HttpKernel\Event\FinishRequestEvent")
-     */
-    const FINISH_REQUEST = 'kernel.finish_request';
-}
diff --git a/vendor/symfony/http-kernel/KernelInterface.php b/vendor/symfony/http-kernel/KernelInterface.php
deleted file mode 100644
index 00a1aec817e3539a520feb6bb5f7216293575375..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/KernelInterface.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\HttpKernel\Bundle\BundleInterface;
-
-/**
- * The Kernel is the heart of the Symfony system.
- *
- * It manages an environment made of application kernel and bundles.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @method string getProjectDir() Gets the project dir (path of the project's composer file) - not defining it is deprecated since Symfony 4.2
- */
-interface KernelInterface extends HttpKernelInterface
-{
-    /**
-     * Returns an array of bundles to register.
-     *
-     * @return iterable|BundleInterface[] An iterable of bundle instances
-     */
-    public function registerBundles();
-
-    /**
-     * Loads the container configuration.
-     */
-    public function registerContainerConfiguration(LoaderInterface $loader);
-
-    /**
-     * Boots the current kernel.
-     */
-    public function boot();
-
-    /**
-     * Shutdowns the kernel.
-     *
-     * This method is mainly useful when doing functional testing.
-     */
-    public function shutdown();
-
-    /**
-     * Gets the registered bundle instances.
-     *
-     * @return BundleInterface[] An array of registered bundle instances
-     */
-    public function getBundles();
-
-    /**
-     * Returns a bundle.
-     *
-     * @param string $name Bundle name
-     *
-     * @return BundleInterface A BundleInterface instance
-     *
-     * @throws \InvalidArgumentException when the bundle is not enabled
-     */
-    public function getBundle($name);
-
-    /**
-     * Returns the file path for a given bundle resource.
-     *
-     * A Resource can be a file or a directory.
-     *
-     * The resource name must follow the following pattern:
-     *
-     *     "@BundleName/path/to/a/file.something"
-     *
-     * where BundleName is the name of the bundle
-     * and the remaining part is the relative path in the bundle.
-     *
-     * @param string $name A resource name to locate
-     *
-     * @return string|array The absolute path of the resource or an array if $first is false (array return value is deprecated)
-     *
-     * @throws \InvalidArgumentException if the file cannot be found or the name is not valid
-     * @throws \RuntimeException         if the name contains invalid/unsafe characters
-     */
-    public function locateResource($name/*, $dir = null, $first = true*/);
-
-    /**
-     * Gets the name of the kernel.
-     *
-     * @return string The kernel name
-     *
-     * @deprecated since Symfony 4.2
-     */
-    public function getName();
-
-    /**
-     * Gets the environment.
-     *
-     * @return string The current environment
-     */
-    public function getEnvironment();
-
-    /**
-     * Checks if debug mode is enabled.
-     *
-     * @return bool true if debug mode is enabled, false otherwise
-     */
-    public function isDebug();
-
-    /**
-     * Gets the application root dir (path of the project's Kernel class).
-     *
-     * @return string The Kernel root dir
-     *
-     * @deprecated since Symfony 4.2
-     */
-    public function getRootDir();
-
-    /**
-     * Gets the current container.
-     *
-     * @return ContainerInterface
-     */
-    public function getContainer();
-
-    /**
-     * Gets the request start time (not available if debug is disabled).
-     *
-     * @return float The request start timestamp
-     */
-    public function getStartTime();
-
-    /**
-     * Gets the cache directory.
-     *
-     * @return string The cache directory
-     */
-    public function getCacheDir();
-
-    /**
-     * Gets the log directory.
-     *
-     * @return string The log directory
-     */
-    public function getLogDir();
-
-    /**
-     * Gets the charset of the application.
-     *
-     * @return string The charset
-     */
-    public function getCharset();
-}
diff --git a/vendor/symfony/http-kernel/LICENSE b/vendor/symfony/http-kernel/LICENSE
deleted file mode 100644
index 9e936ec0448b8549e5edf08e5ac5f01491a8bfc8..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/http-kernel/Log/DebugLoggerInterface.php b/vendor/symfony/http-kernel/Log/DebugLoggerInterface.php
deleted file mode 100644
index 2a27992e20808bdd0543e91337c7f2b8f44ad356..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Log/DebugLoggerInterface.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Log;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * DebugLoggerInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface DebugLoggerInterface
-{
-    /**
-     * Returns an array of logs.
-     *
-     * A log is an array with the following mandatory keys:
-     * timestamp, message, priority, and priorityName.
-     * It can also have an optional context key containing an array.
-     *
-     * @param Request|null $request The request to get logs for
-     *
-     * @return array An array of logs
-     */
-    public function getLogs(/* Request $request = null */);
-
-    /**
-     * Returns the number of errors.
-     *
-     * @param Request|null $request The request to count logs for
-     *
-     * @return int The number of errors
-     */
-    public function countErrors(/* Request $request = null */);
-
-    /**
-     * Removes all log records.
-     */
-    public function clear();
-}
diff --git a/vendor/symfony/http-kernel/Log/Logger.php b/vendor/symfony/http-kernel/Log/Logger.php
deleted file mode 100644
index c97673dd899d2e0e7e97388e4e8582b1c916fc79..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Log/Logger.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Log;
-
-use Psr\Log\AbstractLogger;
-use Psr\Log\InvalidArgumentException;
-use Psr\Log\LogLevel;
-
-/**
- * Minimalist PSR-3 logger designed to write in stderr or any other stream.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class Logger extends AbstractLogger
-{
-    private static $levels = [
-        LogLevel::DEBUG => 0,
-        LogLevel::INFO => 1,
-        LogLevel::NOTICE => 2,
-        LogLevel::WARNING => 3,
-        LogLevel::ERROR => 4,
-        LogLevel::CRITICAL => 5,
-        LogLevel::ALERT => 6,
-        LogLevel::EMERGENCY => 7,
-    ];
-
-    private $minLevelIndex;
-    private $formatter;
-    private $handle;
-
-    public function __construct(string $minLevel = null, $output = null, callable $formatter = null)
-    {
-        if (null === $minLevel) {
-            $minLevel = null === $output || 'php://stdout' === $output || 'php://stderr' === $output ? LogLevel::ERROR : LogLevel::WARNING;
-
-            if (isset($_ENV['SHELL_VERBOSITY']) || isset($_SERVER['SHELL_VERBOSITY'])) {
-                switch ((int) (isset($_ENV['SHELL_VERBOSITY']) ? $_ENV['SHELL_VERBOSITY'] : $_SERVER['SHELL_VERBOSITY'])) {
-                    case -1: $minLevel = LogLevel::ERROR; break;
-                    case 1: $minLevel = LogLevel::NOTICE; break;
-                    case 2: $minLevel = LogLevel::INFO; break;
-                    case 3: $minLevel = LogLevel::DEBUG; break;
-                }
-            }
-        }
-
-        if (!isset(self::$levels[$minLevel])) {
-            throw new InvalidArgumentException(sprintf('The log level "%s" does not exist.', $minLevel));
-        }
-
-        $this->minLevelIndex = self::$levels[$minLevel];
-        $this->formatter = $formatter ?: [$this, 'format'];
-        if ($output && false === $this->handle = \is_resource($output) ? $output : @fopen($output, 'a')) {
-            throw new InvalidArgumentException(sprintf('Unable to open "%s".', $output));
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @return void
-     */
-    public function log($level, $message, array $context = [])
-    {
-        if (!isset(self::$levels[$level])) {
-            throw new InvalidArgumentException(sprintf('The log level "%s" does not exist.', $level));
-        }
-
-        if (self::$levels[$level] < $this->minLevelIndex) {
-            return;
-        }
-
-        $formatter = $this->formatter;
-        if ($this->handle) {
-            @fwrite($this->handle, $formatter($level, $message, $context));
-        } else {
-            error_log($formatter($level, $message, $context, false));
-        }
-    }
-
-    private function format(string $level, string $message, array $context, bool $prefixDate = true): string
-    {
-        if (false !== strpos($message, '{')) {
-            $replacements = [];
-            foreach ($context as $key => $val) {
-                if (null === $val || is_scalar($val) || (\is_object($val) && method_exists($val, '__toString'))) {
-                    $replacements["{{$key}}"] = $val;
-                } elseif ($val instanceof \DateTimeInterface) {
-                    $replacements["{{$key}}"] = $val->format(\DateTime::RFC3339);
-                } elseif (\is_object($val)) {
-                    $replacements["{{$key}}"] = '[object '.\get_class($val).']';
-                } else {
-                    $replacements["{{$key}}"] = '['.\gettype($val).']';
-                }
-            }
-
-            $message = strtr($message, $replacements);
-        }
-
-        $log = sprintf('[%s] %s', $level, $message).\PHP_EOL;
-        if ($prefixDate) {
-            $log = date(\DateTime::RFC3339).' '.$log;
-        }
-
-        return $log;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
deleted file mode 100644
index 5f23e5e05dab60561bc0efe5d722e019bd04d629..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
+++ /dev/null
@@ -1,305 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Profiler;
-
-/**
- * Storage for profiler using files.
- *
- * @author Alexandre Salomé <alexandre.salome@gmail.com>
- */
-class FileProfilerStorage implements ProfilerStorageInterface
-{
-    /**
-     * Folder where profiler data are stored.
-     *
-     * @var string
-     */
-    private $folder;
-
-    /**
-     * Constructs the file storage using a "dsn-like" path.
-     *
-     * Example : "file:/path/to/the/storage/folder"
-     *
-     * @throws \RuntimeException
-     */
-    public function __construct(string $dsn)
-    {
-        if (0 !== strpos($dsn, 'file:')) {
-            throw new \RuntimeException(sprintf('Please check your configuration. You are trying to use FileStorage with an invalid dsn "%s". The expected format is "file:/path/to/the/storage/folder".', $dsn));
-        }
-        $this->folder = substr($dsn, 5);
-
-        if (!is_dir($this->folder) && false === @mkdir($this->folder, 0777, true) && !is_dir($this->folder)) {
-            throw new \RuntimeException(sprintf('Unable to create the storage directory (%s).', $this->folder));
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null, $statusCode = null): array
-    {
-        $file = $this->getIndexFilename();
-
-        if (!file_exists($file)) {
-            return [];
-        }
-
-        $file = fopen($file, 'r');
-        fseek($file, 0, \SEEK_END);
-
-        $result = [];
-        while (\count($result) < $limit && $line = $this->readLineFromFile($file)) {
-            $values = str_getcsv($line);
-            list($csvToken, $csvIp, $csvMethod, $csvUrl, $csvTime, $csvParent, $csvStatusCode) = $values;
-            $csvTime = (int) $csvTime;
-
-            if ($ip && false === strpos($csvIp, $ip) || $url && false === strpos($csvUrl, $url) || $method && false === strpos($csvMethod, $method) || $statusCode && false === strpos($csvStatusCode, $statusCode)) {
-                continue;
-            }
-
-            if (!empty($start) && $csvTime < $start) {
-                continue;
-            }
-
-            if (!empty($end) && $csvTime > $end) {
-                continue;
-            }
-
-            $result[$csvToken] = [
-                'token' => $csvToken,
-                'ip' => $csvIp,
-                'method' => $csvMethod,
-                'url' => $csvUrl,
-                'time' => $csvTime,
-                'parent' => $csvParent,
-                'status_code' => $csvStatusCode,
-            ];
-        }
-
-        fclose($file);
-
-        return array_values($result);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function purge()
-    {
-        $flags = \FilesystemIterator::SKIP_DOTS;
-        $iterator = new \RecursiveDirectoryIterator($this->folder, $flags);
-        $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::CHILD_FIRST);
-
-        foreach ($iterator as $file) {
-            if (is_file($file)) {
-                unlink($file);
-            } else {
-                rmdir($file);
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($token): ?Profile
-    {
-        if (!$token || !file_exists($file = $this->getFilename($token))) {
-            return null;
-        }
-
-        if (\function_exists('gzcompress')) {
-            $file = 'compress.zlib://'.$file;
-        }
-
-        return $this->createProfileFromData($token, unserialize(file_get_contents($file)));
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws \RuntimeException
-     */
-    public function write(Profile $profile): bool
-    {
-        $file = $this->getFilename($profile->getToken());
-
-        $profileIndexed = is_file($file);
-        if (!$profileIndexed) {
-            // Create directory
-            $dir = \dirname($file);
-            if (!is_dir($dir) && false === @mkdir($dir, 0777, true) && !is_dir($dir)) {
-                throw new \RuntimeException(sprintf('Unable to create the storage directory (%s).', $dir));
-            }
-        }
-
-        $profileToken = $profile->getToken();
-        // when there are errors in sub-requests, the parent and/or children tokens
-        // may equal the profile token, resulting in infinite loops
-        $parentToken = $profile->getParentToken() !== $profileToken ? $profile->getParentToken() : null;
-        $childrenToken = array_filter(array_map(function (Profile $p) use ($profileToken) {
-            return $profileToken !== $p->getToken() ? $p->getToken() : null;
-        }, $profile->getChildren()));
-
-        // Store profile
-        $data = [
-            'token' => $profileToken,
-            'parent' => $parentToken,
-            'children' => $childrenToken,
-            'data' => $profile->getCollectors(),
-            'ip' => $profile->getIp(),
-            'method' => $profile->getMethod(),
-            'url' => $profile->getUrl(),
-            'time' => $profile->getTime(),
-            'status_code' => $profile->getStatusCode(),
-        ];
-
-        $context = stream_context_create();
-
-        if (\function_exists('gzcompress')) {
-            $file = 'compress.zlib://'.$file;
-            stream_context_set_option($context, 'zlib', 'level', 3);
-        }
-
-        if (false === file_put_contents($file, serialize($data), 0, $context)) {
-            return false;
-        }
-
-        if (!$profileIndexed) {
-            // Add to index
-            if (false === $file = fopen($this->getIndexFilename(), 'a')) {
-                return false;
-            }
-
-            fputcsv($file, [
-                $profile->getToken(),
-                $profile->getIp(),
-                $profile->getMethod(),
-                $profile->getUrl(),
-                $profile->getTime(),
-                $profile->getParentToken(),
-                $profile->getStatusCode(),
-            ]);
-            fclose($file);
-        }
-
-        return true;
-    }
-
-    /**
-     * Gets filename to store data, associated to the token.
-     *
-     * @param string $token
-     *
-     * @return string The profile filename
-     */
-    protected function getFilename($token)
-    {
-        // Uses 4 last characters, because first are mostly the same.
-        $folderA = substr($token, -2, 2);
-        $folderB = substr($token, -4, 2);
-
-        return $this->folder.'/'.$folderA.'/'.$folderB.'/'.$token;
-    }
-
-    /**
-     * Gets the index filename.
-     *
-     * @return string The index filename
-     */
-    protected function getIndexFilename()
-    {
-        return $this->folder.'/index.csv';
-    }
-
-    /**
-     * Reads a line in the file, backward.
-     *
-     * This function automatically skips the empty lines and do not include the line return in result value.
-     *
-     * @param resource $file The file resource, with the pointer placed at the end of the line to read
-     *
-     * @return mixed A string representing the line or null if beginning of file is reached
-     */
-    protected function readLineFromFile($file)
-    {
-        $line = '';
-        $position = ftell($file);
-
-        if (0 === $position) {
-            return null;
-        }
-
-        while (true) {
-            $chunkSize = min($position, 1024);
-            $position -= $chunkSize;
-            fseek($file, $position);
-
-            if (0 === $chunkSize) {
-                // bof reached
-                break;
-            }
-
-            $buffer = fread($file, $chunkSize);
-
-            if (false === ($upTo = strrpos($buffer, "\n"))) {
-                $line = $buffer.$line;
-                continue;
-            }
-
-            $position += $upTo;
-            $line = substr($buffer, $upTo + 1).$line;
-            fseek($file, max(0, $position), \SEEK_SET);
-
-            if ('' !== $line) {
-                break;
-            }
-        }
-
-        return '' === $line ? null : $line;
-    }
-
-    protected function createProfileFromData($token, $data, $parent = null)
-    {
-        $profile = new Profile($token);
-        $profile->setIp($data['ip']);
-        $profile->setMethod($data['method']);
-        $profile->setUrl($data['url']);
-        $profile->setTime($data['time']);
-        $profile->setStatusCode($data['status_code']);
-        $profile->setCollectors($data['data']);
-
-        if (!$parent && $data['parent']) {
-            $parent = $this->read($data['parent']);
-        }
-
-        if ($parent) {
-            $profile->setParent($parent);
-        }
-
-        foreach ($data['children'] as $token) {
-            if (!$token || !file_exists($file = $this->getFilename($token))) {
-                continue;
-            }
-
-            if (\function_exists('gzcompress')) {
-                $file = 'compress.zlib://'.$file;
-            }
-
-            $profile->addChild($this->createProfileFromData($token, unserialize(file_get_contents($file)), $profile));
-        }
-
-        return $profile;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/Profile.php b/vendor/symfony/http-kernel/Profiler/Profile.php
deleted file mode 100644
index ac5b5044c1e7917873e5419570c0b4a47d2c4927..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Profiler/Profile.php
+++ /dev/null
@@ -1,301 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Profiler;
-
-use Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface;
-
-/**
- * Profile.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Profile
-{
-    private $token;
-
-    /**
-     * @var DataCollectorInterface[]
-     */
-    private $collectors = [];
-
-    private $ip;
-    private $method;
-    private $url;
-    private $time;
-    private $statusCode;
-
-    /**
-     * @var Profile
-     */
-    private $parent;
-
-    /**
-     * @var Profile[]
-     */
-    private $children = [];
-
-    public function __construct(string $token)
-    {
-        $this->token = $token;
-    }
-
-    /**
-     * Sets the token.
-     *
-     * @param string $token The token
-     */
-    public function setToken($token)
-    {
-        $this->token = $token;
-    }
-
-    /**
-     * Gets the token.
-     *
-     * @return string The token
-     */
-    public function getToken()
-    {
-        return $this->token;
-    }
-
-    /**
-     * Sets the parent token.
-     */
-    public function setParent(self $parent)
-    {
-        $this->parent = $parent;
-    }
-
-    /**
-     * Returns the parent profile.
-     *
-     * @return self
-     */
-    public function getParent()
-    {
-        return $this->parent;
-    }
-
-    /**
-     * Returns the parent token.
-     *
-     * @return string|null The parent token
-     */
-    public function getParentToken()
-    {
-        return $this->parent ? $this->parent->getToken() : null;
-    }
-
-    /**
-     * Returns the IP.
-     *
-     * @return string|null The IP
-     */
-    public function getIp()
-    {
-        return $this->ip;
-    }
-
-    /**
-     * Sets the IP.
-     *
-     * @param string $ip
-     */
-    public function setIp($ip)
-    {
-        $this->ip = $ip;
-    }
-
-    /**
-     * Returns the request method.
-     *
-     * @return string|null The request method
-     */
-    public function getMethod()
-    {
-        return $this->method;
-    }
-
-    public function setMethod($method)
-    {
-        $this->method = $method;
-    }
-
-    /**
-     * Returns the URL.
-     *
-     * @return string|null The URL
-     */
-    public function getUrl()
-    {
-        return $this->url;
-    }
-
-    /**
-     * @param string $url
-     */
-    public function setUrl($url)
-    {
-        $this->url = $url;
-    }
-
-    /**
-     * Returns the time.
-     *
-     * @return int The time
-     */
-    public function getTime()
-    {
-        if (null === $this->time) {
-            return 0;
-        }
-
-        return $this->time;
-    }
-
-    /**
-     * @param int $time The time
-     */
-    public function setTime($time)
-    {
-        $this->time = $time;
-    }
-
-    /**
-     * @param int $statusCode
-     */
-    public function setStatusCode($statusCode)
-    {
-        $this->statusCode = $statusCode;
-    }
-
-    /**
-     * @return int|null
-     */
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-
-    /**
-     * Finds children profilers.
-     *
-     * @return self[]
-     */
-    public function getChildren()
-    {
-        return $this->children;
-    }
-
-    /**
-     * Sets children profiler.
-     *
-     * @param Profile[] $children
-     */
-    public function setChildren(array $children)
-    {
-        $this->children = [];
-        foreach ($children as $child) {
-            $this->addChild($child);
-        }
-    }
-
-    /**
-     * Adds the child token.
-     */
-    public function addChild(self $child)
-    {
-        $this->children[] = $child;
-        $child->setParent($this);
-    }
-
-    public function getChildByToken(string $token): ?self
-    {
-        foreach ($this->children as $child) {
-            if ($token === $child->getToken()) {
-                return $child;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Gets a Collector by name.
-     *
-     * @param string $name A collector name
-     *
-     * @return DataCollectorInterface A DataCollectorInterface instance
-     *
-     * @throws \InvalidArgumentException if the collector does not exist
-     */
-    public function getCollector($name)
-    {
-        if (!isset($this->collectors[$name])) {
-            throw new \InvalidArgumentException(sprintf('Collector "%s" does not exist.', $name));
-        }
-
-        return $this->collectors[$name];
-    }
-
-    /**
-     * Gets the Collectors associated with this profile.
-     *
-     * @return DataCollectorInterface[]
-     */
-    public function getCollectors()
-    {
-        return $this->collectors;
-    }
-
-    /**
-     * Sets the Collectors associated with this profile.
-     *
-     * @param DataCollectorInterface[] $collectors
-     */
-    public function setCollectors(array $collectors)
-    {
-        $this->collectors = [];
-        foreach ($collectors as $collector) {
-            $this->addCollector($collector);
-        }
-    }
-
-    /**
-     * Adds a Collector.
-     */
-    public function addCollector(DataCollectorInterface $collector)
-    {
-        $this->collectors[$collector->getName()] = $collector;
-    }
-
-    /**
-     * Returns true if a Collector for the given name exists.
-     *
-     * @param string $name A collector name
-     *
-     * @return bool
-     */
-    public function hasCollector($name)
-    {
-        return isset($this->collectors[$name]);
-    }
-
-    /**
-     * @return array
-     */
-    public function __sleep()
-    {
-        return ['token', 'parent', 'children', 'collectors', 'ip', 'method', 'url', 'time', 'statusCode'];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/Profiler.php b/vendor/symfony/http-kernel/Profiler/Profiler.php
deleted file mode 100644
index 60a623684cd02db1e4ef46a9cfbe340a4db20439..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Profiler/Profiler.php
+++ /dev/null
@@ -1,269 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Profiler;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Debug\Exception\FatalThrowableError;
-use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface;
-use Symfony\Component\HttpKernel\DataCollector\LateDataCollectorInterface;
-use Symfony\Contracts\Service\ResetInterface;
-
-/**
- * Profiler.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Profiler implements ResetInterface
-{
-    private $storage;
-
-    /**
-     * @var DataCollectorInterface[]
-     */
-    private $collectors = [];
-
-    private $logger;
-    private $initiallyEnabled = true;
-    private $enabled = true;
-
-    public function __construct(ProfilerStorageInterface $storage, LoggerInterface $logger = null, bool $enable = true)
-    {
-        $this->storage = $storage;
-        $this->logger = $logger;
-        $this->initiallyEnabled = $this->enabled = $enable;
-    }
-
-    /**
-     * Disables the profiler.
-     */
-    public function disable()
-    {
-        $this->enabled = false;
-    }
-
-    /**
-     * Enables the profiler.
-     */
-    public function enable()
-    {
-        $this->enabled = true;
-    }
-
-    /**
-     * Loads the Profile for the given Response.
-     *
-     * @return Profile|null A Profile instance
-     */
-    public function loadProfileFromResponse(Response $response)
-    {
-        if (!$token = $response->headers->get('X-Debug-Token')) {
-            return null;
-        }
-
-        return $this->loadProfile($token);
-    }
-
-    /**
-     * Loads the Profile for the given token.
-     *
-     * @param string $token A token
-     *
-     * @return Profile|null A Profile instance
-     */
-    public function loadProfile($token)
-    {
-        return $this->storage->read($token);
-    }
-
-    /**
-     * Saves a Profile.
-     *
-     * @return bool
-     */
-    public function saveProfile(Profile $profile)
-    {
-        // late collect
-        foreach ($profile->getCollectors() as $collector) {
-            if ($collector instanceof LateDataCollectorInterface) {
-                $collector->lateCollect();
-            }
-        }
-
-        if (!($ret = $this->storage->write($profile)) && null !== $this->logger) {
-            $this->logger->warning('Unable to store the profiler information.', ['configured_storage' => \get_class($this->storage)]);
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Purges all data from the storage.
-     */
-    public function purge()
-    {
-        $this->storage->purge();
-    }
-
-    /**
-     * Finds profiler tokens for the given criteria.
-     *
-     * @param string $ip         The IP
-     * @param string $url        The URL
-     * @param string $limit      The maximum number of tokens to return
-     * @param string $method     The request method
-     * @param string $start      The start date to search from
-     * @param string $end        The end date to search to
-     * @param string $statusCode The request status code
-     *
-     * @return array An array of tokens
-     *
-     * @see https://php.net/datetime.formats for the supported date/time formats
-     */
-    public function find($ip, $url, $limit, $method, $start, $end, $statusCode = null)
-    {
-        return $this->storage->find($ip, $url, $limit, $method, $this->getTimestamp($start), $this->getTimestamp($end), $statusCode);
-    }
-
-    /**
-     * Collects data for the given Response.
-     *
-     * @param \Throwable|null $exception
-     *
-     * @return Profile|null A Profile instance or null if the profiler is disabled
-     */
-    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
-    {
-        $exception = 2 < \func_num_args() ? func_get_arg(2) : null;
-
-        if (false === $this->enabled) {
-            return null;
-        }
-
-        $profile = new Profile(substr(hash('sha256', uniqid(mt_rand(), true)), 0, 6));
-        $profile->setTime(time());
-        $profile->setUrl($request->getUri());
-        $profile->setMethod($request->getMethod());
-        $profile->setStatusCode($response->getStatusCode());
-        try {
-            $profile->setIp($request->getClientIp());
-        } catch (ConflictingHeadersException $e) {
-            $profile->setIp('Unknown');
-        }
-
-        if ($prevToken = $response->headers->get('X-Debug-Token')) {
-            $response->headers->set('X-Previous-Debug-Token', $prevToken);
-        }
-
-        $response->headers->set('X-Debug-Token', $profile->getToken());
-
-        $wrappedException = null;
-        foreach ($this->collectors as $collector) {
-            if (($e = $exception) instanceof \Error) {
-                $r = new \ReflectionMethod($collector, 'collect');
-                $e = 2 >= $r->getNumberOfParameters() || !($p = $r->getParameters()[2])->hasType() || \Exception::class !== $p->getType()->getName() ? $e : ($wrappedException ?? $wrappedException = new FatalThrowableError($e));
-            }
-
-            $collector->collect($request, $response, $e);
-            // we need to clone for sub-requests
-            $profile->addCollector(clone $collector);
-        }
-
-        return $profile;
-    }
-
-    public function reset()
-    {
-        foreach ($this->collectors as $collector) {
-            $collector->reset();
-        }
-        $this->enabled = $this->initiallyEnabled;
-    }
-
-    /**
-     * Gets the Collectors associated with this profiler.
-     *
-     * @return array An array of collectors
-     */
-    public function all()
-    {
-        return $this->collectors;
-    }
-
-    /**
-     * Sets the Collectors associated with this profiler.
-     *
-     * @param DataCollectorInterface[] $collectors An array of collectors
-     */
-    public function set(array $collectors = [])
-    {
-        $this->collectors = [];
-        foreach ($collectors as $collector) {
-            $this->add($collector);
-        }
-    }
-
-    /**
-     * Adds a Collector.
-     */
-    public function add(DataCollectorInterface $collector)
-    {
-        $this->collectors[$collector->getName()] = $collector;
-    }
-
-    /**
-     * Returns true if a Collector for the given name exists.
-     *
-     * @param string $name A collector name
-     *
-     * @return bool
-     */
-    public function has($name)
-    {
-        return isset($this->collectors[$name]);
-    }
-
-    /**
-     * Gets a Collector by name.
-     *
-     * @param string $name A collector name
-     *
-     * @return DataCollectorInterface A DataCollectorInterface instance
-     *
-     * @throws \InvalidArgumentException if the collector does not exist
-     */
-    public function get($name)
-    {
-        if (!isset($this->collectors[$name])) {
-            throw new \InvalidArgumentException(sprintf('Collector "%s" does not exist.', $name));
-        }
-
-        return $this->collectors[$name];
-    }
-
-    private function getTimestamp(?string $value): ?int
-    {
-        if (null === $value || '' === $value) {
-            return null;
-        }
-
-        try {
-            $value = new \DateTime(is_numeric($value) ? '@'.$value : $value);
-        } catch (\Exception $e) {
-            return null;
-        }
-
-        return $value->getTimestamp();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php b/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php
deleted file mode 100644
index d13ee23220432e0f0f099bec9bfdd3b050da977c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Profiler;
-
-/**
- * ProfilerStorageInterface.
- *
- * This interface exists for historical reasons. The only supported
- * implementation is FileProfilerStorage.
- *
- * As the profiler must only be used on non-production servers, the file storage
- * is more than enough and no other implementations will ever be supported.
- *
- * @internal since 4.2
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ProfilerStorageInterface
-{
-    /**
-     * Finds profiler tokens for the given criteria.
-     *
-     * @param string   $ip     The IP
-     * @param string   $url    The URL
-     * @param string   $limit  The maximum number of tokens to return
-     * @param string   $method The request method
-     * @param int|null $start  The start date to search from
-     * @param int|null $end    The end date to search to
-     *
-     * @return array An array of tokens
-     */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null): array;
-
-    /**
-     * Reads data associated with the given token.
-     *
-     * The method returns false if the token does not exist in the storage.
-     *
-     * @param string $token A token
-     *
-     * @return Profile|null The profile associated with token
-     */
-    public function read($token): ?Profile;
-
-    /**
-     * Saves a Profile.
-     *
-     * @return bool Write operation successful
-     */
-    public function write(Profile $profile): bool;
-
-    /**
-     * Purges all data from the database.
-     */
-    public function purge();
-}
diff --git a/vendor/symfony/http-kernel/README.md b/vendor/symfony/http-kernel/README.md
deleted file mode 100644
index abdaf513f9cde11b0993d61a304928eb1dbe7725..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-HttpKernel Component
-====================
-
-The HttpKernel component provides a structured process for converting a Request
-into a Response by making use of the EventDispatcher component. It's flexible
-enough to create a full-stack framework (Symfony), a micro-framework (Silex) or
-an advanced CMS system (Drupal).
-
-Resources
----------
-
-  * [Documentation](https://symfony.com/doc/current/components/http_kernel.html)
-  * [Contributing](https://symfony.com/doc/current/contributing/index.html)
-  * [Report issues](https://github.com/symfony/symfony/issues) and
-    [send Pull Requests](https://github.com/symfony/symfony/pulls)
-    in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/vendor/symfony/http-kernel/RebootableInterface.php b/vendor/symfony/http-kernel/RebootableInterface.php
deleted file mode 100644
index 58d9ef59e4483b74711ebfe4f529d9453887f922..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/RebootableInterface.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-/**
- * Allows the Kernel to be rebooted using a temporary cache directory.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface RebootableInterface
-{
-    /**
-     * Reboots a kernel.
-     *
-     * The getCacheDir() method of a rebootable kernel should not be called
-     * while building the container. Use the %kernel.cache_dir% parameter instead.
-     *
-     * @param string|null $warmupDir pass null to reboot in the regular cache directory
-     */
-    public function reboot($warmupDir);
-}
diff --git a/vendor/symfony/http-kernel/Resources/welcome.html.php b/vendor/symfony/http-kernel/Resources/welcome.html.php
deleted file mode 100644
index b8337dc737e4eb6499c1e7d03f63c353f9830d76..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Resources/welcome.html.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html>
-<html dir="ltr" lang="en">
-<head>
-    <meta charset="UTF-8" />
-    <meta name="robots" content="noindex,nofollow,noarchive,nosnippet,noodp,notranslate,noimageindex" />
-    <title>Welcome to Symfony!</title>
-    <style>
-        <?php $hue = random_int(0, 360); ?>
-        <?php $darkColor = static function (float $alpha = 1) use ($hue) { return "hsla($hue, 20%, 45%, $alpha)"; }; ?>
-        <?php $lightColor = static function (float $alpha = 1) use ($hue) { return "hsla($hue, 20%, 95%, $alpha)"; }; ?>
-        body { background: <?= $lightColor(); ?>; color: <?= $darkColor(); ?>; display: flex; font: 16px/1.5 sans-serif; justify-content: center; margin: 0; }
-        h1, h2 { line-height: 1.2; margin: 0 0 .5em; }
-        h1 { font-size: 36px; }
-        h2 { font-size: 21px; margin-bottom: 1em; }
-        a { color: <?= $darkColor(0.75); ?> }
-        a:hover { text-decoration: none; }
-        code { border-radius: 25px; background: <?= $lightColor(); ?>; box-shadow: 0 0 45px -15px hsl(<?= $hue; ?>, 20%, 2%); color: <?= $darkColor(); ?>; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; align-items: center; padding-right: 20px; position: relative; word-wrap: break-word; z-index: 1; }
-        svg { overflow: hidden; vertical-align: text-bottom; }
-        .wrapper { text-align: center; width: 100%; }
-        .container { position: relative; background: radial-gradient(ellipse at bottom, <?= $darkColor(); ?> 0%, hsl(<?= $hue; ?>, 20%, 13%) 100%); background-attachment: fixed; color: <?= $lightColor(); ?>; }
-        .container:after { content: ""; position: absolute; height: 2px; width: 2px; top: -2px; left: 0; background: white; box-shadow: 778px 1019px 0 0 rgba(255, 255, 255, 0.826) , 1075px 1688px 0 0 rgba(255,255,255, 0.275) , 388px 1021px 0 0 rgba(255,255,255, 0.259) , 1238px 626px 0 0 rgba(255,255,255, 0.469) , 997px 904px 0 0 rgba(255,255,255, 0.925) , 921px 1345px 0 0 rgba(255,255,255, 0.698) , 337px 1236px 0 0 rgba(255,255,255, 0.838) , 460px 569px 0 0 rgba(255,255,255, 0.01) , 690px 1488px 0 0 rgba(255,255,255, 0.154) , 859px 926px 0 0 rgba(255,255,255, 0.515) , 1272px 791px 0 0 rgba(255,255,255, 1) , 238px 1256px 0 0 rgba(255,255,255, 0.633) , 1486px 897px 0 0 rgba(255,255,255, 0.88) , 667px 6px 0 0 rgba(255,255,255, 0.508) , 853px 504px 0 0 rgba(255,255,255, 0.248) , 1329px 1778px 0 0 rgba(255,255,255, 0.217) , 768px 1340px 0 0 rgba(255,255,255, 0.792) , 631px 1383px 0 0 rgba(255,255,255, 0.698) , 991px 1603px 0 0 rgba(255,255,255, 0.939) , 1778px 1767px 0 0 rgba(255,255,255, 0.784) , 285px 546px 0 0 rgba(255,255,255, 0.8) , 1224px 1333px 0 0 rgba(255,255,255, 0.676) , 1154px 397px 0 0 rgba(255,255,255, 0.974) , 1210px 1004px 0 0 rgba(255,255,255, 0.894) , 1632px 953px 0 0 rgba(255,255,255, 0.281) , 449px 1144px 0 0 rgba(255,255,255, 0.706) , 1426px 771px 0 0 rgba(255,255,255, 0.737) , 1438px 1634px 0 0 rgba(255,255,255, 0.984) , 806px 168px 0 0 rgba(255,255,255, 0.807) , 731px 1067px 0 0 rgba(255,255,255, 0.734) , 1731px 1785px 0 0 rgba(255,255,255, 0.528) , 23px 975px 0 0 rgba(255,255,255, 0.068) , 575px 1088px 0 0 rgba(255,255,255, 0.876) , 1205px 1668px 0 0 rgba(255,255,255, 0.601) , 18px 1457px 0 0 rgba(255,255,255, 0.176) , 252px 1163px 0 0 rgba(255,255,255, 0.416) , 1752px 1px 0 0 rgba(255,255,255, 0.374) , 382px 767px 0 0 rgba(255,255,255, 0.073) , 133px 1462px 0 0 rgba(255,255,255, 0.706) , 851px 1166px 0 0 rgba(255,255,255, 0.535) , 374px 921px 0 0 rgba(255,255,255, 0.548) , 554px 1598px 0 0 rgba(255,255,255, 0.062) , 314px 685px 0 0 rgba(255,255,255, 0.187) , 1443px 209px 0 0 rgba(255,255,255, 0.097) , 1774px 1625px 0 0 rgba(255,255,255, 0.32) , 58px 278px 0 0 rgba(255,255,255, 0.684) , 986px 338px 0 0 rgba(255,255,255, 0.272) , 718px 1357px 0 0 rgba(255,255,255, 0.317) , 722px 983px 0 0 rgba(255,255,255, 0.568) , 1124px 992px 0 0 rgba(255,255,255, 0.199) , 581px 619px 0 0 rgba(255,255,255, 0.44) , 1120px 285px 0 0 rgba(255,255,255, 0.425) , 702px 138px 0 0 rgba(255,255,255, 0.816) , 262px 767px 0 0 rgba(255,255,255, 0.92) , 1204px 38px 0 0 rgba(255,255,255, 0.197) , 1196px 410px 0 0 rgba(255,255,255, 0.453) , 707px 699px 0 0 rgba(255,255,255, 0.481) , 1590px 1488px 0 0 rgba(255,255,255, 0.559) , 879px 1763px 0 0 rgba(255,255,255, 0.241) , 106px 686px 0 0 rgba(255,255,255, 0.175) , 158px 569px 0 0 rgba(255,255,255, 0.549) , 711px 1219px 0 0 rgba(255,255,255, 0.476) , 1339px 53px 0 0 rgba(255,255,255, 0.275) , 1410px 172px 0 0 rgba(255,255,255, 0.449) , 1601px 1484px 0 0 rgba(255,255,255, 0.988) , 1328px 1752px 0 0 rgba(255,255,255, 0.827) , 1733px 1475px 0 0 rgba(255,255,255, 0.567) , 559px 742px 0 0 rgba(255,255,255, 0.423) , 772px 844px 0 0 rgba(255,255,255, 0.039) , 602px 520px 0 0 rgba(255,255,255, 0.284) , 1158px 1067px 0 0 rgba(255,255,255, 0.066) , 1562px 730px 0 0 rgba(255,255,255, 0.086) , 1792px 615px 0 0 rgba(255,255,255, 0.438) , 1085px 1191px 0 0 rgba(255,255,255, 0.157) , 1402px 1087px 0 0 rgba(255,255,255, 0.797) , 569px 1685px 0 0 rgba(255,255,255, 0.992) , 1608px 52px 0 0 rgba(255,255,255, 0.302) , 1697px 1246px 0 0 rgba(255,255,255, 0.295) , 899px 1490px 0 0 rgba(255,255,255, 0.73) , 993px 901px 0 0 rgba(255,255,255, 0.961) , 1193px 1023px 0 0 rgba(255,255,255, 0.671) , 1224px 176px 0 0 rgba(255,255,255, 0.786) , 721px 1308px 0 0 rgba(255,255,255, 0.691) , 1702px 730px 0 0 rgba(255,255,255, 0.841) , 1480px 1498px 0 0 rgba(255,255,255, 0.655) , 181px 1612px 0 0 rgba(255,255,255, 0.588) , 1776px 679px 0 0 rgba(255,255,255, 0.821) , 892px 706px 0 0 rgba(255,255,255, 0.056) , 859px 267px 0 0 rgba(255,255,255, 0.565) , 784px 1285px 0 0 rgba(255,255,255, 0.029) , 1561px 1198px 0 0 rgba(255,255,255, 0.315) , 205px 421px 0 0 rgba(255,255,255, 0.584) , 236px 406px 0 0 rgba(255,255,255, 0.166) , 1259px 689px 0 0 rgba(255,255,255, 0.321) , 448px 317px 0 0 rgba(255,255,255, 0.495) , 1318px 466px 0 0 rgba(255,255,255, 0.275) , 1053px 297px 0 0 rgba(255,255,255, 0.035) , 716px 538px 0 0 rgba(255,255,255, 0.764) , 381px 207px 0 0 rgba(255,255,255, 0.692) , 871px 1140px 0 0 rgba(255,255,255, 0.342) , 361px 53px 0 0 rgba(255,255,255, 0.984) , 1565px 1593px 0 0 rgba(255,255,255, 0.102) , 145px 277px 0 0 rgba(255,255,255, 0.866) , 220px 1503px 0 0 rgba(255,255,255, 0.936) , 1068px 1475px 0 0 rgba(255,255,255, 0.156) , 1548px 483px 0 0 rgba(255,255,255, 0.768) , 710px 103px 0 0 rgba(255,255,255, 0.809) , 1660px 921px 0 0 rgba(255,255,255, 0.952) , 462px 1252px 0 0 rgba(255,255,255, 0.825) , 1123px 1628px 0 0 rgba(255,255,255, 0.409) , 1274px 729px 0 0 rgba(255,255,255, 0.26) , 1739px 679px 0 0 rgba(255,255,255, 0.83) , 1550px 1518px 0 0 rgba(255,255,255, 0.25) , 1624px 346px 0 0 rgba(255,255,255, 0.557) , 1023px 579px 0 0 rgba(255,255,255, 0.854) , 217px 661px 0 0 rgba(255,255,255, 0.731) , 1504px 549px 0 0 rgba(255,255,255, 0.705) , 939px 5px 0 0 rgba(255,255,255, 0.389) , 284px 735px 0 0 rgba(255,255,255, 0.355) , 13px 1679px 0 0 rgba(255,255,255, 0.712) , 137px 1592px 0 0 rgba(255,255,255, 0.619) , 1113px 505px 0 0 rgba(255,255,255, 0.651) , 1584px 510px 0 0 rgba(255,255,255, 0.41) , 346px 913px 0 0 rgba(255,255,255, 0.09) , 198px 1490px 0 0 rgba(255,255,255, 0.103) , 447px 1128px 0 0 rgba(255,255,255, 0.314) , 1356px 324px 0 0 rgba(255,255,255, 0.324) , 648px 667px 0 0 rgba(255,255,255, 0.155) , 442px 260px 0 0 rgba(255,255,255, 0.22) , 210px 401px 0 0 rgba(255,255,255, 0.682) , 422px 1772px 0 0 rgba(255,255,255, 0.671) , 276px 349px 0 0 rgba(255,255,255, 0.683) , 131px 539px 0 0 rgba(255,255,255, 0.977) , 892px 94px 0 0 rgba(255,255,255, 0.081) , 1295px 222px 0 0 rgba(255,255,255, 0.961) , 5px 1727px 0 0 rgba(255,255,255, 0.311) , 714px 1148px 0 0 rgba(255,255,255, 0.846) , 1455px 1182px 0 0 rgba(255,255,255, 0.313) , 1370px 708px 0 0 rgba(255,255,255, 0.824) , 812px 433px 0 0 rgba(255,255,255, 0.75) , 1110px 558px 0 0 rgba(255,255,255, 0.709) , 1132px 1543px 0 0 rgba(255,255,255, 0.868) , 644px 610px 0 0 rgba(255,255,255, 0.166) , 269px 1481px 0 0 rgba(255,255,255, 0.889) , 1712px 590px 0 0 rgba(255,255,255, 0.139) , 1159px 599px 0 0 rgba(255,255,255, 0.992) , 1551px 209px 0 0 rgba(255,255,255, 0.033) , 1020px 1721px 0 0 rgba(255,255,255, 0.028) , 216px 373px 0 0 rgba(255,255,255, 0.665) , 877px 532px 0 0 rgba(255,255,255, 0.686) , 1326px 885px 0 0 rgba(255,255,255, 0.517) , 972px 1704px 0 0 rgba(255,255,255, 0.499) , 749px 181px 0 0 rgba(255,255,255, 0.712) , 1511px 1650px 0 0 rgba(255,255,255, 0.101) , 1432px 183px 0 0 rgba(255,255,255, 0.545) , 1541px 1338px 0 0 rgba(255,255,255, 0.71) , 513px 1406px 0 0 rgba(255,255,255, 0.17) , 1314px 1197px 0 0 rgba(255,255,255, 0.789) , 824px 1659px 0 0 rgba(255,255,255, 0.597) , 308px 298px 0 0 rgba(255,255,255, 0.917) , 1225px 659px 0 0 rgba(255,255,255, 0.229) , 1253px 257px 0 0 rgba(255,255,255, 0.631) , 1653px 185px 0 0 rgba(255,255,255, 0.113) , 336px 614px 0 0 rgba(255,255,255, 0.045) , 1093px 898px 0 0 rgba(255,255,255, 0.617) , 730px 5px 0 0 rgba(255,255,255, 0.11) , 785px 645px 0 0 rgba(255,255,255, 0.516) , 989px 678px 0 0 rgba(255,255,255, 0.917) , 1511px 1614px 0 0 rgba(255,255,255, 0.938) , 584px 1117px 0 0 rgba(255,255,255, 0.631) , 534px 1012px 0 0 rgba(255,255,255, 0.668) , 1325px 1778px 0 0 rgba(255,255,255, 0.293) , 1632px 754px 0 0 rgba(255,255,255, 0.26) , 78px 1258px 0 0 rgba(255,255,255, 0.52) , 779px 1691px 0 0 rgba(255,255,255, 0.878) , 253px 1706px 0 0 rgba(255,255,255, 0.75) , 1358px 245px 0 0 rgba(255,255,255, 0.027) , 361px 1629px 0 0 rgba(255,255,255, 0.238) , 1134px 232px 0 0 rgba(255,255,255, 0.387) , 1685px 777px 0 0 rgba(255,255,255, 0.156) , 515px 724px 0 0 rgba(255,255,255, 0.863) , 588px 1728px 0 0 rgba(255,255,255, 0.159) , 1132px 47px 0 0 rgba(255,255,255, 0.691) , 315px 1446px 0 0 rgba(255,255,255, 0.782) , 79px 233px 0 0 rgba(255,255,255, 0.317) , 1498px 1050px 0 0 rgba(255,255,255, 0.358) , 30px 1073px 0 0 rgba(255,255,255, 0.939) , 1637px 620px 0 0 rgba(255,255,255, 0.141) , 1736px 1683px 0 0 rgba(255,255,255, 0.682) , 1298px 1505px 0 0 rgba(255,255,255, 0.863) , 972px 85px 0 0 rgba(255,255,255, 0.941) , 349px 1356px 0 0 rgba(255,255,255, 0.672) , 1545px 1429px 0 0 rgba(255,255,255, 0.859) , 1076px 467px 0 0 rgba(255,255,255, 0.024) , 189px 1647px 0 0 rgba(255,255,255, 0.838) , 423px 1722px 0 0 rgba(255,255,255, 0.771) , 1691px 1719px 0 0 rgba(255,255,255, 0.676) , 1747px 658px 0 0 rgba(255,255,255, 0.255) , 149px 1492px 0 0 rgba(255,255,255, 0.911) , 1203px 1138px 0 0 rgba(255,255,255, 0.964) , 781px 1584px 0 0 rgba(255,255,255, 0.465) , 1609px 1595px 0 0 rgba(255,255,255, 0.688) , 447px 1655px 0 0 rgba(255,255,255, 0.166) , 914px 1153px 0 0 rgba(255,255,255, 0.085) , 600px 1058px 0 0 rgba(255,255,255, 0.821) , 804px 505px 0 0 rgba(255,255,255, 0.608) , 1506px 584px 0 0 rgba(255,255,255, 0.618) , 587px 1290px 0 0 rgba(255,255,255, 0.071) , 258px 600px 0 0 rgba(255,255,255, 0.243) , 328px 395px 0 0 rgba(255,255,255, 0.065) , 846px 783px 0 0 rgba(255,255,255, 0.995) , 1138px 1294px 0 0 rgba(255,255,255, 0.703) , 1668px 633px 0 0 rgba(255,255,255, 0.27) , 337px 103px 0 0 rgba(255,255,255, 0.202) , 132px 986px 0 0 rgba(255,255,255, 0.726) , 414px 757px 0 0 rgba(255,255,255, 0.752) , 8px 1311px 0 0 rgba(255,255,255, 0.307) , 1791px 910px 0 0 rgba(255,255,255, 0.346) , 844px 216px 0 0 rgba(255,255,255, 0.156) , 1547px 1723px 0 0 rgba(255,255,255, 0.73) , 1187px 398px 0 0 rgba(255,255,255, 0.698) , 1550px 1520px 0 0 rgba(255,255,255, 0.462) , 1346px 655px 0 0 rgba(255,255,255, 0.58) , 668px 770px 0 0 rgba(255,255,255, 0.422) , 1774px 1435px 0 0 rgba(255,255,255, 0.089) , 693px 1061px 0 0 rgba(255,255,255, 0.893) , 132px 1689px 0 0 rgba(255,255,255, 0.937) , 894px 1561px 0 0 rgba(255,255,255, 0.88) , 906px 1706px 0 0 rgba(255,255,255, 0.567) , 1140px 297px 0 0 rgba(255,255,255, 0.358) , 13px 1288px 0 0 rgba(255,255,255, 0.464) , 1744px 423px 0 0 rgba(255,255,255, 0.845) , 119px 1548px 0 0 rgba(255,255,255, 0.769) , 1249px 1321px 0 0 rgba(255,255,255, 0.29) , 123px 795px 0 0 rgba(255,255,255, 0.597) , 390px 1542px 0 0 rgba(255,255,255, 0.47) , 825px 667px 0 0 rgba(255,255,255, 0.049) , 1071px 875px 0 0 rgba(255,255,255, 0.06) , 1428px 1786px 0 0 rgba(255,255,255, 0.222) , 993px 696px 0 0 rgba(255,255,255, 0.399) , 1585px 247px 0 0 rgba(255,255,255, 0.094) , 1340px 1312px 0 0 rgba(255,255,255, 0.603) , 1640px 725px 0 0 rgba(255,255,255, 0.026) , 1161px 1397px 0 0 rgba(255,255,255, 0.222) , 966px 1132px 0 0 rgba(255,255,255, 0.69) , 1782px 1275px 0 0 rgba(255,255,255, 0.606) , 1117px 1533px 0 0 rgba(255,255,255, 0.248) , 1027px 959px 0 0 rgba(255,255,255, 0.46) , 459px 839px 0 0 rgba(255,255,255, 0.98) , 1192px 265px 0 0 rgba(255,255,255, 0.523) , 175px 501px 0 0 rgba(255,255,255, 0.371) , 626px 19px 0 0 rgba(255,255,255, 0.246) , 46px 1173px 0 0 rgba(255,255,255, 0.124) , 573px 925px 0 0 rgba(255,255,255, 0.621) , 1px 283px 0 0 rgba(255,255,255, 0.943) , 778px 1213px 0 0 rgba(255,255,255, 0.128) , 435px 593px 0 0 rgba(255,255,255, 0.378) , 32px 394px 0 0 rgba(255,255,255, 0.451) , 1019px 1055px 0 0 rgba(255,255,255, 0.685) , 1423px 1233px 0 0 rgba(255,255,255, 0.354) , 494px 841px 0 0 rgba(255,255,255, 0.322) , 667px 194px 0 0 rgba(255,255,255, 0.655) , 1671px 195px 0 0 rgba(255,255,255, 0.502) , 403px 1710px 0 0 rgba(255,255,255, 0.623) , 665px 1597px 0 0 rgba(255,255,255, 0.839) , 61px 1742px 0 0 rgba(255,255,255, 0.566) , 1490px 1654px 0 0 rgba(255,255,255, 0.646) , 1361px 1604px 0 0 rgba(255,255,255, 0.101) , 1191px 1023px 0 0 rgba(255,255,255, 0.881) , 550px 378px 0 0 rgba(255,255,255, 0.573) , 1332px 1234px 0 0 rgba(255,255,255, 0.922) , 760px 1205px 0 0 rgba(255,255,255, 0.992) , 1506px 1328px 0 0 rgba(255,255,255, 0.723) , 1126px 813px 0 0 rgba(255,255,255, 0.549) , 67px 240px 0 0 rgba(255,255,255, 0.901) , 125px 1301px 0 0 rgba(255,255,255, 0.464) , 643px 391px 0 0 rgba(255,255,255, 0.589) , 1114px 1756px 0 0 rgba(255,255,255, 0.321) , 1602px 699px 0 0 rgba(255,255,255, 0.274) , 510px 393px 0 0 rgba(255,255,255, 0.185) , 171px 1217px 0 0 rgba(255,255,255, 0.932) , 1202px 1362px 0 0 rgba(255,255,255, 0.726) , 1160px 1324px 0 0 rgba(255,255,255, 0.867) , 121px 319px 0 0 rgba(255,255,255, 0.992) , 1474px 835px 0 0 rgba(255,255,255, 0.89) , 357px 1213px 0 0 rgba(255,255,255, 0.91) , 783px 976px 0 0 rgba(255,255,255, 0.941) , 750px 1599px 0 0 rgba(255,255,255, 0.515) , 323px 450px 0 0 rgba(255,255,255, 0.966) , 1078px 282px 0 0 rgba(255,255,255, 0.947) , 1164px 46px 0 0 rgba(255,255,255, 0.296) , 1792px 705px 0 0 rgba(255,255,255, 0.485) , 880px 1287px 0 0 rgba(255,255,255, 0.894) , 60px 1402px 0 0 rgba(255,255,255, 0.816) , 752px 894px 0 0 rgba(255,255,255, 0.803) , 285px 1535px 0 0 rgba(255,255,255, 0.93) , 1528px 401px 0 0 rgba(255,255,255, 0.727) , 651px 1767px 0 0 rgba(255,255,255, 0.146) , 1498px 1190px 0 0 rgba(255,255,255, 0.042) , 394px 1786px 0 0 rgba(255,255,255, 0.159) , 1318px 9px 0 0 rgba(255,255,255, 0.575) , 1699px 1675px 0 0 rgba(255,255,255, 0.511) , 82px 986px 0 0 rgba(255,255,255, 0.906) , 940px 970px 0 0 rgba(255,255,255, 0.562) , 1624px 259px 0 0 rgba(255,255,255, 0.537) , 1782px 222px 0 0 rgba(255,255,255, 0.259) , 1572px 1725px 0 0 rgba(255,255,255, 0.716) , 1080px 1557px 0 0 rgba(255,255,255, 0.245) , 1727px 648px 0 0 rgba(255,255,255, 0.471) , 899px 231px 0 0 rgba(255,255,255, 0.445) , 1061px 1074px 0 0 rgba(255,255,255, 0.079) , 556px 478px 0 0 rgba(255,255,255, 0.524) , 343px 359px 0 0 rgba(255,255,255, 0.162) , 711px 1254px 0 0 rgba(255,255,255, 0.323) , 1335px 242px 0 0 rgba(255,255,255, 0.936) , 933px 39px 0 0 rgba(255,255,255, 0.784) , 1629px 908px 0 0 rgba(255,255,255, 0.289) , 1800px 229px 0 0 rgba(255,255,255, 0.399) , 1589px 926px 0 0 rgba(255,255,255, 0.709) , 976px 694px 0 0 rgba(255,255,255, 0.855) , 1163px 1240px 0 0 rgba(255,255,255, 0.754) , 1662px 1784px 0 0 rgba(255,255,255, 0.088) , 656px 1388px 0 0 rgba(255,255,255, 0.688) , 1190px 1100px 0 0 rgba(255,255,255, 0.769) , 33px 392px 0 0 rgba(255,255,255, 0.301) , 56px 1405px 0 0 rgba(255,255,255, 0.969) , 1491px 118px 0 0 rgba(255,255,255, 0.991) , 1216px 997px 0 0 rgba(255,255,255, 0.727) , 1617px 712px 0 0 rgba(255,255,255, 0.45) , 163px 553px 0 0 rgba(255,255,255, 0.977) , 103px 140px 0 0 rgba(255,255,255, 0.916) , 1099px 1404px 0 0 rgba(255,255,255, 0.167) , 1423px 587px 0 0 rgba(255,255,255, 0.792) , 1797px 309px 0 0 rgba(255,255,255, 0.526) , 381px 141px 0 0 rgba(255,255,255, 0.005) , 1214px 802px 0 0 rgba(255,255,255, 0.887) , 211px 829px 0 0 rgba(255,255,255, 0.72) , 1103px 1507px 0 0 rgba(255,255,255, 0.642) , 244px 1231px 0 0 rgba(255,255,255, 0.184) , 118px 1747px 0 0 rgba(255,255,255, 0.475) , 183px 1293px 0 0 rgba(255,255,255, 0.148) , 911px 1362px 0 0 rgba(255,255,255, 0.073) , 817px 457px 0 0 rgba(255,255,255, 0.459) , 756px 18px 0 0 rgba(255,255,255, 0.544) , 481px 1118px 0 0 rgba(255,255,255, 0.878) , 380px 138px 0 0 rgba(255,255,255, 0.132) , 320px 646px 0 0 rgba(255,255,255, 0.04) , 1724px 1716px 0 0 rgba(255,255,255, 0.381) , 978px 1269px 0 0 rgba(255,255,255, 0.431) , 1530px 255px 0 0 rgba(255,255,255, 0.31) , 664px 204px 0 0 rgba(255,255,255, 0.913) , 474px 703px 0 0 rgba(255,255,255, 0.832) , 1722px 1204px 0 0 rgba(255,255,255, 0.356) , 1453px 821px 0 0 rgba(255,255,255, 0.195) , 730px 1468px 0 0 rgba(255,255,255, 0.696) , 928px 1610px 0 0 rgba(255,255,255, 0.894) , 1036px 304px 0 0 rgba(255,255,255, 0.696) , 1590px 172px 0 0 rgba(255,255,255, 0.729) , 249px 1590px 0 0 rgba(255,255,255, 0.277) , 357px 81px 0 0 rgba(255,255,255, 0.526) , 726px 1261px 0 0 rgba(255,255,255, 0.149) , 643px 946px 0 0 rgba(255,255,255, 0.005) , 1263px 995px 0 0 rgba(255,255,255, 0.124) , 1564px 1107px 0 0 rgba(255,255,255, 0.789) , 388px 83px 0 0 rgba(255,255,255, 0.498) , 715px 681px 0 0 rgba(255,255,255, 0.655) , 1618px 1624px 0 0 rgba(255,255,255, 0.63) , 1423px 1576px 0 0 rgba(255,255,255, 0.52) , 564px 1786px 0 0 rgba(255,255,255, 0.482) , 1066px 735px 0 0 rgba(255,255,255, 0.276) , 714px 1179px 0 0 rgba(255,255,255, 0.395) , 967px 1006px 0 0 rgba(255,255,255, 0.923) , 1136px 1790px 0 0 rgba(255,255,255, 0.801) , 215px 1690px 0 0 rgba(255,255,255, 0.957) , 1500px 1338px 0 0 rgba(255,255,255, 0.541) , 1679px 1065px 0 0 rgba(255,255,255, 0.925) , 426px 1489px 0 0 rgba(255,255,255, 0.193) , 1273px 853px 0 0 rgba(255,255,255, 0.317) , 665px 1189px 0 0 rgba(255,255,255, 0.512) , 520px 552px 0 0 rgba(255,255,255, 0.925) , 253px 438px 0 0 rgba(255,255,255, 0.588) , 369px 1354px 0 0 rgba(255,255,255, 0.889) , 749px 205px 0 0 rgba(255,255,255, 0.243) , 820px 145px 0 0 rgba(255,255,255, 0.207) , 1739px 228px 0 0 rgba(255,255,255, 0.267) , 392px 495px 0 0 rgba(255,255,255, 0.504) , 721px 1044px 0 0 rgba(255,255,255, 0.823) , 833px 912px 0 0 rgba(255,255,255, 0.222) , 865px 1499px 0 0 rgba(255,255,255, 0.003) , 313px 756px 0 0 rgba(255,255,255, 0.727) , 439px 1187px 0 0 rgba(255,255,255, 0.572) , 6px 1238px 0 0 rgba(255,255,255, 0.676) , 1567px 11px 0 0 rgba(255,255,255, 0.701) , 1216px 757px 0 0 rgba(255,255,255, 0.87) , 916px 588px 0 0 rgba(255,255,255, 0.565) , 831px 215px 0 0 rgba(255,255,255, 0.597) , 1289px 697px 0 0 rgba(255,255,255, 0.964) , 307px 34px 0 0 rgba(255,255,255, 0.462) , 3px 1685px 0 0 rgba(255,255,255, 0.464) , 1115px 1421px 0 0 rgba(255,255,255, 0.303) , 1451px 473px 0 0 rgba(255,255,255, 0.142) , 1374px 1205px 0 0 rgba(255,255,255, 0.086) , 1564px 317px 0 0 rgba(255,255,255, 0.773) , 304px 1127px 0 0 rgba(255,255,255, 0.653) , 446px 214px 0 0 rgba(255,255,255, 0.135) , 1541px 459px 0 0 rgba(255,255,255, 0.725) , 1387px 880px 0 0 rgba(255,255,255, 0.157) , 1172px 224px 0 0 rgba(255,255,255, 0.088) , 1420px 637px 0 0 rgba(255,255,255, 0.916) , 1385px 932px 0 0 rgba(255,255,255, 0.225) , 174px 1472px 0 0 rgba(255,255,255, 0.649) , 252px 750px 0 0 rgba(255,255,255, 0.277) , 825px 1042px 0 0 rgba(255,255,255, 0.707) , 840px 703px 0 0 rgba(255,255,255, 0.948) , 1478px 1800px 0 0 rgba(255,255,255, 0.151) , 95px 1303px 0 0 rgba(255,255,255, 0.332) , 1198px 740px 0 0 rgba(255,255,255, 0.443) , 141px 312px 0 0 rgba(255,255,255, 0.04) , 291px 729px 0 0 rgba(255,255,255, 0.284) , 1209px 1506px 0 0 rgba(255,255,255, 0.741) , 1188px 307px 0 0 rgba(255,255,255, 0.141) , 958px 41px 0 0 rgba(255,255,255, 0.858) , 1311px 1484px 0 0 rgba(255,255,255, 0.097) , 846px 1153px 0 0 rgba(255,255,255, 0.862) , 1238px 1376px 0 0 rgba(255,255,255, 0.071) , 1499px 342px 0 0 rgba(255,255,255, 0.719) , 640px 833px 0 0 rgba(255,255,255, 0.966) , 712px 545px 0 0 rgba(255,255,255, 0.194) , 1655px 1542px 0 0 rgba(255,255,255, 0.82) , 616px 353px 0 0 rgba(255,255,255, 0.871) , 1591px 1631px 0 0 rgba(255,255,255, 0.61) , 1664px 591px 0 0 rgba(255,255,255, 0.35) , 934px 454px 0 0 rgba(255,255,255, 0.58) , 1175px 477px 0 0 rgba(255,255,255, 0.966) , 299px 914px 0 0 rgba(255,255,255, 0.839) , 534px 243px 0 0 rgba(255,255,255, 0.194) , 773px 1135px 0 0 rgba(255,255,255, 0.42) , 1696px 1472px 0 0 rgba(255,255,255, 0.552) , 125px 523px 0 0 rgba(255,255,255, 0.591) , 1195px 382px 0 0 rgba(255,255,255, 0.904) , 1609px 1374px 0 0 rgba(255,255,255, 0.579) , 843px 82px 0 0 rgba(255,255,255, 0.072) , 1604px 451px 0 0 rgba(255,255,255, 0.545) , 1322px 190px 0 0 rgba(255,255,255, 0.034) , 528px 228px 0 0 rgba(255,255,255, 0.146) , 1470px 1169px 0 0 rgba(255,255,255, 0.912) , 502px 1350px 0 0 rgba(255,255,255, 0.594) , 1031px 298px 0 0 rgba(255,255,255, 0.368) , 1100px 1427px 0 0 rgba(255,255,255, 0.79) , 979px 1105px 0 0 rgba(255,255,255, 0.973) , 643px 1184px 0 0 rgba(255,255,255, 0.813) , 1636px 1701px 0 0 rgba(255,255,255, 0.013) , 1004px 245px 0 0 rgba(255,255,255, 0.412) , 680px 740px 0 0 rgba(255,255,255, 0.967) , 1599px 562px 0 0 rgba(255,255,255, 0.66) , 256px 1617px 0 0 rgba(255,255,255, 0.463) , 314px 1092px 0 0 rgba(255,255,255, 0.734) , 870px 900px 0 0 rgba(255,255,255, 0.512) , 530px 60px 0 0 rgba(255,255,255, 0.198) , 1786px 896px 0 0 rgba(255,255,255, 0.392) , 636px 212px 0 0 rgba(255,255,255, 0.997) , 672px 540px 0 0 rgba(255,255,255, 0.632) , 1118px 1649px 0 0 rgba(255,255,255, 0.377) , 433px 647px 0 0 rgba(255,255,255, 0.902) , 1200px 1737px 0 0 rgba(255,255,255, 0.262) , 1258px 143px 0 0 rgba(255,255,255, 0.729) , 1603px 1364px 0 0 rgba(255,255,255, 0.192) , 66px 1756px 0 0 rgba(255,255,255, 0.681) , 946px 263px 0 0 rgba(255,255,255, 0.105) , 1216px 1082px 0 0 rgba(255,255,255, 0.287) , 6px 1143px 0 0 rgba(255,255,255, 0.017) , 1631px 126px 0 0 rgba(255,255,255, 0.449) , 357px 1565px 0 0 rgba(255,255,255, 0.163) , 1752px 261px 0 0 rgba(255,255,255, 0.423) , 1247px 1631px 0 0 rgba(255,255,255, 0.312) , 320px 671px 0 0 rgba(255,255,255, 0.695) , 1375px 596px 0 0 rgba(255,255,255, 0.856) , 1456px 1340px 0 0 rgba(255,255,255, 0.564) , 447px 1044px 0 0 rgba(255,255,255, 0.623) , 1732px 447px 0 0 rgba(255,255,255, 0.216) , 174px 1509px 0 0 rgba(255,255,255, 0.398) , 16px 861px 0 0 rgba(255,255,255, 0.904) , 878px 1296px 0 0 rgba(255,255,255, 0.205) , 1725px 1483px 0 0 rgba(255,255,255, 0.704) , 255px 48px 0 0 rgba(255,255,255, 0.7) , 610px 1669px 0 0 rgba(255,255,255, 0.865) , 1044px 1251px 0 0 rgba(255,255,255, 0.98) , 884px 862px 0 0 rgba(255,255,255, 0.198) , 986px 545px 0 0 rgba(255,255,255, 0.379) , 1620px 217px 0 0 rgba(255,255,255, 0.159) , 383px 1763px 0 0 rgba(255,255,255, 0.518) , 595px 974px 0 0 rgba(255,255,255, 0.347) , 359px 14px 0 0 rgba(255,255,255, 0.863) , 95px 1385px 0 0 rgba(255,255,255, 0.011) , 411px 1030px 0 0 rgba(255,255,255, 0.038) , 345px 789px 0 0 rgba(255,255,255, 0.771) , 421px 460px 0 0 rgba(255,255,255, 0.133) , 972px 1160px 0 0 rgba(255,255,255, 0.342) , 597px 1061px 0 0 rgba(255,255,255, 0.781) , 1017px 1092px 0 0 rgba(255,255,255, 0.437); }
-        .warning { background: <?= $lightColor(); ?>; display: flex; align-content: center; padding: 10px; text-align: left; justify-content: center; }
-        .warning svg { height: 48px; width: 48px; margin-right: 10px; }
-        .container svg.wave { position: absolute; bottom: -2px; left: 0; z-index: 1; }
-        .container .logo { margin-bottom: 1em; }
-        .container .logo svg { fill: hsl(<?= $hue; ?>, 20%, 26%); }
-        .welcome { padding-top: 4em; margin-bottom: 3em; }
-        .welcome small { display: block; font-size: 85%; }
-        .status { padding-bottom: 2em; }
-        .status code, .status .status-ready { display: none; }
-        .version { font-size: 34px; }
-        .check { background: <?= $darkColor(); ?>; border-radius: 20px; width: 50px; display: flex; align-items: center; justify-content: center; height: 37px; margin: 6px 8px 6px 6px; }
-        .check svg { fill: <?= $lightColor(); ?>; }
-        .status-ready { margin: 28px 0 0; }
-        .resources { margin: 0 auto; max-width: 1366px; padding: 2.5em 0 3.5em; }
-        .resources .row { margin-left: 30px; margin-right: 30px; display: flex; justify-content: space-evenly; }
-        .resource { padding: 0 10px; position: relative; }
-        .resource svg { height: 48px; width: 48px; fill: <?= $darkColor(); ?>; margin-bottom: 5px; }
-        .resource h2 { font-size: 18px; font-weight: normal; margin-bottom: 5px; }
-        .resource p { margin-top: 5px; }
-        .resource a { display: block; font-size: 14px; }
-
-        @media (min-width: 768px) {
-            @-webkit-keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } }
-            @keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } }
-            .sf-toolbar { opacity: 0; -webkit-animation: fade-in 1s .2s forwards; animation: fade-in 1s .2s forwards; z-index: 99999; }
-
-            body { font-size: 20px; }
-            .warning { text-align: center; }
-            .warning svg { height: 32px; width: 32px; }
-            .resources .row { margin-left: 50px; margin-right: 50px; }
-            .resource { padding: 0 30px; }
-
-            .status { padding-bottom: 4em; }
-            .status code { display: inline-flex; }
-            .status .status-ready { display: block; }
-
-            .resource svg { height: 64px; width: 64px; }
-            .resource h2 { font-size: 22px; }
-            .resource a { font-size: 16px; margin-top: 0; }
-        }
-    </style>
-</head>
-<body>
-<div class="wrapper">
-    <div class="warning">
-        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" width="32"><path fill="currentColor" d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z" class=""></path></svg>
-        You're seeing this page because you haven't configured any homepage URL and <a href="https://symfony.com/doc/<?= $docVersion; ?>/debug-mode" style="padding: 0 7px">debug mode</a> is enabled.
-    </div>
-
-    <div class="container">
-        <div class="welcome">
-            <div class="logo">
-                <svg xmlns="http://www.w3.org/2000/svg" width="112.165" height="112.166"><path d="M112.165 56.079c0 30.976-25.109 56.087-56.084 56.087C25.108 112.166 0 87.055 0 56.079 0 25.108 25.107 0 56.081 0c30.975 0 56.084 25.108 56.084 56.079z" style="fill: <?= $lightColor(); ?>;"/><path d="M80.603 20.75c-5.697.195-10.67 3.34-14.373 7.68-4.1 4.765-6.824 10.411-8.791 16.18-3.514-2.882-6.223-6.611-11.864-8.233-4.359-1.253-8.936-.737-13.146 2.399-1.992 1.489-3.367 3.738-4.02 5.859-1.692 5.498 1.778 10.396 3.354 12.151l3.447 3.691c.709.725 2.422 2.613 1.584 5.319-.9 2.947-4.451 4.85-8.092 3.731-1.627-.499-3.963-1.71-3.439-3.413.215-.699.715-1.225.984-1.821.244-.521.363-.907.438-1.14.665-2.169-.245-4.994-2.57-5.713-2.171-.666-4.391-.138-5.252 2.655-.977 3.174.543 8.935 8.681 11.441 9.535 2.935 17.597-2.259 18.742-9.026.721-4.239-1.195-7.392-4.701-11.441l-2.859-3.163c-1.73-1.729-2.324-4.677-.533-6.942 1.512-1.912 3.664-2.726 7.191-1.768 5.15 1.396 7.443 4.969 11.271 7.851-1.578 5.187-2.613 10.392-3.547 15.059l-.574 3.481c-2.736 14.352-4.826 22.235-10.256 26.76-1.094.779-2.658 1.943-5.014 2.027-1.238.037-1.637-.814-1.654-1.186-.027-.865.703-1.264 1.188-1.652.727-.396 1.824-1.053 1.748-3.156-.078-2.484-2.137-4.639-5.111-4.541-2.229.075-5.625 2.171-5.497 6.011.131 3.967 3.827 6.938 9.401 6.75 2.979-.102 9.633-1.312 16.188-9.105 7.631-8.935 9.766-19.175 11.372-26.671l1.793-9.897c.992.119 2.059.2 3.217.228 9.504.201 14.256-4.72 14.328-8.302.049-2.167-1.42-4.302-3.479-4.251-1.471.041-3.32 1.022-3.762 3.057-.436 1.995 3.023 3.798.32 5.553-1.92 1.242-5.361 2.116-10.209 1.407l.881-4.872c1.799-9.238 4.018-20.6 12.436-20.878.615-.029 2.857.026 2.91 1.512.014.493-.109.623-.689 1.757-.592.884-.814 1.64-.785 2.504.08 2.356 1.873 3.908 4.471 3.818 3.473-.116 4.469-3.496 4.412-5.233-.146-4.085-4.449-6.665-10.14-6.477z"/></svg>
-            </div>
-            <h1><small>Welcome to</small> Symfony <span class="version"><?= $version; ?></span></h1>
-        </div>
-
-        <div class="status">
-            <code>
-                <span class="check">
-                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>
-                </span>
-                <span><?= $projectDir; ?></span>
-            </code>
-            <p class="status-ready">Your application is now ready and you can start working on it.</p>
-        </div>
-
-        <svg style="pointer-events: none" class="wave" width="100%" height="50px" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1920 75"><defs><style>.a{fill:none}.b{clip-path:url(#a)}.c,.d {fill: <?= $lightColor(); ?>}.d{opacity:0.5;isolation:isolate;}</style><clipPath id="a"><rect class="a" width="1920" height="75"></rect></clipPath></defs><g class="b"><path class="c" d="M1963,327H-105V65A2647.49,2647.49,0,0,1,431,19c217.7,3.5,239.6,30.8,470,36,297.3,6.7,367.5-36.2,642-28a2511.41,2511.41,0,0,1,420,48"></path></g><g class="b"><path class="d" d="M-127,404H1963V44c-140.1-28-343.3-46.7-566,22-75.5,23.3-118.5,45.9-162,64-48.6,20.2-404.7,128-784,0C355.2,97.7,341.6,78.3,235,50,86.6,10.6-41.8,6.9-127,10"></path></g><g class="b"><path class="d" d="M1979,462-155,446V106C251.8,20.2,576.6,15.9,805,30c167.4,10.3,322.3,32.9,680,56,207,13.4,378,20.3,494,24"></path></g><g class="b"><path class="d" d="M1998,484H-243V100c445.8,26.8,794.2-4.1,1035-39,141-20.4,231.1-40.1,378-45,349.6-11.6,636.7,73.8,828,150"></path></g></svg>
-    </div>
-
-    <div class="resources">
-        <div class="row">
-            <div class="resource">
-                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 11.55C9.64 9.35 6.48 8 3 8v11c3.48 0 6.64 1.35 9 3.55 2.36-2.19 5.52-3.55 9-3.55V8c-3.48 0-6.64 1.35-9 3.55zM12 8c1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3 1.34 3 3 3z"/></svg>
-                <h2>Documentation</h2>
-                <a href="https://symfony.com/doc/<?= $docVersion; ?>/index.html">
-                    Guides, components, references
-                </a>
-            </div>
-            <div class="resource">
-                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"/></svg>
-                <h2>Tutorials</h2>
-                <a href="https://symfony.com/doc/<?= $docVersion; ?>/page_creation.html">
-                    Create your first page
-                </a>
-            </div>
-            <div class="resource">
-                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/></svg>
-                <h2>Community</h2>
-                <a href="https://symfony.com/community">
-                    Connect, get help, or contribute
-                </a>
-            </div>
-        </div>
-    </div>
-</div>
-</body>
-</html>
diff --git a/vendor/symfony/http-kernel/TerminableInterface.php b/vendor/symfony/http-kernel/TerminableInterface.php
deleted file mode 100644
index 8aa331979340c7957bb700e23b669366757edc35..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/TerminableInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Terminable extends the Kernel request/response cycle with dispatching a post
- * response event after sending the response and before shutting down the kernel.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- * @author Pierre Minnieur <pierre.minnieur@sensiolabs.de>
- */
-interface TerminableInterface
-{
-    /**
-     * Terminates a request/response cycle.
-     *
-     * Should be called after sending the response and before shutting down the kernel.
-     */
-    public function terminate(Request $request, Response $response);
-}
diff --git a/vendor/symfony/http-kernel/UriSigner.php b/vendor/symfony/http-kernel/UriSigner.php
deleted file mode 100644
index a11a05f848e56bc220df5390011ac9e98575af03..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/UriSigner.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-/**
- * Signs URIs.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class UriSigner
-{
-    private $secret;
-    private $parameter;
-
-    /**
-     * @param string $secret    A secret
-     * @param string $parameter Query string parameter to use
-     */
-    public function __construct(string $secret, string $parameter = '_hash')
-    {
-        $this->secret = $secret;
-        $this->parameter = $parameter;
-    }
-
-    /**
-     * Signs a URI.
-     *
-     * The given URI is signed by adding the query string parameter
-     * which value depends on the URI and the secret.
-     *
-     * @param string $uri A URI to sign
-     *
-     * @return string The signed URI
-     */
-    public function sign($uri)
-    {
-        $url = parse_url($uri);
-        if (isset($url['query'])) {
-            parse_str($url['query'], $params);
-        } else {
-            $params = [];
-        }
-
-        $uri = $this->buildUrl($url, $params);
-        $params[$this->parameter] = $this->computeHash($uri);
-
-        return $this->buildUrl($url, $params);
-    }
-
-    /**
-     * Checks that a URI contains the correct hash.
-     *
-     * @param string $uri A signed URI
-     *
-     * @return bool True if the URI is signed correctly, false otherwise
-     */
-    public function check($uri)
-    {
-        $url = parse_url($uri);
-        if (isset($url['query'])) {
-            parse_str($url['query'], $params);
-        } else {
-            $params = [];
-        }
-
-        if (empty($params[$this->parameter])) {
-            return false;
-        }
-
-        $hash = $params[$this->parameter];
-        unset($params[$this->parameter]);
-
-        return hash_equals($this->computeHash($this->buildUrl($url, $params)), $hash);
-    }
-
-    private function computeHash(string $uri): string
-    {
-        return base64_encode(hash_hmac('sha256', $uri, $this->secret, true));
-    }
-
-    private function buildUrl(array $url, array $params = []): string
-    {
-        ksort($params, \SORT_STRING);
-        $url['query'] = http_build_query($params, '', '&');
-
-        $scheme = isset($url['scheme']) ? $url['scheme'].'://' : '';
-        $host = isset($url['host']) ? $url['host'] : '';
-        $port = isset($url['port']) ? ':'.$url['port'] : '';
-        $user = isset($url['user']) ? $url['user'] : '';
-        $pass = isset($url['pass']) ? ':'.$url['pass'] : '';
-        $pass = ($user || $pass) ? "$pass@" : '';
-        $path = isset($url['path']) ? $url['path'] : '';
-        $query = isset($url['query']) && $url['query'] ? '?'.$url['query'] : '';
-        $fragment = isset($url['fragment']) ? '#'.$url['fragment'] : '';
-
-        return $scheme.$user.$pass.$host.$port.$path.$query.$fragment;
-    }
-}
diff --git a/vendor/symfony/http-kernel/composer.json b/vendor/symfony/http-kernel/composer.json
deleted file mode 100644
index 59dd77b63721e146cf594a6b6feceedaa316a8cf..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/composer.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-    "name": "symfony/http-kernel",
-    "type": "library",
-    "description": "Symfony HttpKernel Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1.3",
-        "symfony/error-handler": "^4.4",
-        "symfony/event-dispatcher": "^4.4",
-        "symfony/http-client-contracts": "^1.1|^2",
-        "symfony/http-foundation": "^4.4|^5.0",
-        "symfony/polyfill-ctype": "^1.8",
-        "symfony/polyfill-php73": "^1.9",
-        "symfony/polyfill-php80": "^1.15",
-        "psr/log": "~1.0"
-    },
-    "require-dev": {
-        "symfony/browser-kit": "^4.3|^5.0",
-        "symfony/config": "^3.4|^4.0|^5.0",
-        "symfony/console": "^3.4|^4.0",
-        "symfony/css-selector": "^3.4|^4.0|^5.0",
-        "symfony/dependency-injection": "^4.3|^5.0",
-        "symfony/dom-crawler": "^3.4|^4.0|^5.0",
-        "symfony/expression-language": "^3.4|^4.0|^5.0",
-        "symfony/finder": "^3.4|^4.0|^5.0",
-        "symfony/process": "^3.4|^4.0|^5.0",
-        "symfony/routing": "^3.4|^4.0|^5.0",
-        "symfony/stopwatch": "^3.4|^4.0|^5.0",
-        "symfony/templating": "^3.4|^4.0|^5.0",
-        "symfony/translation": "^4.2|^5.0",
-        "symfony/translation-contracts": "^1.1|^2",
-        "psr/cache": "~1.0",
-        "twig/twig": "^1.34|^2.4|^3.0"
-    },
-    "provide": {
-        "psr/log-implementation": "1.0"
-    },
-    "conflict": {
-        "symfony/browser-kit": "<4.3",
-        "symfony/config": "<3.4",
-        "symfony/console": ">=5",
-        "symfony/dependency-injection": "<4.3",
-        "symfony/translation": "<4.2",
-        "twig/twig": "<1.34|<2.4,>=2"
-    },
-    "suggest": {
-        "symfony/browser-kit": "",
-        "symfony/config": "",
-        "symfony/console": "",
-        "symfony/dependency-injection": ""
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\HttpKernel\\": "" },
-        "exclude-from-classmap": [
-            "/Tests/"
-        ]
-    },
-    "minimum-stability": "dev"
-}
diff --git a/vendor/symfony/mime/Address.php b/vendor/symfony/mime/Address.php
deleted file mode 100644
index 9847712b107471d166cb7d769c441943adb817a9..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Address.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-use Egulias\EmailValidator\EmailValidator;
-use Egulias\EmailValidator\Validation\RFCValidation;
-use Symfony\Component\Mime\Encoder\IdnAddressEncoder;
-use Symfony\Component\Mime\Exception\InvalidArgumentException;
-use Symfony\Component\Mime\Exception\LogicException;
-use Symfony\Component\Mime\Exception\RfcComplianceException;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class Address
-{
-    /**
-     * A regex that matches a structure like 'Name <email@address.com>'.
-     * It matches anything between the first < and last > as email address.
-     * This allows to use a single string to construct an Address, which can be convenient to use in
-     * config, and allows to have more readable config.
-     * This does not try to cover all edge cases for address.
-     */
-    private const FROM_STRING_PATTERN = '~(?<displayName>[^<]*)<(?<addrSpec>.*)>[^>]*~';
-
-    private static $validator;
-    private static $encoder;
-
-    private $address;
-    private $name;
-
-    public function __construct(string $address, string $name = '')
-    {
-        if (!class_exists(EmailValidator::class)) {
-            throw new LogicException(sprintf('The "%s" class cannot be used as it needs "%s"; try running "composer require egulias/email-validator".', __CLASS__, EmailValidator::class));
-        }
-
-        if (null === self::$validator) {
-            self::$validator = new EmailValidator();
-        }
-
-        $this->address = trim($address);
-        $this->name = trim(str_replace(["\n", "\r"], '', $name));
-
-        if (!self::$validator->isValid($this->address, new RFCValidation())) {
-            throw new RfcComplianceException(sprintf('Email "%s" does not comply with addr-spec of RFC 2822.', $address));
-        }
-    }
-
-    public function getAddress(): string
-    {
-        return $this->address;
-    }
-
-    public function getName(): string
-    {
-        return $this->name;
-    }
-
-    public function getEncodedAddress(): string
-    {
-        if (null === self::$encoder) {
-            self::$encoder = new IdnAddressEncoder();
-        }
-
-        return self::$encoder->encodeString($this->address);
-    }
-
-    public function toString(): string
-    {
-        return ($n = $this->getName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
-    }
-
-    /**
-     * @param Address|string $address
-     */
-    public static function create($address): self
-    {
-        if ($address instanceof self) {
-            return $address;
-        }
-        if (\is_string($address)) {
-            return self::fromString($address);
-        }
-
-        throw new InvalidArgumentException(sprintf('An address can be an instance of Address or a string ("%s") given).', get_debug_type($address)));
-    }
-
-    /**
-     * @param (Address|string)[] $addresses
-     *
-     * @return Address[]
-     */
-    public static function createArray(array $addresses): array
-    {
-        $addrs = [];
-        foreach ($addresses as $address) {
-            $addrs[] = self::create($address);
-        }
-
-        return $addrs;
-    }
-
-    public static function fromString(string $string): self
-    {
-        if (false === strpos($string, '<')) {
-            return new self($string, '');
-        }
-
-        if (!preg_match(self::FROM_STRING_PATTERN, $string, $matches)) {
-            throw new InvalidArgumentException(sprintf('Could not parse "%s" to a "%s" instance.', $string, static::class));
-        }
-
-        return new self($matches['addrSpec'], trim($matches['displayName'], ' \'"'));
-    }
-}
diff --git a/vendor/symfony/mime/BodyRendererInterface.php b/vendor/symfony/mime/BodyRendererInterface.php
deleted file mode 100644
index d6921726556274a6cbbd596c65cc6ceb447785d1..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/BodyRendererInterface.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface BodyRendererInterface
-{
-    public function render(Message $message): void;
-}
diff --git a/vendor/symfony/mime/CHANGELOG.md b/vendor/symfony/mime/CHANGELOG.md
deleted file mode 100644
index 6148360dd97d91d84eadf0a20f07a76707a2fd52..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/CHANGELOG.md
+++ /dev/null
@@ -1,20 +0,0 @@
-CHANGELOG
-=========
-
-4.4.0
------
-
- * [BC BREAK] Removed `NamedAddress` (`Address` now supports a name)
- * Added PHPUnit constraints
- * Added `AbstractPart::asDebugString()`
- * Added `Address::fromString()`
-
-4.3.3
------
-
- * [BC BREAK] Renamed method `Headers::getAll()` to `Headers::all()`.
-
-4.3.0
------
-
- * Introduced the component as experimental
diff --git a/vendor/symfony/mime/CharacterStream.php b/vendor/symfony/mime/CharacterStream.php
deleted file mode 100644
index 9d0a9c6618b788b92047c68d51e96e8d255fba17..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/CharacterStream.php
+++ /dev/null
@@ -1,218 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Xavier De Cock <xdecock@gmail.com>
- *
- * @internal
- */
-final class CharacterStream
-{
-    /** Pre-computed for optimization */
-    private const UTF8_LENGTH_MAP = [
-        "\x00" => 1, "\x01" => 1, "\x02" => 1, "\x03" => 1, "\x04" => 1, "\x05" => 1, "\x06" => 1, "\x07" => 1,
-        "\x08" => 1, "\x09" => 1, "\x0a" => 1, "\x0b" => 1, "\x0c" => 1, "\x0d" => 1, "\x0e" => 1, "\x0f" => 1,
-        "\x10" => 1, "\x11" => 1, "\x12" => 1, "\x13" => 1, "\x14" => 1, "\x15" => 1, "\x16" => 1, "\x17" => 1,
-        "\x18" => 1, "\x19" => 1, "\x1a" => 1, "\x1b" => 1, "\x1c" => 1, "\x1d" => 1, "\x1e" => 1, "\x1f" => 1,
-        "\x20" => 1, "\x21" => 1, "\x22" => 1, "\x23" => 1, "\x24" => 1, "\x25" => 1, "\x26" => 1, "\x27" => 1,
-        "\x28" => 1, "\x29" => 1, "\x2a" => 1, "\x2b" => 1, "\x2c" => 1, "\x2d" => 1, "\x2e" => 1, "\x2f" => 1,
-        "\x30" => 1, "\x31" => 1, "\x32" => 1, "\x33" => 1, "\x34" => 1, "\x35" => 1, "\x36" => 1, "\x37" => 1,
-        "\x38" => 1, "\x39" => 1, "\x3a" => 1, "\x3b" => 1, "\x3c" => 1, "\x3d" => 1, "\x3e" => 1, "\x3f" => 1,
-        "\x40" => 1, "\x41" => 1, "\x42" => 1, "\x43" => 1, "\x44" => 1, "\x45" => 1, "\x46" => 1, "\x47" => 1,
-        "\x48" => 1, "\x49" => 1, "\x4a" => 1, "\x4b" => 1, "\x4c" => 1, "\x4d" => 1, "\x4e" => 1, "\x4f" => 1,
-        "\x50" => 1, "\x51" => 1, "\x52" => 1, "\x53" => 1, "\x54" => 1, "\x55" => 1, "\x56" => 1, "\x57" => 1,
-        "\x58" => 1, "\x59" => 1, "\x5a" => 1, "\x5b" => 1, "\x5c" => 1, "\x5d" => 1, "\x5e" => 1, "\x5f" => 1,
-        "\x60" => 1, "\x61" => 1, "\x62" => 1, "\x63" => 1, "\x64" => 1, "\x65" => 1, "\x66" => 1, "\x67" => 1,
-        "\x68" => 1, "\x69" => 1, "\x6a" => 1, "\x6b" => 1, "\x6c" => 1, "\x6d" => 1, "\x6e" => 1, "\x6f" => 1,
-        "\x70" => 1, "\x71" => 1, "\x72" => 1, "\x73" => 1, "\x74" => 1, "\x75" => 1, "\x76" => 1, "\x77" => 1,
-        "\x78" => 1, "\x79" => 1, "\x7a" => 1, "\x7b" => 1, "\x7c" => 1, "\x7d" => 1, "\x7e" => 1, "\x7f" => 1,
-        "\x80" => 0, "\x81" => 0, "\x82" => 0, "\x83" => 0, "\x84" => 0, "\x85" => 0, "\x86" => 0, "\x87" => 0,
-        "\x88" => 0, "\x89" => 0, "\x8a" => 0, "\x8b" => 0, "\x8c" => 0, "\x8d" => 0, "\x8e" => 0, "\x8f" => 0,
-        "\x90" => 0, "\x91" => 0, "\x92" => 0, "\x93" => 0, "\x94" => 0, "\x95" => 0, "\x96" => 0, "\x97" => 0,
-        "\x98" => 0, "\x99" => 0, "\x9a" => 0, "\x9b" => 0, "\x9c" => 0, "\x9d" => 0, "\x9e" => 0, "\x9f" => 0,
-        "\xa0" => 0, "\xa1" => 0, "\xa2" => 0, "\xa3" => 0, "\xa4" => 0, "\xa5" => 0, "\xa6" => 0, "\xa7" => 0,
-        "\xa8" => 0, "\xa9" => 0, "\xaa" => 0, "\xab" => 0, "\xac" => 0, "\xad" => 0, "\xae" => 0, "\xaf" => 0,
-        "\xb0" => 0, "\xb1" => 0, "\xb2" => 0, "\xb3" => 0, "\xb4" => 0, "\xb5" => 0, "\xb6" => 0, "\xb7" => 0,
-        "\xb8" => 0, "\xb9" => 0, "\xba" => 0, "\xbb" => 0, "\xbc" => 0, "\xbd" => 0, "\xbe" => 0, "\xbf" => 0,
-        "\xc0" => 2, "\xc1" => 2, "\xc2" => 2, "\xc3" => 2, "\xc4" => 2, "\xc5" => 2, "\xc6" => 2, "\xc7" => 2,
-        "\xc8" => 2, "\xc9" => 2, "\xca" => 2, "\xcb" => 2, "\xcc" => 2, "\xcd" => 2, "\xce" => 2, "\xcf" => 2,
-        "\xd0" => 2, "\xd1" => 2, "\xd2" => 2, "\xd3" => 2, "\xd4" => 2, "\xd5" => 2, "\xd6" => 2, "\xd7" => 2,
-        "\xd8" => 2, "\xd9" => 2, "\xda" => 2, "\xdb" => 2, "\xdc" => 2, "\xdd" => 2, "\xde" => 2, "\xdf" => 2,
-        "\xe0" => 3, "\xe1" => 3, "\xe2" => 3, "\xe3" => 3, "\xe4" => 3, "\xe5" => 3, "\xe6" => 3, "\xe7" => 3,
-        "\xe8" => 3, "\xe9" => 3, "\xea" => 3, "\xeb" => 3, "\xec" => 3, "\xed" => 3, "\xee" => 3, "\xef" => 3,
-        "\xf0" => 4, "\xf1" => 4, "\xf2" => 4, "\xf3" => 4, "\xf4" => 4, "\xf5" => 4, "\xf6" => 4, "\xf7" => 4,
-        "\xf8" => 5, "\xf9" => 5, "\xfa" => 5, "\xfb" => 5, "\xfc" => 6, "\xfd" => 6, "\xfe" => 0, "\xff" => 0,
-    ];
-
-    private $data = '';
-    private $dataSize = 0;
-    private $map = [];
-    private $charCount = 0;
-    private $currentPos = 0;
-    private $fixedWidth = 0;
-
-    /**
-     * @param resource|string $input
-     */
-    public function __construct($input, ?string $charset = 'utf-8')
-    {
-        $charset = strtolower(trim($charset)) ?: 'utf-8';
-        if ('utf-8' === $charset || 'utf8' === $charset) {
-            $this->fixedWidth = 0;
-            $this->map = ['p' => [], 'i' => []];
-        } else {
-            switch ($charset) {
-                // 16 bits
-                case 'ucs2':
-                case 'ucs-2':
-                case 'utf16':
-                case 'utf-16':
-                    $this->fixedWidth = 2;
-                    break;
-
-                // 32 bits
-                case 'ucs4':
-                case 'ucs-4':
-                case 'utf32':
-                case 'utf-32':
-                    $this->fixedWidth = 4;
-                break;
-
-                // 7-8 bit charsets: (us-)?ascii, (iso|iec)-?8859-?[0-9]+, windows-?125[0-9], cp-?[0-9]+, ansi, macintosh,
-                //                   koi-?7, koi-?8-?.+, mik, (cork|t1), v?iscii
-                // and fallback
-                default:
-                    $this->fixedWidth = 1;
-            }
-        }
-        if (\is_resource($input)) {
-            $blocks = 16372;
-            while (false !== $read = fread($input, $blocks)) {
-                $this->write($read);
-            }
-        } else {
-            $this->write($input);
-        }
-    }
-
-    public function read(int $length): ?string
-    {
-        if ($this->currentPos >= $this->charCount) {
-            return null;
-        }
-        $length = ($this->currentPos + $length > $this->charCount) ? $this->charCount - $this->currentPos : $length;
-        if ($this->fixedWidth > 0) {
-            $len = $length * $this->fixedWidth;
-            $ret = substr($this->data, $this->currentPos * $this->fixedWidth, $len);
-            $this->currentPos += $length;
-        } else {
-            $end = $this->currentPos + $length;
-            $end = $end > $this->charCount ? $this->charCount : $end;
-            $ret = '';
-            $start = 0;
-            if ($this->currentPos > 0) {
-                $start = $this->map['p'][$this->currentPos - 1];
-            }
-            $to = $start;
-            for (; $this->currentPos < $end; ++$this->currentPos) {
-                if (isset($this->map['i'][$this->currentPos])) {
-                    $ret .= substr($this->data, $start, $to - $start).'?';
-                    $start = $this->map['p'][$this->currentPos];
-                } else {
-                    $to = $this->map['p'][$this->currentPos];
-                }
-            }
-            $ret .= substr($this->data, $start, $to - $start);
-        }
-
-        return $ret;
-    }
-
-    public function readBytes(int $length): ?array
-    {
-        if (null !== $read = $this->read($length)) {
-            return array_map('ord', str_split($read, 1));
-        }
-
-        return null;
-    }
-
-    public function setPointer(int $charOffset): void
-    {
-        if ($this->charCount < $charOffset) {
-            $charOffset = $this->charCount;
-        }
-        $this->currentPos = $charOffset;
-    }
-
-    public function write(string $chars): void
-    {
-        $ignored = '';
-        $this->data .= $chars;
-        if ($this->fixedWidth > 0) {
-            $strlen = \strlen($chars);
-            $ignoredL = $strlen % $this->fixedWidth;
-            $ignored = $ignoredL ? substr($chars, -$ignoredL) : '';
-            $this->charCount += ($strlen - $ignoredL) / $this->fixedWidth;
-        } else {
-            $this->charCount += $this->getUtf8CharPositions($chars, $this->dataSize, $ignored);
-        }
-        $this->dataSize = \strlen($this->data) - \strlen($ignored);
-    }
-
-    private function getUtf8CharPositions(string $string, int $startOffset, string &$ignoredChars): int
-    {
-        $strlen = \strlen($string);
-        $charPos = \count($this->map['p']);
-        $foundChars = 0;
-        $invalid = false;
-        for ($i = 0; $i < $strlen; ++$i) {
-            $char = $string[$i];
-            $size = self::UTF8_LENGTH_MAP[$char];
-            if (0 == $size) {
-                /* char is invalid, we must wait for a resync */
-                $invalid = true;
-                continue;
-            }
-
-            if ($invalid) {
-                /* We mark the chars as invalid and start a new char */
-                $this->map['p'][$charPos + $foundChars] = $startOffset + $i;
-                $this->map['i'][$charPos + $foundChars] = true;
-                ++$foundChars;
-                $invalid = false;
-            }
-            if (($i + $size) > $strlen) {
-                $ignoredChars = substr($string, $i);
-                break;
-            }
-            for ($j = 1; $j < $size; ++$j) {
-                $char = $string[$i + $j];
-                if ($char > "\x7F" && $char < "\xC0") {
-                    // Valid - continue parsing
-                } else {
-                    /* char is invalid, we must wait for a resync */
-                    $invalid = true;
-                    continue 2;
-                }
-            }
-            /* Ok we got a complete char here */
-            $this->map['p'][$charPos + $foundChars] = $startOffset + $i + $size;
-            $i += $j - 1;
-            ++$foundChars;
-        }
-
-        return $foundChars;
-    }
-}
diff --git a/vendor/symfony/mime/Crypto/SMime.php b/vendor/symfony/mime/Crypto/SMime.php
deleted file mode 100644
index ad88c1987ac96b44864c8d54e024f1af0138e05a..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Crypto/SMime.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Crypto;
-
-use Symfony\Component\Mime\Exception\RuntimeException;
-use Symfony\Component\Mime\Part\SMimePart;
-
-/**
- * @author Sebastiaan Stok <s.stok@rollerscapes.net>
- *
- * @internal
- */
-abstract class SMime
-{
-    protected function normalizeFilePath(string $path): string
-    {
-        if (!file_exists($path)) {
-            throw new RuntimeException(sprintf('File does not exist: "%s".', $path));
-        }
-
-        return 'file://'.str_replace('\\', '/', realpath($path));
-    }
-
-    protected function iteratorToFile(iterable $iterator, $stream): void
-    {
-        foreach ($iterator as $chunk) {
-            fwrite($stream, $chunk);
-        }
-    }
-
-    protected function convertMessageToSMimePart($stream, string $type, string $subtype): SMimePart
-    {
-        rewind($stream);
-
-        $headers = '';
-
-        while (!feof($stream)) {
-            $buffer = fread($stream, 78);
-            $headers .= $buffer;
-
-            // Detect ending of header list
-            if (preg_match('/(\r\n\r\n|\n\n)/', $headers, $match)) {
-                $headersPosEnd = strpos($headers, $headerBodySeparator = $match[0]);
-
-                break;
-            }
-        }
-
-        $headers = $this->getMessageHeaders(trim(substr($headers, 0, $headersPosEnd)));
-
-        fseek($stream, $headersPosEnd + \strlen($headerBodySeparator));
-
-        return new SMimePart($this->getStreamIterator($stream), $type, $subtype, $this->getParametersFromHeader($headers['content-type']));
-    }
-
-    protected function getStreamIterator($stream): iterable
-    {
-        while (!feof($stream)) {
-            yield str_replace("\n", "\r\n", str_replace("\r\n", "\n", fread($stream, 16372)));
-        }
-    }
-
-    private function getMessageHeaders(string $headerData): array
-    {
-        $headers = [];
-        $headerLines = explode("\r\n", str_replace("\n", "\r\n", str_replace("\r\n", "\n", $headerData)));
-        $currentHeaderName = '';
-
-        // Transform header lines into an associative array
-        foreach ($headerLines as $headerLine) {
-            // Empty lines between headers indicate a new mime-entity
-            if ('' === $headerLine) {
-                break;
-            }
-
-            // Handle headers that span multiple lines
-            if (false === strpos($headerLine, ':')) {
-                $headers[$currentHeaderName] .= ' '.trim($headerLine);
-                continue;
-            }
-
-            $header = explode(':', $headerLine, 2);
-            $currentHeaderName = strtolower($header[0]);
-            $headers[$currentHeaderName] = trim($header[1]);
-        }
-
-        return $headers;
-    }
-
-    private function getParametersFromHeader(string $header): array
-    {
-        $params = [];
-
-        preg_match_all('/(?P<name>[a-z-0-9]+)=(?P<value>"[^"]+"|(?:[^\s;]+|$))(?:\s+;)?/i', $header, $matches);
-
-        foreach ($matches['value'] as $pos => $paramValue) {
-            $params[$matches['name'][$pos]] = trim($paramValue, '"');
-        }
-
-        return $params;
-    }
-}
diff --git a/vendor/symfony/mime/Crypto/SMimeEncrypter.php b/vendor/symfony/mime/Crypto/SMimeEncrypter.php
deleted file mode 100644
index 9081860d80fbdd535793d894f883ddfdf6bd1600..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Crypto/SMimeEncrypter.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Crypto;
-
-use Symfony\Component\Mime\Exception\RuntimeException;
-use Symfony\Component\Mime\Message;
-
-/**
- * @author Sebastiaan Stok <s.stok@rollerscapes.net>
- */
-final class SMimeEncrypter extends SMime
-{
-    private $certs;
-    private $cipher;
-
-    /**
-     * @param string|string[] $certificate The path (or array of paths) of the file(s) containing the X.509 certificate(s)
-     * @param int|null        $cipher      A set of algorithms used to encrypt the message. Must be one of these PHP constants: https://www.php.net/manual/en/openssl.ciphers.php
-     */
-    public function __construct($certificate, int $cipher = null)
-    {
-        if (!\extension_loaded('openssl')) {
-            throw new \LogicException('PHP extension "openssl" is required to use SMime.');
-        }
-
-        if (\is_array($certificate)) {
-            $this->certs = array_map([$this, 'normalizeFilePath'], $certificate);
-        } else {
-            $this->certs = $this->normalizeFilePath($certificate);
-        }
-
-        $this->cipher = $cipher ?? \OPENSSL_CIPHER_AES_256_CBC;
-    }
-
-    public function encrypt(Message $message): Message
-    {
-        $bufferFile = tmpfile();
-        $outputFile = tmpfile();
-
-        $this->iteratorToFile($message->toIterable(), $bufferFile);
-
-        if (!@openssl_pkcs7_encrypt(stream_get_meta_data($bufferFile)['uri'], stream_get_meta_data($outputFile)['uri'], $this->certs, [], 0, $this->cipher)) {
-            throw new RuntimeException(sprintf('Failed to encrypt S/Mime message. Error: "%s".', openssl_error_string()));
-        }
-
-        $mimePart = $this->convertMessageToSMimePart($outputFile, 'application', 'pkcs7-mime');
-        $mimePart->getHeaders()
-            ->addTextHeader('Content-Transfer-Encoding', 'base64')
-            ->addParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'smime.p7m'])
-        ;
-
-        return new Message($message->getHeaders(), $mimePart);
-    }
-}
diff --git a/vendor/symfony/mime/Crypto/SMimeSigner.php b/vendor/symfony/mime/Crypto/SMimeSigner.php
deleted file mode 100644
index 5b94a454e83a1d754e6c9adfc08128f8fc1fd837..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Crypto/SMimeSigner.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Crypto;
-
-use Symfony\Component\Mime\Exception\RuntimeException;
-use Symfony\Component\Mime\Message;
-
-/**
- * @author Sebastiaan Stok <s.stok@rollerscapes.net>
- */
-final class SMimeSigner extends SMime
-{
-    private $signCertificate;
-    private $signPrivateKey;
-    private $signOptions;
-    private $extraCerts;
-
-    /**
-     * @param string      $certificate          The path of the file containing the signing certificate (in PEM format)
-     * @param string      $privateKey           The path of the file containing the private key (in PEM format)
-     * @param string|null $privateKeyPassphrase A passphrase of the private key (if any)
-     * @param string|null $extraCerts           The path of the file containing intermediate certificates (in PEM format) needed by the signing certificate
-     * @param int|null    $signOptions          Bitwise operator options for openssl_pkcs7_sign() (@see https://secure.php.net/manual/en/openssl.pkcs7.flags.php)
-     */
-    public function __construct(string $certificate, string $privateKey, string $privateKeyPassphrase = null, string $extraCerts = null, int $signOptions = null)
-    {
-        if (!\extension_loaded('openssl')) {
-            throw new \LogicException('PHP extension "openssl" is required to use SMime.');
-        }
-
-        $this->signCertificate = $this->normalizeFilePath($certificate);
-
-        if (null !== $privateKeyPassphrase) {
-            $this->signPrivateKey = [$this->normalizeFilePath($privateKey), $privateKeyPassphrase];
-        } else {
-            $this->signPrivateKey = $this->normalizeFilePath($privateKey);
-        }
-
-        $this->signOptions = $signOptions ?? \PKCS7_DETACHED;
-        $this->extraCerts = $extraCerts ? realpath($extraCerts) : null;
-    }
-
-    public function sign(Message $message): Message
-    {
-        $bufferFile = tmpfile();
-        $outputFile = tmpfile();
-
-        $this->iteratorToFile($message->getBody()->toIterable(), $bufferFile);
-
-        if (!@openssl_pkcs7_sign(stream_get_meta_data($bufferFile)['uri'], stream_get_meta_data($outputFile)['uri'], $this->signCertificate, $this->signPrivateKey, [], $this->signOptions, $this->extraCerts)) {
-            throw new RuntimeException(sprintf('Failed to sign S/Mime message. Error: "%s".', openssl_error_string()));
-        }
-
-        return new Message($message->getHeaders(), $this->convertMessageToSMimePart($outputFile, 'multipart', 'signed'));
-    }
-}
diff --git a/vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php b/vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php
deleted file mode 100644
index e24beb0da14ec285f19f82262b1e8620d7e25b34..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-
-/**
- * Registers custom mime types guessers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AddMimeTypeGuesserPass implements CompilerPassInterface
-{
-    private $mimeTypesService;
-    private $mimeTypeGuesserTag;
-
-    public function __construct(string $mimeTypesService = 'mime_types', string $mimeTypeGuesserTag = 'mime.mime_type_guesser')
-    {
-        $this->mimeTypesService = $mimeTypesService;
-        $this->mimeTypeGuesserTag = $mimeTypeGuesserTag;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function process(ContainerBuilder $container)
-    {
-        if ($container->has($this->mimeTypesService)) {
-            $definition = $container->findDefinition($this->mimeTypesService);
-            foreach ($container->findTaggedServiceIds($this->mimeTypeGuesserTag, true) as $id => $attributes) {
-                $definition->addMethodCall('registerGuesser', [new Reference($id)]);
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/mime/Email.php b/vendor/symfony/mime/Email.php
deleted file mode 100644
index e5f9f11b36fc4d8a15ffe98dc22e0672e58427cb..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Email.php
+++ /dev/null
@@ -1,581 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-use Symfony\Component\Mime\Exception\LogicException;
-use Symfony\Component\Mime\Part\AbstractPart;
-use Symfony\Component\Mime\Part\DataPart;
-use Symfony\Component\Mime\Part\Multipart\AlternativePart;
-use Symfony\Component\Mime\Part\Multipart\MixedPart;
-use Symfony\Component\Mime\Part\Multipart\RelatedPart;
-use Symfony\Component\Mime\Part\TextPart;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Email extends Message
-{
-    const PRIORITY_HIGHEST = 1;
-    const PRIORITY_HIGH = 2;
-    const PRIORITY_NORMAL = 3;
-    const PRIORITY_LOW = 4;
-    const PRIORITY_LOWEST = 5;
-
-    private const PRIORITY_MAP = [
-        self::PRIORITY_HIGHEST => 'Highest',
-        self::PRIORITY_HIGH => 'High',
-        self::PRIORITY_NORMAL => 'Normal',
-        self::PRIORITY_LOW => 'Low',
-        self::PRIORITY_LOWEST => 'Lowest',
-    ];
-
-    private $text;
-    private $textCharset;
-    private $html;
-    private $htmlCharset;
-    private $attachments = [];
-
-    /**
-     * @return $this
-     */
-    public function subject(string $subject)
-    {
-        return $this->setHeaderBody('Text', 'Subject', $subject);
-    }
-
-    public function getSubject(): ?string
-    {
-        return $this->getHeaders()->getHeaderBody('Subject');
-    }
-
-    /**
-     * @return $this
-     */
-    public function date(\DateTimeInterface $dateTime)
-    {
-        return $this->setHeaderBody('Date', 'Date', $dateTime);
-    }
-
-    public function getDate(): ?\DateTimeImmutable
-    {
-        return $this->getHeaders()->getHeaderBody('Date');
-    }
-
-    /**
-     * @param Address|string $address
-     *
-     * @return $this
-     */
-    public function returnPath($address)
-    {
-        return $this->setHeaderBody('Path', 'Return-Path', Address::create($address));
-    }
-
-    public function getReturnPath(): ?Address
-    {
-        return $this->getHeaders()->getHeaderBody('Return-Path');
-    }
-
-    /**
-     * @param Address|string $address
-     *
-     * @return $this
-     */
-    public function sender($address)
-    {
-        return $this->setHeaderBody('Mailbox', 'Sender', Address::create($address));
-    }
-
-    public function getSender(): ?Address
-    {
-        return $this->getHeaders()->getHeaderBody('Sender');
-    }
-
-    /**
-     * @param Address|string ...$addresses
-     *
-     * @return $this
-     */
-    public function addFrom(...$addresses)
-    {
-        return $this->addListAddressHeaderBody('From', $addresses);
-    }
-
-    /**
-     * @param Address|string ...$addresses
-     *
-     * @return $this
-     */
-    public function from(...$addresses)
-    {
-        return $this->setListAddressHeaderBody('From', $addresses);
-    }
-
-    /**
-     * @return Address[]
-     */
-    public function getFrom(): array
-    {
-        return $this->getHeaders()->getHeaderBody('From') ?: [];
-    }
-
-    /**
-     * @param Address|string ...$addresses
-     *
-     * @return $this
-     */
-    public function addReplyTo(...$addresses)
-    {
-        return $this->addListAddressHeaderBody('Reply-To', $addresses);
-    }
-
-    /**
-     * @param Address|string ...$addresses
-     *
-     * @return $this
-     */
-    public function replyTo(...$addresses)
-    {
-        return $this->setListAddressHeaderBody('Reply-To', $addresses);
-    }
-
-    /**
-     * @return Address[]
-     */
-    public function getReplyTo(): array
-    {
-        return $this->getHeaders()->getHeaderBody('Reply-To') ?: [];
-    }
-
-    /**
-     * @param Address|string ...$addresses
-     *
-     * @return $this
-     */
-    public function addTo(...$addresses)
-    {
-        return $this->addListAddressHeaderBody('To', $addresses);
-    }
-
-    /**
-     * @param Address|string ...$addresses
-     *
-     * @return $this
-     */
-    public function to(...$addresses)
-    {
-        return $this->setListAddressHeaderBody('To', $addresses);
-    }
-
-    /**
-     * @return Address[]
-     */
-    public function getTo(): array
-    {
-        return $this->getHeaders()->getHeaderBody('To') ?: [];
-    }
-
-    /**
-     * @param Address|string ...$addresses
-     *
-     * @return $this
-     */
-    public function addCc(...$addresses)
-    {
-        return $this->addListAddressHeaderBody('Cc', $addresses);
-    }
-
-    /**
-     * @param Address|string ...$addresses
-     *
-     * @return $this
-     */
-    public function cc(...$addresses)
-    {
-        return $this->setListAddressHeaderBody('Cc', $addresses);
-    }
-
-    /**
-     * @return Address[]
-     */
-    public function getCc(): array
-    {
-        return $this->getHeaders()->getHeaderBody('Cc') ?: [];
-    }
-
-    /**
-     * @param Address|string ...$addresses
-     *
-     * @return $this
-     */
-    public function addBcc(...$addresses)
-    {
-        return $this->addListAddressHeaderBody('Bcc', $addresses);
-    }
-
-    /**
-     * @param Address|string ...$addresses
-     *
-     * @return $this
-     */
-    public function bcc(...$addresses)
-    {
-        return $this->setListAddressHeaderBody('Bcc', $addresses);
-    }
-
-    /**
-     * @return Address[]
-     */
-    public function getBcc(): array
-    {
-        return $this->getHeaders()->getHeaderBody('Bcc') ?: [];
-    }
-
-    /**
-     * Sets the priority of this message.
-     *
-     * The value is an integer where 1 is the highest priority and 5 is the lowest.
-     *
-     * @return $this
-     */
-    public function priority(int $priority)
-    {
-        if ($priority > 5) {
-            $priority = 5;
-        } elseif ($priority < 1) {
-            $priority = 1;
-        }
-
-        return $this->setHeaderBody('Text', 'X-Priority', sprintf('%d (%s)', $priority, self::PRIORITY_MAP[$priority]));
-    }
-
-    /**
-     * Get the priority of this message.
-     *
-     * The returned value is an integer where 1 is the highest priority and 5
-     * is the lowest.
-     */
-    public function getPriority(): int
-    {
-        list($priority) = sscanf($this->getHeaders()->getHeaderBody('X-Priority'), '%[1-5]');
-
-        return $priority ?? 3;
-    }
-
-    /**
-     * @param resource|string $body
-     *
-     * @return $this
-     */
-    public function text($body, string $charset = 'utf-8')
-    {
-        $this->text = $body;
-        $this->textCharset = $charset;
-
-        return $this;
-    }
-
-    /**
-     * @return resource|string|null
-     */
-    public function getTextBody()
-    {
-        return $this->text;
-    }
-
-    public function getTextCharset(): ?string
-    {
-        return $this->textCharset;
-    }
-
-    /**
-     * @param resource|string|null $body
-     *
-     * @return $this
-     */
-    public function html($body, string $charset = 'utf-8')
-    {
-        $this->html = $body;
-        $this->htmlCharset = $charset;
-
-        return $this;
-    }
-
-    /**
-     * @return resource|string|null
-     */
-    public function getHtmlBody()
-    {
-        return $this->html;
-    }
-
-    public function getHtmlCharset(): ?string
-    {
-        return $this->htmlCharset;
-    }
-
-    /**
-     * @param resource|string $body
-     *
-     * @return $this
-     */
-    public function attach($body, string $name = null, string $contentType = null)
-    {
-        $this->attachments[] = ['body' => $body, 'name' => $name, 'content-type' => $contentType, 'inline' => false];
-
-        return $this;
-    }
-
-    /**
-     * @return $this
-     */
-    public function attachFromPath(string $path, string $name = null, string $contentType = null)
-    {
-        $this->attachments[] = ['path' => $path, 'name' => $name, 'content-type' => $contentType, 'inline' => false];
-
-        return $this;
-    }
-
-    /**
-     * @param resource|string $body
-     *
-     * @return $this
-     */
-    public function embed($body, string $name = null, string $contentType = null)
-    {
-        $this->attachments[] = ['body' => $body, 'name' => $name, 'content-type' => $contentType, 'inline' => true];
-
-        return $this;
-    }
-
-    /**
-     * @return $this
-     */
-    public function embedFromPath(string $path, string $name = null, string $contentType = null)
-    {
-        $this->attachments[] = ['path' => $path, 'name' => $name, 'content-type' => $contentType, 'inline' => true];
-
-        return $this;
-    }
-
-    /**
-     * @return $this
-     */
-    public function attachPart(DataPart $part)
-    {
-        $this->attachments[] = ['part' => $part];
-
-        return $this;
-    }
-
-    /**
-     * @return DataPart[]
-     */
-    public function getAttachments(): array
-    {
-        $parts = [];
-        foreach ($this->attachments as $attachment) {
-            $parts[] = $this->createDataPart($attachment);
-        }
-
-        return $parts;
-    }
-
-    public function getBody(): AbstractPart
-    {
-        if (null !== $body = parent::getBody()) {
-            return $body;
-        }
-
-        return $this->generateBody();
-    }
-
-    public function ensureValidity()
-    {
-        if (null === $this->text && null === $this->html && !$this->attachments) {
-            throw new LogicException('A message must have a text or an HTML part or attachments.');
-        }
-
-        parent::ensureValidity();
-    }
-
-    /**
-     * Generates an AbstractPart based on the raw body of a message.
-     *
-     * The most "complex" part generated by this method is when there is text and HTML bodies
-     * with related images for the HTML part and some attachments:
-     *
-     * multipart/mixed
-     *         |
-     *         |------------> multipart/related
-     *         |                      |
-     *         |                      |------------> multipart/alternative
-     *         |                      |                      |
-     *         |                      |                       ------------> text/plain (with content)
-     *         |                      |                      |
-     *         |                      |                       ------------> text/html (with content)
-     *         |                      |
-     *         |                       ------------> image/png (with content)
-     *         |
-     *          ------------> application/pdf (with content)
-     */
-    private function generateBody(): AbstractPart
-    {
-        $this->ensureValidity();
-
-        [$htmlPart, $attachmentParts, $inlineParts] = $this->prepareParts();
-
-        $part = null === $this->text ? null : new TextPart($this->text, $this->textCharset);
-        if (null !== $htmlPart) {
-            if (null !== $part) {
-                $part = new AlternativePart($part, $htmlPart);
-            } else {
-                $part = $htmlPart;
-            }
-        }
-
-        if ($inlineParts) {
-            $part = new RelatedPart($part, ...$inlineParts);
-        }
-
-        if ($attachmentParts) {
-            if ($part) {
-                $part = new MixedPart($part, ...$attachmentParts);
-            } else {
-                $part = new MixedPart(...$attachmentParts);
-            }
-        }
-
-        return $part;
-    }
-
-    private function prepareParts(): ?array
-    {
-        $names = [];
-        $htmlPart = null;
-        $html = $this->html;
-        if (null !== $this->html) {
-            $htmlPart = new TextPart($html, $this->htmlCharset, 'html');
-            $html = $htmlPart->getBody();
-            preg_match_all('(<img\s+[^>]*src\s*=\s*(?:([\'"])cid:([^"]+)\\1|cid:([^>\s]+)))i', $html, $names);
-            $names = array_filter(array_unique(array_merge($names[2], $names[3])));
-        }
-
-        $attachmentParts = $inlineParts = [];
-        foreach ($this->attachments as $attachment) {
-            foreach ($names as $name) {
-                if (isset($attachment['part'])) {
-                    continue;
-                }
-                if ($name !== $attachment['name']) {
-                    continue;
-                }
-                if (isset($inlineParts[$name])) {
-                    continue 2;
-                }
-                $attachment['inline'] = true;
-                $inlineParts[$name] = $part = $this->createDataPart($attachment);
-                $html = str_replace('cid:'.$name, 'cid:'.$part->getContentId(), $html);
-                continue 2;
-            }
-            $attachmentParts[] = $this->createDataPart($attachment);
-        }
-        if (null !== $htmlPart) {
-            $htmlPart = new TextPart($html, $this->htmlCharset, 'html');
-        }
-
-        return [$htmlPart, $attachmentParts, array_values($inlineParts)];
-    }
-
-    private function createDataPart(array $attachment): DataPart
-    {
-        if (isset($attachment['part'])) {
-            return $attachment['part'];
-        }
-
-        if (isset($attachment['body'])) {
-            $part = new DataPart($attachment['body'], $attachment['name'] ?? null, $attachment['content-type'] ?? null);
-        } else {
-            $part = DataPart::fromPath($attachment['path'] ?? '', $attachment['name'] ?? null, $attachment['content-type'] ?? null);
-        }
-        if ($attachment['inline']) {
-            $part->asInline();
-        }
-
-        return $part;
-    }
-
-    /**
-     * @return $this
-     */
-    private function setHeaderBody(string $type, string $name, $body): object
-    {
-        $this->getHeaders()->setHeaderBody($type, $name, $body);
-
-        return $this;
-    }
-
-    private function addListAddressHeaderBody(string $name, array $addresses)
-    {
-        if (!$header = $this->getHeaders()->get($name)) {
-            return $this->setListAddressHeaderBody($name, $addresses);
-        }
-        $header->addAddresses(Address::createArray($addresses));
-
-        return $this;
-    }
-
-    private function setListAddressHeaderBody(string $name, array $addresses)
-    {
-        $addresses = Address::createArray($addresses);
-        $headers = $this->getHeaders();
-        if ($header = $headers->get($name)) {
-            $header->setAddresses($addresses);
-        } else {
-            $headers->addMailboxListHeader($name, $addresses);
-        }
-
-        return $this;
-    }
-
-    /**
-     * @internal
-     */
-    public function __serialize(): array
-    {
-        if (\is_resource($this->text)) {
-            $this->text = (new TextPart($this->text))->getBody();
-        }
-
-        if (\is_resource($this->html)) {
-            $this->html = (new TextPart($this->html))->getBody();
-        }
-
-        foreach ($this->attachments as $i => $attachment) {
-            if (isset($attachment['body']) && \is_resource($attachment['body'])) {
-                $this->attachments[$i]['body'] = (new TextPart($attachment['body']))->getBody();
-            }
-        }
-
-        return [$this->text, $this->textCharset, $this->html, $this->htmlCharset, $this->attachments, parent::__serialize()];
-    }
-
-    /**
-     * @internal
-     */
-    public function __unserialize(array $data): void
-    {
-        [$this->text, $this->textCharset, $this->html, $this->htmlCharset, $this->attachments, $parentData] = $data;
-
-        parent::__unserialize($parentData);
-    }
-}
diff --git a/vendor/symfony/mime/Encoder/AddressEncoderInterface.php b/vendor/symfony/mime/Encoder/AddressEncoderInterface.php
deleted file mode 100644
index de477d884f50552900de73aaaa91e334d3c1b844..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/AddressEncoderInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-use Symfony\Component\Mime\Exception\AddressEncoderException;
-
-/**
- * @author Christian Schmidt
- */
-interface AddressEncoderInterface
-{
-    /**
-     * Encodes an email address.
-     *
-     * @throws AddressEncoderException if the email cannot be represented in
-     *                                 the encoding implemented by this class
-     */
-    public function encodeString(string $address): string;
-}
diff --git a/vendor/symfony/mime/Encoder/Base64ContentEncoder.php b/vendor/symfony/mime/Encoder/Base64ContentEncoder.php
deleted file mode 100644
index 440868af70c57ba3d3765f586678e53f667be0ca..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/Base64ContentEncoder.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-use Symfony\Component\Mime\Exception\RuntimeException;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class Base64ContentEncoder extends Base64Encoder implements ContentEncoderInterface
-{
-    public function encodeByteStream($stream, int $maxLineLength = 0): iterable
-    {
-        if (!\is_resource($stream)) {
-            throw new \TypeError(sprintf('Method "%s" takes a stream as a first argument.', __METHOD__));
-        }
-
-        $filter = stream_filter_append($stream, 'convert.base64-encode', \STREAM_FILTER_READ, [
-            'line-length' => 0 >= $maxLineLength || 76 < $maxLineLength ? 76 : $maxLineLength,
-            'line-break-chars' => "\r\n",
-        ]);
-        if (!\is_resource($filter)) {
-            throw new RuntimeException('Unable to set the base64 content encoder to the filter.');
-        }
-
-        while (!feof($stream)) {
-            yield fread($stream, 16372);
-        }
-        stream_filter_remove($filter);
-    }
-
-    public function getName(): string
-    {
-        return 'base64';
-    }
-}
diff --git a/vendor/symfony/mime/Encoder/Base64Encoder.php b/vendor/symfony/mime/Encoder/Base64Encoder.php
deleted file mode 100644
index 710647857a75ded368c35d4db86af6b134b4a1ab..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/Base64Encoder.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-/**
- * @author Chris Corbyn
- */
-class Base64Encoder implements EncoderInterface
-{
-    /**
-     * Takes an unencoded string and produces a Base64 encoded string from it.
-     *
-     * Base64 encoded strings have a maximum line length of 76 characters.
-     * If the first line needs to be shorter, indicate the difference with
-     * $firstLineOffset.
-     */
-    public function encodeString(string $string, ?string $charset = 'utf-8', int $firstLineOffset = 0, int $maxLineLength = 0): string
-    {
-        if (0 >= $maxLineLength || 76 < $maxLineLength) {
-            $maxLineLength = 76;
-        }
-
-        $encodedString = base64_encode($string);
-        $firstLine = '';
-        if (0 !== $firstLineOffset) {
-            $firstLine = substr($encodedString, 0, $maxLineLength - $firstLineOffset)."\r\n";
-            $encodedString = substr($encodedString, $maxLineLength - $firstLineOffset);
-        }
-
-        return $firstLine.trim(chunk_split($encodedString, $maxLineLength, "\r\n"));
-    }
-}
diff --git a/vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php b/vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php
deleted file mode 100644
index 5c06f6d9a6c67b7fb7af76d7247e88e343e9903f..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-/**
- * @author Chris Corbyn
- */
-final class Base64MimeHeaderEncoder extends Base64Encoder implements MimeHeaderEncoderInterface
-{
-    public function getName(): string
-    {
-        return 'B';
-    }
-
-    /**
-     * Takes an unencoded string and produces a Base64 encoded string from it.
-     *
-     * If the charset is iso-2022-jp, it uses mb_encode_mimeheader instead of
-     * default encodeString, otherwise pass to the parent method.
-     */
-    public function encodeString(string $string, ?string $charset = 'utf-8', int $firstLineOffset = 0, int $maxLineLength = 0): string
-    {
-        if ('iso-2022-jp' === strtolower($charset)) {
-            $old = mb_internal_encoding();
-            mb_internal_encoding('utf-8');
-            $newstring = mb_encode_mimeheader($string, 'iso-2022-jp', $this->getName(), "\r\n");
-            mb_internal_encoding($old);
-
-            return $newstring;
-        }
-
-        return parent::encodeString($string, $charset, $firstLineOffset, $maxLineLength);
-    }
-}
diff --git a/vendor/symfony/mime/Encoder/ContentEncoderInterface.php b/vendor/symfony/mime/Encoder/ContentEncoderInterface.php
deleted file mode 100644
index a45ad04c2a0d649bfa26ff84fab9a1ad83eaffa4..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/ContentEncoderInterface.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-/**
- * @author Chris Corbyn
- */
-interface ContentEncoderInterface extends EncoderInterface
-{
-    /**
-     * Encodes the stream to a Generator.
-     *
-     * @param resource $stream
-     */
-    public function encodeByteStream($stream, int $maxLineLength = 0): iterable;
-
-    /**
-     * Gets the MIME name of this content encoding scheme.
-     */
-    public function getName(): string;
-}
diff --git a/vendor/symfony/mime/Encoder/EightBitContentEncoder.php b/vendor/symfony/mime/Encoder/EightBitContentEncoder.php
deleted file mode 100644
index 82831209eb553140a494d7b4946730cff12a41cf..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/EightBitContentEncoder.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class EightBitContentEncoder implements ContentEncoderInterface
-{
-    public function encodeByteStream($stream, int $maxLineLength = 0): iterable
-    {
-        while (!feof($stream)) {
-            yield fread($stream, 16372);
-        }
-    }
-
-    public function getName(): string
-    {
-        return '8bit';
-    }
-
-    public function encodeString(string $string, ?string $charset = 'utf-8', int $firstLineOffset = 0, int $maxLineLength = 0): string
-    {
-        return $string;
-    }
-}
diff --git a/vendor/symfony/mime/Encoder/EncoderInterface.php b/vendor/symfony/mime/Encoder/EncoderInterface.php
deleted file mode 100644
index bbf6d48866c86d96841dc24f019b619e5bd71534..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/EncoderInterface.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-/**
- * @author Chris Corbyn
- */
-interface EncoderInterface
-{
-    /**
-     * Encode a given string to produce an encoded string.
-     *
-     * @param int $firstLineOffset if first line needs to be shorter
-     * @param int $maxLineLength   - 0 indicates the default length for this encoding
-     */
-    public function encodeString(string $string, ?string $charset = 'utf-8', int $firstLineOffset = 0, int $maxLineLength = 0): string;
-}
diff --git a/vendor/symfony/mime/Encoder/IdnAddressEncoder.php b/vendor/symfony/mime/Encoder/IdnAddressEncoder.php
deleted file mode 100644
index 69ab8872ec11a133fe7f6a8ec813dfbfb041bd5a..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/IdnAddressEncoder.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-use Symfony\Component\Mime\Exception\AddressEncoderException;
-
-/**
- * An IDN email address encoder.
- *
- * Encodes the domain part of an address using IDN. This is compatible will all
- * SMTP servers.
- *
- * This encoder does not support email addresses with non-ASCII characters in
- * local-part (the substring before @).
- *
- * @author Christian Schmidt
- */
-final class IdnAddressEncoder implements AddressEncoderInterface
-{
-    /**
-     * Encodes the domain part of an address using IDN.
-     *
-     * @throws AddressEncoderException If local-part contains non-ASCII characters
-     */
-    public function encodeString(string $address): string
-    {
-        $i = strrpos($address, '@');
-        if (false !== $i) {
-            $local = substr($address, 0, $i);
-            $domain = substr($address, $i + 1);
-
-            if (preg_match('/[^\x00-\x7F]/', $local)) {
-                throw new AddressEncoderException(sprintf('Non-ASCII characters not supported in local-part os "%s".', $address));
-            }
-
-            if (preg_match('/[^\x00-\x7F]/', $domain)) {
-                $address = sprintf('%s@%s', $local, idn_to_ascii($domain, 0, \INTL_IDNA_VARIANT_UTS46));
-            }
-        }
-
-        return $address;
-    }
-}
diff --git a/vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php b/vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php
deleted file mode 100644
index fff2c782bf5eb747c54066a596e217378167188d..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-/**
- * @author Chris Corbyn
- */
-interface MimeHeaderEncoderInterface
-{
-    /**
-     * Get the MIME name of this content encoding scheme.
-     */
-    public function getName(): string;
-}
diff --git a/vendor/symfony/mime/Encoder/QpContentEncoder.php b/vendor/symfony/mime/Encoder/QpContentEncoder.php
deleted file mode 100644
index 4703cc2e68d2ea20e381d013a6db05546190dd0d..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/QpContentEncoder.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-/**
- * @author Lars Strojny
- */
-final class QpContentEncoder implements ContentEncoderInterface
-{
-    public function encodeByteStream($stream, int $maxLineLength = 0): iterable
-    {
-        if (!\is_resource($stream)) {
-            throw new \TypeError(sprintf('Method "%s" takes a stream as a first argument.', __METHOD__));
-        }
-
-        // we don't use PHP stream filters here as the content should be small enough
-        yield $this->encodeString(stream_get_contents($stream), 'utf-8', 0, $maxLineLength);
-    }
-
-    public function getName(): string
-    {
-        return 'quoted-printable';
-    }
-
-    public function encodeString(string $string, ?string $charset = 'utf-8', int $firstLineOffset = 0, int $maxLineLength = 0): string
-    {
-        return $this->standardize(quoted_printable_encode($string));
-    }
-
-    /**
-     * Make sure CRLF is correct and HT/SPACE are in valid places.
-     */
-    private function standardize(string $string): string
-    {
-        // transform CR or LF to CRLF
-        $string = preg_replace('~=0D(?!=0A)|(?<!=0D)=0A~', '=0D=0A', $string);
-        // transform =0D=0A to CRLF
-        $string = str_replace(["\t=0D=0A", ' =0D=0A', '=0D=0A'], ["=09\r\n", "=20\r\n", "\r\n"], $string);
-
-        switch (\ord(substr($string, -1))) {
-            case 0x09:
-                $string = substr_replace($string, '=09', -1);
-                break;
-            case 0x20:
-                $string = substr_replace($string, '=20', -1);
-                break;
-        }
-
-        return $string;
-    }
-}
diff --git a/vendor/symfony/mime/Encoder/QpEncoder.php b/vendor/symfony/mime/Encoder/QpEncoder.php
deleted file mode 100644
index 4f249e069ee9548fa81be3b5095c5ee8e0d9cc3b..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/QpEncoder.php
+++ /dev/null
@@ -1,195 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-use Symfony\Component\Mime\CharacterStream;
-
-/**
- * @author Chris Corbyn
- */
-class QpEncoder implements EncoderInterface
-{
-    /**
-     * Pre-computed QP for HUGE optimization.
-     */
-    private static $qpMap = [
-        0 => '=00', 1 => '=01', 2 => '=02', 3 => '=03', 4 => '=04',
-        5 => '=05', 6 => '=06', 7 => '=07', 8 => '=08', 9 => '=09',
-        10 => '=0A', 11 => '=0B', 12 => '=0C', 13 => '=0D', 14 => '=0E',
-        15 => '=0F', 16 => '=10', 17 => '=11', 18 => '=12', 19 => '=13',
-        20 => '=14', 21 => '=15', 22 => '=16', 23 => '=17', 24 => '=18',
-        25 => '=19', 26 => '=1A', 27 => '=1B', 28 => '=1C', 29 => '=1D',
-        30 => '=1E', 31 => '=1F', 32 => '=20', 33 => '=21', 34 => '=22',
-        35 => '=23', 36 => '=24', 37 => '=25', 38 => '=26', 39 => '=27',
-        40 => '=28', 41 => '=29', 42 => '=2A', 43 => '=2B', 44 => '=2C',
-        45 => '=2D', 46 => '=2E', 47 => '=2F', 48 => '=30', 49 => '=31',
-        50 => '=32', 51 => '=33', 52 => '=34', 53 => '=35', 54 => '=36',
-        55 => '=37', 56 => '=38', 57 => '=39', 58 => '=3A', 59 => '=3B',
-        60 => '=3C', 61 => '=3D', 62 => '=3E', 63 => '=3F', 64 => '=40',
-        65 => '=41', 66 => '=42', 67 => '=43', 68 => '=44', 69 => '=45',
-        70 => '=46', 71 => '=47', 72 => '=48', 73 => '=49', 74 => '=4A',
-        75 => '=4B', 76 => '=4C', 77 => '=4D', 78 => '=4E', 79 => '=4F',
-        80 => '=50', 81 => '=51', 82 => '=52', 83 => '=53', 84 => '=54',
-        85 => '=55', 86 => '=56', 87 => '=57', 88 => '=58', 89 => '=59',
-        90 => '=5A', 91 => '=5B', 92 => '=5C', 93 => '=5D', 94 => '=5E',
-        95 => '=5F', 96 => '=60', 97 => '=61', 98 => '=62', 99 => '=63',
-        100 => '=64', 101 => '=65', 102 => '=66', 103 => '=67', 104 => '=68',
-        105 => '=69', 106 => '=6A', 107 => '=6B', 108 => '=6C', 109 => '=6D',
-        110 => '=6E', 111 => '=6F', 112 => '=70', 113 => '=71', 114 => '=72',
-        115 => '=73', 116 => '=74', 117 => '=75', 118 => '=76', 119 => '=77',
-        120 => '=78', 121 => '=79', 122 => '=7A', 123 => '=7B', 124 => '=7C',
-        125 => '=7D', 126 => '=7E', 127 => '=7F', 128 => '=80', 129 => '=81',
-        130 => '=82', 131 => '=83', 132 => '=84', 133 => '=85', 134 => '=86',
-        135 => '=87', 136 => '=88', 137 => '=89', 138 => '=8A', 139 => '=8B',
-        140 => '=8C', 141 => '=8D', 142 => '=8E', 143 => '=8F', 144 => '=90',
-        145 => '=91', 146 => '=92', 147 => '=93', 148 => '=94', 149 => '=95',
-        150 => '=96', 151 => '=97', 152 => '=98', 153 => '=99', 154 => '=9A',
-        155 => '=9B', 156 => '=9C', 157 => '=9D', 158 => '=9E', 159 => '=9F',
-        160 => '=A0', 161 => '=A1', 162 => '=A2', 163 => '=A3', 164 => '=A4',
-        165 => '=A5', 166 => '=A6', 167 => '=A7', 168 => '=A8', 169 => '=A9',
-        170 => '=AA', 171 => '=AB', 172 => '=AC', 173 => '=AD', 174 => '=AE',
-        175 => '=AF', 176 => '=B0', 177 => '=B1', 178 => '=B2', 179 => '=B3',
-        180 => '=B4', 181 => '=B5', 182 => '=B6', 183 => '=B7', 184 => '=B8',
-        185 => '=B9', 186 => '=BA', 187 => '=BB', 188 => '=BC', 189 => '=BD',
-        190 => '=BE', 191 => '=BF', 192 => '=C0', 193 => '=C1', 194 => '=C2',
-        195 => '=C3', 196 => '=C4', 197 => '=C5', 198 => '=C6', 199 => '=C7',
-        200 => '=C8', 201 => '=C9', 202 => '=CA', 203 => '=CB', 204 => '=CC',
-        205 => '=CD', 206 => '=CE', 207 => '=CF', 208 => '=D0', 209 => '=D1',
-        210 => '=D2', 211 => '=D3', 212 => '=D4', 213 => '=D5', 214 => '=D6',
-        215 => '=D7', 216 => '=D8', 217 => '=D9', 218 => '=DA', 219 => '=DB',
-        220 => '=DC', 221 => '=DD', 222 => '=DE', 223 => '=DF', 224 => '=E0',
-        225 => '=E1', 226 => '=E2', 227 => '=E3', 228 => '=E4', 229 => '=E5',
-        230 => '=E6', 231 => '=E7', 232 => '=E8', 233 => '=E9', 234 => '=EA',
-        235 => '=EB', 236 => '=EC', 237 => '=ED', 238 => '=EE', 239 => '=EF',
-        240 => '=F0', 241 => '=F1', 242 => '=F2', 243 => '=F3', 244 => '=F4',
-        245 => '=F5', 246 => '=F6', 247 => '=F7', 248 => '=F8', 249 => '=F9',
-        250 => '=FA', 251 => '=FB', 252 => '=FC', 253 => '=FD', 254 => '=FE',
-        255 => '=FF',
-    ];
-
-    private static $safeMapShare = [];
-
-    /**
-     * A map of non-encoded ascii characters.
-     *
-     * @var string[]
-     *
-     * @internal
-     */
-    protected $safeMap = [];
-
-    public function __construct()
-    {
-        $id = static::class;
-        if (!isset(self::$safeMapShare[$id])) {
-            $this->initSafeMap();
-            self::$safeMapShare[$id] = $this->safeMap;
-        } else {
-            $this->safeMap = self::$safeMapShare[$id];
-        }
-    }
-
-    protected function initSafeMap(): void
-    {
-        foreach (array_merge([0x09, 0x20], range(0x21, 0x3C), range(0x3E, 0x7E)) as $byte) {
-            $this->safeMap[$byte] = \chr($byte);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Takes an unencoded string and produces a QP encoded string from it.
-     *
-     * QP encoded strings have a maximum line length of 76 characters.
-     * If the first line needs to be shorter, indicate the difference with
-     * $firstLineOffset.
-     */
-    public function encodeString(string $string, ?string $charset = 'utf-8', int $firstLineOffset = 0, int $maxLineLength = 0): string
-    {
-        if ($maxLineLength > 76 || $maxLineLength <= 0) {
-            $maxLineLength = 76;
-        }
-
-        $thisLineLength = $maxLineLength - $firstLineOffset;
-
-        $lines = [];
-        $lNo = 0;
-        $lines[$lNo] = '';
-        $currentLine = &$lines[$lNo++];
-        $size = $lineLen = 0;
-        $charStream = new CharacterStream($string, $charset);
-
-        // Fetching more than 4 chars at one is slower, as is fetching fewer bytes
-        // Conveniently 4 chars is the UTF-8 safe number since UTF-8 has up to 6
-        // bytes per char and (6 * 4 * 3 = 72 chars per line) * =NN is 3 bytes
-        while (null !== $bytes = $charStream->readBytes(4)) {
-            $enc = $this->encodeByteSequence($bytes, $size);
-
-            $i = strpos($enc, '=0D=0A');
-            $newLineLength = $lineLen + (false === $i ? $size : $i);
-
-            if ($currentLine && $newLineLength >= $thisLineLength) {
-                $lines[$lNo] = '';
-                $currentLine = &$lines[$lNo++];
-                $thisLineLength = $maxLineLength;
-                $lineLen = 0;
-            }
-
-            $currentLine .= $enc;
-
-            if (false === $i) {
-                $lineLen += $size;
-            } else {
-                // 6 is the length of '=0D=0A'.
-                $lineLen = $size - strrpos($enc, '=0D=0A') - 6;
-            }
-        }
-
-        return $this->standardize(implode("=\r\n", $lines));
-    }
-
-    /**
-     * Encode the given byte array into a verbatim QP form.
-     */
-    private function encodeByteSequence(array $bytes, int &$size): string
-    {
-        $ret = '';
-        $size = 0;
-        foreach ($bytes as $b) {
-            if (isset($this->safeMap[$b])) {
-                $ret .= $this->safeMap[$b];
-                ++$size;
-            } else {
-                $ret .= self::$qpMap[$b];
-                $size += 3;
-            }
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Make sure CRLF is correct and HT/SPACE are in valid places.
-     */
-    private function standardize(string $string): string
-    {
-        $string = str_replace(["\t=0D=0A", ' =0D=0A', '=0D=0A'], ["=09\r\n", "=20\r\n", "\r\n"], $string);
-        switch ($end = \ord(substr($string, -1))) {
-            case 0x09:
-            case 0x20:
-                $string = substr_replace($string, self::$qpMap[$end], -1);
-        }
-
-        return $string;
-    }
-}
diff --git a/vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php b/vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php
deleted file mode 100644
index d1d38375fade991b0480bb71eda74bbb310c47ed..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-/**
- * @author Chris Corbyn
- */
-final class QpMimeHeaderEncoder extends QpEncoder implements MimeHeaderEncoderInterface
-{
-    protected function initSafeMap(): void
-    {
-        foreach (array_merge(
-            range(0x61, 0x7A), range(0x41, 0x5A),
-            range(0x30, 0x39), [0x20, 0x21, 0x2A, 0x2B, 0x2D, 0x2F]
-        ) as $byte) {
-            $this->safeMap[$byte] = \chr($byte);
-        }
-    }
-
-    public function getName(): string
-    {
-        return 'Q';
-    }
-
-    public function encodeString(string $string, ?string $charset = 'utf-8', int $firstLineOffset = 0, int $maxLineLength = 0): string
-    {
-        return str_replace([' ', '=20', "=\r\n"], ['_', '_', "\r\n"],
-            parent::encodeString($string, $charset, $firstLineOffset, $maxLineLength)
-        );
-    }
-}
diff --git a/vendor/symfony/mime/Encoder/Rfc2231Encoder.php b/vendor/symfony/mime/Encoder/Rfc2231Encoder.php
deleted file mode 100644
index aa3e062fafb76b3e68ed111237a5bfea7f6cc053..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Encoder/Rfc2231Encoder.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Encoder;
-
-use Symfony\Component\Mime\CharacterStream;
-
-/**
- * @author Chris Corbyn
- */
-final class Rfc2231Encoder implements EncoderInterface
-{
-    /**
-     * Takes an unencoded string and produces a string encoded according to RFC 2231 from it.
-     */
-    public function encodeString(string $string, ?string $charset = 'utf-8', int $firstLineOffset = 0, int $maxLineLength = 0): string
-    {
-        $lines = [];
-        $lineCount = 0;
-        $lines[] = '';
-        $currentLine = &$lines[$lineCount++];
-
-        if (0 >= $maxLineLength) {
-            $maxLineLength = 75;
-        }
-
-        $charStream = new CharacterStream($string, $charset);
-        $thisLineLength = $maxLineLength - $firstLineOffset;
-
-        while (null !== $char = $charStream->read(4)) {
-            $encodedChar = rawurlencode($char);
-            if (0 !== \strlen($currentLine) && \strlen($currentLine.$encodedChar) > $thisLineLength) {
-                $lines[] = '';
-                $currentLine = &$lines[$lineCount++];
-                $thisLineLength = $maxLineLength;
-            }
-            $currentLine .= $encodedChar;
-        }
-
-        return implode("\r\n", $lines);
-    }
-}
diff --git a/vendor/symfony/mime/Exception/AddressEncoderException.php b/vendor/symfony/mime/Exception/AddressEncoderException.php
deleted file mode 100644
index 51ee2e06fac3188d3843cb6e1dfe9f41eea80485..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Exception/AddressEncoderException.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Exception;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AddressEncoderException extends RfcComplianceException
-{
-}
diff --git a/vendor/symfony/mime/Exception/ExceptionInterface.php b/vendor/symfony/mime/Exception/ExceptionInterface.php
deleted file mode 100644
index 11933900f9834ac7ed181c9b149f4c6d377672b2..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Exception;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ExceptionInterface extends \Throwable
-{
-}
diff --git a/vendor/symfony/mime/Exception/InvalidArgumentException.php b/vendor/symfony/mime/Exception/InvalidArgumentException.php
deleted file mode 100644
index e89ebae206564f211b4bf9c947b554906fe378f9..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Exception;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/mime/Exception/LogicException.php b/vendor/symfony/mime/Exception/LogicException.php
deleted file mode 100644
index 0508ee73c614b082276f55c0432b326ccf13ecce..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Exception/LogicException.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Exception;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class LogicException extends \LogicException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/mime/Exception/RfcComplianceException.php b/vendor/symfony/mime/Exception/RfcComplianceException.php
deleted file mode 100644
index 26e4a5099bda2dc0890c71fc454a22f04d2b710e..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Exception/RfcComplianceException.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Exception;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RfcComplianceException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/mime/Exception/RuntimeException.php b/vendor/symfony/mime/Exception/RuntimeException.php
deleted file mode 100644
index fb018b00652773844e4776647606ff7706e471e3..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Exception/RuntimeException.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Exception;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RuntimeException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/mime/FileBinaryMimeTypeGuesser.php b/vendor/symfony/mime/FileBinaryMimeTypeGuesser.php
deleted file mode 100644
index fe1e0cdee0b55eb44925ad7c91e280c793ae1e83..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/FileBinaryMimeTypeGuesser.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-use Symfony\Component\Mime\Exception\InvalidArgumentException;
-use Symfony\Component\Mime\Exception\LogicException;
-
-/**
- * Guesses the MIME type with the binary "file" (only available on *nix).
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
-{
-    private $cmd;
-
-    /**
-     * The $cmd pattern must contain a "%s" string that will be replaced
-     * with the file name to guess.
-     *
-     * The command output must start with the MIME type of the file.
-     *
-     * @param string $cmd The command to run to get the MIME type of a file
-     */
-    public function __construct(string $cmd = 'file -b --mime -- %s 2>/dev/null')
-    {
-        $this->cmd = $cmd;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isGuesserSupported(): bool
-    {
-        static $supported = null;
-
-        if (null !== $supported) {
-            return $supported;
-        }
-
-        if ('\\' === \DIRECTORY_SEPARATOR || !\function_exists('passthru') || !\function_exists('escapeshellarg')) {
-            return $supported = false;
-        }
-
-        ob_start();
-        passthru('command -v file', $exitStatus);
-        $binPath = trim(ob_get_clean());
-
-        return $supported = 0 === $exitStatus && '' !== $binPath;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function guessMimeType(string $path): ?string
-    {
-        if (!is_file($path) || !is_readable($path)) {
-            throw new InvalidArgumentException(sprintf('The "%s" file does not exist or is not readable.', $path));
-        }
-
-        if (!$this->isGuesserSupported()) {
-            throw new LogicException(sprintf('The "%s" guesser is not supported.', __CLASS__));
-        }
-
-        ob_start();
-
-        // need to use --mime instead of -i. see #6641
-        passthru(sprintf($this->cmd, escapeshellarg((0 === strpos($path, '-') ? './' : '').$path)), $return);
-        if ($return > 0) {
-            ob_end_clean();
-
-            return null;
-        }
-
-        $type = trim(ob_get_clean());
-
-        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\+\.]+)#i', $type, $match)) {
-            // it's not a type, but an error message
-            return null;
-        }
-
-        return $match[1];
-    }
-}
diff --git a/vendor/symfony/mime/FileinfoMimeTypeGuesser.php b/vendor/symfony/mime/FileinfoMimeTypeGuesser.php
deleted file mode 100644
index c6c7559af10040c6453e036f81a93b321363d379..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/FileinfoMimeTypeGuesser.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-use Symfony\Component\Mime\Exception\InvalidArgumentException;
-use Symfony\Component\Mime\Exception\LogicException;
-
-/**
- * Guesses the MIME type using the PECL extension FileInfo.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
-{
-    private $magicFile;
-
-    /**
-     * @param string $magicFile A magic file to use with the finfo instance
-     *
-     * @see http://www.php.net/manual/en/function.finfo-open.php
-     */
-    public function __construct(string $magicFile = null)
-    {
-        $this->magicFile = $magicFile;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isGuesserSupported(): bool
-    {
-        return \function_exists('finfo_open');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function guessMimeType(string $path): ?string
-    {
-        if (!is_file($path) || !is_readable($path)) {
-            throw new InvalidArgumentException(sprintf('The "%s" file does not exist or is not readable.', $path));
-        }
-
-        if (!$this->isGuesserSupported()) {
-            throw new LogicException(sprintf('The "%s" guesser is not supported.', __CLASS__));
-        }
-
-        if (false === $finfo = new \finfo(\FILEINFO_MIME_TYPE, $this->magicFile)) {
-            return null;
-        }
-        $mimeType = $finfo->file($path);
-
-        if ($mimeType && 0 === (\strlen($mimeType) % 2)) {
-            $mimeStart = substr($mimeType, 0, \strlen($mimeType) >> 1);
-            $mimeType = $mimeStart.$mimeStart === $mimeType ? $mimeStart : $mimeType;
-        }
-
-        return $mimeType;
-    }
-}
diff --git a/vendor/symfony/mime/Header/AbstractHeader.php b/vendor/symfony/mime/Header/AbstractHeader.php
deleted file mode 100644
index e93b87aeb72df4ac255af48e68ffa0e1b7e4e859..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Header/AbstractHeader.php
+++ /dev/null
@@ -1,279 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Header;
-
-use Symfony\Component\Mime\Encoder\QpMimeHeaderEncoder;
-
-/**
- * An abstract base MIME Header.
- *
- * @author Chris Corbyn
- */
-abstract class AbstractHeader implements HeaderInterface
-{
-    const PHRASE_PATTERN = '(?:(?:(?:(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))*(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))|(?:(?:[ \t]*(?:\r\n))?[ \t])))?[a-zA-Z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\}\|~]+(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))*(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))|(?:(?:[ \t]*(?:\r\n))?[ \t])))?)|(?:(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))*(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))|(?:(?:[ \t]*(?:\r\n))?[ \t])))?"((?:(?:[ \t]*(?:\r\n))?[ \t])?(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21\x23-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])))*(?:(?:[ \t]*(?:\r\n))?[ \t])?"(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))*(?:(?:(?:(?:[ \t]*(?:\r\n))?[ \t])?(\((?:(?:(?:[ \t]*(?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))*(?:(?:[ \t]*(?:\r\n))?[ \t])?\)))|(?:(?:[ \t]*(?:\r\n))?[ \t])))?))+?)';
-
-    private static $encoder;
-
-    private $name;
-    private $lineLength = 76;
-    private $lang;
-    private $charset = 'utf-8';
-
-    public function __construct(string $name)
-    {
-        $this->name = $name;
-    }
-
-    public function setCharset(string $charset)
-    {
-        $this->charset = $charset;
-    }
-
-    public function getCharset(): ?string
-    {
-        return $this->charset;
-    }
-
-    /**
-     * Set the language used in this Header.
-     *
-     * For example, for US English, 'en-us'.
-     */
-    public function setLanguage(string $lang)
-    {
-        $this->lang = $lang;
-    }
-
-    public function getLanguage(): ?string
-    {
-        return $this->lang;
-    }
-
-    public function getName(): string
-    {
-        return $this->name;
-    }
-
-    public function setMaxLineLength(int $lineLength)
-    {
-        $this->lineLength = $lineLength;
-    }
-
-    public function getMaxLineLength(): int
-    {
-        return $this->lineLength;
-    }
-
-    public function toString(): string
-    {
-        return $this->tokensToString($this->toTokens());
-    }
-
-    /**
-     * Produces a compliant, formatted RFC 2822 'phrase' based on the string given.
-     *
-     * @param string $string  as displayed
-     * @param bool   $shorten the first line to make remove for header name
-     */
-    protected function createPhrase(HeaderInterface $header, string $string, string $charset, bool $shorten = false): string
-    {
-        // Treat token as exactly what was given
-        $phraseStr = $string;
-
-        // If it's not valid
-        if (!preg_match('/^'.self::PHRASE_PATTERN.'$/D', $phraseStr)) {
-            // .. but it is just ascii text, try escaping some characters
-            // and make it a quoted-string
-            if (preg_match('/^[\x00-\x08\x0B\x0C\x0E-\x7F]*$/D', $phraseStr)) {
-                foreach (['\\', '"'] as $char) {
-                    $phraseStr = str_replace($char, '\\'.$char, $phraseStr);
-                }
-                $phraseStr = '"'.$phraseStr.'"';
-            } else {
-                // ... otherwise it needs encoding
-                // Determine space remaining on line if first line
-                if ($shorten) {
-                    $usedLength = \strlen($header->getName().': ');
-                } else {
-                    $usedLength = 0;
-                }
-                $phraseStr = $this->encodeWords($header, $string, $usedLength);
-            }
-        }
-
-        return $phraseStr;
-    }
-
-    /**
-     * Encode needed word tokens within a string of input.
-     */
-    protected function encodeWords(HeaderInterface $header, string $input, int $usedLength = -1): string
-    {
-        $value = '';
-        $tokens = $this->getEncodableWordTokens($input);
-        foreach ($tokens as $token) {
-            // See RFC 2822, Sect 2.2 (really 2.2 ??)
-            if ($this->tokenNeedsEncoding($token)) {
-                // Don't encode starting WSP
-                $firstChar = substr($token, 0, 1);
-                switch ($firstChar) {
-                    case ' ':
-                    case "\t":
-                        $value .= $firstChar;
-                        $token = substr($token, 1);
-                }
-
-                if (-1 == $usedLength) {
-                    $usedLength = \strlen($header->getName().': ') + \strlen($value);
-                }
-                $value .= $this->getTokenAsEncodedWord($token, $usedLength);
-            } else {
-                $value .= $token;
-            }
-        }
-
-        return $value;
-    }
-
-    protected function tokenNeedsEncoding(string $token): bool
-    {
-        return (bool) preg_match('~[\x00-\x08\x10-\x19\x7F-\xFF\r\n]~', $token);
-    }
-
-    /**
-     * Splits a string into tokens in blocks of words which can be encoded quickly.
-     *
-     * @return string[]
-     */
-    protected function getEncodableWordTokens(string $string): array
-    {
-        $tokens = [];
-        $encodedToken = '';
-        // Split at all whitespace boundaries
-        foreach (preg_split('~(?=[\t ])~', $string) as $token) {
-            if ($this->tokenNeedsEncoding($token)) {
-                $encodedToken .= $token;
-            } else {
-                if (\strlen($encodedToken) > 0) {
-                    $tokens[] = $encodedToken;
-                    $encodedToken = '';
-                }
-                $tokens[] = $token;
-            }
-        }
-        if (\strlen($encodedToken)) {
-            $tokens[] = $encodedToken;
-        }
-
-        return $tokens;
-    }
-
-    /**
-     * Get a token as an encoded word for safe insertion into headers.
-     */
-    protected function getTokenAsEncodedWord(string $token, int $firstLineOffset = 0): string
-    {
-        if (null === self::$encoder) {
-            self::$encoder = new QpMimeHeaderEncoder();
-        }
-
-        // Adjust $firstLineOffset to account for space needed for syntax
-        $charsetDecl = $this->charset;
-        if (null !== $this->lang) {
-            $charsetDecl .= '*'.$this->lang;
-        }
-        $encodingWrapperLength = \strlen('=?'.$charsetDecl.'?'.self::$encoder->getName().'??=');
-
-        if ($firstLineOffset >= 75) {
-            //Does this logic need to be here?
-            $firstLineOffset = 0;
-        }
-
-        $encodedTextLines = explode("\r\n",
-            self::$encoder->encodeString($token, $this->charset, $firstLineOffset, 75 - $encodingWrapperLength)
-        );
-
-        if ('iso-2022-jp' !== strtolower($this->charset)) {
-            // special encoding for iso-2022-jp using mb_encode_mimeheader
-            foreach ($encodedTextLines as $lineNum => $line) {
-                $encodedTextLines[$lineNum] = '=?'.$charsetDecl.'?'.self::$encoder->getName().'?'.$line.'?=';
-            }
-        }
-
-        return implode("\r\n ", $encodedTextLines);
-    }
-
-    /**
-     * Generates tokens from the given string which include CRLF as individual tokens.
-     *
-     * @return string[]
-     */
-    protected function generateTokenLines(string $token): array
-    {
-        return preg_split('~(\r\n)~', $token, -1, \PREG_SPLIT_DELIM_CAPTURE);
-    }
-
-    /**
-     * Generate a list of all tokens in the final header.
-     */
-    protected function toTokens(string $string = null): array
-    {
-        if (null === $string) {
-            $string = $this->getBodyAsString();
-        }
-
-        $tokens = [];
-        // Generate atoms; split at all invisible boundaries followed by WSP
-        foreach (preg_split('~(?=[ \t])~', $string) as $token) {
-            $newTokens = $this->generateTokenLines($token);
-            foreach ($newTokens as $newToken) {
-                $tokens[] = $newToken;
-            }
-        }
-
-        return $tokens;
-    }
-
-    /**
-     * Takes an array of tokens which appear in the header and turns them into
-     * an RFC 2822 compliant string, adding FWSP where needed.
-     *
-     * @param string[] $tokens
-     */
-    private function tokensToString(array $tokens): string
-    {
-        $lineCount = 0;
-        $headerLines = [];
-        $headerLines[] = $this->name.': ';
-        $currentLine = &$headerLines[$lineCount++];
-
-        // Build all tokens back into compliant header
-        foreach ($tokens as $i => $token) {
-            // Line longer than specified maximum or token was just a new line
-            if (("\r\n" === $token) ||
-                ($i > 0 && \strlen($currentLine.$token) > $this->lineLength)
-                && 0 < \strlen($currentLine)) {
-                $headerLines[] = '';
-                $currentLine = &$headerLines[$lineCount++];
-            }
-
-            // Append token to the line
-            if ("\r\n" !== $token) {
-                $currentLine .= $token;
-            }
-        }
-
-        // Implode with FWS (RFC 2822, 2.2.3)
-        return implode("\r\n", $headerLines);
-    }
-}
diff --git a/vendor/symfony/mime/Header/DateHeader.php b/vendor/symfony/mime/Header/DateHeader.php
deleted file mode 100644
index a7385d4ce21a24d16ee48a607417f565fc77ca74..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Header/DateHeader.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Header;
-
-/**
- * A Date MIME Header.
- *
- * @author Chris Corbyn
- */
-final class DateHeader extends AbstractHeader
-{
-    private $dateTime;
-
-    public function __construct(string $name, \DateTimeInterface $date)
-    {
-        parent::__construct($name);
-
-        $this->setDateTime($date);
-    }
-
-    /**
-     * @param \DateTimeInterface $body
-     */
-    public function setBody($body)
-    {
-        $this->setDateTime($body);
-    }
-
-    public function getBody(): \DateTimeImmutable
-    {
-        return $this->getDateTime();
-    }
-
-    public function getDateTime(): \DateTimeImmutable
-    {
-        return $this->dateTime;
-    }
-
-    /**
-     * Set the date-time of the Date in this Header.
-     *
-     * If a DateTime instance is provided, it is converted to DateTimeImmutable.
-     */
-    public function setDateTime(\DateTimeInterface $dateTime)
-    {
-        if ($dateTime instanceof \DateTime) {
-            $immutable = new \DateTimeImmutable('@'.$dateTime->getTimestamp());
-            $dateTime = $immutable->setTimezone($dateTime->getTimezone());
-        }
-        $this->dateTime = $dateTime;
-    }
-
-    public function getBodyAsString(): string
-    {
-        return $this->dateTime->format(\DateTime::RFC2822);
-    }
-}
diff --git a/vendor/symfony/mime/Header/HeaderInterface.php b/vendor/symfony/mime/Header/HeaderInterface.php
deleted file mode 100644
index 4546947c78736ef35d13db91045a8926951acccf..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Header/HeaderInterface.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Header;
-
-/**
- * A MIME Header.
- *
- * @author Chris Corbyn
- */
-interface HeaderInterface
-{
-    /**
-     * Sets the body.
-     *
-     * The type depends on the Header concrete class.
-     *
-     * @param mixed $body
-     */
-    public function setBody($body);
-
-    /**
-     * Gets the body.
-     *
-     * The return type depends on the Header concrete class.
-     *
-     * @return mixed
-     */
-    public function getBody();
-
-    public function setCharset(string $charset);
-
-    public function getCharset(): ?string;
-
-    public function setLanguage(string $lang);
-
-    public function getLanguage(): ?string;
-
-    public function getName(): string;
-
-    public function setMaxLineLength(int $lineLength);
-
-    public function getMaxLineLength(): int;
-
-    /**
-     * Gets this Header rendered as a compliant string.
-     */
-    public function toString(): string;
-
-    /**
-     * Gets the header's body, prepared for folding into a final header value.
-     *
-     * This is not necessarily RFC 2822 compliant since folding white space is
-     * not added at this stage (see {@link toString()} for that).
-     */
-    public function getBodyAsString(): string;
-}
diff --git a/vendor/symfony/mime/Header/Headers.php b/vendor/symfony/mime/Header/Headers.php
deleted file mode 100644
index 57c99c41fce6023c6ed0ac3ceb15a81da44acb7c..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Header/Headers.php
+++ /dev/null
@@ -1,282 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Header;
-
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Exception\LogicException;
-
-/**
- * A collection of headers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class Headers
-{
-    private static $uniqueHeaders = [
-        'date', 'from', 'sender', 'reply-to', 'to', 'cc', 'bcc',
-        'message-id', 'in-reply-to', 'references', 'subject',
-    ];
-
-    private $headers = [];
-    private $lineLength = 76;
-
-    public function __construct(HeaderInterface ...$headers)
-    {
-        foreach ($headers as $header) {
-            $this->add($header);
-        }
-    }
-
-    public function __clone()
-    {
-        foreach ($this->headers as $name => $collection) {
-            foreach ($collection as $i => $header) {
-                $this->headers[$name][$i] = clone $header;
-            }
-        }
-    }
-
-    public function setMaxLineLength(int $lineLength)
-    {
-        $this->lineLength = $lineLength;
-        foreach ($this->all() as $header) {
-            $header->setMaxLineLength($lineLength);
-        }
-    }
-
-    public function getMaxLineLength(): int
-    {
-        return $this->lineLength;
-    }
-
-    /**
-     * @param (Address|string)[] $addresses
-     *
-     * @return $this
-     */
-    public function addMailboxListHeader(string $name, array $addresses): self
-    {
-        return $this->add(new MailboxListHeader($name, Address::createArray($addresses)));
-    }
-
-    /**
-     * @param Address|string $address
-     *
-     * @return $this
-     */
-    public function addMailboxHeader(string $name, $address): self
-    {
-        return $this->add(new MailboxHeader($name, Address::create($address)));
-    }
-
-    /**
-     * @param string|array $ids
-     *
-     * @return $this
-     */
-    public function addIdHeader(string $name, $ids): self
-    {
-        return $this->add(new IdentificationHeader($name, $ids));
-    }
-
-    /**
-     * @param Address|string $path
-     *
-     * @return $this
-     */
-    public function addPathHeader(string $name, $path): self
-    {
-        return $this->add(new PathHeader($name, $path instanceof Address ? $path : new Address($path)));
-    }
-
-    /**
-     * @return $this
-     */
-    public function addDateHeader(string $name, \DateTimeInterface $dateTime): self
-    {
-        return $this->add(new DateHeader($name, $dateTime));
-    }
-
-    /**
-     * @return $this
-     */
-    public function addTextHeader(string $name, string $value): self
-    {
-        return $this->add(new UnstructuredHeader($name, $value));
-    }
-
-    /**
-     * @return $this
-     */
-    public function addParameterizedHeader(string $name, string $value, array $params = []): self
-    {
-        return $this->add(new ParameterizedHeader($name, $value, $params));
-    }
-
-    public function has(string $name): bool
-    {
-        return isset($this->headers[strtolower($name)]);
-    }
-
-    /**
-     * @return $this
-     */
-    public function add(HeaderInterface $header): self
-    {
-        static $map = [
-            'date' => DateHeader::class,
-            'from' => MailboxListHeader::class,
-            'sender' => MailboxHeader::class,
-            'reply-to' => MailboxListHeader::class,
-            'to' => MailboxListHeader::class,
-            'cc' => MailboxListHeader::class,
-            'bcc' => MailboxListHeader::class,
-            'message-id' => IdentificationHeader::class,
-            'in-reply-to' => IdentificationHeader::class,
-            'references' => IdentificationHeader::class,
-            'return-path' => PathHeader::class,
-        ];
-
-        $header->setMaxLineLength($this->lineLength);
-        $name = strtolower($header->getName());
-
-        if (isset($map[$name]) && !$header instanceof $map[$name]) {
-            throw new LogicException(sprintf('The "%s" header must be an instance of "%s" (got "%s").', $header->getName(), $map[$name], get_debug_type($header)));
-        }
-
-        if (\in_array($name, self::$uniqueHeaders, true) && isset($this->headers[$name]) && \count($this->headers[$name]) > 0) {
-            throw new LogicException(sprintf('Impossible to set header "%s" as it\'s already defined and must be unique.', $header->getName()));
-        }
-
-        $this->headers[$name][] = $header;
-
-        return $this;
-    }
-
-    public function get(string $name): ?HeaderInterface
-    {
-        $name = strtolower($name);
-        if (!isset($this->headers[$name])) {
-            return null;
-        }
-
-        $values = array_values($this->headers[$name]);
-
-        return array_shift($values);
-    }
-
-    public function all(string $name = null): iterable
-    {
-        if (null === $name) {
-            foreach ($this->headers as $name => $collection) {
-                foreach ($collection as $header) {
-                    yield $name => $header;
-                }
-            }
-        } elseif (isset($this->headers[strtolower($name)])) {
-            foreach ($this->headers[strtolower($name)] as $header) {
-                yield $header;
-            }
-        }
-    }
-
-    public function getNames(): array
-    {
-        return array_keys($this->headers);
-    }
-
-    public function remove(string $name): void
-    {
-        unset($this->headers[strtolower($name)]);
-    }
-
-    public static function isUniqueHeader(string $name): bool
-    {
-        return \in_array($name, self::$uniqueHeaders, true);
-    }
-
-    public function toString(): string
-    {
-        $string = '';
-        foreach ($this->toArray() as $str) {
-            $string .= $str."\r\n";
-        }
-
-        return $string;
-    }
-
-    public function toArray(): array
-    {
-        $arr = [];
-        foreach ($this->all() as $header) {
-            if ('' !== $header->getBodyAsString()) {
-                $arr[] = $header->toString();
-            }
-        }
-
-        return $arr;
-    }
-
-    /**
-     * @internal
-     */
-    public function getHeaderBody($name)
-    {
-        return $this->has($name) ? $this->get($name)->getBody() : null;
-    }
-
-    /**
-     * @internal
-     */
-    public function setHeaderBody(string $type, string $name, $body): void
-    {
-        if ($this->has($name)) {
-            $this->get($name)->setBody($body);
-        } else {
-            $this->{'add'.$type.'Header'}($name, $body);
-        }
-    }
-
-    /**
-     * @internal
-     */
-    public function getHeaderParameter(string $name, string $parameter): ?string
-    {
-        if (!$this->has($name)) {
-            return null;
-        }
-
-        $header = $this->get($name);
-        if (!$header instanceof ParameterizedHeader) {
-            throw new LogicException(sprintf('Unable to get parameter "%s" on header "%s" as the header is not of class "%s".', $parameter, $name, ParameterizedHeader::class));
-        }
-
-        return $header->getParameter($parameter);
-    }
-
-    /**
-     * @internal
-     */
-    public function setHeaderParameter(string $name, string $parameter, $value): void
-    {
-        if (!$this->has($name)) {
-            throw new LogicException(sprintf('Unable to set parameter "%s" on header "%s" as the header is not defined.', $parameter, $name));
-        }
-
-        $header = $this->get($name);
-        if (!$header instanceof ParameterizedHeader) {
-            throw new LogicException(sprintf('Unable to set parameter "%s" on header "%s" as the header is not of class "%s".', $parameter, $name, ParameterizedHeader::class));
-        }
-
-        $header->setParameter($parameter, $value);
-    }
-}
diff --git a/vendor/symfony/mime/Header/IdentificationHeader.php b/vendor/symfony/mime/Header/IdentificationHeader.php
deleted file mode 100644
index 8a94574e5c64a34936f0f3fc812b864234979816..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Header/IdentificationHeader.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Header;
-
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Exception\RfcComplianceException;
-
-/**
- * An ID MIME Header for something like Message-ID or Content-ID (one or more addresses).
- *
- * @author Chris Corbyn
- */
-final class IdentificationHeader extends AbstractHeader
-{
-    private $ids = [];
-    private $idsAsAddresses = [];
-
-    /**
-     * @param string|array $ids
-     */
-    public function __construct(string $name, $ids)
-    {
-        parent::__construct($name);
-
-        $this->setId($ids);
-    }
-
-    /**
-     * @param string|array $body a string ID or an array of IDs
-     *
-     * @throws RfcComplianceException
-     */
-    public function setBody($body)
-    {
-        $this->setId($body);
-    }
-
-    public function getBody(): array
-    {
-        return $this->getIds();
-    }
-
-    /**
-     * Set the ID used in the value of this header.
-     *
-     * @param string|array $id
-     *
-     * @throws RfcComplianceException
-     */
-    public function setId($id)
-    {
-        $this->setIds(\is_array($id) ? $id : [$id]);
-    }
-
-    /**
-     * Get the ID used in the value of this Header.
-     *
-     * If multiple IDs are set only the first is returned.
-     */
-    public function getId(): ?string
-    {
-        return $this->ids[0] ?? null;
-    }
-
-    /**
-     * Set a collection of IDs to use in the value of this Header.
-     *
-     * @param string[] $ids
-     *
-     * @throws RfcComplianceException
-     */
-    public function setIds(array $ids)
-    {
-        $this->ids = [];
-        $this->idsAsAddresses = [];
-        foreach ($ids as $id) {
-            $this->idsAsAddresses[] = new Address($id);
-            $this->ids[] = $id;
-        }
-    }
-
-    /**
-     * Get the list of IDs used in this Header.
-     *
-     * @return string[]
-     */
-    public function getIds(): array
-    {
-        return $this->ids;
-    }
-
-    public function getBodyAsString(): string
-    {
-        $addrs = [];
-        foreach ($this->idsAsAddresses as $address) {
-            $addrs[] = '<'.$address->toString().'>';
-        }
-
-        return implode(' ', $addrs);
-    }
-}
diff --git a/vendor/symfony/mime/Header/MailboxHeader.php b/vendor/symfony/mime/Header/MailboxHeader.php
deleted file mode 100644
index b58c8252fd7c3cdd5fbd885e9c85eee43304fbb7..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Header/MailboxHeader.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Header;
-
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Exception\RfcComplianceException;
-
-/**
- * A Mailbox MIME Header for something like Sender (one named address).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class MailboxHeader extends AbstractHeader
-{
-    private $address;
-
-    public function __construct(string $name, Address $address)
-    {
-        parent::__construct($name);
-
-        $this->setAddress($address);
-    }
-
-    /**
-     * @param Address $body
-     *
-     * @throws RfcComplianceException
-     */
-    public function setBody($body)
-    {
-        $this->setAddress($body);
-    }
-
-    /**
-     * @throws RfcComplianceException
-     */
-    public function getBody(): Address
-    {
-        return $this->getAddress();
-    }
-
-    /**
-     * @throws RfcComplianceException
-     */
-    public function setAddress(Address $address)
-    {
-        $this->address = $address;
-    }
-
-    public function getAddress(): Address
-    {
-        return $this->address;
-    }
-
-    public function getBodyAsString(): string
-    {
-        $str = $this->address->getEncodedAddress();
-        if ($name = $this->address->getName()) {
-            $str = $this->createPhrase($this, $name, $this->getCharset(), true).' <'.$str.'>';
-        }
-
-        return $str;
-    }
-
-    /**
-     * Redefine the encoding requirements for an address.
-     *
-     * All "specials" must be encoded as the full header value will not be quoted
-     *
-     * @see RFC 2822 3.2.1
-     */
-    protected function tokenNeedsEncoding(string $token): bool
-    {
-        return preg_match('/[()<>\[\]:;@\,."]/', $token) || parent::tokenNeedsEncoding($token);
-    }
-}
diff --git a/vendor/symfony/mime/Header/MailboxListHeader.php b/vendor/symfony/mime/Header/MailboxListHeader.php
deleted file mode 100644
index 1d00fdb12c3da9f69129dac39c50ca61fe74f0c5..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Header/MailboxListHeader.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Header;
-
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Exception\RfcComplianceException;
-
-/**
- * A Mailbox list MIME Header for something like From, To, Cc, and Bcc (one or more named addresses).
- *
- * @author Chris Corbyn
- */
-final class MailboxListHeader extends AbstractHeader
-{
-    private $addresses = [];
-
-    /**
-     * @param Address[] $addresses
-     */
-    public function __construct(string $name, array $addresses)
-    {
-        parent::__construct($name);
-
-        $this->setAddresses($addresses);
-    }
-
-    /**
-     * @param Address[] $body
-     *
-     * @throws RfcComplianceException
-     */
-    public function setBody($body)
-    {
-        $this->setAddresses($body);
-    }
-
-    /**
-     * @throws RfcComplianceException
-     *
-     * @return Address[]
-     */
-    public function getBody(): array
-    {
-        return $this->getAddresses();
-    }
-
-    /**
-     * Sets a list of addresses to be shown in this Header.
-     *
-     * @param Address[] $addresses
-     *
-     * @throws RfcComplianceException
-     */
-    public function setAddresses(array $addresses)
-    {
-        $this->addresses = [];
-        $this->addAddresses($addresses);
-    }
-
-    /**
-     * Sets a list of addresses to be shown in this Header.
-     *
-     * @param Address[] $addresses
-     *
-     * @throws RfcComplianceException
-     */
-    public function addAddresses(array $addresses)
-    {
-        foreach ($addresses as $address) {
-            $this->addAddress($address);
-        }
-    }
-
-    /**
-     * @throws RfcComplianceException
-     */
-    public function addAddress(Address $address)
-    {
-        $this->addresses[] = $address;
-    }
-
-    /**
-     * @return Address[]
-     */
-    public function getAddresses(): array
-    {
-        return $this->addresses;
-    }
-
-    /**
-     * Gets the full mailbox list of this Header as an array of valid RFC 2822 strings.
-     *
-     * @throws RfcComplianceException
-     *
-     * @return string[]
-     */
-    public function getAddressStrings(): array
-    {
-        $strings = [];
-        foreach ($this->addresses as $address) {
-            $str = $address->getEncodedAddress();
-            if ($name = $address->getName()) {
-                $str = $this->createPhrase($this, $name, $this->getCharset(), !$strings).' <'.$str.'>';
-            }
-            $strings[] = $str;
-        }
-
-        return $strings;
-    }
-
-    public function getBodyAsString(): string
-    {
-        return implode(', ', $this->getAddressStrings());
-    }
-
-    /**
-     * Redefine the encoding requirements for addresses.
-     *
-     * All "specials" must be encoded as the full header value will not be quoted
-     *
-     * @see RFC 2822 3.2.1
-     */
-    protected function tokenNeedsEncoding(string $token): bool
-    {
-        return preg_match('/[()<>\[\]:;@\,."]/', $token) || parent::tokenNeedsEncoding($token);
-    }
-}
diff --git a/vendor/symfony/mime/Header/ParameterizedHeader.php b/vendor/symfony/mime/Header/ParameterizedHeader.php
deleted file mode 100644
index 9d3b905a28c16e03904e5ee1e610d0a20d6da886..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Header/ParameterizedHeader.php
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Header;
-
-use Symfony\Component\Mime\Encoder\Rfc2231Encoder;
-
-/**
- * @author Chris Corbyn
- */
-final class ParameterizedHeader extends UnstructuredHeader
-{
-    /**
-     * RFC 2231's definition of a token.
-     *
-     * @var string
-     */
-    const TOKEN_REGEX = '(?:[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+)';
-
-    private $encoder;
-    private $parameters = [];
-
-    public function __construct(string $name, string $value, array $parameters = [])
-    {
-        parent::__construct($name, $value);
-
-        foreach ($parameters as $k => $v) {
-            $this->setParameter($k, $v);
-        }
-
-        if ('content-type' !== strtolower($name)) {
-            $this->encoder = new Rfc2231Encoder();
-        }
-    }
-
-    public function setParameter(string $parameter, ?string $value)
-    {
-        $this->setParameters(array_merge($this->getParameters(), [$parameter => $value]));
-    }
-
-    public function getParameter(string $parameter): string
-    {
-        return $this->getParameters()[$parameter] ?? '';
-    }
-
-    /**
-     * @param string[] $parameters
-     */
-    public function setParameters(array $parameters)
-    {
-        $this->parameters = $parameters;
-    }
-
-    /**
-     * @return string[]
-     */
-    public function getParameters(): array
-    {
-        return $this->parameters;
-    }
-
-    public function getBodyAsString(): string
-    {
-        $body = parent::getBodyAsString();
-        foreach ($this->parameters as $name => $value) {
-            if (null !== $value) {
-                $body .= '; '.$this->createParameter($name, $value);
-            }
-        }
-
-        return $body;
-    }
-
-    /**
-     * Generate a list of all tokens in the final header.
-     *
-     * This doesn't need to be overridden in theory, but it is for implementation
-     * reasons to prevent potential breakage of attributes.
-     */
-    protected function toTokens(string $string = null): array
-    {
-        $tokens = parent::toTokens(parent::getBodyAsString());
-
-        // Try creating any parameters
-        foreach ($this->parameters as $name => $value) {
-            if (null !== $value) {
-                // Add the semi-colon separator
-                $tokens[\count($tokens) - 1] .= ';';
-                $tokens = array_merge($tokens, $this->generateTokenLines(' '.$this->createParameter($name, $value)));
-            }
-        }
-
-        return $tokens;
-    }
-
-    /**
-     * Render a RFC 2047 compliant header parameter from the $name and $value.
-     */
-    private function createParameter(string $name, string $value): string
-    {
-        $origValue = $value;
-
-        $encoded = false;
-        // Allow room for parameter name, indices, "=" and DQUOTEs
-        $maxValueLength = $this->getMaxLineLength() - \strlen($name.'=*N"";') - 1;
-        $firstLineOffset = 0;
-
-        // If it's not already a valid parameter value...
-        if (!preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) {
-            // TODO: text, or something else??
-            // ... and it's not ascii
-            if (!preg_match('/^[\x00-\x08\x0B\x0C\x0E-\x7F]*$/D', $value)) {
-                $encoded = true;
-                // Allow space for the indices, charset and language
-                $maxValueLength = $this->getMaxLineLength() - \strlen($name.'*N*="";') - 1;
-                $firstLineOffset = \strlen($this->getCharset()."'".$this->getLanguage()."'");
-            }
-        }
-
-        // Encode if we need to
-        if ($encoded || \strlen($value) > $maxValueLength) {
-            if (null !== $this->encoder) {
-                $value = $this->encoder->encodeString($origValue, $this->getCharset(), $firstLineOffset, $maxValueLength);
-            } else {
-                // We have to go against RFC 2183/2231 in some areas for interoperability
-                $value = $this->getTokenAsEncodedWord($origValue);
-                $encoded = false;
-            }
-        }
-
-        $valueLines = $this->encoder ? explode("\r\n", $value) : [$value];
-
-        // Need to add indices
-        if (\count($valueLines) > 1) {
-            $paramLines = [];
-            foreach ($valueLines as $i => $line) {
-                $paramLines[] = $name.'*'.$i.$this->getEndOfParameterValue($line, true, 0 === $i);
-            }
-
-            return implode(";\r\n ", $paramLines);
-        } else {
-            return $name.$this->getEndOfParameterValue($valueLines[0], $encoded, true);
-        }
-    }
-
-    /**
-     * Returns the parameter value from the "=" and beyond.
-     *
-     * @param string $value to append
-     */
-    private function getEndOfParameterValue(string $value, bool $encoded = false, bool $firstLine = false): string
-    {
-        $forceHttpQuoting = 'content-disposition' === strtolower($this->getName()) && 'form-data' === $this->getValue();
-        if ($forceHttpQuoting || !preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) {
-            $value = '"'.$value.'"';
-        }
-        $prepend = '=';
-        if ($encoded) {
-            $prepend = '*=';
-            if ($firstLine) {
-                $prepend = '*='.$this->getCharset()."'".$this->getLanguage()."'";
-            }
-        }
-
-        return $prepend.$value;
-    }
-}
diff --git a/vendor/symfony/mime/Header/PathHeader.php b/vendor/symfony/mime/Header/PathHeader.php
deleted file mode 100644
index 5101ad0f9f410783197b290c78fa4880d8cd9a7a..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Header/PathHeader.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Header;
-
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Exception\RfcComplianceException;
-
-/**
- * A Path Header, such a Return-Path (one address).
- *
- * @author Chris Corbyn
- */
-final class PathHeader extends AbstractHeader
-{
-    private $address;
-
-    public function __construct(string $name, Address $address)
-    {
-        parent::__construct($name);
-
-        $this->setAddress($address);
-    }
-
-    /**
-     * @param Address $body
-     *
-     * @throws RfcComplianceException
-     */
-    public function setBody($body)
-    {
-        $this->setAddress($body);
-    }
-
-    public function getBody(): Address
-    {
-        return $this->getAddress();
-    }
-
-    public function setAddress(Address $address)
-    {
-        $this->address = $address;
-    }
-
-    public function getAddress(): Address
-    {
-        return $this->address;
-    }
-
-    public function getBodyAsString(): string
-    {
-        return '<'.$this->address->toString().'>';
-    }
-}
diff --git a/vendor/symfony/mime/Header/UnstructuredHeader.php b/vendor/symfony/mime/Header/UnstructuredHeader.php
deleted file mode 100644
index 2085ddfde1822000d3089e4533208cc320b36f79..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Header/UnstructuredHeader.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Header;
-
-/**
- * A Simple MIME Header.
- *
- * @author Chris Corbyn
- */
-class UnstructuredHeader extends AbstractHeader
-{
-    private $value;
-
-    public function __construct(string $name, string $value)
-    {
-        parent::__construct($name);
-
-        $this->setValue($value);
-    }
-
-    /**
-     * @param string $body
-     */
-    public function setBody($body)
-    {
-        $this->setValue($body);
-    }
-
-    /**
-     * @return string
-     */
-    public function getBody()
-    {
-        return $this->getValue();
-    }
-
-    /**
-     * Get the (unencoded) value of this header.
-     */
-    public function getValue(): string
-    {
-        return $this->value;
-    }
-
-    /**
-     * Set the (unencoded) value of this header.
-     */
-    public function setValue(string $value)
-    {
-        $this->value = $value;
-    }
-
-    /**
-     * Get the value of this header prepared for rendering.
-     */
-    public function getBodyAsString(): string
-    {
-        return $this->encodeWords($this, $this->value);
-    }
-}
diff --git a/vendor/symfony/mime/LICENSE b/vendor/symfony/mime/LICENSE
deleted file mode 100644
index d53be68356dbf7f546ee467efd26e96ed4e84174..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/mime/Message.php b/vendor/symfony/mime/Message.php
deleted file mode 100644
index b7ddb76bc780e1156cf40585037d872ceb81063f..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Message.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-use Symfony\Component\Mime\Exception\LogicException;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\Part\AbstractPart;
-use Symfony\Component\Mime\Part\TextPart;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Message extends RawMessage
-{
-    private $headers;
-    private $body;
-
-    public function __construct(Headers $headers = null, AbstractPart $body = null)
-    {
-        $this->headers = $headers ? clone $headers : new Headers();
-        $this->body = $body;
-    }
-
-    public function __clone()
-    {
-        $this->headers = clone $this->headers;
-
-        if (null !== $this->body) {
-            $this->body = clone $this->body;
-        }
-    }
-
-    /**
-     * @return $this
-     */
-    public function setBody(AbstractPart $body = null)
-    {
-        $this->body = $body;
-
-        return $this;
-    }
-
-    public function getBody(): ?AbstractPart
-    {
-        return $this->body;
-    }
-
-    /**
-     * @return $this
-     */
-    public function setHeaders(Headers $headers)
-    {
-        $this->headers = $headers;
-
-        return $this;
-    }
-
-    public function getHeaders(): Headers
-    {
-        return $this->headers;
-    }
-
-    public function getPreparedHeaders(): Headers
-    {
-        $headers = clone $this->headers;
-
-        if (!$headers->has('From')) {
-            if (!$headers->has('Sender')) {
-                throw new LogicException('An email must have a "From" or a "Sender" header.');
-            }
-            $headers->addMailboxListHeader('From', [$headers->get('Sender')->getAddress()]);
-        }
-
-        $headers->addTextHeader('MIME-Version', '1.0');
-
-        if (!$headers->has('Date')) {
-            $headers->addDateHeader('Date', new \DateTimeImmutable());
-        }
-
-        // determine the "real" sender
-        if (!$headers->has('Sender') && \count($froms = $headers->get('From')->getAddresses()) > 1) {
-            $headers->addMailboxHeader('Sender', $froms[0]);
-        }
-
-        if (!$headers->has('Message-ID')) {
-            $headers->addIdHeader('Message-ID', $this->generateMessageId());
-        }
-
-        // remove the Bcc field which should NOT be part of the sent message
-        $headers->remove('Bcc');
-
-        return $headers;
-    }
-
-    public function toString(): string
-    {
-        if (null === $body = $this->getBody()) {
-            $body = new TextPart('');
-        }
-
-        return $this->getPreparedHeaders()->toString().$body->toString();
-    }
-
-    public function toIterable(): iterable
-    {
-        if (null === $body = $this->getBody()) {
-            $body = new TextPart('');
-        }
-
-        yield $this->getPreparedHeaders()->toString();
-        yield from $body->toIterable();
-    }
-
-    public function ensureValidity()
-    {
-        if (!$this->headers->has('To') && !$this->headers->has('Cc') && !$this->headers->has('Bcc')) {
-            throw new LogicException('An email must have a "To", "Cc", or "Bcc" header.');
-        }
-
-        if (!$this->headers->has('From') && !$this->headers->has('Sender')) {
-            throw new LogicException('An email must have a "From" or a "Sender" header.');
-        }
-
-        parent::ensureValidity();
-    }
-
-    public function generateMessageId(): string
-    {
-        if ($this->headers->has('Sender')) {
-            $sender = $this->headers->get('Sender')->getAddress();
-        } elseif ($this->headers->has('From')) {
-            $sender = $this->headers->get('From')->getAddresses()[0];
-        } else {
-            throw new LogicException('An email must have a "From" or a "Sender" header.');
-        }
-
-        return bin2hex(random_bytes(16)).strstr($sender->getAddress(), '@');
-    }
-
-    public function __serialize(): array
-    {
-        return [$this->headers, $this->body];
-    }
-
-    public function __unserialize(array $data): void
-    {
-        [$this->headers, $this->body] = $data;
-    }
-}
diff --git a/vendor/symfony/mime/MessageConverter.php b/vendor/symfony/mime/MessageConverter.php
deleted file mode 100644
index 788a5ff99663260d675318d567d2369f3984d5b9..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/MessageConverter.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-use Symfony\Component\Mime\Exception\RuntimeException;
-use Symfony\Component\Mime\Part\DataPart;
-use Symfony\Component\Mime\Part\Multipart\AlternativePart;
-use Symfony\Component\Mime\Part\Multipart\MixedPart;
-use Symfony\Component\Mime\Part\Multipart\RelatedPart;
-use Symfony\Component\Mime\Part\TextPart;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class MessageConverter
-{
-    /**
-     * @throws RuntimeException when unable to convert the message to an email
-     */
-    public static function toEmail(Message $message): Email
-    {
-        if ($message instanceof Email) {
-            return $message;
-        }
-
-        // try to convert to a "simple" Email instance
-        $body = $message->getBody();
-        if ($body instanceof TextPart) {
-            return self::createEmailFromTextPart($message, $body);
-        }
-
-        if ($body instanceof AlternativePart) {
-            return self::createEmailFromAlternativePart($message, $body);
-        }
-
-        if ($body instanceof RelatedPart) {
-            return self::createEmailFromRelatedPart($message, $body);
-        }
-
-        if ($body instanceof MixedPart) {
-            $parts = $body->getParts();
-            if ($parts[0] instanceof RelatedPart) {
-                $email = self::createEmailFromRelatedPart($message, $parts[0]);
-            } elseif ($parts[0] instanceof AlternativePart) {
-                $email = self::createEmailFromAlternativePart($message, $parts[0]);
-            } elseif ($parts[0] instanceof TextPart) {
-                $email = self::createEmailFromTextPart($message, $parts[0]);
-            } else {
-                throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
-            }
-
-            return self::attachParts($email, \array_slice($parts, 1));
-        }
-
-        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
-    }
-
-    private static function createEmailFromTextPart(Message $message, TextPart $part): Email
-    {
-        if ('text' === $part->getMediaType() && 'plain' === $part->getMediaSubtype()) {
-            return (new Email(clone $message->getHeaders()))->text($part->getBody(), $part->getPreparedHeaders()->getHeaderParameter('Content-Type', 'charset') ?: 'utf-8');
-        }
-        if ('text' === $part->getMediaType() && 'html' === $part->getMediaSubtype()) {
-            return (new Email(clone $message->getHeaders()))->html($part->getBody(), $part->getPreparedHeaders()->getHeaderParameter('Content-Type', 'charset') ?: 'utf-8');
-        }
-
-        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
-    }
-
-    private static function createEmailFromAlternativePart(Message $message, AlternativePart $part): Email
-    {
-        $parts = $part->getParts();
-        if (
-            2 === \count($parts) &&
-            $parts[0] instanceof TextPart && 'text' === $parts[0]->getMediaType() && 'plain' === $parts[0]->getMediaSubtype() &&
-            $parts[1] instanceof TextPart && 'text' === $parts[1]->getMediaType() && 'html' === $parts[1]->getMediaSubtype()
-         ) {
-            return (new Email(clone $message->getHeaders()))
-                ->text($parts[0]->getBody(), $parts[0]->getPreparedHeaders()->getHeaderParameter('Content-Type', 'charset') ?: 'utf-8')
-                ->html($parts[1]->getBody(), $parts[1]->getPreparedHeaders()->getHeaderParameter('Content-Type', 'charset') ?: 'utf-8')
-            ;
-        }
-
-        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
-    }
-
-    private static function createEmailFromRelatedPart(Message $message, RelatedPart $part): Email
-    {
-        $parts = $part->getParts();
-        if ($parts[0] instanceof AlternativePart) {
-            $email = self::createEmailFromAlternativePart($message, $parts[0]);
-        } elseif ($parts[0] instanceof TextPart) {
-            $email = self::createEmailFromTextPart($message, $parts[0]);
-        } else {
-            throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
-        }
-
-        return self::attachParts($email, \array_slice($parts, 1));
-    }
-
-    private static function attachParts(Email $email, array $parts): Email
-    {
-        foreach ($parts as $part) {
-            if (!$part instanceof DataPart) {
-                throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($email)));
-            }
-
-            $headers = $part->getPreparedHeaders();
-            $method = 'inline' === $headers->getHeaderBody('Content-Disposition') ? 'embed' : 'attach';
-            $name = $headers->getHeaderParameter('Content-Disposition', 'filename');
-            $email->$method($part->getBody(), $name, $part->getMediaType().'/'.$part->getMediaSubtype());
-        }
-
-        return $email;
-    }
-}
diff --git a/vendor/symfony/mime/MimeTypeGuesserInterface.php b/vendor/symfony/mime/MimeTypeGuesserInterface.php
deleted file mode 100644
index 68b05055e6fbf9c859644f07d7848c4fa9bd1154..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/MimeTypeGuesserInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-/**
- * Guesses the MIME type of a file.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface MimeTypeGuesserInterface
-{
-    /**
-     * Returns true if this guesser is supported.
-     */
-    public function isGuesserSupported(): bool;
-
-    /**
-     * Guesses the MIME type of the file with the given path.
-     *
-     * @param string $path The path to the file
-     *
-     * @return string|null The MIME type or null, if none could be guessed
-     *
-     * @throws \LogicException           If the guesser is not supported
-     * @throws \InvalidArgumentException If the file does not exist or is not readable
-     */
-    public function guessMimeType(string $path): ?string;
-}
diff --git a/vendor/symfony/mime/MimeTypes.php b/vendor/symfony/mime/MimeTypes.php
deleted file mode 100644
index d6260b59eadc7682d70d4efcfaf12b8eda99cf29..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/MimeTypes.php
+++ /dev/null
@@ -1,3155 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-use Symfony\Component\Mime\Exception\LogicException;
-
-/**
- * Manages MIME types and file extensions.
- *
- * For MIME type guessing, you can register custom guessers
- * by calling the registerGuesser() method.
- * Custom guessers are always called before any default ones:
- *
- *     $guesser = new MimeTypes();
- *     $guesser->registerGuesser(new MyCustomMimeTypeGuesser());
- *
- * If you want to change the order of the default guessers, just re-register your
- * preferred one as a custom one. The last registered guesser is preferred over
- * previously registered ones.
- *
- * Re-registering a built-in guesser also allows you to configure it:
- *
- *     $guesser = new MimeTypes();
- *     $guesser->registerGuesser(new FileinfoMimeTypeGuesser('/path/to/magic/file'));
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class MimeTypes implements MimeTypesInterface
-{
-    private $extensions = [];
-    private $mimeTypes = [];
-
-    /**
-     * @var MimeTypeGuesserInterface[]
-     */
-    private $guessers = [];
-    private static $default;
-
-    public function __construct(array $map = [])
-    {
-        foreach ($map as $mimeType => $extensions) {
-            $this->extensions[$mimeType] = $extensions;
-
-            foreach ($extensions as $extension) {
-                $this->mimeTypes[$extension][] = $mimeType;
-            }
-        }
-        $this->registerGuesser(new FileBinaryMimeTypeGuesser());
-        $this->registerGuesser(new FileinfoMimeTypeGuesser());
-    }
-
-    public static function setDefault(self $default)
-    {
-        self::$default = $default;
-    }
-
-    public static function getDefault(): self
-    {
-        return self::$default ?? self::$default = new self();
-    }
-
-    /**
-     * Registers a MIME type guesser.
-     *
-     * The last registered guesser has precedence over the other ones.
-     */
-    public function registerGuesser(MimeTypeGuesserInterface $guesser)
-    {
-        array_unshift($this->guessers, $guesser);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getExtensions(string $mimeType): array
-    {
-        if ($this->extensions) {
-            $extensions = $this->extensions[$mimeType] ?? $this->extensions[$lcMimeType = strtolower($mimeType)] ?? null;
-        }
-
-        return $extensions ?? self::$map[$mimeType] ?? self::$map[$lcMimeType ?? strtolower($mimeType)] ?? [];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMimeTypes(string $ext): array
-    {
-        if ($this->mimeTypes) {
-            $mimeTypes = $this->mimeTypes[$ext] ?? $this->mimeTypes[$lcExt = strtolower($ext)] ?? null;
-        }
-
-        return $mimeTypes ?? self::$reverseMap[$ext] ?? self::$reverseMap[$lcExt ?? strtolower($ext)] ?? [];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isGuesserSupported(): bool
-    {
-        foreach ($this->guessers as $guesser) {
-            if ($guesser->isGuesserSupported()) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * The file is passed to each registered MIME type guesser in reverse order
-     * of their registration (last registered is queried first). Once a guesser
-     * returns a value that is not null, this method terminates and returns the
-     * value.
-     */
-    public function guessMimeType(string $path): ?string
-    {
-        foreach ($this->guessers as $guesser) {
-            if (!$guesser->isGuesserSupported()) {
-                continue;
-            }
-
-            if (null !== $mimeType = $guesser->guessMimeType($path)) {
-                return $mimeType;
-            }
-        }
-
-        if (!$this->isGuesserSupported()) {
-            throw new LogicException('Unable to guess the MIME type as no guessers are available (have you enabled the php_fileinfo extension?).');
-        }
-
-        return null;
-    }
-
-    /**
-     * A map of MIME types and their default extensions.
-     *
-     * Updated from upstream on 2019-01-16
-     *
-     * @see Resources/bin/update_mime_types.php
-     */
-    private static $map = [
-        'application/acrobat' => ['pdf'],
-        'application/andrew-inset' => ['ez'],
-        'application/annodex' => ['anx'],
-        'application/applixware' => ['aw'],
-        'application/atom+xml' => ['atom'],
-        'application/atomcat+xml' => ['atomcat'],
-        'application/atomsvc+xml' => ['atomsvc'],
-        'application/ccxml+xml' => ['ccxml'],
-        'application/cdmi-capability' => ['cdmia'],
-        'application/cdmi-container' => ['cdmic'],
-        'application/cdmi-domain' => ['cdmid'],
-        'application/cdmi-object' => ['cdmio'],
-        'application/cdmi-queue' => ['cdmiq'],
-        'application/cdr' => ['cdr'],
-        'application/coreldraw' => ['cdr'],
-        'application/cu-seeme' => ['cu'],
-        'application/davmount+xml' => ['davmount'],
-        'application/dbase' => ['dbf'],
-        'application/dbf' => ['dbf'],
-        'application/dicom' => ['dcm'],
-        'application/docbook+xml' => ['dbk', 'docbook'],
-        'application/dssc+der' => ['dssc'],
-        'application/dssc+xml' => ['xdssc'],
-        'application/ecmascript' => ['ecma', 'es'],
-        'application/emf' => ['emf'],
-        'application/emma+xml' => ['emma'],
-        'application/epub+zip' => ['epub'],
-        'application/exi' => ['exi'],
-        'application/font-tdpfr' => ['pfr'],
-        'application/font-woff' => ['woff'],
-        'application/futuresplash' => ['swf', 'spl'],
-        'application/geo+json' => ['geojson', 'geo.json'],
-        'application/gml+xml' => ['gml'],
-        'application/gnunet-directory' => ['gnd'],
-        'application/gpx' => ['gpx'],
-        'application/gpx+xml' => ['gpx'],
-        'application/gxf' => ['gxf'],
-        'application/gzip' => ['gz'],
-        'application/hyperstudio' => ['stk'],
-        'application/ico' => ['ico'],
-        'application/ics' => ['vcs', 'ics'],
-        'application/illustrator' => ['ai'],
-        'application/inkml+xml' => ['ink', 'inkml'],
-        'application/ipfix' => ['ipfix'],
-        'application/java' => ['class'],
-        'application/java-archive' => ['jar'],
-        'application/java-byte-code' => ['class'],
-        'application/java-serialized-object' => ['ser'],
-        'application/java-vm' => ['class'],
-        'application/javascript' => ['js', 'jsm', 'mjs'],
-        'application/jrd+json' => ['jrd'],
-        'application/json' => ['json'],
-        'application/json-patch+json' => ['json-patch'],
-        'application/jsonml+json' => ['jsonml'],
-        'application/ld+json' => ['jsonld'],
-        'application/lost+xml' => ['lostxml'],
-        'application/lotus123' => ['123', 'wk1', 'wk3', 'wk4', 'wks'],
-        'application/m3u' => ['m3u', 'm3u8', 'vlc'],
-        'application/mac-binhex40' => ['hqx'],
-        'application/mac-compactpro' => ['cpt'],
-        'application/mads+xml' => ['mads'],
-        'application/marc' => ['mrc'],
-        'application/marcxml+xml' => ['mrcx'],
-        'application/mathematica' => ['ma', 'nb', 'mb'],
-        'application/mathml+xml' => ['mathml', 'mml'],
-        'application/mbox' => ['mbox'],
-        'application/mdb' => ['mdb'],
-        'application/mediaservercontrol+xml' => ['mscml'],
-        'application/metalink+xml' => ['metalink'],
-        'application/metalink4+xml' => ['meta4'],
-        'application/mets+xml' => ['mets'],
-        'application/mods+xml' => ['mods'],
-        'application/mp21' => ['m21', 'mp21'],
-        'application/mp4' => ['mp4s'],
-        'application/ms-tnef' => ['tnef', 'tnf'],
-        'application/msaccess' => ['mdb'],
-        'application/msexcel' => ['xls', 'xlc', 'xll', 'xlm', 'xlw', 'xla', 'xlt', 'xld'],
-        'application/mspowerpoint' => ['ppz', 'ppt', 'pps', 'pot'],
-        'application/msword' => ['doc', 'dot'],
-        'application/msword-template' => ['dot'],
-        'application/mxf' => ['mxf'],
-        'application/nappdf' => ['pdf'],
-        'application/octet-stream' => ['bin', 'dms', 'lrf', 'mar', 'so', 'dist', 'distz', 'pkg', 'bpk', 'dump', 'elc', 'deploy'],
-        'application/oda' => ['oda'],
-        'application/oebps-package+xml' => ['opf'],
-        'application/ogg' => ['ogx'],
-        'application/omdoc+xml' => ['omdoc'],
-        'application/onenote' => ['onetoc', 'onetoc2', 'onetmp', 'onepkg'],
-        'application/owl+xml' => ['owx'],
-        'application/oxps' => ['oxps', 'xps'],
-        'application/patch-ops-error+xml' => ['xer'],
-        'application/pcap' => ['pcap', 'cap', 'dmp'],
-        'application/pdf' => ['pdf'],
-        'application/pgp' => ['pgp', 'gpg', 'asc'],
-        'application/pgp-encrypted' => ['pgp', 'gpg', 'asc'],
-        'application/pgp-keys' => ['skr', 'pkr', 'asc', 'pgp', 'gpg'],
-        'application/pgp-signature' => ['asc', 'sig', 'pgp', 'gpg'],
-        'application/photoshop' => ['psd'],
-        'application/pics-rules' => ['prf'],
-        'application/pkcs10' => ['p10'],
-        'application/pkcs12' => ['p12', 'pfx'],
-        'application/pkcs7-mime' => ['p7m', 'p7c'],
-        'application/pkcs7-signature' => ['p7s'],
-        'application/pkcs8' => ['p8'],
-        'application/pkcs8-encrypted' => ['p8e'],
-        'application/pkix-attr-cert' => ['ac'],
-        'application/pkix-cert' => ['cer'],
-        'application/pkix-crl' => ['crl'],
-        'application/pkix-pkipath' => ['pkipath'],
-        'application/pkixcmp' => ['pki'],
-        'application/pls' => ['pls'],
-        'application/pls+xml' => ['pls'],
-        'application/postscript' => ['ai', 'eps', 'ps'],
-        'application/powerpoint' => ['ppz', 'ppt', 'pps', 'pot'],
-        'application/prs.cww' => ['cww'],
-        'application/pskc+xml' => ['pskcxml'],
-        'application/ram' => ['ram'],
-        'application/raml+yaml' => ['raml'],
-        'application/rdf+xml' => ['rdf', 'rdfs', 'owl'],
-        'application/reginfo+xml' => ['rif'],
-        'application/relax-ng-compact-syntax' => ['rnc'],
-        'application/resource-lists+xml' => ['rl'],
-        'application/resource-lists-diff+xml' => ['rld'],
-        'application/rls-services+xml' => ['rs'],
-        'application/rpki-ghostbusters' => ['gbr'],
-        'application/rpki-manifest' => ['mft'],
-        'application/rpki-roa' => ['roa'],
-        'application/rsd+xml' => ['rsd'],
-        'application/rss+xml' => ['rss'],
-        'application/rtf' => ['rtf'],
-        'application/sbml+xml' => ['sbml'],
-        'application/scvp-cv-request' => ['scq'],
-        'application/scvp-cv-response' => ['scs'],
-        'application/scvp-vp-request' => ['spq'],
-        'application/scvp-vp-response' => ['spp'],
-        'application/sdp' => ['sdp'],
-        'application/set-payment-initiation' => ['setpay'],
-        'application/set-registration-initiation' => ['setreg'],
-        'application/shf+xml' => ['shf'],
-        'application/sieve' => ['siv'],
-        'application/smil' => ['smil', 'smi', 'sml', 'kino'],
-        'application/smil+xml' => ['smi', 'smil', 'sml', 'kino'],
-        'application/sparql-query' => ['rq'],
-        'application/sparql-results+xml' => ['srx'],
-        'application/sql' => ['sql'],
-        'application/srgs' => ['gram'],
-        'application/srgs+xml' => ['grxml'],
-        'application/sru+xml' => ['sru'],
-        'application/ssdl+xml' => ['ssdl'],
-        'application/ssml+xml' => ['ssml'],
-        'application/stuffit' => ['sit'],
-        'application/tei+xml' => ['tei', 'teicorpus'],
-        'application/thraud+xml' => ['tfi'],
-        'application/timestamped-data' => ['tsd'],
-        'application/trig' => ['trig'],
-        'application/vnd.3gpp.pic-bw-large' => ['plb'],
-        'application/vnd.3gpp.pic-bw-small' => ['psb'],
-        'application/vnd.3gpp.pic-bw-var' => ['pvb'],
-        'application/vnd.3gpp2.tcap' => ['tcap'],
-        'application/vnd.3m.post-it-notes' => ['pwn'],
-        'application/vnd.accpac.simply.aso' => ['aso'],
-        'application/vnd.accpac.simply.imp' => ['imp'],
-        'application/vnd.acucobol' => ['acu'],
-        'application/vnd.acucorp' => ['atc', 'acutc'],
-        'application/vnd.adobe.air-application-installer-package+zip' => ['air'],
-        'application/vnd.adobe.flash.movie' => ['swf', 'spl'],
-        'application/vnd.adobe.formscentral.fcdt' => ['fcdt'],
-        'application/vnd.adobe.fxp' => ['fxp', 'fxpl'],
-        'application/vnd.adobe.illustrator' => ['ai'],
-        'application/vnd.adobe.xdp+xml' => ['xdp'],
-        'application/vnd.adobe.xfdf' => ['xfdf'],
-        'application/vnd.ahead.space' => ['ahead'],
-        'application/vnd.airzip.filesecure.azf' => ['azf'],
-        'application/vnd.airzip.filesecure.azs' => ['azs'],
-        'application/vnd.amazon.ebook' => ['azw'],
-        'application/vnd.americandynamics.acc' => ['acc'],
-        'application/vnd.amiga.ami' => ['ami'],
-        'application/vnd.android.package-archive' => ['apk'],
-        'application/vnd.anser-web-certificate-issue-initiation' => ['cii'],
-        'application/vnd.anser-web-funds-transfer-initiation' => ['fti'],
-        'application/vnd.antix.game-component' => ['atx'],
-        'application/vnd.appimage' => ['appimage'],
-        'application/vnd.apple.installer+xml' => ['mpkg'],
-        'application/vnd.apple.keynote' => ['key'],
-        'application/vnd.apple.mpegurl' => ['m3u8', 'm3u'],
-        'application/vnd.aristanetworks.swi' => ['swi'],
-        'application/vnd.astraea-software.iota' => ['iota'],
-        'application/vnd.audiograph' => ['aep'],
-        'application/vnd.blueice.multipass' => ['mpm'],
-        'application/vnd.bmi' => ['bmi'],
-        'application/vnd.businessobjects' => ['rep'],
-        'application/vnd.chemdraw+xml' => ['cdxml'],
-        'application/vnd.chess-pgn' => ['pgn'],
-        'application/vnd.chipnuts.karaoke-mmd' => ['mmd'],
-        'application/vnd.cinderella' => ['cdy'],
-        'application/vnd.claymore' => ['cla'],
-        'application/vnd.cloanto.rp9' => ['rp9'],
-        'application/vnd.clonk.c4group' => ['c4g', 'c4d', 'c4f', 'c4p', 'c4u'],
-        'application/vnd.cluetrust.cartomobile-config' => ['c11amc'],
-        'application/vnd.cluetrust.cartomobile-config-pkg' => ['c11amz'],
-        'application/vnd.coffeescript' => ['coffee'],
-        'application/vnd.comicbook+zip' => ['cbz'],
-        'application/vnd.comicbook-rar' => ['cbr'],
-        'application/vnd.commonspace' => ['csp'],
-        'application/vnd.contact.cmsg' => ['cdbcmsg'],
-        'application/vnd.corel-draw' => ['cdr'],
-        'application/vnd.cosmocaller' => ['cmc'],
-        'application/vnd.crick.clicker' => ['clkx'],
-        'application/vnd.crick.clicker.keyboard' => ['clkk'],
-        'application/vnd.crick.clicker.palette' => ['clkp'],
-        'application/vnd.crick.clicker.template' => ['clkt'],
-        'application/vnd.crick.clicker.wordbank' => ['clkw'],
-        'application/vnd.criticaltools.wbs+xml' => ['wbs'],
-        'application/vnd.ctc-posml' => ['pml'],
-        'application/vnd.cups-ppd' => ['ppd'],
-        'application/vnd.curl.car' => ['car'],
-        'application/vnd.curl.pcurl' => ['pcurl'],
-        'application/vnd.dart' => ['dart'],
-        'application/vnd.data-vision.rdz' => ['rdz'],
-        'application/vnd.debian.binary-package' => ['deb', 'udeb'],
-        'application/vnd.dece.data' => ['uvf', 'uvvf', 'uvd', 'uvvd'],
-        'application/vnd.dece.ttml+xml' => ['uvt', 'uvvt'],
-        'application/vnd.dece.unspecified' => ['uvx', 'uvvx'],
-        'application/vnd.dece.zip' => ['uvz', 'uvvz'],
-        'application/vnd.denovo.fcselayout-link' => ['fe_launch'],
-        'application/vnd.dna' => ['dna'],
-        'application/vnd.dolby.mlp' => ['mlp'],
-        'application/vnd.dpgraph' => ['dpg'],
-        'application/vnd.dreamfactory' => ['dfac'],
-        'application/vnd.ds-keypoint' => ['kpxx'],
-        'application/vnd.dvb.ait' => ['ait'],
-        'application/vnd.dvb.service' => ['svc'],
-        'application/vnd.dynageo' => ['geo'],
-        'application/vnd.ecowin.chart' => ['mag'],
-        'application/vnd.emusic-emusic_package' => ['emp'],
-        'application/vnd.enliven' => ['nml'],
-        'application/vnd.epson.esf' => ['esf'],
-        'application/vnd.epson.msf' => ['msf'],
-        'application/vnd.epson.quickanime' => ['qam'],
-        'application/vnd.epson.salt' => ['slt'],
-        'application/vnd.epson.ssf' => ['ssf'],
-        'application/vnd.eszigno3+xml' => ['es3', 'et3'],
-        'application/vnd.ezpix-album' => ['ez2'],
-        'application/vnd.ezpix-package' => ['ez3'],
-        'application/vnd.fdf' => ['fdf'],
-        'application/vnd.fdsn.mseed' => ['mseed'],
-        'application/vnd.fdsn.seed' => ['seed', 'dataless'],
-        'application/vnd.flatpak' => ['flatpak', 'xdgapp'],
-        'application/vnd.flatpak.ref' => ['flatpakref'],
-        'application/vnd.flatpak.repo' => ['flatpakrepo'],
-        'application/vnd.flographit' => ['gph'],
-        'application/vnd.fluxtime.clip' => ['ftc'],
-        'application/vnd.framemaker' => ['fm', 'frame', 'maker', 'book'],
-        'application/vnd.frogans.fnc' => ['fnc'],
-        'application/vnd.frogans.ltf' => ['ltf'],
-        'application/vnd.fsc.weblaunch' => ['fsc'],
-        'application/vnd.fujitsu.oasys' => ['oas'],
-        'application/vnd.fujitsu.oasys2' => ['oa2'],
-        'application/vnd.fujitsu.oasys3' => ['oa3'],
-        'application/vnd.fujitsu.oasysgp' => ['fg5'],
-        'application/vnd.fujitsu.oasysprs' => ['bh2'],
-        'application/vnd.fujixerox.ddd' => ['ddd'],
-        'application/vnd.fujixerox.docuworks' => ['xdw'],
-        'application/vnd.fujixerox.docuworks.binder' => ['xbd'],
-        'application/vnd.fuzzysheet' => ['fzs'],
-        'application/vnd.genomatix.tuxedo' => ['txd'],
-        'application/vnd.geo+json' => ['geojson', 'geo.json'],
-        'application/vnd.geogebra.file' => ['ggb'],
-        'application/vnd.geogebra.tool' => ['ggt'],
-        'application/vnd.geometry-explorer' => ['gex', 'gre'],
-        'application/vnd.geonext' => ['gxt'],
-        'application/vnd.geoplan' => ['g2w'],
-        'application/vnd.geospace' => ['g3w'],
-        'application/vnd.gmx' => ['gmx'],
-        'application/vnd.google-earth.kml+xml' => ['kml'],
-        'application/vnd.google-earth.kmz' => ['kmz'],
-        'application/vnd.grafeq' => ['gqf', 'gqs'],
-        'application/vnd.groove-account' => ['gac'],
-        'application/vnd.groove-help' => ['ghf'],
-        'application/vnd.groove-identity-message' => ['gim'],
-        'application/vnd.groove-injector' => ['grv'],
-        'application/vnd.groove-tool-message' => ['gtm'],
-        'application/vnd.groove-tool-template' => ['tpl'],
-        'application/vnd.groove-vcard' => ['vcg'],
-        'application/vnd.haansoft-hwp' => ['hwp'],
-        'application/vnd.haansoft-hwt' => ['hwt'],
-        'application/vnd.hal+xml' => ['hal'],
-        'application/vnd.handheld-entertainment+xml' => ['zmm'],
-        'application/vnd.hbci' => ['hbci'],
-        'application/vnd.hhe.lesson-player' => ['les'],
-        'application/vnd.hp-hpgl' => ['hpgl'],
-        'application/vnd.hp-hpid' => ['hpid'],
-        'application/vnd.hp-hps' => ['hps'],
-        'application/vnd.hp-jlyt' => ['jlt'],
-        'application/vnd.hp-pcl' => ['pcl'],
-        'application/vnd.hp-pclxl' => ['pclxl'],
-        'application/vnd.hydrostatix.sof-data' => ['sfd-hdstx'],
-        'application/vnd.ibm.minipay' => ['mpy'],
-        'application/vnd.ibm.modcap' => ['afp', 'listafp', 'list3820'],
-        'application/vnd.ibm.rights-management' => ['irm'],
-        'application/vnd.ibm.secure-container' => ['sc'],
-        'application/vnd.iccprofile' => ['icc', 'icm'],
-        'application/vnd.igloader' => ['igl'],
-        'application/vnd.immervision-ivp' => ['ivp'],
-        'application/vnd.immervision-ivu' => ['ivu'],
-        'application/vnd.insors.igm' => ['igm'],
-        'application/vnd.intercon.formnet' => ['xpw', 'xpx'],
-        'application/vnd.intergeo' => ['i2g'],
-        'application/vnd.intu.qbo' => ['qbo'],
-        'application/vnd.intu.qfx' => ['qfx'],
-        'application/vnd.ipunplugged.rcprofile' => ['rcprofile'],
-        'application/vnd.irepository.package+xml' => ['irp'],
-        'application/vnd.is-xpr' => ['xpr'],
-        'application/vnd.isac.fcs' => ['fcs'],
-        'application/vnd.jam' => ['jam'],
-        'application/vnd.jcp.javame.midlet-rms' => ['rms'],
-        'application/vnd.jisp' => ['jisp'],
-        'application/vnd.joost.joda-archive' => ['joda'],
-        'application/vnd.kahootz' => ['ktz', 'ktr'],
-        'application/vnd.kde.karbon' => ['karbon'],
-        'application/vnd.kde.kchart' => ['chrt'],
-        'application/vnd.kde.kformula' => ['kfo'],
-        'application/vnd.kde.kivio' => ['flw'],
-        'application/vnd.kde.kontour' => ['kon'],
-        'application/vnd.kde.kpresenter' => ['kpr', 'kpt'],
-        'application/vnd.kde.kspread' => ['ksp'],
-        'application/vnd.kde.kword' => ['kwd', 'kwt'],
-        'application/vnd.kenameaapp' => ['htke'],
-        'application/vnd.kidspiration' => ['kia'],
-        'application/vnd.kinar' => ['kne', 'knp'],
-        'application/vnd.koan' => ['skp', 'skd', 'skt', 'skm'],
-        'application/vnd.kodak-descriptor' => ['sse'],
-        'application/vnd.las.las+xml' => ['lasxml'],
-        'application/vnd.llamagraphics.life-balance.desktop' => ['lbd'],
-        'application/vnd.llamagraphics.life-balance.exchange+xml' => ['lbe'],
-        'application/vnd.lotus-1-2-3' => ['123', 'wk1', 'wk3', 'wk4', 'wks'],
-        'application/vnd.lotus-approach' => ['apr'],
-        'application/vnd.lotus-freelance' => ['pre'],
-        'application/vnd.lotus-notes' => ['nsf'],
-        'application/vnd.lotus-organizer' => ['org'],
-        'application/vnd.lotus-screencam' => ['scm'],
-        'application/vnd.lotus-wordpro' => ['lwp'],
-        'application/vnd.macports.portpkg' => ['portpkg'],
-        'application/vnd.mcd' => ['mcd'],
-        'application/vnd.medcalcdata' => ['mc1'],
-        'application/vnd.mediastation.cdkey' => ['cdkey'],
-        'application/vnd.mfer' => ['mwf'],
-        'application/vnd.mfmp' => ['mfm'],
-        'application/vnd.micrografx.flo' => ['flo'],
-        'application/vnd.micrografx.igx' => ['igx'],
-        'application/vnd.mif' => ['mif'],
-        'application/vnd.mobius.daf' => ['daf'],
-        'application/vnd.mobius.dis' => ['dis'],
-        'application/vnd.mobius.mbk' => ['mbk'],
-        'application/vnd.mobius.mqy' => ['mqy'],
-        'application/vnd.mobius.msl' => ['msl'],
-        'application/vnd.mobius.plc' => ['plc'],
-        'application/vnd.mobius.txf' => ['txf'],
-        'application/vnd.mophun.application' => ['mpn'],
-        'application/vnd.mophun.certificate' => ['mpc'],
-        'application/vnd.mozilla.xul+xml' => ['xul'],
-        'application/vnd.ms-access' => ['mdb'],
-        'application/vnd.ms-artgalry' => ['cil'],
-        'application/vnd.ms-asf' => ['asf'],
-        'application/vnd.ms-cab-compressed' => ['cab'],
-        'application/vnd.ms-excel' => ['xls', 'xlm', 'xla', 'xlc', 'xlt', 'xlw', 'xll', 'xld'],
-        'application/vnd.ms-excel.addin.macroenabled.12' => ['xlam'],
-        'application/vnd.ms-excel.sheet.binary.macroenabled.12' => ['xlsb'],
-        'application/vnd.ms-excel.sheet.macroenabled.12' => ['xlsm'],
-        'application/vnd.ms-excel.template.macroenabled.12' => ['xltm'],
-        'application/vnd.ms-fontobject' => ['eot'],
-        'application/vnd.ms-htmlhelp' => ['chm'],
-        'application/vnd.ms-ims' => ['ims'],
-        'application/vnd.ms-lrm' => ['lrm'],
-        'application/vnd.ms-officetheme' => ['thmx'],
-        'application/vnd.ms-outlook' => ['msg'],
-        'application/vnd.ms-pki.seccat' => ['cat'],
-        'application/vnd.ms-pki.stl' => ['stl'],
-        'application/vnd.ms-powerpoint' => ['ppt', 'pps', 'pot', 'ppz'],
-        'application/vnd.ms-powerpoint.addin.macroenabled.12' => ['ppam'],
-        'application/vnd.ms-powerpoint.presentation.macroenabled.12' => ['pptm'],
-        'application/vnd.ms-powerpoint.slide.macroenabled.12' => ['sldm'],
-        'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => ['ppsm'],
-        'application/vnd.ms-powerpoint.template.macroenabled.12' => ['potm'],
-        'application/vnd.ms-project' => ['mpp', 'mpt'],
-        'application/vnd.ms-publisher' => ['pub'],
-        'application/vnd.ms-tnef' => ['tnef', 'tnf'],
-        'application/vnd.ms-visio.drawing.macroenabled.main+xml' => ['vsdm'],
-        'application/vnd.ms-visio.drawing.main+xml' => ['vsdx'],
-        'application/vnd.ms-visio.stencil.macroenabled.main+xml' => ['vssm'],
-        'application/vnd.ms-visio.stencil.main+xml' => ['vssx'],
-        'application/vnd.ms-visio.template.macroenabled.main+xml' => ['vstm'],
-        'application/vnd.ms-visio.template.main+xml' => ['vstx'],
-        'application/vnd.ms-word' => ['doc'],
-        'application/vnd.ms-word.document.macroenabled.12' => ['docm'],
-        'application/vnd.ms-word.template.macroenabled.12' => ['dotm'],
-        'application/vnd.ms-works' => ['wps', 'wks', 'wcm', 'wdb', 'xlr'],
-        'application/vnd.ms-wpl' => ['wpl'],
-        'application/vnd.ms-xpsdocument' => ['xps', 'oxps'],
-        'application/vnd.msaccess' => ['mdb'],
-        'application/vnd.mseq' => ['mseq'],
-        'application/vnd.musician' => ['mus'],
-        'application/vnd.muvee.style' => ['msty'],
-        'application/vnd.mynfc' => ['taglet'],
-        'application/vnd.neurolanguage.nlu' => ['nlu'],
-        'application/vnd.nintendo.snes.rom' => ['sfc', 'smc'],
-        'application/vnd.nitf' => ['ntf', 'nitf'],
-        'application/vnd.noblenet-directory' => ['nnd'],
-        'application/vnd.noblenet-sealer' => ['nns'],
-        'application/vnd.noblenet-web' => ['nnw'],
-        'application/vnd.nokia.n-gage.data' => ['ngdat'],
-        'application/vnd.nokia.n-gage.symbian.install' => ['n-gage'],
-        'application/vnd.nokia.radio-preset' => ['rpst'],
-        'application/vnd.nokia.radio-presets' => ['rpss'],
-        'application/vnd.novadigm.edm' => ['edm'],
-        'application/vnd.novadigm.edx' => ['edx'],
-        'application/vnd.novadigm.ext' => ['ext'],
-        'application/vnd.oasis.docbook+xml' => ['dbk', 'docbook'],
-        'application/vnd.oasis.opendocument.chart' => ['odc'],
-        'application/vnd.oasis.opendocument.chart-template' => ['otc'],
-        'application/vnd.oasis.opendocument.database' => ['odb'],
-        'application/vnd.oasis.opendocument.formula' => ['odf'],
-        'application/vnd.oasis.opendocument.formula-template' => ['odft', 'otf'],
-        'application/vnd.oasis.opendocument.graphics' => ['odg'],
-        'application/vnd.oasis.opendocument.graphics-flat-xml' => ['fodg'],
-        'application/vnd.oasis.opendocument.graphics-template' => ['otg'],
-        'application/vnd.oasis.opendocument.image' => ['odi'],
-        'application/vnd.oasis.opendocument.image-template' => ['oti'],
-        'application/vnd.oasis.opendocument.presentation' => ['odp'],
-        'application/vnd.oasis.opendocument.presentation-flat-xml' => ['fodp'],
-        'application/vnd.oasis.opendocument.presentation-template' => ['otp'],
-        'application/vnd.oasis.opendocument.spreadsheet' => ['ods'],
-        'application/vnd.oasis.opendocument.spreadsheet-flat-xml' => ['fods'],
-        'application/vnd.oasis.opendocument.spreadsheet-template' => ['ots'],
-        'application/vnd.oasis.opendocument.text' => ['odt'],
-        'application/vnd.oasis.opendocument.text-flat-xml' => ['fodt'],
-        'application/vnd.oasis.opendocument.text-master' => ['odm'],
-        'application/vnd.oasis.opendocument.text-template' => ['ott'],
-        'application/vnd.oasis.opendocument.text-web' => ['oth'],
-        'application/vnd.olpc-sugar' => ['xo'],
-        'application/vnd.oma.dd2+xml' => ['dd2'],
-        'application/vnd.openofficeorg.extension' => ['oxt'],
-        'application/vnd.openxmlformats-officedocument.presentationml.presentation' => ['pptx'],
-        'application/vnd.openxmlformats-officedocument.presentationml.slide' => ['sldx'],
-        'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => ['ppsx'],
-        'application/vnd.openxmlformats-officedocument.presentationml.template' => ['potx'],
-        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => ['xlsx'],
-        'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => ['xltx'],
-        'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => ['docx'],
-        'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => ['dotx'],
-        'application/vnd.osgeo.mapguide.package' => ['mgp'],
-        'application/vnd.osgi.dp' => ['dp'],
-        'application/vnd.osgi.subsystem' => ['esa'],
-        'application/vnd.palm' => ['pdb', 'pqa', 'oprc', 'prc'],
-        'application/vnd.pawaafile' => ['paw'],
-        'application/vnd.pg.format' => ['str'],
-        'application/vnd.pg.osasli' => ['ei6'],
-        'application/vnd.picsel' => ['efif'],
-        'application/vnd.pmi.widget' => ['wg'],
-        'application/vnd.pocketlearn' => ['plf'],
-        'application/vnd.powerbuilder6' => ['pbd'],
-        'application/vnd.previewsystems.box' => ['box'],
-        'application/vnd.proteus.magazine' => ['mgz'],
-        'application/vnd.publishare-delta-tree' => ['qps'],
-        'application/vnd.pvi.ptid1' => ['ptid'],
-        'application/vnd.quark.quarkxpress' => ['qxd', 'qxt', 'qwd', 'qwt', 'qxl', 'qxb'],
-        'application/vnd.rar' => ['rar'],
-        'application/vnd.realvnc.bed' => ['bed'],
-        'application/vnd.recordare.musicxml' => ['mxl'],
-        'application/vnd.recordare.musicxml+xml' => ['musicxml'],
-        'application/vnd.rig.cryptonote' => ['cryptonote'],
-        'application/vnd.rim.cod' => ['cod'],
-        'application/vnd.rn-realmedia' => ['rm', 'rmj', 'rmm', 'rms', 'rmx', 'rmvb'],
-        'application/vnd.rn-realmedia-vbr' => ['rmvb', 'rm', 'rmj', 'rmm', 'rms', 'rmx'],
-        'application/vnd.route66.link66+xml' => ['link66'],
-        'application/vnd.sailingtracker.track' => ['st'],
-        'application/vnd.sdp' => ['sdp'],
-        'application/vnd.seemail' => ['see'],
-        'application/vnd.sema' => ['sema'],
-        'application/vnd.semd' => ['semd'],
-        'application/vnd.semf' => ['semf'],
-        'application/vnd.shana.informed.formdata' => ['ifm'],
-        'application/vnd.shana.informed.formtemplate' => ['itp'],
-        'application/vnd.shana.informed.interchange' => ['iif'],
-        'application/vnd.shana.informed.package' => ['ipk'],
-        'application/vnd.simtech-mindmapper' => ['twd', 'twds'],
-        'application/vnd.smaf' => ['mmf', 'smaf'],
-        'application/vnd.smart.teacher' => ['teacher'],
-        'application/vnd.snap' => ['snap'],
-        'application/vnd.solent.sdkm+xml' => ['sdkm', 'sdkd'],
-        'application/vnd.spotfire.dxp' => ['dxp'],
-        'application/vnd.spotfire.sfs' => ['sfs'],
-        'application/vnd.sqlite3' => ['sqlite3'],
-        'application/vnd.squashfs' => ['sqsh'],
-        'application/vnd.stardivision.calc' => ['sdc'],
-        'application/vnd.stardivision.chart' => ['sds'],
-        'application/vnd.stardivision.draw' => ['sda'],
-        'application/vnd.stardivision.impress' => ['sdd', 'sdp'],
-        'application/vnd.stardivision.mail' => ['smd'],
-        'application/vnd.stardivision.math' => ['smf'],
-        'application/vnd.stardivision.writer' => ['sdw', 'vor', 'sgl'],
-        'application/vnd.stardivision.writer-global' => ['sgl', 'sdw', 'vor'],
-        'application/vnd.stepmania.package' => ['smzip'],
-        'application/vnd.stepmania.stepchart' => ['sm'],
-        'application/vnd.sun.xml.base' => ['odb'],
-        'application/vnd.sun.xml.calc' => ['sxc'],
-        'application/vnd.sun.xml.calc.template' => ['stc'],
-        'application/vnd.sun.xml.draw' => ['sxd'],
-        'application/vnd.sun.xml.draw.template' => ['std'],
-        'application/vnd.sun.xml.impress' => ['sxi'],
-        'application/vnd.sun.xml.impress.template' => ['sti'],
-        'application/vnd.sun.xml.math' => ['sxm'],
-        'application/vnd.sun.xml.writer' => ['sxw'],
-        'application/vnd.sun.xml.writer.global' => ['sxg'],
-        'application/vnd.sun.xml.writer.template' => ['stw'],
-        'application/vnd.sus-calendar' => ['sus', 'susp'],
-        'application/vnd.svd' => ['svd'],
-        'application/vnd.symbian.install' => ['sis', 'sisx'],
-        'application/vnd.syncml+xml' => ['xsm'],
-        'application/vnd.syncml.dm+wbxml' => ['bdm'],
-        'application/vnd.syncml.dm+xml' => ['xdm'],
-        'application/vnd.tao.intent-module-archive' => ['tao'],
-        'application/vnd.tcpdump.pcap' => ['pcap', 'cap', 'dmp'],
-        'application/vnd.tmobile-livetv' => ['tmo'],
-        'application/vnd.trid.tpt' => ['tpt'],
-        'application/vnd.triscape.mxs' => ['mxs'],
-        'application/vnd.trueapp' => ['tra'],
-        'application/vnd.ufdl' => ['ufd', 'ufdl'],
-        'application/vnd.uiq.theme' => ['utz'],
-        'application/vnd.umajin' => ['umj'],
-        'application/vnd.unity' => ['unityweb'],
-        'application/vnd.uoml+xml' => ['uoml'],
-        'application/vnd.vcx' => ['vcx'],
-        'application/vnd.visio' => ['vsd', 'vst', 'vss', 'vsw'],
-        'application/vnd.visionary' => ['vis'],
-        'application/vnd.vsf' => ['vsf'],
-        'application/vnd.wap.wbxml' => ['wbxml'],
-        'application/vnd.wap.wmlc' => ['wmlc'],
-        'application/vnd.wap.wmlscriptc' => ['wmlsc'],
-        'application/vnd.webturbo' => ['wtb'],
-        'application/vnd.wolfram.player' => ['nbp'],
-        'application/vnd.wordperfect' => ['wpd', 'wp', 'wp4', 'wp5', 'wp6', 'wpp'],
-        'application/vnd.wqd' => ['wqd'],
-        'application/vnd.wt.stf' => ['stf'],
-        'application/vnd.xara' => ['xar'],
-        'application/vnd.xdgapp' => ['flatpak', 'xdgapp'],
-        'application/vnd.xfdl' => ['xfdl'],
-        'application/vnd.yamaha.hv-dic' => ['hvd'],
-        'application/vnd.yamaha.hv-script' => ['hvs'],
-        'application/vnd.yamaha.hv-voice' => ['hvp'],
-        'application/vnd.yamaha.openscoreformat' => ['osf'],
-        'application/vnd.yamaha.openscoreformat.osfpvg+xml' => ['osfpvg'],
-        'application/vnd.yamaha.smaf-audio' => ['saf'],
-        'application/vnd.yamaha.smaf-phrase' => ['spf'],
-        'application/vnd.yellowriver-custom-menu' => ['cmp'],
-        'application/vnd.youtube.yt' => ['yt'],
-        'application/vnd.zul' => ['zir', 'zirz'],
-        'application/vnd.zzazz.deck+xml' => ['zaz'],
-        'application/voicexml+xml' => ['vxml'],
-        'application/widget' => ['wgt'],
-        'application/winhlp' => ['hlp'],
-        'application/wk1' => ['123', 'wk1', 'wk3', 'wk4', 'wks'],
-        'application/wmf' => ['wmf'],
-        'application/wordperfect' => ['wp', 'wp4', 'wp5', 'wp6', 'wpd', 'wpp'],
-        'application/wsdl+xml' => ['wsdl'],
-        'application/wspolicy+xml' => ['wspolicy'],
-        'application/wwf' => ['wwf'],
-        'application/x-123' => ['123', 'wk1', 'wk3', 'wk4', 'wks'],
-        'application/x-7z-compressed' => ['7z'],
-        'application/x-abiword' => ['abw', 'abw.CRASHED', 'abw.gz', 'zabw'],
-        'application/x-ace' => ['ace'],
-        'application/x-ace-compressed' => ['ace'],
-        'application/x-alz' => ['alz'],
-        'application/x-amiga-disk-format' => ['adf'],
-        'application/x-amipro' => ['sam'],
-        'application/x-annodex' => ['anx'],
-        'application/x-aportisdoc' => ['pdb', 'pdc'],
-        'application/x-apple-diskimage' => ['dmg'],
-        'application/x-applix-spreadsheet' => ['as'],
-        'application/x-applix-word' => ['aw'],
-        'application/x-archive' => ['a', 'ar'],
-        'application/x-arj' => ['arj'],
-        'application/x-asp' => ['asp'],
-        'application/x-atari-2600-rom' => ['a26'],
-        'application/x-atari-7800-rom' => ['a78'],
-        'application/x-atari-lynx-rom' => ['lnx'],
-        'application/x-authorware-bin' => ['aab', 'x32', 'u32', 'vox'],
-        'application/x-authorware-map' => ['aam'],
-        'application/x-authorware-seg' => ['aas'],
-        'application/x-awk' => ['awk'],
-        'application/x-bcpio' => ['bcpio'],
-        'application/x-bittorrent' => ['torrent'],
-        'application/x-blender' => ['blender', 'blend', 'BLEND'],
-        'application/x-blorb' => ['blb', 'blorb'],
-        'application/x-bsdiff' => ['bsdiff'],
-        'application/x-bzdvi' => ['dvi.bz2'],
-        'application/x-bzip' => ['bz', 'bz2'],
-        'application/x-bzip-compressed-tar' => ['tar.bz2', 'tar.bz', 'tbz2', 'tbz', 'tb2'],
-        'application/x-bzip2' => ['bz2', 'boz', 'bz'],
-        'application/x-bzpdf' => ['pdf.bz2'],
-        'application/x-bzpostscript' => ['ps.bz2'],
-        'application/x-cb7' => ['cb7'],
-        'application/x-cbr' => ['cbr', 'cba', 'cbt', 'cbz', 'cb7'],
-        'application/x-cbt' => ['cbt'],
-        'application/x-cbz' => ['cbz'],
-        'application/x-ccmx' => ['ccmx'],
-        'application/x-cd-image' => ['iso', 'iso9660'],
-        'application/x-cdlink' => ['vcd'],
-        'application/x-cdr' => ['cdr'],
-        'application/x-cdrdao-toc' => ['toc'],
-        'application/x-cfs-compressed' => ['cfs'],
-        'application/x-chat' => ['chat'],
-        'application/x-chess-pgn' => ['pgn'],
-        'application/x-chm' => ['chm'],
-        'application/x-cisco-vpn-settings' => ['pcf'],
-        'application/x-compress' => ['Z'],
-        'application/x-compressed-tar' => ['tar.gz', 'tgz'],
-        'application/x-conference' => ['nsc'],
-        'application/x-coreldraw' => ['cdr'],
-        'application/x-cpio' => ['cpio'],
-        'application/x-cpio-compressed' => ['cpio.gz'],
-        'application/x-csh' => ['csh'],
-        'application/x-cue' => ['cue'],
-        'application/x-dar' => ['dar'],
-        'application/x-dbase' => ['dbf'],
-        'application/x-dbf' => ['dbf'],
-        'application/x-dc-rom' => ['dc'],
-        'application/x-deb' => ['deb', 'udeb'],
-        'application/x-debian-package' => ['deb', 'udeb'],
-        'application/x-designer' => ['ui'],
-        'application/x-desktop' => ['desktop', 'kdelnk'],
-        'application/x-dgc-compressed' => ['dgc'],
-        'application/x-dia-diagram' => ['dia'],
-        'application/x-dia-shape' => ['shape'],
-        'application/x-director' => ['dir', 'dcr', 'dxr', 'cst', 'cct', 'cxt', 'w3d', 'fgd', 'swa'],
-        'application/x-docbook+xml' => ['dbk', 'docbook'],
-        'application/x-doom' => ['wad'],
-        'application/x-doom-wad' => ['wad'],
-        'application/x-dtbncx+xml' => ['ncx'],
-        'application/x-dtbook+xml' => ['dtb'],
-        'application/x-dtbresource+xml' => ['res'],
-        'application/x-dvi' => ['dvi'],
-        'application/x-e-theme' => ['etheme'],
-        'application/x-egon' => ['egon'],
-        'application/x-emf' => ['emf'],
-        'application/x-envoy' => ['evy'],
-        'application/x-eva' => ['eva'],
-        'application/x-fd-file' => ['fd', 'qd'],
-        'application/x-fds-disk' => ['fds'],
-        'application/x-fictionbook' => ['fb2'],
-        'application/x-fictionbook+xml' => ['fb2'],
-        'application/x-flash-video' => ['flv'],
-        'application/x-fluid' => ['fl'],
-        'application/x-font-afm' => ['afm'],
-        'application/x-font-bdf' => ['bdf'],
-        'application/x-font-ghostscript' => ['gsf'],
-        'application/x-font-linux-psf' => ['psf'],
-        'application/x-font-otf' => ['otf'],
-        'application/x-font-pcf' => ['pcf', 'pcf.Z', 'pcf.gz'],
-        'application/x-font-snf' => ['snf'],
-        'application/x-font-speedo' => ['spd'],
-        'application/x-font-ttf' => ['ttf'],
-        'application/x-font-ttx' => ['ttx'],
-        'application/x-font-type1' => ['pfa', 'pfb', 'pfm', 'afm', 'gsf'],
-        'application/x-font-woff' => ['woff'],
-        'application/x-frame' => ['fm'],
-        'application/x-freearc' => ['arc'],
-        'application/x-futuresplash' => ['spl'],
-        'application/x-gameboy-color-rom' => ['gbc', 'cgb'],
-        'application/x-gameboy-rom' => ['gb', 'sgb'],
-        'application/x-gamecube-iso-image' => ['iso'],
-        'application/x-gamecube-rom' => ['iso'],
-        'application/x-gamegear-rom' => ['gg'],
-        'application/x-gba-rom' => ['gba', 'agb'],
-        'application/x-gca-compressed' => ['gca'],
-        'application/x-gedcom' => ['ged', 'gedcom'],
-        'application/x-genesis-32x-rom' => ['32x', 'mdx'],
-        'application/x-genesis-rom' => ['gen', 'smd'],
-        'application/x-gettext' => ['po'],
-        'application/x-gettext-translation' => ['gmo', 'mo'],
-        'application/x-glade' => ['glade'],
-        'application/x-glulx' => ['ulx'],
-        'application/x-gnome-app-info' => ['desktop', 'kdelnk'],
-        'application/x-gnucash' => ['gnucash', 'gnc', 'xac'],
-        'application/x-gnumeric' => ['gnumeric'],
-        'application/x-gnuplot' => ['gp', 'gplt', 'gnuplot'],
-        'application/x-go-sgf' => ['sgf'],
-        'application/x-gpx' => ['gpx'],
-        'application/x-gpx+xml' => ['gpx'],
-        'application/x-gramps-xml' => ['gramps'],
-        'application/x-graphite' => ['gra'],
-        'application/x-gtar' => ['gtar', 'tar', 'gem'],
-        'application/x-gtk-builder' => ['ui'],
-        'application/x-gz-font-linux-psf' => ['psf.gz'],
-        'application/x-gzdvi' => ['dvi.gz'],
-        'application/x-gzip' => ['gz'],
-        'application/x-gzpdf' => ['pdf.gz'],
-        'application/x-gzpostscript' => ['ps.gz'],
-        'application/x-hdf' => ['hdf', 'hdf4', 'h4', 'hdf5', 'h5'],
-        'application/x-hfe-file' => ['hfe'],
-        'application/x-hfe-floppy-image' => ['hfe'],
-        'application/x-hwp' => ['hwp'],
-        'application/x-hwt' => ['hwt'],
-        'application/x-ica' => ['ica'],
-        'application/x-install-instructions' => ['install'],
-        'application/x-ipynb+json' => ['ipynb'],
-        'application/x-iso9660-appimage' => ['appimage'],
-        'application/x-iso9660-image' => ['iso', 'iso9660'],
-        'application/x-it87' => ['it87'],
-        'application/x-iwork-keynote-sffkey' => ['key'],
-        'application/x-jar' => ['jar'],
-        'application/x-java' => ['class'],
-        'application/x-java-archive' => ['jar'],
-        'application/x-java-class' => ['class'],
-        'application/x-java-jce-keystore' => ['jceks'],
-        'application/x-java-jnlp-file' => ['jnlp'],
-        'application/x-java-keystore' => ['jks', 'ks'],
-        'application/x-java-pack200' => ['pack'],
-        'application/x-java-vm' => ['class'],
-        'application/x-javascript' => ['js', 'jsm', 'mjs'],
-        'application/x-jbuilder-project' => ['jpr', 'jpx'],
-        'application/x-karbon' => ['karbon'],
-        'application/x-kchart' => ['chrt'],
-        'application/x-kexi-connectiondata' => ['kexic'],
-        'application/x-kexiproject-shortcut' => ['kexis'],
-        'application/x-kexiproject-sqlite' => ['kexi'],
-        'application/x-kexiproject-sqlite2' => ['kexi'],
-        'application/x-kexiproject-sqlite3' => ['kexi'],
-        'application/x-kformula' => ['kfo'],
-        'application/x-killustrator' => ['kil'],
-        'application/x-kivio' => ['flw'],
-        'application/x-kontour' => ['kon'],
-        'application/x-kpovmodeler' => ['kpm'],
-        'application/x-kpresenter' => ['kpr', 'kpt'],
-        'application/x-krita' => ['kra'],
-        'application/x-kspread' => ['ksp'],
-        'application/x-kugar' => ['kud'],
-        'application/x-kword' => ['kwd', 'kwt'],
-        'application/x-latex' => ['latex'],
-        'application/x-lha' => ['lha', 'lzh'],
-        'application/x-lhz' => ['lhz'],
-        'application/x-linguist' => ['ts'],
-        'application/x-lotus123' => ['123', 'wk1', 'wk3', 'wk4', 'wks'],
-        'application/x-lrzip' => ['lrz'],
-        'application/x-lrzip-compressed-tar' => ['tar.lrz', 'tlrz'],
-        'application/x-lyx' => ['lyx'],
-        'application/x-lz4' => ['lz4'],
-        'application/x-lz4-compressed-tar' => ['tar.lz4'],
-        'application/x-lzh-compressed' => ['lzh', 'lha'],
-        'application/x-lzip' => ['lz'],
-        'application/x-lzip-compressed-tar' => ['tar.lz'],
-        'application/x-lzma' => ['lzma'],
-        'application/x-lzma-compressed-tar' => ['tar.lzma', 'tlz'],
-        'application/x-lzop' => ['lzo'],
-        'application/x-lzpdf' => ['pdf.lz'],
-        'application/x-m4' => ['m4'],
-        'application/x-magicpoint' => ['mgp'],
-        'application/x-markaby' => ['mab'],
-        'application/x-mathematica' => ['nb'],
-        'application/x-mdb' => ['mdb'],
-        'application/x-mie' => ['mie'],
-        'application/x-mif' => ['mif'],
-        'application/x-mimearchive' => ['mhtml', 'mht'],
-        'application/x-mobipocket-ebook' => ['prc', 'mobi'],
-        'application/x-ms-application' => ['application'],
-        'application/x-ms-asx' => ['asx', 'wax', 'wvx', 'wmx'],
-        'application/x-ms-dos-executable' => ['exe'],
-        'application/x-ms-shortcut' => ['lnk'],
-        'application/x-ms-wim' => ['wim', 'swm'],
-        'application/x-ms-wmd' => ['wmd'],
-        'application/x-ms-wmz' => ['wmz'],
-        'application/x-ms-xbap' => ['xbap'],
-        'application/x-msaccess' => ['mdb'],
-        'application/x-msbinder' => ['obd'],
-        'application/x-mscardfile' => ['crd'],
-        'application/x-msclip' => ['clp'],
-        'application/x-msdownload' => ['exe', 'dll', 'com', 'bat', 'msi'],
-        'application/x-msexcel' => ['xls', 'xlc', 'xll', 'xlm', 'xlw', 'xla', 'xlt', 'xld'],
-        'application/x-msi' => ['msi'],
-        'application/x-msmediaview' => ['mvb', 'm13', 'm14'],
-        'application/x-msmetafile' => ['wmf', 'wmz', 'emf', 'emz'],
-        'application/x-msmoney' => ['mny'],
-        'application/x-mspowerpoint' => ['ppz', 'ppt', 'pps', 'pot'],
-        'application/x-mspublisher' => ['pub'],
-        'application/x-msschedule' => ['scd'],
-        'application/x-msterminal' => ['trm'],
-        'application/x-mswinurl' => ['url'],
-        'application/x-msword' => ['doc'],
-        'application/x-mswrite' => ['wri'],
-        'application/x-msx-rom' => ['msx'],
-        'application/x-n64-rom' => ['n64', 'z64', 'v64'],
-        'application/x-navi-animation' => ['ani'],
-        'application/x-neo-geo-pocket-color-rom' => ['ngc'],
-        'application/x-neo-geo-pocket-rom' => ['ngp'],
-        'application/x-nes-rom' => ['nes', 'nez', 'unf', 'unif'],
-        'application/x-netcdf' => ['nc', 'cdf'],
-        'application/x-netshow-channel' => ['nsc'],
-        'application/x-nintendo-ds-rom' => ['nds'],
-        'application/x-nzb' => ['nzb'],
-        'application/x-object' => ['o'],
-        'application/x-ogg' => ['ogx'],
-        'application/x-oleo' => ['oleo'],
-        'application/x-pagemaker' => ['p65', 'pm', 'pm6', 'pmd'],
-        'application/x-pak' => ['pak'],
-        'application/x-palm-database' => ['prc', 'pdb', 'pqa', 'oprc'],
-        'application/x-par2' => ['PAR2', 'par2'],
-        'application/x-partial-download' => ['wkdownload', 'crdownload', 'part'],
-        'application/x-pc-engine-rom' => ['pce'],
-        'application/x-pcap' => ['pcap', 'cap', 'dmp'],
-        'application/x-pdf' => ['pdf'],
-        'application/x-perl' => ['pl', 'PL', 'pm', 'al', 'perl', 'pod', 't'],
-        'application/x-photoshop' => ['psd'],
-        'application/x-php' => ['php', 'php3', 'php4', 'php5', 'phps'],
-        'application/x-pkcs12' => ['p12', 'pfx'],
-        'application/x-pkcs7-certificates' => ['p7b', 'spc'],
-        'application/x-pkcs7-certreqresp' => ['p7r'],
-        'application/x-planperfect' => ['pln'],
-        'application/x-pocket-word' => ['psw'],
-        'application/x-pw' => ['pw'],
-        'application/x-python-bytecode' => ['pyc', 'pyo'],
-        'application/x-qpress' => ['qp'],
-        'application/x-qtiplot' => ['qti', 'qti.gz'],
-        'application/x-quattropro' => ['wb1', 'wb2', 'wb3'],
-        'application/x-quicktime-media-link' => ['qtl'],
-        'application/x-quicktimeplayer' => ['qtl'],
-        'application/x-qw' => ['qif'],
-        'application/x-rar' => ['rar'],
-        'application/x-rar-compressed' => ['rar'],
-        'application/x-raw-disk-image' => ['raw-disk-image', 'img'],
-        'application/x-raw-disk-image-xz-compressed' => ['raw-disk-image.xz', 'img.xz'],
-        'application/x-raw-floppy-disk-image' => ['fd', 'qd'],
-        'application/x-redhat-package-manager' => ['rpm'],
-        'application/x-reject' => ['rej'],
-        'application/x-research-info-systems' => ['ris'],
-        'application/x-rnc' => ['rnc'],
-        'application/x-rpm' => ['rpm'],
-        'application/x-ruby' => ['rb'],
-        'application/x-sami' => ['smi', 'sami'],
-        'application/x-sap-file' => ['sap'],
-        'application/x-saturn-rom' => ['bin', 'iso'],
-        'application/x-sdp' => ['sdp'],
-        'application/x-sega-cd-rom' => ['bin', 'iso'],
-        'application/x-sg1000-rom' => ['sg'],
-        'application/x-sh' => ['sh'],
-        'application/x-shar' => ['shar'],
-        'application/x-shared-library-la' => ['la'],
-        'application/x-sharedlib' => ['so'],
-        'application/x-shellscript' => ['sh'],
-        'application/x-shockwave-flash' => ['swf', 'spl'],
-        'application/x-shorten' => ['shn'],
-        'application/x-siag' => ['siag'],
-        'application/x-silverlight-app' => ['xap'],
-        'application/x-sit' => ['sit'],
-        'application/x-smaf' => ['mmf', 'smaf'],
-        'application/x-sms-rom' => ['sms'],
-        'application/x-snes-rom' => ['sfc', 'smc'],
-        'application/x-source-rpm' => ['src.rpm', 'spm'],
-        'application/x-spss-por' => ['por'],
-        'application/x-spss-sav' => ['sav', 'zsav'],
-        'application/x-spss-savefile' => ['sav', 'zsav'],
-        'application/x-sql' => ['sql'],
-        'application/x-sqlite2' => ['sqlite2'],
-        'application/x-sqlite3' => ['sqlite3'],
-        'application/x-srt' => ['srt'],
-        'application/x-stuffit' => ['sit'],
-        'application/x-stuffitx' => ['sitx'],
-        'application/x-subrip' => ['srt'],
-        'application/x-sv4cpio' => ['sv4cpio'],
-        'application/x-sv4crc' => ['sv4crc'],
-        'application/x-t3vm-image' => ['t3'],
-        'application/x-t602' => ['602'],
-        'application/x-tads' => ['gam'],
-        'application/x-tar' => ['tar', 'gtar', 'gem'],
-        'application/x-tarz' => ['tar.Z', 'taz'],
-        'application/x-tcl' => ['tcl'],
-        'application/x-tex' => ['tex', 'ltx', 'sty', 'cls', 'dtx', 'ins', 'latex'],
-        'application/x-tex-gf' => ['gf'],
-        'application/x-tex-pk' => ['pk'],
-        'application/x-tex-tfm' => ['tfm'],
-        'application/x-texinfo' => ['texinfo', 'texi'],
-        'application/x-tgif' => ['obj'],
-        'application/x-theme' => ['theme'],
-        'application/x-thomson-cartridge-memo7' => ['m7'],
-        'application/x-thomson-cassette' => ['k7'],
-        'application/x-thomson-sap-image' => ['sap'],
-        'application/x-trash' => ['bak', 'old', 'sik'],
-        'application/x-trig' => ['trig'],
-        'application/x-troff' => ['tr', 'roff', 't'],
-        'application/x-troff-man' => ['man'],
-        'application/x-tzo' => ['tar.lzo', 'tzo'],
-        'application/x-ufraw' => ['ufraw'],
-        'application/x-ustar' => ['ustar'],
-        'application/x-virtual-boy-rom' => ['vb'],
-        'application/x-vnd.kde.kexi' => ['kexi'],
-        'application/x-wais-source' => ['src'],
-        'application/x-wbfs' => ['iso'],
-        'application/x-wia' => ['iso'],
-        'application/x-wii-iso-image' => ['iso'],
-        'application/x-wii-rom' => ['iso'],
-        'application/x-wii-wad' => ['wad'],
-        'application/x-windows-themepack' => ['themepack'],
-        'application/x-wmf' => ['wmf'],
-        'application/x-wonderswan-color-rom' => ['wsc'],
-        'application/x-wonderswan-rom' => ['ws'],
-        'application/x-wordperfect' => ['wp', 'wp4', 'wp5', 'wp6', 'wpd', 'wpp'],
-        'application/x-wpg' => ['wpg'],
-        'application/x-wwf' => ['wwf'],
-        'application/x-x509-ca-cert' => ['der', 'crt', 'cert', 'pem'],
-        'application/x-xar' => ['xar', 'pkg'],
-        'application/x-xbel' => ['xbel'],
-        'application/x-xfig' => ['fig'],
-        'application/x-xliff' => ['xlf', 'xliff'],
-        'application/x-xliff+xml' => ['xlf'],
-        'application/x-xpinstall' => ['xpi'],
-        'application/x-xspf+xml' => ['xspf'],
-        'application/x-xz' => ['xz'],
-        'application/x-xz-compressed-tar' => ['tar.xz', 'txz'],
-        'application/x-xzpdf' => ['pdf.xz'],
-        'application/x-yaml' => ['yaml', 'yml'],
-        'application/x-zip' => ['zip'],
-        'application/x-zip-compressed' => ['zip'],
-        'application/x-zip-compressed-fb2' => ['fb2.zip'],
-        'application/x-zmachine' => ['z1', 'z2', 'z3', 'z4', 'z5', 'z6', 'z7', 'z8'],
-        'application/x-zoo' => ['zoo'],
-        'application/xaml+xml' => ['xaml'],
-        'application/xcap-diff+xml' => ['xdf'],
-        'application/xenc+xml' => ['xenc'],
-        'application/xhtml+xml' => ['xhtml', 'xht'],
-        'application/xliff+xml' => ['xlf', 'xliff'],
-        'application/xml' => ['xml', 'xsl', 'xbl', 'xsd', 'rng'],
-        'application/xml-dtd' => ['dtd'],
-        'application/xml-external-parsed-entity' => ['ent'],
-        'application/xop+xml' => ['xop'],
-        'application/xproc+xml' => ['xpl'],
-        'application/xps' => ['oxps', 'xps'],
-        'application/xslt+xml' => ['xslt', 'xsl'],
-        'application/xspf+xml' => ['xspf'],
-        'application/xv+xml' => ['mxml', 'xhvml', 'xvml', 'xvm'],
-        'application/yang' => ['yang'],
-        'application/yin+xml' => ['yin'],
-        'application/zip' => ['zip'],
-        'application/zlib' => ['zz'],
-        'audio/3gpp' => ['3gp', '3gpp', '3ga'],
-        'audio/3gpp-encrypted' => ['3gp', '3gpp', '3ga'],
-        'audio/3gpp2' => ['3g2', '3gp2', '3gpp2'],
-        'audio/aac' => ['aac', 'adts', 'ass'],
-        'audio/ac3' => ['ac3'],
-        'audio/adpcm' => ['adp'],
-        'audio/amr' => ['amr'],
-        'audio/amr-encrypted' => ['amr'],
-        'audio/amr-wb' => ['awb'],
-        'audio/amr-wb-encrypted' => ['awb'],
-        'audio/annodex' => ['axa'],
-        'audio/basic' => ['au', 'snd'],
-        'audio/flac' => ['flac'],
-        'audio/imelody' => ['imy', 'ime'],
-        'audio/m3u' => ['m3u', 'm3u8', 'vlc'],
-        'audio/m4a' => ['m4a', 'f4a'],
-        'audio/midi' => ['mid', 'midi', 'kar', 'rmi'],
-        'audio/mobile-xmf' => ['xmf'],
-        'audio/mp2' => ['mp2'],
-        'audio/mp3' => ['mp3', 'mpga'],
-        'audio/mp4' => ['m4a', 'mp4a', 'f4a'],
-        'audio/mpeg' => ['mp3', 'mpga', 'mp2', 'mp2a', 'm2a', 'm3a'],
-        'audio/mpegurl' => ['m3u', 'm3u8', 'vlc'],
-        'audio/ogg' => ['oga', 'ogg', 'spx', 'opus'],
-        'audio/prs.sid' => ['sid', 'psid'],
-        'audio/s3m' => ['s3m'],
-        'audio/scpls' => ['pls'],
-        'audio/silk' => ['sil'],
-        'audio/tta' => ['tta'],
-        'audio/usac' => ['loas', 'xhe'],
-        'audio/vnd.audible' => ['aa', 'aax'],
-        'audio/vnd.audible.aax' => ['aa', 'aax'],
-        'audio/vnd.dece.audio' => ['uva', 'uvva'],
-        'audio/vnd.digital-winds' => ['eol'],
-        'audio/vnd.dra' => ['dra'],
-        'audio/vnd.dts' => ['dts'],
-        'audio/vnd.dts.hd' => ['dtshd'],
-        'audio/vnd.lucent.voice' => ['lvp'],
-        'audio/vnd.m-realaudio' => ['ra', 'rax'],
-        'audio/vnd.ms-playready.media.pya' => ['pya'],
-        'audio/vnd.nuera.ecelp4800' => ['ecelp4800'],
-        'audio/vnd.nuera.ecelp7470' => ['ecelp7470'],
-        'audio/vnd.nuera.ecelp9600' => ['ecelp9600'],
-        'audio/vnd.rip' => ['rip'],
-        'audio/vnd.rn-realaudio' => ['ra', 'rax'],
-        'audio/vnd.wave' => ['wav'],
-        'audio/vorbis' => ['oga', 'ogg'],
-        'audio/wav' => ['wav'],
-        'audio/webm' => ['weba'],
-        'audio/wma' => ['wma'],
-        'audio/x-aac' => ['aac', 'adts', 'ass'],
-        'audio/x-aifc' => ['aifc', 'aiffc'],
-        'audio/x-aiff' => ['aif', 'aiff', 'aifc'],
-        'audio/x-aiffc' => ['aifc', 'aiffc'],
-        'audio/x-amzxml' => ['amz'],
-        'audio/x-annodex' => ['axa'],
-        'audio/x-ape' => ['ape'],
-        'audio/x-caf' => ['caf'],
-        'audio/x-dts' => ['dts'],
-        'audio/x-dtshd' => ['dtshd'],
-        'audio/x-flac' => ['flac'],
-        'audio/x-flac+ogg' => ['oga', 'ogg'],
-        'audio/x-gsm' => ['gsm'],
-        'audio/x-hx-aac-adts' => ['aac', 'adts', 'ass'],
-        'audio/x-imelody' => ['imy', 'ime'],
-        'audio/x-iriver-pla' => ['pla'],
-        'audio/x-it' => ['it'],
-        'audio/x-m3u' => ['m3u', 'm3u8', 'vlc'],
-        'audio/x-m4a' => ['m4a', 'f4a'],
-        'audio/x-m4b' => ['m4b', 'f4b'],
-        'audio/x-m4r' => ['m4r'],
-        'audio/x-matroska' => ['mka'],
-        'audio/x-midi' => ['mid', 'midi', 'kar'],
-        'audio/x-minipsf' => ['minipsf'],
-        'audio/x-mo3' => ['mo3'],
-        'audio/x-mod' => ['mod', 'ult', 'uni', 'm15', 'mtm', '669', 'med'],
-        'audio/x-mp2' => ['mp2'],
-        'audio/x-mp3' => ['mp3', 'mpga'],
-        'audio/x-mp3-playlist' => ['m3u', 'm3u8', 'vlc'],
-        'audio/x-mpeg' => ['mp3', 'mpga'],
-        'audio/x-mpegurl' => ['m3u', 'm3u8', 'vlc'],
-        'audio/x-mpg' => ['mp3', 'mpga'],
-        'audio/x-ms-asx' => ['asx', 'wax', 'wvx', 'wmx'],
-        'audio/x-ms-wax' => ['wax'],
-        'audio/x-ms-wma' => ['wma'],
-        'audio/x-musepack' => ['mpc', 'mpp', 'mp+'],
-        'audio/x-ogg' => ['oga', 'ogg', 'opus'],
-        'audio/x-oggflac' => ['oga', 'ogg'],
-        'audio/x-opus+ogg' => ['opus'],
-        'audio/x-pn-audibleaudio' => ['aa', 'aax'],
-        'audio/x-pn-realaudio' => ['ram', 'ra', 'rax'],
-        'audio/x-pn-realaudio-plugin' => ['rmp'],
-        'audio/x-psf' => ['psf'],
-        'audio/x-psflib' => ['psflib'],
-        'audio/x-rn-3gpp-amr' => ['3gp', '3gpp', '3ga'],
-        'audio/x-rn-3gpp-amr-encrypted' => ['3gp', '3gpp', '3ga'],
-        'audio/x-rn-3gpp-amr-wb' => ['3gp', '3gpp', '3ga'],
-        'audio/x-rn-3gpp-amr-wb-encrypted' => ['3gp', '3gpp', '3ga'],
-        'audio/x-s3m' => ['s3m'],
-        'audio/x-scpls' => ['pls'],
-        'audio/x-shorten' => ['shn'],
-        'audio/x-speex' => ['spx'],
-        'audio/x-speex+ogg' => ['oga', 'ogg'],
-        'audio/x-stm' => ['stm'],
-        'audio/x-tta' => ['tta'],
-        'audio/x-voc' => ['voc'],
-        'audio/x-vorbis' => ['oga', 'ogg'],
-        'audio/x-vorbis+ogg' => ['oga', 'ogg'],
-        'audio/x-wav' => ['wav'],
-        'audio/x-wavpack' => ['wv', 'wvp'],
-        'audio/x-wavpack-correction' => ['wvc'],
-        'audio/x-xi' => ['xi'],
-        'audio/x-xm' => ['xm'],
-        'audio/x-xmf' => ['xmf'],
-        'audio/xm' => ['xm'],
-        'audio/xmf' => ['xmf'],
-        'chemical/x-cdx' => ['cdx'],
-        'chemical/x-cif' => ['cif'],
-        'chemical/x-cmdf' => ['cmdf'],
-        'chemical/x-cml' => ['cml'],
-        'chemical/x-csml' => ['csml'],
-        'chemical/x-xyz' => ['xyz'],
-        'flv-application/octet-stream' => ['flv'],
-        'font/collection' => ['ttc'],
-        'font/otf' => ['otf'],
-        'font/ttf' => ['ttf'],
-        'font/woff' => ['woff', 'woff2'],
-        'font/woff2' => ['woff2'],
-        'image/bmp' => ['bmp', 'dib'],
-        'image/cdr' => ['cdr'],
-        'image/cgm' => ['cgm'],
-        'image/emf' => ['emf'],
-        'image/fax-g3' => ['g3'],
-        'image/fits' => ['fits'],
-        'image/g3fax' => ['g3'],
-        'image/gif' => ['gif'],
-        'image/heic' => ['heic', 'heif'],
-        'image/heic-sequence' => ['heic', 'heif'],
-        'image/heif' => ['heic', 'heif'],
-        'image/heif-sequence' => ['heic', 'heif'],
-        'image/ico' => ['ico'],
-        'image/icon' => ['ico'],
-        'image/ief' => ['ief'],
-        'image/jp2' => ['jp2', 'jpg2'],
-        'image/jpeg' => ['jpeg', 'jpg', 'jpe'],
-        'image/jpeg2000' => ['jp2', 'jpg2'],
-        'image/jpeg2000-image' => ['jp2', 'jpg2'],
-        'image/jpm' => ['jpm', 'jpgm'],
-        'image/jpx' => ['jpf', 'jpx'],
-        'image/ktx' => ['ktx'],
-        'image/openraster' => ['ora'],
-        'image/pdf' => ['pdf'],
-        'image/photoshop' => ['psd'],
-        'image/pjpeg' => ['jpeg', 'jpg', 'jpe'],
-        'image/png' => ['png'],
-        'image/prs.btif' => ['btif'],
-        'image/psd' => ['psd'],
-        'image/rle' => ['rle'],
-        'image/sgi' => ['sgi'],
-        'image/svg' => ['svg'],
-        'image/svg+xml' => ['svg', 'svgz'],
-        'image/svg+xml-compressed' => ['svgz'],
-        'image/tiff' => ['tiff', 'tif'],
-        'image/vnd.adobe.photoshop' => ['psd'],
-        'image/vnd.dece.graphic' => ['uvi', 'uvvi', 'uvg', 'uvvg'],
-        'image/vnd.djvu' => ['djvu', 'djv'],
-        'image/vnd.djvu+multipage' => ['djvu', 'djv'],
-        'image/vnd.dvb.subtitle' => ['sub'],
-        'image/vnd.dwg' => ['dwg'],
-        'image/vnd.dxf' => ['dxf'],
-        'image/vnd.fastbidsheet' => ['fbs'],
-        'image/vnd.fpx' => ['fpx'],
-        'image/vnd.fst' => ['fst'],
-        'image/vnd.fujixerox.edmics-mmr' => ['mmr'],
-        'image/vnd.fujixerox.edmics-rlc' => ['rlc'],
-        'image/vnd.microsoft.icon' => ['ico'],
-        'image/vnd.ms-modi' => ['mdi'],
-        'image/vnd.ms-photo' => ['wdp'],
-        'image/vnd.net-fpx' => ['npx'],
-        'image/vnd.rn-realpix' => ['rp'],
-        'image/vnd.wap.wbmp' => ['wbmp'],
-        'image/vnd.xiff' => ['xif'],
-        'image/vnd.zbrush.pcx' => ['pcx'],
-        'image/webp' => ['webp'],
-        'image/wmf' => ['wmf'],
-        'image/x-3ds' => ['3ds'],
-        'image/x-adobe-dng' => ['dng'],
-        'image/x-applix-graphics' => ['ag'],
-        'image/x-bmp' => ['bmp', 'dib'],
-        'image/x-bzeps' => ['eps.bz2', 'epsi.bz2', 'epsf.bz2'],
-        'image/x-canon-cr2' => ['cr2'],
-        'image/x-canon-crw' => ['crw'],
-        'image/x-cdr' => ['cdr'],
-        'image/x-cmu-raster' => ['ras'],
-        'image/x-cmx' => ['cmx'],
-        'image/x-compressed-xcf' => ['xcf.gz', 'xcf.bz2'],
-        'image/x-dds' => ['dds'],
-        'image/x-djvu' => ['djvu', 'djv'],
-        'image/x-emf' => ['emf'],
-        'image/x-eps' => ['eps', 'epsi', 'epsf'],
-        'image/x-exr' => ['exr'],
-        'image/x-fits' => ['fits'],
-        'image/x-freehand' => ['fh', 'fhc', 'fh4', 'fh5', 'fh7'],
-        'image/x-fuji-raf' => ['raf'],
-        'image/x-gimp-gbr' => ['gbr'],
-        'image/x-gimp-gih' => ['gih'],
-        'image/x-gimp-pat' => ['pat'],
-        'image/x-gzeps' => ['eps.gz', 'epsi.gz', 'epsf.gz'],
-        'image/x-icb' => ['tga', 'icb', 'tpic', 'vda', 'vst'],
-        'image/x-icns' => ['icns'],
-        'image/x-ico' => ['ico'],
-        'image/x-icon' => ['ico'],
-        'image/x-iff' => ['iff', 'ilbm', 'lbm'],
-        'image/x-ilbm' => ['iff', 'ilbm', 'lbm'],
-        'image/x-jng' => ['jng'],
-        'image/x-jp2-codestream' => ['j2c', 'j2k', 'jpc'],
-        'image/x-jpeg2000-image' => ['jp2', 'jpg2'],
-        'image/x-kodak-dcr' => ['dcr'],
-        'image/x-kodak-k25' => ['k25'],
-        'image/x-kodak-kdc' => ['kdc'],
-        'image/x-lwo' => ['lwo', 'lwob'],
-        'image/x-lws' => ['lws'],
-        'image/x-macpaint' => ['pntg'],
-        'image/x-minolta-mrw' => ['mrw'],
-        'image/x-mrsid-image' => ['sid'],
-        'image/x-ms-bmp' => ['bmp', 'dib'],
-        'image/x-msod' => ['msod'],
-        'image/x-nikon-nef' => ['nef'],
-        'image/x-olympus-orf' => ['orf'],
-        'image/x-panasonic-raw' => ['raw'],
-        'image/x-panasonic-raw2' => ['rw2'],
-        'image/x-panasonic-rw' => ['raw'],
-        'image/x-panasonic-rw2' => ['rw2'],
-        'image/x-pcx' => ['pcx'],
-        'image/x-pentax-pef' => ['pef'],
-        'image/x-photo-cd' => ['pcd'],
-        'image/x-photoshop' => ['psd'],
-        'image/x-pict' => ['pic', 'pct', 'pict', 'pict1', 'pict2'],
-        'image/x-portable-anymap' => ['pnm'],
-        'image/x-portable-bitmap' => ['pbm'],
-        'image/x-portable-graymap' => ['pgm'],
-        'image/x-portable-pixmap' => ['ppm'],
-        'image/x-psd' => ['psd'],
-        'image/x-quicktime' => ['qtif', 'qif'],
-        'image/x-rgb' => ['rgb'],
-        'image/x-sgi' => ['sgi'],
-        'image/x-sigma-x3f' => ['x3f'],
-        'image/x-skencil' => ['sk', 'sk1'],
-        'image/x-sony-arw' => ['arw'],
-        'image/x-sony-sr2' => ['sr2'],
-        'image/x-sony-srf' => ['srf'],
-        'image/x-sun-raster' => ['sun'],
-        'image/x-tga' => ['tga', 'icb', 'tpic', 'vda', 'vst'],
-        'image/x-win-bitmap' => ['cur'],
-        'image/x-win-metafile' => ['wmf'],
-        'image/x-wmf' => ['wmf'],
-        'image/x-xbitmap' => ['xbm'],
-        'image/x-xcf' => ['xcf'],
-        'image/x-xfig' => ['fig'],
-        'image/x-xpixmap' => ['xpm'],
-        'image/x-xpm' => ['xpm'],
-        'image/x-xwindowdump' => ['xwd'],
-        'image/x.djvu' => ['djvu', 'djv'],
-        'message/rfc822' => ['eml', 'mime'],
-        'model/iges' => ['igs', 'iges'],
-        'model/mesh' => ['msh', 'mesh', 'silo'],
-        'model/stl' => ['stl'],
-        'model/vnd.collada+xml' => ['dae'],
-        'model/vnd.dwf' => ['dwf'],
-        'model/vnd.gdl' => ['gdl'],
-        'model/vnd.gtw' => ['gtw'],
-        'model/vnd.mts' => ['mts'],
-        'model/vnd.vtu' => ['vtu'],
-        'model/vrml' => ['wrl', 'vrml', 'vrm'],
-        'model/x.stl-ascii' => ['stl'],
-        'model/x.stl-binary' => ['stl'],
-        'model/x3d+binary' => ['x3db', 'x3dbz'],
-        'model/x3d+vrml' => ['x3dv', 'x3dvz'],
-        'model/x3d+xml' => ['x3d', 'x3dz'],
-        'text/cache-manifest' => ['appcache', 'manifest'],
-        'text/calendar' => ['ics', 'ifb', 'vcs'],
-        'text/css' => ['css'],
-        'text/csv' => ['csv'],
-        'text/csv-schema' => ['csvs'],
-        'text/directory' => ['vcard', 'vcf', 'vct', 'gcrd'],
-        'text/ecmascript' => ['es'],
-        'text/gedcom' => ['ged', 'gedcom'],
-        'text/google-video-pointer' => ['gvp'],
-        'text/html' => ['html', 'htm'],
-        'text/ico' => ['ico'],
-        'text/javascript' => ['js', 'jsm', 'mjs'],
-        'text/markdown' => ['md', 'mkd', 'markdown'],
-        'text/mathml' => ['mml'],
-        'text/n3' => ['n3'],
-        'text/plain' => ['txt', 'text', 'conf', 'def', 'list', 'log', 'in', 'asc'],
-        'text/prs.lines.tag' => ['dsc'],
-        'text/rdf' => ['rdf', 'rdfs', 'owl'],
-        'text/richtext' => ['rtx'],
-        'text/rss' => ['rss'],
-        'text/rtf' => ['rtf'],
-        'text/rust' => ['rs'],
-        'text/sgml' => ['sgml', 'sgm'],
-        'text/spreadsheet' => ['sylk', 'slk'],
-        'text/tab-separated-values' => ['tsv'],
-        'text/troff' => ['t', 'tr', 'roff', 'man', 'me', 'ms'],
-        'text/turtle' => ['ttl'],
-        'text/uri-list' => ['uri', 'uris', 'urls'],
-        'text/vcard' => ['vcard', 'vcf', 'vct', 'gcrd'],
-        'text/vnd.curl' => ['curl'],
-        'text/vnd.curl.dcurl' => ['dcurl'],
-        'text/vnd.curl.mcurl' => ['mcurl'],
-        'text/vnd.curl.scurl' => ['scurl'],
-        'text/vnd.dvb.subtitle' => ['sub'],
-        'text/vnd.fly' => ['fly'],
-        'text/vnd.fmi.flexstor' => ['flx'],
-        'text/vnd.graphviz' => ['gv', 'dot'],
-        'text/vnd.in3d.3dml' => ['3dml'],
-        'text/vnd.in3d.spot' => ['spot'],
-        'text/vnd.qt.linguist' => ['ts'],
-        'text/vnd.rn-realtext' => ['rt'],
-        'text/vnd.sun.j2me.app-descriptor' => ['jad'],
-        'text/vnd.trolltech.linguist' => ['ts'],
-        'text/vnd.wap.wml' => ['wml'],
-        'text/vnd.wap.wmlscript' => ['wmls'],
-        'text/vtt' => ['vtt'],
-        'text/x-adasrc' => ['adb', 'ads'],
-        'text/x-asm' => ['s', 'asm'],
-        'text/x-bibtex' => ['bib'],
-        'text/x-c' => ['c', 'cc', 'cxx', 'cpp', 'h', 'hh', 'dic'],
-        'text/x-c++hdr' => ['hh', 'hp', 'hpp', 'h++', 'hxx'],
-        'text/x-c++src' => ['cpp', 'cxx', 'cc', 'C', 'c++'],
-        'text/x-chdr' => ['h'],
-        'text/x-cmake' => ['cmake'],
-        'text/x-cobol' => ['cbl', 'cob'],
-        'text/x-comma-separated-values' => ['csv'],
-        'text/x-csharp' => ['cs'],
-        'text/x-csrc' => ['c'],
-        'text/x-csv' => ['csv'],
-        'text/x-dbus-service' => ['service'],
-        'text/x-dcl' => ['dcl'],
-        'text/x-diff' => ['diff', 'patch'],
-        'text/x-dsl' => ['dsl'],
-        'text/x-dsrc' => ['d', 'di'],
-        'text/x-dtd' => ['dtd'],
-        'text/x-eiffel' => ['e', 'eif'],
-        'text/x-emacs-lisp' => ['el'],
-        'text/x-erlang' => ['erl'],
-        'text/x-fortran' => ['f', 'for', 'f77', 'f90', 'f95'],
-        'text/x-genie' => ['gs'],
-        'text/x-gettext-translation' => ['po'],
-        'text/x-gettext-translation-template' => ['pot'],
-        'text/x-gherkin' => ['feature'],
-        'text/x-go' => ['go'],
-        'text/x-google-video-pointer' => ['gvp'],
-        'text/x-haskell' => ['hs'],
-        'text/x-idl' => ['idl'],
-        'text/x-imelody' => ['imy', 'ime'],
-        'text/x-iptables' => ['iptables'],
-        'text/x-java' => ['java'],
-        'text/x-java-source' => ['java'],
-        'text/x-ldif' => ['ldif'],
-        'text/x-lilypond' => ['ly'],
-        'text/x-literate-haskell' => ['lhs'],
-        'text/x-log' => ['log'],
-        'text/x-lua' => ['lua'],
-        'text/x-lyx' => ['lyx'],
-        'text/x-makefile' => ['mk', 'mak'],
-        'text/x-markdown' => ['md', 'mkd', 'markdown'],
-        'text/x-matlab' => ['m'],
-        'text/x-microdvd' => ['sub'],
-        'text/x-moc' => ['moc'],
-        'text/x-modelica' => ['mo'],
-        'text/x-mof' => ['mof'],
-        'text/x-mpsub' => ['sub'],
-        'text/x-mrml' => ['mrml', 'mrl'],
-        'text/x-ms-regedit' => ['reg'],
-        'text/x-mup' => ['mup', 'not'],
-        'text/x-nfo' => ['nfo'],
-        'text/x-objcsrc' => ['m'],
-        'text/x-ocaml' => ['ml', 'mli'],
-        'text/x-ocl' => ['ocl'],
-        'text/x-octave' => ['m'],
-        'text/x-ooc' => ['ooc'],
-        'text/x-opencl-src' => ['cl'],
-        'text/x-opml' => ['opml'],
-        'text/x-opml+xml' => ['opml'],
-        'text/x-pascal' => ['p', 'pas'],
-        'text/x-patch' => ['diff', 'patch'],
-        'text/x-perl' => ['pl', 'PL', 'pm', 'al', 'perl', 'pod', 't'],
-        'text/x-po' => ['po'],
-        'text/x-pot' => ['pot'],
-        'text/x-python' => ['py', 'pyx', 'wsgi'],
-        'text/x-python3' => ['py', 'py3', 'py3x'],
-        'text/x-qml' => ['qml', 'qmltypes', 'qmlproject'],
-        'text/x-reject' => ['rej'],
-        'text/x-rpm-spec' => ['spec'],
-        'text/x-sass' => ['sass'],
-        'text/x-scala' => ['scala'],
-        'text/x-scheme' => ['scm', 'ss'],
-        'text/x-scss' => ['scss'],
-        'text/x-setext' => ['etx'],
-        'text/x-sfv' => ['sfv'],
-        'text/x-sh' => ['sh'],
-        'text/x-sql' => ['sql'],
-        'text/x-ssa' => ['ssa', 'ass'],
-        'text/x-subviewer' => ['sub'],
-        'text/x-svhdr' => ['svh'],
-        'text/x-svsrc' => ['sv'],
-        'text/x-systemd-unit' => ['automount', 'device', 'mount', 'path', 'scope', 'service', 'slice', 'socket', 'swap', 'target', 'timer'],
-        'text/x-tcl' => ['tcl', 'tk'],
-        'text/x-tex' => ['tex', 'ltx', 'sty', 'cls', 'dtx', 'ins', 'latex'],
-        'text/x-texinfo' => ['texi', 'texinfo'],
-        'text/x-troff' => ['tr', 'roff', 't'],
-        'text/x-troff-me' => ['me'],
-        'text/x-troff-mm' => ['mm'],
-        'text/x-troff-ms' => ['ms'],
-        'text/x-twig' => ['twig'],
-        'text/x-txt2tags' => ['t2t'],
-        'text/x-uil' => ['uil'],
-        'text/x-uuencode' => ['uu', 'uue'],
-        'text/x-vala' => ['vala', 'vapi'],
-        'text/x-vcalendar' => ['vcs', 'ics'],
-        'text/x-vcard' => ['vcf', 'vcard', 'vct', 'gcrd'],
-        'text/x-verilog' => ['v'],
-        'text/x-vhdl' => ['vhd', 'vhdl'],
-        'text/x-xmi' => ['xmi'],
-        'text/x-xslfo' => ['fo', 'xslfo'],
-        'text/x-yaml' => ['yaml', 'yml'],
-        'text/x.gcode' => ['gcode'],
-        'text/xml' => ['xml', 'xbl', 'xsd', 'rng'],
-        'text/xml-external-parsed-entity' => ['ent'],
-        'text/yaml' => ['yaml', 'yml'],
-        'video/3gp' => ['3gp', '3gpp', '3ga'],
-        'video/3gpp' => ['3gp', '3gpp', '3ga'],
-        'video/3gpp-encrypted' => ['3gp', '3gpp', '3ga'],
-        'video/3gpp2' => ['3g2', '3gp2', '3gpp2'],
-        'video/annodex' => ['axv'],
-        'video/avi' => ['avi', 'avf', 'divx'],
-        'video/divx' => ['avi', 'avf', 'divx'],
-        'video/dv' => ['dv'],
-        'video/fli' => ['fli', 'flc'],
-        'video/flv' => ['flv'],
-        'video/h261' => ['h261'],
-        'video/h263' => ['h263'],
-        'video/h264' => ['h264'],
-        'video/jpeg' => ['jpgv'],
-        'video/jpm' => ['jpm', 'jpgm'],
-        'video/mj2' => ['mj2', 'mjp2'],
-        'video/mp2t' => ['m2t', 'm2ts', 'ts', 'mts', 'cpi', 'clpi', 'mpl', 'mpls', 'bdm', 'bdmv'],
-        'video/mp4' => ['mp4', 'mp4v', 'mpg4', 'm4v', 'f4v', 'lrv'],
-        'video/mp4v-es' => ['mp4', 'm4v', 'f4v', 'lrv'],
-        'video/mpeg' => ['mpeg', 'mpg', 'mpe', 'm1v', 'm2v', 'mp2', 'vob'],
-        'video/mpeg-system' => ['mpeg', 'mpg', 'mp2', 'mpe', 'vob'],
-        'video/msvideo' => ['avi', 'avf', 'divx'],
-        'video/ogg' => ['ogv', 'ogg'],
-        'video/quicktime' => ['qt', 'mov', 'moov', 'qtvr'],
-        'video/vivo' => ['viv', 'vivo'],
-        'video/vnd.dece.hd' => ['uvh', 'uvvh'],
-        'video/vnd.dece.mobile' => ['uvm', 'uvvm'],
-        'video/vnd.dece.pd' => ['uvp', 'uvvp'],
-        'video/vnd.dece.sd' => ['uvs', 'uvvs'],
-        'video/vnd.dece.video' => ['uvv', 'uvvv'],
-        'video/vnd.divx' => ['avi', 'avf', 'divx'],
-        'video/vnd.dvb.file' => ['dvb'],
-        'video/vnd.fvt' => ['fvt'],
-        'video/vnd.mpegurl' => ['mxu', 'm4u', 'm1u'],
-        'video/vnd.ms-playready.media.pyv' => ['pyv'],
-        'video/vnd.rn-realvideo' => ['rv', 'rvx'],
-        'video/vnd.uvvu.mp4' => ['uvu', 'uvvu'],
-        'video/vnd.vivo' => ['viv', 'vivo'],
-        'video/webm' => ['webm'],
-        'video/x-anim' => ['anim[1-9j]'],
-        'video/x-annodex' => ['axv'],
-        'video/x-avi' => ['avi', 'avf', 'divx'],
-        'video/x-f4v' => ['f4v'],
-        'video/x-fli' => ['fli', 'flc'],
-        'video/x-flic' => ['fli', 'flc'],
-        'video/x-flv' => ['flv'],
-        'video/x-javafx' => ['fxm'],
-        'video/x-m4v' => ['m4v', 'mp4', 'f4v', 'lrv'],
-        'video/x-matroska' => ['mkv', 'mk3d', 'mks'],
-        'video/x-matroska-3d' => ['mk3d'],
-        'video/x-mjpeg' => ['mjpeg', 'mjpg'],
-        'video/x-mng' => ['mng'],
-        'video/x-mpeg' => ['mpeg', 'mpg', 'mp2', 'mpe', 'vob'],
-        'video/x-mpeg-system' => ['mpeg', 'mpg', 'mp2', 'mpe', 'vob'],
-        'video/x-mpeg2' => ['mpeg', 'mpg', 'mp2', 'mpe', 'vob'],
-        'video/x-mpegurl' => ['m1u', 'm4u', 'mxu'],
-        'video/x-ms-asf' => ['asf', 'asx'],
-        'video/x-ms-asf-plugin' => ['asf'],
-        'video/x-ms-vob' => ['vob'],
-        'video/x-ms-wax' => ['asx', 'wax', 'wvx', 'wmx'],
-        'video/x-ms-wm' => ['wm', 'asf'],
-        'video/x-ms-wmv' => ['wmv'],
-        'video/x-ms-wmx' => ['wmx', 'asx', 'wax', 'wvx'],
-        'video/x-ms-wvx' => ['wvx', 'asx', 'wax', 'wmx'],
-        'video/x-msvideo' => ['avi', 'avf', 'divx'],
-        'video/x-nsv' => ['nsv'],
-        'video/x-ogg' => ['ogv', 'ogg'],
-        'video/x-ogm' => ['ogm'],
-        'video/x-ogm+ogg' => ['ogm'],
-        'video/x-real-video' => ['rv', 'rvx'],
-        'video/x-sgi-movie' => ['movie'],
-        'video/x-smv' => ['smv'],
-        'video/x-theora' => ['ogg'],
-        'video/x-theora+ogg' => ['ogg'],
-        'x-conference/x-cooltalk' => ['ice'],
-        'x-epoc/x-sisx-app' => ['sisx'],
-        'zz-application/zz-winassoc-123' => ['123', 'wk1', 'wk3', 'wk4', 'wks'],
-        'zz-application/zz-winassoc-cab' => ['cab'],
-        'zz-application/zz-winassoc-cdr' => ['cdr'],
-        'zz-application/zz-winassoc-doc' => ['doc'],
-        'zz-application/zz-winassoc-hlp' => ['hlp'],
-        'zz-application/zz-winassoc-mdb' => ['mdb'],
-        'zz-application/zz-winassoc-uu' => ['uue'],
-        'zz-application/zz-winassoc-xls' => ['xls', 'xlc', 'xll', 'xlm', 'xlw', 'xla', 'xlt', 'xld'],
-    ];
-
-    private static $reverseMap = [
-        '32x' => ['application/x-genesis-32x-rom'],
-        '3dml' => ['text/vnd.in3d.3dml'],
-        '3ds' => ['image/x-3ds'],
-        '3g2' => ['audio/3gpp2', 'video/3gpp2'],
-        '3ga' => ['audio/3gpp', 'audio/3gpp-encrypted', 'audio/x-rn-3gpp-amr', 'audio/x-rn-3gpp-amr-encrypted', 'audio/x-rn-3gpp-amr-wb', 'audio/x-rn-3gpp-amr-wb-encrypted', 'video/3gp', 'video/3gpp', 'video/3gpp-encrypted'],
-        '3gp' => ['audio/3gpp', 'audio/3gpp-encrypted', 'audio/x-rn-3gpp-amr', 'audio/x-rn-3gpp-amr-encrypted', 'audio/x-rn-3gpp-amr-wb', 'audio/x-rn-3gpp-amr-wb-encrypted', 'video/3gp', 'video/3gpp', 'video/3gpp-encrypted'],
-        '3gp2' => ['audio/3gpp2', 'video/3gpp2'],
-        '3gpp' => ['audio/3gpp', 'audio/3gpp-encrypted', 'audio/x-rn-3gpp-amr', 'audio/x-rn-3gpp-amr-encrypted', 'audio/x-rn-3gpp-amr-wb', 'audio/x-rn-3gpp-amr-wb-encrypted', 'video/3gp', 'video/3gpp', 'video/3gpp-encrypted'],
-        '3gpp2' => ['audio/3gpp2', 'video/3gpp2'],
-        '7z' => ['application/x-7z-compressed'],
-        'BLEND' => ['application/x-blender'],
-        'C' => ['text/x-c++src'],
-        'PAR2' => ['application/x-par2'],
-        'PL' => ['application/x-perl', 'text/x-perl'],
-        'Z' => ['application/x-compress'],
-        'a' => ['application/x-archive'],
-        'a26' => ['application/x-atari-2600-rom'],
-        'a78' => ['application/x-atari-7800-rom'],
-        'aa' => ['audio/vnd.audible', 'audio/vnd.audible.aax', 'audio/x-pn-audibleaudio'],
-        'aab' => ['application/x-authorware-bin'],
-        'aac' => ['audio/aac', 'audio/x-aac', 'audio/x-hx-aac-adts'],
-        'aam' => ['application/x-authorware-map'],
-        'aas' => ['application/x-authorware-seg'],
-        'aax' => ['audio/vnd.audible', 'audio/vnd.audible.aax', 'audio/x-pn-audibleaudio'],
-        'abw' => ['application/x-abiword'],
-        'abw.CRASHED' => ['application/x-abiword'],
-        'abw.gz' => ['application/x-abiword'],
-        'ac' => ['application/pkix-attr-cert'],
-        'ac3' => ['audio/ac3'],
-        'acc' => ['application/vnd.americandynamics.acc'],
-        'ace' => ['application/x-ace', 'application/x-ace-compressed'],
-        'acu' => ['application/vnd.acucobol'],
-        'acutc' => ['application/vnd.acucorp'],
-        'adb' => ['text/x-adasrc'],
-        'adf' => ['application/x-amiga-disk-format'],
-        'adp' => ['audio/adpcm'],
-        'ads' => ['text/x-adasrc'],
-        'adts' => ['audio/aac', 'audio/x-aac', 'audio/x-hx-aac-adts'],
-        'aep' => ['application/vnd.audiograph'],
-        'afm' => ['application/x-font-afm', 'application/x-font-type1'],
-        'afp' => ['application/vnd.ibm.modcap'],
-        'ag' => ['image/x-applix-graphics'],
-        'agb' => ['application/x-gba-rom'],
-        'ahead' => ['application/vnd.ahead.space'],
-        'ai' => ['application/illustrator', 'application/postscript', 'application/vnd.adobe.illustrator'],
-        'aif' => ['audio/x-aiff'],
-        'aifc' => ['audio/x-aifc', 'audio/x-aiff', 'audio/x-aiffc'],
-        'aiff' => ['audio/x-aiff'],
-        'aiffc' => ['audio/x-aifc', 'audio/x-aiffc'],
-        'air' => ['application/vnd.adobe.air-application-installer-package+zip'],
-        'ait' => ['application/vnd.dvb.ait'],
-        'al' => ['application/x-perl', 'text/x-perl'],
-        'alz' => ['application/x-alz'],
-        'ami' => ['application/vnd.amiga.ami'],
-        'amr' => ['audio/amr', 'audio/amr-encrypted'],
-        'amz' => ['audio/x-amzxml'],
-        'ani' => ['application/x-navi-animation'],
-        'anim[1-9j]' => ['video/x-anim'],
-        'anx' => ['application/annodex', 'application/x-annodex'],
-        'ape' => ['audio/x-ape'],
-        'apk' => ['application/vnd.android.package-archive'],
-        'appcache' => ['text/cache-manifest'],
-        'appimage' => ['application/vnd.appimage', 'application/x-iso9660-appimage'],
-        'application' => ['application/x-ms-application'],
-        'apr' => ['application/vnd.lotus-approach'],
-        'aps' => ['application/postscript'],
-        'ar' => ['application/x-archive'],
-        'arc' => ['application/x-freearc'],
-        'arj' => ['application/x-arj'],
-        'arw' => ['image/x-sony-arw'],
-        'as' => ['application/x-applix-spreadsheet'],
-        'asc' => ['application/pgp', 'application/pgp-encrypted', 'application/pgp-keys', 'application/pgp-signature', 'text/plain'],
-        'asf' => ['application/vnd.ms-asf', 'video/x-ms-asf', 'video/x-ms-asf-plugin', 'video/x-ms-wm'],
-        'asm' => ['text/x-asm'],
-        'aso' => ['application/vnd.accpac.simply.aso'],
-        'asp' => ['application/x-asp'],
-        'ass' => ['audio/aac', 'audio/x-aac', 'audio/x-hx-aac-adts', 'text/x-ssa'],
-        'asx' => ['application/x-ms-asx', 'audio/x-ms-asx', 'video/x-ms-asf', 'video/x-ms-wax', 'video/x-ms-wmx', 'video/x-ms-wvx'],
-        'atc' => ['application/vnd.acucorp'],
-        'atom' => ['application/atom+xml'],
-        'atomcat' => ['application/atomcat+xml'],
-        'atomsvc' => ['application/atomsvc+xml'],
-        'atx' => ['application/vnd.antix.game-component'],
-        'au' => ['audio/basic'],
-        'automount' => ['text/x-systemd-unit'],
-        'avf' => ['video/avi', 'video/divx', 'video/msvideo', 'video/vnd.divx', 'video/x-avi', 'video/x-msvideo'],
-        'avi' => ['video/avi', 'video/divx', 'video/msvideo', 'video/vnd.divx', 'video/x-avi', 'video/x-msvideo'],
-        'aw' => ['application/applixware', 'application/x-applix-word'],
-        'awb' => ['audio/amr-wb', 'audio/amr-wb-encrypted'],
-        'awk' => ['application/x-awk'],
-        'axa' => ['audio/annodex', 'audio/x-annodex'],
-        'axv' => ['video/annodex', 'video/x-annodex'],
-        'azf' => ['application/vnd.airzip.filesecure.azf'],
-        'azs' => ['application/vnd.airzip.filesecure.azs'],
-        'azw' => ['application/vnd.amazon.ebook'],
-        'bak' => ['application/x-trash'],
-        'bat' => ['application/x-msdownload'],
-        'bcpio' => ['application/x-bcpio'],
-        'bdf' => ['application/x-font-bdf'],
-        'bdm' => ['application/vnd.syncml.dm+wbxml', 'video/mp2t'],
-        'bdmv' => ['video/mp2t'],
-        'bed' => ['application/vnd.realvnc.bed'],
-        'bh2' => ['application/vnd.fujitsu.oasysprs'],
-        'bib' => ['text/x-bibtex'],
-        'bin' => ['application/octet-stream', 'application/x-saturn-rom', 'application/x-sega-cd-rom'],
-        'blb' => ['application/x-blorb'],
-        'blend' => ['application/x-blender'],
-        'blender' => ['application/x-blender'],
-        'blorb' => ['application/x-blorb'],
-        'bmi' => ['application/vnd.bmi'],
-        'bmp' => ['image/bmp', 'image/x-bmp', 'image/x-ms-bmp'],
-        'book' => ['application/vnd.framemaker'],
-        'box' => ['application/vnd.previewsystems.box'],
-        'boz' => ['application/x-bzip2'],
-        'bpk' => ['application/octet-stream'],
-        'bsdiff' => ['application/x-bsdiff'],
-        'btif' => ['image/prs.btif'],
-        'bz' => ['application/x-bzip', 'application/x-bzip2'],
-        'bz2' => ['application/x-bz2', 'application/x-bzip', 'application/x-bzip2'],
-        'c' => ['text/x-c', 'text/x-csrc'],
-        'c++' => ['text/x-c++src'],
-        'c11amc' => ['application/vnd.cluetrust.cartomobile-config'],
-        'c11amz' => ['application/vnd.cluetrust.cartomobile-config-pkg'],
-        'c4d' => ['application/vnd.clonk.c4group'],
-        'c4f' => ['application/vnd.clonk.c4group'],
-        'c4g' => ['application/vnd.clonk.c4group'],
-        'c4p' => ['application/vnd.clonk.c4group'],
-        'c4u' => ['application/vnd.clonk.c4group'],
-        'cab' => ['application/vnd.ms-cab-compressed', 'zz-application/zz-winassoc-cab'],
-        'caf' => ['audio/x-caf'],
-        'cap' => ['application/pcap', 'application/vnd.tcpdump.pcap', 'application/x-pcap'],
-        'car' => ['application/vnd.curl.car'],
-        'cat' => ['application/vnd.ms-pki.seccat'],
-        'cb7' => ['application/x-cb7', 'application/x-cbr'],
-        'cba' => ['application/x-cbr'],
-        'cbl' => ['text/x-cobol'],
-        'cbr' => ['application/vnd.comicbook-rar', 'application/x-cbr'],
-        'cbt' => ['application/x-cbr', 'application/x-cbt'],
-        'cbz' => ['application/vnd.comicbook+zip', 'application/x-cbr', 'application/x-cbz'],
-        'cc' => ['text/x-c', 'text/x-c++src'],
-        'ccmx' => ['application/x-ccmx'],
-        'cct' => ['application/x-director'],
-        'ccxml' => ['application/ccxml+xml'],
-        'cdbcmsg' => ['application/vnd.contact.cmsg'],
-        'cdf' => ['application/x-netcdf'],
-        'cdkey' => ['application/vnd.mediastation.cdkey'],
-        'cdmia' => ['application/cdmi-capability'],
-        'cdmic' => ['application/cdmi-container'],
-        'cdmid' => ['application/cdmi-domain'],
-        'cdmio' => ['application/cdmi-object'],
-        'cdmiq' => ['application/cdmi-queue'],
-        'cdr' => ['application/cdr', 'application/coreldraw', 'application/vnd.corel-draw', 'application/x-cdr', 'application/x-coreldraw', 'image/cdr', 'image/x-cdr', 'zz-application/zz-winassoc-cdr'],
-        'cdx' => ['chemical/x-cdx'],
-        'cdxml' => ['application/vnd.chemdraw+xml'],
-        'cdy' => ['application/vnd.cinderella'],
-        'cer' => ['application/pkix-cert'],
-        'cert' => ['application/x-x509-ca-cert'],
-        'cfs' => ['application/x-cfs-compressed'],
-        'cgb' => ['application/x-gameboy-color-rom'],
-        'cgm' => ['image/cgm'],
-        'chat' => ['application/x-chat'],
-        'chm' => ['application/vnd.ms-htmlhelp', 'application/x-chm'],
-        'chrt' => ['application/vnd.kde.kchart', 'application/x-kchart'],
-        'cif' => ['chemical/x-cif'],
-        'cii' => ['application/vnd.anser-web-certificate-issue-initiation'],
-        'cil' => ['application/vnd.ms-artgalry'],
-        'cl' => ['text/x-opencl-src'],
-        'cla' => ['application/vnd.claymore'],
-        'class' => ['application/java', 'application/java-byte-code', 'application/java-vm', 'application/x-java', 'application/x-java-class', 'application/x-java-vm'],
-        'clkk' => ['application/vnd.crick.clicker.keyboard'],
-        'clkp' => ['application/vnd.crick.clicker.palette'],
-        'clkt' => ['application/vnd.crick.clicker.template'],
-        'clkw' => ['application/vnd.crick.clicker.wordbank'],
-        'clkx' => ['application/vnd.crick.clicker'],
-        'clp' => ['application/x-msclip'],
-        'clpi' => ['video/mp2t'],
-        'cls' => ['application/x-tex', 'text/x-tex'],
-        'cmake' => ['text/x-cmake'],
-        'cmc' => ['application/vnd.cosmocaller'],
-        'cmdf' => ['chemical/x-cmdf'],
-        'cml' => ['chemical/x-cml'],
-        'cmp' => ['application/vnd.yellowriver-custom-menu'],
-        'cmx' => ['image/x-cmx'],
-        'cob' => ['text/x-cobol'],
-        'cod' => ['application/vnd.rim.cod'],
-        'coffee' => ['application/vnd.coffeescript'],
-        'com' => ['application/x-msdownload'],
-        'conf' => ['text/plain'],
-        'cpi' => ['video/mp2t'],
-        'cpio' => ['application/x-cpio'],
-        'cpio.gz' => ['application/x-cpio-compressed'],
-        'cpp' => ['text/x-c', 'text/x-c++src'],
-        'cpt' => ['application/mac-compactpro'],
-        'cr2' => ['image/x-canon-cr2'],
-        'crd' => ['application/x-mscardfile'],
-        'crdownload' => ['application/x-partial-download'],
-        'crl' => ['application/pkix-crl'],
-        'crt' => ['application/x-x509-ca-cert'],
-        'crw' => ['image/x-canon-crw'],
-        'cryptonote' => ['application/vnd.rig.cryptonote'],
-        'cs' => ['text/x-csharp'],
-        'csh' => ['application/x-csh'],
-        'csml' => ['chemical/x-csml'],
-        'csp' => ['application/vnd.commonspace'],
-        'css' => ['text/css'],
-        'cst' => ['application/x-director'],
-        'csv' => ['text/csv', 'text/x-comma-separated-values', 'text/x-csv'],
-        'csvs' => ['text/csv-schema'],
-        'cu' => ['application/cu-seeme'],
-        'cue' => ['application/x-cue'],
-        'cur' => ['image/x-win-bitmap'],
-        'curl' => ['text/vnd.curl'],
-        'cww' => ['application/prs.cww'],
-        'cxt' => ['application/x-director'],
-        'cxx' => ['text/x-c', 'text/x-c++src'],
-        'd' => ['text/x-dsrc'],
-        'dae' => ['model/vnd.collada+xml'],
-        'daf' => ['application/vnd.mobius.daf'],
-        'dar' => ['application/x-dar'],
-        'dart' => ['application/vnd.dart'],
-        'dataless' => ['application/vnd.fdsn.seed'],
-        'davmount' => ['application/davmount+xml'],
-        'dbf' => ['application/dbase', 'application/dbf', 'application/x-dbase', 'application/x-dbf'],
-        'dbk' => ['application/docbook+xml', 'application/vnd.oasis.docbook+xml', 'application/x-docbook+xml'],
-        'dc' => ['application/x-dc-rom'],
-        'dcl' => ['text/x-dcl'],
-        'dcm' => ['application/dicom'],
-        'dcr' => ['application/x-director', 'image/x-kodak-dcr'],
-        'dcurl' => ['text/vnd.curl.dcurl'],
-        'dd2' => ['application/vnd.oma.dd2+xml'],
-        'ddd' => ['application/vnd.fujixerox.ddd'],
-        'dds' => ['image/x-dds'],
-        'deb' => ['application/vnd.debian.binary-package', 'application/x-deb', 'application/x-debian-package'],
-        'def' => ['text/plain'],
-        'deploy' => ['application/octet-stream'],
-        'der' => ['application/x-x509-ca-cert'],
-        'desktop' => ['application/x-desktop', 'application/x-gnome-app-info'],
-        'device' => ['text/x-systemd-unit'],
-        'dfac' => ['application/vnd.dreamfactory'],
-        'dgc' => ['application/x-dgc-compressed'],
-        'di' => ['text/x-dsrc'],
-        'dia' => ['application/x-dia-diagram'],
-        'dib' => ['image/bmp', 'image/x-bmp', 'image/x-ms-bmp'],
-        'dic' => ['text/x-c'],
-        'diff' => ['text/x-diff', 'text/x-patch'],
-        'dir' => ['application/x-director'],
-        'dis' => ['application/vnd.mobius.dis'],
-        'dist' => ['application/octet-stream'],
-        'distz' => ['application/octet-stream'],
-        'divx' => ['video/avi', 'video/divx', 'video/msvideo', 'video/vnd.divx', 'video/x-avi', 'video/x-msvideo'],
-        'djv' => ['image/vnd.djvu', 'image/vnd.djvu+multipage', 'image/x-djvu', 'image/x.djvu'],
-        'djvu' => ['image/vnd.djvu', 'image/vnd.djvu+multipage', 'image/x-djvu', 'image/x.djvu'],
-        'dll' => ['application/x-msdownload'],
-        'dmg' => ['application/x-apple-diskimage'],
-        'dmp' => ['application/pcap', 'application/vnd.tcpdump.pcap', 'application/x-pcap'],
-        'dms' => ['application/octet-stream'],
-        'dna' => ['application/vnd.dna'],
-        'dng' => ['image/x-adobe-dng'],
-        'doc' => ['application/msword', 'application/vnd.ms-word', 'application/x-msword', 'zz-application/zz-winassoc-doc'],
-        'docbook' => ['application/docbook+xml', 'application/vnd.oasis.docbook+xml', 'application/x-docbook+xml'],
-        'docm' => ['application/vnd.ms-word.document.macroenabled.12'],
-        'docx' => ['application/vnd.openxmlformats-officedocument.wordprocessingml.document'],
-        'dot' => ['application/msword', 'application/msword-template', 'text/vnd.graphviz'],
-        'dotm' => ['application/vnd.ms-word.template.macroenabled.12'],
-        'dotx' => ['application/vnd.openxmlformats-officedocument.wordprocessingml.template'],
-        'dp' => ['application/vnd.osgi.dp'],
-        'dpg' => ['application/vnd.dpgraph'],
-        'dra' => ['audio/vnd.dra'],
-        'dsc' => ['text/prs.lines.tag'],
-        'dsl' => ['text/x-dsl'],
-        'dssc' => ['application/dssc+der'],
-        'dtb' => ['application/x-dtbook+xml'],
-        'dtd' => ['application/xml-dtd', 'text/x-dtd'],
-        'dts' => ['audio/vnd.dts', 'audio/x-dts'],
-        'dtshd' => ['audio/vnd.dts.hd', 'audio/x-dtshd'],
-        'dtx' => ['application/x-tex', 'text/x-tex'],
-        'dump' => ['application/octet-stream'],
-        'dv' => ['video/dv'],
-        'dvb' => ['video/vnd.dvb.file'],
-        'dvi' => ['application/x-dvi'],
-        'dvi.bz2' => ['application/x-bzdvi'],
-        'dvi.gz' => ['application/x-gzdvi'],
-        'dwf' => ['model/vnd.dwf'],
-        'dwg' => ['image/vnd.dwg'],
-        'dxf' => ['image/vnd.dxf'],
-        'dxp' => ['application/vnd.spotfire.dxp'],
-        'dxr' => ['application/x-director'],
-        'e' => ['text/x-eiffel'],
-        'ecelp4800' => ['audio/vnd.nuera.ecelp4800'],
-        'ecelp7470' => ['audio/vnd.nuera.ecelp7470'],
-        'ecelp9600' => ['audio/vnd.nuera.ecelp9600'],
-        'ecma' => ['application/ecmascript'],
-        'edm' => ['application/vnd.novadigm.edm'],
-        'edx' => ['application/vnd.novadigm.edx'],
-        'efif' => ['application/vnd.picsel'],
-        'egon' => ['application/x-egon'],
-        'ei6' => ['application/vnd.pg.osasli'],
-        'eif' => ['text/x-eiffel'],
-        'el' => ['text/x-emacs-lisp'],
-        'elc' => ['application/octet-stream'],
-        'emf' => ['application/emf', 'application/x-emf', 'application/x-msmetafile', 'image/emf', 'image/x-emf'],
-        'eml' => ['message/rfc822'],
-        'emma' => ['application/emma+xml'],
-        'emp' => ['application/vnd.emusic-emusic_package'],
-        'emz' => ['application/x-msmetafile'],
-        'ent' => ['application/xml-external-parsed-entity', 'text/xml-external-parsed-entity'],
-        'eol' => ['audio/vnd.digital-winds'],
-        'eot' => ['application/vnd.ms-fontobject'],
-        'eps' => ['application/postscript', 'image/x-eps'],
-        'eps.bz2' => ['image/x-bzeps'],
-        'eps.gz' => ['image/x-gzeps'],
-        'epsf' => ['image/x-eps'],
-        'epsf.bz2' => ['image/x-bzeps'],
-        'epsf.gz' => ['image/x-gzeps'],
-        'epsi' => ['image/x-eps'],
-        'epsi.bz2' => ['image/x-bzeps'],
-        'epsi.gz' => ['image/x-gzeps'],
-        'epub' => ['application/epub+zip'],
-        'erl' => ['text/x-erlang'],
-        'es' => ['application/ecmascript', 'text/ecmascript'],
-        'es3' => ['application/vnd.eszigno3+xml'],
-        'esa' => ['application/vnd.osgi.subsystem'],
-        'esf' => ['application/vnd.epson.esf'],
-        'et3' => ['application/vnd.eszigno3+xml'],
-        'etheme' => ['application/x-e-theme'],
-        'etx' => ['text/x-setext'],
-        'eva' => ['application/x-eva'],
-        'evy' => ['application/x-envoy'],
-        'exe' => ['application/x-ms-dos-executable', 'application/x-msdownload'],
-        'exi' => ['application/exi'],
-        'exr' => ['image/x-exr'],
-        'ext' => ['application/vnd.novadigm.ext'],
-        'ez' => ['application/andrew-inset'],
-        'ez2' => ['application/vnd.ezpix-album'],
-        'ez3' => ['application/vnd.ezpix-package'],
-        'f' => ['text/x-fortran'],
-        'f4a' => ['audio/m4a', 'audio/mp4', 'audio/x-m4a'],
-        'f4b' => ['audio/x-m4b'],
-        'f4v' => ['video/mp4', 'video/mp4v-es', 'video/x-f4v', 'video/x-m4v'],
-        'f77' => ['text/x-fortran'],
-        'f90' => ['text/x-fortran'],
-        'f95' => ['text/x-fortran'],
-        'fb2' => ['application/x-fictionbook', 'application/x-fictionbook+xml'],
-        'fb2.zip' => ['application/x-zip-compressed-fb2'],
-        'fbs' => ['image/vnd.fastbidsheet'],
-        'fcdt' => ['application/vnd.adobe.formscentral.fcdt'],
-        'fcs' => ['application/vnd.isac.fcs'],
-        'fd' => ['application/x-fd-file', 'application/x-raw-floppy-disk-image'],
-        'fdf' => ['application/vnd.fdf'],
-        'fds' => ['application/x-fds-disk'],
-        'fe_launch' => ['application/vnd.denovo.fcselayout-link'],
-        'feature' => ['text/x-gherkin'],
-        'fg5' => ['application/vnd.fujitsu.oasysgp'],
-        'fgd' => ['application/x-director'],
-        'fh' => ['image/x-freehand'],
-        'fh4' => ['image/x-freehand'],
-        'fh5' => ['image/x-freehand'],
-        'fh7' => ['image/x-freehand'],
-        'fhc' => ['image/x-freehand'],
-        'fig' => ['application/x-xfig', 'image/x-xfig'],
-        'fits' => ['image/fits', 'image/x-fits'],
-        'fl' => ['application/x-fluid'],
-        'flac' => ['audio/flac', 'audio/x-flac'],
-        'flatpak' => ['application/vnd.flatpak', 'application/vnd.xdgapp'],
-        'flatpakref' => ['application/vnd.flatpak.ref'],
-        'flatpakrepo' => ['application/vnd.flatpak.repo'],
-        'flc' => ['video/fli', 'video/x-fli', 'video/x-flic'],
-        'fli' => ['video/fli', 'video/x-fli', 'video/x-flic'],
-        'flo' => ['application/vnd.micrografx.flo'],
-        'flv' => ['video/x-flv', 'application/x-flash-video', 'flv-application/octet-stream', 'video/flv'],
-        'flw' => ['application/vnd.kde.kivio', 'application/x-kivio'],
-        'flx' => ['text/vnd.fmi.flexstor'],
-        'fly' => ['text/vnd.fly'],
-        'fm' => ['application/vnd.framemaker', 'application/x-frame'],
-        'fnc' => ['application/vnd.frogans.fnc'],
-        'fo' => ['text/x-xslfo'],
-        'fodg' => ['application/vnd.oasis.opendocument.graphics-flat-xml'],
-        'fodp' => ['application/vnd.oasis.opendocument.presentation-flat-xml'],
-        'fods' => ['application/vnd.oasis.opendocument.spreadsheet-flat-xml'],
-        'fodt' => ['application/vnd.oasis.opendocument.text-flat-xml'],
-        'for' => ['text/x-fortran'],
-        'fpx' => ['image/vnd.fpx'],
-        'frame' => ['application/vnd.framemaker'],
-        'fsc' => ['application/vnd.fsc.weblaunch'],
-        'fst' => ['image/vnd.fst'],
-        'ftc' => ['application/vnd.fluxtime.clip'],
-        'fti' => ['application/vnd.anser-web-funds-transfer-initiation'],
-        'fvt' => ['video/vnd.fvt'],
-        'fxm' => ['video/x-javafx'],
-        'fxp' => ['application/vnd.adobe.fxp'],
-        'fxpl' => ['application/vnd.adobe.fxp'],
-        'fzs' => ['application/vnd.fuzzysheet'],
-        'g2w' => ['application/vnd.geoplan'],
-        'g3' => ['image/fax-g3', 'image/g3fax'],
-        'g3w' => ['application/vnd.geospace'],
-        'gac' => ['application/vnd.groove-account'],
-        'gam' => ['application/x-tads'],
-        'gb' => ['application/x-gameboy-rom'],
-        'gba' => ['application/x-gba-rom'],
-        'gbc' => ['application/x-gameboy-color-rom'],
-        'gbr' => ['application/rpki-ghostbusters', 'image/x-gimp-gbr'],
-        'gca' => ['application/x-gca-compressed'],
-        'gcode' => ['text/x.gcode'],
-        'gcrd' => ['text/directory', 'text/vcard', 'text/x-vcard'],
-        'gdl' => ['model/vnd.gdl'],
-        'ged' => ['application/x-gedcom', 'text/gedcom'],
-        'gedcom' => ['application/x-gedcom', 'text/gedcom'],
-        'gem' => ['application/x-gtar', 'application/x-tar'],
-        'gen' => ['application/x-genesis-rom'],
-        'geo' => ['application/vnd.dynageo'],
-        'geo.json' => ['application/geo+json', 'application/vnd.geo+json'],
-        'geojson' => ['application/geo+json', 'application/vnd.geo+json'],
-        'gex' => ['application/vnd.geometry-explorer'],
-        'gf' => ['application/x-tex-gf'],
-        'gg' => ['application/x-gamegear-rom'],
-        'ggb' => ['application/vnd.geogebra.file'],
-        'ggt' => ['application/vnd.geogebra.tool'],
-        'ghf' => ['application/vnd.groove-help'],
-        'gif' => ['image/gif'],
-        'gih' => ['image/x-gimp-gih'],
-        'gim' => ['application/vnd.groove-identity-message'],
-        'glade' => ['application/x-glade'],
-        'gml' => ['application/gml+xml'],
-        'gmo' => ['application/x-gettext-translation'],
-        'gmx' => ['application/vnd.gmx'],
-        'gnc' => ['application/x-gnucash'],
-        'gnd' => ['application/gnunet-directory'],
-        'gnucash' => ['application/x-gnucash'],
-        'gnumeric' => ['application/x-gnumeric'],
-        'gnuplot' => ['application/x-gnuplot'],
-        'go' => ['text/x-go'],
-        'gp' => ['application/x-gnuplot'],
-        'gpg' => ['application/pgp', 'application/pgp-encrypted', 'application/pgp-keys', 'application/pgp-signature'],
-        'gph' => ['application/vnd.flographit'],
-        'gplt' => ['application/x-gnuplot'],
-        'gpx' => ['application/gpx', 'application/gpx+xml', 'application/x-gpx', 'application/x-gpx+xml'],
-        'gqf' => ['application/vnd.grafeq'],
-        'gqs' => ['application/vnd.grafeq'],
-        'gra' => ['application/x-graphite'],
-        'gram' => ['application/srgs'],
-        'gramps' => ['application/x-gramps-xml'],
-        'gre' => ['application/vnd.geometry-explorer'],
-        'grv' => ['application/vnd.groove-injector'],
-        'grxml' => ['application/srgs+xml'],
-        'gs' => ['text/x-genie'],
-        'gsf' => ['application/x-font-ghostscript', 'application/x-font-type1'],
-        'gsm' => ['audio/x-gsm'],
-        'gtar' => ['application/x-gtar', 'application/x-tar'],
-        'gtm' => ['application/vnd.groove-tool-message'],
-        'gtw' => ['model/vnd.gtw'],
-        'gv' => ['text/vnd.graphviz'],
-        'gvp' => ['text/google-video-pointer', 'text/x-google-video-pointer'],
-        'gxf' => ['application/gxf'],
-        'gxt' => ['application/vnd.geonext'],
-        'gz' => ['application/x-gzip', 'application/gzip'],
-        'h' => ['text/x-c', 'text/x-chdr'],
-        'h++' => ['text/x-c++hdr'],
-        'h261' => ['video/h261'],
-        'h263' => ['video/h263'],
-        'h264' => ['video/h264'],
-        'h4' => ['application/x-hdf'],
-        'h5' => ['application/x-hdf'],
-        'hal' => ['application/vnd.hal+xml'],
-        'hbci' => ['application/vnd.hbci'],
-        'hdf' => ['application/x-hdf'],
-        'hdf4' => ['application/x-hdf'],
-        'hdf5' => ['application/x-hdf'],
-        'heic' => ['image/heic', 'image/heic-sequence', 'image/heif', 'image/heif-sequence'],
-        'heif' => ['image/heic', 'image/heic-sequence', 'image/heif', 'image/heif-sequence'],
-        'hfe' => ['application/x-hfe-file', 'application/x-hfe-floppy-image'],
-        'hh' => ['text/x-c', 'text/x-c++hdr'],
-        'hlp' => ['application/winhlp', 'zz-application/zz-winassoc-hlp'],
-        'hp' => ['text/x-c++hdr'],
-        'hpgl' => ['application/vnd.hp-hpgl'],
-        'hpid' => ['application/vnd.hp-hpid'],
-        'hpp' => ['text/x-c++hdr'],
-        'hps' => ['application/vnd.hp-hps'],
-        'hqx' => ['application/stuffit', 'application/mac-binhex40'],
-        'hs' => ['text/x-haskell'],
-        'htke' => ['application/vnd.kenameaapp'],
-        'htm' => ['text/html'],
-        'html' => ['text/html'],
-        'hvd' => ['application/vnd.yamaha.hv-dic'],
-        'hvp' => ['application/vnd.yamaha.hv-voice'],
-        'hvs' => ['application/vnd.yamaha.hv-script'],
-        'hwp' => ['application/vnd.haansoft-hwp', 'application/x-hwp'],
-        'hwt' => ['application/vnd.haansoft-hwt', 'application/x-hwt'],
-        'hxx' => ['text/x-c++hdr'],
-        'i2g' => ['application/vnd.intergeo'],
-        'ica' => ['application/x-ica'],
-        'icb' => ['image/x-icb', 'image/x-tga'],
-        'icc' => ['application/vnd.iccprofile'],
-        'ice' => ['x-conference/x-cooltalk'],
-        'icm' => ['application/vnd.iccprofile'],
-        'icns' => ['image/x-icns'],
-        'ico' => ['application/ico', 'image/ico', 'image/icon', 'image/vnd.microsoft.icon', 'image/x-ico', 'image/x-icon', 'text/ico'],
-        'ics' => ['application/ics', 'text/calendar', 'text/x-vcalendar'],
-        'idl' => ['text/x-idl'],
-        'ief' => ['image/ief'],
-        'ifb' => ['text/calendar'],
-        'iff' => ['image/x-iff', 'image/x-ilbm'],
-        'ifm' => ['application/vnd.shana.informed.formdata'],
-        'iges' => ['model/iges'],
-        'igl' => ['application/vnd.igloader'],
-        'igm' => ['application/vnd.insors.igm'],
-        'igs' => ['model/iges'],
-        'igx' => ['application/vnd.micrografx.igx'],
-        'iif' => ['application/vnd.shana.informed.interchange'],
-        'ilbm' => ['image/x-iff', 'image/x-ilbm'],
-        'ime' => ['audio/imelody', 'audio/x-imelody', 'text/x-imelody'],
-        'img' => ['application/x-raw-disk-image'],
-        'img.xz' => ['application/x-raw-disk-image-xz-compressed'],
-        'imp' => ['application/vnd.accpac.simply.imp'],
-        'ims' => ['application/vnd.ms-ims'],
-        'imy' => ['audio/imelody', 'audio/x-imelody', 'text/x-imelody'],
-        'in' => ['text/plain'],
-        'ink' => ['application/inkml+xml'],
-        'inkml' => ['application/inkml+xml'],
-        'ins' => ['application/x-tex', 'text/x-tex'],
-        'install' => ['application/x-install-instructions'],
-        'iota' => ['application/vnd.astraea-software.iota'],
-        'ipfix' => ['application/ipfix'],
-        'ipk' => ['application/vnd.shana.informed.package'],
-        'iptables' => ['text/x-iptables'],
-        'ipynb' => ['application/x-ipynb+json'],
-        'irm' => ['application/vnd.ibm.rights-management'],
-        'irp' => ['application/vnd.irepository.package+xml'],
-        'iso' => ['application/x-cd-image', 'application/x-gamecube-iso-image', 'application/x-gamecube-rom', 'application/x-iso9660-image', 'application/x-saturn-rom', 'application/x-sega-cd-rom', 'application/x-wbfs', 'application/x-wia', 'application/x-wii-iso-image', 'application/x-wii-rom'],
-        'iso9660' => ['application/x-cd-image', 'application/x-iso9660-image'],
-        'it' => ['audio/x-it'],
-        'it87' => ['application/x-it87'],
-        'itp' => ['application/vnd.shana.informed.formtemplate'],
-        'ivp' => ['application/vnd.immervision-ivp'],
-        'ivu' => ['application/vnd.immervision-ivu'],
-        'j2c' => ['image/x-jp2-codestream'],
-        'j2k' => ['image/x-jp2-codestream'],
-        'jad' => ['text/vnd.sun.j2me.app-descriptor'],
-        'jam' => ['application/vnd.jam'],
-        'jar' => ['application/x-java-archive', 'application/java-archive', 'application/x-jar'],
-        'java' => ['text/x-java', 'text/x-java-source'],
-        'jceks' => ['application/x-java-jce-keystore'],
-        'jisp' => ['application/vnd.jisp'],
-        'jks' => ['application/x-java-keystore'],
-        'jlt' => ['application/vnd.hp-jlyt'],
-        'jng' => ['image/x-jng'],
-        'jnlp' => ['application/x-java-jnlp-file'],
-        'joda' => ['application/vnd.joost.joda-archive'],
-        'jp2' => ['image/jp2', 'image/jpeg2000', 'image/jpeg2000-image', 'image/x-jpeg2000-image'],
-        'jpc' => ['image/x-jp2-codestream'],
-        'jpe' => ['image/jpeg', 'image/pjpeg'],
-        'jpeg' => ['image/jpeg', 'image/pjpeg'],
-        'jpf' => ['image/jpx'],
-        'jpg' => ['image/jpeg', 'image/pjpeg'],
-        'jpg2' => ['image/jp2', 'image/jpeg2000', 'image/jpeg2000-image', 'image/x-jpeg2000-image'],
-        'jpgm' => ['image/jpm', 'video/jpm'],
-        'jpgv' => ['video/jpeg'],
-        'jpm' => ['image/jpm', 'video/jpm'],
-        'jpr' => ['application/x-jbuilder-project'],
-        'jpx' => ['application/x-jbuilder-project', 'image/jpx'],
-        'jrd' => ['application/jrd+json'],
-        'js' => ['text/javascript', 'application/javascript', 'application/x-javascript'],
-        'jsm' => ['application/javascript', 'application/x-javascript', 'text/javascript'],
-        'json' => ['application/json'],
-        'json-patch' => ['application/json-patch+json'],
-        'jsonld' => ['application/ld+json'],
-        'jsonml' => ['application/jsonml+json'],
-        'k25' => ['image/x-kodak-k25'],
-        'k7' => ['application/x-thomson-cassette'],
-        'kar' => ['audio/midi', 'audio/x-midi'],
-        'karbon' => ['application/vnd.kde.karbon', 'application/x-karbon'],
-        'kdc' => ['image/x-kodak-kdc'],
-        'kdelnk' => ['application/x-desktop', 'application/x-gnome-app-info'],
-        'kexi' => ['application/x-kexiproject-sqlite', 'application/x-kexiproject-sqlite2', 'application/x-kexiproject-sqlite3', 'application/x-vnd.kde.kexi'],
-        'kexic' => ['application/x-kexi-connectiondata'],
-        'kexis' => ['application/x-kexiproject-shortcut'],
-        'key' => ['application/vnd.apple.keynote', 'application/x-iwork-keynote-sffkey'],
-        'kfo' => ['application/vnd.kde.kformula', 'application/x-kformula'],
-        'kia' => ['application/vnd.kidspiration'],
-        'kil' => ['application/x-killustrator'],
-        'kino' => ['application/smil', 'application/smil+xml'],
-        'kml' => ['application/vnd.google-earth.kml+xml'],
-        'kmz' => ['application/vnd.google-earth.kmz'],
-        'kne' => ['application/vnd.kinar'],
-        'knp' => ['application/vnd.kinar'],
-        'kon' => ['application/vnd.kde.kontour', 'application/x-kontour'],
-        'kpm' => ['application/x-kpovmodeler'],
-        'kpr' => ['application/vnd.kde.kpresenter', 'application/x-kpresenter'],
-        'kpt' => ['application/vnd.kde.kpresenter', 'application/x-kpresenter'],
-        'kpxx' => ['application/vnd.ds-keypoint'],
-        'kra' => ['application/x-krita'],
-        'ks' => ['application/x-java-keystore'],
-        'ksp' => ['application/vnd.kde.kspread', 'application/x-kspread'],
-        'ktr' => ['application/vnd.kahootz'],
-        'ktx' => ['image/ktx'],
-        'ktz' => ['application/vnd.kahootz'],
-        'kud' => ['application/x-kugar'],
-        'kwd' => ['application/vnd.kde.kword', 'application/x-kword'],
-        'kwt' => ['application/vnd.kde.kword', 'application/x-kword'],
-        'la' => ['application/x-shared-library-la'],
-        'lasxml' => ['application/vnd.las.las+xml'],
-        'latex' => ['application/x-latex', 'application/x-tex', 'text/x-tex'],
-        'lbd' => ['application/vnd.llamagraphics.life-balance.desktop'],
-        'lbe' => ['application/vnd.llamagraphics.life-balance.exchange+xml'],
-        'lbm' => ['image/x-iff', 'image/x-ilbm'],
-        'ldif' => ['text/x-ldif'],
-        'les' => ['application/vnd.hhe.lesson-player'],
-        'lha' => ['application/x-lha', 'application/x-lzh-compressed'],
-        'lhs' => ['text/x-literate-haskell'],
-        'lhz' => ['application/x-lhz'],
-        'link66' => ['application/vnd.route66.link66+xml'],
-        'list' => ['text/plain'],
-        'list3820' => ['application/vnd.ibm.modcap'],
-        'listafp' => ['application/vnd.ibm.modcap'],
-        'lnk' => ['application/x-ms-shortcut'],
-        'lnx' => ['application/x-atari-lynx-rom'],
-        'loas' => ['audio/usac'],
-        'log' => ['text/plain', 'text/x-log'],
-        'lostxml' => ['application/lost+xml'],
-        'lrf' => ['application/octet-stream'],
-        'lrm' => ['application/vnd.ms-lrm'],
-        'lrv' => ['video/mp4', 'video/mp4v-es', 'video/x-m4v'],
-        'lrz' => ['application/x-lrzip'],
-        'ltf' => ['application/vnd.frogans.ltf'],
-        'ltx' => ['application/x-tex', 'text/x-tex'],
-        'lua' => ['text/x-lua'],
-        'lvp' => ['audio/vnd.lucent.voice'],
-        'lwo' => ['image/x-lwo'],
-        'lwob' => ['image/x-lwo'],
-        'lwp' => ['application/vnd.lotus-wordpro'],
-        'lws' => ['image/x-lws'],
-        'ly' => ['text/x-lilypond'],
-        'lyx' => ['application/x-lyx', 'text/x-lyx'],
-        'lz' => ['application/x-lzip'],
-        'lz4' => ['application/x-lz4'],
-        'lzh' => ['application/x-lha', 'application/x-lzh-compressed'],
-        'lzma' => ['application/x-lzma'],
-        'lzo' => ['application/x-lzop'],
-        'm' => ['text/x-matlab', 'text/x-objcsrc', 'text/x-octave'],
-        'm13' => ['application/x-msmediaview'],
-        'm14' => ['application/x-msmediaview'],
-        'm15' => ['audio/x-mod'],
-        'm1u' => ['video/vnd.mpegurl', 'video/x-mpegurl'],
-        'm1v' => ['video/mpeg'],
-        'm21' => ['application/mp21'],
-        'm2a' => ['audio/mpeg'],
-        'm2t' => ['video/mp2t'],
-        'm2ts' => ['video/mp2t'],
-        'm2v' => ['video/mpeg'],
-        'm3a' => ['audio/mpeg'],
-        'm3u' => ['audio/x-mpegurl', 'application/m3u', 'application/vnd.apple.mpegurl', 'audio/m3u', 'audio/mpegurl', 'audio/x-m3u', 'audio/x-mp3-playlist'],
-        'm3u8' => ['application/m3u', 'application/vnd.apple.mpegurl', 'audio/m3u', 'audio/mpegurl', 'audio/x-m3u', 'audio/x-mp3-playlist', 'audio/x-mpegurl'],
-        'm4' => ['application/x-m4'],
-        'm4a' => ['audio/mp4', 'audio/m4a', 'audio/x-m4a'],
-        'm4b' => ['audio/x-m4b'],
-        'm4r' => ['audio/x-m4r'],
-        'm4u' => ['video/vnd.mpegurl', 'video/x-mpegurl'],
-        'm4v' => ['video/mp4', 'video/mp4v-es', 'video/x-m4v'],
-        'm7' => ['application/x-thomson-cartridge-memo7'],
-        'ma' => ['application/mathematica'],
-        'mab' => ['application/x-markaby'],
-        'mads' => ['application/mads+xml'],
-        'mag' => ['application/vnd.ecowin.chart'],
-        'mak' => ['text/x-makefile'],
-        'maker' => ['application/vnd.framemaker'],
-        'man' => ['application/x-troff-man', 'text/troff'],
-        'manifest' => ['text/cache-manifest'],
-        'mar' => ['application/octet-stream'],
-        'markdown' => ['text/markdown', 'text/x-markdown'],
-        'mathml' => ['application/mathml+xml'],
-        'mb' => ['application/mathematica'],
-        'mbk' => ['application/vnd.mobius.mbk'],
-        'mbox' => ['application/mbox'],
-        'mc1' => ['application/vnd.medcalcdata'],
-        'mcd' => ['application/vnd.mcd'],
-        'mcurl' => ['text/vnd.curl.mcurl'],
-        'md' => ['text/markdown', 'text/x-markdown'],
-        'mdb' => ['application/x-msaccess', 'application/mdb', 'application/msaccess', 'application/vnd.ms-access', 'application/vnd.msaccess', 'application/x-mdb', 'zz-application/zz-winassoc-mdb'],
-        'mdi' => ['image/vnd.ms-modi'],
-        'mdx' => ['application/x-genesis-32x-rom'],
-        'me' => ['text/troff', 'text/x-troff-me'],
-        'med' => ['audio/x-mod'],
-        'mesh' => ['model/mesh'],
-        'meta4' => ['application/metalink4+xml'],
-        'metalink' => ['application/metalink+xml'],
-        'mets' => ['application/mets+xml'],
-        'mfm' => ['application/vnd.mfmp'],
-        'mft' => ['application/rpki-manifest'],
-        'mgp' => ['application/vnd.osgeo.mapguide.package', 'application/x-magicpoint'],
-        'mgz' => ['application/vnd.proteus.magazine'],
-        'mht' => ['application/x-mimearchive'],
-        'mhtml' => ['application/x-mimearchive'],
-        'mid' => ['audio/midi', 'audio/x-midi'],
-        'midi' => ['audio/midi', 'audio/x-midi'],
-        'mie' => ['application/x-mie'],
-        'mif' => ['application/vnd.mif', 'application/x-mif'],
-        'mime' => ['message/rfc822'],
-        'minipsf' => ['audio/x-minipsf'],
-        'mj2' => ['video/mj2'],
-        'mjp2' => ['video/mj2'],
-        'mjpeg' => ['video/x-mjpeg'],
-        'mjpg' => ['video/x-mjpeg'],
-        'mjs' => ['application/javascript', 'application/x-javascript', 'text/javascript'],
-        'mk' => ['text/x-makefile'],
-        'mk3d' => ['video/x-matroska', 'video/x-matroska-3d'],
-        'mka' => ['audio/x-matroska'],
-        'mkd' => ['text/markdown', 'text/x-markdown'],
-        'mks' => ['video/x-matroska'],
-        'mkv' => ['video/x-matroska'],
-        'ml' => ['text/x-ocaml'],
-        'mli' => ['text/x-ocaml'],
-        'mlp' => ['application/vnd.dolby.mlp'],
-        'mm' => ['text/x-troff-mm'],
-        'mmd' => ['application/vnd.chipnuts.karaoke-mmd'],
-        'mmf' => ['application/vnd.smaf', 'application/x-smaf'],
-        'mml' => ['application/mathml+xml', 'text/mathml'],
-        'mmr' => ['image/vnd.fujixerox.edmics-mmr'],
-        'mng' => ['video/x-mng'],
-        'mny' => ['application/x-msmoney'],
-        'mo' => ['application/x-gettext-translation', 'text/x-modelica'],
-        'mo3' => ['audio/x-mo3'],
-        'mobi' => ['application/x-mobipocket-ebook'],
-        'moc' => ['text/x-moc'],
-        'mod' => ['audio/x-mod'],
-        'mods' => ['application/mods+xml'],
-        'mof' => ['text/x-mof'],
-        'moov' => ['video/quicktime'],
-        'mount' => ['text/x-systemd-unit'],
-        'mov' => ['video/quicktime'],
-        'movie' => ['video/x-sgi-movie'],
-        'mp+' => ['audio/x-musepack'],
-        'mp2' => ['audio/mp2', 'audio/mpeg', 'audio/x-mp2', 'video/mpeg', 'video/mpeg-system', 'video/x-mpeg', 'video/x-mpeg-system', 'video/x-mpeg2'],
-        'mp21' => ['application/mp21'],
-        'mp2a' => ['audio/mpeg'],
-        'mp3' => ['audio/mpeg', 'audio/mp3', 'audio/x-mp3', 'audio/x-mpeg', 'audio/x-mpg'],
-        'mp4' => ['video/mp4', 'video/mp4v-es', 'video/x-m4v'],
-        'mp4a' => ['audio/mp4'],
-        'mp4s' => ['application/mp4'],
-        'mp4v' => ['video/mp4'],
-        'mpc' => ['application/vnd.mophun.certificate', 'audio/x-musepack'],
-        'mpe' => ['video/mpeg', 'video/mpeg-system', 'video/x-mpeg', 'video/x-mpeg-system', 'video/x-mpeg2'],
-        'mpeg' => ['video/mpeg', 'video/mpeg-system', 'video/x-mpeg', 'video/x-mpeg-system', 'video/x-mpeg2'],
-        'mpg' => ['video/mpeg', 'video/mpeg-system', 'video/x-mpeg', 'video/x-mpeg-system', 'video/x-mpeg2'],
-        'mpg4' => ['video/mp4'],
-        'mpga' => ['audio/mp3', 'audio/mpeg', 'audio/x-mp3', 'audio/x-mpeg', 'audio/x-mpg'],
-        'mpkg' => ['application/vnd.apple.installer+xml'],
-        'mpl' => ['video/mp2t'],
-        'mpls' => ['video/mp2t'],
-        'mpm' => ['application/vnd.blueice.multipass'],
-        'mpn' => ['application/vnd.mophun.application'],
-        'mpp' => ['application/vnd.ms-project', 'audio/x-musepack'],
-        'mpt' => ['application/vnd.ms-project'],
-        'mpy' => ['application/vnd.ibm.minipay'],
-        'mqy' => ['application/vnd.mobius.mqy'],
-        'mrc' => ['application/marc'],
-        'mrcx' => ['application/marcxml+xml'],
-        'mrl' => ['text/x-mrml'],
-        'mrml' => ['text/x-mrml'],
-        'mrw' => ['image/x-minolta-mrw'],
-        'ms' => ['text/troff', 'text/x-troff-ms'],
-        'mscml' => ['application/mediaservercontrol+xml'],
-        'mseed' => ['application/vnd.fdsn.mseed'],
-        'mseq' => ['application/vnd.mseq'],
-        'msf' => ['application/vnd.epson.msf'],
-        'msg' => ['application/vnd.ms-outlook'],
-        'msh' => ['model/mesh'],
-        'msi' => ['application/x-msdownload', 'application/x-msi'],
-        'msl' => ['application/vnd.mobius.msl'],
-        'msod' => ['image/x-msod'],
-        'msty' => ['application/vnd.muvee.style'],
-        'msx' => ['application/x-msx-rom'],
-        'mtm' => ['audio/x-mod'],
-        'mts' => ['model/vnd.mts', 'video/mp2t'],
-        'mup' => ['text/x-mup'],
-        'mus' => ['application/vnd.musician'],
-        'musicxml' => ['application/vnd.recordare.musicxml+xml'],
-        'mvb' => ['application/x-msmediaview'],
-        'mwf' => ['application/vnd.mfer'],
-        'mxf' => ['application/mxf'],
-        'mxl' => ['application/vnd.recordare.musicxml'],
-        'mxml' => ['application/xv+xml'],
-        'mxs' => ['application/vnd.triscape.mxs'],
-        'mxu' => ['video/vnd.mpegurl', 'video/x-mpegurl'],
-        'n-gage' => ['application/vnd.nokia.n-gage.symbian.install'],
-        'n3' => ['text/n3'],
-        'n64' => ['application/x-n64-rom'],
-        'nb' => ['application/mathematica', 'application/x-mathematica'],
-        'nbp' => ['application/vnd.wolfram.player'],
-        'nc' => ['application/x-netcdf'],
-        'ncx' => ['application/x-dtbncx+xml'],
-        'nds' => ['application/x-nintendo-ds-rom'],
-        'nef' => ['image/x-nikon-nef'],
-        'nes' => ['application/x-nes-rom'],
-        'nez' => ['application/x-nes-rom'],
-        'nfo' => ['text/x-nfo'],
-        'ngc' => ['application/x-neo-geo-pocket-color-rom'],
-        'ngdat' => ['application/vnd.nokia.n-gage.data'],
-        'ngp' => ['application/x-neo-geo-pocket-rom'],
-        'nitf' => ['application/vnd.nitf'],
-        'nlu' => ['application/vnd.neurolanguage.nlu'],
-        'nml' => ['application/vnd.enliven'],
-        'nnd' => ['application/vnd.noblenet-directory'],
-        'nns' => ['application/vnd.noblenet-sealer'],
-        'nnw' => ['application/vnd.noblenet-web'],
-        'not' => ['text/x-mup'],
-        'npx' => ['image/vnd.net-fpx'],
-        'nsc' => ['application/x-conference', 'application/x-netshow-channel'],
-        'nsf' => ['application/vnd.lotus-notes'],
-        'nsv' => ['video/x-nsv'],
-        'ntf' => ['application/vnd.nitf'],
-        'nzb' => ['application/x-nzb'],
-        'o' => ['application/x-object'],
-        'oa2' => ['application/vnd.fujitsu.oasys2'],
-        'oa3' => ['application/vnd.fujitsu.oasys3'],
-        'oas' => ['application/vnd.fujitsu.oasys'],
-        'obd' => ['application/x-msbinder'],
-        'obj' => ['application/x-tgif'],
-        'ocl' => ['text/x-ocl'],
-        'oda' => ['application/oda'],
-        'odb' => ['application/vnd.oasis.opendocument.database', 'application/vnd.sun.xml.base'],
-        'odc' => ['application/vnd.oasis.opendocument.chart'],
-        'odf' => ['application/vnd.oasis.opendocument.formula'],
-        'odft' => ['application/vnd.oasis.opendocument.formula-template'],
-        'odg' => ['application/vnd.oasis.opendocument.graphics'],
-        'odi' => ['application/vnd.oasis.opendocument.image'],
-        'odm' => ['application/vnd.oasis.opendocument.text-master'],
-        'odp' => ['application/vnd.oasis.opendocument.presentation'],
-        'ods' => ['application/vnd.oasis.opendocument.spreadsheet'],
-        'odt' => ['application/vnd.oasis.opendocument.text'],
-        'oga' => ['audio/ogg', 'audio/vorbis', 'audio/x-flac+ogg', 'audio/x-ogg', 'audio/x-oggflac', 'audio/x-speex+ogg', 'audio/x-vorbis', 'audio/x-vorbis+ogg'],
-        'ogg' => ['audio/ogg', 'audio/vorbis', 'audio/x-flac+ogg', 'audio/x-ogg', 'audio/x-oggflac', 'audio/x-speex+ogg', 'audio/x-vorbis', 'audio/x-vorbis+ogg', 'video/ogg', 'video/x-ogg', 'video/x-theora', 'video/x-theora+ogg'],
-        'ogm' => ['video/x-ogm', 'video/x-ogm+ogg'],
-        'ogv' => ['video/ogg', 'video/x-ogg'],
-        'ogx' => ['application/ogg', 'application/x-ogg'],
-        'old' => ['application/x-trash'],
-        'oleo' => ['application/x-oleo'],
-        'omdoc' => ['application/omdoc+xml'],
-        'onepkg' => ['application/onenote'],
-        'onetmp' => ['application/onenote'],
-        'onetoc' => ['application/onenote'],
-        'onetoc2' => ['application/onenote'],
-        'ooc' => ['text/x-ooc'],
-        'opf' => ['application/oebps-package+xml'],
-        'opml' => ['text/x-opml', 'text/x-opml+xml'],
-        'oprc' => ['application/vnd.palm', 'application/x-palm-database'],
-        'opus' => ['audio/ogg', 'audio/x-ogg', 'audio/x-opus+ogg'],
-        'ora' => ['image/openraster'],
-        'orf' => ['image/x-olympus-orf'],
-        'org' => ['application/vnd.lotus-organizer'],
-        'osf' => ['application/vnd.yamaha.openscoreformat'],
-        'osfpvg' => ['application/vnd.yamaha.openscoreformat.osfpvg+xml'],
-        'otc' => ['application/vnd.oasis.opendocument.chart-template'],
-        'otf' => ['application/vnd.oasis.opendocument.formula-template', 'application/x-font-otf', 'font/otf'],
-        'otg' => ['application/vnd.oasis.opendocument.graphics-template'],
-        'oth' => ['application/vnd.oasis.opendocument.text-web'],
-        'oti' => ['application/vnd.oasis.opendocument.image-template'],
-        'otp' => ['application/vnd.oasis.opendocument.presentation-template'],
-        'ots' => ['application/vnd.oasis.opendocument.spreadsheet-template'],
-        'ott' => ['application/vnd.oasis.opendocument.text-template'],
-        'owl' => ['application/rdf+xml', 'text/rdf'],
-        'owx' => ['application/owl+xml'],
-        'oxps' => ['application/oxps', 'application/vnd.ms-xpsdocument', 'application/xps'],
-        'oxt' => ['application/vnd.openofficeorg.extension'],
-        'p' => ['text/x-pascal'],
-        'p10' => ['application/pkcs10'],
-        'p12' => ['application/pkcs12', 'application/x-pkcs12'],
-        'p65' => ['application/x-pagemaker'],
-        'p7b' => ['application/x-pkcs7-certificates'],
-        'p7c' => ['application/pkcs7-mime'],
-        'p7m' => ['application/pkcs7-mime'],
-        'p7r' => ['application/x-pkcs7-certreqresp'],
-        'p7s' => ['application/pkcs7-signature'],
-        'p8' => ['application/pkcs8'],
-        'p8e' => ['application/pkcs8-encrypted'],
-        'pack' => ['application/x-java-pack200'],
-        'pak' => ['application/x-pak'],
-        'par2' => ['application/x-par2'],
-        'part' => ['application/x-partial-download'],
-        'pas' => ['text/x-pascal'],
-        'pat' => ['image/x-gimp-pat'],
-        'patch' => ['text/x-diff', 'text/x-patch'],
-        'path' => ['text/x-systemd-unit'],
-        'paw' => ['application/vnd.pawaafile'],
-        'pbd' => ['application/vnd.powerbuilder6'],
-        'pbm' => ['image/x-portable-bitmap'],
-        'pcap' => ['application/pcap', 'application/vnd.tcpdump.pcap', 'application/x-pcap'],
-        'pcd' => ['image/x-photo-cd'],
-        'pce' => ['application/x-pc-engine-rom'],
-        'pcf' => ['application/x-cisco-vpn-settings', 'application/x-font-pcf'],
-        'pcf.Z' => ['application/x-font-pcf'],
-        'pcf.gz' => ['application/x-font-pcf'],
-        'pcl' => ['application/vnd.hp-pcl'],
-        'pclxl' => ['application/vnd.hp-pclxl'],
-        'pct' => ['image/x-pict'],
-        'pcurl' => ['application/vnd.curl.pcurl'],
-        'pcx' => ['image/vnd.zbrush.pcx', 'image/x-pcx'],
-        'pdb' => ['application/vnd.palm', 'application/x-aportisdoc', 'application/x-palm-database'],
-        'pdc' => ['application/x-aportisdoc'],
-        'pdf' => ['application/pdf', 'application/acrobat', 'application/nappdf', 'application/x-pdf', 'image/pdf'],
-        'pdf.bz2' => ['application/x-bzpdf'],
-        'pdf.gz' => ['application/x-gzpdf'],
-        'pdf.lz' => ['application/x-lzpdf'],
-        'pdf.xz' => ['application/x-xzpdf'],
-        'pef' => ['image/x-pentax-pef'],
-        'pem' => ['application/x-x509-ca-cert'],
-        'perl' => ['application/x-perl', 'text/x-perl'],
-        'pfa' => ['application/x-font-type1'],
-        'pfb' => ['application/x-font-type1'],
-        'pfm' => ['application/x-font-type1'],
-        'pfr' => ['application/font-tdpfr'],
-        'pfx' => ['application/pkcs12', 'application/x-pkcs12'],
-        'pgm' => ['image/x-portable-graymap'],
-        'pgn' => ['application/vnd.chess-pgn', 'application/x-chess-pgn'],
-        'pgp' => ['application/pgp', 'application/pgp-encrypted', 'application/pgp-keys', 'application/pgp-signature'],
-        'php' => ['application/x-php'],
-        'php3' => ['application/x-php'],
-        'php4' => ['application/x-php'],
-        'php5' => ['application/x-php'],
-        'phps' => ['application/x-php'],
-        'pic' => ['image/x-pict'],
-        'pict' => ['image/x-pict'],
-        'pict1' => ['image/x-pict'],
-        'pict2' => ['image/x-pict'],
-        'pk' => ['application/x-tex-pk'],
-        'pkg' => ['application/octet-stream', 'application/x-xar'],
-        'pki' => ['application/pkixcmp'],
-        'pkipath' => ['application/pkix-pkipath'],
-        'pkr' => ['application/pgp-keys'],
-        'pl' => ['application/x-perl', 'text/x-perl'],
-        'pla' => ['audio/x-iriver-pla'],
-        'plb' => ['application/vnd.3gpp.pic-bw-large'],
-        'plc' => ['application/vnd.mobius.plc'],
-        'plf' => ['application/vnd.pocketlearn'],
-        'pln' => ['application/x-planperfect'],
-        'pls' => ['application/pls', 'application/pls+xml', 'audio/scpls', 'audio/x-scpls'],
-        'pm' => ['application/x-pagemaker', 'application/x-perl', 'text/x-perl'],
-        'pm6' => ['application/x-pagemaker'],
-        'pmd' => ['application/x-pagemaker'],
-        'pml' => ['application/vnd.ctc-posml'],
-        'png' => ['image/png'],
-        'pnm' => ['image/x-portable-anymap'],
-        'pntg' => ['image/x-macpaint'],
-        'po' => ['application/x-gettext', 'text/x-gettext-translation', 'text/x-po'],
-        'pod' => ['application/x-perl', 'text/x-perl'],
-        'por' => ['application/x-spss-por'],
-        'portpkg' => ['application/vnd.macports.portpkg'],
-        'pot' => ['application/mspowerpoint', 'application/powerpoint', 'application/vnd.ms-powerpoint', 'application/x-mspowerpoint', 'text/x-gettext-translation-template', 'text/x-pot'],
-        'potm' => ['application/vnd.ms-powerpoint.template.macroenabled.12'],
-        'potx' => ['application/vnd.openxmlformats-officedocument.presentationml.template'],
-        'ppam' => ['application/vnd.ms-powerpoint.addin.macroenabled.12'],
-        'ppd' => ['application/vnd.cups-ppd'],
-        'ppm' => ['image/x-portable-pixmap'],
-        'pps' => ['application/mspowerpoint', 'application/powerpoint', 'application/vnd.ms-powerpoint', 'application/x-mspowerpoint'],
-        'ppsm' => ['application/vnd.ms-powerpoint.slideshow.macroenabled.12'],
-        'ppsx' => ['application/vnd.openxmlformats-officedocument.presentationml.slideshow'],
-        'ppt' => ['application/vnd.ms-powerpoint', 'application/mspowerpoint', 'application/powerpoint', 'application/x-mspowerpoint'],
-        'pptm' => ['application/vnd.ms-powerpoint.presentation.macroenabled.12'],
-        'pptx' => ['application/vnd.openxmlformats-officedocument.presentationml.presentation'],
-        'ppz' => ['application/mspowerpoint', 'application/powerpoint', 'application/vnd.ms-powerpoint', 'application/x-mspowerpoint'],
-        'pqa' => ['application/vnd.palm', 'application/x-palm-database'],
-        'prc' => ['application/vnd.palm', 'application/x-mobipocket-ebook', 'application/x-palm-database'],
-        'pre' => ['application/vnd.lotus-freelance'],
-        'prf' => ['application/pics-rules'],
-        'ps' => ['application/postscript'],
-        'ps.bz2' => ['application/x-bzpostscript'],
-        'ps.gz' => ['application/x-gzpostscript'],
-        'psb' => ['application/vnd.3gpp.pic-bw-small'],
-        'psd' => ['application/photoshop', 'application/x-photoshop', 'image/photoshop', 'image/psd', 'image/vnd.adobe.photoshop', 'image/x-photoshop', 'image/x-psd'],
-        'psf' => ['application/x-font-linux-psf', 'audio/x-psf'],
-        'psf.gz' => ['application/x-gz-font-linux-psf'],
-        'psflib' => ['audio/x-psflib'],
-        'psid' => ['audio/prs.sid'],
-        'pskcxml' => ['application/pskc+xml'],
-        'psw' => ['application/x-pocket-word'],
-        'ptid' => ['application/vnd.pvi.ptid1'],
-        'pub' => ['application/vnd.ms-publisher', 'application/x-mspublisher'],
-        'pvb' => ['application/vnd.3gpp.pic-bw-var'],
-        'pw' => ['application/x-pw'],
-        'pwn' => ['application/vnd.3m.post-it-notes'],
-        'py' => ['text/x-python', 'text/x-python3'],
-        'py3' => ['text/x-python3'],
-        'py3x' => ['text/x-python3'],
-        'pya' => ['audio/vnd.ms-playready.media.pya'],
-        'pyc' => ['application/x-python-bytecode'],
-        'pyo' => ['application/x-python-bytecode'],
-        'pyv' => ['video/vnd.ms-playready.media.pyv'],
-        'pyx' => ['text/x-python'],
-        'qam' => ['application/vnd.epson.quickanime'],
-        'qbo' => ['application/vnd.intu.qbo'],
-        'qd' => ['application/x-fd-file', 'application/x-raw-floppy-disk-image'],
-        'qfx' => ['application/vnd.intu.qfx'],
-        'qif' => ['application/x-qw', 'image/x-quicktime'],
-        'qml' => ['text/x-qml'],
-        'qmlproject' => ['text/x-qml'],
-        'qmltypes' => ['text/x-qml'],
-        'qp' => ['application/x-qpress'],
-        'qps' => ['application/vnd.publishare-delta-tree'],
-        'qt' => ['video/quicktime'],
-        'qti' => ['application/x-qtiplot'],
-        'qti.gz' => ['application/x-qtiplot'],
-        'qtif' => ['image/x-quicktime'],
-        'qtl' => ['application/x-quicktime-media-link', 'application/x-quicktimeplayer'],
-        'qtvr' => ['video/quicktime'],
-        'qwd' => ['application/vnd.quark.quarkxpress'],
-        'qwt' => ['application/vnd.quark.quarkxpress'],
-        'qxb' => ['application/vnd.quark.quarkxpress'],
-        'qxd' => ['application/vnd.quark.quarkxpress'],
-        'qxl' => ['application/vnd.quark.quarkxpress'],
-        'qxt' => ['application/vnd.quark.quarkxpress'],
-        'ra' => ['audio/vnd.m-realaudio', 'audio/vnd.rn-realaudio', 'audio/x-pn-realaudio'],
-        'raf' => ['image/x-fuji-raf'],
-        'ram' => ['application/ram', 'audio/x-pn-realaudio'],
-        'raml' => ['application/raml+yaml'],
-        'rar' => ['application/x-rar-compressed', 'application/vnd.rar', 'application/x-rar'],
-        'ras' => ['image/x-cmu-raster'],
-        'raw' => ['image/x-panasonic-raw', 'image/x-panasonic-rw'],
-        'raw-disk-image' => ['application/x-raw-disk-image'],
-        'raw-disk-image.xz' => ['application/x-raw-disk-image-xz-compressed'],
-        'rax' => ['audio/vnd.m-realaudio', 'audio/vnd.rn-realaudio', 'audio/x-pn-realaudio'],
-        'rb' => ['application/x-ruby'],
-        'rcprofile' => ['application/vnd.ipunplugged.rcprofile'],
-        'rdf' => ['application/rdf+xml', 'text/rdf'],
-        'rdfs' => ['application/rdf+xml', 'text/rdf'],
-        'rdz' => ['application/vnd.data-vision.rdz'],
-        'reg' => ['text/x-ms-regedit'],
-        'rej' => ['application/x-reject', 'text/x-reject'],
-        'rep' => ['application/vnd.businessobjects'],
-        'res' => ['application/x-dtbresource+xml'],
-        'rgb' => ['image/x-rgb'],
-        'rif' => ['application/reginfo+xml'],
-        'rip' => ['audio/vnd.rip'],
-        'ris' => ['application/x-research-info-systems'],
-        'rl' => ['application/resource-lists+xml'],
-        'rlc' => ['image/vnd.fujixerox.edmics-rlc'],
-        'rld' => ['application/resource-lists-diff+xml'],
-        'rle' => ['image/rle'],
-        'rm' => ['application/vnd.rn-realmedia', 'application/vnd.rn-realmedia-vbr'],
-        'rmi' => ['audio/midi'],
-        'rmj' => ['application/vnd.rn-realmedia', 'application/vnd.rn-realmedia-vbr'],
-        'rmm' => ['application/vnd.rn-realmedia', 'application/vnd.rn-realmedia-vbr'],
-        'rmp' => ['audio/x-pn-realaudio-plugin'],
-        'rms' => ['application/vnd.jcp.javame.midlet-rms', 'application/vnd.rn-realmedia', 'application/vnd.rn-realmedia-vbr'],
-        'rmvb' => ['application/vnd.rn-realmedia', 'application/vnd.rn-realmedia-vbr'],
-        'rmx' => ['application/vnd.rn-realmedia', 'application/vnd.rn-realmedia-vbr'],
-        'rnc' => ['application/relax-ng-compact-syntax', 'application/x-rnc'],
-        'rng' => ['application/xml', 'text/xml'],
-        'roa' => ['application/rpki-roa'],
-        'roff' => ['application/x-troff', 'text/troff', 'text/x-troff'],
-        'rp' => ['image/vnd.rn-realpix'],
-        'rp9' => ['application/vnd.cloanto.rp9'],
-        'rpm' => ['application/x-redhat-package-manager', 'application/x-rpm'],
-        'rpss' => ['application/vnd.nokia.radio-presets'],
-        'rpst' => ['application/vnd.nokia.radio-preset'],
-        'rq' => ['application/sparql-query'],
-        'rs' => ['application/rls-services+xml', 'text/rust'],
-        'rsd' => ['application/rsd+xml'],
-        'rss' => ['application/rss+xml', 'text/rss'],
-        'rt' => ['text/vnd.rn-realtext'],
-        'rtf' => ['application/rtf', 'text/rtf'],
-        'rtx' => ['text/richtext'],
-        'rv' => ['video/vnd.rn-realvideo', 'video/x-real-video'],
-        'rvx' => ['video/vnd.rn-realvideo', 'video/x-real-video'],
-        'rw2' => ['image/x-panasonic-raw2', 'image/x-panasonic-rw2'],
-        's' => ['text/x-asm'],
-        's3m' => ['audio/s3m', 'audio/x-s3m'],
-        'saf' => ['application/vnd.yamaha.smaf-audio'],
-        'sam' => ['application/x-amipro'],
-        'sami' => ['application/x-sami'],
-        'sap' => ['application/x-sap-file', 'application/x-thomson-sap-image'],
-        'sass' => ['text/x-sass'],
-        'sav' => ['application/x-spss-sav', 'application/x-spss-savefile'],
-        'sbml' => ['application/sbml+xml'],
-        'sc' => ['application/vnd.ibm.secure-container'],
-        'scala' => ['text/x-scala'],
-        'scd' => ['application/x-msschedule'],
-        'scm' => ['application/vnd.lotus-screencam', 'text/x-scheme'],
-        'scope' => ['text/x-systemd-unit'],
-        'scq' => ['application/scvp-cv-request'],
-        'scs' => ['application/scvp-cv-response'],
-        'scss' => ['text/x-scss'],
-        'scurl' => ['text/vnd.curl.scurl'],
-        'sda' => ['application/vnd.stardivision.draw'],
-        'sdc' => ['application/vnd.stardivision.calc'],
-        'sdd' => ['application/vnd.stardivision.impress'],
-        'sdkd' => ['application/vnd.solent.sdkm+xml'],
-        'sdkm' => ['application/vnd.solent.sdkm+xml'],
-        'sdp' => ['application/sdp', 'application/vnd.sdp', 'application/vnd.stardivision.impress', 'application/x-sdp'],
-        'sds' => ['application/vnd.stardivision.chart'],
-        'sdw' => ['application/vnd.stardivision.writer', 'application/vnd.stardivision.writer-global'],
-        'see' => ['application/vnd.seemail'],
-        'seed' => ['application/vnd.fdsn.seed'],
-        'sema' => ['application/vnd.sema'],
-        'semd' => ['application/vnd.semd'],
-        'semf' => ['application/vnd.semf'],
-        'ser' => ['application/java-serialized-object'],
-        'service' => ['text/x-dbus-service', 'text/x-systemd-unit'],
-        'setpay' => ['application/set-payment-initiation'],
-        'setreg' => ['application/set-registration-initiation'],
-        'sfc' => ['application/vnd.nintendo.snes.rom', 'application/x-snes-rom'],
-        'sfd-hdstx' => ['application/vnd.hydrostatix.sof-data'],
-        'sfs' => ['application/vnd.spotfire.sfs'],
-        'sfv' => ['text/x-sfv'],
-        'sg' => ['application/x-sg1000-rom'],
-        'sgb' => ['application/x-gameboy-rom'],
-        'sgf' => ['application/x-go-sgf'],
-        'sgi' => ['image/sgi', 'image/x-sgi'],
-        'sgl' => ['application/vnd.stardivision.writer', 'application/vnd.stardivision.writer-global'],
-        'sgm' => ['text/sgml'],
-        'sgml' => ['text/sgml'],
-        'sh' => ['application/x-sh', 'application/x-shellscript', 'text/x-sh'],
-        'shape' => ['application/x-dia-shape'],
-        'shar' => ['application/x-shar'],
-        'shf' => ['application/shf+xml'],
-        'shn' => ['application/x-shorten', 'audio/x-shorten'],
-        'siag' => ['application/x-siag'],
-        'sid' => ['audio/prs.sid', 'image/x-mrsid-image'],
-        'sig' => ['application/pgp-signature'],
-        'sik' => ['application/x-trash'],
-        'sil' => ['audio/silk'],
-        'silo' => ['model/mesh'],
-        'sis' => ['application/vnd.symbian.install'],
-        'sisx' => ['application/vnd.symbian.install', 'x-epoc/x-sisx-app'],
-        'sit' => ['application/x-stuffit', 'application/stuffit', 'application/x-sit'],
-        'sitx' => ['application/x-stuffitx'],
-        'siv' => ['application/sieve'],
-        'sk' => ['image/x-skencil'],
-        'sk1' => ['image/x-skencil'],
-        'skd' => ['application/vnd.koan'],
-        'skm' => ['application/vnd.koan'],
-        'skp' => ['application/vnd.koan'],
-        'skr' => ['application/pgp-keys'],
-        'skt' => ['application/vnd.koan'],
-        'sldm' => ['application/vnd.ms-powerpoint.slide.macroenabled.12'],
-        'sldx' => ['application/vnd.openxmlformats-officedocument.presentationml.slide'],
-        'slice' => ['text/x-systemd-unit'],
-        'slk' => ['text/spreadsheet'],
-        'slt' => ['application/vnd.epson.salt'],
-        'sm' => ['application/vnd.stepmania.stepchart'],
-        'smaf' => ['application/vnd.smaf', 'application/x-smaf'],
-        'smc' => ['application/vnd.nintendo.snes.rom', 'application/x-snes-rom'],
-        'smd' => ['application/vnd.stardivision.mail', 'application/x-genesis-rom'],
-        'smf' => ['application/vnd.stardivision.math'],
-        'smi' => ['application/smil', 'application/smil+xml', 'application/x-sami'],
-        'smil' => ['application/smil', 'application/smil+xml'],
-        'sml' => ['application/smil', 'application/smil+xml'],
-        'sms' => ['application/x-sms-rom'],
-        'smv' => ['video/x-smv'],
-        'smzip' => ['application/vnd.stepmania.package'],
-        'snap' => ['application/vnd.snap'],
-        'snd' => ['audio/basic'],
-        'snf' => ['application/x-font-snf'],
-        'so' => ['application/octet-stream', 'application/x-sharedlib'],
-        'socket' => ['text/x-systemd-unit'],
-        'spc' => ['application/x-pkcs7-certificates'],
-        'spd' => ['application/x-font-speedo'],
-        'spec' => ['text/x-rpm-spec'],
-        'spf' => ['application/vnd.yamaha.smaf-phrase'],
-        'spl' => ['application/futuresplash', 'application/vnd.adobe.flash.movie', 'application/x-futuresplash', 'application/x-shockwave-flash'],
-        'spm' => ['application/x-source-rpm'],
-        'spot' => ['text/vnd.in3d.spot'],
-        'spp' => ['application/scvp-vp-response'],
-        'spq' => ['application/scvp-vp-request'],
-        'spx' => ['audio/ogg', 'audio/x-speex'],
-        'sql' => ['application/sql', 'application/x-sql', 'text/x-sql'],
-        'sqlite2' => ['application/x-sqlite2'],
-        'sqlite3' => ['application/vnd.sqlite3', 'application/x-sqlite3'],
-        'sqsh' => ['application/vnd.squashfs'],
-        'sr2' => ['image/x-sony-sr2'],
-        'src' => ['application/x-wais-source'],
-        'src.rpm' => ['application/x-source-rpm'],
-        'srf' => ['image/x-sony-srf'],
-        'srt' => ['application/x-srt', 'application/x-subrip'],
-        'sru' => ['application/sru+xml'],
-        'srx' => ['application/sparql-results+xml'],
-        'ss' => ['text/x-scheme'],
-        'ssa' => ['text/x-ssa'],
-        'ssdl' => ['application/ssdl+xml'],
-        'sse' => ['application/vnd.kodak-descriptor'],
-        'ssf' => ['application/vnd.epson.ssf'],
-        'ssml' => ['application/ssml+xml'],
-        'st' => ['application/vnd.sailingtracker.track'],
-        'stc' => ['application/vnd.sun.xml.calc.template'],
-        'std' => ['application/vnd.sun.xml.draw.template'],
-        'stf' => ['application/vnd.wt.stf'],
-        'sti' => ['application/vnd.sun.xml.impress.template'],
-        'stk' => ['application/hyperstudio'],
-        'stl' => ['application/vnd.ms-pki.stl', 'model/stl', 'model/x.stl-ascii', 'model/x.stl-binary'],
-        'stm' => ['audio/x-stm'],
-        'str' => ['application/vnd.pg.format'],
-        'stw' => ['application/vnd.sun.xml.writer.template'],
-        'sty' => ['application/x-tex', 'text/x-tex'],
-        'sub' => ['image/vnd.dvb.subtitle', 'text/vnd.dvb.subtitle', 'text/x-microdvd', 'text/x-mpsub', 'text/x-subviewer'],
-        'sun' => ['image/x-sun-raster'],
-        'sus' => ['application/vnd.sus-calendar'],
-        'susp' => ['application/vnd.sus-calendar'],
-        'sv' => ['text/x-svsrc'],
-        'sv4cpio' => ['application/x-sv4cpio'],
-        'sv4crc' => ['application/x-sv4crc'],
-        'svc' => ['application/vnd.dvb.service'],
-        'svd' => ['application/vnd.svd'],
-        'svg' => ['image/svg+xml', 'image/svg'],
-        'svgz' => ['image/svg+xml', 'image/svg+xml-compressed'],
-        'svh' => ['text/x-svhdr'],
-        'swa' => ['application/x-director'],
-        'swap' => ['text/x-systemd-unit'],
-        'swf' => ['application/futuresplash', 'application/vnd.adobe.flash.movie', 'application/x-shockwave-flash'],
-        'swi' => ['application/vnd.aristanetworks.swi'],
-        'swm' => ['application/x-ms-wim'],
-        'sxc' => ['application/vnd.sun.xml.calc'],
-        'sxd' => ['application/vnd.sun.xml.draw'],
-        'sxg' => ['application/vnd.sun.xml.writer.global'],
-        'sxi' => ['application/vnd.sun.xml.impress'],
-        'sxm' => ['application/vnd.sun.xml.math'],
-        'sxw' => ['application/vnd.sun.xml.writer'],
-        'sylk' => ['text/spreadsheet'],
-        't' => ['application/x-perl', 'application/x-troff', 'text/troff', 'text/x-perl', 'text/x-troff'],
-        't2t' => ['text/x-txt2tags'],
-        't3' => ['application/x-t3vm-image'],
-        'taglet' => ['application/vnd.mynfc'],
-        'tao' => ['application/vnd.tao.intent-module-archive'],
-        'tar' => ['application/x-tar', 'application/x-gtar'],
-        'tar.Z' => ['application/x-tarz'],
-        'tar.bz' => ['application/x-bzip-compressed-tar'],
-        'tar.bz2' => ['application/x-bzip-compressed-tar'],
-        'tar.gz' => ['application/x-compressed-tar'],
-        'tar.lrz' => ['application/x-lrzip-compressed-tar'],
-        'tar.lz' => ['application/x-lzip-compressed-tar'],
-        'tar.lz4' => ['application/x-lz4-compressed-tar'],
-        'tar.lzma' => ['application/x-lzma-compressed-tar'],
-        'tar.lzo' => ['application/x-tzo'],
-        'tar.xz' => ['application/x-xz-compressed-tar'],
-        'target' => ['text/x-systemd-unit'],
-        'taz' => ['application/x-tarz'],
-        'tb2' => ['application/x-bzip-compressed-tar'],
-        'tbz' => ['application/x-bzip-compressed-tar'],
-        'tbz2' => ['application/x-bzip-compressed-tar'],
-        'tcap' => ['application/vnd.3gpp2.tcap'],
-        'tcl' => ['application/x-tcl', 'text/x-tcl'],
-        'teacher' => ['application/vnd.smart.teacher'],
-        'tei' => ['application/tei+xml'],
-        'teicorpus' => ['application/tei+xml'],
-        'tex' => ['application/x-tex', 'text/x-tex'],
-        'texi' => ['application/x-texinfo', 'text/x-texinfo'],
-        'texinfo' => ['application/x-texinfo', 'text/x-texinfo'],
-        'text' => ['text/plain'],
-        'tfi' => ['application/thraud+xml'],
-        'tfm' => ['application/x-tex-tfm'],
-        'tga' => ['image/x-icb', 'image/x-tga'],
-        'tgz' => ['application/x-compressed-tar'],
-        'theme' => ['application/x-theme'],
-        'themepack' => ['application/x-windows-themepack'],
-        'thmx' => ['application/vnd.ms-officetheme'],
-        'tif' => ['image/tiff'],
-        'tiff' => ['image/tiff'],
-        'timer' => ['text/x-systemd-unit'],
-        'tk' => ['text/x-tcl'],
-        'tlrz' => ['application/x-lrzip-compressed-tar'],
-        'tlz' => ['application/x-lzma-compressed-tar'],
-        'tmo' => ['application/vnd.tmobile-livetv'],
-        'tnef' => ['application/ms-tnef', 'application/vnd.ms-tnef'],
-        'tnf' => ['application/ms-tnef', 'application/vnd.ms-tnef'],
-        'toc' => ['application/x-cdrdao-toc'],
-        'torrent' => ['application/x-bittorrent'],
-        'tpic' => ['image/x-icb', 'image/x-tga'],
-        'tpl' => ['application/vnd.groove-tool-template'],
-        'tpt' => ['application/vnd.trid.tpt'],
-        'tr' => ['application/x-troff', 'text/troff', 'text/x-troff'],
-        'tra' => ['application/vnd.trueapp'],
-        'trig' => ['application/trig', 'application/x-trig'],
-        'trm' => ['application/x-msterminal'],
-        'ts' => ['application/x-linguist', 'text/vnd.qt.linguist', 'text/vnd.trolltech.linguist', 'video/mp2t'],
-        'tsd' => ['application/timestamped-data'],
-        'tsv' => ['text/tab-separated-values'],
-        'tta' => ['audio/tta', 'audio/x-tta'],
-        'ttc' => ['font/collection'],
-        'ttf' => ['application/x-font-truetype', 'application/x-font-ttf', 'font/ttf'],
-        'ttl' => ['text/turtle'],
-        'ttx' => ['application/x-font-ttx'],
-        'twd' => ['application/vnd.simtech-mindmapper'],
-        'twds' => ['application/vnd.simtech-mindmapper'],
-        'twig' => ['text/x-twig'],
-        'txd' => ['application/vnd.genomatix.tuxedo'],
-        'txf' => ['application/vnd.mobius.txf'],
-        'txt' => ['text/plain'],
-        'txz' => ['application/x-xz-compressed-tar'],
-        'tzo' => ['application/x-tzo'],
-        'u32' => ['application/x-authorware-bin'],
-        'udeb' => ['application/vnd.debian.binary-package', 'application/x-deb', 'application/x-debian-package'],
-        'ufd' => ['application/vnd.ufdl'],
-        'ufdl' => ['application/vnd.ufdl'],
-        'ufraw' => ['application/x-ufraw'],
-        'ui' => ['application/x-designer', 'application/x-gtk-builder'],
-        'uil' => ['text/x-uil'],
-        'ult' => ['audio/x-mod'],
-        'ulx' => ['application/x-glulx'],
-        'umj' => ['application/vnd.umajin'],
-        'unf' => ['application/x-nes-rom'],
-        'uni' => ['audio/x-mod'],
-        'unif' => ['application/x-nes-rom'],
-        'unityweb' => ['application/vnd.unity'],
-        'uoml' => ['application/vnd.uoml+xml'],
-        'uri' => ['text/uri-list'],
-        'uris' => ['text/uri-list'],
-        'url' => ['application/x-mswinurl'],
-        'urls' => ['text/uri-list'],
-        'ustar' => ['application/x-ustar'],
-        'utz' => ['application/vnd.uiq.theme'],
-        'uu' => ['text/x-uuencode'],
-        'uue' => ['text/x-uuencode', 'zz-application/zz-winassoc-uu'],
-        'uva' => ['audio/vnd.dece.audio'],
-        'uvd' => ['application/vnd.dece.data'],
-        'uvf' => ['application/vnd.dece.data'],
-        'uvg' => ['image/vnd.dece.graphic'],
-        'uvh' => ['video/vnd.dece.hd'],
-        'uvi' => ['image/vnd.dece.graphic'],
-        'uvm' => ['video/vnd.dece.mobile'],
-        'uvp' => ['video/vnd.dece.pd'],
-        'uvs' => ['video/vnd.dece.sd'],
-        'uvt' => ['application/vnd.dece.ttml+xml'],
-        'uvu' => ['video/vnd.uvvu.mp4'],
-        'uvv' => ['video/vnd.dece.video'],
-        'uvva' => ['audio/vnd.dece.audio'],
-        'uvvd' => ['application/vnd.dece.data'],
-        'uvvf' => ['application/vnd.dece.data'],
-        'uvvg' => ['image/vnd.dece.graphic'],
-        'uvvh' => ['video/vnd.dece.hd'],
-        'uvvi' => ['image/vnd.dece.graphic'],
-        'uvvm' => ['video/vnd.dece.mobile'],
-        'uvvp' => ['video/vnd.dece.pd'],
-        'uvvs' => ['video/vnd.dece.sd'],
-        'uvvt' => ['application/vnd.dece.ttml+xml'],
-        'uvvu' => ['video/vnd.uvvu.mp4'],
-        'uvvv' => ['video/vnd.dece.video'],
-        'uvvx' => ['application/vnd.dece.unspecified'],
-        'uvvz' => ['application/vnd.dece.zip'],
-        'uvx' => ['application/vnd.dece.unspecified'],
-        'uvz' => ['application/vnd.dece.zip'],
-        'v' => ['text/x-verilog'],
-        'v64' => ['application/x-n64-rom'],
-        'vala' => ['text/x-vala'],
-        'vapi' => ['text/x-vala'],
-        'vb' => ['application/x-virtual-boy-rom'],
-        'vcard' => ['text/directory', 'text/vcard', 'text/x-vcard'],
-        'vcd' => ['application/x-cdlink'],
-        'vcf' => ['text/x-vcard', 'text/directory', 'text/vcard'],
-        'vcg' => ['application/vnd.groove-vcard'],
-        'vcs' => ['application/ics', 'text/calendar', 'text/x-vcalendar'],
-        'vct' => ['text/directory', 'text/vcard', 'text/x-vcard'],
-        'vcx' => ['application/vnd.vcx'],
-        'vda' => ['image/x-icb', 'image/x-tga'],
-        'vhd' => ['text/x-vhdl'],
-        'vhdl' => ['text/x-vhdl'],
-        'vis' => ['application/vnd.visionary'],
-        'viv' => ['video/vivo', 'video/vnd.vivo'],
-        'vivo' => ['video/vivo', 'video/vnd.vivo'],
-        'vlc' => ['application/m3u', 'audio/m3u', 'audio/mpegurl', 'audio/x-m3u', 'audio/x-mp3-playlist', 'audio/x-mpegurl'],
-        'vob' => ['video/mpeg', 'video/mpeg-system', 'video/x-mpeg', 'video/x-mpeg-system', 'video/x-mpeg2', 'video/x-ms-vob'],
-        'voc' => ['audio/x-voc'],
-        'vor' => ['application/vnd.stardivision.writer', 'application/vnd.stardivision.writer-global'],
-        'vox' => ['application/x-authorware-bin'],
-        'vrm' => ['model/vrml'],
-        'vrml' => ['model/vrml'],
-        'vsd' => ['application/vnd.visio'],
-        'vsdm' => ['application/vnd.ms-visio.drawing.macroenabled.main+xml'],
-        'vsdx' => ['application/vnd.ms-visio.drawing.main+xml'],
-        'vsf' => ['application/vnd.vsf'],
-        'vss' => ['application/vnd.visio'],
-        'vssm' => ['application/vnd.ms-visio.stencil.macroenabled.main+xml'],
-        'vssx' => ['application/vnd.ms-visio.stencil.main+xml'],
-        'vst' => ['application/vnd.visio', 'image/x-icb', 'image/x-tga'],
-        'vstm' => ['application/vnd.ms-visio.template.macroenabled.main+xml'],
-        'vstx' => ['application/vnd.ms-visio.template.main+xml'],
-        'vsw' => ['application/vnd.visio'],
-        'vtt' => ['text/vtt'],
-        'vtu' => ['model/vnd.vtu'],
-        'vxml' => ['application/voicexml+xml'],
-        'w3d' => ['application/x-director'],
-        'wad' => ['application/x-doom', 'application/x-doom-wad', 'application/x-wii-wad'],
-        'wav' => ['audio/wav', 'audio/vnd.wave', 'audio/x-wav'],
-        'wax' => ['application/x-ms-asx', 'audio/x-ms-asx', 'audio/x-ms-wax', 'video/x-ms-wax', 'video/x-ms-wmx', 'video/x-ms-wvx'],
-        'wb1' => ['application/x-quattropro'],
-        'wb2' => ['application/x-quattropro'],
-        'wb3' => ['application/x-quattropro'],
-        'wbmp' => ['image/vnd.wap.wbmp'],
-        'wbs' => ['application/vnd.criticaltools.wbs+xml'],
-        'wbxml' => ['application/vnd.wap.wbxml'],
-        'wcm' => ['application/vnd.ms-works'],
-        'wdb' => ['application/vnd.ms-works'],
-        'wdp' => ['image/vnd.ms-photo'],
-        'weba' => ['audio/webm'],
-        'webm' => ['video/webm'],
-        'webp' => ['image/webp'],
-        'wg' => ['application/vnd.pmi.widget'],
-        'wgt' => ['application/widget'],
-        'wim' => ['application/x-ms-wim'],
-        'wk1' => ['application/lotus123', 'application/vnd.lotus-1-2-3', 'application/wk1', 'application/x-123', 'application/x-lotus123', 'zz-application/zz-winassoc-123'],
-        'wk3' => ['application/lotus123', 'application/vnd.lotus-1-2-3', 'application/wk1', 'application/x-123', 'application/x-lotus123', 'zz-application/zz-winassoc-123'],
-        'wk4' => ['application/lotus123', 'application/vnd.lotus-1-2-3', 'application/wk1', 'application/x-123', 'application/x-lotus123', 'zz-application/zz-winassoc-123'],
-        'wkdownload' => ['application/x-partial-download'],
-        'wks' => ['application/lotus123', 'application/vnd.lotus-1-2-3', 'application/vnd.ms-works', 'application/wk1', 'application/x-123', 'application/x-lotus123', 'zz-application/zz-winassoc-123'],
-        'wm' => ['video/x-ms-wm'],
-        'wma' => ['audio/x-ms-wma', 'audio/wma'],
-        'wmd' => ['application/x-ms-wmd'],
-        'wmf' => ['application/wmf', 'application/x-msmetafile', 'application/x-wmf', 'image/wmf', 'image/x-win-metafile', 'image/x-wmf'],
-        'wml' => ['text/vnd.wap.wml'],
-        'wmlc' => ['application/vnd.wap.wmlc'],
-        'wmls' => ['text/vnd.wap.wmlscript'],
-        'wmlsc' => ['application/vnd.wap.wmlscriptc'],
-        'wmv' => ['audio/x-ms-wmv', 'video/x-ms-wmv'],
-        'wmx' => ['application/x-ms-asx', 'audio/x-ms-asx', 'video/x-ms-wax', 'video/x-ms-wmx', 'video/x-ms-wvx'],
-        'wmz' => ['application/x-ms-wmz', 'application/x-msmetafile'],
-        'woff' => ['application/font-woff', 'application/x-font-woff', 'font/woff'],
-        'woff2' => ['font/woff', 'font/woff2'],
-        'wp' => ['application/vnd.wordperfect', 'application/wordperfect', 'application/x-wordperfect'],
-        'wp4' => ['application/vnd.wordperfect', 'application/wordperfect', 'application/x-wordperfect'],
-        'wp5' => ['application/vnd.wordperfect', 'application/wordperfect', 'application/x-wordperfect'],
-        'wp6' => ['application/vnd.wordperfect', 'application/wordperfect', 'application/x-wordperfect'],
-        'wpd' => ['application/vnd.wordperfect', 'application/wordperfect', 'application/x-wordperfect'],
-        'wpg' => ['application/x-wpg'],
-        'wpl' => ['application/vnd.ms-wpl'],
-        'wpp' => ['application/vnd.wordperfect', 'application/wordperfect', 'application/x-wordperfect'],
-        'wps' => ['application/vnd.ms-works'],
-        'wqd' => ['application/vnd.wqd'],
-        'wri' => ['application/x-mswrite'],
-        'wrl' => ['model/vrml'],
-        'ws' => ['application/x-wonderswan-rom'],
-        'wsc' => ['application/x-wonderswan-color-rom'],
-        'wsdl' => ['application/wsdl+xml'],
-        'wsgi' => ['text/x-python'],
-        'wspolicy' => ['application/wspolicy+xml'],
-        'wtb' => ['application/vnd.webturbo'],
-        'wv' => ['audio/x-wavpack'],
-        'wvc' => ['audio/x-wavpack-correction'],
-        'wvp' => ['audio/x-wavpack'],
-        'wvx' => ['application/x-ms-asx', 'audio/x-ms-asx', 'video/x-ms-wax', 'video/x-ms-wmx', 'video/x-ms-wvx'],
-        'wwf' => ['application/wwf', 'application/x-wwf'],
-        'x32' => ['application/x-authorware-bin'],
-        'x3d' => ['model/x3d+xml'],
-        'x3db' => ['model/x3d+binary'],
-        'x3dbz' => ['model/x3d+binary'],
-        'x3dv' => ['model/x3d+vrml'],
-        'x3dvz' => ['model/x3d+vrml'],
-        'x3dz' => ['model/x3d+xml'],
-        'x3f' => ['image/x-sigma-x3f'],
-        'xac' => ['application/x-gnucash'],
-        'xaml' => ['application/xaml+xml'],
-        'xap' => ['application/x-silverlight-app'],
-        'xar' => ['application/vnd.xara', 'application/x-xar'],
-        'xbap' => ['application/x-ms-xbap'],
-        'xbd' => ['application/vnd.fujixerox.docuworks.binder'],
-        'xbel' => ['application/x-xbel'],
-        'xbl' => ['application/xml', 'text/xml'],
-        'xbm' => ['image/x-xbitmap'],
-        'xcf' => ['image/x-xcf'],
-        'xcf.bz2' => ['image/x-compressed-xcf'],
-        'xcf.gz' => ['image/x-compressed-xcf'],
-        'xdf' => ['application/xcap-diff+xml'],
-        'xdgapp' => ['application/vnd.flatpak', 'application/vnd.xdgapp'],
-        'xdm' => ['application/vnd.syncml.dm+xml'],
-        'xdp' => ['application/vnd.adobe.xdp+xml'],
-        'xdssc' => ['application/dssc+xml'],
-        'xdw' => ['application/vnd.fujixerox.docuworks'],
-        'xenc' => ['application/xenc+xml'],
-        'xer' => ['application/patch-ops-error+xml'],
-        'xfdf' => ['application/vnd.adobe.xfdf'],
-        'xfdl' => ['application/vnd.xfdl'],
-        'xhe' => ['audio/usac'],
-        'xht' => ['application/xhtml+xml'],
-        'xhtml' => ['application/xhtml+xml'],
-        'xhvml' => ['application/xv+xml'],
-        'xi' => ['audio/x-xi'],
-        'xif' => ['image/vnd.xiff'],
-        'xla' => ['application/msexcel', 'application/vnd.ms-excel', 'application/x-msexcel', 'zz-application/zz-winassoc-xls'],
-        'xlam' => ['application/vnd.ms-excel.addin.macroenabled.12'],
-        'xlc' => ['application/msexcel', 'application/vnd.ms-excel', 'application/x-msexcel', 'zz-application/zz-winassoc-xls'],
-        'xld' => ['application/msexcel', 'application/vnd.ms-excel', 'application/x-msexcel', 'zz-application/zz-winassoc-xls'],
-        'xlf' => ['application/x-xliff', 'application/x-xliff+xml', 'application/xliff+xml'],
-        'xliff' => ['application/x-xliff', 'application/xliff+xml'],
-        'xll' => ['application/msexcel', 'application/vnd.ms-excel', 'application/x-msexcel', 'zz-application/zz-winassoc-xls'],
-        'xlm' => ['application/msexcel', 'application/vnd.ms-excel', 'application/x-msexcel', 'zz-application/zz-winassoc-xls'],
-        'xlr' => ['application/vnd.ms-works'],
-        'xls' => ['application/vnd.ms-excel', 'application/msexcel', 'application/x-msexcel', 'zz-application/zz-winassoc-xls'],
-        'xlsb' => ['application/vnd.ms-excel.sheet.binary.macroenabled.12'],
-        'xlsm' => ['application/vnd.ms-excel.sheet.macroenabled.12'],
-        'xlsx' => ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
-        'xlt' => ['application/msexcel', 'application/vnd.ms-excel', 'application/x-msexcel', 'zz-application/zz-winassoc-xls'],
-        'xltm' => ['application/vnd.ms-excel.template.macroenabled.12'],
-        'xltx' => ['application/vnd.openxmlformats-officedocument.spreadsheetml.template'],
-        'xlw' => ['application/msexcel', 'application/vnd.ms-excel', 'application/x-msexcel', 'zz-application/zz-winassoc-xls'],
-        'xm' => ['audio/x-xm', 'audio/xm'],
-        'xmf' => ['audio/mobile-xmf', 'audio/x-xmf', 'audio/xmf'],
-        'xmi' => ['text/x-xmi'],
-        'xml' => ['application/xml', 'text/xml'],
-        'xo' => ['application/vnd.olpc-sugar'],
-        'xop' => ['application/xop+xml'],
-        'xpi' => ['application/x-xpinstall'],
-        'xpl' => ['application/xproc+xml'],
-        'xpm' => ['image/x-xpixmap', 'image/x-xpm'],
-        'xpr' => ['application/vnd.is-xpr'],
-        'xps' => ['application/oxps', 'application/vnd.ms-xpsdocument', 'application/xps'],
-        'xpw' => ['application/vnd.intercon.formnet'],
-        'xpx' => ['application/vnd.intercon.formnet'],
-        'xsd' => ['application/xml', 'text/xml'],
-        'xsl' => ['application/xml', 'application/xslt+xml'],
-        'xslfo' => ['text/x-xslfo'],
-        'xslt' => ['application/xslt+xml'],
-        'xsm' => ['application/vnd.syncml+xml'],
-        'xspf' => ['application/x-xspf+xml', 'application/xspf+xml'],
-        'xul' => ['application/vnd.mozilla.xul+xml'],
-        'xvm' => ['application/xv+xml'],
-        'xvml' => ['application/xv+xml'],
-        'xwd' => ['image/x-xwindowdump'],
-        'xyz' => ['chemical/x-xyz'],
-        'xz' => ['application/x-xz'],
-        'yaml' => ['application/x-yaml', 'text/x-yaml', 'text/yaml'],
-        'yang' => ['application/yang'],
-        'yin' => ['application/yin+xml'],
-        'yml' => ['application/x-yaml', 'text/x-yaml', 'text/yaml'],
-        'yt' => ['application/vnd.youtube.yt'],
-        'z1' => ['application/x-zmachine'],
-        'z2' => ['application/x-zmachine'],
-        'z3' => ['application/x-zmachine'],
-        'z4' => ['application/x-zmachine'],
-        'z5' => ['application/x-zmachine'],
-        'z6' => ['application/x-zmachine'],
-        'z64' => ['application/x-n64-rom'],
-        'z7' => ['application/x-zmachine'],
-        'z8' => ['application/x-zmachine'],
-        'zabw' => ['application/x-abiword'],
-        'zaz' => ['application/vnd.zzazz.deck+xml'],
-        'zip' => ['application/zip', 'application/x-zip', 'application/x-zip-compressed'],
-        'zir' => ['application/vnd.zul'],
-        'zirz' => ['application/vnd.zul'],
-        'zmm' => ['application/vnd.handheld-entertainment+xml'],
-        'zoo' => ['application/x-zoo'],
-        'zsav' => ['application/x-spss-sav', 'application/x-spss-savefile'],
-        'zz' => ['application/zlib'],
-        '123' => ['application/lotus123', 'application/vnd.lotus-1-2-3', 'application/wk1', 'application/x-123', 'application/x-lotus123', 'zz-application/zz-winassoc-123'],
-        '602' => ['application/x-t602'],
-        '669' => ['audio/x-mod'],
-    ];
-}
diff --git a/vendor/symfony/mime/MimeTypesInterface.php b/vendor/symfony/mime/MimeTypesInterface.php
deleted file mode 100644
index 9fbd2cc2da24c72a523c981d25cc563b6db5b790..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/MimeTypesInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface MimeTypesInterface extends MimeTypeGuesserInterface
-{
-    /**
-     * Gets the extensions for the given MIME type.
-     *
-     * @return string[] an array of extensions (first one is the preferred one)
-     */
-    public function getExtensions(string $mimeType): array;
-
-    /**
-     * Gets the MIME types for the given extension.
-     *
-     * @return string[] an array of MIME types (first one is the preferred one)
-     */
-    public function getMimeTypes(string $ext): array;
-}
diff --git a/vendor/symfony/mime/Part/AbstractMultipartPart.php b/vendor/symfony/mime/Part/AbstractMultipartPart.php
deleted file mode 100644
index 685d250627e432f1ef53ba04a3cce465e83934ae..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Part/AbstractMultipartPart.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Part;
-
-use Symfony\Component\Mime\Header\Headers;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class AbstractMultipartPart extends AbstractPart
-{
-    private $boundary;
-    private $parts = [];
-
-    public function __construct(AbstractPart ...$parts)
-    {
-        parent::__construct();
-
-        foreach ($parts as $part) {
-            $this->parts[] = $part;
-        }
-    }
-
-    /**
-     * @return AbstractPart[]
-     */
-    public function getParts(): array
-    {
-        return $this->parts;
-    }
-
-    public function getMediaType(): string
-    {
-        return 'multipart';
-    }
-
-    public function getPreparedHeaders(): Headers
-    {
-        $headers = parent::getPreparedHeaders();
-        $headers->setHeaderParameter('Content-Type', 'boundary', $this->getBoundary());
-
-        return $headers;
-    }
-
-    public function bodyToString(): string
-    {
-        $parts = $this->getParts();
-        $string = '';
-        foreach ($parts as $part) {
-            $string .= '--'.$this->getBoundary()."\r\n".$part->toString()."\r\n";
-        }
-        $string .= '--'.$this->getBoundary()."--\r\n";
-
-        return $string;
-    }
-
-    public function bodyToIterable(): iterable
-    {
-        $parts = $this->getParts();
-        foreach ($parts as $part) {
-            yield '--'.$this->getBoundary()."\r\n";
-            yield from $part->toIterable();
-            yield "\r\n";
-        }
-        yield '--'.$this->getBoundary()."--\r\n";
-    }
-
-    public function asDebugString(): string
-    {
-        $str = parent::asDebugString();
-        foreach ($this->getParts() as $part) {
-            $lines = explode("\n", $part->asDebugString());
-            $str .= "\n  â”” ".array_shift($lines);
-            foreach ($lines as $line) {
-                $str .= "\n  |".$line;
-            }
-        }
-
-        return $str;
-    }
-
-    private function getBoundary(): string
-    {
-        if (null === $this->boundary) {
-            $this->boundary = strtr(base64_encode(random_bytes(6)), '+/', '-_');
-        }
-
-        return $this->boundary;
-    }
-}
diff --git a/vendor/symfony/mime/Part/AbstractPart.php b/vendor/symfony/mime/Part/AbstractPart.php
deleted file mode 100644
index 93892d9df6eecfd5d2a7b0dde3f6ac4906fea8b1..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Part/AbstractPart.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Part;
-
-use Symfony\Component\Mime\Header\Headers;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class AbstractPart
-{
-    private $headers;
-
-    public function __construct()
-    {
-        $this->headers = new Headers();
-    }
-
-    public function getHeaders(): Headers
-    {
-        return $this->headers;
-    }
-
-    public function getPreparedHeaders(): Headers
-    {
-        $headers = clone $this->headers;
-        $headers->setHeaderBody('Parameterized', 'Content-Type', $this->getMediaType().'/'.$this->getMediaSubtype());
-
-        return $headers;
-    }
-
-    public function toString(): string
-    {
-        return $this->getPreparedHeaders()->toString()."\r\n".$this->bodyToString();
-    }
-
-    public function toIterable(): iterable
-    {
-        yield $this->getPreparedHeaders()->toString();
-        yield "\r\n";
-        yield from $this->bodyToIterable();
-    }
-
-    public function asDebugString(): string
-    {
-        return $this->getMediaType().'/'.$this->getMediaSubtype();
-    }
-
-    abstract public function bodyToString(): string;
-
-    abstract public function bodyToIterable(): iterable;
-
-    abstract public function getMediaType(): string;
-
-    abstract public function getMediaSubtype(): string;
-}
diff --git a/vendor/symfony/mime/Part/DataPart.php b/vendor/symfony/mime/Part/DataPart.php
deleted file mode 100644
index 5d1d91061b35f460b2782398340318e45d3f4656..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Part/DataPart.php
+++ /dev/null
@@ -1,165 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Part;
-
-use Symfony\Component\Mime\Exception\InvalidArgumentException;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\MimeTypes;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class DataPart extends TextPart
-{
-    private static $mimeTypes;
-
-    private $filename;
-    private $mediaType;
-    private $cid;
-    private $handle;
-
-    /**
-     * @param resource|string $body
-     */
-    public function __construct($body, string $filename = null, string $contentType = null, string $encoding = null)
-    {
-        if (null === $contentType) {
-            $contentType = 'application/octet-stream';
-        }
-        list($this->mediaType, $subtype) = explode('/', $contentType);
-
-        parent::__construct($body, null, $subtype, $encoding);
-
-        $this->filename = $filename;
-        $this->setName($filename);
-        $this->setDisposition('attachment');
-    }
-
-    public static function fromPath(string $path, string $name = null, string $contentType = null): self
-    {
-        // FIXME: if file is not readable, exception?
-
-        if (null === $contentType) {
-            $ext = strtolower(substr($path, strrpos($path, '.') + 1));
-            if (null === self::$mimeTypes) {
-                self::$mimeTypes = new MimeTypes();
-            }
-            $contentType = self::$mimeTypes->getMimeTypes($ext)[0] ?? 'application/octet-stream';
-        }
-
-        if (false === is_readable($path)) {
-            throw new InvalidArgumentException(sprintf('Path "%s" is not readable.', $path));
-        }
-
-        if (false === $handle = @fopen($path, 'r', false)) {
-            throw new InvalidArgumentException(sprintf('Unable to open path "%s".', $path));
-        }
-        $p = new self($handle, $name ?: basename($path), $contentType);
-        $p->handle = $handle;
-
-        return $p;
-    }
-
-    /**
-     * @return $this
-     */
-    public function asInline()
-    {
-        return $this->setDisposition('inline');
-    }
-
-    public function getContentId(): string
-    {
-        return $this->cid ?: $this->cid = $this->generateContentId();
-    }
-
-    public function hasContentId(): bool
-    {
-        return null !== $this->cid;
-    }
-
-    public function getMediaType(): string
-    {
-        return $this->mediaType;
-    }
-
-    public function getPreparedHeaders(): Headers
-    {
-        $headers = parent::getPreparedHeaders();
-
-        if (null !== $this->cid) {
-            $headers->setHeaderBody('Id', 'Content-ID', $this->cid);
-        }
-
-        if (null !== $this->filename) {
-            $headers->setHeaderParameter('Content-Disposition', 'filename', $this->filename);
-        }
-
-        return $headers;
-    }
-
-    public function asDebugString(): string
-    {
-        $str = parent::asDebugString();
-        if (null !== $this->filename) {
-            $str .= ' filename: '.$this->filename;
-        }
-
-        return $str;
-    }
-
-    private function generateContentId(): string
-    {
-        return bin2hex(random_bytes(16)).'@symfony';
-    }
-
-    public function __destruct()
-    {
-        if (null !== $this->handle && \is_resource($this->handle)) {
-            fclose($this->handle);
-        }
-    }
-
-    /**
-     * @return array
-     */
-    public function __sleep()
-    {
-        // converts the body to a string
-        parent::__sleep();
-
-        $this->_parent = [];
-        foreach (['body', 'charset', 'subtype', 'disposition', 'name', 'encoding'] as $name) {
-            $r = new \ReflectionProperty(TextPart::class, $name);
-            $r->setAccessible(true);
-            $this->_parent[$name] = $r->getValue($this);
-        }
-        $this->_headers = $this->getHeaders();
-
-        return ['_headers', '_parent', 'filename', 'mediaType'];
-    }
-
-    public function __wakeup()
-    {
-        $r = new \ReflectionProperty(AbstractPart::class, 'headers');
-        $r->setAccessible(true);
-        $r->setValue($this, $this->_headers);
-        unset($this->_headers);
-
-        foreach (['body', 'charset', 'subtype', 'disposition', 'name', 'encoding'] as $name) {
-            $r = new \ReflectionProperty(TextPart::class, $name);
-            $r->setAccessible(true);
-            $r->setValue($this, $this->_parent[$name]);
-        }
-        unset($this->_parent);
-    }
-}
diff --git a/vendor/symfony/mime/Part/MessagePart.php b/vendor/symfony/mime/Part/MessagePart.php
deleted file mode 100644
index 1b5c23e2bc41182b56e0a94aed1b96fff9412fc0..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Part/MessagePart.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Part;
-
-use Symfony\Component\Mime\Message;
-use Symfony\Component\Mime\RawMessage;
-
-/**
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class MessagePart extends DataPart
-{
-    private $message;
-
-    public function __construct(RawMessage $message)
-    {
-        if ($message instanceof Message) {
-            $name = $message->getHeaders()->getHeaderBody('Subject').'.eml';
-        } else {
-            $name = 'email.eml';
-        }
-        parent::__construct('', $name);
-
-        $this->message = $message;
-    }
-
-    public function getMediaType(): string
-    {
-        return 'message';
-    }
-
-    public function getMediaSubtype(): string
-    {
-        return 'rfc822';
-    }
-
-    public function getBody(): string
-    {
-        return $this->message->toString();
-    }
-
-    public function bodyToString(): string
-    {
-        return $this->getBody();
-    }
-
-    public function bodyToIterable(): iterable
-    {
-        return $this->message->toIterable();
-    }
-}
diff --git a/vendor/symfony/mime/Part/Multipart/AlternativePart.php b/vendor/symfony/mime/Part/Multipart/AlternativePart.php
deleted file mode 100644
index fd75423476296567422637af293fef330b89c144..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Part/Multipart/AlternativePart.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Part\Multipart;
-
-use Symfony\Component\Mime\Part\AbstractMultipartPart;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class AlternativePart extends AbstractMultipartPart
-{
-    public function getMediaSubtype(): string
-    {
-        return 'alternative';
-    }
-}
diff --git a/vendor/symfony/mime/Part/Multipart/DigestPart.php b/vendor/symfony/mime/Part/Multipart/DigestPart.php
deleted file mode 100644
index 27537f15b9791bbe95c4ad0875997178c1c45322..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Part/Multipart/DigestPart.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Part\Multipart;
-
-use Symfony\Component\Mime\Part\AbstractMultipartPart;
-use Symfony\Component\Mime\Part\MessagePart;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class DigestPart extends AbstractMultipartPart
-{
-    public function __construct(MessagePart ...$parts)
-    {
-        parent::__construct(...$parts);
-    }
-
-    public function getMediaSubtype(): string
-    {
-        return 'digest';
-    }
-}
diff --git a/vendor/symfony/mime/Part/Multipart/FormDataPart.php b/vendor/symfony/mime/Part/Multipart/FormDataPart.php
deleted file mode 100644
index 9e3c9a2a852a8b86deea1c3be5f1d19f116c2738..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Part/Multipart/FormDataPart.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Part\Multipart;
-
-use Symfony\Component\Mime\Exception\InvalidArgumentException;
-use Symfony\Component\Mime\Part\AbstractMultipartPart;
-use Symfony\Component\Mime\Part\DataPart;
-use Symfony\Component\Mime\Part\TextPart;
-
-/**
- * Implements RFC 7578.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class FormDataPart extends AbstractMultipartPart
-{
-    private $fields = [];
-
-    /**
-     * @param (string|array|DataPart)[] $fields
-     */
-    public function __construct(array $fields = [])
-    {
-        parent::__construct();
-
-        foreach ($fields as $name => $value) {
-            if (!\is_string($value) && !\is_array($value) && !$value instanceof TextPart) {
-                throw new InvalidArgumentException(sprintf('A form field value can only be a string, an array, or an instance of TextPart ("%s" given).', get_debug_type($value)));
-            }
-
-            $this->fields[$name] = $value;
-        }
-        // HTTP does not support \r\n in header values
-        $this->getHeaders()->setMaxLineLength(\PHP_INT_MAX);
-    }
-
-    public function getMediaSubtype(): string
-    {
-        return 'form-data';
-    }
-
-    public function getParts(): array
-    {
-        return $this->prepareFields($this->fields);
-    }
-
-    private function prepareFields(array $fields): array
-    {
-        $values = [];
-
-        $prepare = function ($item, $key, $root = null) use (&$values, &$prepare) {
-            $fieldName = $root ? sprintf('%s[%s]', $root, $key) : $key;
-
-            if (\is_array($item)) {
-                array_walk($item, $prepare, $fieldName);
-
-                return;
-            }
-
-            $values[] = $this->preparePart($fieldName, $item);
-        };
-
-        array_walk($fields, $prepare);
-
-        return $values;
-    }
-
-    private function preparePart(string $name, $value): TextPart
-    {
-        if (\is_string($value)) {
-            return $this->configurePart($name, new TextPart($value, 'utf-8', 'plain', '8bit'));
-        }
-
-        return $this->configurePart($name, $value);
-    }
-
-    private function configurePart(string $name, TextPart $part): TextPart
-    {
-        static $r;
-
-        if (null === $r) {
-            $r = new \ReflectionProperty(TextPart::class, 'encoding');
-            $r->setAccessible(true);
-        }
-
-        $part->setDisposition('form-data');
-        $part->setName($name);
-        // HTTP does not support \r\n in header values
-        $part->getHeaders()->setMaxLineLength(\PHP_INT_MAX);
-        $r->setValue($part, '8bit');
-
-        return $part;
-    }
-}
diff --git a/vendor/symfony/mime/Part/Multipart/MixedPart.php b/vendor/symfony/mime/Part/Multipart/MixedPart.php
deleted file mode 100644
index c8d7028cdd94a92b30727b7e1c2e35346d6d24a2..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Part/Multipart/MixedPart.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Part\Multipart;
-
-use Symfony\Component\Mime\Part\AbstractMultipartPart;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class MixedPart extends AbstractMultipartPart
-{
-    public function getMediaSubtype(): string
-    {
-        return 'mixed';
-    }
-}
diff --git a/vendor/symfony/mime/Part/Multipart/RelatedPart.php b/vendor/symfony/mime/Part/Multipart/RelatedPart.php
deleted file mode 100644
index 08fdd5fa977ce67b5bab9437865d31e960a377e7..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Part/Multipart/RelatedPart.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Part\Multipart;
-
-use Symfony\Component\Mime\Part\AbstractMultipartPart;
-use Symfony\Component\Mime\Part\AbstractPart;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class RelatedPart extends AbstractMultipartPart
-{
-    private $mainPart;
-
-    public function __construct(AbstractPart $mainPart, AbstractPart $part, AbstractPart ...$parts)
-    {
-        $this->mainPart = $mainPart;
-        $this->prepareParts($part, ...$parts);
-
-        parent::__construct($part, ...$parts);
-    }
-
-    public function getParts(): array
-    {
-        return array_merge([$this->mainPart], parent::getParts());
-    }
-
-    public function getMediaSubtype(): string
-    {
-        return 'related';
-    }
-
-    private function generateContentId(): string
-    {
-        return bin2hex(random_bytes(16)).'@symfony';
-    }
-
-    private function prepareParts(AbstractPart ...$parts): void
-    {
-        foreach ($parts as $part) {
-            if (!$part->getHeaders()->has('Content-ID')) {
-                $part->getHeaders()->setHeaderBody('Id', 'Content-ID', $this->generateContentId());
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/mime/Part/SMimePart.php b/vendor/symfony/mime/Part/SMimePart.php
deleted file mode 100644
index 2a6fe3d997a16783da6fcb0af0ab6570aef12b21..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Part/SMimePart.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Part;
-
-use Symfony\Component\Mime\Header\Headers;
-
-/**
- * @author Sebastiaan Stok <s.stok@rollerscapes.net>
- */
-class SMimePart extends AbstractPart
-{
-    private $body;
-    private $type;
-    private $subtype;
-    private $parameters;
-
-    /**
-     * @param iterable|string $body
-     */
-    public function __construct($body, string $type, string $subtype, array $parameters)
-    {
-        parent::__construct();
-
-        if (!\is_string($body) && !is_iterable($body)) {
-            throw new \TypeError(sprintf('The body of "%s" must be a string or a iterable (got "%s").', self::class, get_debug_type($body)));
-        }
-
-        $this->body = $body;
-        $this->type = $type;
-        $this->subtype = $subtype;
-        $this->parameters = $parameters;
-    }
-
-    public function getMediaType(): string
-    {
-        return $this->type;
-    }
-
-    public function getMediaSubtype(): string
-    {
-        return $this->subtype;
-    }
-
-    public function bodyToString(): string
-    {
-        if (\is_string($this->body)) {
-            return $this->body;
-        }
-
-        $body = '';
-        foreach ($this->body as $chunk) {
-            $body .= $chunk;
-        }
-        $this->body = $body;
-
-        return $body;
-    }
-
-    public function bodyToIterable(): iterable
-    {
-        if (\is_string($this->body)) {
-            yield $this->body;
-
-            return;
-        }
-
-        $body = '';
-        foreach ($this->body as $chunk) {
-            $body .= $chunk;
-            yield $chunk;
-        }
-        $this->body = $body;
-    }
-
-    public function getPreparedHeaders(): Headers
-    {
-        $headers = clone parent::getHeaders();
-
-        $headers->setHeaderBody('Parameterized', 'Content-Type', $this->getMediaType().'/'.$this->getMediaSubtype());
-
-        foreach ($this->parameters as $name => $value) {
-            $headers->setHeaderParameter('Content-Type', $name, $value);
-        }
-
-        return $headers;
-    }
-
-    public function __sleep(): array
-    {
-        // convert iterables to strings for serialization
-        if (is_iterable($this->body)) {
-            $this->body = $this->bodyToString();
-        }
-
-        $this->_headers = $this->getHeaders();
-
-        return ['_headers', 'body', 'type', 'subtype', 'parameters'];
-    }
-
-    public function __wakeup(): void
-    {
-        $r = new \ReflectionProperty(AbstractPart::class, 'headers');
-        $r->setAccessible(true);
-        $r->setValue($this, $this->_headers);
-        unset($this->_headers);
-    }
-}
diff --git a/vendor/symfony/mime/Part/TextPart.php b/vendor/symfony/mime/Part/TextPart.php
deleted file mode 100644
index 2a12fab6113a69d27cb204447cbf82ae37452c42..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Part/TextPart.php
+++ /dev/null
@@ -1,206 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Part;
-
-use Symfony\Component\Mime\Encoder\Base64ContentEncoder;
-use Symfony\Component\Mime\Encoder\ContentEncoderInterface;
-use Symfony\Component\Mime\Encoder\EightBitContentEncoder;
-use Symfony\Component\Mime\Encoder\QpContentEncoder;
-use Symfony\Component\Mime\Exception\InvalidArgumentException;
-use Symfony\Component\Mime\Header\Headers;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TextPart extends AbstractPart
-{
-    private static $encoders = [];
-
-    private $body;
-    private $charset;
-    private $subtype;
-    private $disposition;
-    private $name;
-    private $encoding;
-    private $seekable;
-
-    /**
-     * @param resource|string $body
-     */
-    public function __construct($body, ?string $charset = 'utf-8', $subtype = 'plain', string $encoding = null)
-    {
-        parent::__construct();
-
-        if (!\is_string($body) && !\is_resource($body)) {
-            throw new \TypeError(sprintf('The body of "%s" must be a string or a resource (got "%s").', self::class, get_debug_type($body)));
-        }
-
-        $this->body = $body;
-        $this->charset = $charset;
-        $this->subtype = $subtype;
-        $this->seekable = \is_resource($body) ? stream_get_meta_data($body)['seekable'] && 0 === fseek($body, 0, \SEEK_CUR) : null;
-
-        if (null === $encoding) {
-            $this->encoding = $this->chooseEncoding();
-        } else {
-            if ('quoted-printable' !== $encoding && 'base64' !== $encoding && '8bit' !== $encoding) {
-                throw new InvalidArgumentException(sprintf('The encoding must be one of "quoted-printable", "base64", or "8bit" ("%s" given).', $encoding));
-            }
-            $this->encoding = $encoding;
-        }
-    }
-
-    public function getMediaType(): string
-    {
-        return 'text';
-    }
-
-    public function getMediaSubtype(): string
-    {
-        return $this->subtype;
-    }
-
-    /**
-     * @param string $disposition one of attachment, inline, or form-data
-     *
-     * @return $this
-     */
-    public function setDisposition(string $disposition)
-    {
-        $this->disposition = $disposition;
-
-        return $this;
-    }
-
-    /**
-     * Sets the name of the file (used by FormDataPart).
-     *
-     * @return $this
-     */
-    public function setName($name)
-    {
-        $this->name = $name;
-
-        return $this;
-    }
-
-    public function getBody(): string
-    {
-        if (null === $this->seekable) {
-            return $this->body;
-        }
-
-        if ($this->seekable) {
-            rewind($this->body);
-        }
-
-        return stream_get_contents($this->body) ?: '';
-    }
-
-    public function bodyToString(): string
-    {
-        return $this->getEncoder()->encodeString($this->getBody(), $this->charset);
-    }
-
-    public function bodyToIterable(): iterable
-    {
-        if (null !== $this->seekable) {
-            if ($this->seekable) {
-                rewind($this->body);
-            }
-            yield from $this->getEncoder()->encodeByteStream($this->body);
-        } else {
-            yield $this->getEncoder()->encodeString($this->body);
-        }
-    }
-
-    public function getPreparedHeaders(): Headers
-    {
-        $headers = parent::getPreparedHeaders();
-
-        $headers->setHeaderBody('Parameterized', 'Content-Type', $this->getMediaType().'/'.$this->getMediaSubtype());
-        if ($this->charset) {
-            $headers->setHeaderParameter('Content-Type', 'charset', $this->charset);
-        }
-        if ($this->name && 'form-data' !== $this->disposition) {
-            $headers->setHeaderParameter('Content-Type', 'name', $this->name);
-        }
-        $headers->setHeaderBody('Text', 'Content-Transfer-Encoding', $this->encoding);
-
-        if (!$headers->has('Content-Disposition') && null !== $this->disposition) {
-            $headers->setHeaderBody('Parameterized', 'Content-Disposition', $this->disposition);
-            if ($this->name) {
-                $headers->setHeaderParameter('Content-Disposition', 'name', $this->name);
-            }
-        }
-
-        return $headers;
-    }
-
-    public function asDebugString(): string
-    {
-        $str = parent::asDebugString();
-        if (null !== $this->charset) {
-            $str .= ' charset: '.$this->charset;
-        }
-        if (null !== $this->disposition) {
-            $str .= ' disposition: '.$this->disposition;
-        }
-
-        return $str;
-    }
-
-    private function getEncoder(): ContentEncoderInterface
-    {
-        if ('8bit' === $this->encoding) {
-            return self::$encoders[$this->encoding] ?? (self::$encoders[$this->encoding] = new EightBitContentEncoder());
-        }
-
-        if ('quoted-printable' === $this->encoding) {
-            return self::$encoders[$this->encoding] ?? (self::$encoders[$this->encoding] = new QpContentEncoder());
-        }
-
-        return self::$encoders[$this->encoding] ?? (self::$encoders[$this->encoding] = new Base64ContentEncoder());
-    }
-
-    private function chooseEncoding(): string
-    {
-        if (null === $this->charset) {
-            return 'base64';
-        }
-
-        return 'quoted-printable';
-    }
-
-    /**
-     * @return array
-     */
-    public function __sleep()
-    {
-        // convert resources to strings for serialization
-        if (null !== $this->seekable) {
-            $this->body = $this->getBody();
-        }
-
-        $this->_headers = $this->getHeaders();
-
-        return ['_headers', 'body', 'charset', 'subtype', 'disposition', 'name', 'encoding'];
-    }
-
-    public function __wakeup()
-    {
-        $r = new \ReflectionProperty(AbstractPart::class, 'headers');
-        $r->setAccessible(true);
-        $r->setValue($this, $this->_headers);
-        unset($this->_headers);
-    }
-}
diff --git a/vendor/symfony/mime/README.md b/vendor/symfony/mime/README.md
deleted file mode 100644
index 4d565c9205fe16f6d475fd19fd2968a1bb09c77e..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-MIME Component
-==============
-
-The MIME component allows manipulating MIME messages.
-
-Resources
----------
-
-  * [Documentation](https://symfony.com/doc/current/components/mime.html)
-  * [Contributing](https://symfony.com/doc/current/contributing/index.html)
-  * [Report issues](https://github.com/symfony/symfony/issues) and
-    [send Pull Requests](https://github.com/symfony/symfony/pulls)
-    in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/vendor/symfony/mime/RawMessage.php b/vendor/symfony/mime/RawMessage.php
deleted file mode 100644
index 66788d8ad526d3a63f5396fe143ff6ade571be2f..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/RawMessage.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-use Symfony\Component\Mime\Exception\LogicException;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RawMessage implements \Serializable
-{
-    private $message;
-
-    /**
-     * @param iterable|string $message
-     */
-    public function __construct($message)
-    {
-        $this->message = $message;
-    }
-
-    public function toString(): string
-    {
-        if (\is_string($this->message)) {
-            return $this->message;
-        }
-
-        return $this->message = implode('', iterator_to_array($this->message, false));
-    }
-
-    public function toIterable(): iterable
-    {
-        if (\is_string($this->message)) {
-            yield $this->message;
-
-            return;
-        }
-
-        $message = '';
-        foreach ($this->message as $chunk) {
-            $message .= $chunk;
-            yield $chunk;
-        }
-        $this->message = $message;
-    }
-
-    /**
-     * @throws LogicException if the message is not valid
-     */
-    public function ensureValidity()
-    {
-    }
-
-    /**
-     * @internal
-     */
-    final public function serialize(): string
-    {
-        return serialize($this->__serialize());
-    }
-
-    /**
-     * @internal
-     */
-    final public function unserialize($serialized)
-    {
-        $this->__unserialize(unserialize($serialized));
-    }
-
-    public function __serialize(): array
-    {
-        return [$this->toString()];
-    }
-
-    public function __unserialize(array $data): void
-    {
-        [$this->message] = $data;
-    }
-}
diff --git a/vendor/symfony/mime/Resources/bin/update_mime_types.php b/vendor/symfony/mime/Resources/bin/update_mime_types.php
deleted file mode 100644
index 74a9449c75e8d015f63663c05d99d3aaee9fb07e..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Resources/bin/update_mime_types.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-// load new map
-$data = file_get_contents('https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types');
-$new = [];
-foreach (explode("\n", $data) as $line) {
-    if (!$line || '#' == $line[0]) {
-        continue;
-    }
-    $mimeType = substr($line, 0, strpos($line, "\t"));
-    $extensions = explode(' ', substr($line, strrpos($line, "\t") + 1));
-    $new[$mimeType] = $extensions;
-}
-
-$xml = simplexml_load_string(file_get_contents('https://raw.github.com/minad/mimemagic/master/script/freedesktop.org.xml'));
-foreach ($xml as $node) {
-    $exts = [];
-    foreach ($node->glob as $glob) {
-        $pattern = (string) $glob['pattern'];
-        if ('*' != $pattern[0] || '.' != $pattern[1]) {
-            continue;
-        }
-
-        $exts[] = substr($pattern, 2);
-    }
-
-    if (!$exts) {
-        continue;
-    }
-
-    $mt = strtolower((string) $node['type']);
-    $new[$mt] = array_merge($new[$mt] ?? [], $exts);
-    foreach ($node->alias as $alias) {
-        $mt = strtolower((string) $alias['type']);
-        $new[$mt] = array_merge($new[$mt] ?? [], $exts);
-    }
-}
-
-// load current map
-$data = file_get_contents($output = __DIR__.'/../../MimeTypes.php');
-$current = [];
-$pre = '';
-$post = '';
-foreach (explode("\n", $data) as $line) {
-    if (!preg_match("{^        '([^']+/[^']+)' => \['(.+)'\],$}", $line, $matches)) {
-        if (!$current) {
-            $pre .= $line."\n";
-        } else {
-            $post .= $line."\n";
-        }
-        continue;
-    }
-    $current[$matches[1]] = explode("', '", $matches[2]);
-}
-
-// we merge the 2 maps (we never remove old mime types)
-$map = array_replace_recursive($current, $new);
-ksort($map);
-
-$data = $pre;
-foreach ($map as $mimeType => $exts) {
-    $data .= sprintf("        '%s' => ['%s'],\n", $mimeType, implode("', '", array_unique($exts)));
-}
-$data .= $post;
-
-// reverse map
-// we prefill the extensions with some preferences for content-types
-$exts = [
-    'aif' => ['audio/x-aiff'],
-    'aiff' => ['audio/x-aiff'],
-    'aps' => ['application/postscript'],
-    'avi' => ['video/avi'],
-    'bmp' => ['image/bmp'],
-    'bz2' => ['application/x-bz2'],
-    'css' => ['text/css'],
-    'csv' => ['text/csv'],
-    'dmg' => ['application/x-apple-diskimage'],
-    'doc' => ['application/msword'],
-    'docx' => ['application/vnd.openxmlformats-officedocument.wordprocessingml.document'],
-    'eml' => ['message/rfc822'],
-    'exe' => ['application/x-ms-dos-executable'],
-    'flv' => ['video/x-flv'],
-    'gif' => ['image/gif'],
-    'gz' => ['application/x-gzip'],
-    'hqx' => ['application/stuffit'],
-    'htm' => ['text/html'],
-    'html' => ['text/html'],
-    'jar' => ['application/x-java-archive'],
-    'jpeg' => ['image/jpeg'],
-    'jpg' => ['image/jpeg'],
-    'js' => ['text/javascript'],
-    'm3u' => ['audio/x-mpegurl'],
-    'm4a' => ['audio/mp4'],
-    'mdb' => ['application/x-msaccess'],
-    'mid' => ['audio/midi'],
-    'midi' => ['audio/midi'],
-    'mov' => ['video/quicktime'],
-    'mp3' => ['audio/mpeg'],
-    'mp4' => ['video/mp4'],
-    'mpeg' => ['video/mpeg'],
-    'mpg' => ['video/mpeg'],
-    'ogg' => ['audio/ogg'],
-    'pdf' => ['application/pdf'],
-    'php' => ['application/x-php'],
-    'php3' => ['application/x-php'],
-    'php4' => ['application/x-php'],
-    'php5' => ['application/x-php'],
-    'png' => ['image/png'],
-    'ppt' => ['application/vnd.ms-powerpoint'],
-    'pptx' => ['application/vnd.openxmlformats-officedocument.presentationml.presentation'],
-    'ps' => ['application/postscript'],
-    'rar' => ['application/x-rar-compressed'],
-    'rtf' => ['application/rtf'],
-    'sit' => ['application/x-stuffit'],
-    'svg' => ['image/svg+xml'],
-    'tar' => ['application/x-tar'],
-    'tif' => ['image/tiff'],
-    'tiff' => ['image/tiff'],
-    'ttf' => ['application/x-font-truetype'],
-    'txt' => ['text/plain'],
-    'vcf' => ['text/x-vcard'],
-    'wav' => ['audio/wav'],
-    'wma' => ['audio/x-ms-wma'],
-    'wmv' => ['audio/x-ms-wmv'],
-    'xls' => ['application/vnd.ms-excel'],
-    'xlsx' => ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
-    'xml' => ['application/xml'],
-    'zip' => ['application/zip'],
-];
-foreach ($map as $mimeType => $extensions) {
-    foreach ($extensions as $extension) {
-        $exts[$extension][] = $mimeType;
-    }
-}
-ksort($exts);
-
-$updated = '';
-$state = 0;
-foreach (explode("\n", $data) as $line) {
-    if (!preg_match("{^        '([^'/]+)' => \['(.+)'\],$}", $line, $matches)) {
-        if (1 === $state) {
-            $state = 2;
-            foreach ($exts as $ext => $mimeTypes) {
-                $updated .= sprintf("        '%s' => ['%s'],\n", $ext, implode("', '", array_unique($mimeTypes)));
-            }
-        }
-        $updated .= $line."\n";
-        continue;
-    }
-    $state = 1;
-}
-
-$updated = preg_replace('{Updated from upstream on .+?\.}', 'Updated from upstream on '.date('Y-m-d'), $updated, -1);
-
-file_put_contents($output, rtrim($updated, "\n")."\n");
-
-echo "Done.\n";
diff --git a/vendor/symfony/mime/Test/Constraint/EmailAddressContains.php b/vendor/symfony/mime/Test/Constraint/EmailAddressContains.php
deleted file mode 100644
index c751c3d45f3b5d95536c9ac65933fff6dce8a570..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Test/Constraint/EmailAddressContains.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\Mime\Header\MailboxHeader;
-use Symfony\Component\Mime\Header\MailboxListHeader;
-use Symfony\Component\Mime\RawMessage;
-
-final class EmailAddressContains extends Constraint
-{
-    private $headerName;
-    private $expectedValue;
-
-    public function __construct(string $headerName, string $expectedValue)
-    {
-        $this->headerName = $headerName;
-        $this->expectedValue = $expectedValue;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return sprintf('contains address "%s" with value "%s"', $this->headerName, $this->expectedValue);
-    }
-
-    /**
-     * @param RawMessage $message
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($message): bool
-    {
-        if (RawMessage::class === \get_class($message)) {
-            throw new \LogicException('Unable to test a message address on a RawMessage instance.');
-        }
-
-        $header = $message->getHeaders()->get($this->headerName);
-        if ($header instanceof MailboxHeader) {
-            return $this->expectedValue === $header->getAddress()->getAddress();
-        } elseif ($header instanceof MailboxListHeader) {
-            foreach ($header->getAddresses() as $address) {
-                if ($this->expectedValue === $address->getAddress()) {
-                    return true;
-                }
-            }
-
-            return false;
-        }
-
-        throw new \LogicException(sprintf('Unable to test a message address on a non-address header.'));
-    }
-
-    /**
-     * @param RawMessage $message
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($message): string
-    {
-        return sprintf('the Email %s (value is %s)', $this->toString(), $message->getHeaders()->get($this->headerName)->getBodyAsString());
-    }
-}
diff --git a/vendor/symfony/mime/Test/Constraint/EmailAttachmentCount.php b/vendor/symfony/mime/Test/Constraint/EmailAttachmentCount.php
deleted file mode 100644
index c0adbe3a0c0cea85c679e3d4dc76b82fad37d31f..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Test/Constraint/EmailAttachmentCount.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\Mime\Message;
-use Symfony\Component\Mime\RawMessage;
-
-final class EmailAttachmentCount extends Constraint
-{
-    private $expectedValue;
-    private $transport;
-
-    public function __construct(int $expectedValue, string $transport = null)
-    {
-        $this->expectedValue = $expectedValue;
-        $this->transport = $transport;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return sprintf('has sent "%d" attachment(s)', $this->expectedValue);
-    }
-
-    /**
-     * @param RawMessage $message
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($message): bool
-    {
-        if (RawMessage::class === \get_class($message) || Message::class === \get_class($message)) {
-            throw new \LogicException('Unable to test a message attachment on a RawMessage or Message instance.');
-        }
-
-        return $this->expectedValue === \count($message->getAttachments());
-    }
-
-    /**
-     * @param RawMessage $message
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($message): string
-    {
-        return 'the Email '.$this->toString();
-    }
-}
diff --git a/vendor/symfony/mime/Test/Constraint/EmailHasHeader.php b/vendor/symfony/mime/Test/Constraint/EmailHasHeader.php
deleted file mode 100644
index a29f835fce0aff06088645a9d034ed39465d421c..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Test/Constraint/EmailHasHeader.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\Mime\RawMessage;
-
-final class EmailHasHeader extends Constraint
-{
-    private $headerName;
-
-    public function __construct(string $headerName)
-    {
-        $this->headerName = $headerName;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return sprintf('has header "%s"', $this->headerName);
-    }
-
-    /**
-     * @param RawMessage $message
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($message): bool
-    {
-        if (RawMessage::class === \get_class($message)) {
-            throw new \LogicException('Unable to test a message header on a RawMessage instance.');
-        }
-
-        return $message->getHeaders()->has($this->headerName);
-    }
-
-    /**
-     * @param RawMessage $message
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($message): string
-    {
-        return 'the Email '.$this->toString();
-    }
-}
diff --git a/vendor/symfony/mime/Test/Constraint/EmailHeaderSame.php b/vendor/symfony/mime/Test/Constraint/EmailHeaderSame.php
deleted file mode 100644
index 74bdc63c79f712fe44e4768df5d90bf330216804..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Test/Constraint/EmailHeaderSame.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-use Symfony\Component\Mime\RawMessage;
-
-final class EmailHeaderSame extends Constraint
-{
-    private $headerName;
-    private $expectedValue;
-
-    public function __construct(string $headerName, string $expectedValue)
-    {
-        $this->headerName = $headerName;
-        $this->expectedValue = $expectedValue;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return sprintf('has header "%s" with value "%s"', $this->headerName, $this->expectedValue);
-    }
-
-    /**
-     * @param RawMessage $message
-     *
-     * {@inheritdoc}
-     */
-    protected function matches($message): bool
-    {
-        if (RawMessage::class === \get_class($message)) {
-            throw new \LogicException('Unable to test a message header on a RawMessage instance.');
-        }
-
-        return $this->expectedValue === $this->getHeaderValue($message);
-    }
-
-    /**
-     * @param RawMessage $message
-     *
-     * {@inheritdoc}
-     */
-    protected function failureDescription($message): string
-    {
-        return sprintf('the Email %s (value is %s)', $this->toString(), $this->getHeaderValue($message));
-    }
-
-    private function getHeaderValue($message): string
-    {
-        $header = $message->getHeaders()->get($this->headerName);
-
-        return $header instanceof UnstructuredHeader ? $header->getValue() : $header->getBodyAsString();
-    }
-}
diff --git a/vendor/symfony/mime/Test/Constraint/EmailHtmlBodyContains.php b/vendor/symfony/mime/Test/Constraint/EmailHtmlBodyContains.php
deleted file mode 100644
index 3c61376e1acb1da3868e8dc3d53d9fe6d709d950..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Test/Constraint/EmailHtmlBodyContains.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\Mime\Message;
-use Symfony\Component\Mime\RawMessage;
-
-final class EmailHtmlBodyContains extends Constraint
-{
-    private $expectedText;
-
-    public function __construct(string $expectedText)
-    {
-        $this->expectedText = $expectedText;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return sprintf('contains "%s"', $this->expectedText);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param RawMessage $message
-     */
-    protected function matches($message): bool
-    {
-        if (RawMessage::class === \get_class($message) || Message::class === \get_class($message)) {
-            throw new \LogicException('Unable to test a message HTML body on a RawMessage or Message instance.');
-        }
-
-        return false !== mb_strpos($message->getHtmlBody(), $this->expectedText);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param RawMessage $message
-     */
-    protected function failureDescription($message): string
-    {
-        return 'the Email HTML body '.$this->toString();
-    }
-}
diff --git a/vendor/symfony/mime/Test/Constraint/EmailTextBodyContains.php b/vendor/symfony/mime/Test/Constraint/EmailTextBodyContains.php
deleted file mode 100644
index 063d96306ba6b1d3b7681b784afc013f74887bfe..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Test/Constraint/EmailTextBodyContains.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Test\Constraint;
-
-use PHPUnit\Framework\Constraint\Constraint;
-use Symfony\Component\Mime\Message;
-use Symfony\Component\Mime\RawMessage;
-
-final class EmailTextBodyContains extends Constraint
-{
-    private $expectedText;
-
-    public function __construct(string $expectedText)
-    {
-        $this->expectedText = $expectedText;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function toString(): string
-    {
-        return sprintf('contains "%s"', $this->expectedText);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param RawMessage $message
-     */
-    protected function matches($message): bool
-    {
-        if (RawMessage::class === \get_class($message) || Message::class === \get_class($message)) {
-            throw new \LogicException('Unable to test a message text body on a RawMessage or Message instance.');
-        }
-
-        return false !== mb_strpos($message->getTextBody(), $this->expectedText);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @param RawMessage $message
-     */
-    protected function failureDescription($message): string
-    {
-        return 'the Email text body '.$this->toString();
-    }
-}
diff --git a/vendor/symfony/mime/composer.json b/vendor/symfony/mime/composer.json
deleted file mode 100644
index 36050a3469f3a58be37f66f4200a6787932e8257..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/composer.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-    "name": "symfony/mime",
-    "type": "library",
-    "description": "A library to manipulate MIME messages",
-    "keywords": ["mime", "mime-type"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.2.5",
-        "symfony/polyfill-intl-idn": "^1.10",
-        "symfony/polyfill-mbstring": "^1.0",
-        "symfony/polyfill-php80": "^1.15"
-    },
-    "require-dev": {
-        "egulias/email-validator": "^2.1.10",
-        "symfony/dependency-injection": "^4.4|^5.0"
-    },
-    "conflict": {
-        "symfony/mailer": "<4.4"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\Mime\\": "" },
-        "exclude-from-classmap": [
-            "/Tests/"
-        ]
-    },
-    "minimum-stability": "dev"
-}
diff --git a/vendor/symfony/polyfill-ctype/Ctype.php b/vendor/symfony/polyfill-ctype/Ctype.php
deleted file mode 100644
index 58414dc73bd45b931b73a05a040d9ca23a61acf6..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-ctype/Ctype.php
+++ /dev/null
@@ -1,227 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Ctype;
-
-/**
- * Ctype implementation through regex.
- *
- * @internal
- *
- * @author Gert de Pagter <BackEndTea@gmail.com>
- */
-final class Ctype
-{
-    /**
-     * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise.
-     *
-     * @see https://php.net/ctype-alnum
-     *
-     * @param string|int $text
-     *
-     * @return bool
-     */
-    public static function ctype_alnum($text)
-    {
-        $text = self::convert_int_to_char_for_ctype($text);
-
-        return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text);
-    }
-
-    /**
-     * Returns TRUE if every character in text is a letter, FALSE otherwise.
-     *
-     * @see https://php.net/ctype-alpha
-     *
-     * @param string|int $text
-     *
-     * @return bool
-     */
-    public static function ctype_alpha($text)
-    {
-        $text = self::convert_int_to_char_for_ctype($text);
-
-        return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text);
-    }
-
-    /**
-     * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise.
-     *
-     * @see https://php.net/ctype-cntrl
-     *
-     * @param string|int $text
-     *
-     * @return bool
-     */
-    public static function ctype_cntrl($text)
-    {
-        $text = self::convert_int_to_char_for_ctype($text);
-
-        return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text);
-    }
-
-    /**
-     * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise.
-     *
-     * @see https://php.net/ctype-digit
-     *
-     * @param string|int $text
-     *
-     * @return bool
-     */
-    public static function ctype_digit($text)
-    {
-        $text = self::convert_int_to_char_for_ctype($text);
-
-        return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text);
-    }
-
-    /**
-     * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise.
-     *
-     * @see https://php.net/ctype-graph
-     *
-     * @param string|int $text
-     *
-     * @return bool
-     */
-    public static function ctype_graph($text)
-    {
-        $text = self::convert_int_to_char_for_ctype($text);
-
-        return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text);
-    }
-
-    /**
-     * Returns TRUE if every character in text is a lowercase letter.
-     *
-     * @see https://php.net/ctype-lower
-     *
-     * @param string|int $text
-     *
-     * @return bool
-     */
-    public static function ctype_lower($text)
-    {
-        $text = self::convert_int_to_char_for_ctype($text);
-
-        return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text);
-    }
-
-    /**
-     * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all.
-     *
-     * @see https://php.net/ctype-print
-     *
-     * @param string|int $text
-     *
-     * @return bool
-     */
-    public static function ctype_print($text)
-    {
-        $text = self::convert_int_to_char_for_ctype($text);
-
-        return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text);
-    }
-
-    /**
-     * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise.
-     *
-     * @see https://php.net/ctype-punct
-     *
-     * @param string|int $text
-     *
-     * @return bool
-     */
-    public static function ctype_punct($text)
-    {
-        $text = self::convert_int_to_char_for_ctype($text);
-
-        return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text);
-    }
-
-    /**
-     * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters.
-     *
-     * @see https://php.net/ctype-space
-     *
-     * @param string|int $text
-     *
-     * @return bool
-     */
-    public static function ctype_space($text)
-    {
-        $text = self::convert_int_to_char_for_ctype($text);
-
-        return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text);
-    }
-
-    /**
-     * Returns TRUE if every character in text is an uppercase letter.
-     *
-     * @see https://php.net/ctype-upper
-     *
-     * @param string|int $text
-     *
-     * @return bool
-     */
-    public static function ctype_upper($text)
-    {
-        $text = self::convert_int_to_char_for_ctype($text);
-
-        return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text);
-    }
-
-    /**
-     * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise.
-     *
-     * @see https://php.net/ctype-xdigit
-     *
-     * @param string|int $text
-     *
-     * @return bool
-     */
-    public static function ctype_xdigit($text)
-    {
-        $text = self::convert_int_to_char_for_ctype($text);
-
-        return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text);
-    }
-
-    /**
-     * Converts integers to their char versions according to normal ctype behaviour, if needed.
-     *
-     * If an integer between -128 and 255 inclusive is provided,
-     * it is interpreted as the ASCII value of a single character
-     * (negative values have 256 added in order to allow characters in the Extended ASCII range).
-     * Any other integer is interpreted as a string containing the decimal digits of the integer.
-     *
-     * @param string|int $int
-     *
-     * @return mixed
-     */
-    private static function convert_int_to_char_for_ctype($int)
-    {
-        if (!\is_int($int)) {
-            return $int;
-        }
-
-        if ($int < -128 || $int > 255) {
-            return (string) $int;
-        }
-
-        if ($int < 0) {
-            $int += 256;
-        }
-
-        return \chr($int);
-    }
-}
diff --git a/vendor/symfony/polyfill-ctype/LICENSE b/vendor/symfony/polyfill-ctype/LICENSE
deleted file mode 100644
index 3f853aaf35fe186d4016761eb6e8a403de3e6e0d..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-ctype/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2018-2019 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-ctype/README.md b/vendor/symfony/polyfill-ctype/README.md
deleted file mode 100644
index 8add1ab0096e7e7ca60829b87266d2c5a884ac26..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-ctype/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-Symfony Polyfill / Ctype
-========================
-
-This component provides `ctype_*` functions to users who run php versions without the ctype extension.
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-ctype/bootstrap.php b/vendor/symfony/polyfill-ctype/bootstrap.php
deleted file mode 100644
index 0bc45cfdf469c9cd815113e64c0151ad00f36310..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-ctype/bootstrap.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Ctype as p;
-
-if (!function_exists('ctype_alnum')) {
-    function ctype_alnum($input) { return p\Ctype::ctype_alnum($input); }
-}
-if (!function_exists('ctype_alpha')) {
-    function ctype_alpha($input) { return p\Ctype::ctype_alpha($input); }
-}
-if (!function_exists('ctype_cntrl')) {
-    function ctype_cntrl($input) { return p\Ctype::ctype_cntrl($input); }
-}
-if (!function_exists('ctype_digit')) {
-    function ctype_digit($input) { return p\Ctype::ctype_digit($input); }
-}
-if (!function_exists('ctype_graph')) {
-    function ctype_graph($input) { return p\Ctype::ctype_graph($input); }
-}
-if (!function_exists('ctype_lower')) {
-    function ctype_lower($input) { return p\Ctype::ctype_lower($input); }
-}
-if (!function_exists('ctype_print')) {
-    function ctype_print($input) { return p\Ctype::ctype_print($input); }
-}
-if (!function_exists('ctype_punct')) {
-    function ctype_punct($input) { return p\Ctype::ctype_punct($input); }
-}
-if (!function_exists('ctype_space')) {
-    function ctype_space($input) { return p\Ctype::ctype_space($input); }
-}
-if (!function_exists('ctype_upper')) {
-    function ctype_upper($input) { return p\Ctype::ctype_upper($input); }
-}
-if (!function_exists('ctype_xdigit')) {
-    function ctype_xdigit($input) { return p\Ctype::ctype_xdigit($input); }
-}
diff --git a/vendor/symfony/polyfill-ctype/composer.json b/vendor/symfony/polyfill-ctype/composer.json
deleted file mode 100644
index 2088bb9f6fff4373bdb1eb0cf78646e475919408..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-ctype/composer.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-    "name": "symfony/polyfill-ctype",
-    "type": "library",
-    "description": "Symfony polyfill for ctype functions",
-    "keywords": ["polyfill", "compatibility", "portable", "ctype"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Gert de Pagter",
-            "email": "BackEndTea@gmail.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" },
-        "files": [ "bootstrap.php" ]
-    },
-    "suggest": {
-        "ext-ctype": "For best performance"
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-main": "1.20-dev"
-        },
-        "thanks": {
-            "name": "symfony/polyfill",
-            "url": "https://github.com/symfony/polyfill"
-        }
-    }
-}
diff --git a/vendor/symfony/polyfill-intl-idn/Idn.php b/vendor/symfony/polyfill-intl-idn/Idn.php
deleted file mode 100644
index 535248a203d876cb2395f9fa43ff3b70ba8bc1c5..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/Idn.php
+++ /dev/null
@@ -1,925 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Idn;
-
-use Exception;
-use Normalizer;
-use Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges;
-use Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex;
-
-/**
- * @see https://www.unicode.org/reports/tr46/
- *
- * @internal
- */
-final class Idn
-{
-    const ERROR_EMPTY_LABEL = 1;
-    const ERROR_LABEL_TOO_LONG = 2;
-    const ERROR_DOMAIN_NAME_TOO_LONG = 4;
-    const ERROR_LEADING_HYPHEN = 8;
-    const ERROR_TRAILING_HYPHEN = 0x10;
-    const ERROR_HYPHEN_3_4 = 0x20;
-    const ERROR_LEADING_COMBINING_MARK = 0x40;
-    const ERROR_DISALLOWED = 0x80;
-    const ERROR_PUNYCODE = 0x100;
-    const ERROR_LABEL_HAS_DOT = 0x200;
-    const ERROR_INVALID_ACE_LABEL = 0x400;
-    const ERROR_BIDI = 0x800;
-    const ERROR_CONTEXTJ = 0x1000;
-    const ERROR_CONTEXTO_PUNCTUATION = 0x2000;
-    const ERROR_CONTEXTO_DIGITS = 0x4000;
-
-    const INTL_IDNA_VARIANT_2003 = 0;
-    const INTL_IDNA_VARIANT_UTS46 = 1;
-
-    const IDNA_DEFAULT = 0;
-    const IDNA_ALLOW_UNASSIGNED = 1;
-    const IDNA_USE_STD3_RULES = 2;
-    const IDNA_CHECK_BIDI = 4;
-    const IDNA_CHECK_CONTEXTJ = 8;
-    const IDNA_NONTRANSITIONAL_TO_ASCII = 16;
-    const IDNA_NONTRANSITIONAL_TO_UNICODE = 32;
-
-    const MAX_DOMAIN_SIZE = 253;
-    const MAX_LABEL_SIZE = 63;
-
-    const BASE = 36;
-    const TMIN = 1;
-    const TMAX = 26;
-    const SKEW = 38;
-    const DAMP = 700;
-    const INITIAL_BIAS = 72;
-    const INITIAL_N = 128;
-    const DELIMITER = '-';
-    const MAX_INT = 2147483647;
-
-    /**
-     * Contains the numeric value of a basic code point (for use in representing integers) in the
-     * range 0 to BASE-1, or -1 if b is does not represent a value.
-     *
-     * @var array<int, int>
-     */
-    private static $basicToDigit = array(
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
-
-        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-
-        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    );
-
-    /**
-     * @var array<int, int>
-     */
-    private static $virama;
-
-    /**
-     * @var array<int, string>
-     */
-    private static $mapped;
-
-    /**
-     * @var array<int, bool>
-     */
-    private static $ignored;
-
-    /**
-     * @var array<int, string>
-     */
-    private static $deviation;
-
-    /**
-     * @var array<int, bool>
-     */
-    private static $disallowed;
-
-    /**
-     * @var array<int, string>
-     */
-    private static $disallowed_STD3_mapped;
-
-    /**
-     * @var array<int, bool>
-     */
-    private static $disallowed_STD3_valid;
-
-    /**
-     * @var bool
-     */
-    private static $mappingTableLoaded = false;
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#ToASCII
-     *
-     * @param string $domainName
-     * @param int    $options
-     * @param int    $variant
-     * @param array  $idna_info
-     *
-     * @return string|false
-     */
-    public static function idn_to_ascii($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
-    {
-        if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
-            @trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
-        }
-
-        $options = array(
-            'CheckHyphens' => true,
-            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
-            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
-            'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
-            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_ASCII),
-            'VerifyDnsLength' => true,
-        );
-        $info = new Info();
-        $labels = self::process((string) $domainName, $options, $info);
-
-        foreach ($labels as $i => $label) {
-            // Only convert labels to punycode that contain non-ASCII code points
-            if (1 === preg_match('/[^\x00-\x7F]/', $label)) {
-                try {
-                    $label = 'xn--'.self::punycodeEncode($label);
-                } catch (Exception $e) {
-                    $info->errors |= self::ERROR_PUNYCODE;
-                }
-
-                $labels[$i] = $label;
-            }
-        }
-
-        if ($options['VerifyDnsLength']) {
-            self::validateDomainAndLabelLength($labels, $info);
-        }
-
-        $idna_info = array(
-            'result' => implode('.', $labels),
-            'isTransitionalDifferent' => $info->transitionalDifferent,
-            'errors' => $info->errors,
-        );
-
-        return 0 === $info->errors ? $idna_info['result'] : false;
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#ToUnicode
-     *
-     * @param string $domainName
-     * @param int    $options
-     * @param int    $variant
-     * @param array  $idna_info
-     *
-     * @return string|false
-     */
-    public static function idn_to_utf8($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
-    {
-        if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
-            @trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
-        }
-
-        $info = new Info();
-        $labels = self::process((string) $domainName, array(
-            'CheckHyphens' => true,
-            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
-            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
-            'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
-            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_UNICODE),
-        ), $info);
-        $idna_info = array(
-            'result' => implode('.', $labels),
-            'isTransitionalDifferent' => $info->transitionalDifferent,
-            'errors' => $info->errors,
-        );
-
-        return 0 === $info->errors ? $idna_info['result'] : false;
-    }
-
-    /**
-     * @param string $label
-     *
-     * @return bool
-     */
-    private static function isValidContextJ(array $codePoints, $label)
-    {
-        if (!isset(self::$virama)) {
-            self::$virama = require __DIR__.\DIRECTORY_SEPARATOR.'Resources'.\DIRECTORY_SEPARATOR.'unidata'.\DIRECTORY_SEPARATOR.'virama.php';
-        }
-
-        $offset = 0;
-
-        foreach ($codePoints as $i => $codePoint) {
-            if (0x200C !== $codePoint && 0x200D !== $codePoint) {
-                continue;
-            }
-
-            if (!isset($codePoints[$i - 1])) {
-                return false;
-            }
-
-            // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True;
-            if (isset(self::$virama[$codePoints[$i - 1]])) {
-                continue;
-            }
-
-            // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then
-            // True;
-            // Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}]
-            if (0x200C === $codePoint && 1 === preg_match(Regex::ZWNJ, $label, $matches, PREG_OFFSET_CAPTURE, $offset)) {
-                $offset += \strlen($matches[1][0]);
-
-                continue;
-            }
-
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#ProcessingStepMap
-     *
-     * @param string              $input
-     * @param array<string, bool> $options
-     *
-     * @return string
-     */
-    private static function mapCodePoints($input, array $options, Info $info)
-    {
-        $str = '';
-        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
-        $transitional = $options['Transitional_Processing'];
-
-        foreach (self::utf8Decode($input) as $codePoint) {
-            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
-
-            switch ($data['status']) {
-                case 'disallowed':
-                    $info->errors |= self::ERROR_DISALLOWED;
-
-                    // no break.
-
-                case 'valid':
-                    $str .= mb_chr($codePoint, 'utf-8');
-
-                    break;
-
-                case 'ignored':
-                    // Do nothing.
-                    break;
-
-                case 'mapped':
-                    $str .= $data['mapping'];
-
-                    break;
-
-                case 'deviation':
-                    $info->transitionalDifferent = true;
-                    $str .= ($transitional ? $data['mapping'] : mb_chr($codePoint, 'utf-8'));
-
-                    break;
-            }
-        }
-
-        return $str;
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#Processing
-     *
-     * @param string              $domain
-     * @param array<string, bool> $options
-     *
-     * @return array<int, string>
-     */
-    private static function process($domain, array $options, Info $info)
-    {
-        // If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and
-        // we need to respect the VerifyDnsLength option.
-        $checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'];
-
-        if ($checkForEmptyLabels && '' === $domain) {
-            $info->errors |= self::ERROR_EMPTY_LABEL;
-
-            return array($domain);
-        }
-
-        // Step 1. Map each code point in the domain name string
-        $domain = self::mapCodePoints($domain, $options, $info);
-
-        // Step 2. Normalize the domain name string to Unicode Normalization Form C.
-        if (!Normalizer::isNormalized($domain, Normalizer::FORM_C)) {
-            $domain = Normalizer::normalize($domain, Normalizer::FORM_C);
-        }
-
-        // Step 3. Break the string into labels at U+002E (.) FULL STOP.
-        $labels = explode('.', $domain);
-        $lastLabelIndex = \count($labels) - 1;
-
-        // Step 4. Convert and validate each label in the domain name string.
-        foreach ($labels as $i => $label) {
-            $validationOptions = $options;
-
-            if ('xn--' === substr($label, 0, 4)) {
-                try {
-                    $label = self::punycodeDecode(substr($label, 4));
-                } catch (Exception $e) {
-                    $info->errors |= self::ERROR_PUNYCODE;
-
-                    continue;
-                }
-
-                $validationOptions['Transitional_Processing'] = false;
-                $labels[$i] = $label;
-            }
-
-            self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex);
-        }
-
-        if ($info->bidiDomain && !$info->validBidiDomain) {
-            $info->errors |= self::ERROR_BIDI;
-        }
-
-        // Any input domain name string that does not record an error has been successfully
-        // processed according to this specification. Conversely, if an input domain_name string
-        // causes an error, then the processing of the input domain_name string fails. Determining
-        // what to do with error input is up to the caller, and not in the scope of this document.
-        return $labels;
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc5893#section-2
-     *
-     * @param string $label
-     */
-    private static function validateBidiLabel($label, Info $info)
-    {
-        if (1 === preg_match(Regex::RTL_LABEL, $label)) {
-            $info->bidiDomain = true;
-
-            // Step 1. The first character must be a character with Bidi property L, R, or AL.
-            // If it has the R or AL property, it is an RTL label
-            if (1 !== preg_match(Regex::BIDI_STEP_1_RTL, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            // Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES,
-            // CS, ET, ON, BN, or NSM are allowed.
-            if (1 === preg_match(Regex::BIDI_STEP_2, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            // Step 3. In an RTL label, the end of the label must be a character with Bidi property
-            // R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM.
-            if (1 !== preg_match(Regex::BIDI_STEP_3, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            // Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
-            if (1 === preg_match(Regex::BIDI_STEP_4_AN, $label) && 1 === preg_match(Regex::BIDI_STEP_4_EN, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            return;
-        }
-
-        // We are a LTR label
-        // Step 1. The first character must be a character with Bidi property L, R, or AL.
-        // If it has the L property, it is an LTR label.
-        if (1 !== preg_match(Regex::BIDI_STEP_1_LTR, $label)) {
-            $info->validBidiDomain = false;
-
-            return;
-        }
-
-        // Step 5. In an LTR label, only characters with the Bidi properties L, EN,
-        // ES, CS, ET, ON, BN, or NSM are allowed.
-        if (1 === preg_match(Regex::BIDI_STEP_5, $label)) {
-            $info->validBidiDomain = false;
-
-            return;
-        }
-
-        // Step 6.In an LTR label, the end of the label must be a character with Bidi property L or
-        // EN, followed by zero or more characters with Bidi property NSM.
-        if (1 !== preg_match(Regex::BIDI_STEP_6, $label)) {
-            $info->validBidiDomain = false;
-
-            return;
-        }
-    }
-
-    /**
-     * @param array<int, string> $labels
-     */
-    private static function validateDomainAndLabelLength(array $labels, Info $info)
-    {
-        $maxDomainSize = self::MAX_DOMAIN_SIZE;
-        $length = \count($labels);
-
-        // Number of "." delimiters.
-        $domainLength = $length - 1;
-
-        // If the last label is empty and it is not the first label, then it is the root label.
-        // Increase the max size by 1, making it 254, to account for the root label's "."
-        // delimiter. This also means we don't need to check the last label's length for being too
-        // long.
-        if ($length > 1 && '' === $labels[$length - 1]) {
-            ++$maxDomainSize;
-            --$length;
-        }
-
-        for ($i = 0; $i < $length; ++$i) {
-            $bytes = \strlen($labels[$i]);
-            $domainLength += $bytes;
-
-            if ($bytes > self::MAX_LABEL_SIZE) {
-                $info->errors |= self::ERROR_LABEL_TOO_LONG;
-            }
-        }
-
-        if ($domainLength > $maxDomainSize) {
-            $info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG;
-        }
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#Validity_Criteria
-     *
-     * @param string              $label
-     * @param array<string, bool> $options
-     * @param bool                $canBeEmpty
-     */
-    private static function validateLabel($label, Info $info, array $options, $canBeEmpty)
-    {
-        if ('' === $label) {
-            if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) {
-                $info->errors |= self::ERROR_EMPTY_LABEL;
-            }
-
-            return;
-        }
-
-        // Step 1. The label must be in Unicode Normalization Form C.
-        if (!Normalizer::isNormalized($label, Normalizer::FORM_C)) {
-            $info->errors |= self::ERROR_INVALID_ACE_LABEL;
-        }
-
-        $codePoints = self::utf8Decode($label);
-
-        if ($options['CheckHyphens']) {
-            // Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character
-            // in both the thrid and fourth positions.
-            if (isset($codePoints[2], $codePoints[3]) && 0x002D === $codePoints[2] && 0x002D === $codePoints[3]) {
-                $info->errors |= self::ERROR_HYPHEN_3_4;
-            }
-
-            // Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D
-            // HYPHEN-MINUS character.
-            if ('-' === substr($label, 0, 1)) {
-                $info->errors |= self::ERROR_LEADING_HYPHEN;
-            }
-
-            if ('-' === substr($label, -1, 1)) {
-                $info->errors |= self::ERROR_TRAILING_HYPHEN;
-            }
-        }
-
-        // Step 4. The label must not contain a U+002E (.) FULL STOP.
-        if (false !== strpos($label, '.')) {
-            $info->errors |= self::ERROR_LABEL_HAS_DOT;
-        }
-
-        // Step 5. The label must not begin with a combining mark, that is: General_Category=Mark.
-        if (1 === preg_match(Regex::COMBINING_MARK, $label)) {
-            $info->errors |= self::ERROR_LEADING_COMBINING_MARK;
-        }
-
-        // Step 6. Each code point in the label must only have certain status values according to
-        // Section 5, IDNA Mapping Table:
-        $transitional = $options['Transitional_Processing'];
-        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
-
-        foreach ($codePoints as $codePoint) {
-            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
-            $status = $data['status'];
-
-            if ('valid' === $status || (!$transitional && 'deviation' === $status)) {
-                continue;
-            }
-
-            $info->errors |= self::ERROR_DISALLOWED;
-
-            break;
-        }
-
-        // Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in
-        // The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)
-        // [IDNA2008].
-        if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) {
-            $info->errors |= self::ERROR_CONTEXTJ;
-        }
-
-        // Step 8. If CheckBidi, and if the domain name is a  Bidi domain name, then the label must
-        // satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2.
-        if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) {
-            self::validateBidiLabel($label, $info);
-        }
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc3492#section-6.2
-     *
-     * @param string $input
-     *
-     * @return string
-     */
-    private static function punycodeDecode($input)
-    {
-        $n = self::INITIAL_N;
-        $out = 0;
-        $i = 0;
-        $bias = self::INITIAL_BIAS;
-        $lastDelimIndex = strrpos($input, self::DELIMITER);
-        $b = false === $lastDelimIndex ? 0 : $lastDelimIndex;
-        $inputLength = \strlen($input);
-        $output = array();
-        $bytes = array_map('ord', str_split($input));
-
-        for ($j = 0; $j < $b; ++$j) {
-            if ($bytes[$j] > 0x7F) {
-                throw new Exception('Invalid input');
-            }
-
-            $output[$out++] = $input[$j];
-        }
-
-        if ($b > 0) {
-            ++$b;
-        }
-
-        for ($in = $b; $in < $inputLength; ++$out) {
-            $oldi = $i;
-            $w = 1;
-
-            for ($k = self::BASE; /* no condition */; $k += self::BASE) {
-                if ($in >= $inputLength) {
-                    throw new Exception('Invalid input');
-                }
-
-                $digit = self::$basicToDigit[$bytes[$in++] & 0xFF];
-
-                if ($digit < 0) {
-                    throw new Exception('Invalid input');
-                }
-
-                if ($digit > intdiv(self::MAX_INT - $i, $w)) {
-                    throw new Exception('Integer overflow');
-                }
-
-                $i += $digit * $w;
-
-                if ($k <= $bias) {
-                    $t = self::TMIN;
-                } elseif ($k >= $bias + self::TMAX) {
-                    $t = self::TMAX;
-                } else {
-                    $t = $k - $bias;
-                }
-
-                if ($digit < $t) {
-                    break;
-                }
-
-                $baseMinusT = self::BASE - $t;
-
-                if ($w > intdiv(self::MAX_INT, $baseMinusT)) {
-                    throw new Exception('Integer overflow');
-                }
-
-                $w *= $baseMinusT;
-            }
-
-            $outPlusOne = $out + 1;
-            $bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi);
-
-            if (intdiv($i, $outPlusOne) > self::MAX_INT - $n) {
-                throw new Exception('Integer overflow');
-            }
-
-            $n += intdiv($i, $outPlusOne);
-            $i %= $outPlusOne;
-            array_splice($output, $i++, 0, array(mb_chr($n, 'utf-8')));
-        }
-
-        return implode('', $output);
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc3492#section-6.3
-     *
-     * @param string $input
-     *
-     * @return string
-     */
-    private static function punycodeEncode($input)
-    {
-        $n = self::INITIAL_N;
-        $delta = 0;
-        $out = 0;
-        $bias = self::INITIAL_BIAS;
-        $inputLength = 0;
-        $output = '';
-        $iter = self::utf8Decode($input);
-
-        foreach ($iter as $codePoint) {
-            ++$inputLength;
-
-            if ($codePoint < 0x80) {
-                $output .= \chr($codePoint);
-                ++$out;
-            }
-        }
-
-        $h = $out;
-        $b = $out;
-
-        if ($b > 0) {
-            $output .= self::DELIMITER;
-            ++$out;
-        }
-
-        while ($h < $inputLength) {
-            $m = self::MAX_INT;
-
-            foreach ($iter as $codePoint) {
-                if ($codePoint >= $n && $codePoint < $m) {
-                    $m = $codePoint;
-                }
-            }
-
-            if ($m - $n > intdiv(self::MAX_INT - $delta, $h + 1)) {
-                throw new Exception('Integer overflow');
-            }
-
-            $delta += ($m - $n) * ($h + 1);
-            $n = $m;
-
-            foreach ($iter as $codePoint) {
-                if ($codePoint < $n && 0 === ++$delta) {
-                    throw new Exception('Integer overflow');
-                }
-
-                if ($codePoint === $n) {
-                    $q = $delta;
-
-                    for ($k = self::BASE; /* no condition */; $k += self::BASE) {
-                        if ($k <= $bias) {
-                            $t = self::TMIN;
-                        } elseif ($k >= $bias + self::TMAX) {
-                            $t = self::TMAX;
-                        } else {
-                            $t = $k - $bias;
-                        }
-
-                        if ($q < $t) {
-                            break;
-                        }
-
-                        $qMinusT = $q - $t;
-                        $baseMinusT = self::BASE - $t;
-                        $output .= self::encodeDigit($t + ($qMinusT) % ($baseMinusT), false);
-                        ++$out;
-                        $q = intdiv($qMinusT, $baseMinusT);
-                    }
-
-                    $output .= self::encodeDigit($q, false);
-                    ++$out;
-                    $bias = self::adaptBias($delta, $h + 1, $h === $b);
-                    $delta = 0;
-                    ++$h;
-                }
-            }
-
-            ++$delta;
-            ++$n;
-        }
-
-        return $output;
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc3492#section-6.1
-     *
-     * @param int  $delta
-     * @param int  $numPoints
-     * @param bool $firstTime
-     *
-     * @return int
-     */
-    private static function adaptBias($delta, $numPoints, $firstTime)
-    {
-        // xxx >> 1 is a faster way of doing intdiv(xxx, 2)
-        $delta = $firstTime ? intdiv($delta, self::DAMP) : $delta >> 1;
-        $delta += intdiv($delta, $numPoints);
-        $k = 0;
-
-        while ($delta > ((self::BASE - self::TMIN) * self::TMAX) >> 1) {
-            $delta = intdiv($delta, self::BASE - self::TMIN);
-            $k += self::BASE;
-        }
-
-        return $k + intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW);
-    }
-
-    /**
-     * @param int  $d
-     * @param bool $flag
-     *
-     * @return string
-     */
-    private static function encodeDigit($d, $flag)
-    {
-        return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5));
-    }
-
-    /**
-     * Takes a UTF-8 encoded string and converts it into a series of integer code points. Any
-     * invalid byte sequences will be replaced by a U+FFFD replacement code point.
-     *
-     * @see https://encoding.spec.whatwg.org/#utf-8-decoder
-     *
-     * @param string $input
-     *
-     * @return array<int, int>
-     */
-    private static function utf8Decode($input)
-    {
-        $bytesSeen = 0;
-        $bytesNeeded = 0;
-        $lowerBoundary = 0x80;
-        $upperBoundary = 0xBF;
-        $codePoint = 0;
-        $codePoints = array();
-        $length = \strlen($input);
-
-        for ($i = 0; $i < $length; ++$i) {
-            $byte = \ord($input[$i]);
-
-            if (0 === $bytesNeeded) {
-                if ($byte >= 0x00 && $byte <= 0x7F) {
-                    $codePoints[] = $byte;
-
-                    continue;
-                }
-
-                if ($byte >= 0xC2 && $byte <= 0xDF) {
-                    $bytesNeeded = 1;
-                    $codePoint = $byte & 0x1F;
-                } elseif ($byte >= 0xE0 && $byte <= 0xEF) {
-                    if (0xE0 === $byte) {
-                        $lowerBoundary = 0xA0;
-                    } elseif (0xED === $byte) {
-                        $upperBoundary = 0x9F;
-                    }
-
-                    $bytesNeeded = 2;
-                    $codePoint = $byte & 0xF;
-                } elseif ($byte >= 0xF0 && $byte <= 0xF4) {
-                    if (0xF0 === $byte) {
-                        $lowerBoundary = 0x90;
-                    } elseif (0xF4 === $byte) {
-                        $upperBoundary = 0x8F;
-                    }
-
-                    $bytesNeeded = 3;
-                    $codePoint = $byte & 0x7;
-                } else {
-                    $codePoints[] = 0xFFFD;
-                }
-
-                continue;
-            }
-
-            if ($byte < $lowerBoundary || $byte > $upperBoundary) {
-                $codePoint = 0;
-                $bytesNeeded = 0;
-                $bytesSeen = 0;
-                $lowerBoundary = 0x80;
-                $upperBoundary = 0xBF;
-                --$i;
-                $codePoints[] = 0xFFFD;
-
-                continue;
-            }
-
-            $lowerBoundary = 0x80;
-            $upperBoundary = 0xBF;
-            $codePoint = ($codePoint << 6) | ($byte & 0x3F);
-
-            if (++$bytesSeen !== $bytesNeeded) {
-                continue;
-            }
-
-            $codePoints[] = $codePoint;
-            $codePoint = 0;
-            $bytesNeeded = 0;
-            $bytesSeen = 0;
-        }
-
-        // String unexpectedly ended, so append a U+FFFD code point.
-        if (0 !== $bytesNeeded) {
-            $codePoints[] = 0xFFFD;
-        }
-
-        return $codePoints;
-    }
-
-    /**
-     * @param int  $codePoint
-     * @param bool $useSTD3ASCIIRules
-     *
-     * @return array{status: string, mapping?: string}
-     */
-    private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules)
-    {
-        if (!self::$mappingTableLoaded) {
-            self::$mappingTableLoaded = true;
-            self::$mapped = require __DIR__.'/Resources/unidata/mapped.php';
-            self::$ignored = require __DIR__.'/Resources/unidata/ignored.php';
-            self::$deviation = require __DIR__.'/Resources/unidata/deviation.php';
-            self::$disallowed = require __DIR__.'/Resources/unidata/disallowed.php';
-            self::$disallowed_STD3_mapped = require __DIR__.'/Resources/unidata/disallowed_STD3_mapped.php';
-            self::$disallowed_STD3_valid = require __DIR__.'/Resources/unidata/disallowed_STD3_valid.php';
-        }
-
-        if (isset(self::$mapped[$codePoint])) {
-            return array('status' => 'mapped', 'mapping' => self::$mapped[$codePoint]);
-        }
-
-        if (isset(self::$ignored[$codePoint])) {
-            return array('status' => 'ignored');
-        }
-
-        if (isset(self::$deviation[$codePoint])) {
-            return array('status' => 'deviation', 'mapping' => self::$deviation[$codePoint]);
-        }
-
-        if (isset(self::$disallowed[$codePoint]) || DisallowedRanges::inRange($codePoint)) {
-            return array('status' => 'disallowed');
-        }
-
-        $isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]);
-
-        if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) {
-            $status = 'disallowed';
-
-            if (!$useSTD3ASCIIRules) {
-                $status = $isDisallowedMapped ? 'mapped' : 'valid';
-            }
-
-            if ($isDisallowedMapped) {
-                return array('status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]);
-            }
-
-            return array('status' => $status);
-        }
-
-        return array('status' => 'valid');
-    }
-}
diff --git a/vendor/symfony/polyfill-intl-idn/Info.php b/vendor/symfony/polyfill-intl-idn/Info.php
deleted file mode 100644
index 25c3582b2a64731128adf273acf935532c5bf26f..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/Info.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Idn;
-
-/**
- * @internal
- */
-class Info
-{
-    public $bidiDomain = false;
-    public $errors = 0;
-    public $validBidiDomain = true;
-    public $transitionalDifferent = false;
-}
diff --git a/vendor/symfony/polyfill-intl-idn/LICENSE b/vendor/symfony/polyfill-intl-idn/LICENSE
deleted file mode 100644
index 03c5e25774f3575f2e27efcab97d5daf756506f8..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2018-2019 Fabien Potencier and Trevor Rowbotham <trevor.rowbotham@pm.me>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-intl-idn/README.md b/vendor/symfony/polyfill-intl-idn/README.md
deleted file mode 100644
index 2e75f2e520a45d87c6d17fd9b0fbef839b2fd5f8..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-Symfony Polyfill / Intl: Idn
-============================
-
-This component provides [`idn_to_ascii`](https://php.net/idn-to-ascii) and [`idn_to_utf8`](https://php.net/idn-to-utf8) functions to users who run php versions without the [Intl](https://php.net/intl) extension.
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php
deleted file mode 100644
index 5bb70e48aca746dcd511e431676228d9d2c0e18f..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php
+++ /dev/null
@@ -1,375 +0,0 @@
-<?php
-
-namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
-
-/**
- * @internal
- */
-final class DisallowedRanges
-{
-    /**
-     * @param int $codePoint
-     *
-     * @return bool
-     */
-    public static function inRange($codePoint)
-    {
-        if ($codePoint >= 128 && $codePoint <= 159) {
-            return true;
-        }
-
-        if ($codePoint >= 2155 && $codePoint <= 2207) {
-            return true;
-        }
-
-        if ($codePoint >= 3676 && $codePoint <= 3712) {
-            return true;
-        }
-
-        if ($codePoint >= 3808 && $codePoint <= 3839) {
-            return true;
-        }
-
-        if ($codePoint >= 4059 && $codePoint <= 4095) {
-            return true;
-        }
-
-        if ($codePoint >= 4256 && $codePoint <= 4293) {
-            return true;
-        }
-
-        if ($codePoint >= 6849 && $codePoint <= 6911) {
-            return true;
-        }
-
-        if ($codePoint >= 11859 && $codePoint <= 11903) {
-            return true;
-        }
-
-        if ($codePoint >= 42955 && $codePoint <= 42996) {
-            return true;
-        }
-
-        if ($codePoint >= 55296 && $codePoint <= 57343) {
-            return true;
-        }
-
-        if ($codePoint >= 57344 && $codePoint <= 63743) {
-            return true;
-        }
-
-        if ($codePoint >= 64218 && $codePoint <= 64255) {
-            return true;
-        }
-
-        if ($codePoint >= 64976 && $codePoint <= 65007) {
-            return true;
-        }
-
-        if ($codePoint >= 65630 && $codePoint <= 65663) {
-            return true;
-        }
-
-        if ($codePoint >= 65953 && $codePoint <= 65999) {
-            return true;
-        }
-
-        if ($codePoint >= 66046 && $codePoint <= 66175) {
-            return true;
-        }
-
-        if ($codePoint >= 66518 && $codePoint <= 66559) {
-            return true;
-        }
-
-        if ($codePoint >= 66928 && $codePoint <= 67071) {
-            return true;
-        }
-
-        if ($codePoint >= 67432 && $codePoint <= 67583) {
-            return true;
-        }
-
-        if ($codePoint >= 67760 && $codePoint <= 67807) {
-            return true;
-        }
-
-        if ($codePoint >= 67904 && $codePoint <= 67967) {
-            return true;
-        }
-
-        if ($codePoint >= 68256 && $codePoint <= 68287) {
-            return true;
-        }
-
-        if ($codePoint >= 68528 && $codePoint <= 68607) {
-            return true;
-        }
-
-        if ($codePoint >= 68681 && $codePoint <= 68735) {
-            return true;
-        }
-
-        if ($codePoint >= 68922 && $codePoint <= 69215) {
-            return true;
-        }
-
-        if ($codePoint >= 69298 && $codePoint <= 69375) {
-            return true;
-        }
-
-        if ($codePoint >= 69466 && $codePoint <= 69551) {
-            return true;
-        }
-
-        if ($codePoint >= 70207 && $codePoint <= 70271) {
-            return true;
-        }
-
-        if ($codePoint >= 70517 && $codePoint <= 70655) {
-            return true;
-        }
-
-        if ($codePoint >= 70874 && $codePoint <= 71039) {
-            return true;
-        }
-
-        if ($codePoint >= 71134 && $codePoint <= 71167) {
-            return true;
-        }
-
-        if ($codePoint >= 71370 && $codePoint <= 71423) {
-            return true;
-        }
-
-        if ($codePoint >= 71488 && $codePoint <= 71679) {
-            return true;
-        }
-
-        if ($codePoint >= 71740 && $codePoint <= 71839) {
-            return true;
-        }
-
-        if ($codePoint >= 72026 && $codePoint <= 72095) {
-            return true;
-        }
-
-        if ($codePoint >= 72441 && $codePoint <= 72703) {
-            return true;
-        }
-
-        if ($codePoint >= 72887 && $codePoint <= 72959) {
-            return true;
-        }
-
-        if ($codePoint >= 73130 && $codePoint <= 73439) {
-            return true;
-        }
-
-        if ($codePoint >= 73465 && $codePoint <= 73647) {
-            return true;
-        }
-
-        if ($codePoint >= 74650 && $codePoint <= 74751) {
-            return true;
-        }
-
-        if ($codePoint >= 75076 && $codePoint <= 77823) {
-            return true;
-        }
-
-        if ($codePoint >= 78905 && $codePoint <= 82943) {
-            return true;
-        }
-
-        if ($codePoint >= 83527 && $codePoint <= 92159) {
-            return true;
-        }
-
-        if ($codePoint >= 92784 && $codePoint <= 92879) {
-            return true;
-        }
-
-        if ($codePoint >= 93072 && $codePoint <= 93759) {
-            return true;
-        }
-
-        if ($codePoint >= 93851 && $codePoint <= 93951) {
-            return true;
-        }
-
-        if ($codePoint >= 94112 && $codePoint <= 94175) {
-            return true;
-        }
-
-        if ($codePoint >= 101590 && $codePoint <= 101631) {
-            return true;
-        }
-
-        if ($codePoint >= 101641 && $codePoint <= 110591) {
-            return true;
-        }
-
-        if ($codePoint >= 110879 && $codePoint <= 110927) {
-            return true;
-        }
-
-        if ($codePoint >= 111356 && $codePoint <= 113663) {
-            return true;
-        }
-
-        if ($codePoint >= 113828 && $codePoint <= 118783) {
-            return true;
-        }
-
-        if ($codePoint >= 119366 && $codePoint <= 119519) {
-            return true;
-        }
-
-        if ($codePoint >= 119673 && $codePoint <= 119807) {
-            return true;
-        }
-
-        if ($codePoint >= 121520 && $codePoint <= 122879) {
-            return true;
-        }
-
-        if ($codePoint >= 122923 && $codePoint <= 123135) {
-            return true;
-        }
-
-        if ($codePoint >= 123216 && $codePoint <= 123583) {
-            return true;
-        }
-
-        if ($codePoint >= 123648 && $codePoint <= 124927) {
-            return true;
-        }
-
-        if ($codePoint >= 125143 && $codePoint <= 125183) {
-            return true;
-        }
-
-        if ($codePoint >= 125280 && $codePoint <= 126064) {
-            return true;
-        }
-
-        if ($codePoint >= 126133 && $codePoint <= 126208) {
-            return true;
-        }
-
-        if ($codePoint >= 126270 && $codePoint <= 126463) {
-            return true;
-        }
-
-        if ($codePoint >= 126652 && $codePoint <= 126703) {
-            return true;
-        }
-
-        if ($codePoint >= 126706 && $codePoint <= 126975) {
-            return true;
-        }
-
-        if ($codePoint >= 127406 && $codePoint <= 127461) {
-            return true;
-        }
-
-        if ($codePoint >= 127590 && $codePoint <= 127743) {
-            return true;
-        }
-
-        if ($codePoint >= 129202 && $codePoint <= 129279) {
-            return true;
-        }
-
-        if ($codePoint >= 129751 && $codePoint <= 129791) {
-            return true;
-        }
-
-        if ($codePoint >= 129995 && $codePoint <= 130031) {
-            return true;
-        }
-
-        if ($codePoint >= 130042 && $codePoint <= 131069) {
-            return true;
-        }
-
-        if ($codePoint >= 173790 && $codePoint <= 173823) {
-            return true;
-        }
-
-        if ($codePoint >= 191457 && $codePoint <= 194559) {
-            return true;
-        }
-
-        if ($codePoint >= 195102 && $codePoint <= 196605) {
-            return true;
-        }
-
-        if ($codePoint >= 201547 && $codePoint <= 262141) {
-            return true;
-        }
-
-        if ($codePoint >= 262144 && $codePoint <= 327677) {
-            return true;
-        }
-
-        if ($codePoint >= 327680 && $codePoint <= 393213) {
-            return true;
-        }
-
-        if ($codePoint >= 393216 && $codePoint <= 458749) {
-            return true;
-        }
-
-        if ($codePoint >= 458752 && $codePoint <= 524285) {
-            return true;
-        }
-
-        if ($codePoint >= 524288 && $codePoint <= 589821) {
-            return true;
-        }
-
-        if ($codePoint >= 589824 && $codePoint <= 655357) {
-            return true;
-        }
-
-        if ($codePoint >= 655360 && $codePoint <= 720893) {
-            return true;
-        }
-
-        if ($codePoint >= 720896 && $codePoint <= 786429) {
-            return true;
-        }
-
-        if ($codePoint >= 786432 && $codePoint <= 851965) {
-            return true;
-        }
-
-        if ($codePoint >= 851968 && $codePoint <= 917501) {
-            return true;
-        }
-
-        if ($codePoint >= 917536 && $codePoint <= 917631) {
-            return true;
-        }
-
-        if ($codePoint >= 917632 && $codePoint <= 917759) {
-            return true;
-        }
-
-        if ($codePoint >= 918000 && $codePoint <= 983037) {
-            return true;
-        }
-
-        if ($codePoint >= 983040 && $codePoint <= 1048573) {
-            return true;
-        }
-
-        if ($codePoint >= 1048576 && $codePoint <= 1114109) {
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php
deleted file mode 100644
index 5c1c51ddeecce8c3729e39d698d70176f02a0042..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
-
-/**
- * @internal
- */
-final class Regex
-{
-    const COMBINING_MARK = '/^[\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{0903}\x{093A}\x{093B}\x{093C}\x{093E}-\x{0940}\x{0941}-\x{0948}\x{0949}-\x{094C}\x{094D}\x{094E}-\x{094F}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{0982}-\x{0983}\x{09BC}\x{09BE}-\x{09C0}\x{09C1}-\x{09C4}\x{09C7}-\x{09C8}\x{09CB}-\x{09CC}\x{09CD}\x{09D7}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A03}\x{0A3C}\x{0A3E}-\x{0A40}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0A83}\x{0ABC}\x{0ABE}-\x{0AC0}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0AC9}\x{0ACB}-\x{0ACC}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B02}-\x{0B03}\x{0B3C}\x{0B3E}\x{0B3F}\x{0B40}\x{0B41}-\x{0B44}\x{0B47}-\x{0B48}\x{0B4B}-\x{0B4C}\x{0B4D}\x{0B55}-\x{0B56}\x{0B57}\x{0B62}-\x{0B63}\x{0B82}\x{0BBE}-\x{0BBF}\x{0BC0}\x{0BC1}-\x{0BC2}\x{0BC6}-\x{0BC8}\x{0BCA}-\x{0BCC}\x{0BCD}\x{0BD7}\x{0C00}\x{0C01}-\x{0C03}\x{0C04}\x{0C3E}-\x{0C40}\x{0C41}-\x{0C44}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0C82}-\x{0C83}\x{0CBC}\x{0CBE}\x{0CBF}\x{0CC0}-\x{0CC4}\x{0CC6}\x{0CC7}-\x{0CC8}\x{0CCA}-\x{0CCB}\x{0CCC}-\x{0CCD}\x{0CD5}-\x{0CD6}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D02}-\x{0D03}\x{0D3B}-\x{0D3C}\x{0D3E}-\x{0D40}\x{0D41}-\x{0D44}\x{0D46}-\x{0D48}\x{0D4A}-\x{0D4C}\x{0D4D}\x{0D57}\x{0D62}-\x{0D63}\x{0D81}\x{0D82}-\x{0D83}\x{0DCA}\x{0DCF}-\x{0DD1}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0DD8}-\x{0DDF}\x{0DF2}-\x{0DF3}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3E}-\x{0F3F}\x{0F71}-\x{0F7E}\x{0F7F}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102B}-\x{102C}\x{102D}-\x{1030}\x{1031}\x{1032}-\x{1037}\x{1038}\x{1039}-\x{103A}\x{103B}-\x{103C}\x{103D}-\x{103E}\x{1056}-\x{1057}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1062}-\x{1064}\x{1067}-\x{106D}\x{1071}-\x{1074}\x{1082}\x{1083}-\x{1084}\x{1085}-\x{1086}\x{1087}-\x{108C}\x{108D}\x{108F}\x{109A}-\x{109C}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B6}\x{17B7}-\x{17BD}\x{17BE}-\x{17C5}\x{17C6}\x{17C7}-\x{17C8}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1923}-\x{1926}\x{1927}-\x{1928}\x{1929}-\x{192B}\x{1930}-\x{1931}\x{1932}\x{1933}-\x{1938}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A19}-\x{1A1A}\x{1A1B}\x{1A55}\x{1A56}\x{1A57}\x{1A58}-\x{1A5E}\x{1A60}\x{1A61}\x{1A62}\x{1A63}-\x{1A64}\x{1A65}-\x{1A6C}\x{1A6D}-\x{1A72}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B04}\x{1B34}\x{1B35}\x{1B36}-\x{1B3A}\x{1B3B}\x{1B3C}\x{1B3D}-\x{1B41}\x{1B42}\x{1B43}-\x{1B44}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1B82}\x{1BA1}\x{1BA2}-\x{1BA5}\x{1BA6}-\x{1BA7}\x{1BA8}-\x{1BA9}\x{1BAA}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE7}\x{1BE8}-\x{1BE9}\x{1BEA}-\x{1BEC}\x{1BED}\x{1BEE}\x{1BEF}-\x{1BF1}\x{1BF2}-\x{1BF3}\x{1C24}-\x{1C2B}\x{1C2C}-\x{1C33}\x{1C34}-\x{1C35}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE1}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF7}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{302E}-\x{302F}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A823}-\x{A824}\x{A825}-\x{A826}\x{A827}\x{A82C}\x{A880}-\x{A881}\x{A8B4}-\x{A8C3}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A952}-\x{A953}\x{A980}-\x{A982}\x{A983}\x{A9B3}\x{A9B4}-\x{A9B5}\x{A9B6}-\x{A9B9}\x{A9BA}-\x{A9BB}\x{A9BC}-\x{A9BD}\x{A9BE}-\x{A9C0}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA2F}-\x{AA30}\x{AA31}-\x{AA32}\x{AA33}-\x{AA34}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA4D}\x{AA7B}\x{AA7C}\x{AA7D}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEB}\x{AAEC}-\x{AAED}\x{AAEE}-\x{AAEF}\x{AAF5}\x{AAF6}\x{ABE3}-\x{ABE4}\x{ABE5}\x{ABE6}-\x{ABE7}\x{ABE8}\x{ABE9}-\x{ABEA}\x{ABEC}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11000}\x{11001}\x{11002}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{11082}\x{110B0}-\x{110B2}\x{110B3}-\x{110B6}\x{110B7}-\x{110B8}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112C}\x{1112D}-\x{11134}\x{11145}-\x{11146}\x{11173}\x{11180}-\x{11181}\x{11182}\x{111B3}-\x{111B5}\x{111B6}-\x{111BE}\x{111BF}-\x{111C0}\x{111C9}-\x{111CC}\x{111CE}\x{111CF}\x{1122C}-\x{1122E}\x{1122F}-\x{11231}\x{11232}-\x{11233}\x{11234}\x{11235}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E0}-\x{112E2}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{11302}-\x{11303}\x{1133B}-\x{1133C}\x{1133E}-\x{1133F}\x{11340}\x{11341}-\x{11344}\x{11347}-\x{11348}\x{1134B}-\x{1134D}\x{11357}\x{11362}-\x{11363}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11435}-\x{11437}\x{11438}-\x{1143F}\x{11440}-\x{11441}\x{11442}-\x{11444}\x{11445}\x{11446}\x{1145E}\x{114B0}-\x{114B2}\x{114B3}-\x{114B8}\x{114B9}\x{114BA}\x{114BB}-\x{114BE}\x{114BF}-\x{114C0}\x{114C1}\x{114C2}-\x{114C3}\x{115AF}-\x{115B1}\x{115B2}-\x{115B5}\x{115B8}-\x{115BB}\x{115BC}-\x{115BD}\x{115BE}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11630}-\x{11632}\x{11633}-\x{1163A}\x{1163B}-\x{1163C}\x{1163D}\x{1163E}\x{1163F}-\x{11640}\x{116AB}\x{116AC}\x{116AD}\x{116AE}-\x{116AF}\x{116B0}-\x{116B5}\x{116B6}\x{116B7}\x{1171D}-\x{1171F}\x{11720}-\x{11721}\x{11722}-\x{11725}\x{11726}\x{11727}-\x{1172B}\x{1182C}-\x{1182E}\x{1182F}-\x{11837}\x{11838}\x{11839}-\x{1183A}\x{11930}-\x{11935}\x{11937}-\x{11938}\x{1193B}-\x{1193C}\x{1193D}\x{1193E}\x{11940}\x{11942}\x{11943}\x{119D1}-\x{119D3}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119DC}-\x{119DF}\x{119E0}\x{119E4}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A39}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A57}-\x{11A58}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A97}\x{11A98}-\x{11A99}\x{11C2F}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3E}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CA9}\x{11CAA}-\x{11CB0}\x{11CB1}\x{11CB2}-\x{11CB3}\x{11CB4}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D8A}-\x{11D8E}\x{11D90}-\x{11D91}\x{11D93}-\x{11D94}\x{11D95}\x{11D96}\x{11D97}\x{11EF3}-\x{11EF4}\x{11EF5}-\x{11EF6}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F51}-\x{16F87}\x{16F8F}-\x{16F92}\x{16FE4}\x{16FF0}-\x{16FF1}\x{1BC9D}-\x{1BC9E}\x{1D165}-\x{1D166}\x{1D167}-\x{1D169}\x{1D16D}-\x{1D172}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]/u';
-
-    const RTL_LABEL = '/[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
-
-    const BIDI_STEP_1_LTR = '/^[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{1680}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{2000}-\x{200A}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{205F}\x{2060}-\x{2064}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}\x{206A}-\x{206F}\x{2070}\x{2074}-\x{2079}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{2080}-\x{2089}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{2488}-\x{249B}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3000}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF10}-\x{FF19}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{102E1}-\x{102FB}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1D7CE}-\x{1D7FF}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F100}-\x{1F10A}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FBF0}-\x{1FBF9}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}]/u';
-    const BIDI_STEP_1_RTL = '/^[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
-    const BIDI_STEP_2 = '/[^\x{0000}-\x{0008}\x{000E}-\x{001B}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{2060}-\x{2064}\x{2065}\x{206A}-\x{206F}\x{2070}\x{2074}-\x{2079}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{2080}-\x{2089}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{2488}-\x{249B}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF10}-\x{FF19}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{102E1}-\x{102FB}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1D7CE}-\x{1D7FF}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F100}-\x{1F10A}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FBF0}-\x{1FBF9}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}]/u';
-    const BIDI_STEP_3 = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FF10}-\x{FF19}\x{102E1}-\x{102FB}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1D7CE}-\x{1D7FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F100}-\x{1F10A}\x{1FBF0}-\x{1FBF9}][\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1D167}-\x{1D169}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]*$/u';
-    const BIDI_STEP_4_AN = '/[\x{0600}-\x{0605}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{06DD}\x{08E2}\x{10D30}-\x{10D39}\x{10E60}-\x{10E7E}]/u';
-    const BIDI_STEP_4_EN = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{06F0}-\x{06F9}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FF10}-\x{FF19}\x{102E1}-\x{102FB}\x{1D7CE}-\x{1D7FF}\x{1F100}-\x{1F10A}\x{1FBF0}-\x{1FBF9}]/u';
-    const BIDI_STEP_5 = '/[\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0085}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{1680}\x{2000}-\x{200A}\x{200F}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{205F}\x{2066}\x{2067}\x{2068}\x{2069}\x{3000}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
-    const BIDI_STEP_6 = '/[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{1680}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{2000}-\x{200A}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{205F}\x{2060}-\x{2064}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}\x{206A}-\x{206F}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3000}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}][\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1D167}-\x{1D169}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]*$/u';
-
-    const ZWNJ = '/([\x{A872}\x{10ACD}\x{10AD7}\x{10D00}\x{10FCB}\x{0620}\x{0626}\x{0628}\x{062A}-\x{062E}\x{0633}-\x{063F}\x{0641}-\x{0647}\x{0649}-\x{064A}\x{066E}-\x{066F}\x{0678}-\x{0687}\x{069A}-\x{06BF}\x{06C1}-\x{06C2}\x{06CC}\x{06CE}\x{06D0}-\x{06D1}\x{06FA}-\x{06FC}\x{06FF}\x{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{07CA}-\x{07EA}\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}\x{0860}\x{0862}-\x{0865}\x{0868}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B4}\x{08B6}-\x{08B8}\x{08BA}-\x{08C7}\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}\x{A840}-\x{A871}\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}\x{10D01}-\x{10D21}\x{10D23}\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}\x{1E900}-\x{1E943}][\x{00AD}\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{061C}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{200B}\x{200E}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{206A}-\x{206F}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{FEFF}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{13430}-\x{13438}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1E94B}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}]*\x{200C}[\x{00AD}\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{061C}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{200B}\x{200E}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{206A}-\x{206F}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{FEFF}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{13430}-\x{13438}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1E94B}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}]*)[\x{0622}-\x{0625}\x{0627}\x{0629}\x{062F}-\x{0632}\x{0648}\x{0671}-\x{0673}\x{0675}-\x{0677}\x{0688}-\x{0699}\x{06C0}\x{06C3}-\x{06CB}\x{06CD}\x{06CF}\x{06D2}-\x{06D3}\x{06D5}\x{06EE}-\x{06EF}\x{0710}\x{0715}-\x{0719}\x{071E}\x{0728}\x{072A}\x{072C}\x{072F}\x{074D}\x{0759}-\x{075B}\x{076B}-\x{076C}\x{0771}\x{0773}-\x{0774}\x{0778}-\x{0779}\x{0840}\x{0846}-\x{0847}\x{0849}\x{0854}\x{0856}-\x{0858}\x{0867}\x{0869}-\x{086A}\x{08AA}-\x{08AC}\x{08AE}\x{08B1}-\x{08B2}\x{08B9}\x{10AC5}\x{10AC7}\x{10AC9}-\x{10ACA}\x{10ACE}-\x{10AD2}\x{10ADD}\x{10AE1}\x{10AE4}\x{10AEF}\x{10B81}\x{10B83}-\x{10B85}\x{10B89}\x{10B8C}\x{10B8E}-\x{10B8F}\x{10B91}\x{10BA9}-\x{10BAC}\x{10D22}\x{10F33}\x{10F54}\x{10FB4}-\x{10FB6}\x{10FB9}-\x{10FBA}\x{10FBD}\x{10FC2}-\x{10FC3}\x{10FC9}\x{0620}\x{0626}\x{0628}\x{062A}-\x{062E}\x{0633}-\x{063F}\x{0641}-\x{0647}\x{0649}-\x{064A}\x{066E}-\x{066F}\x{0678}-\x{0687}\x{069A}-\x{06BF}\x{06C1}-\x{06C2}\x{06CC}\x{06CE}\x{06D0}-\x{06D1}\x{06FA}-\x{06FC}\x{06FF}\x{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{07CA}-\x{07EA}\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}\x{0860}\x{0862}-\x{0865}\x{0868}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B4}\x{08B6}-\x{08B8}\x{08BA}-\x{08C7}\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}\x{A840}-\x{A871}\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}\x{10D01}-\x{10D21}\x{10D23}\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}\x{1E900}-\x{1E943}]/u';
-}
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php
deleted file mode 100644
index 0bbd3356774af6db0a19b9c81f397a9e51076389..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-return array (
-  223 => 'ss',
-  962 => 'σ',
-  8204 => '',
-  8205 => '',
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php
deleted file mode 100644
index 25a5f564d54ae7020dfd22160247411286c08773..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php
+++ /dev/null
@@ -1,2638 +0,0 @@
-<?php
-
-return array (
-  888 => true,
-  889 => true,
-  896 => true,
-  897 => true,
-  898 => true,
-  899 => true,
-  907 => true,
-  909 => true,
-  930 => true,
-  1216 => true,
-  1328 => true,
-  1367 => true,
-  1368 => true,
-  1419 => true,
-  1420 => true,
-  1424 => true,
-  1480 => true,
-  1481 => true,
-  1482 => true,
-  1483 => true,
-  1484 => true,
-  1485 => true,
-  1486 => true,
-  1487 => true,
-  1515 => true,
-  1516 => true,
-  1517 => true,
-  1518 => true,
-  1525 => true,
-  1526 => true,
-  1527 => true,
-  1528 => true,
-  1529 => true,
-  1530 => true,
-  1531 => true,
-  1532 => true,
-  1533 => true,
-  1534 => true,
-  1535 => true,
-  1536 => true,
-  1537 => true,
-  1538 => true,
-  1539 => true,
-  1540 => true,
-  1541 => true,
-  1564 => true,
-  1565 => true,
-  1757 => true,
-  1806 => true,
-  1807 => true,
-  1867 => true,
-  1868 => true,
-  1970 => true,
-  1971 => true,
-  1972 => true,
-  1973 => true,
-  1974 => true,
-  1975 => true,
-  1976 => true,
-  1977 => true,
-  1978 => true,
-  1979 => true,
-  1980 => true,
-  1981 => true,
-  1982 => true,
-  1983 => true,
-  2043 => true,
-  2044 => true,
-  2094 => true,
-  2095 => true,
-  2111 => true,
-  2140 => true,
-  2141 => true,
-  2143 => true,
-  2229 => true,
-  2248 => true,
-  2249 => true,
-  2250 => true,
-  2251 => true,
-  2252 => true,
-  2253 => true,
-  2254 => true,
-  2255 => true,
-  2256 => true,
-  2257 => true,
-  2258 => true,
-  2274 => true,
-  2436 => true,
-  2445 => true,
-  2446 => true,
-  2449 => true,
-  2450 => true,
-  2473 => true,
-  2481 => true,
-  2483 => true,
-  2484 => true,
-  2485 => true,
-  2490 => true,
-  2491 => true,
-  2501 => true,
-  2502 => true,
-  2505 => true,
-  2506 => true,
-  2511 => true,
-  2512 => true,
-  2513 => true,
-  2514 => true,
-  2515 => true,
-  2516 => true,
-  2517 => true,
-  2518 => true,
-  2520 => true,
-  2521 => true,
-  2522 => true,
-  2523 => true,
-  2526 => true,
-  2532 => true,
-  2533 => true,
-  2559 => true,
-  2560 => true,
-  2564 => true,
-  2571 => true,
-  2572 => true,
-  2573 => true,
-  2574 => true,
-  2577 => true,
-  2578 => true,
-  2601 => true,
-  2609 => true,
-  2612 => true,
-  2615 => true,
-  2618 => true,
-  2619 => true,
-  2621 => true,
-  2627 => true,
-  2628 => true,
-  2629 => true,
-  2630 => true,
-  2633 => true,
-  2634 => true,
-  2638 => true,
-  2639 => true,
-  2640 => true,
-  2642 => true,
-  2643 => true,
-  2644 => true,
-  2645 => true,
-  2646 => true,
-  2647 => true,
-  2648 => true,
-  2653 => true,
-  2655 => true,
-  2656 => true,
-  2657 => true,
-  2658 => true,
-  2659 => true,
-  2660 => true,
-  2661 => true,
-  2679 => true,
-  2680 => true,
-  2681 => true,
-  2682 => true,
-  2683 => true,
-  2684 => true,
-  2685 => true,
-  2686 => true,
-  2687 => true,
-  2688 => true,
-  2692 => true,
-  2702 => true,
-  2706 => true,
-  2729 => true,
-  2737 => true,
-  2740 => true,
-  2746 => true,
-  2747 => true,
-  2758 => true,
-  2762 => true,
-  2766 => true,
-  2767 => true,
-  2769 => true,
-  2770 => true,
-  2771 => true,
-  2772 => true,
-  2773 => true,
-  2774 => true,
-  2775 => true,
-  2776 => true,
-  2777 => true,
-  2778 => true,
-  2779 => true,
-  2780 => true,
-  2781 => true,
-  2782 => true,
-  2783 => true,
-  2788 => true,
-  2789 => true,
-  2802 => true,
-  2803 => true,
-  2804 => true,
-  2805 => true,
-  2806 => true,
-  2807 => true,
-  2808 => true,
-  2816 => true,
-  2820 => true,
-  2829 => true,
-  2830 => true,
-  2833 => true,
-  2834 => true,
-  2857 => true,
-  2865 => true,
-  2868 => true,
-  2874 => true,
-  2875 => true,
-  2885 => true,
-  2886 => true,
-  2889 => true,
-  2890 => true,
-  2894 => true,
-  2895 => true,
-  2896 => true,
-  2897 => true,
-  2898 => true,
-  2899 => true,
-  2900 => true,
-  2904 => true,
-  2905 => true,
-  2906 => true,
-  2907 => true,
-  2910 => true,
-  2916 => true,
-  2917 => true,
-  2936 => true,
-  2937 => true,
-  2938 => true,
-  2939 => true,
-  2940 => true,
-  2941 => true,
-  2942 => true,
-  2943 => true,
-  2944 => true,
-  2945 => true,
-  2948 => true,
-  2955 => true,
-  2956 => true,
-  2957 => true,
-  2961 => true,
-  2966 => true,
-  2967 => true,
-  2968 => true,
-  2971 => true,
-  2973 => true,
-  2976 => true,
-  2977 => true,
-  2978 => true,
-  2981 => true,
-  2982 => true,
-  2983 => true,
-  2987 => true,
-  2988 => true,
-  2989 => true,
-  3002 => true,
-  3003 => true,
-  3004 => true,
-  3005 => true,
-  3011 => true,
-  3012 => true,
-  3013 => true,
-  3017 => true,
-  3022 => true,
-  3023 => true,
-  3025 => true,
-  3026 => true,
-  3027 => true,
-  3028 => true,
-  3029 => true,
-  3030 => true,
-  3032 => true,
-  3033 => true,
-  3034 => true,
-  3035 => true,
-  3036 => true,
-  3037 => true,
-  3038 => true,
-  3039 => true,
-  3040 => true,
-  3041 => true,
-  3042 => true,
-  3043 => true,
-  3044 => true,
-  3045 => true,
-  3067 => true,
-  3068 => true,
-  3069 => true,
-  3070 => true,
-  3071 => true,
-  3085 => true,
-  3089 => true,
-  3113 => true,
-  3130 => true,
-  3131 => true,
-  3132 => true,
-  3141 => true,
-  3145 => true,
-  3150 => true,
-  3151 => true,
-  3152 => true,
-  3153 => true,
-  3154 => true,
-  3155 => true,
-  3156 => true,
-  3159 => true,
-  3163 => true,
-  3164 => true,
-  3165 => true,
-  3166 => true,
-  3167 => true,
-  3172 => true,
-  3173 => true,
-  3184 => true,
-  3185 => true,
-  3186 => true,
-  3187 => true,
-  3188 => true,
-  3189 => true,
-  3190 => true,
-  3213 => true,
-  3217 => true,
-  3241 => true,
-  3252 => true,
-  3258 => true,
-  3259 => true,
-  3269 => true,
-  3273 => true,
-  3278 => true,
-  3279 => true,
-  3280 => true,
-  3281 => true,
-  3282 => true,
-  3283 => true,
-  3284 => true,
-  3287 => true,
-  3288 => true,
-  3289 => true,
-  3290 => true,
-  3291 => true,
-  3292 => true,
-  3293 => true,
-  3295 => true,
-  3300 => true,
-  3301 => true,
-  3312 => true,
-  3315 => true,
-  3316 => true,
-  3317 => true,
-  3318 => true,
-  3319 => true,
-  3320 => true,
-  3321 => true,
-  3322 => true,
-  3323 => true,
-  3324 => true,
-  3325 => true,
-  3326 => true,
-  3327 => true,
-  3341 => true,
-  3345 => true,
-  3397 => true,
-  3401 => true,
-  3408 => true,
-  3409 => true,
-  3410 => true,
-  3411 => true,
-  3428 => true,
-  3429 => true,
-  3456 => true,
-  3460 => true,
-  3479 => true,
-  3480 => true,
-  3481 => true,
-  3506 => true,
-  3516 => true,
-  3518 => true,
-  3519 => true,
-  3527 => true,
-  3528 => true,
-  3529 => true,
-  3531 => true,
-  3532 => true,
-  3533 => true,
-  3534 => true,
-  3541 => true,
-  3543 => true,
-  3552 => true,
-  3553 => true,
-  3554 => true,
-  3555 => true,
-  3556 => true,
-  3557 => true,
-  3568 => true,
-  3569 => true,
-  3573 => true,
-  3574 => true,
-  3575 => true,
-  3576 => true,
-  3577 => true,
-  3578 => true,
-  3579 => true,
-  3580 => true,
-  3581 => true,
-  3582 => true,
-  3583 => true,
-  3584 => true,
-  3643 => true,
-  3644 => true,
-  3645 => true,
-  3646 => true,
-  3715 => true,
-  3717 => true,
-  3723 => true,
-  3748 => true,
-  3750 => true,
-  3774 => true,
-  3775 => true,
-  3781 => true,
-  3783 => true,
-  3790 => true,
-  3791 => true,
-  3802 => true,
-  3803 => true,
-  3912 => true,
-  3949 => true,
-  3950 => true,
-  3951 => true,
-  3952 => true,
-  3992 => true,
-  4029 => true,
-  4045 => true,
-  4294 => true,
-  4296 => true,
-  4297 => true,
-  4298 => true,
-  4299 => true,
-  4300 => true,
-  4302 => true,
-  4303 => true,
-  4447 => true,
-  4448 => true,
-  4681 => true,
-  4686 => true,
-  4687 => true,
-  4695 => true,
-  4697 => true,
-  4702 => true,
-  4703 => true,
-  4745 => true,
-  4750 => true,
-  4751 => true,
-  4785 => true,
-  4790 => true,
-  4791 => true,
-  4799 => true,
-  4801 => true,
-  4806 => true,
-  4807 => true,
-  4823 => true,
-  4881 => true,
-  4886 => true,
-  4887 => true,
-  4955 => true,
-  4956 => true,
-  4989 => true,
-  4990 => true,
-  4991 => true,
-  5018 => true,
-  5019 => true,
-  5020 => true,
-  5021 => true,
-  5022 => true,
-  5023 => true,
-  5110 => true,
-  5111 => true,
-  5118 => true,
-  5119 => true,
-  5760 => true,
-  5789 => true,
-  5790 => true,
-  5791 => true,
-  5881 => true,
-  5882 => true,
-  5883 => true,
-  5884 => true,
-  5885 => true,
-  5886 => true,
-  5887 => true,
-  5901 => true,
-  5909 => true,
-  5910 => true,
-  5911 => true,
-  5912 => true,
-  5913 => true,
-  5914 => true,
-  5915 => true,
-  5916 => true,
-  5917 => true,
-  5918 => true,
-  5919 => true,
-  5943 => true,
-  5944 => true,
-  5945 => true,
-  5946 => true,
-  5947 => true,
-  5948 => true,
-  5949 => true,
-  5950 => true,
-  5951 => true,
-  5972 => true,
-  5973 => true,
-  5974 => true,
-  5975 => true,
-  5976 => true,
-  5977 => true,
-  5978 => true,
-  5979 => true,
-  5980 => true,
-  5981 => true,
-  5982 => true,
-  5983 => true,
-  5997 => true,
-  6001 => true,
-  6004 => true,
-  6005 => true,
-  6006 => true,
-  6007 => true,
-  6008 => true,
-  6009 => true,
-  6010 => true,
-  6011 => true,
-  6012 => true,
-  6013 => true,
-  6014 => true,
-  6015 => true,
-  6068 => true,
-  6069 => true,
-  6110 => true,
-  6111 => true,
-  6122 => true,
-  6123 => true,
-  6124 => true,
-  6125 => true,
-  6126 => true,
-  6127 => true,
-  6138 => true,
-  6139 => true,
-  6140 => true,
-  6141 => true,
-  6142 => true,
-  6143 => true,
-  6150 => true,
-  6158 => true,
-  6159 => true,
-  6170 => true,
-  6171 => true,
-  6172 => true,
-  6173 => true,
-  6174 => true,
-  6175 => true,
-  6265 => true,
-  6266 => true,
-  6267 => true,
-  6268 => true,
-  6269 => true,
-  6270 => true,
-  6271 => true,
-  6315 => true,
-  6316 => true,
-  6317 => true,
-  6318 => true,
-  6319 => true,
-  6390 => true,
-  6391 => true,
-  6392 => true,
-  6393 => true,
-  6394 => true,
-  6395 => true,
-  6396 => true,
-  6397 => true,
-  6398 => true,
-  6399 => true,
-  6431 => true,
-  6444 => true,
-  6445 => true,
-  6446 => true,
-  6447 => true,
-  6460 => true,
-  6461 => true,
-  6462 => true,
-  6463 => true,
-  6465 => true,
-  6466 => true,
-  6467 => true,
-  6510 => true,
-  6511 => true,
-  6517 => true,
-  6518 => true,
-  6519 => true,
-  6520 => true,
-  6521 => true,
-  6522 => true,
-  6523 => true,
-  6524 => true,
-  6525 => true,
-  6526 => true,
-  6527 => true,
-  6572 => true,
-  6573 => true,
-  6574 => true,
-  6575 => true,
-  6602 => true,
-  6603 => true,
-  6604 => true,
-  6605 => true,
-  6606 => true,
-  6607 => true,
-  6619 => true,
-  6620 => true,
-  6621 => true,
-  6684 => true,
-  6685 => true,
-  6751 => true,
-  6781 => true,
-  6782 => true,
-  6794 => true,
-  6795 => true,
-  6796 => true,
-  6797 => true,
-  6798 => true,
-  6799 => true,
-  6810 => true,
-  6811 => true,
-  6812 => true,
-  6813 => true,
-  6814 => true,
-  6815 => true,
-  6830 => true,
-  6831 => true,
-  6988 => true,
-  6989 => true,
-  6990 => true,
-  6991 => true,
-  7037 => true,
-  7038 => true,
-  7039 => true,
-  7156 => true,
-  7157 => true,
-  7158 => true,
-  7159 => true,
-  7160 => true,
-  7161 => true,
-  7162 => true,
-  7163 => true,
-  7224 => true,
-  7225 => true,
-  7226 => true,
-  7242 => true,
-  7243 => true,
-  7244 => true,
-  7305 => true,
-  7306 => true,
-  7307 => true,
-  7308 => true,
-  7309 => true,
-  7310 => true,
-  7311 => true,
-  7355 => true,
-  7356 => true,
-  7368 => true,
-  7369 => true,
-  7370 => true,
-  7371 => true,
-  7372 => true,
-  7373 => true,
-  7374 => true,
-  7375 => true,
-  7419 => true,
-  7420 => true,
-  7421 => true,
-  7422 => true,
-  7423 => true,
-  7674 => true,
-  7958 => true,
-  7959 => true,
-  7966 => true,
-  7967 => true,
-  8006 => true,
-  8007 => true,
-  8014 => true,
-  8015 => true,
-  8024 => true,
-  8026 => true,
-  8028 => true,
-  8030 => true,
-  8062 => true,
-  8063 => true,
-  8117 => true,
-  8133 => true,
-  8148 => true,
-  8149 => true,
-  8156 => true,
-  8176 => true,
-  8177 => true,
-  8181 => true,
-  8191 => true,
-  8206 => true,
-  8207 => true,
-  8228 => true,
-  8229 => true,
-  8230 => true,
-  8232 => true,
-  8233 => true,
-  8234 => true,
-  8235 => true,
-  8236 => true,
-  8237 => true,
-  8238 => true,
-  8289 => true,
-  8290 => true,
-  8291 => true,
-  8293 => true,
-  8294 => true,
-  8295 => true,
-  8296 => true,
-  8297 => true,
-  8298 => true,
-  8299 => true,
-  8300 => true,
-  8301 => true,
-  8302 => true,
-  8303 => true,
-  8306 => true,
-  8307 => true,
-  8335 => true,
-  8349 => true,
-  8350 => true,
-  8351 => true,
-  8384 => true,
-  8385 => true,
-  8386 => true,
-  8387 => true,
-  8388 => true,
-  8389 => true,
-  8390 => true,
-  8391 => true,
-  8392 => true,
-  8393 => true,
-  8394 => true,
-  8395 => true,
-  8396 => true,
-  8397 => true,
-  8398 => true,
-  8399 => true,
-  8433 => true,
-  8434 => true,
-  8435 => true,
-  8436 => true,
-  8437 => true,
-  8438 => true,
-  8439 => true,
-  8440 => true,
-  8441 => true,
-  8442 => true,
-  8443 => true,
-  8444 => true,
-  8445 => true,
-  8446 => true,
-  8447 => true,
-  8498 => true,
-  8579 => true,
-  8588 => true,
-  8589 => true,
-  8590 => true,
-  8591 => true,
-  9255 => true,
-  9256 => true,
-  9257 => true,
-  9258 => true,
-  9259 => true,
-  9260 => true,
-  9261 => true,
-  9262 => true,
-  9263 => true,
-  9264 => true,
-  9265 => true,
-  9266 => true,
-  9267 => true,
-  9268 => true,
-  9269 => true,
-  9270 => true,
-  9271 => true,
-  9272 => true,
-  9273 => true,
-  9274 => true,
-  9275 => true,
-  9276 => true,
-  9277 => true,
-  9278 => true,
-  9279 => true,
-  9291 => true,
-  9292 => true,
-  9293 => true,
-  9294 => true,
-  9295 => true,
-  9296 => true,
-  9297 => true,
-  9298 => true,
-  9299 => true,
-  9300 => true,
-  9301 => true,
-  9302 => true,
-  9303 => true,
-  9304 => true,
-  9305 => true,
-  9306 => true,
-  9307 => true,
-  9308 => true,
-  9309 => true,
-  9310 => true,
-  9311 => true,
-  9352 => true,
-  9353 => true,
-  9354 => true,
-  9355 => true,
-  9356 => true,
-  9357 => true,
-  9358 => true,
-  9359 => true,
-  9360 => true,
-  9361 => true,
-  9362 => true,
-  9363 => true,
-  9364 => true,
-  9365 => true,
-  9366 => true,
-  9367 => true,
-  9368 => true,
-  9369 => true,
-  9370 => true,
-  9371 => true,
-  11124 => true,
-  11125 => true,
-  11158 => true,
-  11311 => true,
-  11359 => true,
-  11508 => true,
-  11509 => true,
-  11510 => true,
-  11511 => true,
-  11512 => true,
-  11558 => true,
-  11560 => true,
-  11561 => true,
-  11562 => true,
-  11563 => true,
-  11564 => true,
-  11566 => true,
-  11567 => true,
-  11624 => true,
-  11625 => true,
-  11626 => true,
-  11627 => true,
-  11628 => true,
-  11629 => true,
-  11630 => true,
-  11633 => true,
-  11634 => true,
-  11635 => true,
-  11636 => true,
-  11637 => true,
-  11638 => true,
-  11639 => true,
-  11640 => true,
-  11641 => true,
-  11642 => true,
-  11643 => true,
-  11644 => true,
-  11645 => true,
-  11646 => true,
-  11671 => true,
-  11672 => true,
-  11673 => true,
-  11674 => true,
-  11675 => true,
-  11676 => true,
-  11677 => true,
-  11678 => true,
-  11679 => true,
-  11687 => true,
-  11695 => true,
-  11703 => true,
-  11711 => true,
-  11719 => true,
-  11727 => true,
-  11735 => true,
-  11743 => true,
-  11930 => true,
-  12020 => true,
-  12021 => true,
-  12022 => true,
-  12023 => true,
-  12024 => true,
-  12025 => true,
-  12026 => true,
-  12027 => true,
-  12028 => true,
-  12029 => true,
-  12030 => true,
-  12031 => true,
-  12246 => true,
-  12247 => true,
-  12248 => true,
-  12249 => true,
-  12250 => true,
-  12251 => true,
-  12252 => true,
-  12253 => true,
-  12254 => true,
-  12255 => true,
-  12256 => true,
-  12257 => true,
-  12258 => true,
-  12259 => true,
-  12260 => true,
-  12261 => true,
-  12262 => true,
-  12263 => true,
-  12264 => true,
-  12265 => true,
-  12266 => true,
-  12267 => true,
-  12268 => true,
-  12269 => true,
-  12270 => true,
-  12271 => true,
-  12272 => true,
-  12273 => true,
-  12274 => true,
-  12275 => true,
-  12276 => true,
-  12277 => true,
-  12278 => true,
-  12279 => true,
-  12280 => true,
-  12281 => true,
-  12282 => true,
-  12283 => true,
-  12284 => true,
-  12285 => true,
-  12286 => true,
-  12287 => true,
-  12352 => true,
-  12439 => true,
-  12440 => true,
-  12544 => true,
-  12545 => true,
-  12546 => true,
-  12547 => true,
-  12548 => true,
-  12592 => true,
-  12644 => true,
-  12687 => true,
-  12772 => true,
-  12773 => true,
-  12774 => true,
-  12775 => true,
-  12776 => true,
-  12777 => true,
-  12778 => true,
-  12779 => true,
-  12780 => true,
-  12781 => true,
-  12782 => true,
-  12783 => true,
-  12831 => true,
-  13250 => true,
-  13255 => true,
-  13272 => true,
-  40957 => true,
-  40958 => true,
-  40959 => true,
-  42125 => true,
-  42126 => true,
-  42127 => true,
-  42183 => true,
-  42184 => true,
-  42185 => true,
-  42186 => true,
-  42187 => true,
-  42188 => true,
-  42189 => true,
-  42190 => true,
-  42191 => true,
-  42540 => true,
-  42541 => true,
-  42542 => true,
-  42543 => true,
-  42544 => true,
-  42545 => true,
-  42546 => true,
-  42547 => true,
-  42548 => true,
-  42549 => true,
-  42550 => true,
-  42551 => true,
-  42552 => true,
-  42553 => true,
-  42554 => true,
-  42555 => true,
-  42556 => true,
-  42557 => true,
-  42558 => true,
-  42559 => true,
-  42744 => true,
-  42745 => true,
-  42746 => true,
-  42747 => true,
-  42748 => true,
-  42749 => true,
-  42750 => true,
-  42751 => true,
-  42944 => true,
-  42945 => true,
-  43053 => true,
-  43054 => true,
-  43055 => true,
-  43066 => true,
-  43067 => true,
-  43068 => true,
-  43069 => true,
-  43070 => true,
-  43071 => true,
-  43128 => true,
-  43129 => true,
-  43130 => true,
-  43131 => true,
-  43132 => true,
-  43133 => true,
-  43134 => true,
-  43135 => true,
-  43206 => true,
-  43207 => true,
-  43208 => true,
-  43209 => true,
-  43210 => true,
-  43211 => true,
-  43212 => true,
-  43213 => true,
-  43226 => true,
-  43227 => true,
-  43228 => true,
-  43229 => true,
-  43230 => true,
-  43231 => true,
-  43348 => true,
-  43349 => true,
-  43350 => true,
-  43351 => true,
-  43352 => true,
-  43353 => true,
-  43354 => true,
-  43355 => true,
-  43356 => true,
-  43357 => true,
-  43358 => true,
-  43389 => true,
-  43390 => true,
-  43391 => true,
-  43470 => true,
-  43482 => true,
-  43483 => true,
-  43484 => true,
-  43485 => true,
-  43519 => true,
-  43575 => true,
-  43576 => true,
-  43577 => true,
-  43578 => true,
-  43579 => true,
-  43580 => true,
-  43581 => true,
-  43582 => true,
-  43583 => true,
-  43598 => true,
-  43599 => true,
-  43610 => true,
-  43611 => true,
-  43715 => true,
-  43716 => true,
-  43717 => true,
-  43718 => true,
-  43719 => true,
-  43720 => true,
-  43721 => true,
-  43722 => true,
-  43723 => true,
-  43724 => true,
-  43725 => true,
-  43726 => true,
-  43727 => true,
-  43728 => true,
-  43729 => true,
-  43730 => true,
-  43731 => true,
-  43732 => true,
-  43733 => true,
-  43734 => true,
-  43735 => true,
-  43736 => true,
-  43737 => true,
-  43738 => true,
-  43767 => true,
-  43768 => true,
-  43769 => true,
-  43770 => true,
-  43771 => true,
-  43772 => true,
-  43773 => true,
-  43774 => true,
-  43775 => true,
-  43776 => true,
-  43783 => true,
-  43784 => true,
-  43791 => true,
-  43792 => true,
-  43799 => true,
-  43800 => true,
-  43801 => true,
-  43802 => true,
-  43803 => true,
-  43804 => true,
-  43805 => true,
-  43806 => true,
-  43807 => true,
-  43815 => true,
-  43823 => true,
-  43884 => true,
-  43885 => true,
-  43886 => true,
-  43887 => true,
-  44014 => true,
-  44015 => true,
-  44026 => true,
-  44027 => true,
-  44028 => true,
-  44029 => true,
-  44030 => true,
-  44031 => true,
-  55204 => true,
-  55205 => true,
-  55206 => true,
-  55207 => true,
-  55208 => true,
-  55209 => true,
-  55210 => true,
-  55211 => true,
-  55212 => true,
-  55213 => true,
-  55214 => true,
-  55215 => true,
-  55239 => true,
-  55240 => true,
-  55241 => true,
-  55242 => true,
-  55292 => true,
-  55293 => true,
-  55294 => true,
-  55295 => true,
-  64110 => true,
-  64111 => true,
-  64263 => true,
-  64264 => true,
-  64265 => true,
-  64266 => true,
-  64267 => true,
-  64268 => true,
-  64269 => true,
-  64270 => true,
-  64271 => true,
-  64272 => true,
-  64273 => true,
-  64274 => true,
-  64280 => true,
-  64281 => true,
-  64282 => true,
-  64283 => true,
-  64284 => true,
-  64311 => true,
-  64317 => true,
-  64319 => true,
-  64322 => true,
-  64325 => true,
-  64450 => true,
-  64451 => true,
-  64452 => true,
-  64453 => true,
-  64454 => true,
-  64455 => true,
-  64456 => true,
-  64457 => true,
-  64458 => true,
-  64459 => true,
-  64460 => true,
-  64461 => true,
-  64462 => true,
-  64463 => true,
-  64464 => true,
-  64465 => true,
-  64466 => true,
-  64832 => true,
-  64833 => true,
-  64834 => true,
-  64835 => true,
-  64836 => true,
-  64837 => true,
-  64838 => true,
-  64839 => true,
-  64840 => true,
-  64841 => true,
-  64842 => true,
-  64843 => true,
-  64844 => true,
-  64845 => true,
-  64846 => true,
-  64847 => true,
-  64912 => true,
-  64913 => true,
-  64968 => true,
-  64969 => true,
-  64970 => true,
-  64971 => true,
-  64972 => true,
-  64973 => true,
-  64974 => true,
-  64975 => true,
-  65022 => true,
-  65023 => true,
-  65042 => true,
-  65049 => true,
-  65050 => true,
-  65051 => true,
-  65052 => true,
-  65053 => true,
-  65054 => true,
-  65055 => true,
-  65072 => true,
-  65106 => true,
-  65107 => true,
-  65127 => true,
-  65132 => true,
-  65133 => true,
-  65134 => true,
-  65135 => true,
-  65141 => true,
-  65277 => true,
-  65278 => true,
-  65280 => true,
-  65440 => true,
-  65471 => true,
-  65472 => true,
-  65473 => true,
-  65480 => true,
-  65481 => true,
-  65488 => true,
-  65489 => true,
-  65496 => true,
-  65497 => true,
-  65501 => true,
-  65502 => true,
-  65503 => true,
-  65511 => true,
-  65519 => true,
-  65520 => true,
-  65521 => true,
-  65522 => true,
-  65523 => true,
-  65524 => true,
-  65525 => true,
-  65526 => true,
-  65527 => true,
-  65528 => true,
-  65529 => true,
-  65530 => true,
-  65531 => true,
-  65532 => true,
-  65533 => true,
-  65534 => true,
-  65535 => true,
-  65548 => true,
-  65575 => true,
-  65595 => true,
-  65598 => true,
-  65614 => true,
-  65615 => true,
-  65787 => true,
-  65788 => true,
-  65789 => true,
-  65790 => true,
-  65791 => true,
-  65795 => true,
-  65796 => true,
-  65797 => true,
-  65798 => true,
-  65844 => true,
-  65845 => true,
-  65846 => true,
-  65935 => true,
-  65949 => true,
-  65950 => true,
-  65951 => true,
-  66205 => true,
-  66206 => true,
-  66207 => true,
-  66257 => true,
-  66258 => true,
-  66259 => true,
-  66260 => true,
-  66261 => true,
-  66262 => true,
-  66263 => true,
-  66264 => true,
-  66265 => true,
-  66266 => true,
-  66267 => true,
-  66268 => true,
-  66269 => true,
-  66270 => true,
-  66271 => true,
-  66300 => true,
-  66301 => true,
-  66302 => true,
-  66303 => true,
-  66340 => true,
-  66341 => true,
-  66342 => true,
-  66343 => true,
-  66344 => true,
-  66345 => true,
-  66346 => true,
-  66347 => true,
-  66348 => true,
-  66379 => true,
-  66380 => true,
-  66381 => true,
-  66382 => true,
-  66383 => true,
-  66427 => true,
-  66428 => true,
-  66429 => true,
-  66430 => true,
-  66431 => true,
-  66462 => true,
-  66500 => true,
-  66501 => true,
-  66502 => true,
-  66503 => true,
-  66718 => true,
-  66719 => true,
-  66730 => true,
-  66731 => true,
-  66732 => true,
-  66733 => true,
-  66734 => true,
-  66735 => true,
-  66772 => true,
-  66773 => true,
-  66774 => true,
-  66775 => true,
-  66812 => true,
-  66813 => true,
-  66814 => true,
-  66815 => true,
-  66856 => true,
-  66857 => true,
-  66858 => true,
-  66859 => true,
-  66860 => true,
-  66861 => true,
-  66862 => true,
-  66863 => true,
-  66916 => true,
-  66917 => true,
-  66918 => true,
-  66919 => true,
-  66920 => true,
-  66921 => true,
-  66922 => true,
-  66923 => true,
-  66924 => true,
-  66925 => true,
-  66926 => true,
-  67383 => true,
-  67384 => true,
-  67385 => true,
-  67386 => true,
-  67387 => true,
-  67388 => true,
-  67389 => true,
-  67390 => true,
-  67391 => true,
-  67414 => true,
-  67415 => true,
-  67416 => true,
-  67417 => true,
-  67418 => true,
-  67419 => true,
-  67420 => true,
-  67421 => true,
-  67422 => true,
-  67423 => true,
-  67590 => true,
-  67591 => true,
-  67593 => true,
-  67638 => true,
-  67641 => true,
-  67642 => true,
-  67643 => true,
-  67645 => true,
-  67646 => true,
-  67670 => true,
-  67743 => true,
-  67744 => true,
-  67745 => true,
-  67746 => true,
-  67747 => true,
-  67748 => true,
-  67749 => true,
-  67750 => true,
-  67827 => true,
-  67830 => true,
-  67831 => true,
-  67832 => true,
-  67833 => true,
-  67834 => true,
-  67868 => true,
-  67869 => true,
-  67870 => true,
-  67898 => true,
-  67899 => true,
-  67900 => true,
-  67901 => true,
-  67902 => true,
-  68024 => true,
-  68025 => true,
-  68026 => true,
-  68027 => true,
-  68048 => true,
-  68049 => true,
-  68100 => true,
-  68103 => true,
-  68104 => true,
-  68105 => true,
-  68106 => true,
-  68107 => true,
-  68116 => true,
-  68120 => true,
-  68150 => true,
-  68151 => true,
-  68155 => true,
-  68156 => true,
-  68157 => true,
-  68158 => true,
-  68169 => true,
-  68170 => true,
-  68171 => true,
-  68172 => true,
-  68173 => true,
-  68174 => true,
-  68175 => true,
-  68185 => true,
-  68186 => true,
-  68187 => true,
-  68188 => true,
-  68189 => true,
-  68190 => true,
-  68191 => true,
-  68327 => true,
-  68328 => true,
-  68329 => true,
-  68330 => true,
-  68343 => true,
-  68344 => true,
-  68345 => true,
-  68346 => true,
-  68347 => true,
-  68348 => true,
-  68349 => true,
-  68350 => true,
-  68351 => true,
-  68406 => true,
-  68407 => true,
-  68408 => true,
-  68438 => true,
-  68439 => true,
-  68467 => true,
-  68468 => true,
-  68469 => true,
-  68470 => true,
-  68471 => true,
-  68498 => true,
-  68499 => true,
-  68500 => true,
-  68501 => true,
-  68502 => true,
-  68503 => true,
-  68504 => true,
-  68509 => true,
-  68510 => true,
-  68511 => true,
-  68512 => true,
-  68513 => true,
-  68514 => true,
-  68515 => true,
-  68516 => true,
-  68517 => true,
-  68518 => true,
-  68519 => true,
-  68520 => true,
-  68787 => true,
-  68788 => true,
-  68789 => true,
-  68790 => true,
-  68791 => true,
-  68792 => true,
-  68793 => true,
-  68794 => true,
-  68795 => true,
-  68796 => true,
-  68797 => true,
-  68798 => true,
-  68799 => true,
-  68851 => true,
-  68852 => true,
-  68853 => true,
-  68854 => true,
-  68855 => true,
-  68856 => true,
-  68857 => true,
-  68904 => true,
-  68905 => true,
-  68906 => true,
-  68907 => true,
-  68908 => true,
-  68909 => true,
-  68910 => true,
-  68911 => true,
-  69247 => true,
-  69290 => true,
-  69294 => true,
-  69295 => true,
-  69416 => true,
-  69417 => true,
-  69418 => true,
-  69419 => true,
-  69420 => true,
-  69421 => true,
-  69422 => true,
-  69423 => true,
-  69580 => true,
-  69581 => true,
-  69582 => true,
-  69583 => true,
-  69584 => true,
-  69585 => true,
-  69586 => true,
-  69587 => true,
-  69588 => true,
-  69589 => true,
-  69590 => true,
-  69591 => true,
-  69592 => true,
-  69593 => true,
-  69594 => true,
-  69595 => true,
-  69596 => true,
-  69597 => true,
-  69598 => true,
-  69599 => true,
-  69623 => true,
-  69624 => true,
-  69625 => true,
-  69626 => true,
-  69627 => true,
-  69628 => true,
-  69629 => true,
-  69630 => true,
-  69631 => true,
-  69710 => true,
-  69711 => true,
-  69712 => true,
-  69713 => true,
-  69744 => true,
-  69745 => true,
-  69746 => true,
-  69747 => true,
-  69748 => true,
-  69749 => true,
-  69750 => true,
-  69751 => true,
-  69752 => true,
-  69753 => true,
-  69754 => true,
-  69755 => true,
-  69756 => true,
-  69757 => true,
-  69758 => true,
-  69821 => true,
-  69826 => true,
-  69827 => true,
-  69828 => true,
-  69829 => true,
-  69830 => true,
-  69831 => true,
-  69832 => true,
-  69833 => true,
-  69834 => true,
-  69835 => true,
-  69836 => true,
-  69837 => true,
-  69838 => true,
-  69839 => true,
-  69865 => true,
-  69866 => true,
-  69867 => true,
-  69868 => true,
-  69869 => true,
-  69870 => true,
-  69871 => true,
-  69882 => true,
-  69883 => true,
-  69884 => true,
-  69885 => true,
-  69886 => true,
-  69887 => true,
-  69941 => true,
-  69960 => true,
-  69961 => true,
-  69962 => true,
-  69963 => true,
-  69964 => true,
-  69965 => true,
-  69966 => true,
-  69967 => true,
-  70007 => true,
-  70008 => true,
-  70009 => true,
-  70010 => true,
-  70011 => true,
-  70012 => true,
-  70013 => true,
-  70014 => true,
-  70015 => true,
-  70112 => true,
-  70133 => true,
-  70134 => true,
-  70135 => true,
-  70136 => true,
-  70137 => true,
-  70138 => true,
-  70139 => true,
-  70140 => true,
-  70141 => true,
-  70142 => true,
-  70143 => true,
-  70162 => true,
-  70279 => true,
-  70281 => true,
-  70286 => true,
-  70302 => true,
-  70314 => true,
-  70315 => true,
-  70316 => true,
-  70317 => true,
-  70318 => true,
-  70319 => true,
-  70379 => true,
-  70380 => true,
-  70381 => true,
-  70382 => true,
-  70383 => true,
-  70394 => true,
-  70395 => true,
-  70396 => true,
-  70397 => true,
-  70398 => true,
-  70399 => true,
-  70404 => true,
-  70413 => true,
-  70414 => true,
-  70417 => true,
-  70418 => true,
-  70441 => true,
-  70449 => true,
-  70452 => true,
-  70458 => true,
-  70469 => true,
-  70470 => true,
-  70473 => true,
-  70474 => true,
-  70478 => true,
-  70479 => true,
-  70481 => true,
-  70482 => true,
-  70483 => true,
-  70484 => true,
-  70485 => true,
-  70486 => true,
-  70488 => true,
-  70489 => true,
-  70490 => true,
-  70491 => true,
-  70492 => true,
-  70500 => true,
-  70501 => true,
-  70509 => true,
-  70510 => true,
-  70511 => true,
-  70748 => true,
-  70754 => true,
-  70755 => true,
-  70756 => true,
-  70757 => true,
-  70758 => true,
-  70759 => true,
-  70760 => true,
-  70761 => true,
-  70762 => true,
-  70763 => true,
-  70764 => true,
-  70765 => true,
-  70766 => true,
-  70767 => true,
-  70768 => true,
-  70769 => true,
-  70770 => true,
-  70771 => true,
-  70772 => true,
-  70773 => true,
-  70774 => true,
-  70775 => true,
-  70776 => true,
-  70777 => true,
-  70778 => true,
-  70779 => true,
-  70780 => true,
-  70781 => true,
-  70782 => true,
-  70783 => true,
-  70856 => true,
-  70857 => true,
-  70858 => true,
-  70859 => true,
-  70860 => true,
-  70861 => true,
-  70862 => true,
-  70863 => true,
-  71094 => true,
-  71095 => true,
-  71237 => true,
-  71238 => true,
-  71239 => true,
-  71240 => true,
-  71241 => true,
-  71242 => true,
-  71243 => true,
-  71244 => true,
-  71245 => true,
-  71246 => true,
-  71247 => true,
-  71258 => true,
-  71259 => true,
-  71260 => true,
-  71261 => true,
-  71262 => true,
-  71263 => true,
-  71277 => true,
-  71278 => true,
-  71279 => true,
-  71280 => true,
-  71281 => true,
-  71282 => true,
-  71283 => true,
-  71284 => true,
-  71285 => true,
-  71286 => true,
-  71287 => true,
-  71288 => true,
-  71289 => true,
-  71290 => true,
-  71291 => true,
-  71292 => true,
-  71293 => true,
-  71294 => true,
-  71295 => true,
-  71353 => true,
-  71354 => true,
-  71355 => true,
-  71356 => true,
-  71357 => true,
-  71358 => true,
-  71359 => true,
-  71451 => true,
-  71452 => true,
-  71468 => true,
-  71469 => true,
-  71470 => true,
-  71471 => true,
-  71923 => true,
-  71924 => true,
-  71925 => true,
-  71926 => true,
-  71927 => true,
-  71928 => true,
-  71929 => true,
-  71930 => true,
-  71931 => true,
-  71932 => true,
-  71933 => true,
-  71934 => true,
-  71943 => true,
-  71944 => true,
-  71946 => true,
-  71947 => true,
-  71956 => true,
-  71959 => true,
-  71990 => true,
-  71993 => true,
-  71994 => true,
-  72007 => true,
-  72008 => true,
-  72009 => true,
-  72010 => true,
-  72011 => true,
-  72012 => true,
-  72013 => true,
-  72014 => true,
-  72015 => true,
-  72104 => true,
-  72105 => true,
-  72152 => true,
-  72153 => true,
-  72165 => true,
-  72166 => true,
-  72167 => true,
-  72168 => true,
-  72169 => true,
-  72170 => true,
-  72171 => true,
-  72172 => true,
-  72173 => true,
-  72174 => true,
-  72175 => true,
-  72176 => true,
-  72177 => true,
-  72178 => true,
-  72179 => true,
-  72180 => true,
-  72181 => true,
-  72182 => true,
-  72183 => true,
-  72184 => true,
-  72185 => true,
-  72186 => true,
-  72187 => true,
-  72188 => true,
-  72189 => true,
-  72190 => true,
-  72191 => true,
-  72264 => true,
-  72265 => true,
-  72266 => true,
-  72267 => true,
-  72268 => true,
-  72269 => true,
-  72270 => true,
-  72271 => true,
-  72355 => true,
-  72356 => true,
-  72357 => true,
-  72358 => true,
-  72359 => true,
-  72360 => true,
-  72361 => true,
-  72362 => true,
-  72363 => true,
-  72364 => true,
-  72365 => true,
-  72366 => true,
-  72367 => true,
-  72368 => true,
-  72369 => true,
-  72370 => true,
-  72371 => true,
-  72372 => true,
-  72373 => true,
-  72374 => true,
-  72375 => true,
-  72376 => true,
-  72377 => true,
-  72378 => true,
-  72379 => true,
-  72380 => true,
-  72381 => true,
-  72382 => true,
-  72383 => true,
-  72713 => true,
-  72759 => true,
-  72774 => true,
-  72775 => true,
-  72776 => true,
-  72777 => true,
-  72778 => true,
-  72779 => true,
-  72780 => true,
-  72781 => true,
-  72782 => true,
-  72783 => true,
-  72813 => true,
-  72814 => true,
-  72815 => true,
-  72848 => true,
-  72849 => true,
-  72872 => true,
-  72967 => true,
-  72970 => true,
-  73015 => true,
-  73016 => true,
-  73017 => true,
-  73019 => true,
-  73022 => true,
-  73032 => true,
-  73033 => true,
-  73034 => true,
-  73035 => true,
-  73036 => true,
-  73037 => true,
-  73038 => true,
-  73039 => true,
-  73050 => true,
-  73051 => true,
-  73052 => true,
-  73053 => true,
-  73054 => true,
-  73055 => true,
-  73062 => true,
-  73065 => true,
-  73103 => true,
-  73106 => true,
-  73113 => true,
-  73114 => true,
-  73115 => true,
-  73116 => true,
-  73117 => true,
-  73118 => true,
-  73119 => true,
-  73649 => true,
-  73650 => true,
-  73651 => true,
-  73652 => true,
-  73653 => true,
-  73654 => true,
-  73655 => true,
-  73656 => true,
-  73657 => true,
-  73658 => true,
-  73659 => true,
-  73660 => true,
-  73661 => true,
-  73662 => true,
-  73663 => true,
-  73714 => true,
-  73715 => true,
-  73716 => true,
-  73717 => true,
-  73718 => true,
-  73719 => true,
-  73720 => true,
-  73721 => true,
-  73722 => true,
-  73723 => true,
-  73724 => true,
-  73725 => true,
-  73726 => true,
-  74863 => true,
-  74869 => true,
-  74870 => true,
-  74871 => true,
-  74872 => true,
-  74873 => true,
-  74874 => true,
-  74875 => true,
-  74876 => true,
-  74877 => true,
-  74878 => true,
-  74879 => true,
-  78895 => true,
-  78896 => true,
-  78897 => true,
-  78898 => true,
-  78899 => true,
-  78900 => true,
-  78901 => true,
-  78902 => true,
-  78903 => true,
-  78904 => true,
-  92729 => true,
-  92730 => true,
-  92731 => true,
-  92732 => true,
-  92733 => true,
-  92734 => true,
-  92735 => true,
-  92767 => true,
-  92778 => true,
-  92779 => true,
-  92780 => true,
-  92781 => true,
-  92910 => true,
-  92911 => true,
-  92918 => true,
-  92919 => true,
-  92920 => true,
-  92921 => true,
-  92922 => true,
-  92923 => true,
-  92924 => true,
-  92925 => true,
-  92926 => true,
-  92927 => true,
-  92998 => true,
-  92999 => true,
-  93000 => true,
-  93001 => true,
-  93002 => true,
-  93003 => true,
-  93004 => true,
-  93005 => true,
-  93006 => true,
-  93007 => true,
-  93018 => true,
-  93026 => true,
-  93048 => true,
-  93049 => true,
-  93050 => true,
-  93051 => true,
-  93052 => true,
-  94027 => true,
-  94028 => true,
-  94029 => true,
-  94030 => true,
-  94088 => true,
-  94089 => true,
-  94090 => true,
-  94091 => true,
-  94092 => true,
-  94093 => true,
-  94094 => true,
-  94181 => true,
-  94182 => true,
-  94183 => true,
-  94184 => true,
-  94185 => true,
-  94186 => true,
-  94187 => true,
-  94188 => true,
-  94189 => true,
-  94190 => true,
-  94191 => true,
-  94194 => true,
-  94195 => true,
-  94196 => true,
-  94197 => true,
-  94198 => true,
-  94199 => true,
-  94200 => true,
-  94201 => true,
-  94202 => true,
-  94203 => true,
-  94204 => true,
-  94205 => true,
-  94206 => true,
-  94207 => true,
-  100344 => true,
-  100345 => true,
-  100346 => true,
-  100347 => true,
-  100348 => true,
-  100349 => true,
-  100350 => true,
-  100351 => true,
-  110931 => true,
-  110932 => true,
-  110933 => true,
-  110934 => true,
-  110935 => true,
-  110936 => true,
-  110937 => true,
-  110938 => true,
-  110939 => true,
-  110940 => true,
-  110941 => true,
-  110942 => true,
-  110943 => true,
-  110944 => true,
-  110945 => true,
-  110946 => true,
-  110947 => true,
-  110952 => true,
-  110953 => true,
-  110954 => true,
-  110955 => true,
-  110956 => true,
-  110957 => true,
-  110958 => true,
-  110959 => true,
-  113771 => true,
-  113772 => true,
-  113773 => true,
-  113774 => true,
-  113775 => true,
-  113789 => true,
-  113790 => true,
-  113791 => true,
-  113801 => true,
-  113802 => true,
-  113803 => true,
-  113804 => true,
-  113805 => true,
-  113806 => true,
-  113807 => true,
-  113818 => true,
-  113819 => true,
-  119030 => true,
-  119031 => true,
-  119032 => true,
-  119033 => true,
-  119034 => true,
-  119035 => true,
-  119036 => true,
-  119037 => true,
-  119038 => true,
-  119039 => true,
-  119079 => true,
-  119080 => true,
-  119155 => true,
-  119156 => true,
-  119157 => true,
-  119158 => true,
-  119159 => true,
-  119160 => true,
-  119161 => true,
-  119162 => true,
-  119273 => true,
-  119274 => true,
-  119275 => true,
-  119276 => true,
-  119277 => true,
-  119278 => true,
-  119279 => true,
-  119280 => true,
-  119281 => true,
-  119282 => true,
-  119283 => true,
-  119284 => true,
-  119285 => true,
-  119286 => true,
-  119287 => true,
-  119288 => true,
-  119289 => true,
-  119290 => true,
-  119291 => true,
-  119292 => true,
-  119293 => true,
-  119294 => true,
-  119295 => true,
-  119540 => true,
-  119541 => true,
-  119542 => true,
-  119543 => true,
-  119544 => true,
-  119545 => true,
-  119546 => true,
-  119547 => true,
-  119548 => true,
-  119549 => true,
-  119550 => true,
-  119551 => true,
-  119639 => true,
-  119640 => true,
-  119641 => true,
-  119642 => true,
-  119643 => true,
-  119644 => true,
-  119645 => true,
-  119646 => true,
-  119647 => true,
-  119893 => true,
-  119965 => true,
-  119968 => true,
-  119969 => true,
-  119971 => true,
-  119972 => true,
-  119975 => true,
-  119976 => true,
-  119981 => true,
-  119994 => true,
-  119996 => true,
-  120004 => true,
-  120070 => true,
-  120075 => true,
-  120076 => true,
-  120085 => true,
-  120093 => true,
-  120122 => true,
-  120127 => true,
-  120133 => true,
-  120135 => true,
-  120136 => true,
-  120137 => true,
-  120145 => true,
-  120486 => true,
-  120487 => true,
-  120780 => true,
-  120781 => true,
-  121484 => true,
-  121485 => true,
-  121486 => true,
-  121487 => true,
-  121488 => true,
-  121489 => true,
-  121490 => true,
-  121491 => true,
-  121492 => true,
-  121493 => true,
-  121494 => true,
-  121495 => true,
-  121496 => true,
-  121497 => true,
-  121498 => true,
-  121504 => true,
-  122887 => true,
-  122905 => true,
-  122906 => true,
-  122914 => true,
-  122917 => true,
-  123181 => true,
-  123182 => true,
-  123183 => true,
-  123198 => true,
-  123199 => true,
-  123210 => true,
-  123211 => true,
-  123212 => true,
-  123213 => true,
-  123642 => true,
-  123643 => true,
-  123644 => true,
-  123645 => true,
-  123646 => true,
-  125125 => true,
-  125126 => true,
-  125260 => true,
-  125261 => true,
-  125262 => true,
-  125263 => true,
-  125274 => true,
-  125275 => true,
-  125276 => true,
-  125277 => true,
-  126468 => true,
-  126496 => true,
-  126499 => true,
-  126501 => true,
-  126502 => true,
-  126504 => true,
-  126515 => true,
-  126520 => true,
-  126522 => true,
-  126524 => true,
-  126525 => true,
-  126526 => true,
-  126527 => true,
-  126528 => true,
-  126529 => true,
-  126531 => true,
-  126532 => true,
-  126533 => true,
-  126534 => true,
-  126536 => true,
-  126538 => true,
-  126540 => true,
-  126544 => true,
-  126547 => true,
-  126549 => true,
-  126550 => true,
-  126552 => true,
-  126554 => true,
-  126556 => true,
-  126558 => true,
-  126560 => true,
-  126563 => true,
-  126565 => true,
-  126566 => true,
-  126571 => true,
-  126579 => true,
-  126584 => true,
-  126589 => true,
-  126591 => true,
-  126602 => true,
-  126620 => true,
-  126621 => true,
-  126622 => true,
-  126623 => true,
-  126624 => true,
-  126628 => true,
-  126634 => true,
-  127020 => true,
-  127021 => true,
-  127022 => true,
-  127023 => true,
-  127124 => true,
-  127125 => true,
-  127126 => true,
-  127127 => true,
-  127128 => true,
-  127129 => true,
-  127130 => true,
-  127131 => true,
-  127132 => true,
-  127133 => true,
-  127134 => true,
-  127135 => true,
-  127151 => true,
-  127152 => true,
-  127168 => true,
-  127184 => true,
-  127222 => true,
-  127223 => true,
-  127224 => true,
-  127225 => true,
-  127226 => true,
-  127227 => true,
-  127228 => true,
-  127229 => true,
-  127230 => true,
-  127231 => true,
-  127232 => true,
-  127491 => true,
-  127492 => true,
-  127493 => true,
-  127494 => true,
-  127495 => true,
-  127496 => true,
-  127497 => true,
-  127498 => true,
-  127499 => true,
-  127500 => true,
-  127501 => true,
-  127502 => true,
-  127503 => true,
-  127548 => true,
-  127549 => true,
-  127550 => true,
-  127551 => true,
-  127561 => true,
-  127562 => true,
-  127563 => true,
-  127564 => true,
-  127565 => true,
-  127566 => true,
-  127567 => true,
-  127570 => true,
-  127571 => true,
-  127572 => true,
-  127573 => true,
-  127574 => true,
-  127575 => true,
-  127576 => true,
-  127577 => true,
-  127578 => true,
-  127579 => true,
-  127580 => true,
-  127581 => true,
-  127582 => true,
-  127583 => true,
-  128728 => true,
-  128729 => true,
-  128730 => true,
-  128731 => true,
-  128732 => true,
-  128733 => true,
-  128734 => true,
-  128735 => true,
-  128749 => true,
-  128750 => true,
-  128751 => true,
-  128765 => true,
-  128766 => true,
-  128767 => true,
-  128884 => true,
-  128885 => true,
-  128886 => true,
-  128887 => true,
-  128888 => true,
-  128889 => true,
-  128890 => true,
-  128891 => true,
-  128892 => true,
-  128893 => true,
-  128894 => true,
-  128895 => true,
-  128985 => true,
-  128986 => true,
-  128987 => true,
-  128988 => true,
-  128989 => true,
-  128990 => true,
-  128991 => true,
-  129004 => true,
-  129005 => true,
-  129006 => true,
-  129007 => true,
-  129008 => true,
-  129009 => true,
-  129010 => true,
-  129011 => true,
-  129012 => true,
-  129013 => true,
-  129014 => true,
-  129015 => true,
-  129016 => true,
-  129017 => true,
-  129018 => true,
-  129019 => true,
-  129020 => true,
-  129021 => true,
-  129022 => true,
-  129023 => true,
-  129036 => true,
-  129037 => true,
-  129038 => true,
-  129039 => true,
-  129096 => true,
-  129097 => true,
-  129098 => true,
-  129099 => true,
-  129100 => true,
-  129101 => true,
-  129102 => true,
-  129103 => true,
-  129114 => true,
-  129115 => true,
-  129116 => true,
-  129117 => true,
-  129118 => true,
-  129119 => true,
-  129160 => true,
-  129161 => true,
-  129162 => true,
-  129163 => true,
-  129164 => true,
-  129165 => true,
-  129166 => true,
-  129167 => true,
-  129198 => true,
-  129199 => true,
-  129401 => true,
-  129484 => true,
-  129620 => true,
-  129621 => true,
-  129622 => true,
-  129623 => true,
-  129624 => true,
-  129625 => true,
-  129626 => true,
-  129627 => true,
-  129628 => true,
-  129629 => true,
-  129630 => true,
-  129631 => true,
-  129646 => true,
-  129647 => true,
-  129653 => true,
-  129654 => true,
-  129655 => true,
-  129659 => true,
-  129660 => true,
-  129661 => true,
-  129662 => true,
-  129663 => true,
-  129671 => true,
-  129672 => true,
-  129673 => true,
-  129674 => true,
-  129675 => true,
-  129676 => true,
-  129677 => true,
-  129678 => true,
-  129679 => true,
-  129705 => true,
-  129706 => true,
-  129707 => true,
-  129708 => true,
-  129709 => true,
-  129710 => true,
-  129711 => true,
-  129719 => true,
-  129720 => true,
-  129721 => true,
-  129722 => true,
-  129723 => true,
-  129724 => true,
-  129725 => true,
-  129726 => true,
-  129727 => true,
-  129731 => true,
-  129732 => true,
-  129733 => true,
-  129734 => true,
-  129735 => true,
-  129736 => true,
-  129737 => true,
-  129738 => true,
-  129739 => true,
-  129740 => true,
-  129741 => true,
-  129742 => true,
-  129743 => true,
-  129939 => true,
-  131070 => true,
-  131071 => true,
-  177973 => true,
-  177974 => true,
-  177975 => true,
-  177976 => true,
-  177977 => true,
-  177978 => true,
-  177979 => true,
-  177980 => true,
-  177981 => true,
-  177982 => true,
-  177983 => true,
-  178206 => true,
-  178207 => true,
-  183970 => true,
-  183971 => true,
-  183972 => true,
-  183973 => true,
-  183974 => true,
-  183975 => true,
-  183976 => true,
-  183977 => true,
-  183978 => true,
-  183979 => true,
-  183980 => true,
-  183981 => true,
-  183982 => true,
-  183983 => true,
-  194664 => true,
-  194676 => true,
-  194847 => true,
-  194911 => true,
-  195007 => true,
-  196606 => true,
-  196607 => true,
-  262142 => true,
-  262143 => true,
-  327678 => true,
-  327679 => true,
-  393214 => true,
-  393215 => true,
-  458750 => true,
-  458751 => true,
-  524286 => true,
-  524287 => true,
-  589822 => true,
-  589823 => true,
-  655358 => true,
-  655359 => true,
-  720894 => true,
-  720895 => true,
-  786430 => true,
-  786431 => true,
-  851966 => true,
-  851967 => true,
-  917502 => true,
-  917503 => true,
-  917504 => true,
-  917505 => true,
-  917506 => true,
-  917507 => true,
-  917508 => true,
-  917509 => true,
-  917510 => true,
-  917511 => true,
-  917512 => true,
-  917513 => true,
-  917514 => true,
-  917515 => true,
-  917516 => true,
-  917517 => true,
-  917518 => true,
-  917519 => true,
-  917520 => true,
-  917521 => true,
-  917522 => true,
-  917523 => true,
-  917524 => true,
-  917525 => true,
-  917526 => true,
-  917527 => true,
-  917528 => true,
-  917529 => true,
-  917530 => true,
-  917531 => true,
-  917532 => true,
-  917533 => true,
-  917534 => true,
-  917535 => true,
-  983038 => true,
-  983039 => true,
-  1048574 => true,
-  1048575 => true,
-  1114110 => true,
-  1114111 => true,
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php
deleted file mode 100644
index 54f21cc0cdd646c46f98c4e6feb7fe5ee8fec79a..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php
+++ /dev/null
@@ -1,308 +0,0 @@
-<?php
-
-return array (
-  160 => ' ',
-  168 => ' ̈',
-  175 => ' Ì„',
-  180 => ' ́',
-  184 => ' ̧',
-  728 => ' ̆',
-  729 => ' ̇',
-  730 => ' ÌŠ',
-  731 => ' ̨',
-  732 => ' ̃',
-  733 => ' Ì‹',
-  890 => ' ι',
-  894 => ';',
-  900 => ' ́',
-  901 => ' ̈́',
-  8125 => ' Ì“',
-  8127 => ' Ì“',
-  8128 => ' Í‚',
-  8129 => ' ̈͂',
-  8141 => ' ̓̀',
-  8142 => ' ̓́',
-  8143 => ' ̓͂',
-  8157 => ' ̔̀',
-  8158 => ' ̔́',
-  8159 => ' ̔͂',
-  8173 => ' ̈̀',
-  8174 => ' ̈́',
-  8175 => '`',
-  8189 => ' ́',
-  8190 => ' Ì”',
-  8192 => ' ',
-  8193 => ' ',
-  8194 => ' ',
-  8195 => ' ',
-  8196 => ' ',
-  8197 => ' ',
-  8198 => ' ',
-  8199 => ' ',
-  8200 => ' ',
-  8201 => ' ',
-  8202 => ' ',
-  8215 => ' ̳',
-  8239 => ' ',
-  8252 => '!!',
-  8254 => ' Ì…',
-  8263 => '??',
-  8264 => '?!',
-  8265 => '!?',
-  8287 => ' ',
-  8314 => '+',
-  8316 => '=',
-  8317 => '(',
-  8318 => ')',
-  8330 => '+',
-  8332 => '=',
-  8333 => '(',
-  8334 => ')',
-  8448 => 'a/c',
-  8449 => 'a/s',
-  8453 => 'c/o',
-  8454 => 'c/u',
-  9332 => '(1)',
-  9333 => '(2)',
-  9334 => '(3)',
-  9335 => '(4)',
-  9336 => '(5)',
-  9337 => '(6)',
-  9338 => '(7)',
-  9339 => '(8)',
-  9340 => '(9)',
-  9341 => '(10)',
-  9342 => '(11)',
-  9343 => '(12)',
-  9344 => '(13)',
-  9345 => '(14)',
-  9346 => '(15)',
-  9347 => '(16)',
-  9348 => '(17)',
-  9349 => '(18)',
-  9350 => '(19)',
-  9351 => '(20)',
-  9372 => '(a)',
-  9373 => '(b)',
-  9374 => '(c)',
-  9375 => '(d)',
-  9376 => '(e)',
-  9377 => '(f)',
-  9378 => '(g)',
-  9379 => '(h)',
-  9380 => '(i)',
-  9381 => '(j)',
-  9382 => '(k)',
-  9383 => '(l)',
-  9384 => '(m)',
-  9385 => '(n)',
-  9386 => '(o)',
-  9387 => '(p)',
-  9388 => '(q)',
-  9389 => '(r)',
-  9390 => '(s)',
-  9391 => '(t)',
-  9392 => '(u)',
-  9393 => '(v)',
-  9394 => '(w)',
-  9395 => '(x)',
-  9396 => '(y)',
-  9397 => '(z)',
-  10868 => '::=',
-  10869 => '==',
-  10870 => '===',
-  12288 => ' ',
-  12443 => ' ã‚™',
-  12444 => ' ゚',
-  12800 => '(á„€)',
-  12801 => '(á„‚)',
-  12802 => '(ᄃ)',
-  12803 => '(á„…)',
-  12804 => '(ᄆ)',
-  12805 => '(ᄇ)',
-  12806 => '(ᄉ)',
-  12807 => '(á„‹)',
-  12808 => '(ᄌ)',
-  12809 => '(ᄎ)',
-  12810 => '(ᄏ)',
-  12811 => '(ᄐ)',
-  12812 => '(á„‘)',
-  12813 => '(á„’)',
-  12814 => '(ê°€)',
-  12815 => '(나)',
-  12816 => '(다)',
-  12817 => '(라)',
-  12818 => '(마)',
-  12819 => '(ë°”)',
-  12820 => '(사)',
-  12821 => '(ì•„)',
-  12822 => '(자)',
-  12823 => '(ì°¨)',
-  12824 => '(ì¹´)',
-  12825 => '(타)',
-  12826 => '(파)',
-  12827 => '(하)',
-  12828 => '(주)',
-  12829 => '(오전)',
-  12830 => '(오후)',
-  12832 => '(一)',
-  12833 => '(二)',
-  12834 => '(三)',
-  12835 => '(å››)',
-  12836 => '(五)',
-  12837 => '(å…­)',
-  12838 => '(七)',
-  12839 => '(å…«)',
-  12840 => '(九)',
-  12841 => '(十)',
-  12842 => '(月)',
-  12843 => '(火)',
-  12844 => '(æ°´)',
-  12845 => '(木)',
-  12846 => '(金)',
-  12847 => '(土)',
-  12848 => '(æ—¥)',
-  12849 => '(æ ª)',
-  12850 => '(有)',
-  12851 => '(社)',
-  12852 => '(名)',
-  12853 => '(特)',
-  12854 => '(財)',
-  12855 => '(祝)',
-  12856 => '(労)',
-  12857 => '(代)',
-  12858 => '(呼)',
-  12859 => '(å­¦)',
-  12860 => '(監)',
-  12861 => '(企)',
-  12862 => '(資)',
-  12863 => '(協)',
-  12864 => '(祭)',
-  12865 => '(休)',
-  12866 => '(自)',
-  12867 => '(至)',
-  64297 => '+',
-  64606 => ' ٌّ',
-  64607 => ' ٍّ',
-  64608 => ' ÙŽÙ‘',
-  64609 => ' ُّ',
-  64610 => ' ِّ',
-  64611 => ' ّٰ',
-  65018 => 'صلى الله عليه وسلم',
-  65019 => 'جل جلاله',
-  65040 => ',',
-  65043 => ':',
-  65044 => ';',
-  65045 => '!',
-  65046 => '?',
-  65075 => '_',
-  65076 => '_',
-  65077 => '(',
-  65078 => ')',
-  65079 => '{',
-  65080 => '}',
-  65095 => '[',
-  65096 => ']',
-  65097 => ' Ì…',
-  65098 => ' Ì…',
-  65099 => ' Ì…',
-  65100 => ' Ì…',
-  65101 => '_',
-  65102 => '_',
-  65103 => '_',
-  65104 => ',',
-  65108 => ';',
-  65109 => ':',
-  65110 => '?',
-  65111 => '!',
-  65113 => '(',
-  65114 => ')',
-  65115 => '{',
-  65116 => '}',
-  65119 => '#',
-  65120 => '&',
-  65121 => '*',
-  65122 => '+',
-  65124 => '<',
-  65125 => '>',
-  65126 => '=',
-  65128 => '\\',
-  65129 => '$',
-  65130 => '%',
-  65131 => '@',
-  65136 => ' Ù‹',
-  65138 => ' ٌ',
-  65140 => ' ٍ',
-  65142 => ' ÙŽ',
-  65144 => ' ُ',
-  65146 => ' ِ',
-  65148 => ' Ù‘',
-  65150 => ' Ù’',
-  65281 => '!',
-  65282 => '"',
-  65283 => '#',
-  65284 => '$',
-  65285 => '%',
-  65286 => '&',
-  65287 => '\'',
-  65288 => '(',
-  65289 => ')',
-  65290 => '*',
-  65291 => '+',
-  65292 => ',',
-  65295 => '/',
-  65306 => ':',
-  65307 => ';',
-  65308 => '<',
-  65309 => '=',
-  65310 => '>',
-  65311 => '?',
-  65312 => '@',
-  65339 => '[',
-  65340 => '\\',
-  65341 => ']',
-  65342 => '^',
-  65343 => '_',
-  65344 => '`',
-  65371 => '{',
-  65372 => '|',
-  65373 => '}',
-  65374 => '~',
-  65507 => ' Ì„',
-  127233 => '0,',
-  127234 => '1,',
-  127235 => '2,',
-  127236 => '3,',
-  127237 => '4,',
-  127238 => '5,',
-  127239 => '6,',
-  127240 => '7,',
-  127241 => '8,',
-  127242 => '9,',
-  127248 => '(a)',
-  127249 => '(b)',
-  127250 => '(c)',
-  127251 => '(d)',
-  127252 => '(e)',
-  127253 => '(f)',
-  127254 => '(g)',
-  127255 => '(h)',
-  127256 => '(i)',
-  127257 => '(j)',
-  127258 => '(k)',
-  127259 => '(l)',
-  127260 => '(m)',
-  127261 => '(n)',
-  127262 => '(o)',
-  127263 => '(p)',
-  127264 => '(q)',
-  127265 => '(r)',
-  127266 => '(s)',
-  127267 => '(t)',
-  127268 => '(u)',
-  127269 => '(v)',
-  127270 => '(w)',
-  127271 => '(x)',
-  127272 => '(y)',
-  127273 => '(z)',
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php
deleted file mode 100644
index 223396ec4c32ec588781a35ff89213b908858427..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-return array (
-  0 => true,
-  1 => true,
-  2 => true,
-  3 => true,
-  4 => true,
-  5 => true,
-  6 => true,
-  7 => true,
-  8 => true,
-  9 => true,
-  10 => true,
-  11 => true,
-  12 => true,
-  13 => true,
-  14 => true,
-  15 => true,
-  16 => true,
-  17 => true,
-  18 => true,
-  19 => true,
-  20 => true,
-  21 => true,
-  22 => true,
-  23 => true,
-  24 => true,
-  25 => true,
-  26 => true,
-  27 => true,
-  28 => true,
-  29 => true,
-  30 => true,
-  31 => true,
-  32 => true,
-  33 => true,
-  34 => true,
-  35 => true,
-  36 => true,
-  37 => true,
-  38 => true,
-  39 => true,
-  40 => true,
-  41 => true,
-  42 => true,
-  43 => true,
-  44 => true,
-  47 => true,
-  58 => true,
-  59 => true,
-  60 => true,
-  61 => true,
-  62 => true,
-  63 => true,
-  64 => true,
-  91 => true,
-  92 => true,
-  93 => true,
-  94 => true,
-  95 => true,
-  96 => true,
-  123 => true,
-  124 => true,
-  125 => true,
-  126 => true,
-  127 => true,
-  8800 => true,
-  8814 => true,
-  8815 => true,
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php
deleted file mode 100644
index b377844130e7aec1096c5af63fe29455b2df0ad5..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php
+++ /dev/null
@@ -1,273 +0,0 @@
-<?php
-
-return array (
-  173 => true,
-  847 => true,
-  6155 => true,
-  6156 => true,
-  6157 => true,
-  8203 => true,
-  8288 => true,
-  8292 => true,
-  65024 => true,
-  65025 => true,
-  65026 => true,
-  65027 => true,
-  65028 => true,
-  65029 => true,
-  65030 => true,
-  65031 => true,
-  65032 => true,
-  65033 => true,
-  65034 => true,
-  65035 => true,
-  65036 => true,
-  65037 => true,
-  65038 => true,
-  65039 => true,
-  65279 => true,
-  113824 => true,
-  113825 => true,
-  113826 => true,
-  113827 => true,
-  917760 => true,
-  917761 => true,
-  917762 => true,
-  917763 => true,
-  917764 => true,
-  917765 => true,
-  917766 => true,
-  917767 => true,
-  917768 => true,
-  917769 => true,
-  917770 => true,
-  917771 => true,
-  917772 => true,
-  917773 => true,
-  917774 => true,
-  917775 => true,
-  917776 => true,
-  917777 => true,
-  917778 => true,
-  917779 => true,
-  917780 => true,
-  917781 => true,
-  917782 => true,
-  917783 => true,
-  917784 => true,
-  917785 => true,
-  917786 => true,
-  917787 => true,
-  917788 => true,
-  917789 => true,
-  917790 => true,
-  917791 => true,
-  917792 => true,
-  917793 => true,
-  917794 => true,
-  917795 => true,
-  917796 => true,
-  917797 => true,
-  917798 => true,
-  917799 => true,
-  917800 => true,
-  917801 => true,
-  917802 => true,
-  917803 => true,
-  917804 => true,
-  917805 => true,
-  917806 => true,
-  917807 => true,
-  917808 => true,
-  917809 => true,
-  917810 => true,
-  917811 => true,
-  917812 => true,
-  917813 => true,
-  917814 => true,
-  917815 => true,
-  917816 => true,
-  917817 => true,
-  917818 => true,
-  917819 => true,
-  917820 => true,
-  917821 => true,
-  917822 => true,
-  917823 => true,
-  917824 => true,
-  917825 => true,
-  917826 => true,
-  917827 => true,
-  917828 => true,
-  917829 => true,
-  917830 => true,
-  917831 => true,
-  917832 => true,
-  917833 => true,
-  917834 => true,
-  917835 => true,
-  917836 => true,
-  917837 => true,
-  917838 => true,
-  917839 => true,
-  917840 => true,
-  917841 => true,
-  917842 => true,
-  917843 => true,
-  917844 => true,
-  917845 => true,
-  917846 => true,
-  917847 => true,
-  917848 => true,
-  917849 => true,
-  917850 => true,
-  917851 => true,
-  917852 => true,
-  917853 => true,
-  917854 => true,
-  917855 => true,
-  917856 => true,
-  917857 => true,
-  917858 => true,
-  917859 => true,
-  917860 => true,
-  917861 => true,
-  917862 => true,
-  917863 => true,
-  917864 => true,
-  917865 => true,
-  917866 => true,
-  917867 => true,
-  917868 => true,
-  917869 => true,
-  917870 => true,
-  917871 => true,
-  917872 => true,
-  917873 => true,
-  917874 => true,
-  917875 => true,
-  917876 => true,
-  917877 => true,
-  917878 => true,
-  917879 => true,
-  917880 => true,
-  917881 => true,
-  917882 => true,
-  917883 => true,
-  917884 => true,
-  917885 => true,
-  917886 => true,
-  917887 => true,
-  917888 => true,
-  917889 => true,
-  917890 => true,
-  917891 => true,
-  917892 => true,
-  917893 => true,
-  917894 => true,
-  917895 => true,
-  917896 => true,
-  917897 => true,
-  917898 => true,
-  917899 => true,
-  917900 => true,
-  917901 => true,
-  917902 => true,
-  917903 => true,
-  917904 => true,
-  917905 => true,
-  917906 => true,
-  917907 => true,
-  917908 => true,
-  917909 => true,
-  917910 => true,
-  917911 => true,
-  917912 => true,
-  917913 => true,
-  917914 => true,
-  917915 => true,
-  917916 => true,
-  917917 => true,
-  917918 => true,
-  917919 => true,
-  917920 => true,
-  917921 => true,
-  917922 => true,
-  917923 => true,
-  917924 => true,
-  917925 => true,
-  917926 => true,
-  917927 => true,
-  917928 => true,
-  917929 => true,
-  917930 => true,
-  917931 => true,
-  917932 => true,
-  917933 => true,
-  917934 => true,
-  917935 => true,
-  917936 => true,
-  917937 => true,
-  917938 => true,
-  917939 => true,
-  917940 => true,
-  917941 => true,
-  917942 => true,
-  917943 => true,
-  917944 => true,
-  917945 => true,
-  917946 => true,
-  917947 => true,
-  917948 => true,
-  917949 => true,
-  917950 => true,
-  917951 => true,
-  917952 => true,
-  917953 => true,
-  917954 => true,
-  917955 => true,
-  917956 => true,
-  917957 => true,
-  917958 => true,
-  917959 => true,
-  917960 => true,
-  917961 => true,
-  917962 => true,
-  917963 => true,
-  917964 => true,
-  917965 => true,
-  917966 => true,
-  917967 => true,
-  917968 => true,
-  917969 => true,
-  917970 => true,
-  917971 => true,
-  917972 => true,
-  917973 => true,
-  917974 => true,
-  917975 => true,
-  917976 => true,
-  917977 => true,
-  917978 => true,
-  917979 => true,
-  917980 => true,
-  917981 => true,
-  917982 => true,
-  917983 => true,
-  917984 => true,
-  917985 => true,
-  917986 => true,
-  917987 => true,
-  917988 => true,
-  917989 => true,
-  917990 => true,
-  917991 => true,
-  917992 => true,
-  917993 => true,
-  917994 => true,
-  917995 => true,
-  917996 => true,
-  917997 => true,
-  917998 => true,
-  917999 => true,
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php
deleted file mode 100644
index 9b85fe9d3f8d3d31672d71d0b70a434fa2ec3c31..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php
+++ /dev/null
@@ -1,5778 +0,0 @@
-<?php
-
-return array (
-  65 => 'a',
-  66 => 'b',
-  67 => 'c',
-  68 => 'd',
-  69 => 'e',
-  70 => 'f',
-  71 => 'g',
-  72 => 'h',
-  73 => 'i',
-  74 => 'j',
-  75 => 'k',
-  76 => 'l',
-  77 => 'm',
-  78 => 'n',
-  79 => 'o',
-  80 => 'p',
-  81 => 'q',
-  82 => 'r',
-  83 => 's',
-  84 => 't',
-  85 => 'u',
-  86 => 'v',
-  87 => 'w',
-  88 => 'x',
-  89 => 'y',
-  90 => 'z',
-  170 => 'a',
-  178 => '2',
-  179 => '3',
-  181 => 'μ',
-  185 => '1',
-  186 => 'o',
-  188 => '1⁄4',
-  189 => '1⁄2',
-  190 => '3⁄4',
-  192 => 'à',
-  193 => 'á',
-  194 => 'â',
-  195 => 'ã',
-  196 => 'ä',
-  197 => 'Ã¥',
-  198 => 'æ',
-  199 => 'ç',
-  200 => 'è',
-  201 => 'é',
-  202 => 'ê',
-  203 => 'ë',
-  204 => 'ì',
-  205 => 'í',
-  206 => 'î',
-  207 => 'ï',
-  208 => 'ð',
-  209 => 'ñ',
-  210 => 'ò',
-  211 => 'ó',
-  212 => 'ô',
-  213 => 'õ',
-  214 => 'ö',
-  216 => 'ø',
-  217 => 'ù',
-  218 => 'ú',
-  219 => 'û',
-  220 => 'ü',
-  221 => 'ý',
-  222 => 'þ',
-  256 => 'ā',
-  258 => 'ă',
-  260 => 'Ä…',
-  262 => 'ć',
-  264 => 'ĉ',
-  266 => 'Ä‹',
-  268 => 'č',
-  270 => 'ď',
-  272 => 'Ä‘',
-  274 => 'Ä“',
-  276 => 'Ä•',
-  278 => 'Ä—',
-  280 => 'Ä™',
-  282 => 'Ä›',
-  284 => 'ĝ',
-  286 => 'ÄŸ',
-  288 => 'Ä¡',
-  290 => 'Ä£',
-  292 => 'Ä¥',
-  294 => 'ħ',
-  296 => 'Ä©',
-  298 => 'Ä«',
-  300 => 'Ä­',
-  302 => 'į',
-  304 => 'i̇',
-  306 => 'ij',
-  307 => 'ij',
-  308 => 'ĵ',
-  310 => 'Ä·',
-  313 => 'ĺ',
-  315 => 'ļ',
-  317 => 'ľ',
-  319 => 'l·',
-  320 => 'l·',
-  321 => 'Å‚',
-  323 => 'Å„',
-  325 => 'ņ',
-  327 => 'ň',
-  329 => 'ʼn',
-  330 => 'Å‹',
-  332 => 'ō',
-  334 => 'ŏ',
-  336 => 'Å‘',
-  338 => 'Å“',
-  340 => 'Å•',
-  342 => 'Å—',
-  344 => 'Å™',
-  346 => 'Å›',
-  348 => 'ŝ',
-  350 => 'ÅŸ',
-  352 => 'Å¡',
-  354 => 'Å£',
-  356 => 'Å¥',
-  358 => 'ŧ',
-  360 => 'Å©',
-  362 => 'Å«',
-  364 => 'Å­',
-  366 => 'ů',
-  368 => 'ű',
-  370 => 'ų',
-  372 => 'ŵ',
-  374 => 'Å·',
-  376 => 'ÿ',
-  377 => 'ź',
-  379 => 'ż',
-  381 => 'ž',
-  383 => 's',
-  385 => 'É“',
-  386 => 'ƃ',
-  388 => 'Æ…',
-  390 => 'É”',
-  391 => 'ƈ',
-  393 => 'É–',
-  394 => 'É—',
-  395 => 'ƌ',
-  398 => 'ǝ',
-  399 => 'É™',
-  400 => 'É›',
-  401 => 'Æ’',
-  403 => 'É ',
-  404 => 'É£',
-  406 => 'É©',
-  407 => 'ɨ',
-  408 => 'Æ™',
-  412 => 'ɯ',
-  413 => 'ɲ',
-  415 => 'ɵ',
-  416 => 'Æ¡',
-  418 => 'Æ£',
-  420 => 'Æ¥',
-  422 => 'Ê€',
-  423 => 'ƨ',
-  425 => 'ʃ',
-  428 => 'Æ­',
-  430 => 'ʈ',
-  431 => 'ư',
-  433 => 'ÊŠ',
-  434 => 'Ê‹',
-  435 => 'Æ´',
-  437 => 'ƶ',
-  439 => 'Ê’',
-  440 => 'ƹ',
-  444 => 'ƽ',
-  452 => 'dž',
-  453 => 'dž',
-  454 => 'dž',
-  455 => 'lj',
-  456 => 'lj',
-  457 => 'lj',
-  458 => 'nj',
-  459 => 'nj',
-  460 => 'nj',
-  461 => 'ÇŽ',
-  463 => 'ǐ',
-  465 => 'Ç’',
-  467 => 'Ç”',
-  469 => 'Ç–',
-  471 => 'ǘ',
-  473 => 'Çš',
-  475 => 'ǜ',
-  478 => 'ÇŸ',
-  480 => 'Ç¡',
-  482 => 'Ç£',
-  484 => 'Ç¥',
-  486 => 'ǧ',
-  488 => 'Ç©',
-  490 => 'Ç«',
-  492 => 'Ç­',
-  494 => 'ǯ',
-  497 => 'dz',
-  498 => 'dz',
-  499 => 'dz',
-  500 => 'ǵ',
-  502 => 'Æ•',
-  503 => 'Æ¿',
-  504 => 'ǹ',
-  506 => 'Ç»',
-  508 => 'ǽ',
-  510 => 'Ç¿',
-  512 => 'ȁ',
-  514 => 'ȃ',
-  516 => 'È…',
-  518 => 'ȇ',
-  520 => 'ȉ',
-  522 => 'È‹',
-  524 => 'ȍ',
-  526 => 'ȏ',
-  528 => 'È‘',
-  530 => 'È“',
-  532 => 'È•',
-  534 => 'È—',
-  536 => 'È™',
-  538 => 'È›',
-  540 => 'ȝ',
-  542 => 'ÈŸ',
-  544 => 'Æž',
-  546 => 'È£',
-  548 => 'È¥',
-  550 => 'ȧ',
-  552 => 'È©',
-  554 => 'È«',
-  556 => 'È­',
-  558 => 'ȯ',
-  560 => 'ȱ',
-  562 => 'ȳ',
-  570 => 'â±¥',
-  571 => 'ȼ',
-  573 => 'Æš',
-  574 => 'ⱦ',
-  577 => 'É‚',
-  579 => 'Æ€',
-  580 => 'ʉ',
-  581 => 'ʌ',
-  582 => 'ɇ',
-  584 => 'ɉ',
-  586 => 'É‹',
-  588 => 'ɍ',
-  590 => 'ɏ',
-  688 => 'h',
-  689 => 'ɦ',
-  690 => 'j',
-  691 => 'r',
-  692 => 'ɹ',
-  693 => 'É»',
-  694 => 'ʁ',
-  695 => 'w',
-  696 => 'y',
-  736 => 'É£',
-  737 => 'l',
-  738 => 's',
-  739 => 'x',
-  740 => 'Ê•',
-  832 => 'Ì€',
-  833 => '́',
-  835 => 'Ì“',
-  836 => '̈́',
-  837 => 'ι',
-  880 => 'ͱ',
-  882 => 'ͳ',
-  884 => 'ʹ',
-  886 => 'Í·',
-  895 => 'ϳ',
-  902 => 'ά',
-  903 => '·',
-  904 => 'έ',
-  905 => 'ή',
-  906 => 'ί',
-  908 => 'ό',
-  910 => 'ύ',
-  911 => 'ÏŽ',
-  913 => 'α',
-  914 => 'β',
-  915 => 'γ',
-  916 => 'δ',
-  917 => 'ε',
-  918 => 'ζ',
-  919 => 'η',
-  920 => 'θ',
-  921 => 'ι',
-  922 => 'κ',
-  923 => 'λ',
-  924 => 'μ',
-  925 => 'ν',
-  926 => 'ξ',
-  927 => 'ο',
-  928 => 'Ï€',
-  929 => 'ρ',
-  931 => 'σ',
-  932 => 'Ï„',
-  933 => 'Ï…',
-  934 => 'φ',
-  935 => 'χ',
-  936 => 'ψ',
-  937 => 'ω',
-  938 => 'ÏŠ',
-  939 => 'Ï‹',
-  975 => 'Ï—',
-  976 => 'β',
-  977 => 'θ',
-  978 => 'Ï…',
-  979 => 'ύ',
-  980 => 'Ï‹',
-  981 => 'φ',
-  982 => 'Ï€',
-  984 => 'Ï™',
-  986 => 'Ï›',
-  988 => 'ϝ',
-  990 => 'ÏŸ',
-  992 => 'Ï¡',
-  994 => 'Ï£',
-  996 => 'Ï¥',
-  998 => 'ϧ',
-  1000 => 'Ï©',
-  1002 => 'Ï«',
-  1004 => 'Ï­',
-  1006 => 'ϯ',
-  1008 => 'κ',
-  1009 => 'ρ',
-  1010 => 'σ',
-  1012 => 'θ',
-  1013 => 'ε',
-  1015 => 'ϸ',
-  1017 => 'σ',
-  1018 => 'Ï»',
-  1021 => 'Í»',
-  1022 => 'ͼ',
-  1023 => 'ͽ',
-  1024 => 'ѐ',
-  1025 => 'Ñ‘',
-  1026 => 'Ñ’',
-  1027 => 'Ñ“',
-  1028 => 'Ñ”',
-  1029 => 'Ñ•',
-  1030 => 'Ñ–',
-  1031 => 'Ñ—',
-  1032 => 'ј',
-  1033 => 'Ñ™',
-  1034 => 'Ñš',
-  1035 => 'Ñ›',
-  1036 => 'ќ',
-  1037 => 'ѝ',
-  1038 => 'Ñž',
-  1039 => 'ÑŸ',
-  1040 => 'а',
-  1041 => 'б',
-  1042 => 'в',
-  1043 => 'г',
-  1044 => 'д',
-  1045 => 'е',
-  1046 => 'ж',
-  1047 => 'з',
-  1048 => 'и',
-  1049 => 'й',
-  1050 => 'к',
-  1051 => 'л',
-  1052 => 'м',
-  1053 => 'н',
-  1054 => 'о',
-  1055 => 'п',
-  1056 => 'Ñ€',
-  1057 => 'с',
-  1058 => 'Ñ‚',
-  1059 => 'у',
-  1060 => 'Ñ„',
-  1061 => 'Ñ…',
-  1062 => 'ц',
-  1063 => 'ч',
-  1064 => 'ш',
-  1065 => 'щ',
-  1066 => 'ÑŠ',
-  1067 => 'Ñ‹',
-  1068 => 'ь',
-  1069 => 'э',
-  1070 => 'ÑŽ',
-  1071 => 'я',
-  1120 => 'Ñ¡',
-  1122 => 'Ñ£',
-  1124 => 'Ñ¥',
-  1126 => 'ѧ',
-  1128 => 'Ñ©',
-  1130 => 'Ñ«',
-  1132 => 'Ñ­',
-  1134 => 'ѯ',
-  1136 => 'ѱ',
-  1138 => 'ѳ',
-  1140 => 'ѵ',
-  1142 => 'Ñ·',
-  1144 => 'ѹ',
-  1146 => 'Ñ»',
-  1148 => 'ѽ',
-  1150 => 'Ñ¿',
-  1152 => 'ҁ',
-  1162 => 'Ò‹',
-  1164 => 'ҍ',
-  1166 => 'ҏ',
-  1168 => 'Ò‘',
-  1170 => 'Ò“',
-  1172 => 'Ò•',
-  1174 => 'Ò—',
-  1176 => 'Ò™',
-  1178 => 'Ò›',
-  1180 => 'ҝ',
-  1182 => 'ÒŸ',
-  1184 => 'Ò¡',
-  1186 => 'Ò£',
-  1188 => 'Ò¥',
-  1190 => 'Ò§',
-  1192 => 'Ò©',
-  1194 => 'Ò«',
-  1196 => 'Ò­',
-  1198 => 'Ò¯',
-  1200 => 'Ò±',
-  1202 => 'Ò³',
-  1204 => 'Òµ',
-  1206 => 'Ò·',
-  1208 => 'Ò¹',
-  1210 => 'Ò»',
-  1212 => 'Ò½',
-  1214 => 'Ò¿',
-  1217 => 'Ó‚',
-  1219 => 'Ó„',
-  1221 => 'Ó†',
-  1223 => 'Óˆ',
-  1225 => 'ÓŠ',
-  1227 => 'ӌ',
-  1229 => 'ÓŽ',
-  1232 => 'Ó‘',
-  1234 => 'Ó“',
-  1236 => 'Ó•',
-  1238 => 'Ó—',
-  1240 => 'Ó™',
-  1242 => 'Ó›',
-  1244 => 'ӝ',
-  1246 => 'ÓŸ',
-  1248 => 'Ó¡',
-  1250 => 'Ó£',
-  1252 => 'Ó¥',
-  1254 => 'Ó§',
-  1256 => 'Ó©',
-  1258 => 'Ó«',
-  1260 => 'Ó­',
-  1262 => 'Ó¯',
-  1264 => 'Ó±',
-  1266 => 'Ó³',
-  1268 => 'Óµ',
-  1270 => 'Ó·',
-  1272 => 'Ó¹',
-  1274 => 'Ó»',
-  1276 => 'Ó½',
-  1278 => 'Ó¿',
-  1280 => 'ԁ',
-  1282 => 'Ôƒ',
-  1284 => 'Ô…',
-  1286 => 'Ô‡',
-  1288 => 'Ô‰',
-  1290 => 'Ô‹',
-  1292 => 'ԍ',
-  1294 => 'ԏ',
-  1296 => 'Ô‘',
-  1298 => 'Ô“',
-  1300 => 'Ô•',
-  1302 => 'Ô—',
-  1304 => 'Ô™',
-  1306 => 'Ô›',
-  1308 => 'ԝ',
-  1310 => 'ÔŸ',
-  1312 => 'Ô¡',
-  1314 => 'Ô£',
-  1316 => 'Ô¥',
-  1318 => 'Ô§',
-  1320 => 'Ô©',
-  1322 => 'Ô«',
-  1324 => 'Ô­',
-  1326 => 'Ô¯',
-  1329 => 'Õ¡',
-  1330 => 'Õ¢',
-  1331 => 'Õ£',
-  1332 => 'Õ¤',
-  1333 => 'Õ¥',
-  1334 => 'Õ¦',
-  1335 => 'Õ§',
-  1336 => 'Õ¨',
-  1337 => 'Õ©',
-  1338 => 'Õª',
-  1339 => 'Õ«',
-  1340 => 'Õ¬',
-  1341 => 'Õ­',
-  1342 => 'Õ®',
-  1343 => 'Õ¯',
-  1344 => 'Õ°',
-  1345 => 'Õ±',
-  1346 => 'Õ²',
-  1347 => 'Õ³',
-  1348 => 'Õ´',
-  1349 => 'Õµ',
-  1350 => 'Õ¶',
-  1351 => 'Õ·',
-  1352 => 'Õ¸',
-  1353 => 'Õ¹',
-  1354 => 'Õº',
-  1355 => 'Õ»',
-  1356 => 'Õ¼',
-  1357 => 'Õ½',
-  1358 => 'Õ¾',
-  1359 => 'Õ¿',
-  1360 => 'Ö€',
-  1361 => 'ց',
-  1362 => 'Ö‚',
-  1363 => 'Öƒ',
-  1364 => 'Ö„',
-  1365 => 'Ö…',
-  1366 => 'Ö†',
-  1415 => 'Õ¥Ö‚',
-  1653 => 'اٴ',
-  1654 => 'وٴ',
-  1655 => 'Û‡Ù´',
-  1656 => 'يٴ',
-  2392 => 'क़',
-  2393 => 'ख़',
-  2394 => 'ग़',
-  2395 => 'ज़',
-  2396 => 'ड़',
-  2397 => 'ढ़',
-  2398 => 'फ़',
-  2399 => 'य़',
-  2524 => 'ড়',
-  2525 => 'ঢ়',
-  2527 => 'য়',
-  2611 => 'ਲ਼',
-  2614 => 'ਸ਼',
-  2649 => 'ਖ਼',
-  2650 => 'ਗ਼',
-  2651 => 'ਜ਼',
-  2654 => 'ਫ਼',
-  2908 => 'ଡ଼',
-  2909 => 'ଢ଼',
-  3635 => 'ํา',
-  3763 => 'ໍາ',
-  3804 => 'ຫນ',
-  3805 => 'ຫມ',
-  3852 => '་',
-  3907 => 'གྷ',
-  3917 => 'ཌྷ',
-  3922 => 'དྷ',
-  3927 => 'བྷ',
-  3932 => 'ཛྷ',
-  3945 => 'ཀྵ',
-  3955 => 'ཱི',
-  3957 => 'ཱུ',
-  3958 => 'ྲྀ',
-  3959 => 'ྲཱྀ',
-  3960 => 'ླྀ',
-  3961 => 'ླཱྀ',
-  3969 => 'ཱྀ',
-  3987 => 'ྒྷ',
-  3997 => 'ྜྷ',
-  4002 => 'ྡྷ',
-  4007 => 'ྦྷ',
-  4012 => 'ྫྷ',
-  4025 => 'ྐྵ',
-  4295 => 'â´§',
-  4301 => 'â´­',
-  4348 => 'ნ',
-  5112 => 'Ᏸ',
-  5113 => 'Ᏹ',
-  5114 => 'Ᏺ',
-  5115 => 'Ᏻ',
-  5116 => 'Ᏼ',
-  5117 => 'Ᏽ',
-  7296 => 'в',
-  7297 => 'д',
-  7298 => 'о',
-  7299 => 'с',
-  7300 => 'Ñ‚',
-  7301 => 'Ñ‚',
-  7302 => 'ÑŠ',
-  7303 => 'Ñ£',
-  7304 => 'ꙋ',
-  7312 => 'ა',
-  7313 => 'ბ',
-  7314 => 'გ',
-  7315 => 'დ',
-  7316 => 'ე',
-  7317 => 'ვ',
-  7318 => 'ზ',
-  7319 => 'თ',
-  7320 => 'ი',
-  7321 => 'კ',
-  7322 => 'ლ',
-  7323 => 'მ',
-  7324 => 'ნ',
-  7325 => 'ო',
-  7326 => 'პ',
-  7327 => 'ჟ',
-  7328 => 'რ',
-  7329 => 'ს',
-  7330 => 'ტ',
-  7331 => 'უ',
-  7332 => 'ფ',
-  7333 => 'ქ',
-  7334 => 'ღ',
-  7335 => 'ყ',
-  7336 => 'შ',
-  7337 => 'ჩ',
-  7338 => 'ც',
-  7339 => 'ძ',
-  7340 => 'წ',
-  7341 => 'ჭ',
-  7342 => 'ხ',
-  7343 => 'ჯ',
-  7344 => 'ჰ',
-  7345 => 'ჱ',
-  7346 => 'ჲ',
-  7347 => 'ჳ',
-  7348 => 'ჴ',
-  7349 => 'ჵ',
-  7350 => 'ჶ',
-  7351 => 'ჷ',
-  7352 => 'ჸ',
-  7353 => 'ჹ',
-  7354 => 'ჺ',
-  7357 => 'ჽ',
-  7358 => 'ჾ',
-  7359 => 'ჿ',
-  7468 => 'a',
-  7469 => 'æ',
-  7470 => 'b',
-  7472 => 'd',
-  7473 => 'e',
-  7474 => 'ǝ',
-  7475 => 'g',
-  7476 => 'h',
-  7477 => 'i',
-  7478 => 'j',
-  7479 => 'k',
-  7480 => 'l',
-  7481 => 'm',
-  7482 => 'n',
-  7484 => 'o',
-  7485 => 'È£',
-  7486 => 'p',
-  7487 => 'r',
-  7488 => 't',
-  7489 => 'u',
-  7490 => 'w',
-  7491 => 'a',
-  7492 => 'ɐ',
-  7493 => 'É‘',
-  7494 => 'á´‚',
-  7495 => 'b',
-  7496 => 'd',
-  7497 => 'e',
-  7498 => 'É™',
-  7499 => 'É›',
-  7500 => 'ɜ',
-  7501 => 'g',
-  7503 => 'k',
-  7504 => 'm',
-  7505 => 'Å‹',
-  7506 => 'o',
-  7507 => 'É”',
-  7508 => 'á´–',
-  7509 => 'á´—',
-  7510 => 'p',
-  7511 => 't',
-  7512 => 'u',
-  7513 => 'ᴝ',
-  7514 => 'ɯ',
-  7515 => 'v',
-  7516 => 'á´¥',
-  7517 => 'β',
-  7518 => 'γ',
-  7519 => 'δ',
-  7520 => 'φ',
-  7521 => 'χ',
-  7522 => 'i',
-  7523 => 'r',
-  7524 => 'u',
-  7525 => 'v',
-  7526 => 'β',
-  7527 => 'γ',
-  7528 => 'ρ',
-  7529 => 'φ',
-  7530 => 'χ',
-  7544 => 'н',
-  7579 => 'É’',
-  7580 => 'c',
-  7581 => 'É•',
-  7582 => 'ð',
-  7583 => 'ɜ',
-  7584 => 'f',
-  7585 => 'ÉŸ',
-  7586 => 'É¡',
-  7587 => 'É¥',
-  7588 => 'ɨ',
-  7589 => 'É©',
-  7590 => 'ɪ',
-  7591 => 'áµ»',
-  7592 => 'ʝ',
-  7593 => 'É­',
-  7594 => 'á¶…',
-  7595 => 'ÊŸ',
-  7596 => 'ɱ',
-  7597 => 'ɰ',
-  7598 => 'ɲ',
-  7599 => 'ɳ',
-  7600 => 'É´',
-  7601 => 'ɵ',
-  7602 => 'ɸ',
-  7603 => 'Ê‚',
-  7604 => 'ʃ',
-  7605 => 'Æ«',
-  7606 => 'ʉ',
-  7607 => 'ÊŠ',
-  7608 => 'ᴜ',
-  7609 => 'Ê‹',
-  7610 => 'ʌ',
-  7611 => 'z',
-  7612 => 'ʐ',
-  7613 => 'Ê‘',
-  7614 => 'Ê’',
-  7615 => 'θ',
-  7680 => 'ḁ',
-  7682 => 'ḃ',
-  7684 => 'ḅ',
-  7686 => 'ḇ',
-  7688 => 'ḉ',
-  7690 => 'ḋ',
-  7692 => 'ḍ',
-  7694 => 'ḏ',
-  7696 => 'ḑ',
-  7698 => 'ḓ',
-  7700 => 'ḕ',
-  7702 => 'ḗ',
-  7704 => 'ḙ',
-  7706 => 'ḛ',
-  7708 => 'ḝ',
-  7710 => 'ḟ',
-  7712 => 'ḡ',
-  7714 => 'ḣ',
-  7716 => 'ḥ',
-  7718 => 'ḧ',
-  7720 => 'ḩ',
-  7722 => 'ḫ',
-  7724 => 'ḭ',
-  7726 => 'ḯ',
-  7728 => 'ḱ',
-  7730 => 'ḳ',
-  7732 => 'ḵ',
-  7734 => 'ḷ',
-  7736 => 'ḹ',
-  7738 => 'ḻ',
-  7740 => 'ḽ',
-  7742 => 'ḿ',
-  7744 => 'ṁ',
-  7746 => 'ṃ',
-  7748 => 'á¹…',
-  7750 => 'ṇ',
-  7752 => 'ṉ',
-  7754 => 'ṋ',
-  7756 => 'ṍ',
-  7758 => 'ṏ',
-  7760 => 'ṑ',
-  7762 => 'ṓ',
-  7764 => 'ṕ',
-  7766 => 'á¹—',
-  7768 => 'á¹™',
-  7770 => 'á¹›',
-  7772 => 'ṝ',
-  7774 => 'ṟ',
-  7776 => 'ṡ',
-  7778 => 'á¹£',
-  7780 => 'á¹¥',
-  7782 => 'á¹§',
-  7784 => 'ṩ',
-  7786 => 'ṫ',
-  7788 => 'á¹­',
-  7790 => 'ṯ',
-  7792 => 'á¹±',
-  7794 => 'á¹³',
-  7796 => 'á¹µ',
-  7798 => 'á¹·',
-  7800 => 'á¹¹',
-  7802 => 'á¹»',
-  7804 => 'á¹½',
-  7806 => 'ṿ',
-  7808 => 'ẁ',
-  7810 => 'ẃ',
-  7812 => 'ẅ',
-  7814 => 'ẇ',
-  7816 => 'ẉ',
-  7818 => 'ẋ',
-  7820 => 'ẍ',
-  7822 => 'ẏ',
-  7824 => 'ẑ',
-  7826 => 'ẓ',
-  7828 => 'ẕ',
-  7834 => 'aʾ',
-  7835 => 'ṡ',
-  7838 => 'ss',
-  7840 => 'ạ',
-  7842 => 'ả',
-  7844 => 'ấ',
-  7846 => 'ầ',
-  7848 => 'ẩ',
-  7850 => 'ẫ',
-  7852 => 'ậ',
-  7854 => 'ắ',
-  7856 => 'ằ',
-  7858 => 'ẳ',
-  7860 => 'ẵ',
-  7862 => 'ặ',
-  7864 => 'ẹ',
-  7866 => 'ẻ',
-  7868 => 'ẽ',
-  7870 => 'ế',
-  7872 => 'ề',
-  7874 => 'ể',
-  7876 => 'á»…',
-  7878 => 'ệ',
-  7880 => 'ỉ',
-  7882 => 'ị',
-  7884 => 'ọ',
-  7886 => 'ỏ',
-  7888 => 'ố',
-  7890 => 'ồ',
-  7892 => 'ổ',
-  7894 => 'á»—',
-  7896 => 'á»™',
-  7898 => 'á»›',
-  7900 => 'ờ',
-  7902 => 'ở',
-  7904 => 'ỡ',
-  7906 => 'ợ',
-  7908 => 'ụ',
-  7910 => 'á»§',
-  7912 => 'ứ',
-  7914 => 'ừ',
-  7916 => 'á»­',
-  7918 => 'ữ',
-  7920 => 'á»±',
-  7922 => 'ỳ',
-  7924 => 'ỵ',
-  7926 => 'á»·',
-  7928 => 'ỹ',
-  7930 => 'á»»',
-  7932 => 'ỽ',
-  7934 => 'ỿ',
-  7944 => 'á¼€',
-  7945 => 'ἁ',
-  7946 => 'ἂ',
-  7947 => 'ἃ',
-  7948 => 'ἄ',
-  7949 => 'á¼…',
-  7950 => 'ἆ',
-  7951 => 'ἇ',
-  7960 => 'ἐ',
-  7961 => 'ἑ',
-  7962 => 'á¼’',
-  7963 => 'ἓ',
-  7964 => 'á¼”',
-  7965 => 'ἕ',
-  7976 => 'á¼ ',
-  7977 => 'ἡ',
-  7978 => 'á¼¢',
-  7979 => 'á¼£',
-  7980 => 'ἤ',
-  7981 => 'á¼¥',
-  7982 => 'ἦ',
-  7983 => 'á¼§',
-  7992 => 'á¼°',
-  7993 => 'á¼±',
-  7994 => 'á¼²',
-  7995 => 'á¼³',
-  7996 => 'á¼´',
-  7997 => 'á¼µ',
-  7998 => 'á¼¶',
-  7999 => 'á¼·',
-  8008 => 'á½€',
-  8009 => 'ὁ',
-  8010 => 'ὂ',
-  8011 => 'ὃ',
-  8012 => 'ὄ',
-  8013 => 'á½…',
-  8025 => 'ὑ',
-  8027 => 'ὓ',
-  8029 => 'ὕ',
-  8031 => 'á½—',
-  8040 => 'á½ ',
-  8041 => 'ὡ',
-  8042 => 'á½¢',
-  8043 => 'á½£',
-  8044 => 'ὤ',
-  8045 => 'á½¥',
-  8046 => 'ὦ',
-  8047 => 'á½§',
-  8049 => 'ά',
-  8051 => 'έ',
-  8053 => 'ή',
-  8055 => 'ί',
-  8057 => 'ό',
-  8059 => 'ύ',
-  8061 => 'ÏŽ',
-  8064 => 'ἀι',
-  8065 => 'ἁι',
-  8066 => 'ἂι',
-  8067 => 'ἃι',
-  8068 => 'ἄι',
-  8069 => 'ἅι',
-  8070 => 'ἆι',
-  8071 => 'ἇι',
-  8072 => 'ἀι',
-  8073 => 'ἁι',
-  8074 => 'ἂι',
-  8075 => 'ἃι',
-  8076 => 'ἄι',
-  8077 => 'ἅι',
-  8078 => 'ἆι',
-  8079 => 'ἇι',
-  8080 => 'ἠι',
-  8081 => 'ἡι',
-  8082 => 'ἢι',
-  8083 => 'ἣι',
-  8084 => 'ἤι',
-  8085 => 'ἥι',
-  8086 => 'ἦι',
-  8087 => 'ἧι',
-  8088 => 'ἠι',
-  8089 => 'ἡι',
-  8090 => 'ἢι',
-  8091 => 'ἣι',
-  8092 => 'ἤι',
-  8093 => 'ἥι',
-  8094 => 'ἦι',
-  8095 => 'ἧι',
-  8096 => 'ὠι',
-  8097 => 'ὡι',
-  8098 => 'ὢι',
-  8099 => 'ὣι',
-  8100 => 'ὤι',
-  8101 => 'ὥι',
-  8102 => 'ὦι',
-  8103 => 'ὧι',
-  8104 => 'ὠι',
-  8105 => 'ὡι',
-  8106 => 'ὢι',
-  8107 => 'ὣι',
-  8108 => 'ὤι',
-  8109 => 'ὥι',
-  8110 => 'ὦι',
-  8111 => 'ὧι',
-  8114 => 'ὰι',
-  8115 => 'αι',
-  8116 => 'άι',
-  8119 => 'ᾶι',
-  8120 => 'á¾°',
-  8121 => 'á¾±',
-  8122 => 'á½°',
-  8123 => 'ά',
-  8124 => 'αι',
-  8126 => 'ι',
-  8130 => 'ὴι',
-  8131 => 'ηι',
-  8132 => 'ήι',
-  8135 => 'ῆι',
-  8136 => 'á½²',
-  8137 => 'έ',
-  8138 => 'á½´',
-  8139 => 'ή',
-  8140 => 'ηι',
-  8147 => 'ΐ',
-  8152 => 'ῐ',
-  8153 => 'á¿‘',
-  8154 => 'á½¶',
-  8155 => 'ί',
-  8163 => 'ΰ',
-  8168 => 'á¿ ',
-  8169 => 'á¿¡',
-  8170 => 'ὺ',
-  8171 => 'ύ',
-  8172 => 'á¿¥',
-  8178 => 'ὼι',
-  8179 => 'ωι',
-  8180 => 'ώι',
-  8183 => 'ῶι',
-  8184 => 'ὸ',
-  8185 => 'ό',
-  8186 => 'á½¼',
-  8187 => 'ÏŽ',
-  8188 => 'ωι',
-  8209 => '‐',
-  8243 => '′′',
-  8244 => '′′′',
-  8246 => '‵‵',
-  8247 => '‵‵‵',
-  8279 => '′′′′',
-  8304 => '0',
-  8305 => 'i',
-  8308 => '4',
-  8309 => '5',
-  8310 => '6',
-  8311 => '7',
-  8312 => '8',
-  8313 => '9',
-  8315 => '−',
-  8319 => 'n',
-  8320 => '0',
-  8321 => '1',
-  8322 => '2',
-  8323 => '3',
-  8324 => '4',
-  8325 => '5',
-  8326 => '6',
-  8327 => '7',
-  8328 => '8',
-  8329 => '9',
-  8331 => '−',
-  8336 => 'a',
-  8337 => 'e',
-  8338 => 'o',
-  8339 => 'x',
-  8340 => 'É™',
-  8341 => 'h',
-  8342 => 'k',
-  8343 => 'l',
-  8344 => 'm',
-  8345 => 'n',
-  8346 => 'p',
-  8347 => 's',
-  8348 => 't',
-  8360 => 'rs',
-  8450 => 'c',
-  8451 => '°c',
-  8455 => 'É›',
-  8457 => '°f',
-  8458 => 'g',
-  8459 => 'h',
-  8460 => 'h',
-  8461 => 'h',
-  8462 => 'h',
-  8463 => 'ħ',
-  8464 => 'i',
-  8465 => 'i',
-  8466 => 'l',
-  8467 => 'l',
-  8469 => 'n',
-  8470 => 'no',
-  8473 => 'p',
-  8474 => 'q',
-  8475 => 'r',
-  8476 => 'r',
-  8477 => 'r',
-  8480 => 'sm',
-  8481 => 'tel',
-  8482 => 'tm',
-  8484 => 'z',
-  8486 => 'ω',
-  8488 => 'z',
-  8490 => 'k',
-  8491 => 'Ã¥',
-  8492 => 'b',
-  8493 => 'c',
-  8495 => 'e',
-  8496 => 'e',
-  8497 => 'f',
-  8499 => 'm',
-  8500 => 'o',
-  8501 => 'א',
-  8502 => 'ב',
-  8503 => '×’',
-  8504 => 'ד',
-  8505 => 'i',
-  8507 => 'fax',
-  8508 => 'Ï€',
-  8509 => 'γ',
-  8510 => 'γ',
-  8511 => 'Ï€',
-  8512 => '∑',
-  8517 => 'd',
-  8518 => 'd',
-  8519 => 'e',
-  8520 => 'i',
-  8521 => 'j',
-  8528 => '1⁄7',
-  8529 => '1⁄9',
-  8530 => '1⁄10',
-  8531 => '1⁄3',
-  8532 => '2⁄3',
-  8533 => '1⁄5',
-  8534 => '2⁄5',
-  8535 => '3⁄5',
-  8536 => '4⁄5',
-  8537 => '1⁄6',
-  8538 => '5⁄6',
-  8539 => '1⁄8',
-  8540 => '3⁄8',
-  8541 => '5⁄8',
-  8542 => '7⁄8',
-  8543 => '1⁄',
-  8544 => 'i',
-  8545 => 'ii',
-  8546 => 'iii',
-  8547 => 'iv',
-  8548 => 'v',
-  8549 => 'vi',
-  8550 => 'vii',
-  8551 => 'viii',
-  8552 => 'ix',
-  8553 => 'x',
-  8554 => 'xi',
-  8555 => 'xii',
-  8556 => 'l',
-  8557 => 'c',
-  8558 => 'd',
-  8559 => 'm',
-  8560 => 'i',
-  8561 => 'ii',
-  8562 => 'iii',
-  8563 => 'iv',
-  8564 => 'v',
-  8565 => 'vi',
-  8566 => 'vii',
-  8567 => 'viii',
-  8568 => 'ix',
-  8569 => 'x',
-  8570 => 'xi',
-  8571 => 'xii',
-  8572 => 'l',
-  8573 => 'c',
-  8574 => 'd',
-  8575 => 'm',
-  8585 => '0⁄3',
-  8748 => '∫∫',
-  8749 => '∫∫∫',
-  8751 => '∮∮',
-  8752 => '∮∮∮',
-  9001 => '〈',
-  9002 => '〉',
-  9312 => '1',
-  9313 => '2',
-  9314 => '3',
-  9315 => '4',
-  9316 => '5',
-  9317 => '6',
-  9318 => '7',
-  9319 => '8',
-  9320 => '9',
-  9321 => '10',
-  9322 => '11',
-  9323 => '12',
-  9324 => '13',
-  9325 => '14',
-  9326 => '15',
-  9327 => '16',
-  9328 => '17',
-  9329 => '18',
-  9330 => '19',
-  9331 => '20',
-  9398 => 'a',
-  9399 => 'b',
-  9400 => 'c',
-  9401 => 'd',
-  9402 => 'e',
-  9403 => 'f',
-  9404 => 'g',
-  9405 => 'h',
-  9406 => 'i',
-  9407 => 'j',
-  9408 => 'k',
-  9409 => 'l',
-  9410 => 'm',
-  9411 => 'n',
-  9412 => 'o',
-  9413 => 'p',
-  9414 => 'q',
-  9415 => 'r',
-  9416 => 's',
-  9417 => 't',
-  9418 => 'u',
-  9419 => 'v',
-  9420 => 'w',
-  9421 => 'x',
-  9422 => 'y',
-  9423 => 'z',
-  9424 => 'a',
-  9425 => 'b',
-  9426 => 'c',
-  9427 => 'd',
-  9428 => 'e',
-  9429 => 'f',
-  9430 => 'g',
-  9431 => 'h',
-  9432 => 'i',
-  9433 => 'j',
-  9434 => 'k',
-  9435 => 'l',
-  9436 => 'm',
-  9437 => 'n',
-  9438 => 'o',
-  9439 => 'p',
-  9440 => 'q',
-  9441 => 'r',
-  9442 => 's',
-  9443 => 't',
-  9444 => 'u',
-  9445 => 'v',
-  9446 => 'w',
-  9447 => 'x',
-  9448 => 'y',
-  9449 => 'z',
-  9450 => '0',
-  10764 => '∫∫∫∫',
-  10972 => '⫝̸',
-  11264 => 'â°°',
-  11265 => 'â°±',
-  11266 => 'â°²',
-  11267 => 'â°³',
-  11268 => 'â°´',
-  11269 => 'â°µ',
-  11270 => 'â°¶',
-  11271 => 'â°·',
-  11272 => 'â°¸',
-  11273 => 'â°¹',
-  11274 => 'â°º',
-  11275 => 'â°»',
-  11276 => 'â°¼',
-  11277 => 'â°½',
-  11278 => 'â°¾',
-  11279 => 'â°¿',
-  11280 => 'â±€',
-  11281 => 'ⱁ',
-  11282 => 'ⱂ',
-  11283 => 'ⱃ',
-  11284 => 'ⱄ',
-  11285 => 'â±…',
-  11286 => 'ⱆ',
-  11287 => 'ⱇ',
-  11288 => 'ⱈ',
-  11289 => 'ⱉ',
-  11290 => 'ⱊ',
-  11291 => 'ⱋ',
-  11292 => 'ⱌ',
-  11293 => 'ⱍ',
-  11294 => 'ⱎ',
-  11295 => 'ⱏ',
-  11296 => 'ⱐ',
-  11297 => 'ⱑ',
-  11298 => 'â±’',
-  11299 => 'ⱓ',
-  11300 => 'â±”',
-  11301 => 'ⱕ',
-  11302 => 'â±–',
-  11303 => 'â±—',
-  11304 => 'ⱘ',
-  11305 => 'â±™',
-  11306 => 'ⱚ',
-  11307 => 'â±›',
-  11308 => 'ⱜ',
-  11309 => 'ⱝ',
-  11310 => 'ⱞ',
-  11360 => 'ⱡ',
-  11362 => 'É«',
-  11363 => 'áµ½',
-  11364 => 'ɽ',
-  11367 => 'ⱨ',
-  11369 => 'ⱪ',
-  11371 => 'ⱬ',
-  11373 => 'É‘',
-  11374 => 'ɱ',
-  11375 => 'ɐ',
-  11376 => 'É’',
-  11378 => 'â±³',
-  11381 => 'â±¶',
-  11388 => 'j',
-  11389 => 'v',
-  11390 => 'È¿',
-  11391 => 'É€',
-  11392 => 'ⲁ',
-  11394 => 'ⲃ',
-  11396 => 'â²…',
-  11398 => 'ⲇ',
-  11400 => 'ⲉ',
-  11402 => 'ⲋ',
-  11404 => 'ⲍ',
-  11406 => 'ⲏ',
-  11408 => 'ⲑ',
-  11410 => 'ⲓ',
-  11412 => 'ⲕ',
-  11414 => 'â²—',
-  11416 => 'â²™',
-  11418 => 'â²›',
-  11420 => 'ⲝ',
-  11422 => 'ⲟ',
-  11424 => 'ⲡ',
-  11426 => 'â²£',
-  11428 => 'â²¥',
-  11430 => 'â²§',
-  11432 => 'ⲩ',
-  11434 => 'ⲫ',
-  11436 => 'â²­',
-  11438 => 'ⲯ',
-  11440 => 'â²±',
-  11442 => 'â²³',
-  11444 => 'â²µ',
-  11446 => 'â²·',
-  11448 => 'â²¹',
-  11450 => 'â²»',
-  11452 => 'â²½',
-  11454 => 'ⲿ',
-  11456 => 'ⳁ',
-  11458 => 'ⳃ',
-  11460 => 'â³…',
-  11462 => 'ⳇ',
-  11464 => 'ⳉ',
-  11466 => 'ⳋ',
-  11468 => 'ⳍ',
-  11470 => 'ⳏ',
-  11472 => 'ⳑ',
-  11474 => 'ⳓ',
-  11476 => 'ⳕ',
-  11478 => 'â³—',
-  11480 => 'â³™',
-  11482 => 'â³›',
-  11484 => 'ⳝ',
-  11486 => 'ⳟ',
-  11488 => 'ⳡ',
-  11490 => 'â³£',
-  11499 => 'ⳬ',
-  11501 => 'â³®',
-  11506 => 'â³³',
-  11631 => 'ⵡ',
-  11935 => '母',
-  12019 => '龟',
-  12032 => '一',
-  12033 => '丨',
-  12034 => '丶',
-  12035 => '丿',
-  12036 => 'ä¹™',
-  12037 => '亅',
-  12038 => '二',
-  12039 => '亠',
-  12040 => '人',
-  12041 => 'å„¿',
-  12042 => 'å…¥',
-  12043 => 'å…«',
-  12044 => '冂',
-  12045 => '冖',
-  12046 => '冫',
-  12047 => '几',
-  12048 => '凵',
-  12049 => '刀',
-  12050 => '力',
-  12051 => '勹',
-  12052 => '匕',
-  12053 => '匚',
-  12054 => '匸',
-  12055 => '十',
-  12056 => '卜',
-  12057 => '卩',
-  12058 => '厂',
-  12059 => '厶',
-  12060 => '又',
-  12061 => '口',
-  12062 => 'å›—',
-  12063 => '土',
-  12064 => '士',
-  12065 => '夂',
-  12066 => '夊',
-  12067 => '夕',
-  12068 => '大',
-  12069 => '女',
-  12070 => '子',
-  12071 => '宀',
-  12072 => '寸',
-  12073 => '小',
-  12074 => 'å°¢',
-  12075 => 'å°¸',
-  12076 => 'å±®',
-  12077 => 'å±±',
-  12078 => 'å·›',
-  12079 => 'å·¥',
-  12080 => 'å·±',
-  12081 => 'å·¾',
-  12082 => 'å¹²',
-  12083 => '幺',
-  12084 => '广',
-  12085 => 'å»´',
-  12086 => '廾',
-  12087 => '弋',
-  12088 => '弓',
-  12089 => '彐',
-  12090 => '彡',
-  12091 => 'å½³',
-  12092 => '心',
-  12093 => '戈',
-  12094 => '戶',
-  12095 => '手',
-  12096 => '支',
-  12097 => 'æ”´',
-  12098 => 'æ–‡',
-  12099 => 'æ–—',
-  12100 => 'æ–¤',
-  12101 => 'æ–¹',
-  12102 => 'æ— ',
-  12103 => 'æ—¥',
-  12104 => 'æ›°',
-  12105 => '月',
-  12106 => '木',
-  12107 => '欠',
-  12108 => 'æ­¢',
-  12109 => 'æ­¹',
-  12110 => '殳',
-  12111 => '毋',
-  12112 => '比',
-  12113 => '毛',
-  12114 => '氏',
-  12115 => 'æ°”',
-  12116 => 'æ°´',
-  12117 => '火',
-  12118 => '爪',
-  12119 => '父',
-  12120 => '爻',
-  12121 => '爿',
-  12122 => '片',
-  12123 => '牙',
-  12124 => '牛',
-  12125 => '犬',
-  12126 => '玄',
-  12127 => '玉',
-  12128 => '瓜',
-  12129 => '瓦',
-  12130 => '甘',
-  12131 => '生',
-  12132 => '用',
-  12133 => 'ç”°',
-  12134 => 'ç–‹',
-  12135 => 'ç–’',
-  12136 => 'ç™¶',
-  12137 => '白',
-  12138 => 'çš®',
-  12139 => 'çš¿',
-  12140 => 'ç›®',
-  12141 => '矛',
-  12142 => '矢',
-  12143 => '石',
-  12144 => '示',
-  12145 => '禸',
-  12146 => '禾',
-  12147 => 'ç©´',
-  12148 => 'ç«‹',
-  12149 => '竹',
-  12150 => 'ç±³',
-  12151 => '糸',
-  12152 => 'ç¼¶',
-  12153 => '网',
-  12154 => '羊',
-  12155 => 'ç¾½',
-  12156 => '老',
-  12157 => '而',
-  12158 => '耒',
-  12159 => '耳',
-  12160 => '聿',
-  12161 => '肉',
-  12162 => '臣',
-  12163 => '自',
-  12164 => '至',
-  12165 => '臼',
-  12166 => '舌',
-  12167 => '舛',
-  12168 => '舟',
-  12169 => '艮',
-  12170 => '色',
-  12171 => '艸',
-  12172 => '虍',
-  12173 => '虫',
-  12174 => 'è¡€',
-  12175 => '行',
-  12176 => 'è¡£',
-  12177 => '襾',
-  12178 => '見',
-  12179 => 'è§’',
-  12180 => '言',
-  12181 => 'è°·',
-  12182 => '豆',
-  12183 => '豕',
-  12184 => '豸',
-  12185 => '貝',
-  12186 => '赤',
-  12187 => 'èµ°',
-  12188 => 'è¶³',
-  12189 => '身',
-  12190 => '車',
-  12191 => 'è¾›',
-  12192 => 'è¾°',
-  12193 => 'è¾µ',
-  12194 => 'é‚‘',
-  12195 => 'é…‰',
-  12196 => '釆',
-  12197 => '里',
-  12198 => '金',
-  12199 => 'é•·',
-  12200 => 'é–€',
-  12201 => '阜',
-  12202 => 'éš¶',
-  12203 => 'éš¹',
-  12204 => '雨',
-  12205 => '靑',
-  12206 => '非',
-  12207 => '面',
-  12208 => '革',
-  12209 => '韋',
-  12210 => '韭',
-  12211 => '音',
-  12212 => '頁',
-  12213 => '風',
-  12214 => '飛',
-  12215 => '食',
-  12216 => '首',
-  12217 => '香',
-  12218 => '馬',
-  12219 => '骨',
-  12220 => '高',
-  12221 => '髟',
-  12222 => '鬥',
-  12223 => '鬯',
-  12224 => '鬲',
-  12225 => '鬼',
-  12226 => 'é­š',
-  12227 => 'é³¥',
-  12228 => 'é¹µ',
-  12229 => '鹿',
-  12230 => '麥',
-  12231 => '麻',
-  12232 => '黃',
-  12233 => '黍',
-  12234 => '黑',
-  12235 => '黹',
-  12236 => '黽',
-  12237 => '鼎',
-  12238 => '鼓',
-  12239 => 'é¼ ',
-  12240 => 'é¼»',
-  12241 => '齊',
-  12242 => 'é½’',
-  12243 => '龍',
-  12244 => '龜',
-  12245 => 'é¾ ',
-  12290 => '.',
-  12342 => '〒',
-  12344 => '十',
-  12345 => '卄',
-  12346 => '卅',
-  12447 => 'より',
-  12543 => 'コト',
-  12593 => 'á„€',
-  12594 => 'ᄁ',
-  12595 => 'ᆪ',
-  12596 => 'á„‚',
-  12597 => 'ᆬ',
-  12598 => 'ᆭ',
-  12599 => 'ᄃ',
-  12600 => 'á„„',
-  12601 => 'á„…',
-  12602 => 'ᆰ',
-  12603 => 'ᆱ',
-  12604 => 'ᆲ',
-  12605 => 'ᆳ',
-  12606 => 'ᆴ',
-  12607 => 'ᆵ',
-  12608 => 'ᄚ',
-  12609 => 'ᄆ',
-  12610 => 'ᄇ',
-  12611 => 'ᄈ',
-  12612 => 'á„¡',
-  12613 => 'ᄉ',
-  12614 => 'ᄊ',
-  12615 => 'á„‹',
-  12616 => 'ᄌ',
-  12617 => 'ᄍ',
-  12618 => 'ᄎ',
-  12619 => 'ᄏ',
-  12620 => 'ᄐ',
-  12621 => 'á„‘',
-  12622 => 'á„’',
-  12623 => 'á…¡',
-  12624 => 'á…¢',
-  12625 => 'á…£',
-  12626 => 'á…¤',
-  12627 => 'á…¥',
-  12628 => 'á…¦',
-  12629 => 'á…§',
-  12630 => 'á…¨',
-  12631 => 'á…©',
-  12632 => 'á…ª',
-  12633 => 'á…«',
-  12634 => 'á…¬',
-  12635 => 'á…­',
-  12636 => 'á…®',
-  12637 => 'á…¯',
-  12638 => 'á…°',
-  12639 => 'á…±',
-  12640 => 'á…²',
-  12641 => 'á…³',
-  12642 => 'á…´',
-  12643 => 'á…µ',
-  12645 => 'á„”',
-  12646 => 'á„•',
-  12647 => 'ᇇ',
-  12648 => 'ᇈ',
-  12649 => 'ᇌ',
-  12650 => 'ᇎ',
-  12651 => 'ᇓ',
-  12652 => 'ᇗ',
-  12653 => 'ᇙ',
-  12654 => 'ᄜ',
-  12655 => 'ᇝ',
-  12656 => 'ᇟ',
-  12657 => 'ᄝ',
-  12658 => 'ᄞ',
-  12659 => 'á„ ',
-  12660 => 'á„¢',
-  12661 => 'á„£',
-  12662 => 'á„§',
-  12663 => 'á„©',
-  12664 => 'á„«',
-  12665 => 'ᄬ',
-  12666 => 'á„­',
-  12667 => 'á„®',
-  12668 => 'ᄯ',
-  12669 => 'ᄲ',
-  12670 => 'á„¶',
-  12671 => 'á…€',
-  12672 => 'á…‡',
-  12673 => 'ᅌ',
-  12674 => 'ᇱ',
-  12675 => 'ᇲ',
-  12676 => 'á…—',
-  12677 => 'á…˜',
-  12678 => 'á…™',
-  12679 => 'ᆄ',
-  12680 => 'ᆅ',
-  12681 => 'ᆈ',
-  12682 => 'ᆑ',
-  12683 => 'ᆒ',
-  12684 => 'ᆔ',
-  12685 => 'ᆞ',
-  12686 => 'ᆡ',
-  12690 => '一',
-  12691 => '二',
-  12692 => '三',
-  12693 => 'å››',
-  12694 => '上',
-  12695 => '中',
-  12696 => '下',
-  12697 => '甲',
-  12698 => 'ä¹™',
-  12699 => '丙',
-  12700 => '丁',
-  12701 => '天',
-  12702 => '地',
-  12703 => '人',
-  12868 => '問',
-  12869 => 'å¹¼',
-  12870 => 'æ–‡',
-  12871 => '箏',
-  12880 => 'pte',
-  12881 => '21',
-  12882 => '22',
-  12883 => '23',
-  12884 => '24',
-  12885 => '25',
-  12886 => '26',
-  12887 => '27',
-  12888 => '28',
-  12889 => '29',
-  12890 => '30',
-  12891 => '31',
-  12892 => '32',
-  12893 => '33',
-  12894 => '34',
-  12895 => '35',
-  12896 => 'á„€',
-  12897 => 'á„‚',
-  12898 => 'ᄃ',
-  12899 => 'á„…',
-  12900 => 'ᄆ',
-  12901 => 'ᄇ',
-  12902 => 'ᄉ',
-  12903 => 'á„‹',
-  12904 => 'ᄌ',
-  12905 => 'ᄎ',
-  12906 => 'ᄏ',
-  12907 => 'ᄐ',
-  12908 => 'á„‘',
-  12909 => 'á„’',
-  12910 => 'ê°€',
-  12911 => '나',
-  12912 => '다',
-  12913 => '라',
-  12914 => '마',
-  12915 => 'ë°”',
-  12916 => '사',
-  12917 => 'ì•„',
-  12918 => '자',
-  12919 => 'ì°¨',
-  12920 => 'ì¹´',
-  12921 => '타',
-  12922 => '파',
-  12923 => '하',
-  12924 => '참고',
-  12925 => '주의',
-  12926 => 'ìš°',
-  12928 => '一',
-  12929 => '二',
-  12930 => '三',
-  12931 => 'å››',
-  12932 => '五',
-  12933 => 'å…­',
-  12934 => '七',
-  12935 => 'å…«',
-  12936 => '九',
-  12937 => '十',
-  12938 => '月',
-  12939 => '火',
-  12940 => 'æ°´',
-  12941 => '木',
-  12942 => '金',
-  12943 => '土',
-  12944 => 'æ—¥',
-  12945 => 'æ ª',
-  12946 => '有',
-  12947 => '社',
-  12948 => '名',
-  12949 => '特',
-  12950 => '財',
-  12951 => '祝',
-  12952 => '労',
-  12953 => '秘',
-  12954 => 'ç”·',
-  12955 => '女',
-  12956 => '適',
-  12957 => '優',
-  12958 => '印',
-  12959 => '注',
-  12960 => 'é …',
-  12961 => '休',
-  12962 => '写',
-  12963 => 'æ­£',
-  12964 => '上',
-  12965 => '中',
-  12966 => '下',
-  12967 => 'å·¦',
-  12968 => '右',
-  12969 => '医',
-  12970 => 'å®—',
-  12971 => 'å­¦',
-  12972 => '監',
-  12973 => '企',
-  12974 => '資',
-  12975 => '協',
-  12976 => '夜',
-  12977 => '36',
-  12978 => '37',
-  12979 => '38',
-  12980 => '39',
-  12981 => '40',
-  12982 => '41',
-  12983 => '42',
-  12984 => '43',
-  12985 => '44',
-  12986 => '45',
-  12987 => '46',
-  12988 => '47',
-  12989 => '48',
-  12990 => '49',
-  12991 => '50',
-  12992 => '1月',
-  12993 => '2月',
-  12994 => '3月',
-  12995 => '4月',
-  12996 => '5月',
-  12997 => '6月',
-  12998 => '7月',
-  12999 => '8月',
-  13000 => '9月',
-  13001 => '10月',
-  13002 => '11月',
-  13003 => '12月',
-  13004 => 'hg',
-  13005 => 'erg',
-  13006 => 'ev',
-  13007 => 'ltd',
-  13008 => 'ã‚¢',
-  13009 => 'イ',
-  13010 => 'ウ',
-  13011 => 'エ',
-  13012 => 'オ',
-  13013 => 'ã‚«',
-  13014 => 'ã‚­',
-  13015 => 'ク',
-  13016 => 'ケ',
-  13017 => 'コ',
-  13018 => 'サ',
-  13019 => 'ã‚·',
-  13020 => 'ス',
-  13021 => 'ã‚»',
-  13022 => 'ソ',
-  13023 => 'ã‚¿',
-  13024 => 'チ',
-  13025 => 'ツ',
-  13026 => 'テ',
-  13027 => 'ト',
-  13028 => 'ナ',
-  13029 => 'ニ',
-  13030 => 'ヌ',
-  13031 => 'ネ',
-  13032 => 'ノ',
-  13033 => 'ハ',
-  13034 => 'ヒ',
-  13035 => 'フ',
-  13036 => 'ヘ',
-  13037 => 'ホ',
-  13038 => 'マ',
-  13039 => 'ミ',
-  13040 => 'ム',
-  13041 => 'メ',
-  13042 => 'モ',
-  13043 => 'ヤ',
-  13044 => 'ユ',
-  13045 => 'ヨ',
-  13046 => 'ラ',
-  13047 => 'リ',
-  13048 => 'ル',
-  13049 => 'レ',
-  13050 => 'ロ',
-  13051 => 'ワ',
-  13052 => 'ヰ',
-  13053 => 'ヱ',
-  13054 => 'ヲ',
-  13055 => '令和',
-  13056 => 'アパート',
-  13057 => 'アルファ',
-  13058 => 'アンペア',
-  13059 => 'アール',
-  13060 => 'イニング',
-  13061 => 'インチ',
-  13062 => 'ウォン',
-  13063 => 'エスクード',
-  13064 => 'エーカー',
-  13065 => 'オンス',
-  13066 => 'オーム',
-  13067 => 'カイリ',
-  13068 => 'カラット',
-  13069 => 'カロリー',
-  13070 => 'ガロン',
-  13071 => 'ガンマ',
-  13072 => 'ギガ',
-  13073 => 'ギニー',
-  13074 => 'キュリー',
-  13075 => 'ギルダー',
-  13076 => 'キロ',
-  13077 => 'キログラム',
-  13078 => 'キロメートル',
-  13079 => 'キロワット',
-  13080 => 'グラム',
-  13081 => 'グラムトン',
-  13082 => 'クルゼイロ',
-  13083 => 'クローネ',
-  13084 => 'ケース',
-  13085 => 'コルナ',
-  13086 => 'コーポ',
-  13087 => 'サイクル',
-  13088 => 'サンチーム',
-  13089 => 'シリング',
-  13090 => 'センチ',
-  13091 => 'セント',
-  13092 => 'ダース',
-  13093 => 'デシ',
-  13094 => 'ドル',
-  13095 => 'トン',
-  13096 => 'ナノ',
-  13097 => 'ノット',
-  13098 => 'ハイツ',
-  13099 => 'パーセント',
-  13100 => 'パーツ',
-  13101 => 'バーレル',
-  13102 => 'ピアストル',
-  13103 => 'ピクル',
-  13104 => 'ピコ',
-  13105 => 'ビル',
-  13106 => 'ファラッド',
-  13107 => 'フィート',
-  13108 => 'ブッシェル',
-  13109 => 'フラン',
-  13110 => 'ヘクタール',
-  13111 => 'ペソ',
-  13112 => 'ペニヒ',
-  13113 => 'ヘルツ',
-  13114 => 'ペンス',
-  13115 => 'ページ',
-  13116 => 'ベータ',
-  13117 => 'ポイント',
-  13118 => 'ボルト',
-  13119 => 'ホン',
-  13120 => 'ポンド',
-  13121 => 'ホール',
-  13122 => 'ホーン',
-  13123 => 'マイクロ',
-  13124 => 'マイル',
-  13125 => 'マッハ',
-  13126 => 'マルク',
-  13127 => 'マンション',
-  13128 => 'ミクロン',
-  13129 => 'ミリ',
-  13130 => 'ミリバール',
-  13131 => 'メガ',
-  13132 => 'メガトン',
-  13133 => 'メートル',
-  13134 => 'ヤード',
-  13135 => 'ヤール',
-  13136 => 'ユアン',
-  13137 => 'リットル',
-  13138 => 'リラ',
-  13139 => 'ルピー',
-  13140 => 'ルーブル',
-  13141 => 'レム',
-  13142 => 'レントゲン',
-  13143 => 'ワット',
-  13144 => '0点',
-  13145 => '1点',
-  13146 => '2点',
-  13147 => '3点',
-  13148 => '4点',
-  13149 => '5点',
-  13150 => '6点',
-  13151 => '7点',
-  13152 => '8点',
-  13153 => '9点',
-  13154 => '10点',
-  13155 => '11点',
-  13156 => '12点',
-  13157 => '13点',
-  13158 => '14点',
-  13159 => '15点',
-  13160 => '16点',
-  13161 => '17点',
-  13162 => '18点',
-  13163 => '19点',
-  13164 => '20点',
-  13165 => '21点',
-  13166 => '22点',
-  13167 => '23点',
-  13168 => '24点',
-  13169 => 'hpa',
-  13170 => 'da',
-  13171 => 'au',
-  13172 => 'bar',
-  13173 => 'ov',
-  13174 => 'pc',
-  13175 => 'dm',
-  13176 => 'dm2',
-  13177 => 'dm3',
-  13178 => 'iu',
-  13179 => '平成',
-  13180 => '昭和',
-  13181 => '大正',
-  13182 => '明治',
-  13183 => '株式会社',
-  13184 => 'pa',
-  13185 => 'na',
-  13186 => 'μa',
-  13187 => 'ma',
-  13188 => 'ka',
-  13189 => 'kb',
-  13190 => 'mb',
-  13191 => 'gb',
-  13192 => 'cal',
-  13193 => 'kcal',
-  13194 => 'pf',
-  13195 => 'nf',
-  13196 => 'μf',
-  13197 => 'μg',
-  13198 => 'mg',
-  13199 => 'kg',
-  13200 => 'hz',
-  13201 => 'khz',
-  13202 => 'mhz',
-  13203 => 'ghz',
-  13204 => 'thz',
-  13205 => 'μl',
-  13206 => 'ml',
-  13207 => 'dl',
-  13208 => 'kl',
-  13209 => 'fm',
-  13210 => 'nm',
-  13211 => 'μm',
-  13212 => 'mm',
-  13213 => 'cm',
-  13214 => 'km',
-  13215 => 'mm2',
-  13216 => 'cm2',
-  13217 => 'm2',
-  13218 => 'km2',
-  13219 => 'mm3',
-  13220 => 'cm3',
-  13221 => 'm3',
-  13222 => 'km3',
-  13223 => 'm∕s',
-  13224 => 'm∕s2',
-  13225 => 'pa',
-  13226 => 'kpa',
-  13227 => 'mpa',
-  13228 => 'gpa',
-  13229 => 'rad',
-  13230 => 'rad∕s',
-  13231 => 'rad∕s2',
-  13232 => 'ps',
-  13233 => 'ns',
-  13234 => 'μs',
-  13235 => 'ms',
-  13236 => 'pv',
-  13237 => 'nv',
-  13238 => 'μv',
-  13239 => 'mv',
-  13240 => 'kv',
-  13241 => 'mv',
-  13242 => 'pw',
-  13243 => 'nw',
-  13244 => 'μw',
-  13245 => 'mw',
-  13246 => 'kw',
-  13247 => 'mw',
-  13248 => 'kω',
-  13249 => 'mω',
-  13251 => 'bq',
-  13252 => 'cc',
-  13253 => 'cd',
-  13254 => 'c∕kg',
-  13256 => 'db',
-  13257 => 'gy',
-  13258 => 'ha',
-  13259 => 'hp',
-  13260 => 'in',
-  13261 => 'kk',
-  13262 => 'km',
-  13263 => 'kt',
-  13264 => 'lm',
-  13265 => 'ln',
-  13266 => 'log',
-  13267 => 'lx',
-  13268 => 'mb',
-  13269 => 'mil',
-  13270 => 'mol',
-  13271 => 'ph',
-  13273 => 'ppm',
-  13274 => 'pr',
-  13275 => 'sr',
-  13276 => 'sv',
-  13277 => 'wb',
-  13278 => 'v∕m',
-  13279 => 'a∕m',
-  13280 => '1æ—¥',
-  13281 => '2æ—¥',
-  13282 => '3æ—¥',
-  13283 => '4æ—¥',
-  13284 => '5æ—¥',
-  13285 => '6æ—¥',
-  13286 => '7æ—¥',
-  13287 => '8æ—¥',
-  13288 => '9æ—¥',
-  13289 => '10æ—¥',
-  13290 => '11æ—¥',
-  13291 => '12æ—¥',
-  13292 => '13æ—¥',
-  13293 => '14æ—¥',
-  13294 => '15æ—¥',
-  13295 => '16æ—¥',
-  13296 => '17æ—¥',
-  13297 => '18æ—¥',
-  13298 => '19æ—¥',
-  13299 => '20æ—¥',
-  13300 => '21æ—¥',
-  13301 => '22æ—¥',
-  13302 => '23æ—¥',
-  13303 => '24æ—¥',
-  13304 => '25æ—¥',
-  13305 => '26æ—¥',
-  13306 => '27æ—¥',
-  13307 => '28æ—¥',
-  13308 => '29æ—¥',
-  13309 => '30æ—¥',
-  13310 => '31æ—¥',
-  13311 => 'gal',
-  42560 => 'ꙁ',
-  42562 => 'ꙃ',
-  42564 => 'ê™…',
-  42566 => 'ꙇ',
-  42568 => 'ꙉ',
-  42570 => 'ꙋ',
-  42572 => 'ꙍ',
-  42574 => 'ꙏ',
-  42576 => 'ꙑ',
-  42578 => 'ꙓ',
-  42580 => 'ꙕ',
-  42582 => 'ê™—',
-  42584 => 'ê™™',
-  42586 => 'ê™›',
-  42588 => 'ꙝ',
-  42590 => 'ꙟ',
-  42592 => 'ꙡ',
-  42594 => 'ꙣ',
-  42596 => 'ꙥ',
-  42598 => 'ê™§',
-  42600 => 'ꙩ',
-  42602 => 'ꙫ',
-  42604 => 'ê™­',
-  42624 => 'ꚁ',
-  42626 => 'ꚃ',
-  42628 => 'êš…',
-  42630 => 'ꚇ',
-  42632 => 'ꚉ',
-  42634 => 'êš‹',
-  42636 => 'ꚍ',
-  42638 => 'ꚏ',
-  42640 => 'êš‘',
-  42642 => 'êš“',
-  42644 => 'êš•',
-  42646 => 'êš—',
-  42648 => 'êš™',
-  42650 => 'êš›',
-  42652 => 'ÑŠ',
-  42653 => 'ь',
-  42786 => 'ꜣ',
-  42788 => 'ꜥ',
-  42790 => 'ꜧ',
-  42792 => 'ꜩ',
-  42794 => 'ꜫ',
-  42796 => 'ꜭ',
-  42798 => 'ꜯ',
-  42802 => 'ꜳ',
-  42804 => 'ꜵ',
-  42806 => 'ꜷ',
-  42808 => 'ꜹ',
-  42810 => 'ꜻ',
-  42812 => 'ꜽ',
-  42814 => 'ꜿ',
-  42816 => 'ꝁ',
-  42818 => 'ꝃ',
-  42820 => 'ꝅ',
-  42822 => 'ꝇ',
-  42824 => 'ꝉ',
-  42826 => 'ꝋ',
-  42828 => 'ꝍ',
-  42830 => 'ꝏ',
-  42832 => 'ꝑ',
-  42834 => 'ꝓ',
-  42836 => 'ꝕ',
-  42838 => 'ꝗ',
-  42840 => 'ꝙ',
-  42842 => 'ꝛ',
-  42844 => 'ꝝ',
-  42846 => 'ꝟ',
-  42848 => 'ꝡ',
-  42850 => 'ꝣ',
-  42852 => 'ꝥ',
-  42854 => 'ꝧ',
-  42856 => 'ꝩ',
-  42858 => 'ꝫ',
-  42860 => 'ꝭ',
-  42862 => 'ꝯ',
-  42864 => 'ꝯ',
-  42873 => 'ꝺ',
-  42875 => 'ꝼ',
-  42877 => 'áµ¹',
-  42878 => 'ꝿ',
-  42880 => 'ꞁ',
-  42882 => 'ꞃ',
-  42884 => 'êž…',
-  42886 => 'ꞇ',
-  42891 => 'ꞌ',
-  42893 => 'É¥',
-  42896 => 'êž‘',
-  42898 => 'êž“',
-  42902 => 'êž—',
-  42904 => 'êž™',
-  42906 => 'êž›',
-  42908 => 'ꞝ',
-  42910 => 'ꞟ',
-  42912 => 'êž¡',
-  42914 => 'ꞣ',
-  42916 => 'ꞥ',
-  42918 => 'êž§',
-  42920 => 'êž©',
-  42922 => 'ɦ',
-  42923 => 'ɜ',
-  42924 => 'É¡',
-  42925 => 'ɬ',
-  42926 => 'ɪ',
-  42928 => 'Êž',
-  42929 => 'ʇ',
-  42930 => 'ʝ',
-  42931 => 'ê­“',
-  42932 => 'êžµ',
-  42934 => 'êž·',
-  42936 => 'êž¹',
-  42938 => 'êž»',
-  42940 => 'êž½',
-  42942 => 'êž¿',
-  42946 => 'ꟃ',
-  42948 => 'êž”',
-  42949 => 'Ê‚',
-  42950 => 'á¶Ž',
-  42951 => 'ꟈ',
-  42953 => 'ꟊ',
-  42997 => 'ꟶ',
-  43000 => 'ħ',
-  43001 => 'Å“',
-  43868 => 'ꜧ',
-  43869 => 'ꬷ',
-  43870 => 'É«',
-  43871 => 'ê­’',
-  43881 => 'ʍ',
-  43888 => 'Ꭰ',
-  43889 => 'Ꭱ',
-  43890 => 'Ꭲ',
-  43891 => 'Ꭳ',
-  43892 => 'Ꭴ',
-  43893 => 'Ꭵ',
-  43894 => 'Ꭶ',
-  43895 => 'Ꭷ',
-  43896 => 'Ꭸ',
-  43897 => 'Ꭹ',
-  43898 => 'Ꭺ',
-  43899 => 'Ꭻ',
-  43900 => 'Ꭼ',
-  43901 => 'Ꭽ',
-  43902 => 'Ꭾ',
-  43903 => 'Ꭿ',
-  43904 => 'Ꮀ',
-  43905 => 'Ꮁ',
-  43906 => 'Ꮂ',
-  43907 => 'Ꮃ',
-  43908 => 'Ꮄ',
-  43909 => 'Ꮅ',
-  43910 => 'Ꮆ',
-  43911 => 'Ꮇ',
-  43912 => 'Ꮈ',
-  43913 => 'Ꮉ',
-  43914 => 'Ꮊ',
-  43915 => 'Ꮋ',
-  43916 => 'Ꮌ',
-  43917 => 'Ꮍ',
-  43918 => 'Ꮎ',
-  43919 => 'Ꮏ',
-  43920 => 'Ꮐ',
-  43921 => 'Ꮑ',
-  43922 => 'Ꮒ',
-  43923 => 'Ꮓ',
-  43924 => 'Ꮔ',
-  43925 => 'Ꮕ',
-  43926 => 'Ꮖ',
-  43927 => 'Ꮗ',
-  43928 => 'Ꮘ',
-  43929 => 'Ꮙ',
-  43930 => 'Ꮚ',
-  43931 => 'Ꮛ',
-  43932 => 'Ꮜ',
-  43933 => 'Ꮝ',
-  43934 => 'Ꮞ',
-  43935 => 'Ꮟ',
-  43936 => 'Ꮠ',
-  43937 => 'Ꮡ',
-  43938 => 'Ꮢ',
-  43939 => 'Ꮣ',
-  43940 => 'Ꮤ',
-  43941 => 'Ꮥ',
-  43942 => 'Ꮦ',
-  43943 => 'Ꮧ',
-  43944 => 'Ꮨ',
-  43945 => 'Ꮩ',
-  43946 => 'Ꮪ',
-  43947 => 'Ꮫ',
-  43948 => 'Ꮬ',
-  43949 => 'Ꮭ',
-  43950 => 'Ꮮ',
-  43951 => 'Ꮯ',
-  43952 => 'Ꮰ',
-  43953 => 'Ꮱ',
-  43954 => 'Ꮲ',
-  43955 => 'Ꮳ',
-  43956 => 'Ꮴ',
-  43957 => 'Ꮵ',
-  43958 => 'Ꮶ',
-  43959 => 'Ꮷ',
-  43960 => 'Ꮸ',
-  43961 => 'Ꮹ',
-  43962 => 'Ꮺ',
-  43963 => 'Ꮻ',
-  43964 => 'Ꮼ',
-  43965 => 'Ꮽ',
-  43966 => 'Ꮾ',
-  43967 => 'Ꮿ',
-  63744 => '豈',
-  63745 => 'æ›´',
-  63746 => '車',
-  63747 => '賈',
-  63748 => '滑',
-  63749 => '串',
-  63750 => '句',
-  63751 => '龜',
-  63752 => '龜',
-  63753 => '契',
-  63754 => '金',
-  63755 => 'å–‡',
-  63756 => '奈',
-  63757 => '懶',
-  63758 => '癩',
-  63759 => 'ç¾…',
-  63760 => '蘿',
-  63761 => '螺',
-  63762 => '裸',
-  63763 => '邏',
-  63764 => '樂',
-  63765 => 'æ´›',
-  63766 => '烙',
-  63767 => '珞',
-  63768 => '落',
-  63769 => 'é…ª',
-  63770 => 'é§±',
-  63771 => '亂',
-  63772 => '卵',
-  63773 => '欄',
-  63774 => '爛',
-  63775 => '蘭',
-  63776 => '鸞',
-  63777 => '嵐',
-  63778 => 'æ¿«',
-  63779 => '藍',
-  63780 => '襤',
-  63781 => '拉',
-  63782 => '臘',
-  63783 => 'è Ÿ',
-  63784 => '廊',
-  63785 => '朗',
-  63786 => '浪',
-  63787 => '狼',
-  63788 => '郎',
-  63789 => '來',
-  63790 => '冷',
-  63791 => '勞',
-  63792 => 'æ“„',
-  63793 => 'æ«“',
-  63794 => '爐',
-  63795 => 'ç›§',
-  63796 => '老',
-  63797 => '蘆',
-  63798 => '虜',
-  63799 => 'è·¯',
-  63800 => '露',
-  63801 => 'é­¯',
-  63802 => 'é·º',
-  63803 => '碌',
-  63804 => '祿',
-  63805 => 'ç¶ ',
-  63806 => '菉',
-  63807 => '錄',
-  63808 => '鹿',
-  63809 => 'è«–',
-  63810 => '壟',
-  63811 => '弄',
-  63812 => 'ç± ',
-  63813 => '聾',
-  63814 => '牢',
-  63815 => '磊',
-  63816 => '賂',
-  63817 => 'é›·',
-  63818 => '壘',
-  63819 => 'å±¢',
-  63820 => '樓',
-  63821 => 'æ·š',
-  63822 => '漏',
-  63823 => 'ç´¯',
-  63824 => '縷',
-  63825 => '陋',
-  63826 => 'å‹’',
-  63827 => 'è‚‹',
-  63828 => '凜',
-  63829 => '凌',
-  63830 => '稜',
-  63831 => 'ç¶¾',
-  63832 => '菱',
-  63833 => '陵',
-  63834 => '讀',
-  63835 => '拏',
-  63836 => '樂',
-  63837 => '諾',
-  63838 => '丹',
-  63839 => '寧',
-  63840 => '怒',
-  63841 => '率',
-  63842 => 'ç•°',
-  63843 => '北',
-  63844 => '磻',
-  63845 => '便',
-  63846 => '復',
-  63847 => '不',
-  63848 => '泌',
-  63849 => '數',
-  63850 => 'ç´¢',
-  63851 => '參',
-  63852 => '塞',
-  63853 => '省',
-  63854 => '葉',
-  63855 => '說',
-  63856 => '殺',
-  63857 => 'è¾°',
-  63858 => '沈',
-  63859 => '拾',
-  63860 => 'è‹¥',
-  63861 => '掠',
-  63862 => 'ç•¥',
-  63863 => '亮',
-  63864 => 'å…©',
-  63865 => '凉',
-  63866 => '梁',
-  63867 => 'ç³§',
-  63868 => '良',
-  63869 => 'è«’',
-  63870 => '量',
-  63871 => '勵',
-  63872 => 'å‘‚',
-  63873 => '女',
-  63874 => '廬',
-  63875 => 'æ—…',
-  63876 => '濾',
-  63877 => '礪',
-  63878 => 'é–­',
-  63879 => '驪',
-  63880 => '麗',
-  63881 => '黎',
-  63882 => '力',
-  63883 => '曆',
-  63884 => 'æ­·',
-  63885 => 'è½¢',
-  63886 => 'å¹´',
-  63887 => '憐',
-  63888 => '戀',
-  63889 => 'æ’š',
-  63890 => 'æ¼£',
-  63891 => 'ç…‰',
-  63892 => 'ç’‰',
-  63893 => 'ç§Š',
-  63894 => 'ç·´',
-  63895 => '聯',
-  63896 => '輦',
-  63897 => 'è“®',
-  63898 => '連',
-  63899 => '鍊',
-  63900 => '列',
-  63901 => '劣',
-  63902 => 'å’½',
-  63903 => '烈',
-  63904 => '裂',
-  63905 => '說',
-  63906 => '廉',
-  63907 => '念',
-  63908 => '捻',
-  63909 => 'æ®®',
-  63910 => 'ç°¾',
-  63911 => '獵',
-  63912 => '令',
-  63913 => '囹',
-  63914 => '寧',
-  63915 => '嶺',
-  63916 => '怜',
-  63917 => '玲',
-  63918 => 'ç‘©',
-  63919 => '羚',
-  63920 => '聆',
-  63921 => '鈴',
-  63922 => 'é›¶',
-  63923 => '靈',
-  63924 => 'é ˜',
-  63925 => '例',
-  63926 => '禮',
-  63927 => '醴',
-  63928 => '隸',
-  63929 => '惡',
-  63930 => '了',
-  63931 => '僚',
-  63932 => '寮',
-  63933 => 'å°¿',
-  63934 => 'æ–™',
-  63935 => '樂',
-  63936 => '燎',
-  63937 => '療',
-  63938 => '蓼',
-  63939 => '遼',
-  63940 => '龍',
-  63941 => '暈',
-  63942 => '阮',
-  63943 => '劉',
-  63944 => '杻',
-  63945 => '柳',
-  63946 => '流',
-  63947 => '溜',
-  63948 => '琉',
-  63949 => 'ç•™',
-  63950 => 'ç¡«',
-  63951 => '紐',
-  63952 => '類',
-  63953 => 'å…­',
-  63954 => '戮',
-  63955 => '陸',
-  63956 => '倫',
-  63957 => 'å´™',
-  63958 => 'æ·ª',
-  63959 => '輪',
-  63960 => '律',
-  63961 => 'æ…„',
-  63962 => 'æ —',
-  63963 => '率',
-  63964 => '隆',
-  63965 => '利',
-  63966 => '吏',
-  63967 => 'å±¥',
-  63968 => '易',
-  63969 => '李',
-  63970 => '梨',
-  63971 => 'æ³¥',
-  63972 => '理',
-  63973 => 'ç—¢',
-  63974 => 'ç½¹',
-  63975 => '裏',
-  63976 => '裡',
-  63977 => '里',
-  63978 => '離',
-  63979 => '匿',
-  63980 => '溺',
-  63981 => '吝',
-  63982 => '燐',
-  63983 => 'ç’˜',
-  63984 => 'è—º',
-  63985 => '隣',
-  63986 => 'é±—',
-  63987 => '麟',
-  63988 => 'æž—',
-  63989 => 'æ·‹',
-  63990 => '臨',
-  63991 => 'ç«‹',
-  63992 => '笠',
-  63993 => 'ç²’',
-  63994 => 'ç‹€',
-  63995 => 'ç‚™',
-  63996 => 'è­˜',
-  63997 => '什',
-  63998 => '茶',
-  63999 => '刺',
-  64000 => '切',
-  64001 => '度',
-  64002 => 'æ‹“',
-  64003 => 'ç³–',
-  64004 => 'å®…',
-  64005 => 'æ´ž',
-  64006 => 'æš´',
-  64007 => 'è¼»',
-  64008 => '行',
-  64009 => '降',
-  64010 => '見',
-  64011 => '廓',
-  64012 => 'å…€',
-  64013 => 'å—€',
-  64016 => '塚',
-  64018 => 'æ™´',
-  64021 => '凞',
-  64022 => '猪',
-  64023 => '益',
-  64024 => '礼',
-  64025 => '神',
-  64026 => '祥',
-  64027 => '福',
-  64028 => '靖',
-  64029 => 'ç²¾',
-  64030 => 'ç¾½',
-  64032 => '蘒',
-  64034 => '諸',
-  64037 => '逸',
-  64038 => '都',
-  64042 => '飯',
-  64043 => '飼',
-  64044 => '館',
-  64045 => 'é¶´',
-  64046 => '郞',
-  64047 => 'éš·',
-  64048 => 'ä¾®',
-  64049 => '僧',
-  64050 => '免',
-  64051 => '勉',
-  64052 => '勤',
-  64053 => '卑',
-  64054 => '喝',
-  64055 => '嘆',
-  64056 => '器',
-  64057 => 'å¡€',
-  64058 => '墨',
-  64059 => '層',
-  64060 => 'å±®',
-  64061 => 'æ‚”',
-  64062 => 'æ…¨',
-  64063 => '憎',
-  64064 => '懲',
-  64065 => '敏',
-  64066 => 'æ—¢',
-  64067 => 'æš‘',
-  64068 => '梅',
-  64069 => 'æµ·',
-  64070 => '渚',
-  64071 => 'æ¼¢',
-  64072 => 'ç…®',
-  64073 => '爫',
-  64074 => '琢',
-  64075 => '碑',
-  64076 => '社',
-  64077 => '祉',
-  64078 => '祈',
-  64079 => '祐',
-  64080 => '祖',
-  64081 => '祝',
-  64082 => '禍',
-  64083 => '禎',
-  64084 => 'ç©€',
-  64085 => '突',
-  64086 => '節',
-  64087 => 'ç·´',
-  64088 => '縉',
-  64089 => '繁',
-  64090 => 'ç½²',
-  64091 => '者',
-  64092 => '臭',
-  64093 => '艹',
-  64094 => '艹',
-  64095 => 'è‘—',
-  64096 => '褐',
-  64097 => '視',
-  64098 => '謁',
-  64099 => '謹',
-  64100 => '賓',
-  64101 => 'è´ˆ',
-  64102 => 'è¾¶',
-  64103 => '逸',
-  64104 => '難',
-  64105 => '響',
-  64106 => 'é »',
-  64107 => '恵',
-  64108 => '𤋮',
-  64109 => '舘',
-  64112 => '並',
-  64113 => '况',
-  64114 => 'å…¨',
-  64115 => 'ä¾€',
-  64116 => 'å……',
-  64117 => '冀',
-  64118 => '勇',
-  64119 => '勺',
-  64120 => '喝',
-  64121 => 'å••',
-  64122 => 'å–™',
-  64123 => 'å—¢',
-  64124 => '塚',
-  64125 => '墳',
-  64126 => '奄',
-  64127 => '奔',
-  64128 => 'å©¢',
-  64129 => '嬨',
-  64130 => 'å»’',
-  64131 => 'å»™',
-  64132 => '彩',
-  64133 => 'å¾­',
-  64134 => '惘',
-  64135 => 'æ…Ž',
-  64136 => '愈',
-  64137 => '憎',
-  64138 => 'æ… ',
-  64139 => '懲',
-  64140 => '戴',
-  64141 => '揄',
-  64142 => '搜',
-  64143 => 'æ‘’',
-  64144 => 'æ•–',
-  64145 => 'æ™´',
-  64146 => '朗',
-  64147 => '望',
-  64148 => '杖',
-  64149 => 'æ­¹',
-  64150 => '殺',
-  64151 => '流',
-  64152 => 'æ»›',
-  64153 => '滋',
-  64154 => 'æ¼¢',
-  64155 => '瀞',
-  64156 => 'ç…®',
-  64157 => 'çž§',
-  64158 => '爵',
-  64159 => '犯',
-  64160 => '猪',
-  64161 => '瑱',
-  64162 => '甆',
-  64163 => 'ç”»',
-  64164 => '瘝',
-  64165 => '瘟',
-  64166 => '益',
-  64167 => 'ç››',
-  64168 => 'ç›´',
-  64169 => '睊',
-  64170 => '着',
-  64171 => '磌',
-  64172 => '窱',
-  64173 => '節',
-  64174 => 'ç±»',
-  64175 => 'çµ›',
-  64176 => 'ç·´',
-  64177 => 'ç¼¾',
-  64178 => '者',
-  64179 => '荒',
-  64180 => '華',
-  64181 => '蝹',
-  64182 => '襁',
-  64183 => '覆',
-  64184 => '視',
-  64185 => '調',
-  64186 => '諸',
-  64187 => 'è«‹',
-  64188 => '謁',
-  64189 => '諾',
-  64190 => 'è«­',
-  64191 => '謹',
-  64192 => '變',
-  64193 => 'è´ˆ',
-  64194 => '輸',
-  64195 => '遲',
-  64196 => '醙',
-  64197 => '鉶',
-  64198 => '陼',
-  64199 => '難',
-  64200 => '靖',
-  64201 => '韛',
-  64202 => '響',
-  64203 => 'é ‹',
-  64204 => 'é »',
-  64205 => '鬒',
-  64206 => '龜',
-  64207 => '𢡊',
-  64208 => '𢡄',
-  64209 => '𣏕',
-  64210 => '㮝',
-  64211 => '䀘',
-  64212 => '䀹',
-  64213 => '𥉉',
-  64214 => '𥳐',
-  64215 => '𧻓',
-  64216 => '齃',
-  64217 => '龎',
-  64256 => 'ff',
-  64257 => 'fi',
-  64258 => 'fl',
-  64259 => 'ffi',
-  64260 => 'ffl',
-  64261 => 'st',
-  64262 => 'st',
-  64275 => 'Õ´Õ¶',
-  64276 => 'Õ´Õ¥',
-  64277 => 'Õ´Õ«',
-  64278 => 'Õ¾Õ¶',
-  64279 => 'Õ´Õ­',
-  64285 => '×™Ö´',
-  64287 => 'ײַ',
-  64288 => '×¢',
-  64289 => 'א',
-  64290 => 'ד',
-  64291 => '×”',
-  64292 => '×›',
-  64293 => 'ל',
-  64294 => 'ם',
-  64295 => 'ר',
-  64296 => 'ת',
-  64298 => 'שׁ',
-  64299 => 'שׂ',
-  64300 => 'שּׁ',
-  64301 => 'שּׂ',
-  64302 => 'אַ',
-  64303 => 'אָ',
-  64304 => 'אּ',
-  64305 => 'בּ',
-  64306 => '×’Ö¼',
-  64307 => 'דּ',
-  64308 => '×”Ö¼',
-  64309 => 'וּ',
-  64310 => '×–Ö¼',
-  64312 => 'טּ',
-  64313 => '×™Ö¼',
-  64314 => 'ךּ',
-  64315 => '×›Ö¼',
-  64316 => 'לּ',
-  64318 => 'מּ',
-  64320 => '× Ö¼',
-  64321 => 'סּ',
-  64323 => '×£Ö¼',
-  64324 => 'פּ',
-  64326 => 'צּ',
-  64327 => '×§Ö¼',
-  64328 => 'רּ',
-  64329 => 'שּ',
-  64330 => 'תּ',
-  64331 => 'וֹ',
-  64332 => 'בֿ',
-  64333 => '×›Ö¿',
-  64334 => 'פֿ',
-  64335 => 'אל',
-  64336 => 'Ù±',
-  64337 => 'Ù±',
-  64338 => 'Ù»',
-  64339 => 'Ù»',
-  64340 => 'Ù»',
-  64341 => 'Ù»',
-  64342 => 'Ù¾',
-  64343 => 'Ù¾',
-  64344 => 'Ù¾',
-  64345 => 'Ù¾',
-  64346 => 'Ú€',
-  64347 => 'Ú€',
-  64348 => 'Ú€',
-  64349 => 'Ú€',
-  64350 => 'Ùº',
-  64351 => 'Ùº',
-  64352 => 'Ùº',
-  64353 => 'Ùº',
-  64354 => 'Ù¿',
-  64355 => 'Ù¿',
-  64356 => 'Ù¿',
-  64357 => 'Ù¿',
-  64358 => 'Ù¹',
-  64359 => 'Ù¹',
-  64360 => 'Ù¹',
-  64361 => 'Ù¹',
-  64362 => 'Ú¤',
-  64363 => 'Ú¤',
-  64364 => 'Ú¤',
-  64365 => 'Ú¤',
-  64366 => 'Ú¦',
-  64367 => 'Ú¦',
-  64368 => 'Ú¦',
-  64369 => 'Ú¦',
-  64370 => 'Ú„',
-  64371 => 'Ú„',
-  64372 => 'Ú„',
-  64373 => 'Ú„',
-  64374 => 'Úƒ',
-  64375 => 'Úƒ',
-  64376 => 'Úƒ',
-  64377 => 'Úƒ',
-  64378 => 'Ú†',
-  64379 => 'Ú†',
-  64380 => 'Ú†',
-  64381 => 'Ú†',
-  64382 => 'Ú‡',
-  64383 => 'Ú‡',
-  64384 => 'Ú‡',
-  64385 => 'Ú‡',
-  64386 => 'ڍ',
-  64387 => 'ڍ',
-  64388 => 'ڌ',
-  64389 => 'ڌ',
-  64390 => 'ÚŽ',
-  64391 => 'ÚŽ',
-  64392 => 'Úˆ',
-  64393 => 'Úˆ',
-  64394 => 'Ú˜',
-  64395 => 'Ú˜',
-  64396 => 'Ú‘',
-  64397 => 'Ú‘',
-  64398 => 'Ú©',
-  64399 => 'Ú©',
-  64400 => 'Ú©',
-  64401 => 'Ú©',
-  64402 => 'Ú¯',
-  64403 => 'Ú¯',
-  64404 => 'Ú¯',
-  64405 => 'Ú¯',
-  64406 => 'Ú³',
-  64407 => 'Ú³',
-  64408 => 'Ú³',
-  64409 => 'Ú³',
-  64410 => 'Ú±',
-  64411 => 'Ú±',
-  64412 => 'Ú±',
-  64413 => 'Ú±',
-  64414 => 'Úº',
-  64415 => 'Úº',
-  64416 => 'Ú»',
-  64417 => 'Ú»',
-  64418 => 'Ú»',
-  64419 => 'Ú»',
-  64420 => 'Û€',
-  64421 => 'Û€',
-  64422 => 'ہ',
-  64423 => 'ہ',
-  64424 => 'ہ',
-  64425 => 'ہ',
-  64426 => 'Ú¾',
-  64427 => 'Ú¾',
-  64428 => 'Ú¾',
-  64429 => 'Ú¾',
-  64430 => 'Û’',
-  64431 => 'Û’',
-  64432 => 'Û“',
-  64433 => 'Û“',
-  64467 => 'Ú­',
-  64468 => 'Ú­',
-  64469 => 'Ú­',
-  64470 => 'Ú­',
-  64471 => 'Û‡',
-  64472 => 'Û‡',
-  64473 => 'Û†',
-  64474 => 'Û†',
-  64475 => 'Ûˆ',
-  64476 => 'Ûˆ',
-  64477 => 'Û‡Ù´',
-  64478 => 'Û‹',
-  64479 => 'Û‹',
-  64480 => 'Û…',
-  64481 => 'Û…',
-  64482 => 'Û‰',
-  64483 => 'Û‰',
-  64484 => 'ې',
-  64485 => 'ې',
-  64486 => 'ې',
-  64487 => 'ې',
-  64488 => 'Ù‰',
-  64489 => 'Ù‰',
-  64490 => 'ئا',
-  64491 => 'ئا',
-  64492 => 'ئە',
-  64493 => 'ئە',
-  64494 => 'ئو',
-  64495 => 'ئو',
-  64496 => 'ئۇ',
-  64497 => 'ئۇ',
-  64498 => 'ئۆ',
-  64499 => 'ئۆ',
-  64500 => 'ئۈ',
-  64501 => 'ئۈ',
-  64502 => 'ئې',
-  64503 => 'ئې',
-  64504 => 'ئې',
-  64505 => 'ئى',
-  64506 => 'ئى',
-  64507 => 'ئى',
-  64508 => 'ی',
-  64509 => 'ی',
-  64510 => 'ی',
-  64511 => 'ی',
-  64512 => 'ئج',
-  64513 => 'ئح',
-  64514 => 'ئم',
-  64515 => 'ئى',
-  64516 => 'ئي',
-  64517 => 'بج',
-  64518 => 'بح',
-  64519 => 'بخ',
-  64520 => 'بم',
-  64521 => 'بى',
-  64522 => 'بي',
-  64523 => 'تج',
-  64524 => 'تح',
-  64525 => 'تخ',
-  64526 => 'تم',
-  64527 => 'تى',
-  64528 => 'تي',
-  64529 => 'ثج',
-  64530 => 'ثم',
-  64531 => 'ثى',
-  64532 => 'ثي',
-  64533 => 'جح',
-  64534 => 'جم',
-  64535 => 'حج',
-  64536 => 'حم',
-  64537 => 'خج',
-  64538 => 'خح',
-  64539 => 'خم',
-  64540 => 'سج',
-  64541 => 'سح',
-  64542 => 'سخ',
-  64543 => 'سم',
-  64544 => 'صح',
-  64545 => 'صم',
-  64546 => 'ضج',
-  64547 => 'ضح',
-  64548 => 'ضخ',
-  64549 => 'ضم',
-  64550 => 'طح',
-  64551 => 'طم',
-  64552 => 'ظم',
-  64553 => 'عج',
-  64554 => 'عم',
-  64555 => 'غج',
-  64556 => 'غم',
-  64557 => 'فج',
-  64558 => 'فح',
-  64559 => 'فخ',
-  64560 => 'فم',
-  64561 => 'فى',
-  64562 => 'في',
-  64563 => 'قح',
-  64564 => 'قم',
-  64565 => 'قى',
-  64566 => 'قي',
-  64567 => 'كا',
-  64568 => 'كج',
-  64569 => 'كح',
-  64570 => 'كخ',
-  64571 => 'كل',
-  64572 => 'كم',
-  64573 => 'كى',
-  64574 => 'كي',
-  64575 => 'لج',
-  64576 => 'لح',
-  64577 => 'لخ',
-  64578 => 'لم',
-  64579 => 'لى',
-  64580 => 'لي',
-  64581 => 'مج',
-  64582 => 'مح',
-  64583 => 'مخ',
-  64584 => 'مم',
-  64585 => 'مى',
-  64586 => 'مي',
-  64587 => 'نج',
-  64588 => 'نح',
-  64589 => 'نخ',
-  64590 => 'نم',
-  64591 => 'نى',
-  64592 => 'ني',
-  64593 => 'هج',
-  64594 => 'هم',
-  64595 => 'هى',
-  64596 => 'هي',
-  64597 => 'يج',
-  64598 => 'يح',
-  64599 => 'يخ',
-  64600 => 'يم',
-  64601 => 'يى',
-  64602 => 'يي',
-  64603 => 'ذٰ',
-  64604 => 'رٰ',
-  64605 => 'ىٰ',
-  64612 => 'ئر',
-  64613 => 'ئز',
-  64614 => 'ئم',
-  64615 => 'ئن',
-  64616 => 'ئى',
-  64617 => 'ئي',
-  64618 => 'بر',
-  64619 => 'بز',
-  64620 => 'بم',
-  64621 => 'بن',
-  64622 => 'بى',
-  64623 => 'بي',
-  64624 => 'تر',
-  64625 => 'تز',
-  64626 => 'تم',
-  64627 => 'تن',
-  64628 => 'تى',
-  64629 => 'تي',
-  64630 => 'ثر',
-  64631 => 'ثز',
-  64632 => 'ثم',
-  64633 => 'ثن',
-  64634 => 'ثى',
-  64635 => 'ثي',
-  64636 => 'فى',
-  64637 => 'في',
-  64638 => 'قى',
-  64639 => 'قي',
-  64640 => 'كا',
-  64641 => 'كل',
-  64642 => 'كم',
-  64643 => 'كى',
-  64644 => 'كي',
-  64645 => 'لم',
-  64646 => 'لى',
-  64647 => 'لي',
-  64648 => 'ما',
-  64649 => 'مم',
-  64650 => 'نر',
-  64651 => 'نز',
-  64652 => 'نم',
-  64653 => 'نن',
-  64654 => 'نى',
-  64655 => 'ني',
-  64656 => 'ىٰ',
-  64657 => 'ير',
-  64658 => 'يز',
-  64659 => 'يم',
-  64660 => 'ين',
-  64661 => 'يى',
-  64662 => 'يي',
-  64663 => 'ئج',
-  64664 => 'ئح',
-  64665 => 'ئخ',
-  64666 => 'ئم',
-  64667 => 'ئه',
-  64668 => 'بج',
-  64669 => 'بح',
-  64670 => 'بخ',
-  64671 => 'بم',
-  64672 => 'به',
-  64673 => 'تج',
-  64674 => 'تح',
-  64675 => 'تخ',
-  64676 => 'تم',
-  64677 => 'ته',
-  64678 => 'ثم',
-  64679 => 'جح',
-  64680 => 'جم',
-  64681 => 'حج',
-  64682 => 'حم',
-  64683 => 'خج',
-  64684 => 'خم',
-  64685 => 'سج',
-  64686 => 'سح',
-  64687 => 'سخ',
-  64688 => 'سم',
-  64689 => 'صح',
-  64690 => 'صخ',
-  64691 => 'صم',
-  64692 => 'ضج',
-  64693 => 'ضح',
-  64694 => 'ضخ',
-  64695 => 'ضم',
-  64696 => 'طح',
-  64697 => 'ظم',
-  64698 => 'عج',
-  64699 => 'عم',
-  64700 => 'غج',
-  64701 => 'غم',
-  64702 => 'فج',
-  64703 => 'فح',
-  64704 => 'فخ',
-  64705 => 'فم',
-  64706 => 'قح',
-  64707 => 'قم',
-  64708 => 'كج',
-  64709 => 'كح',
-  64710 => 'كخ',
-  64711 => 'كل',
-  64712 => 'كم',
-  64713 => 'لج',
-  64714 => 'لح',
-  64715 => 'لخ',
-  64716 => 'لم',
-  64717 => 'له',
-  64718 => 'مج',
-  64719 => 'مح',
-  64720 => 'مخ',
-  64721 => 'مم',
-  64722 => 'نج',
-  64723 => 'نح',
-  64724 => 'نخ',
-  64725 => 'نم',
-  64726 => 'نه',
-  64727 => 'هج',
-  64728 => 'هم',
-  64729 => 'هٰ',
-  64730 => 'يج',
-  64731 => 'يح',
-  64732 => 'يخ',
-  64733 => 'يم',
-  64734 => 'يه',
-  64735 => 'ئم',
-  64736 => 'ئه',
-  64737 => 'بم',
-  64738 => 'به',
-  64739 => 'تم',
-  64740 => 'ته',
-  64741 => 'ثم',
-  64742 => 'ثه',
-  64743 => 'سم',
-  64744 => 'سه',
-  64745 => 'شم',
-  64746 => 'شه',
-  64747 => 'كل',
-  64748 => 'كم',
-  64749 => 'لم',
-  64750 => 'نم',
-  64751 => 'نه',
-  64752 => 'يم',
-  64753 => 'يه',
-  64754 => 'Ù€ÙŽÙ‘',
-  64755 => 'ـُّ',
-  64756 => 'ـِّ',
-  64757 => 'طى',
-  64758 => 'طي',
-  64759 => 'عى',
-  64760 => 'عي',
-  64761 => 'غى',
-  64762 => 'غي',
-  64763 => 'سى',
-  64764 => 'سي',
-  64765 => 'شى',
-  64766 => 'شي',
-  64767 => 'حى',
-  64768 => 'حي',
-  64769 => 'جى',
-  64770 => 'جي',
-  64771 => 'خى',
-  64772 => 'خي',
-  64773 => 'صى',
-  64774 => 'صي',
-  64775 => 'ضى',
-  64776 => 'ضي',
-  64777 => 'شج',
-  64778 => 'شح',
-  64779 => 'شخ',
-  64780 => 'شم',
-  64781 => 'شر',
-  64782 => 'سر',
-  64783 => 'صر',
-  64784 => 'ضر',
-  64785 => 'طى',
-  64786 => 'طي',
-  64787 => 'عى',
-  64788 => 'عي',
-  64789 => 'غى',
-  64790 => 'غي',
-  64791 => 'سى',
-  64792 => 'سي',
-  64793 => 'شى',
-  64794 => 'شي',
-  64795 => 'حى',
-  64796 => 'حي',
-  64797 => 'جى',
-  64798 => 'جي',
-  64799 => 'خى',
-  64800 => 'خي',
-  64801 => 'صى',
-  64802 => 'صي',
-  64803 => 'ضى',
-  64804 => 'ضي',
-  64805 => 'شج',
-  64806 => 'شح',
-  64807 => 'شخ',
-  64808 => 'شم',
-  64809 => 'شر',
-  64810 => 'سر',
-  64811 => 'صر',
-  64812 => 'ضر',
-  64813 => 'شج',
-  64814 => 'شح',
-  64815 => 'شخ',
-  64816 => 'شم',
-  64817 => 'سه',
-  64818 => 'شه',
-  64819 => 'طم',
-  64820 => 'سج',
-  64821 => 'سح',
-  64822 => 'سخ',
-  64823 => 'شج',
-  64824 => 'شح',
-  64825 => 'شخ',
-  64826 => 'طم',
-  64827 => 'ظم',
-  64828 => 'اً',
-  64829 => 'اً',
-  64848 => 'تجم',
-  64849 => 'تحج',
-  64850 => 'تحج',
-  64851 => 'تحم',
-  64852 => 'تخم',
-  64853 => 'تمج',
-  64854 => 'تمح',
-  64855 => 'تمخ',
-  64856 => 'جمح',
-  64857 => 'جمح',
-  64858 => 'حمي',
-  64859 => 'حمى',
-  64860 => 'سحج',
-  64861 => 'سجح',
-  64862 => 'سجى',
-  64863 => 'سمح',
-  64864 => 'سمح',
-  64865 => 'سمج',
-  64866 => 'سمم',
-  64867 => 'سمم',
-  64868 => 'صحح',
-  64869 => 'صحح',
-  64870 => 'صمم',
-  64871 => 'شحم',
-  64872 => 'شحم',
-  64873 => 'شجي',
-  64874 => 'شمخ',
-  64875 => 'شمخ',
-  64876 => 'شمم',
-  64877 => 'شمم',
-  64878 => 'ضحى',
-  64879 => 'ضخم',
-  64880 => 'ضخم',
-  64881 => 'طمح',
-  64882 => 'طمح',
-  64883 => 'طمم',
-  64884 => 'طمي',
-  64885 => 'عجم',
-  64886 => 'عمم',
-  64887 => 'عمم',
-  64888 => 'عمى',
-  64889 => 'غمم',
-  64890 => 'غمي',
-  64891 => 'غمى',
-  64892 => 'فخم',
-  64893 => 'فخم',
-  64894 => 'قمح',
-  64895 => 'قمم',
-  64896 => 'لحم',
-  64897 => 'لحي',
-  64898 => 'لحى',
-  64899 => 'لجج',
-  64900 => 'لجج',
-  64901 => 'لخم',
-  64902 => 'لخم',
-  64903 => 'لمح',
-  64904 => 'لمح',
-  64905 => 'محج',
-  64906 => 'محم',
-  64907 => 'محي',
-  64908 => 'مجح',
-  64909 => 'مجم',
-  64910 => 'مخج',
-  64911 => 'مخم',
-  64914 => 'مجخ',
-  64915 => 'همج',
-  64916 => 'همم',
-  64917 => 'نحم',
-  64918 => 'نحى',
-  64919 => 'نجم',
-  64920 => 'نجم',
-  64921 => 'نجى',
-  64922 => 'نمي',
-  64923 => 'نمى',
-  64924 => 'يمم',
-  64925 => 'يمم',
-  64926 => 'بخي',
-  64927 => 'تجي',
-  64928 => 'تجى',
-  64929 => 'تخي',
-  64930 => 'تخى',
-  64931 => 'تمي',
-  64932 => 'تمى',
-  64933 => 'جمي',
-  64934 => 'جحى',
-  64935 => 'جمى',
-  64936 => 'سخى',
-  64937 => 'صحي',
-  64938 => 'شحي',
-  64939 => 'ضحي',
-  64940 => 'لجي',
-  64941 => 'لمي',
-  64942 => 'يحي',
-  64943 => 'يجي',
-  64944 => 'يمي',
-  64945 => 'ممي',
-  64946 => 'قمي',
-  64947 => 'نحي',
-  64948 => 'قمح',
-  64949 => 'لحم',
-  64950 => 'عمي',
-  64951 => 'كمي',
-  64952 => 'نجح',
-  64953 => 'مخي',
-  64954 => 'لجم',
-  64955 => 'كمم',
-  64956 => 'لجم',
-  64957 => 'نجح',
-  64958 => 'جحي',
-  64959 => 'حجي',
-  64960 => 'مجي',
-  64961 => 'فمي',
-  64962 => 'بحي',
-  64963 => 'كمم',
-  64964 => 'عجم',
-  64965 => 'صمم',
-  64966 => 'سخي',
-  64967 => 'نجي',
-  65008 => 'صلے',
-  65009 => 'قلے',
-  65010 => 'الله',
-  65011 => 'اكبر',
-  65012 => 'محمد',
-  65013 => 'صلعم',
-  65014 => 'رسول',
-  65015 => 'عليه',
-  65016 => 'وسلم',
-  65017 => 'صلى',
-  65020 => 'ریال',
-  65041 => '、',
-  65047 => '〖',
-  65048 => '〗',
-  65073 => '—',
-  65074 => '–',
-  65081 => '〔',
-  65082 => '〕',
-  65083 => '【',
-  65084 => '】',
-  65085 => '《',
-  65086 => '》',
-  65087 => '〈',
-  65088 => '〉',
-  65089 => '「',
-  65090 => '」',
-  65091 => '『',
-  65092 => '』',
-  65105 => '、',
-  65112 => '—',
-  65117 => '〔',
-  65118 => '〕',
-  65123 => '-',
-  65137 => 'ـً',
-  65143 => 'Ù€ÙŽ',
-  65145 => 'ـُ',
-  65147 => 'ـِ',
-  65149 => 'ـّ',
-  65151 => 'ـْ',
-  65152 => 'Ø¡',
-  65153 => 'Ø¢',
-  65154 => 'Ø¢',
-  65155 => 'Ø£',
-  65156 => 'Ø£',
-  65157 => 'ؤ',
-  65158 => 'ؤ',
-  65159 => 'Ø¥',
-  65160 => 'Ø¥',
-  65161 => 'ئ',
-  65162 => 'ئ',
-  65163 => 'ئ',
-  65164 => 'ئ',
-  65165 => 'ا',
-  65166 => 'ا',
-  65167 => 'ب',
-  65168 => 'ب',
-  65169 => 'ب',
-  65170 => 'ب',
-  65171 => 'Ø©',
-  65172 => 'Ø©',
-  65173 => 'ت',
-  65174 => 'ت',
-  65175 => 'ت',
-  65176 => 'ت',
-  65177 => 'Ø«',
-  65178 => 'Ø«',
-  65179 => 'Ø«',
-  65180 => 'Ø«',
-  65181 => 'ج',
-  65182 => 'ج',
-  65183 => 'ج',
-  65184 => 'ج',
-  65185 => 'Ø­',
-  65186 => 'Ø­',
-  65187 => 'Ø­',
-  65188 => 'Ø­',
-  65189 => 'Ø®',
-  65190 => 'Ø®',
-  65191 => 'Ø®',
-  65192 => 'Ø®',
-  65193 => 'د',
-  65194 => 'د',
-  65195 => 'ذ',
-  65196 => 'ذ',
-  65197 => 'ر',
-  65198 => 'ر',
-  65199 => 'ز',
-  65200 => 'ز',
-  65201 => 'س',
-  65202 => 'س',
-  65203 => 'س',
-  65204 => 'س',
-  65205 => 'Ø´',
-  65206 => 'Ø´',
-  65207 => 'Ø´',
-  65208 => 'Ø´',
-  65209 => 'ص',
-  65210 => 'ص',
-  65211 => 'ص',
-  65212 => 'ص',
-  65213 => 'ض',
-  65214 => 'ض',
-  65215 => 'ض',
-  65216 => 'ض',
-  65217 => 'Ø·',
-  65218 => 'Ø·',
-  65219 => 'Ø·',
-  65220 => 'Ø·',
-  65221 => 'ظ',
-  65222 => 'ظ',
-  65223 => 'ظ',
-  65224 => 'ظ',
-  65225 => 'ع',
-  65226 => 'ع',
-  65227 => 'ع',
-  65228 => 'ع',
-  65229 => 'غ',
-  65230 => 'غ',
-  65231 => 'غ',
-  65232 => 'غ',
-  65233 => 'ف',
-  65234 => 'ف',
-  65235 => 'ف',
-  65236 => 'ف',
-  65237 => 'Ù‚',
-  65238 => 'Ù‚',
-  65239 => 'Ù‚',
-  65240 => 'Ù‚',
-  65241 => 'Ùƒ',
-  65242 => 'Ùƒ',
-  65243 => 'Ùƒ',
-  65244 => 'Ùƒ',
-  65245 => 'Ù„',
-  65246 => 'Ù„',
-  65247 => 'Ù„',
-  65248 => 'Ù„',
-  65249 => 'Ù…',
-  65250 => 'Ù…',
-  65251 => 'Ù…',
-  65252 => 'Ù…',
-  65253 => 'Ù†',
-  65254 => 'Ù†',
-  65255 => 'Ù†',
-  65256 => 'Ù†',
-  65257 => 'Ù‡',
-  65258 => 'Ù‡',
-  65259 => 'Ù‡',
-  65260 => 'Ù‡',
-  65261 => 'Ùˆ',
-  65262 => 'Ùˆ',
-  65263 => 'Ù‰',
-  65264 => 'Ù‰',
-  65265 => 'ÙŠ',
-  65266 => 'ÙŠ',
-  65267 => 'ÙŠ',
-  65268 => 'ÙŠ',
-  65269 => 'لآ',
-  65270 => 'لآ',
-  65271 => 'لأ',
-  65272 => 'لأ',
-  65273 => 'لإ',
-  65274 => 'لإ',
-  65275 => 'لا',
-  65276 => 'لا',
-  65293 => '-',
-  65294 => '.',
-  65296 => '0',
-  65297 => '1',
-  65298 => '2',
-  65299 => '3',
-  65300 => '4',
-  65301 => '5',
-  65302 => '6',
-  65303 => '7',
-  65304 => '8',
-  65305 => '9',
-  65313 => 'a',
-  65314 => 'b',
-  65315 => 'c',
-  65316 => 'd',
-  65317 => 'e',
-  65318 => 'f',
-  65319 => 'g',
-  65320 => 'h',
-  65321 => 'i',
-  65322 => 'j',
-  65323 => 'k',
-  65324 => 'l',
-  65325 => 'm',
-  65326 => 'n',
-  65327 => 'o',
-  65328 => 'p',
-  65329 => 'q',
-  65330 => 'r',
-  65331 => 's',
-  65332 => 't',
-  65333 => 'u',
-  65334 => 'v',
-  65335 => 'w',
-  65336 => 'x',
-  65337 => 'y',
-  65338 => 'z',
-  65345 => 'a',
-  65346 => 'b',
-  65347 => 'c',
-  65348 => 'd',
-  65349 => 'e',
-  65350 => 'f',
-  65351 => 'g',
-  65352 => 'h',
-  65353 => 'i',
-  65354 => 'j',
-  65355 => 'k',
-  65356 => 'l',
-  65357 => 'm',
-  65358 => 'n',
-  65359 => 'o',
-  65360 => 'p',
-  65361 => 'q',
-  65362 => 'r',
-  65363 => 's',
-  65364 => 't',
-  65365 => 'u',
-  65366 => 'v',
-  65367 => 'w',
-  65368 => 'x',
-  65369 => 'y',
-  65370 => 'z',
-  65375 => '⦅',
-  65376 => '⦆',
-  65377 => '.',
-  65378 => '「',
-  65379 => '」',
-  65380 => '、',
-  65381 => '・',
-  65382 => 'ヲ',
-  65383 => 'ã‚¡',
-  65384 => 'ã‚£',
-  65385 => 'ã‚¥',
-  65386 => 'ã‚§',
-  65387 => 'ã‚©',
-  65388 => 'ャ',
-  65389 => 'ュ',
-  65390 => 'ョ',
-  65391 => 'ッ',
-  65392 => 'ー',
-  65393 => 'ã‚¢',
-  65394 => 'イ',
-  65395 => 'ウ',
-  65396 => 'エ',
-  65397 => 'オ',
-  65398 => 'ã‚«',
-  65399 => 'ã‚­',
-  65400 => 'ク',
-  65401 => 'ケ',
-  65402 => 'コ',
-  65403 => 'サ',
-  65404 => 'ã‚·',
-  65405 => 'ス',
-  65406 => 'ã‚»',
-  65407 => 'ソ',
-  65408 => 'ã‚¿',
-  65409 => 'チ',
-  65410 => 'ツ',
-  65411 => 'テ',
-  65412 => 'ト',
-  65413 => 'ナ',
-  65414 => 'ニ',
-  65415 => 'ヌ',
-  65416 => 'ネ',
-  65417 => 'ノ',
-  65418 => 'ハ',
-  65419 => 'ヒ',
-  65420 => 'フ',
-  65421 => 'ヘ',
-  65422 => 'ホ',
-  65423 => 'マ',
-  65424 => 'ミ',
-  65425 => 'ム',
-  65426 => 'メ',
-  65427 => 'モ',
-  65428 => 'ヤ',
-  65429 => 'ユ',
-  65430 => 'ヨ',
-  65431 => 'ラ',
-  65432 => 'リ',
-  65433 => 'ル',
-  65434 => 'レ',
-  65435 => 'ロ',
-  65436 => 'ワ',
-  65437 => 'ン',
-  65438 => 'ã‚™',
-  65439 => '゚',
-  65441 => 'á„€',
-  65442 => 'ᄁ',
-  65443 => 'ᆪ',
-  65444 => 'á„‚',
-  65445 => 'ᆬ',
-  65446 => 'ᆭ',
-  65447 => 'ᄃ',
-  65448 => 'á„„',
-  65449 => 'á„…',
-  65450 => 'ᆰ',
-  65451 => 'ᆱ',
-  65452 => 'ᆲ',
-  65453 => 'ᆳ',
-  65454 => 'ᆴ',
-  65455 => 'ᆵ',
-  65456 => 'ᄚ',
-  65457 => 'ᄆ',
-  65458 => 'ᄇ',
-  65459 => 'ᄈ',
-  65460 => 'á„¡',
-  65461 => 'ᄉ',
-  65462 => 'ᄊ',
-  65463 => 'á„‹',
-  65464 => 'ᄌ',
-  65465 => 'ᄍ',
-  65466 => 'ᄎ',
-  65467 => 'ᄏ',
-  65468 => 'ᄐ',
-  65469 => 'á„‘',
-  65470 => 'á„’',
-  65474 => 'á…¡',
-  65475 => 'á…¢',
-  65476 => 'á…£',
-  65477 => 'á…¤',
-  65478 => 'á…¥',
-  65479 => 'á…¦',
-  65482 => 'á…§',
-  65483 => 'á…¨',
-  65484 => 'á…©',
-  65485 => 'á…ª',
-  65486 => 'á…«',
-  65487 => 'á…¬',
-  65490 => 'á…­',
-  65491 => 'á…®',
-  65492 => 'á…¯',
-  65493 => 'á…°',
-  65494 => 'á…±',
-  65495 => 'á…²',
-  65498 => 'á…³',
-  65499 => 'á…´',
-  65500 => 'á…µ',
-  65504 => '¢',
-  65505 => '£',
-  65506 => '¬',
-  65508 => '¦',
-  65509 => 'Â¥',
-  65510 => 'â‚©',
-  65512 => '│',
-  65513 => '←',
-  65514 => '↑',
-  65515 => '→',
-  65516 => '↓',
-  65517 => 'â– ',
-  65518 => 'â—‹',
-  66560 => '𐐨',
-  66561 => '𐐩',
-  66562 => '𐐪',
-  66563 => '𐐫',
-  66564 => '𐐬',
-  66565 => '𐐭',
-  66566 => '𐐮',
-  66567 => '𐐯',
-  66568 => '𐐰',
-  66569 => '𐐱',
-  66570 => '𐐲',
-  66571 => '𐐳',
-  66572 => '𐐴',
-  66573 => '𐐵',
-  66574 => '𐐶',
-  66575 => '𐐷',
-  66576 => '𐐸',
-  66577 => '𐐹',
-  66578 => '𐐺',
-  66579 => '𐐻',
-  66580 => '𐐼',
-  66581 => '𐐽',
-  66582 => '𐐾',
-  66583 => '𐐿',
-  66584 => '𐑀',
-  66585 => '𐑁',
-  66586 => '𐑂',
-  66587 => '𐑃',
-  66588 => '𐑄',
-  66589 => '𐑅',
-  66590 => '𐑆',
-  66591 => '𐑇',
-  66592 => '𐑈',
-  66593 => '𐑉',
-  66594 => '𐑊',
-  66595 => '𐑋',
-  66596 => '𐑌',
-  66597 => '𐑍',
-  66598 => '𐑎',
-  66599 => '𐑏',
-  66736 => '𐓘',
-  66737 => '𐓙',
-  66738 => '𐓚',
-  66739 => '𐓛',
-  66740 => '𐓜',
-  66741 => '𐓝',
-  66742 => '𐓞',
-  66743 => '𐓟',
-  66744 => '𐓠',
-  66745 => '𐓡',
-  66746 => '𐓢',
-  66747 => '𐓣',
-  66748 => '𐓤',
-  66749 => '𐓥',
-  66750 => '𐓦',
-  66751 => '𐓧',
-  66752 => '𐓨',
-  66753 => '𐓩',
-  66754 => '𐓪',
-  66755 => '𐓫',
-  66756 => '𐓬',
-  66757 => '𐓭',
-  66758 => '𐓮',
-  66759 => '𐓯',
-  66760 => '𐓰',
-  66761 => '𐓱',
-  66762 => '𐓲',
-  66763 => '𐓳',
-  66764 => '𐓴',
-  66765 => '𐓵',
-  66766 => '𐓶',
-  66767 => '𐓷',
-  66768 => '𐓸',
-  66769 => '𐓹',
-  66770 => '𐓺',
-  66771 => '𐓻',
-  68736 => '𐳀',
-  68737 => '𐳁',
-  68738 => '𐳂',
-  68739 => '𐳃',
-  68740 => '𐳄',
-  68741 => '𐳅',
-  68742 => '𐳆',
-  68743 => '𐳇',
-  68744 => '𐳈',
-  68745 => '𐳉',
-  68746 => '𐳊',
-  68747 => '𐳋',
-  68748 => '𐳌',
-  68749 => '𐳍',
-  68750 => '𐳎',
-  68751 => '𐳏',
-  68752 => '𐳐',
-  68753 => '𐳑',
-  68754 => '𐳒',
-  68755 => '𐳓',
-  68756 => '𐳔',
-  68757 => '𐳕',
-  68758 => '𐳖',
-  68759 => '𐳗',
-  68760 => '𐳘',
-  68761 => '𐳙',
-  68762 => '𐳚',
-  68763 => '𐳛',
-  68764 => '𐳜',
-  68765 => '𐳝',
-  68766 => '𐳞',
-  68767 => '𐳟',
-  68768 => '𐳠',
-  68769 => '𐳡',
-  68770 => '𐳢',
-  68771 => '𐳣',
-  68772 => '𐳤',
-  68773 => '𐳥',
-  68774 => '𐳦',
-  68775 => '𐳧',
-  68776 => '𐳨',
-  68777 => '𐳩',
-  68778 => '𐳪',
-  68779 => '𐳫',
-  68780 => '𐳬',
-  68781 => '𐳭',
-  68782 => '𐳮',
-  68783 => '𐳯',
-  68784 => '𐳰',
-  68785 => '𐳱',
-  68786 => '𐳲',
-  71840 => 'ð‘£€',
-  71841 => '𑣁',
-  71842 => '𑣂',
-  71843 => '𑣃',
-  71844 => '𑣄',
-  71845 => 'ð‘£…',
-  71846 => '𑣆',
-  71847 => '𑣇',
-  71848 => '𑣈',
-  71849 => '𑣉',
-  71850 => '𑣊',
-  71851 => '𑣋',
-  71852 => '𑣌',
-  71853 => '𑣍',
-  71854 => '𑣎',
-  71855 => '𑣏',
-  71856 => '𑣐',
-  71857 => '𑣑',
-  71858 => 'ð‘£’',
-  71859 => '𑣓',
-  71860 => 'ð‘£”',
-  71861 => '𑣕',
-  71862 => 'ð‘£–',
-  71863 => 'ð‘£—',
-  71864 => '𑣘',
-  71865 => 'ð‘£™',
-  71866 => '𑣚',
-  71867 => 'ð‘£›',
-  71868 => '𑣜',
-  71869 => '𑣝',
-  71870 => '𑣞',
-  71871 => '𑣟',
-  93760 => 'ð–¹ ',
-  93761 => '𖹡',
-  93762 => 'ð–¹¢',
-  93763 => 'ð–¹£',
-  93764 => '𖹤',
-  93765 => 'ð–¹¥',
-  93766 => '𖹦',
-  93767 => 'ð–¹§',
-  93768 => '𖹨',
-  93769 => '𖹩',
-  93770 => '𖹪',
-  93771 => '𖹫',
-  93772 => '𖹬',
-  93773 => 'ð–¹­',
-  93774 => 'ð–¹®',
-  93775 => '𖹯',
-  93776 => 'ð–¹°',
-  93777 => 'ð–¹±',
-  93778 => 'ð–¹²',
-  93779 => 'ð–¹³',
-  93780 => 'ð–¹´',
-  93781 => 'ð–¹µ',
-  93782 => 'ð–¹¶',
-  93783 => 'ð–¹·',
-  93784 => '𖹸',
-  93785 => 'ð–¹¹',
-  93786 => '𖹺',
-  93787 => 'ð–¹»',
-  93788 => 'ð–¹¼',
-  93789 => 'ð–¹½',
-  93790 => 'ð–¹¾',
-  93791 => '𖹿',
-  119134 => '𝅗𝅥',
-  119135 => '𝅘𝅥',
-  119136 => '𝅘𝅥𝅮',
-  119137 => '𝅘𝅥𝅯',
-  119138 => '𝅘𝅥𝅰',
-  119139 => '𝅘𝅥𝅱',
-  119140 => '𝅘𝅥𝅲',
-  119227 => '𝆹𝅥',
-  119228 => '𝆺𝅥',
-  119229 => '𝆹𝅥𝅮',
-  119230 => '𝆺𝅥𝅮',
-  119231 => '𝆹𝅥𝅯',
-  119232 => '𝆺𝅥𝅯',
-  119808 => 'a',
-  119809 => 'b',
-  119810 => 'c',
-  119811 => 'd',
-  119812 => 'e',
-  119813 => 'f',
-  119814 => 'g',
-  119815 => 'h',
-  119816 => 'i',
-  119817 => 'j',
-  119818 => 'k',
-  119819 => 'l',
-  119820 => 'm',
-  119821 => 'n',
-  119822 => 'o',
-  119823 => 'p',
-  119824 => 'q',
-  119825 => 'r',
-  119826 => 's',
-  119827 => 't',
-  119828 => 'u',
-  119829 => 'v',
-  119830 => 'w',
-  119831 => 'x',
-  119832 => 'y',
-  119833 => 'z',
-  119834 => 'a',
-  119835 => 'b',
-  119836 => 'c',
-  119837 => 'd',
-  119838 => 'e',
-  119839 => 'f',
-  119840 => 'g',
-  119841 => 'h',
-  119842 => 'i',
-  119843 => 'j',
-  119844 => 'k',
-  119845 => 'l',
-  119846 => 'm',
-  119847 => 'n',
-  119848 => 'o',
-  119849 => 'p',
-  119850 => 'q',
-  119851 => 'r',
-  119852 => 's',
-  119853 => 't',
-  119854 => 'u',
-  119855 => 'v',
-  119856 => 'w',
-  119857 => 'x',
-  119858 => 'y',
-  119859 => 'z',
-  119860 => 'a',
-  119861 => 'b',
-  119862 => 'c',
-  119863 => 'd',
-  119864 => 'e',
-  119865 => 'f',
-  119866 => 'g',
-  119867 => 'h',
-  119868 => 'i',
-  119869 => 'j',
-  119870 => 'k',
-  119871 => 'l',
-  119872 => 'm',
-  119873 => 'n',
-  119874 => 'o',
-  119875 => 'p',
-  119876 => 'q',
-  119877 => 'r',
-  119878 => 's',
-  119879 => 't',
-  119880 => 'u',
-  119881 => 'v',
-  119882 => 'w',
-  119883 => 'x',
-  119884 => 'y',
-  119885 => 'z',
-  119886 => 'a',
-  119887 => 'b',
-  119888 => 'c',
-  119889 => 'd',
-  119890 => 'e',
-  119891 => 'f',
-  119892 => 'g',
-  119894 => 'i',
-  119895 => 'j',
-  119896 => 'k',
-  119897 => 'l',
-  119898 => 'm',
-  119899 => 'n',
-  119900 => 'o',
-  119901 => 'p',
-  119902 => 'q',
-  119903 => 'r',
-  119904 => 's',
-  119905 => 't',
-  119906 => 'u',
-  119907 => 'v',
-  119908 => 'w',
-  119909 => 'x',
-  119910 => 'y',
-  119911 => 'z',
-  119912 => 'a',
-  119913 => 'b',
-  119914 => 'c',
-  119915 => 'd',
-  119916 => 'e',
-  119917 => 'f',
-  119918 => 'g',
-  119919 => 'h',
-  119920 => 'i',
-  119921 => 'j',
-  119922 => 'k',
-  119923 => 'l',
-  119924 => 'm',
-  119925 => 'n',
-  119926 => 'o',
-  119927 => 'p',
-  119928 => 'q',
-  119929 => 'r',
-  119930 => 's',
-  119931 => 't',
-  119932 => 'u',
-  119933 => 'v',
-  119934 => 'w',
-  119935 => 'x',
-  119936 => 'y',
-  119937 => 'z',
-  119938 => 'a',
-  119939 => 'b',
-  119940 => 'c',
-  119941 => 'd',
-  119942 => 'e',
-  119943 => 'f',
-  119944 => 'g',
-  119945 => 'h',
-  119946 => 'i',
-  119947 => 'j',
-  119948 => 'k',
-  119949 => 'l',
-  119950 => 'm',
-  119951 => 'n',
-  119952 => 'o',
-  119953 => 'p',
-  119954 => 'q',
-  119955 => 'r',
-  119956 => 's',
-  119957 => 't',
-  119958 => 'u',
-  119959 => 'v',
-  119960 => 'w',
-  119961 => 'x',
-  119962 => 'y',
-  119963 => 'z',
-  119964 => 'a',
-  119966 => 'c',
-  119967 => 'd',
-  119970 => 'g',
-  119973 => 'j',
-  119974 => 'k',
-  119977 => 'n',
-  119978 => 'o',
-  119979 => 'p',
-  119980 => 'q',
-  119982 => 's',
-  119983 => 't',
-  119984 => 'u',
-  119985 => 'v',
-  119986 => 'w',
-  119987 => 'x',
-  119988 => 'y',
-  119989 => 'z',
-  119990 => 'a',
-  119991 => 'b',
-  119992 => 'c',
-  119993 => 'd',
-  119995 => 'f',
-  119997 => 'h',
-  119998 => 'i',
-  119999 => 'j',
-  120000 => 'k',
-  120001 => 'l',
-  120002 => 'm',
-  120003 => 'n',
-  120005 => 'p',
-  120006 => 'q',
-  120007 => 'r',
-  120008 => 's',
-  120009 => 't',
-  120010 => 'u',
-  120011 => 'v',
-  120012 => 'w',
-  120013 => 'x',
-  120014 => 'y',
-  120015 => 'z',
-  120016 => 'a',
-  120017 => 'b',
-  120018 => 'c',
-  120019 => 'd',
-  120020 => 'e',
-  120021 => 'f',
-  120022 => 'g',
-  120023 => 'h',
-  120024 => 'i',
-  120025 => 'j',
-  120026 => 'k',
-  120027 => 'l',
-  120028 => 'm',
-  120029 => 'n',
-  120030 => 'o',
-  120031 => 'p',
-  120032 => 'q',
-  120033 => 'r',
-  120034 => 's',
-  120035 => 't',
-  120036 => 'u',
-  120037 => 'v',
-  120038 => 'w',
-  120039 => 'x',
-  120040 => 'y',
-  120041 => 'z',
-  120042 => 'a',
-  120043 => 'b',
-  120044 => 'c',
-  120045 => 'd',
-  120046 => 'e',
-  120047 => 'f',
-  120048 => 'g',
-  120049 => 'h',
-  120050 => 'i',
-  120051 => 'j',
-  120052 => 'k',
-  120053 => 'l',
-  120054 => 'm',
-  120055 => 'n',
-  120056 => 'o',
-  120057 => 'p',
-  120058 => 'q',
-  120059 => 'r',
-  120060 => 's',
-  120061 => 't',
-  120062 => 'u',
-  120063 => 'v',
-  120064 => 'w',
-  120065 => 'x',
-  120066 => 'y',
-  120067 => 'z',
-  120068 => 'a',
-  120069 => 'b',
-  120071 => 'd',
-  120072 => 'e',
-  120073 => 'f',
-  120074 => 'g',
-  120077 => 'j',
-  120078 => 'k',
-  120079 => 'l',
-  120080 => 'm',
-  120081 => 'n',
-  120082 => 'o',
-  120083 => 'p',
-  120084 => 'q',
-  120086 => 's',
-  120087 => 't',
-  120088 => 'u',
-  120089 => 'v',
-  120090 => 'w',
-  120091 => 'x',
-  120092 => 'y',
-  120094 => 'a',
-  120095 => 'b',
-  120096 => 'c',
-  120097 => 'd',
-  120098 => 'e',
-  120099 => 'f',
-  120100 => 'g',
-  120101 => 'h',
-  120102 => 'i',
-  120103 => 'j',
-  120104 => 'k',
-  120105 => 'l',
-  120106 => 'm',
-  120107 => 'n',
-  120108 => 'o',
-  120109 => 'p',
-  120110 => 'q',
-  120111 => 'r',
-  120112 => 's',
-  120113 => 't',
-  120114 => 'u',
-  120115 => 'v',
-  120116 => 'w',
-  120117 => 'x',
-  120118 => 'y',
-  120119 => 'z',
-  120120 => 'a',
-  120121 => 'b',
-  120123 => 'd',
-  120124 => 'e',
-  120125 => 'f',
-  120126 => 'g',
-  120128 => 'i',
-  120129 => 'j',
-  120130 => 'k',
-  120131 => 'l',
-  120132 => 'm',
-  120134 => 'o',
-  120138 => 's',
-  120139 => 't',
-  120140 => 'u',
-  120141 => 'v',
-  120142 => 'w',
-  120143 => 'x',
-  120144 => 'y',
-  120146 => 'a',
-  120147 => 'b',
-  120148 => 'c',
-  120149 => 'd',
-  120150 => 'e',
-  120151 => 'f',
-  120152 => 'g',
-  120153 => 'h',
-  120154 => 'i',
-  120155 => 'j',
-  120156 => 'k',
-  120157 => 'l',
-  120158 => 'm',
-  120159 => 'n',
-  120160 => 'o',
-  120161 => 'p',
-  120162 => 'q',
-  120163 => 'r',
-  120164 => 's',
-  120165 => 't',
-  120166 => 'u',
-  120167 => 'v',
-  120168 => 'w',
-  120169 => 'x',
-  120170 => 'y',
-  120171 => 'z',
-  120172 => 'a',
-  120173 => 'b',
-  120174 => 'c',
-  120175 => 'd',
-  120176 => 'e',
-  120177 => 'f',
-  120178 => 'g',
-  120179 => 'h',
-  120180 => 'i',
-  120181 => 'j',
-  120182 => 'k',
-  120183 => 'l',
-  120184 => 'm',
-  120185 => 'n',
-  120186 => 'o',
-  120187 => 'p',
-  120188 => 'q',
-  120189 => 'r',
-  120190 => 's',
-  120191 => 't',
-  120192 => 'u',
-  120193 => 'v',
-  120194 => 'w',
-  120195 => 'x',
-  120196 => 'y',
-  120197 => 'z',
-  120198 => 'a',
-  120199 => 'b',
-  120200 => 'c',
-  120201 => 'd',
-  120202 => 'e',
-  120203 => 'f',
-  120204 => 'g',
-  120205 => 'h',
-  120206 => 'i',
-  120207 => 'j',
-  120208 => 'k',
-  120209 => 'l',
-  120210 => 'm',
-  120211 => 'n',
-  120212 => 'o',
-  120213 => 'p',
-  120214 => 'q',
-  120215 => 'r',
-  120216 => 's',
-  120217 => 't',
-  120218 => 'u',
-  120219 => 'v',
-  120220 => 'w',
-  120221 => 'x',
-  120222 => 'y',
-  120223 => 'z',
-  120224 => 'a',
-  120225 => 'b',
-  120226 => 'c',
-  120227 => 'd',
-  120228 => 'e',
-  120229 => 'f',
-  120230 => 'g',
-  120231 => 'h',
-  120232 => 'i',
-  120233 => 'j',
-  120234 => 'k',
-  120235 => 'l',
-  120236 => 'm',
-  120237 => 'n',
-  120238 => 'o',
-  120239 => 'p',
-  120240 => 'q',
-  120241 => 'r',
-  120242 => 's',
-  120243 => 't',
-  120244 => 'u',
-  120245 => 'v',
-  120246 => 'w',
-  120247 => 'x',
-  120248 => 'y',
-  120249 => 'z',
-  120250 => 'a',
-  120251 => 'b',
-  120252 => 'c',
-  120253 => 'd',
-  120254 => 'e',
-  120255 => 'f',
-  120256 => 'g',
-  120257 => 'h',
-  120258 => 'i',
-  120259 => 'j',
-  120260 => 'k',
-  120261 => 'l',
-  120262 => 'm',
-  120263 => 'n',
-  120264 => 'o',
-  120265 => 'p',
-  120266 => 'q',
-  120267 => 'r',
-  120268 => 's',
-  120269 => 't',
-  120270 => 'u',
-  120271 => 'v',
-  120272 => 'w',
-  120273 => 'x',
-  120274 => 'y',
-  120275 => 'z',
-  120276 => 'a',
-  120277 => 'b',
-  120278 => 'c',
-  120279 => 'd',
-  120280 => 'e',
-  120281 => 'f',
-  120282 => 'g',
-  120283 => 'h',
-  120284 => 'i',
-  120285 => 'j',
-  120286 => 'k',
-  120287 => 'l',
-  120288 => 'm',
-  120289 => 'n',
-  120290 => 'o',
-  120291 => 'p',
-  120292 => 'q',
-  120293 => 'r',
-  120294 => 's',
-  120295 => 't',
-  120296 => 'u',
-  120297 => 'v',
-  120298 => 'w',
-  120299 => 'x',
-  120300 => 'y',
-  120301 => 'z',
-  120302 => 'a',
-  120303 => 'b',
-  120304 => 'c',
-  120305 => 'd',
-  120306 => 'e',
-  120307 => 'f',
-  120308 => 'g',
-  120309 => 'h',
-  120310 => 'i',
-  120311 => 'j',
-  120312 => 'k',
-  120313 => 'l',
-  120314 => 'm',
-  120315 => 'n',
-  120316 => 'o',
-  120317 => 'p',
-  120318 => 'q',
-  120319 => 'r',
-  120320 => 's',
-  120321 => 't',
-  120322 => 'u',
-  120323 => 'v',
-  120324 => 'w',
-  120325 => 'x',
-  120326 => 'y',
-  120327 => 'z',
-  120328 => 'a',
-  120329 => 'b',
-  120330 => 'c',
-  120331 => 'd',
-  120332 => 'e',
-  120333 => 'f',
-  120334 => 'g',
-  120335 => 'h',
-  120336 => 'i',
-  120337 => 'j',
-  120338 => 'k',
-  120339 => 'l',
-  120340 => 'm',
-  120341 => 'n',
-  120342 => 'o',
-  120343 => 'p',
-  120344 => 'q',
-  120345 => 'r',
-  120346 => 's',
-  120347 => 't',
-  120348 => 'u',
-  120349 => 'v',
-  120350 => 'w',
-  120351 => 'x',
-  120352 => 'y',
-  120353 => 'z',
-  120354 => 'a',
-  120355 => 'b',
-  120356 => 'c',
-  120357 => 'd',
-  120358 => 'e',
-  120359 => 'f',
-  120360 => 'g',
-  120361 => 'h',
-  120362 => 'i',
-  120363 => 'j',
-  120364 => 'k',
-  120365 => 'l',
-  120366 => 'm',
-  120367 => 'n',
-  120368 => 'o',
-  120369 => 'p',
-  120370 => 'q',
-  120371 => 'r',
-  120372 => 's',
-  120373 => 't',
-  120374 => 'u',
-  120375 => 'v',
-  120376 => 'w',
-  120377 => 'x',
-  120378 => 'y',
-  120379 => 'z',
-  120380 => 'a',
-  120381 => 'b',
-  120382 => 'c',
-  120383 => 'd',
-  120384 => 'e',
-  120385 => 'f',
-  120386 => 'g',
-  120387 => 'h',
-  120388 => 'i',
-  120389 => 'j',
-  120390 => 'k',
-  120391 => 'l',
-  120392 => 'm',
-  120393 => 'n',
-  120394 => 'o',
-  120395 => 'p',
-  120396 => 'q',
-  120397 => 'r',
-  120398 => 's',
-  120399 => 't',
-  120400 => 'u',
-  120401 => 'v',
-  120402 => 'w',
-  120403 => 'x',
-  120404 => 'y',
-  120405 => 'z',
-  120406 => 'a',
-  120407 => 'b',
-  120408 => 'c',
-  120409 => 'd',
-  120410 => 'e',
-  120411 => 'f',
-  120412 => 'g',
-  120413 => 'h',
-  120414 => 'i',
-  120415 => 'j',
-  120416 => 'k',
-  120417 => 'l',
-  120418 => 'm',
-  120419 => 'n',
-  120420 => 'o',
-  120421 => 'p',
-  120422 => 'q',
-  120423 => 'r',
-  120424 => 's',
-  120425 => 't',
-  120426 => 'u',
-  120427 => 'v',
-  120428 => 'w',
-  120429 => 'x',
-  120430 => 'y',
-  120431 => 'z',
-  120432 => 'a',
-  120433 => 'b',
-  120434 => 'c',
-  120435 => 'd',
-  120436 => 'e',
-  120437 => 'f',
-  120438 => 'g',
-  120439 => 'h',
-  120440 => 'i',
-  120441 => 'j',
-  120442 => 'k',
-  120443 => 'l',
-  120444 => 'm',
-  120445 => 'n',
-  120446 => 'o',
-  120447 => 'p',
-  120448 => 'q',
-  120449 => 'r',
-  120450 => 's',
-  120451 => 't',
-  120452 => 'u',
-  120453 => 'v',
-  120454 => 'w',
-  120455 => 'x',
-  120456 => 'y',
-  120457 => 'z',
-  120458 => 'a',
-  120459 => 'b',
-  120460 => 'c',
-  120461 => 'd',
-  120462 => 'e',
-  120463 => 'f',
-  120464 => 'g',
-  120465 => 'h',
-  120466 => 'i',
-  120467 => 'j',
-  120468 => 'k',
-  120469 => 'l',
-  120470 => 'm',
-  120471 => 'n',
-  120472 => 'o',
-  120473 => 'p',
-  120474 => 'q',
-  120475 => 'r',
-  120476 => 's',
-  120477 => 't',
-  120478 => 'u',
-  120479 => 'v',
-  120480 => 'w',
-  120481 => 'x',
-  120482 => 'y',
-  120483 => 'z',
-  120484 => 'ı',
-  120485 => 'È·',
-  120488 => 'α',
-  120489 => 'β',
-  120490 => 'γ',
-  120491 => 'δ',
-  120492 => 'ε',
-  120493 => 'ζ',
-  120494 => 'η',
-  120495 => 'θ',
-  120496 => 'ι',
-  120497 => 'κ',
-  120498 => 'λ',
-  120499 => 'μ',
-  120500 => 'ν',
-  120501 => 'ξ',
-  120502 => 'ο',
-  120503 => 'Ï€',
-  120504 => 'ρ',
-  120505 => 'θ',
-  120506 => 'σ',
-  120507 => 'Ï„',
-  120508 => 'Ï…',
-  120509 => 'φ',
-  120510 => 'χ',
-  120511 => 'ψ',
-  120512 => 'ω',
-  120513 => '∇',
-  120514 => 'α',
-  120515 => 'β',
-  120516 => 'γ',
-  120517 => 'δ',
-  120518 => 'ε',
-  120519 => 'ζ',
-  120520 => 'η',
-  120521 => 'θ',
-  120522 => 'ι',
-  120523 => 'κ',
-  120524 => 'λ',
-  120525 => 'μ',
-  120526 => 'ν',
-  120527 => 'ξ',
-  120528 => 'ο',
-  120529 => 'Ï€',
-  120530 => 'ρ',
-  120531 => 'σ',
-  120532 => 'σ',
-  120533 => 'Ï„',
-  120534 => 'Ï…',
-  120535 => 'φ',
-  120536 => 'χ',
-  120537 => 'ψ',
-  120538 => 'ω',
-  120539 => '∂',
-  120540 => 'ε',
-  120541 => 'θ',
-  120542 => 'κ',
-  120543 => 'φ',
-  120544 => 'ρ',
-  120545 => 'Ï€',
-  120546 => 'α',
-  120547 => 'β',
-  120548 => 'γ',
-  120549 => 'δ',
-  120550 => 'ε',
-  120551 => 'ζ',
-  120552 => 'η',
-  120553 => 'θ',
-  120554 => 'ι',
-  120555 => 'κ',
-  120556 => 'λ',
-  120557 => 'μ',
-  120558 => 'ν',
-  120559 => 'ξ',
-  120560 => 'ο',
-  120561 => 'Ï€',
-  120562 => 'ρ',
-  120563 => 'θ',
-  120564 => 'σ',
-  120565 => 'Ï„',
-  120566 => 'Ï…',
-  120567 => 'φ',
-  120568 => 'χ',
-  120569 => 'ψ',
-  120570 => 'ω',
-  120571 => '∇',
-  120572 => 'α',
-  120573 => 'β',
-  120574 => 'γ',
-  120575 => 'δ',
-  120576 => 'ε',
-  120577 => 'ζ',
-  120578 => 'η',
-  120579 => 'θ',
-  120580 => 'ι',
-  120581 => 'κ',
-  120582 => 'λ',
-  120583 => 'μ',
-  120584 => 'ν',
-  120585 => 'ξ',
-  120586 => 'ο',
-  120587 => 'Ï€',
-  120588 => 'ρ',
-  120589 => 'σ',
-  120590 => 'σ',
-  120591 => 'Ï„',
-  120592 => 'Ï…',
-  120593 => 'φ',
-  120594 => 'χ',
-  120595 => 'ψ',
-  120596 => 'ω',
-  120597 => '∂',
-  120598 => 'ε',
-  120599 => 'θ',
-  120600 => 'κ',
-  120601 => 'φ',
-  120602 => 'ρ',
-  120603 => 'Ï€',
-  120604 => 'α',
-  120605 => 'β',
-  120606 => 'γ',
-  120607 => 'δ',
-  120608 => 'ε',
-  120609 => 'ζ',
-  120610 => 'η',
-  120611 => 'θ',
-  120612 => 'ι',
-  120613 => 'κ',
-  120614 => 'λ',
-  120615 => 'μ',
-  120616 => 'ν',
-  120617 => 'ξ',
-  120618 => 'ο',
-  120619 => 'Ï€',
-  120620 => 'ρ',
-  120621 => 'θ',
-  120622 => 'σ',
-  120623 => 'Ï„',
-  120624 => 'Ï…',
-  120625 => 'φ',
-  120626 => 'χ',
-  120627 => 'ψ',
-  120628 => 'ω',
-  120629 => '∇',
-  120630 => 'α',
-  120631 => 'β',
-  120632 => 'γ',
-  120633 => 'δ',
-  120634 => 'ε',
-  120635 => 'ζ',
-  120636 => 'η',
-  120637 => 'θ',
-  120638 => 'ι',
-  120639 => 'κ',
-  120640 => 'λ',
-  120641 => 'μ',
-  120642 => 'ν',
-  120643 => 'ξ',
-  120644 => 'ο',
-  120645 => 'Ï€',
-  120646 => 'ρ',
-  120647 => 'σ',
-  120648 => 'σ',
-  120649 => 'Ï„',
-  120650 => 'Ï…',
-  120651 => 'φ',
-  120652 => 'χ',
-  120653 => 'ψ',
-  120654 => 'ω',
-  120655 => '∂',
-  120656 => 'ε',
-  120657 => 'θ',
-  120658 => 'κ',
-  120659 => 'φ',
-  120660 => 'ρ',
-  120661 => 'Ï€',
-  120662 => 'α',
-  120663 => 'β',
-  120664 => 'γ',
-  120665 => 'δ',
-  120666 => 'ε',
-  120667 => 'ζ',
-  120668 => 'η',
-  120669 => 'θ',
-  120670 => 'ι',
-  120671 => 'κ',
-  120672 => 'λ',
-  120673 => 'μ',
-  120674 => 'ν',
-  120675 => 'ξ',
-  120676 => 'ο',
-  120677 => 'Ï€',
-  120678 => 'ρ',
-  120679 => 'θ',
-  120680 => 'σ',
-  120681 => 'Ï„',
-  120682 => 'Ï…',
-  120683 => 'φ',
-  120684 => 'χ',
-  120685 => 'ψ',
-  120686 => 'ω',
-  120687 => '∇',
-  120688 => 'α',
-  120689 => 'β',
-  120690 => 'γ',
-  120691 => 'δ',
-  120692 => 'ε',
-  120693 => 'ζ',
-  120694 => 'η',
-  120695 => 'θ',
-  120696 => 'ι',
-  120697 => 'κ',
-  120698 => 'λ',
-  120699 => 'μ',
-  120700 => 'ν',
-  120701 => 'ξ',
-  120702 => 'ο',
-  120703 => 'Ï€',
-  120704 => 'ρ',
-  120705 => 'σ',
-  120706 => 'σ',
-  120707 => 'Ï„',
-  120708 => 'Ï…',
-  120709 => 'φ',
-  120710 => 'χ',
-  120711 => 'ψ',
-  120712 => 'ω',
-  120713 => '∂',
-  120714 => 'ε',
-  120715 => 'θ',
-  120716 => 'κ',
-  120717 => 'φ',
-  120718 => 'ρ',
-  120719 => 'Ï€',
-  120720 => 'α',
-  120721 => 'β',
-  120722 => 'γ',
-  120723 => 'δ',
-  120724 => 'ε',
-  120725 => 'ζ',
-  120726 => 'η',
-  120727 => 'θ',
-  120728 => 'ι',
-  120729 => 'κ',
-  120730 => 'λ',
-  120731 => 'μ',
-  120732 => 'ν',
-  120733 => 'ξ',
-  120734 => 'ο',
-  120735 => 'Ï€',
-  120736 => 'ρ',
-  120737 => 'θ',
-  120738 => 'σ',
-  120739 => 'Ï„',
-  120740 => 'Ï…',
-  120741 => 'φ',
-  120742 => 'χ',
-  120743 => 'ψ',
-  120744 => 'ω',
-  120745 => '∇',
-  120746 => 'α',
-  120747 => 'β',
-  120748 => 'γ',
-  120749 => 'δ',
-  120750 => 'ε',
-  120751 => 'ζ',
-  120752 => 'η',
-  120753 => 'θ',
-  120754 => 'ι',
-  120755 => 'κ',
-  120756 => 'λ',
-  120757 => 'μ',
-  120758 => 'ν',
-  120759 => 'ξ',
-  120760 => 'ο',
-  120761 => 'Ï€',
-  120762 => 'ρ',
-  120763 => 'σ',
-  120764 => 'σ',
-  120765 => 'Ï„',
-  120766 => 'Ï…',
-  120767 => 'φ',
-  120768 => 'χ',
-  120769 => 'ψ',
-  120770 => 'ω',
-  120771 => '∂',
-  120772 => 'ε',
-  120773 => 'θ',
-  120774 => 'κ',
-  120775 => 'φ',
-  120776 => 'ρ',
-  120777 => 'Ï€',
-  120778 => 'ϝ',
-  120779 => 'ϝ',
-  120782 => '0',
-  120783 => '1',
-  120784 => '2',
-  120785 => '3',
-  120786 => '4',
-  120787 => '5',
-  120788 => '6',
-  120789 => '7',
-  120790 => '8',
-  120791 => '9',
-  120792 => '0',
-  120793 => '1',
-  120794 => '2',
-  120795 => '3',
-  120796 => '4',
-  120797 => '5',
-  120798 => '6',
-  120799 => '7',
-  120800 => '8',
-  120801 => '9',
-  120802 => '0',
-  120803 => '1',
-  120804 => '2',
-  120805 => '3',
-  120806 => '4',
-  120807 => '5',
-  120808 => '6',
-  120809 => '7',
-  120810 => '8',
-  120811 => '9',
-  120812 => '0',
-  120813 => '1',
-  120814 => '2',
-  120815 => '3',
-  120816 => '4',
-  120817 => '5',
-  120818 => '6',
-  120819 => '7',
-  120820 => '8',
-  120821 => '9',
-  120822 => '0',
-  120823 => '1',
-  120824 => '2',
-  120825 => '3',
-  120826 => '4',
-  120827 => '5',
-  120828 => '6',
-  120829 => '7',
-  120830 => '8',
-  120831 => '9',
-  125184 => '𞤢',
-  125185 => '𞤣',
-  125186 => '𞤤',
-  125187 => '𞤥',
-  125188 => '𞤦',
-  125189 => '𞤧',
-  125190 => '𞤨',
-  125191 => '𞤩',
-  125192 => '𞤪',
-  125193 => '𞤫',
-  125194 => '𞤬',
-  125195 => '𞤭',
-  125196 => '𞤮',
-  125197 => '𞤯',
-  125198 => '𞤰',
-  125199 => '𞤱',
-  125200 => '𞤲',
-  125201 => '𞤳',
-  125202 => '𞤴',
-  125203 => '𞤵',
-  125204 => '𞤶',
-  125205 => '𞤷',
-  125206 => '𞤸',
-  125207 => '𞤹',
-  125208 => '𞤺',
-  125209 => '𞤻',
-  125210 => '𞤼',
-  125211 => '𞤽',
-  125212 => '𞤾',
-  125213 => '𞤿',
-  125214 => '𞥀',
-  125215 => '𞥁',
-  125216 => '𞥂',
-  125217 => '𞥃',
-  126464 => 'ا',
-  126465 => 'ب',
-  126466 => 'ج',
-  126467 => 'د',
-  126469 => 'Ùˆ',
-  126470 => 'ز',
-  126471 => 'Ø­',
-  126472 => 'Ø·',
-  126473 => 'ÙŠ',
-  126474 => 'Ùƒ',
-  126475 => 'Ù„',
-  126476 => 'Ù…',
-  126477 => 'Ù†',
-  126478 => 'س',
-  126479 => 'ع',
-  126480 => 'ف',
-  126481 => 'ص',
-  126482 => 'Ù‚',
-  126483 => 'ر',
-  126484 => 'Ø´',
-  126485 => 'ت',
-  126486 => 'Ø«',
-  126487 => 'Ø®',
-  126488 => 'ذ',
-  126489 => 'ض',
-  126490 => 'ظ',
-  126491 => 'غ',
-  126492 => 'Ù®',
-  126493 => 'Úº',
-  126494 => 'Ú¡',
-  126495 => 'Ù¯',
-  126497 => 'ب',
-  126498 => 'ج',
-  126500 => 'Ù‡',
-  126503 => 'Ø­',
-  126505 => 'ÙŠ',
-  126506 => 'Ùƒ',
-  126507 => 'Ù„',
-  126508 => 'Ù…',
-  126509 => 'Ù†',
-  126510 => 'س',
-  126511 => 'ع',
-  126512 => 'ف',
-  126513 => 'ص',
-  126514 => 'Ù‚',
-  126516 => 'Ø´',
-  126517 => 'ت',
-  126518 => 'Ø«',
-  126519 => 'Ø®',
-  126521 => 'ض',
-  126523 => 'غ',
-  126530 => 'ج',
-  126535 => 'Ø­',
-  126537 => 'ÙŠ',
-  126539 => 'Ù„',
-  126541 => 'Ù†',
-  126542 => 'س',
-  126543 => 'ع',
-  126545 => 'ص',
-  126546 => 'Ù‚',
-  126548 => 'Ø´',
-  126551 => 'Ø®',
-  126553 => 'ض',
-  126555 => 'غ',
-  126557 => 'Úº',
-  126559 => 'Ù¯',
-  126561 => 'ب',
-  126562 => 'ج',
-  126564 => 'Ù‡',
-  126567 => 'Ø­',
-  126568 => 'Ø·',
-  126569 => 'ÙŠ',
-  126570 => 'Ùƒ',
-  126572 => 'Ù…',
-  126573 => 'Ù†',
-  126574 => 'س',
-  126575 => 'ع',
-  126576 => 'ف',
-  126577 => 'ص',
-  126578 => 'Ù‚',
-  126580 => 'Ø´',
-  126581 => 'ت',
-  126582 => 'Ø«',
-  126583 => 'Ø®',
-  126585 => 'ض',
-  126586 => 'ظ',
-  126587 => 'غ',
-  126588 => 'Ù®',
-  126590 => 'Ú¡',
-  126592 => 'ا',
-  126593 => 'ب',
-  126594 => 'ج',
-  126595 => 'د',
-  126596 => 'Ù‡',
-  126597 => 'Ùˆ',
-  126598 => 'ز',
-  126599 => 'Ø­',
-  126600 => 'Ø·',
-  126601 => 'ÙŠ',
-  126603 => 'Ù„',
-  126604 => 'Ù…',
-  126605 => 'Ù†',
-  126606 => 'س',
-  126607 => 'ع',
-  126608 => 'ف',
-  126609 => 'ص',
-  126610 => 'Ù‚',
-  126611 => 'ر',
-  126612 => 'Ø´',
-  126613 => 'ت',
-  126614 => 'Ø«',
-  126615 => 'Ø®',
-  126616 => 'ذ',
-  126617 => 'ض',
-  126618 => 'ظ',
-  126619 => 'غ',
-  126625 => 'ب',
-  126626 => 'ج',
-  126627 => 'د',
-  126629 => 'Ùˆ',
-  126630 => 'ز',
-  126631 => 'Ø­',
-  126632 => 'Ø·',
-  126633 => 'ÙŠ',
-  126635 => 'Ù„',
-  126636 => 'Ù…',
-  126637 => 'Ù†',
-  126638 => 'س',
-  126639 => 'ع',
-  126640 => 'ف',
-  126641 => 'ص',
-  126642 => 'Ù‚',
-  126643 => 'ر',
-  126644 => 'Ø´',
-  126645 => 'ت',
-  126646 => 'Ø«',
-  126647 => 'Ø®',
-  126648 => 'ذ',
-  126649 => 'ض',
-  126650 => 'ظ',
-  126651 => 'غ',
-  127274 => '〔s〕',
-  127275 => 'c',
-  127276 => 'r',
-  127277 => 'cd',
-  127278 => 'wz',
-  127280 => 'a',
-  127281 => 'b',
-  127282 => 'c',
-  127283 => 'd',
-  127284 => 'e',
-  127285 => 'f',
-  127286 => 'g',
-  127287 => 'h',
-  127288 => 'i',
-  127289 => 'j',
-  127290 => 'k',
-  127291 => 'l',
-  127292 => 'm',
-  127293 => 'n',
-  127294 => 'o',
-  127295 => 'p',
-  127296 => 'q',
-  127297 => 'r',
-  127298 => 's',
-  127299 => 't',
-  127300 => 'u',
-  127301 => 'v',
-  127302 => 'w',
-  127303 => 'x',
-  127304 => 'y',
-  127305 => 'z',
-  127306 => 'hv',
-  127307 => 'mv',
-  127308 => 'sd',
-  127309 => 'ss',
-  127310 => 'ppv',
-  127311 => 'wc',
-  127338 => 'mc',
-  127339 => 'md',
-  127340 => 'mr',
-  127376 => 'dj',
-  127488 => 'ほか',
-  127489 => 'ココ',
-  127490 => 'サ',
-  127504 => '手',
-  127505 => 'å­—',
-  127506 => '双',
-  127507 => 'デ',
-  127508 => '二',
-  127509 => '多',
-  127510 => 'è§£',
-  127511 => '天',
-  127512 => '交',
-  127513 => '映',
-  127514 => 'ç„¡',
-  127515 => 'æ–™',
-  127516 => '前',
-  127517 => '後',
-  127518 => '再',
-  127519 => 'æ–°',
-  127520 => '初',
-  127521 => '終',
-  127522 => '生',
-  127523 => '販',
-  127524 => '声',
-  127525 => '吹',
-  127526 => 'æ¼”',
-  127527 => '投',
-  127528 => '捕',
-  127529 => '一',
-  127530 => '三',
-  127531 => '遊',
-  127532 => 'å·¦',
-  127533 => '中',
-  127534 => '右',
-  127535 => '指',
-  127536 => 'èµ°',
-  127537 => '打',
-  127538 => '禁',
-  127539 => '空',
-  127540 => '合',
-  127541 => '満',
-  127542 => '有',
-  127543 => '月',
-  127544 => '申',
-  127545 => '割',
-  127546 => 'å–¶',
-  127547 => '配',
-  127552 => '〔本〕',
-  127553 => '〔三〕',
-  127554 => '〔二〕',
-  127555 => '〔安〕',
-  127556 => '〔点〕',
-  127557 => '〔打〕',
-  127558 => '〔盗〕',
-  127559 => '〔勝〕',
-  127560 => '〔敗〕',
-  127568 => 'å¾—',
-  127569 => '可',
-  130032 => '0',
-  130033 => '1',
-  130034 => '2',
-  130035 => '3',
-  130036 => '4',
-  130037 => '5',
-  130038 => '6',
-  130039 => '7',
-  130040 => '8',
-  130041 => '9',
-  194560 => '丽',
-  194561 => '丸',
-  194562 => '乁',
-  194563 => 'ð „¢',
-  194564 => 'ä½ ',
-  194565 => 'ä¾®',
-  194566 => 'ä¾»',
-  194567 => '倂',
-  194568 => '偺',
-  194569 => 'å‚™',
-  194570 => '僧',
-  194571 => '像',
-  194572 => 'ã’ž',
-  194573 => '𠘺',
-  194574 => '免',
-  194575 => 'å…”',
-  194576 => 'å…¤',
-  194577 => 'å…·',
-  194578 => '𠔜',
-  194579 => 'ã’¹',
-  194580 => 'å…§',
-  194581 => '再',
-  194582 => 'ð •‹',
-  194583 => '冗',
-  194584 => '冤',
-  194585 => '仌',
-  194586 => '冬',
-  194587 => '况',
-  194588 => '𩇟',
-  194589 => '凵',
-  194590 => '刃',
-  194591 => '㓟',
-  194592 => '刻',
-  194593 => '剆',
-  194594 => '割',
-  194595 => '剷',
-  194596 => '㔕',
-  194597 => '勇',
-  194598 => '勉',
-  194599 => '勤',
-  194600 => '勺',
-  194601 => '包',
-  194602 => '匆',
-  194603 => '北',
-  194604 => '卉',
-  194605 => '卑',
-  194606 => '博',
-  194607 => '即',
-  194608 => '卽',
-  194609 => '卿',
-  194610 => '卿',
-  194611 => '卿',
-  194612 => '𠨬',
-  194613 => '灰',
-  194614 => '及',
-  194615 => '叟',
-  194616 => 'ð ­£',
-  194617 => '叫',
-  194618 => '叱',
-  194619 => '吆',
-  194620 => 'å’ž',
-  194621 => '吸',
-  194622 => '呈',
-  194623 => '周',
-  194624 => 'å’¢',
-  194625 => 'å“¶',
-  194626 => '唐',
-  194627 => 'å•“',
-  194628 => 'å•£',
-  194629 => 'å–„',
-  194630 => 'å–„',
-  194631 => 'å–™',
-  194632 => 'å–«',
-  194633 => 'å–³',
-  194634 => 'å—‚',
-  194635 => '圖',
-  194636 => '嘆',
-  194637 => '圗',
-  194638 => '噑',
-  194639 => 'å™´',
-  194640 => '切',
-  194641 => '壮',
-  194642 => '城',
-  194643 => '埴',
-  194644 => '堍',
-  194645 => 'åž‹',
-  194646 => 'å ²',
-  194647 => 'å ±',
-  194648 => '墬',
-  194649 => '𡓤',
-  194650 => '売',
-  194651 => '壷',
-  194652 => '夆',
-  194653 => '多',
-  194654 => '夢',
-  194655 => '奢',
-  194656 => '𡚨',
-  194657 => '𡛪',
-  194658 => '姬',
-  194659 => '娛',
-  194660 => '娧',
-  194661 => '姘',
-  194662 => '婦',
-  194663 => 'ã›®',
-  194665 => '嬈',
-  194666 => '嬾',
-  194667 => '嬾',
-  194668 => '𡧈',
-  194669 => '寃',
-  194670 => '寘',
-  194671 => '寧',
-  194672 => '寳',
-  194673 => '𡬘',
-  194674 => '寿',
-  194675 => 'å°†',
-  194677 => 'å°¢',
-  194678 => '㞁',
-  194679 => 'å± ',
-  194680 => 'å±®',
-  194681 => 'å³€',
-  194682 => '岍',
-  194683 => 'ð¡·¤',
-  194684 => '嵃',
-  194685 => 'ð¡·¦',
-  194686 => 'åµ®',
-  194687 => '嵫',
-  194688 => 'åµ¼',
-  194689 => 'å·¡',
-  194690 => 'å·¢',
-  194691 => 'ã ¯',
-  194692 => 'å·½',
-  194693 => '帨',
-  194694 => '帽',
-  194695 => '幩',
-  194696 => 'ã¡¢',
-  194697 => '𢆃',
-  194698 => '㡼',
-  194699 => '庰',
-  194700 => '庳',
-  194701 => '庶',
-  194702 => '廊',
-  194703 => '𪎒',
-  194704 => '廾',
-  194705 => '𢌱',
-  194706 => '𢌱',
-  194707 => '舁',
-  194708 => 'å¼¢',
-  194709 => 'å¼¢',
-  194710 => '㣇',
-  194711 => '𣊸',
-  194712 => '𦇚',
-  194713 => 'å½¢',
-  194714 => '彫',
-  194715 => '㣣',
-  194716 => '徚',
-  194717 => '忍',
-  194718 => 'å¿—',
-  194719 => '忹',
-  194720 => '悁',
-  194721 => '㤺',
-  194722 => '㤜',
-  194723 => 'æ‚”',
-  194724 => '𢛔',
-  194725 => '惇',
-  194726 => 'æ…ˆ',
-  194727 => '慌',
-  194728 => 'æ…Ž',
-  194729 => '慌',
-  194730 => 'æ…º',
-  194731 => '憎',
-  194732 => '憲',
-  194733 => '憤',
-  194734 => '憯',
-  194735 => '懞',
-  194736 => '懲',
-  194737 => '懶',
-  194738 => '成',
-  194739 => '戛',
-  194740 => '扝',
-  194741 => '抱',
-  194742 => 'æ‹”',
-  194743 => '捐',
-  194744 => '𢬌',
-  194745 => '挽',
-  194746 => '拼',
-  194747 => '捨',
-  194748 => '掃',
-  194749 => '揤',
-  194750 => '𢯱',
-  194751 => '搢',
-  194752 => '揅',
-  194753 => '掩',
-  194754 => '㨮',
-  194755 => 'æ‘©',
-  194756 => '摾',
-  194757 => '撝',
-  194758 => 'æ‘·',
-  194759 => '㩬',
-  194760 => '敏',
-  194761 => '敬',
-  194762 => '𣀊',
-  194763 => 'æ—£',
-  194764 => '書',
-  194765 => '晉',
-  194766 => '㬙',
-  194767 => 'æš‘',
-  194768 => '㬈',
-  194769 => '㫤',
-  194770 => '冒',
-  194771 => '冕',
-  194772 => '最',
-  194773 => '暜',
-  194774 => 'è‚­',
-  194775 => '䏙',
-  194776 => '朗',
-  194777 => '望',
-  194778 => '朡',
-  194779 => '杞',
-  194780 => '杓',
-  194781 => '𣏃',
-  194782 => 'ã­‰',
-  194783 => '柺',
-  194784 => 'æž…',
-  194785 => 'æ¡’',
-  194786 => '梅',
-  194787 => '𣑭',
-  194788 => '梎',
-  194789 => 'æ Ÿ',
-  194790 => '椔',
-  194791 => '㮝',
-  194792 => '楂',
-  194793 => '榣',
-  194794 => '槪',
-  194795 => '檨',
-  194796 => '𣚣',
-  194797 => 'æ«›',
-  194798 => 'ã°˜',
-  194799 => '次',
-  194800 => '𣢧',
-  194801 => 'æ­”',
-  194802 => '㱎',
-  194803 => 'æ­²',
-  194804 => '殟',
-  194805 => '殺',
-  194806 => 'æ®»',
-  194807 => '𣪍',
-  194808 => 'ð¡´‹',
-  194809 => '𣫺',
-  194810 => '汎',
-  194811 => '𣲼',
-  194812 => '沿',
-  194813 => '泍',
-  194814 => 'æ±§',
-  194815 => 'æ´–',
-  194816 => 'æ´¾',
-  194817 => 'æµ·',
-  194818 => '流',
-  194819 => '浩',
-  194820 => '浸',
-  194821 => 'æ¶…',
-  194822 => '𣴞',
-  194823 => 'æ´´',
-  194824 => '港',
-  194825 => 'æ¹®',
-  194826 => 'ã´³',
-  194827 => '滋',
-  194828 => '滇',
-  194829 => '𣻑',
-  194830 => 'æ·¹',
-  194831 => 'æ½®',
-  194832 => '𣽞',
-  194833 => '𣾎',
-  194834 => '濆',
-  194835 => '瀹',
-  194836 => '瀞',
-  194837 => '瀛',
-  194838 => 'ã¶–',
-  194839 => '灊',
-  194840 => '災',
-  194841 => '灷',
-  194842 => 'ç‚­',
-  194843 => '𠔥',
-  194844 => 'ç……',
-  194845 => '𤉣',
-  194846 => '熜',
-  194848 => '爨',
-  194849 => '爵',
-  194850 => '牐',
-  194851 => '𤘈',
-  194852 => '犀',
-  194853 => '犕',
-  194854 => '𤜵',
-  194855 => '𤠔',
-  194856 => '獺',
-  194857 => '王',
-  194858 => '㺬',
-  194859 => '玥',
-  194860 => '㺸',
-  194861 => '㺸',
-  194862 => '瑇',
-  194863 => '瑜',
-  194864 => '瑱',
-  194865 => 'ç’…',
-  194866 => '瓊',
-  194867 => 'ã¼›',
-  194868 => '甤',
-  194869 => '𤰶',
-  194870 => '甾',
-  194871 => '𤲒',
-  194872 => 'ç•°',
-  194873 => '𢆟',
-  194874 => '瘐',
-  194875 => '𤾡',
-  194876 => '𤾸',
-  194877 => '𥁄',
-  194878 => '㿼',
-  194879 => '䀈',
-  194880 => 'ç›´',
-  194881 => '𥃳',
-  194882 => '𥃲',
-  194883 => '𥄙',
-  194884 => '𥄳',
-  194885 => '眞',
-  194886 => '真',
-  194887 => '真',
-  194888 => '睊',
-  194889 => '䀹',
-  194890 => 'çž‹',
-  194891 => '䁆',
-  194892 => 'ä‚–',
-  194893 => '𥐝',
-  194894 => '硎',
-  194895 => '碌',
-  194896 => '磌',
-  194897 => '䃣',
-  194898 => '𥘦',
-  194899 => '祖',
-  194900 => '𥚚',
-  194901 => '𥛅',
-  194902 => '福',
-  194903 => 'ç§«',
-  194904 => '䄯',
-  194905 => 'ç©€',
-  194906 => '穊',
-  194907 => '穏',
-  194908 => '𥥼',
-  194909 => '𥪧',
-  194910 => '𥪧',
-  194912 => '䈂',
-  194913 => '𥮫',
-  194914 => '篆',
-  194915 => '築',
-  194916 => '䈧',
-  194917 => '𥲀',
-  194918 => 'ç³’',
-  194919 => '䊠',
-  194920 => '糨',
-  194921 => 'ç³£',
-  194922 => 'ç´€',
-  194923 => '𥾆',
-  194924 => 'çµ£',
-  194925 => '䌁',
-  194926 => 'ç·‡',
-  194927 => '縂',
-  194928 => 'ç¹…',
-  194929 => '䌴',
-  194930 => '𦈨',
-  194931 => '𦉇',
-  194932 => '䍙',
-  194933 => '𦋙',
-  194934 => '罺',
-  194935 => '𦌾',
-  194936 => '羕',
-  194937 => '翺',
-  194938 => '者',
-  194939 => '𦓚',
-  194940 => '𦔣',
-  194941 => '聠',
-  194942 => '𦖨',
-  194943 => '聰',
-  194944 => '𣍟',
-  194945 => '䏕',
-  194946 => '育',
-  194947 => '脃',
-  194948 => '䐋',
-  194949 => '脾',
-  194950 => '媵',
-  194951 => '𦞧',
-  194952 => '𦞵',
-  194953 => '𣎓',
-  194954 => '𣎜',
-  194955 => '舁',
-  194956 => '舄',
-  194957 => '辞',
-  194958 => 'ä‘«',
-  194959 => '芑',
-  194960 => '芋',
-  194961 => '芝',
-  194962 => '劳',
-  194963 => '花',
-  194964 => '芳',
-  194965 => '芽',
-  194966 => '苦',
-  194967 => '𦬼',
-  194968 => 'è‹¥',
-  194969 => '茝',
-  194970 => '荣',
-  194971 => '莭',
-  194972 => '茣',
-  194973 => '莽',
-  194974 => '菧',
-  194975 => 'è‘—',
-  194976 => '荓',
-  194977 => '菊',
-  194978 => '菌',
-  194979 => '菜',
-  194980 => '𦰶',
-  194981 => '𦵫',
-  194982 => '𦳕',
-  194983 => '䔫',
-  194984 => '蓱',
-  194985 => '蓳',
-  194986 => 'è”–',
-  194987 => '𧏊',
-  194988 => '蕤',
-  194989 => '𦼬',
-  194990 => '䕝',
-  194991 => 'ä•¡',
-  194992 => '𦾱',
-  194993 => '𧃒',
-  194994 => 'ä•«',
-  194995 => '虐',
-  194996 => '虜',
-  194997 => 'è™§',
-  194998 => '虩',
-  194999 => 'èš©',
-  195000 => '蚈',
-  195001 => '蜎',
-  195002 => '蛢',
-  195003 => '蝹',
-  195004 => '蜨',
-  195005 => '蝫',
-  195006 => '螆',
-  195008 => '蟡',
-  195009 => '蠁',
-  195010 => 'ä—¹',
-  195011 => 'è¡ ',
-  195012 => 'è¡£',
-  195013 => 'ð§™§',
-  195014 => '裗',
-  195015 => '裞',
-  195016 => '䘵',
-  195017 => '裺',
-  195018 => 'ã’»',
-  195019 => 'ð§¢®',
-  195020 => '𧥦',
-  195021 => 'äš¾',
-  195022 => '䛇',
-  195023 => '誠',
-  195024 => 'è«­',
-  195025 => '變',
-  195026 => '豕',
-  195027 => '𧲨',
-  195028 => '貫',
-  195029 => '賁',
-  195030 => 'è´›',
-  195031 => 'èµ·',
-  195032 => '𧼯',
-  195033 => 'ð  „',
-  195034 => 'è·‹',
-  195035 => 'è¶¼',
-  195036 => 'è·°',
-  195037 => '𠣞',
-  195038 => 'è»”',
-  195039 => '輸',
-  195040 => '𨗒',
-  195041 => '𨗭',
-  195042 => 'é‚”',
-  195043 => '郱',
-  195044 => 'é„‘',
-  195045 => '𨜮',
-  195046 => 'é„›',
-  195047 => '鈸',
-  195048 => 'é‹—',
-  195049 => '鋘',
-  195050 => '鉼',
-  195051 => '鏹',
-  195052 => '鐕',
-  195053 => '𨯺',
-  195054 => 'é–‹',
-  195055 => '䦕',
-  195056 => 'é–·',
-  195057 => '𨵷',
-  195058 => '䧦',
-  195059 => '雃',
-  195060 => 'å¶²',
-  195061 => '霣',
-  195062 => 'ð©……',
-  195063 => '𩈚',
-  195064 => 'ä©®',
-  195065 => 'ä©¶',
-  195066 => '韠',
-  195067 => '𩐊',
-  195068 => '䪲',
-  195069 => 'ð©’–',
-  195070 => 'é ‹',
-  195071 => 'é ‹',
-  195072 => 'é ©',
-  195073 => 'ð©–¶',
-  195074 => '飢',
-  195075 => '䬳',
-  195076 => '餩',
-  195077 => '馧',
-  195078 => 'é§‚',
-  195079 => 'é§¾',
-  195080 => '䯎',
-  195081 => '𩬰',
-  195082 => '鬒',
-  195083 => 'é±€',
-  195084 => 'é³½',
-  195085 => '䳎',
-  195086 => 'ä³­',
-  195087 => 'éµ§',
-  195088 => '𪃎',
-  195089 => '䳸',
-  195090 => '𪄅',
-  195091 => '𪈎',
-  195092 => '𪊑',
-  195093 => '麻',
-  195094 => 'äµ–',
-  195095 => '黹',
-  195096 => '黾',
-  195097 => 'é¼…',
-  195098 => '鼏',
-  195099 => 'é¼–',
-  195100 => 'é¼»',
-  195101 => '𪘀',
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php
deleted file mode 100644
index 1958e37ed25ec03f88fa4a7c815754665e78fe7a..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-return array (
-  2381 => 9,
-  2509 => 9,
-  2637 => 9,
-  2765 => 9,
-  2893 => 9,
-  3021 => 9,
-  3149 => 9,
-  3277 => 9,
-  3387 => 9,
-  3388 => 9,
-  3405 => 9,
-  3530 => 9,
-  3642 => 9,
-  3770 => 9,
-  3972 => 9,
-  4153 => 9,
-  4154 => 9,
-  5908 => 9,
-  5940 => 9,
-  6098 => 9,
-  6752 => 9,
-  6980 => 9,
-  7082 => 9,
-  7083 => 9,
-  7154 => 9,
-  7155 => 9,
-  11647 => 9,
-  43014 => 9,
-  43052 => 9,
-  43204 => 9,
-  43347 => 9,
-  43456 => 9,
-  43766 => 9,
-  44013 => 9,
-  68159 => 9,
-  69702 => 9,
-  69759 => 9,
-  69817 => 9,
-  69939 => 9,
-  69940 => 9,
-  70080 => 9,
-  70197 => 9,
-  70378 => 9,
-  70477 => 9,
-  70722 => 9,
-  70850 => 9,
-  71103 => 9,
-  71231 => 9,
-  71350 => 9,
-  71467 => 9,
-  71737 => 9,
-  71997 => 9,
-  71998 => 9,
-  72160 => 9,
-  72244 => 9,
-  72263 => 9,
-  72345 => 9,
-  72767 => 9,
-  73028 => 9,
-  73029 => 9,
-  73111 => 9,
-);
diff --git a/vendor/symfony/polyfill-intl-idn/bootstrap.php b/vendor/symfony/polyfill-intl-idn/bootstrap.php
deleted file mode 100644
index f02d5de73d228e054e9bce4933e99fb8bd54cf21..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/bootstrap.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Idn as p;
-
-if (extension_loaded('intl')) {
-    return;
-}
-
-if (!defined('U_IDNA_PROHIBITED_ERROR')) {
-    define('U_IDNA_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_IDNA_ERROR_START')) {
-    define('U_IDNA_ERROR_START', 66560);
-}
-if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
-    define('U_IDNA_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
-    define('U_IDNA_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
-    define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
-}
-if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
-    define('U_IDNA_ACE_PREFIX_ERROR', 66564);
-}
-if (!defined('U_IDNA_VERIFICATION_ERROR')) {
-    define('U_IDNA_VERIFICATION_ERROR', 66565);
-}
-if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
-    define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
-}
-if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
-    define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
-}
-if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
-    define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
-}
-if (!defined('U_IDNA_ERROR_LIMIT')) {
-    define('U_IDNA_ERROR_LIMIT', 66569);
-}
-if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
-    define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
-    define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
-    define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('IDNA_DEFAULT')) {
-    define('IDNA_DEFAULT', 0);
-}
-if (!defined('IDNA_ALLOW_UNASSIGNED')) {
-    define('IDNA_ALLOW_UNASSIGNED', 1);
-}
-if (!defined('IDNA_USE_STD3_RULES')) {
-    define('IDNA_USE_STD3_RULES', 2);
-}
-if (!defined('IDNA_CHECK_BIDI')) {
-    define('IDNA_CHECK_BIDI', 4);
-}
-if (!defined('IDNA_CHECK_CONTEXTJ')) {
-    define('IDNA_CHECK_CONTEXTJ', 8);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
-    define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
-    define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
-}
-if (!defined('INTL_IDNA_VARIANT_2003')) {
-    define('INTL_IDNA_VARIANT_2003', 0);
-}
-if (!defined('INTL_IDNA_VARIANT_UTS46')) {
-    define('INTL_IDNA_VARIANT_UTS46', 1);
-}
-if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
-    define('IDNA_ERROR_EMPTY_LABEL', 1);
-}
-if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
-    define('IDNA_ERROR_LABEL_TOO_LONG', 2);
-}
-if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
-    define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
-}
-if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
-    define('IDNA_ERROR_LEADING_HYPHEN', 8);
-}
-if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
-    define('IDNA_ERROR_TRAILING_HYPHEN', 16);
-}
-if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
-    define('IDNA_ERROR_HYPHEN_3_4', 32);
-}
-if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
-    define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
-}
-if (!defined('IDNA_ERROR_DISALLOWED')) {
-    define('IDNA_ERROR_DISALLOWED', 128);
-}
-if (!defined('IDNA_ERROR_PUNYCODE')) {
-    define('IDNA_ERROR_PUNYCODE', 256);
-}
-if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
-    define('IDNA_ERROR_LABEL_HAS_DOT', 512);
-}
-if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
-    define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
-}
-if (!defined('IDNA_ERROR_BIDI')) {
-    define('IDNA_ERROR_BIDI', 2048);
-}
-if (!defined('IDNA_ERROR_CONTEXTJ')) {
-    define('IDNA_ERROR_CONTEXTJ', 4096);
-}
-
-if (PHP_VERSION_ID < 70400) {
-    if (!function_exists('idn_to_ascii')) {
-        function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
-    }
-    if (!function_exists('idn_to_utf8')) {
-        function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
-    }
-} else {
-    if (!function_exists('idn_to_ascii')) {
-        function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
-    }
-    if (!function_exists('idn_to_utf8')) {
-        function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
-    }
-}
diff --git a/vendor/symfony/polyfill-intl-idn/composer.json b/vendor/symfony/polyfill-intl-idn/composer.json
deleted file mode 100644
index a3bd0d760d98980ca7bb01dd70b12d28b2bc1c61..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-idn/composer.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-    "name": "symfony/polyfill-intl-idn",
-    "type": "library",
-    "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
-    "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "idn"],
-    "homepage": "https://symfony.com",
-    "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"
-        }
-    ],
-    "require": {
-        "php": ">=7.1",
-        "symfony/polyfill-intl-normalizer": "^1.10",
-        "symfony/polyfill-php72": "^1.10"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" },
-        "files": [ "bootstrap.php" ]
-    },
-    "suggest": {
-        "ext-intl": "For best performance"
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-main": "1.20-dev"
-        },
-        "thanks": {
-            "name": "symfony/polyfill",
-            "url": "https://github.com/symfony/polyfill"
-        }
-    }
-}
diff --git a/vendor/symfony/polyfill-intl-normalizer/LICENSE b/vendor/symfony/polyfill-intl-normalizer/LICENSE
deleted file mode 100644
index 4cd8bdd3007da4d62985ec9e5ca81a1e18ae34d1..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-normalizer/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015-2019 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-intl-normalizer/Normalizer.php b/vendor/symfony/polyfill-intl-normalizer/Normalizer.php
deleted file mode 100644
index a60fae620979f44625a0e9b069c41e42e2733df3..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-normalizer/Normalizer.php
+++ /dev/null
@@ -1,308 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Normalizer;
-
-/**
- * Normalizer is a PHP fallback implementation of the Normalizer class provided by the intl extension.
- *
- * It has been validated with Unicode 6.3 Normalization Conformance Test.
- * See http://www.unicode.org/reports/tr15/ for detailed info about Unicode normalizations.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-class Normalizer
-{
-    const FORM_D = \Normalizer::FORM_D;
-    const FORM_KD = \Normalizer::FORM_KD;
-    const FORM_C = \Normalizer::FORM_C;
-    const FORM_KC = \Normalizer::FORM_KC;
-    const NFD = \Normalizer::NFD;
-    const NFKD = \Normalizer::NFKD;
-    const NFC = \Normalizer::NFC;
-    const NFKC = \Normalizer::NFKC;
-
-    private static $C;
-    private static $D;
-    private static $KD;
-    private static $cC;
-    private static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
-    private static $ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F";
-
-    public static function isNormalized($s, $form = self::NFC)
-    {
-        if (!\in_array($form, array(self::NFD, self::NFKD, self::NFC, self::NFKC))) {
-            return false;
-        }
-        $s = (string) $s;
-        if (!isset($s[strspn($s, self::$ASCII)])) {
-            return true;
-        }
-        if (self::NFC == $form && preg_match('//u', $s) && !preg_match('/[^\x00-\x{2FF}]/u', $s)) {
-            return true;
-        }
-
-        return self::normalize($s, $form) === $s;
-    }
-
-    public static function normalize($s, $form = self::NFC)
-    {
-        $s = (string) $s;
-        if (!preg_match('//u', $s)) {
-            return false;
-        }
-
-        switch ($form) {
-            case self::NFC: $C = true; $K = false; break;
-            case self::NFD: $C = false; $K = false; break;
-            case self::NFKC: $C = true; $K = true; break;
-            case self::NFKD: $C = false; $K = true; break;
-            default:
-                if (\defined('Normalizer::NONE') && \Normalizer::NONE == $form) {
-                    return $s;
-                }
-
-                return false;
-        }
-
-        if ('' === $s) {
-            return '';
-        }
-
-        if ($K && null === self::$KD) {
-            self::$KD = self::getData('compatibilityDecomposition');
-        }
-
-        if (null === self::$D) {
-            self::$D = self::getData('canonicalDecomposition');
-            self::$cC = self::getData('combiningClass');
-        }
-
-        if (null !== $mbEncoding = (2 /* MB_OVERLOAD_STRING */ & (int) ini_get('mbstring.func_overload')) ? mb_internal_encoding() : null) {
-            mb_internal_encoding('8bit');
-        }
-
-        $r = self::decompose($s, $K);
-
-        if ($C) {
-            if (null === self::$C) {
-                self::$C = self::getData('canonicalComposition');
-            }
-
-            $r = self::recompose($r);
-        }
-        if (null !== $mbEncoding) {
-            mb_internal_encoding($mbEncoding);
-        }
-
-        return $r;
-    }
-
-    private static function recompose($s)
-    {
-        $ASCII = self::$ASCII;
-        $compMap = self::$C;
-        $combClass = self::$cC;
-        $ulenMask = self::$ulenMask;
-
-        $result = $tail = '';
-
-        $i = $s[0] < "\x80" ? 1 : $ulenMask[$s[0] & "\xF0"];
-        $len = \strlen($s);
-
-        $lastUchr = substr($s, 0, $i);
-        $lastUcls = isset($combClass[$lastUchr]) ? 256 : 0;
-
-        while ($i < $len) {
-            if ($s[$i] < "\x80") {
-                // ASCII chars
-
-                if ($tail) {
-                    $lastUchr .= $tail;
-                    $tail = '';
-                }
-
-                if ($j = strspn($s, $ASCII, $i + 1)) {
-                    $lastUchr .= substr($s, $i, $j);
-                    $i += $j;
-                }
-
-                $result .= $lastUchr;
-                $lastUchr = $s[$i];
-                $lastUcls = 0;
-                ++$i;
-                continue;
-            }
-
-            $ulen = $ulenMask[$s[$i] & "\xF0"];
-            $uchr = substr($s, $i, $ulen);
-
-            if ($lastUchr < "\xE1\x84\x80" || "\xE1\x84\x92" < $lastUchr
-                || $uchr < "\xE1\x85\xA1" || "\xE1\x85\xB5" < $uchr
-                || $lastUcls) {
-                // Table lookup and combining chars composition
-
-                $ucls = isset($combClass[$uchr]) ? $combClass[$uchr] : 0;
-
-                if (isset($compMap[$lastUchr.$uchr]) && (!$lastUcls || $lastUcls < $ucls)) {
-                    $lastUchr = $compMap[$lastUchr.$uchr];
-                } elseif ($lastUcls = $ucls) {
-                    $tail .= $uchr;
-                } else {
-                    if ($tail) {
-                        $lastUchr .= $tail;
-                        $tail = '';
-                    }
-
-                    $result .= $lastUchr;
-                    $lastUchr = $uchr;
-                }
-            } else {
-                // Hangul chars
-
-                $L = \ord($lastUchr[2]) - 0x80;
-                $V = \ord($uchr[2]) - 0xA1;
-                $T = 0;
-
-                $uchr = substr($s, $i + $ulen, 3);
-
-                if ("\xE1\x86\xA7" <= $uchr && $uchr <= "\xE1\x87\x82") {
-                    $T = \ord($uchr[2]) - 0xA7;
-                    0 > $T && $T += 0x40;
-                    $ulen += 3;
-                }
-
-                $L = 0xAC00 + ($L * 21 + $V) * 28 + $T;
-                $lastUchr = \chr(0xE0 | $L >> 12).\chr(0x80 | $L >> 6 & 0x3F).\chr(0x80 | $L & 0x3F);
-            }
-
-            $i += $ulen;
-        }
-
-        return $result.$lastUchr.$tail;
-    }
-
-    private static function decompose($s, $c)
-    {
-        $result = '';
-
-        $ASCII = self::$ASCII;
-        $decompMap = self::$D;
-        $combClass = self::$cC;
-        $ulenMask = self::$ulenMask;
-        if ($c) {
-            $compatMap = self::$KD;
-        }
-
-        $c = array();
-        $i = 0;
-        $len = \strlen($s);
-
-        while ($i < $len) {
-            if ($s[$i] < "\x80") {
-                // ASCII chars
-
-                if ($c) {
-                    ksort($c);
-                    $result .= implode('', $c);
-                    $c = array();
-                }
-
-                $j = 1 + strspn($s, $ASCII, $i + 1);
-                $result .= substr($s, $i, $j);
-                $i += $j;
-                continue;
-            }
-
-            $ulen = $ulenMask[$s[$i] & "\xF0"];
-            $uchr = substr($s, $i, $ulen);
-            $i += $ulen;
-
-            if ($uchr < "\xEA\xB0\x80" || "\xED\x9E\xA3" < $uchr) {
-                // Table lookup
-
-                if ($uchr !== $j = isset($compatMap[$uchr]) ? $compatMap[$uchr] : (isset($decompMap[$uchr]) ? $decompMap[$uchr] : $uchr)) {
-                    $uchr = $j;
-
-                    $j = \strlen($uchr);
-                    $ulen = $uchr[0] < "\x80" ? 1 : $ulenMask[$uchr[0] & "\xF0"];
-
-                    if ($ulen != $j) {
-                        // Put trailing chars in $s
-
-                        $j -= $ulen;
-                        $i -= $j;
-
-                        if (0 > $i) {
-                            $s = str_repeat(' ', -$i).$s;
-                            $len -= $i;
-                            $i = 0;
-                        }
-
-                        while ($j--) {
-                            $s[$i + $j] = $uchr[$ulen + $j];
-                        }
-
-                        $uchr = substr($uchr, 0, $ulen);
-                    }
-                }
-                if (isset($combClass[$uchr])) {
-                    // Combining chars, for sorting
-
-                    if (!isset($c[$combClass[$uchr]])) {
-                        $c[$combClass[$uchr]] = '';
-                    }
-                    $c[$combClass[$uchr]] .= $uchr;
-                    continue;
-                }
-            } else {
-                // Hangul chars
-
-                $uchr = unpack('C*', $uchr);
-                $j = (($uchr[1] - 224) << 12) + (($uchr[2] - 128) << 6) + $uchr[3] - 0xAC80;
-
-                $uchr = "\xE1\x84".\chr(0x80 + (int) ($j / 588))
-                       ."\xE1\x85".\chr(0xA1 + (int) (($j % 588) / 28));
-
-                if ($j %= 28) {
-                    $uchr .= $j < 25
-                        ? ("\xE1\x86".\chr(0xA7 + $j))
-                        : ("\xE1\x87".\chr(0x67 + $j));
-                }
-            }
-            if ($c) {
-                ksort($c);
-                $result .= implode('', $c);
-                $c = array();
-            }
-
-            $result .= $uchr;
-        }
-
-        if ($c) {
-            ksort($c);
-            $result .= implode('', $c);
-        }
-
-        return $result;
-    }
-
-    private static function getData($file)
-    {
-        if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
-            return require $file;
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/symfony/polyfill-intl-normalizer/README.md b/vendor/symfony/polyfill-intl-normalizer/README.md
deleted file mode 100644
index 15060c5f1fa413a56739ebb3126a3b966eba29d4..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-normalizer/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Symfony Polyfill / Intl: Normalizer
-===================================
-
-This component provides a fallback implementation for the
-[`Normalizer`](https://php.net/Normalizer) class provided
-by the [Intl](https://php.net/intl) extension.
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php b/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php
deleted file mode 100644
index ca18eff36f0b8591d36ebe56b04eda02a509afa1..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class Normalizer extends Symfony\Polyfill\Intl\Normalizer\Normalizer
-{
-    /**
-     * @deprecated since ICU 56 and removed in PHP 8
-     */
-    const NONE = 1;
-    const FORM_D = 2;
-    const FORM_KD = 3;
-    const FORM_C = 4;
-    const FORM_KC = 5;
-    const NFD = 2;
-    const NFKD = 3;
-    const NFC = 4;
-    const NFKC = 5;
-}
diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php b/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php
deleted file mode 100644
index db4764419e7e69041699e33c337beaac6cf319f2..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php
+++ /dev/null
@@ -1,945 +0,0 @@
-<?php
-
-return array (
-  'À' => 'À',
-  'Á' => 'Á',
-  'Â' => 'Â',
-  'Ã' => 'Ã',
-  'Ä' => 'Ä',
-  'AÌŠ' => 'Ã…',
-  'Ç' => 'Ç',
-  'È' => 'È',
-  'É' => 'É',
-  'Ê' => 'Ê',
-  'Ë' => 'Ë',
-  'Ì' => 'Ì',
-  'Í' => 'Í',
-  'IÌ‚' => 'ÃŽ',
-  'Ï' => 'Ï',
-  'Ñ' => 'Ñ',
-  'OÌ€' => 'Ã’',
-  'Ó' => 'Ó',
-  'Ô' => 'Ô',
-  'Õ' => 'Õ',
-  'Ö' => 'Ö',
-  'Ù' => 'Ù',
-  'Ú' => 'Ú',
-  'Û' => 'Û',
-  'Ü' => 'Ü',
-  'Ý' => 'Ý',
-  'à' => 'à',
-  'á' => 'á',
-  'â' => 'â',
-  'ã' => 'ã',
-  'ä' => 'ä',
-  'aÌŠ' => 'Ã¥',
-  'ç' => 'ç',
-  'è' => 'è',
-  'é' => 'é',
-  'ê' => 'ê',
-  'ë' => 'ë',
-  'ì' => 'ì',
-  'í' => 'í',
-  'î' => 'î',
-  'ï' => 'ï',
-  'ñ' => 'ñ',
-  'ò' => 'ò',
-  'ó' => 'ó',
-  'ô' => 'ô',
-  'õ' => 'õ',
-  'ö' => 'ö',
-  'ù' => 'ù',
-  'ú' => 'ú',
-  'û' => 'û',
-  'ü' => 'ü',
-  'ý' => 'ý',
-  'ÿ' => 'ÿ',
-  'AÌ„' => 'Ä€',
-  'ā' => 'ā',
-  'Ă' => 'Ă',
-  'ă' => 'ă',
-  'Ą' => 'Ą',
-  'ą' => 'ą',
-  'Ć' => 'Ć',
-  'ć' => 'ć',
-  'Ĉ' => 'Ĉ',
-  'ĉ' => 'ĉ',
-  'Ċ' => 'Ċ',
-  'ċ' => 'ċ',
-  'Č' => 'Č',
-  'č' => 'č',
-  'Ď' => 'Ď',
-  'ď' => 'ď',
-  'EÌ„' => 'Ä’',
-  'ē' => 'ē',
-  'Ĕ' => 'Ĕ',
-  'ĕ' => 'ĕ',
-  'Ė' => 'Ė',
-  'ė' => 'ė',
-  'Ę' => 'Ę',
-  'ę' => 'ę',
-  'Ě' => 'Ě',
-  'ě' => 'ě',
-  'Ĝ' => 'Ĝ',
-  'ĝ' => 'ĝ',
-  'Ğ' => 'Ğ',
-  'ğ' => 'ğ',
-  'Ġ' => 'Ġ',
-  'ġ' => 'ġ',
-  'Ģ' => 'Ģ',
-  'ģ' => 'ģ',
-  'Ĥ' => 'Ĥ',
-  'ĥ' => 'ĥ',
-  'Ĩ' => 'Ĩ',
-  'ĩ' => 'ĩ',
-  'Ī' => 'Ī',
-  'ī' => 'ī',
-  'Ĭ' => 'Ĭ',
-  'ĭ' => 'ĭ',
-  'Į' => 'Į',
-  'į' => 'į',
-  'İ' => 'İ',
-  'JÌ‚' => 'Ä´',
-  'ĵ' => 'ĵ',
-  'Ķ' => 'Ķ',
-  'ķ' => 'ķ',
-  'Ĺ' => 'Ĺ',
-  'ĺ' => 'ĺ',
-  'Ļ' => 'Ļ',
-  'ļ' => 'ļ',
-  'Ľ' => 'Ľ',
-  'ľ' => 'ľ',
-  'Ń' => 'Ń',
-  'ń' => 'ń',
-  'Ņ' => 'Ņ',
-  'ņ' => 'ņ',
-  'Ň' => 'Ň',
-  'ň' => 'ň',
-  'Ō' => 'Ō',
-  'ō' => 'ō',
-  'Ŏ' => 'Ŏ',
-  'ŏ' => 'ŏ',
-  'Ő' => 'Ő',
-  'ő' => 'ő',
-  'Ŕ' => 'Ŕ',
-  'ŕ' => 'ŕ',
-  'Ŗ' => 'Ŗ',
-  'ŗ' => 'ŗ',
-  'Ř' => 'Ř',
-  'ř' => 'ř',
-  'Ś' => 'Ś',
-  'ś' => 'ś',
-  'Ŝ' => 'Ŝ',
-  'ŝ' => 'ŝ',
-  'Ş' => 'Ş',
-  'ş' => 'ş',
-  'Š' => 'Š',
-  'š' => 'š',
-  'Ţ' => 'Ţ',
-  'ţ' => 'ţ',
-  'Ť' => 'Ť',
-  'ť' => 'ť',
-  'Ũ' => 'Ũ',
-  'ũ' => 'ũ',
-  'Ū' => 'Ū',
-  'ū' => 'ū',
-  'Ŭ' => 'Ŭ',
-  'ŭ' => 'ŭ',
-  'UÌŠ' => 'Å®',
-  'ů' => 'ů',
-  'Ű' => 'Ű',
-  'ű' => 'ű',
-  'Ų' => 'Ų',
-  'ų' => 'ų',
-  'WÌ‚' => 'Å´',
-  'ŵ' => 'ŵ',
-  'Ŷ' => 'Ŷ',
-  'ŷ' => 'ŷ',
-  'Ÿ' => 'Ÿ',
-  'Ź' => 'Ź',
-  'ź' => 'ź',
-  'Ż' => 'Ż',
-  'ż' => 'ż',
-  'Ž' => 'Ž',
-  'ž' => 'ž',
-  'OÌ›' => 'Æ ',
-  'oÌ›' => 'Æ¡',
-  'Ư' => 'Ư',
-  'ư' => 'ư',
-  'Ǎ' => 'Ǎ',
-  'ǎ' => 'ǎ',
-  'Ǐ' => 'Ǐ',
-  'ǐ' => 'ǐ',
-  'Ǒ' => 'Ǒ',
-  'ǒ' => 'ǒ',
-  'Ǔ' => 'Ǔ',
-  'ǔ' => 'ǔ',
-  'Ǖ' => 'Ǖ',
-  'ǖ' => 'ǖ',
-  'Ǘ' => 'Ǘ',
-  'ǘ' => 'ǘ',
-  'Ǚ' => 'Ǚ',
-  'ǚ' => 'ǚ',
-  'Ǜ' => 'Ǜ',
-  'ǜ' => 'ǜ',
-  'Ǟ' => 'Ǟ',
-  'ǟ' => 'ǟ',
-  'Ǡ' => 'Ǡ',
-  'ǡ' => 'ǡ',
-  'Ǣ' => 'Ǣ',
-  'ǣ' => 'ǣ',
-  'Ǧ' => 'Ǧ',
-  'ǧ' => 'ǧ',
-  'Ǩ' => 'Ǩ',
-  'ǩ' => 'ǩ',
-  'Ǫ' => 'Ǫ',
-  'ǫ' => 'ǫ',
-  'Ǭ' => 'Ǭ',
-  'ǭ' => 'ǭ',
-  'Ǯ' => 'Ǯ',
-  'ǯ' => 'ǯ',
-  'ǰ' => 'ǰ',
-  'Ǵ' => 'Ǵ',
-  'ǵ' => 'ǵ',
-  'Ǹ' => 'Ǹ',
-  'ǹ' => 'ǹ',
-  'Ǻ' => 'Ǻ',
-  'ǻ' => 'ǻ',
-  'Ǽ' => 'Ǽ',
-  'ǽ' => 'ǽ',
-  'Ǿ' => 'Ǿ',
-  'ǿ' => 'ǿ',
-  'Ȁ' => 'Ȁ',
-  'ȁ' => 'ȁ',
-  'AÌ‘' => 'È‚',
-  'ȃ' => 'ȃ',
-  'Ȅ' => 'Ȅ',
-  'ȅ' => 'ȅ',
-  'Ȇ' => 'Ȇ',
-  'ȇ' => 'ȇ',
-  'Ȉ' => 'Ȉ',
-  'ȉ' => 'ȉ',
-  'IÌ‘' => 'ÈŠ',
-  'ȋ' => 'ȋ',
-  'Ȍ' => 'Ȍ',
-  'ȍ' => 'ȍ',
-  'OÌ‘' => 'ÈŽ',
-  'ȏ' => 'ȏ',
-  'Ȑ' => 'Ȑ',
-  'ȑ' => 'ȑ',
-  'RÌ‘' => 'È’',
-  'ȓ' => 'ȓ',
-  'Ȕ' => 'Ȕ',
-  'ȕ' => 'ȕ',
-  'UÌ‘' => 'È–',
-  'ȗ' => 'ȗ',
-  'Ș' => 'Ș',
-  'ș' => 'ș',
-  'Ț' => 'Ț',
-  'ț' => 'ț',
-  'Ȟ' => 'Ȟ',
-  'ȟ' => 'ȟ',
-  'Ȧ' => 'Ȧ',
-  'ȧ' => 'ȧ',
-  'Ȩ' => 'Ȩ',
-  'ȩ' => 'ȩ',
-  'Ȫ' => 'Ȫ',
-  'ȫ' => 'ȫ',
-  'Ȭ' => 'Ȭ',
-  'ȭ' => 'ȭ',
-  'Ȯ' => 'Ȯ',
-  'ȯ' => 'ȯ',
-  'Ȱ' => 'Ȱ',
-  'ȱ' => 'ȱ',
-  'Ȳ' => 'Ȳ',
-  'ȳ' => 'ȳ',
-  '΅' => '΅',
-  'Ά' => 'Ά',
-  'Έ' => 'Έ',
-  'Ή' => 'Ή',
-  'Ί' => 'Ί',
-  'Ό' => 'Ό',
-  'Ύ' => 'Ύ',
-  'Ώ' => 'Ώ',
-  'ΐ' => 'ΐ',
-  'Ϊ' => 'Ϊ',
-  'Ϋ' => 'Ϋ',
-  'ά' => 'ά',
-  'έ' => 'έ',
-  'ή' => 'ή',
-  'ί' => 'ί',
-  'ΰ' => 'ΰ',
-  'ϊ' => 'ϊ',
-  'ϋ' => 'ϋ',
-  'ό' => 'ό',
-  'ύ' => 'ύ',
-  'ώ' => 'ώ',
-  'ϓ' => 'ϓ',
-  'ϔ' => 'ϔ',
-  'Ѐ' => 'Ѐ',
-  'Ё' => 'Ё',
-  'Ѓ' => 'Ѓ',
-  'Ї' => 'Ї',
-  'Ќ' => 'Ќ',
-  'Ѝ' => 'Ѝ',
-  'Ў' => 'Ў',
-  'Й' => 'Й',
-  'й' => 'й',
-  'ѐ' => 'ѐ',
-  'ё' => 'ё',
-  'ѓ' => 'ѓ',
-  'ї' => 'ї',
-  'ќ' => 'ќ',
-  'ѝ' => 'ѝ',
-  'ў' => 'ў',
-  'Ѷ' => 'Ѷ',
-  'ѷ' => 'ѷ',
-  'Ӂ' => 'Ӂ',
-  'ӂ' => 'ӂ',
-  'Ӑ' => 'Ӑ',
-  'ӑ' => 'ӑ',
-  'Ӓ' => 'Ӓ',
-  'ӓ' => 'ӓ',
-  'Ӗ' => 'Ӗ',
-  'ӗ' => 'ӗ',
-  'Ӛ' => 'Ӛ',
-  'ӛ' => 'ӛ',
-  'Ӝ' => 'Ӝ',
-  'ӝ' => 'ӝ',
-  'Ӟ' => 'Ӟ',
-  'ӟ' => 'ӟ',
-  'Ӣ' => 'Ӣ',
-  'ӣ' => 'ӣ',
-  'Ӥ' => 'Ӥ',
-  'ӥ' => 'ӥ',
-  'Ӧ' => 'Ӧ',
-  'ӧ' => 'ӧ',
-  'Ӫ' => 'Ӫ',
-  'ӫ' => 'ӫ',
-  'Ӭ' => 'Ӭ',
-  'ӭ' => 'ӭ',
-  'Ӯ' => 'Ӯ',
-  'ӯ' => 'ӯ',
-  'Ӱ' => 'Ӱ',
-  'ӱ' => 'ӱ',
-  'Ӳ' => 'Ӳ',
-  'ӳ' => 'ӳ',
-  'Ӵ' => 'Ӵ',
-  'ӵ' => 'ӵ',
-  'Ӹ' => 'Ӹ',
-  'ӹ' => 'ӹ',
-  'آ' => 'آ',
-  'أ' => 'أ',
-  'ؤ' => 'ؤ',
-  'إ' => 'إ',
-  'ئ' => 'ئ',
-  'Û•Ù”' => 'Û€',
-  'ۂ' => 'ۂ',
-  'Û’Ù”' => 'Û“',
-  'ऩ' => 'ऩ',
-  'ऱ' => 'ऱ',
-  'ऴ' => 'ऴ',
-  'ো' => 'ো',
-  'ৌ' => 'ৌ',
-  'ୈ' => 'ୈ',
-  'ୋ' => 'ୋ',
-  'ୌ' => 'ୌ',
-  'ஔ' => 'ஔ',
-  'ொ' => 'ொ',
-  'ோ' => 'ோ',
-  'ௌ' => 'ௌ',
-  'ై' => 'ై',
-  'ೀ' => 'ೀ',
-  'ೇ' => 'ೇ',
-  'ೈ' => 'ೈ',
-  'ೊ' => 'ೊ',
-  'ೋ' => 'ೋ',
-  'ൊ' => 'ൊ',
-  'ോ' => 'ോ',
-  'ൌ' => 'ൌ',
-  'ේ' => 'ේ',
-  'ො' => 'ො',
-  'ෝ' => 'ෝ',
-  'ෞ' => 'ෞ',
-  'ဦ' => 'ဦ',
-  'ᬆ' => 'ᬆ',
-  'ᬈ' => 'ᬈ',
-  'ᬊ' => 'ᬊ',
-  'ᬌ' => 'ᬌ',
-  'ᬎ' => 'ᬎ',
-  'ᬒ' => 'ᬒ',
-  'ᬻ' => 'ᬻ',
-  'ᬽ' => 'ᬽ',
-  'ᭀ' => 'ᭀ',
-  'ᭁ' => 'ᭁ',
-  'ᭃ' => 'ᭃ',
-  'Ḁ' => 'Ḁ',
-  'ḁ' => 'ḁ',
-  'Ḃ' => 'Ḃ',
-  'ḃ' => 'ḃ',
-  'Ḅ' => 'Ḅ',
-  'ḅ' => 'ḅ',
-  'Ḇ' => 'Ḇ',
-  'ḇ' => 'ḇ',
-  'Ḉ' => 'Ḉ',
-  'ḉ' => 'ḉ',
-  'Ḋ' => 'Ḋ',
-  'ḋ' => 'ḋ',
-  'Ḍ' => 'Ḍ',
-  'ḍ' => 'ḍ',
-  'Ḏ' => 'Ḏ',
-  'ḏ' => 'ḏ',
-  'Ḑ' => 'Ḑ',
-  'ḑ' => 'ḑ',
-  'Ḓ' => 'Ḓ',
-  'ḓ' => 'ḓ',
-  'Ḕ' => 'Ḕ',
-  'ḕ' => 'ḕ',
-  'Ḗ' => 'Ḗ',
-  'ḗ' => 'ḗ',
-  'Ḙ' => 'Ḙ',
-  'ḙ' => 'ḙ',
-  'Ḛ' => 'Ḛ',
-  'ḛ' => 'ḛ',
-  'Ḝ' => 'Ḝ',
-  'ḝ' => 'ḝ',
-  'Ḟ' => 'Ḟ',
-  'ḟ' => 'ḟ',
-  'Ḡ' => 'Ḡ',
-  'ḡ' => 'ḡ',
-  'Ḣ' => 'Ḣ',
-  'ḣ' => 'ḣ',
-  'Ḥ' => 'Ḥ',
-  'ḥ' => 'ḥ',
-  'Ḧ' => 'Ḧ',
-  'ḧ' => 'ḧ',
-  'Ḩ' => 'Ḩ',
-  'ḩ' => 'ḩ',
-  'Ḫ' => 'Ḫ',
-  'ḫ' => 'ḫ',
-  'Ḭ' => 'Ḭ',
-  'ḭ' => 'ḭ',
-  'Ḯ' => 'Ḯ',
-  'ḯ' => 'ḯ',
-  'Ḱ' => 'Ḱ',
-  'ḱ' => 'ḱ',
-  'Ḳ' => 'Ḳ',
-  'ḳ' => 'ḳ',
-  'Ḵ' => 'Ḵ',
-  'ḵ' => 'ḵ',
-  'Ḷ' => 'Ḷ',
-  'ḷ' => 'ḷ',
-  'Ḹ' => 'Ḹ',
-  'ḹ' => 'ḹ',
-  'Ḻ' => 'Ḻ',
-  'ḻ' => 'ḻ',
-  'Ḽ' => 'Ḽ',
-  'ḽ' => 'ḽ',
-  'Ḿ' => 'Ḿ',
-  'ḿ' => 'ḿ',
-  'Ṁ' => 'Ṁ',
-  'ṁ' => 'ṁ',
-  'Ṃ' => 'Ṃ',
-  'ṃ' => 'ṃ',
-  'Ṅ' => 'Ṅ',
-  'ṅ' => 'ṅ',
-  'Ṇ' => 'Ṇ',
-  'ṇ' => 'ṇ',
-  'Ṉ' => 'Ṉ',
-  'ṉ' => 'ṉ',
-  'Ṋ' => 'Ṋ',
-  'ṋ' => 'ṋ',
-  'Ṍ' => 'Ṍ',
-  'ṍ' => 'ṍ',
-  'Ṏ' => 'Ṏ',
-  'ṏ' => 'ṏ',
-  'Ṑ' => 'Ṑ',
-  'ṑ' => 'ṑ',
-  'Ṓ' => 'Ṓ',
-  'ṓ' => 'ṓ',
-  'Ṕ' => 'Ṕ',
-  'ṕ' => 'ṕ',
-  'Ṗ' => 'Ṗ',
-  'ṗ' => 'ṗ',
-  'Ṙ' => 'Ṙ',
-  'ṙ' => 'ṙ',
-  'Ṛ' => 'Ṛ',
-  'ṛ' => 'ṛ',
-  'Ṝ' => 'Ṝ',
-  'ṝ' => 'ṝ',
-  'Ṟ' => 'Ṟ',
-  'ṟ' => 'ṟ',
-  'Ṡ' => 'Ṡ',
-  'ṡ' => 'ṡ',
-  'SÌ£' => 'á¹¢',
-  'ṣ' => 'ṣ',
-  'Ṥ' => 'Ṥ',
-  'ṥ' => 'ṥ',
-  'Ṧ' => 'Ṧ',
-  'ṧ' => 'ṧ',
-  'Ṩ' => 'Ṩ',
-  'ṩ' => 'ṩ',
-  'Ṫ' => 'Ṫ',
-  'ṫ' => 'ṫ',
-  'Ṭ' => 'Ṭ',
-  'ṭ' => 'ṭ',
-  'Ṯ' => 'Ṯ',
-  'ṯ' => 'ṯ',
-  'TÌ­' => 'á¹°',
-  'tÌ­' => 'á¹±',
-  'Ṳ' => 'Ṳ',
-  'ṳ' => 'ṳ',
-  'Ṵ' => 'Ṵ',
-  'ṵ' => 'ṵ',
-  'UÌ­' => 'á¹¶',
-  'uÌ­' => 'á¹·',
-  'Ṹ' => 'Ṹ',
-  'ṹ' => 'ṹ',
-  'Ṻ' => 'Ṻ',
-  'ṻ' => 'ṻ',
-  'Ṽ' => 'Ṽ',
-  'ṽ' => 'ṽ',
-  'VÌ£' => 'á¹¾',
-  'ṿ' => 'ṿ',
-  'Ẁ' => 'Ẁ',
-  'ẁ' => 'ẁ',
-  'Ẃ' => 'Ẃ',
-  'ẃ' => 'ẃ',
-  'Ẅ' => 'Ẅ',
-  'ẅ' => 'ẅ',
-  'Ẇ' => 'Ẇ',
-  'ẇ' => 'ẇ',
-  'Ẉ' => 'Ẉ',
-  'ẉ' => 'ẉ',
-  'Ẋ' => 'Ẋ',
-  'ẋ' => 'ẋ',
-  'Ẍ' => 'Ẍ',
-  'ẍ' => 'ẍ',
-  'Ẏ' => 'Ẏ',
-  'ẏ' => 'ẏ',
-  'Ẑ' => 'Ẑ',
-  'ẑ' => 'ẑ',
-  'Ẓ' => 'Ẓ',
-  'ẓ' => 'ẓ',
-  'Ẕ' => 'Ẕ',
-  'ẕ' => 'ẕ',
-  'ẖ' => 'ẖ',
-  'ẗ' => 'ẗ',
-  'ẘ' => 'ẘ',
-  'ẙ' => 'ẙ',
-  'ẛ' => 'ẛ',
-  'Ạ' => 'Ạ',
-  'ạ' => 'ạ',
-  'Ả' => 'Ả',
-  'ả' => 'ả',
-  'Ấ' => 'Ấ',
-  'ấ' => 'ấ',
-  'Ầ' => 'Ầ',
-  'ầ' => 'ầ',
-  'Ẩ' => 'Ẩ',
-  'ẩ' => 'ẩ',
-  'Ẫ' => 'Ẫ',
-  'ẫ' => 'ẫ',
-  'Ậ' => 'Ậ',
-  'ậ' => 'ậ',
-  'Ắ' => 'Ắ',
-  'ắ' => 'ắ',
-  'Ằ' => 'Ằ',
-  'ằ' => 'ằ',
-  'Ẳ' => 'Ẳ',
-  'ẳ' => 'ẳ',
-  'Ẵ' => 'Ẵ',
-  'ẵ' => 'ẵ',
-  'Ặ' => 'Ặ',
-  'ặ' => 'ặ',
-  'Ẹ' => 'Ẹ',
-  'ẹ' => 'ẹ',
-  'Ẻ' => 'Ẻ',
-  'ẻ' => 'ẻ',
-  'Ẽ' => 'Ẽ',
-  'ẽ' => 'ẽ',
-  'Ế' => 'Ế',
-  'ế' => 'ế',
-  'Ề' => 'Ề',
-  'ề' => 'ề',
-  'Ể' => 'Ể',
-  'ể' => 'ể',
-  'Ễ' => 'Ễ',
-  'ễ' => 'ễ',
-  'Ệ' => 'Ệ',
-  'ệ' => 'ệ',
-  'Ỉ' => 'Ỉ',
-  'ỉ' => 'ỉ',
-  'Ị' => 'Ị',
-  'ị' => 'ị',
-  'Ọ' => 'Ọ',
-  'ọ' => 'ọ',
-  'Ỏ' => 'Ỏ',
-  'ỏ' => 'ỏ',
-  'Ố' => 'Ố',
-  'ố' => 'ố',
-  'Ồ' => 'Ồ',
-  'ồ' => 'ồ',
-  'Ổ' => 'Ổ',
-  'ổ' => 'ổ',
-  'Ỗ' => 'Ỗ',
-  'ỗ' => 'ỗ',
-  'Ộ' => 'Ộ',
-  'ộ' => 'ộ',
-  'Ớ' => 'Ớ',
-  'ớ' => 'ớ',
-  'Ờ' => 'Ờ',
-  'ờ' => 'ờ',
-  'Ở' => 'Ở',
-  'ở' => 'ở',
-  'Ỡ' => 'Ỡ',
-  'ỡ' => 'ỡ',
-  'Ợ' => 'Ợ',
-  'ợ' => 'ợ',
-  'Ụ' => 'Ụ',
-  'ụ' => 'ụ',
-  'Ủ' => 'Ủ',
-  'ủ' => 'ủ',
-  'Ứ' => 'Ứ',
-  'ứ' => 'ứ',
-  'Ừ' => 'Ừ',
-  'ừ' => 'ừ',
-  'Ử' => 'Ử',
-  'ử' => 'ử',
-  'Ữ' => 'Ữ',
-  'ữ' => 'ữ',
-  'Ự' => 'Ự',
-  'ự' => 'ự',
-  'Ỳ' => 'Ỳ',
-  'ỳ' => 'ỳ',
-  'YÌ£' => 'á»´',
-  'ỵ' => 'ỵ',
-  'Ỷ' => 'Ỷ',
-  'ỷ' => 'ỷ',
-  'Ỹ' => 'Ỹ',
-  'ỹ' => 'ỹ',
-  'ἀ' => 'ἀ',
-  'ἁ' => 'ἁ',
-  'ἂ' => 'ἂ',
-  'ἃ' => 'ἃ',
-  'ἄ' => 'ἄ',
-  'ἅ' => 'ἅ',
-  'ἆ' => 'ἆ',
-  'ἇ' => 'ἇ',
-  'Ἀ' => 'Ἀ',
-  'Ἁ' => 'Ἁ',
-  'Ἂ' => 'Ἂ',
-  'Ἃ' => 'Ἃ',
-  'Ἄ' => 'Ἄ',
-  'Ἅ' => 'Ἅ',
-  'Ἆ' => 'Ἆ',
-  'Ἇ' => 'Ἇ',
-  'ἐ' => 'ἐ',
-  'ἑ' => 'ἑ',
-  'ἒ' => 'ἒ',
-  'ἓ' => 'ἓ',
-  'ἔ' => 'ἔ',
-  'ἕ' => 'ἕ',
-  'Ἐ' => 'Ἐ',
-  'Ἑ' => 'Ἑ',
-  'Ἒ' => 'Ἒ',
-  'Ἓ' => 'Ἓ',
-  'Ἔ' => 'Ἔ',
-  'Ἕ' => 'Ἕ',
-  'ἠ' => 'ἠ',
-  'ἡ' => 'ἡ',
-  'ἢ' => 'ἢ',
-  'ἣ' => 'ἣ',
-  'ἤ' => 'ἤ',
-  'ἥ' => 'ἥ',
-  'ἦ' => 'ἦ',
-  'ἧ' => 'ἧ',
-  'Ἠ' => 'Ἠ',
-  'Ἡ' => 'Ἡ',
-  'Ἢ' => 'Ἢ',
-  'Ἣ' => 'Ἣ',
-  'Ἤ' => 'Ἤ',
-  'Ἥ' => 'Ἥ',
-  'Ἦ' => 'Ἦ',
-  'Ἧ' => 'Ἧ',
-  'ἰ' => 'ἰ',
-  'ἱ' => 'ἱ',
-  'á¼°Ì€' => 'á¼²',
-  'ἳ' => 'ἳ',
-  'ἴ' => 'ἴ',
-  'ἵ' => 'ἵ',
-  'á¼°Í‚' => 'á¼¶',
-  'ἷ' => 'ἷ',
-  'Ἰ' => 'Ἰ',
-  'Ἱ' => 'Ἱ',
-  'Ἲ' => 'Ἲ',
-  'Ἳ' => 'Ἳ',
-  'Ἴ' => 'Ἴ',
-  'Ἵ' => 'Ἵ',
-  'Ἶ' => 'Ἶ',
-  'Ἷ' => 'Ἷ',
-  'ὀ' => 'ὀ',
-  'ὁ' => 'ὁ',
-  'ὂ' => 'ὂ',
-  'ὃ' => 'ὃ',
-  'ὄ' => 'ὄ',
-  'ὅ' => 'ὅ',
-  'Ὀ' => 'Ὀ',
-  'Ὁ' => 'Ὁ',
-  'Ὂ' => 'Ὂ',
-  'Ὃ' => 'Ὃ',
-  'Ὄ' => 'Ὄ',
-  'Ὅ' => 'Ὅ',
-  'ὐ' => 'ὐ',
-  'ὑ' => 'ὑ',
-  'ὒ' => 'ὒ',
-  'ὓ' => 'ὓ',
-  'ὔ' => 'ὔ',
-  'ὕ' => 'ὕ',
-  'ὖ' => 'ὖ',
-  'ὗ' => 'ὗ',
-  'Ὑ' => 'Ὑ',
-  'Ὓ' => 'Ὓ',
-  'Ὕ' => 'Ὕ',
-  'Ὗ' => 'Ὗ',
-  'ὠ' => 'ὠ',
-  'ὡ' => 'ὡ',
-  'ὢ' => 'ὢ',
-  'ὣ' => 'ὣ',
-  'ὤ' => 'ὤ',
-  'ὥ' => 'ὥ',
-  'ὦ' => 'ὦ',
-  'ὧ' => 'ὧ',
-  'Ὠ' => 'Ὠ',
-  'Ὡ' => 'Ὡ',
-  'Ὢ' => 'Ὢ',
-  'Ὣ' => 'Ὣ',
-  'Ὤ' => 'Ὤ',
-  'Ὥ' => 'Ὥ',
-  'Ὦ' => 'Ὦ',
-  'Ὧ' => 'Ὧ',
-  'ὰ' => 'ὰ',
-  'ὲ' => 'ὲ',
-  'ὴ' => 'ὴ',
-  'ὶ' => 'ὶ',
-  'ὸ' => 'ὸ',
-  'ὺ' => 'ὺ',
-  'ὼ' => 'ὼ',
-  'ᾀ' => 'ᾀ',
-  'ᾁ' => 'ᾁ',
-  'ᾂ' => 'ᾂ',
-  'ᾃ' => 'ᾃ',
-  'ᾄ' => 'ᾄ',
-  'á¼…Í…' => 'á¾…',
-  'ᾆ' => 'ᾆ',
-  'ᾇ' => 'ᾇ',
-  'ᾈ' => 'ᾈ',
-  'ᾉ' => 'ᾉ',
-  'ᾊ' => 'ᾊ',
-  'ᾋ' => 'ᾋ',
-  'ᾌ' => 'ᾌ',
-  'ᾍ' => 'ᾍ',
-  'ᾎ' => 'ᾎ',
-  'ᾏ' => 'ᾏ',
-  'ᾐ' => 'ᾐ',
-  'ᾑ' => 'ᾑ',
-  'ᾒ' => 'ᾒ',
-  'ᾓ' => 'ᾓ',
-  'ᾔ' => 'ᾔ',
-  'ᾕ' => 'ᾕ',
-  'ᾖ' => 'ᾖ',
-  'á¼§Í…' => 'á¾—',
-  'ᾘ' => 'ᾘ',
-  'ᾙ' => 'ᾙ',
-  'ᾚ' => 'ᾚ',
-  'ᾛ' => 'ᾛ',
-  'ᾜ' => 'ᾜ',
-  'ᾝ' => 'ᾝ',
-  'ᾞ' => 'ᾞ',
-  'ᾟ' => 'ᾟ',
-  'á½ Í…' => 'á¾ ',
-  'ᾡ' => 'ᾡ',
-  'ᾢ' => 'ᾢ',
-  'ᾣ' => 'ᾣ',
-  'ᾤ' => 'ᾤ',
-  'ᾥ' => 'ᾥ',
-  'ᾦ' => 'ᾦ',
-  'á½§Í…' => 'á¾§',
-  'ᾨ' => 'ᾨ',
-  'ᾩ' => 'ᾩ',
-  'ᾪ' => 'ᾪ',
-  'ᾫ' => 'ᾫ',
-  'ᾬ' => 'ᾬ',
-  'á½­Í…' => 'á¾­',
-  'ᾮ' => 'ᾮ',
-  'ᾯ' => 'ᾯ',
-  'ᾰ' => 'ᾰ',
-  'ᾱ' => 'ᾱ',
-  'á½°Í…' => 'á¾²',
-  'ᾳ' => 'ᾳ',
-  'ᾴ' => 'ᾴ',
-  'ᾶ' => 'ᾶ',
-  'á¾¶Í…' => 'á¾·',
-  'Ᾰ' => 'Ᾰ',
-  'Ᾱ' => 'Ᾱ',
-  'Ὰ' => 'Ὰ',
-  'ᾼ' => 'ᾼ',
-  '῁' => '῁',
-  'á½´Í…' => 'á¿‚',
-  'ῃ' => 'ῃ',
-  'ῄ' => 'ῄ',
-  'ῆ' => 'ῆ',
-  'ῇ' => 'ῇ',
-  'Ὲ' => 'Ὲ',
-  'Ὴ' => 'Ὴ',
-  'ῌ' => 'ῌ',
-  '῍' => '῍',
-  '῎' => '῎',
-  '῏' => '῏',
-  'ῐ' => 'ῐ',
-  'ῑ' => 'ῑ',
-  'ÏŠÌ€' => 'á¿’',
-  'ῖ' => 'ῖ',
-  'ÏŠÍ‚' => 'á¿—',
-  'Ῐ' => 'Ῐ',
-  'Ῑ' => 'Ῑ',
-  'Ὶ' => 'Ὶ',
-  '῝' => '῝',
-  '῞' => '῞',
-  '῟' => '῟',
-  'ῠ' => 'ῠ',
-  'Ï…Ì„' => 'á¿¡',
-  'ῢ' => 'ῢ',
-  'ῤ' => 'ῤ',
-  'ῥ' => 'ῥ',
-  'ῦ' => 'ῦ',
-  'ῧ' => 'ῧ',
-  'Ῠ' => 'Ῠ',
-  'Ῡ' => 'Ῡ',
-  'Ὺ' => 'Ὺ',
-  'Ῥ' => 'Ῥ',
-  '῭' => '῭',
-  'ῲ' => 'ῲ',
-  'ῳ' => 'ῳ',
-  'ÏŽÍ…' => 'á¿´',
-  'ῶ' => 'ῶ',
-  'á¿¶Í…' => 'á¿·',
-  'Ὸ' => 'Ὸ',
-  'Ὼ' => 'Ὼ',
-  'ῼ' => 'ῼ',
-  '↚' => '↚',
-  '↛' => '↛',
-  '↮' => '↮',
-  '⇍' => '⇍',
-  '⇎' => '⇎',
-  '⇏' => '⇏',
-  '∄' => '∄',
-  '∉' => '∉',
-  '∌' => '∌',
-  '∤' => '∤',
-  '∦' => '∦',
-  '≁' => '≁',
-  '≄' => '≄',
-  '≇' => '≇',
-  '≉' => '≉',
-  '≠' => '≠',
-  '≢' => '≢',
-  '≭' => '≭',
-  '≮' => '≮',
-  '≯' => '≯',
-  '≰' => '≰',
-  '≱' => '≱',
-  '≴' => '≴',
-  '≵' => '≵',
-  '≸' => '≸',
-  '≹' => '≹',
-  '⊀' => '⊀',
-  '⊁' => '⊁',
-  '⊄' => '⊄',
-  '⊅' => '⊅',
-  '⊈' => '⊈',
-  '⊉' => '⊉',
-  '⊬' => '⊬',
-  '⊭' => '⊭',
-  '⊮' => '⊮',
-  '⊯' => '⊯',
-  '⋠' => '⋠',
-  '⋡' => '⋡',
-  '⋢' => '⋢',
-  '⋣' => '⋣',
-  '⋪' => '⋪',
-  '⋫' => '⋫',
-  '⋬' => '⋬',
-  '⋭' => '⋭',
-  'が' => 'が',
-  'ぎ' => 'ぎ',
-  'ぐ' => 'ぐ',
-  'げ' => 'げ',
-  'ご' => 'ご',
-  'ざ' => 'ざ',
-  'じ' => 'じ',
-  'ず' => 'ず',
-  'ぜ' => 'ぜ',
-  'ぞ' => 'ぞ',
-  'だ' => 'だ',
-  'ぢ' => 'ぢ',
-  'づ' => 'づ',
-  'で' => 'で',
-  'ど' => 'ど',
-  'ば' => 'ば',
-  'ぱ' => 'ぱ',
-  'び' => 'び',
-  'ぴ' => 'ぴ',
-  'ぶ' => 'ぶ',
-  'ぷ' => 'ぷ',
-  'べ' => 'べ',
-  'ぺ' => 'ぺ',
-  'ぼ' => 'ぼ',
-  'ぽ' => 'ぽ',
-  'ゔ' => 'ゔ',
-  'ゞ' => 'ゞ',
-  'ガ' => 'ガ',
-  'ã‚­ã‚™' => 'ã‚®',
-  'グ' => 'グ',
-  'ゲ' => 'ゲ',
-  'ゴ' => 'ゴ',
-  'ザ' => 'ザ',
-  'ジ' => 'ジ',
-  'ズ' => 'ズ',
-  'ゼ' => 'ゼ',
-  'ゾ' => 'ゾ',
-  'ダ' => 'ダ',
-  'ヂ' => 'ヂ',
-  'ヅ' => 'ヅ',
-  'デ' => 'デ',
-  'ド' => 'ド',
-  'バ' => 'バ',
-  'パ' => 'パ',
-  'ビ' => 'ビ',
-  'ピ' => 'ピ',
-  'ブ' => 'ブ',
-  'プ' => 'プ',
-  'ベ' => 'ベ',
-  'ペ' => 'ペ',
-  'ボ' => 'ボ',
-  'ポ' => 'ポ',
-  'ヴ' => 'ヴ',
-  'ヷ' => 'ヷ',
-  'ヸ' => 'ヸ',
-  'ヹ' => 'ヹ',
-  'ヺ' => 'ヺ',
-  'ヾ' => 'ヾ',
-  '𑂚' => '𑂚',
-  '𑂜' => '𑂜',
-  '𑂫' => '𑂫',
-  '𑄮' => '𑄮',
-  '𑄯' => '𑄯',
-  '𑍋' => '𑍋',
-  '𑍌' => '𑍌',
-  '𑒻' => '𑒻',
-  '𑒼' => '𑒼',
-  '𑒾' => '𑒾',
-  '𑖺' => '𑖺',
-  '𑖻' => '𑖻',
-  '𑤸' => '𑤸',
-);
diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php b/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php
deleted file mode 100644
index 5a3e8e0969d62e73b1a96cbd3f963382cc0c1111..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php
+++ /dev/null
@@ -1,2065 +0,0 @@
-<?php
-
-return array (
-  'À' => 'À',
-  'Á' => 'Á',
-  'Â' => 'Â',
-  'Ã' => 'Ã',
-  'Ä' => 'Ä',
-  'Ã…' => 'AÌŠ',
-  'Ç' => 'Ç',
-  'È' => 'È',
-  'É' => 'É',
-  'Ê' => 'Ê',
-  'Ë' => 'Ë',
-  'Ì' => 'Ì',
-  'Í' => 'Í',
-  'ÃŽ' => 'IÌ‚',
-  'Ï' => 'Ï',
-  'Ñ' => 'Ñ',
-  'Ã’' => 'OÌ€',
-  'Ó' => 'Ó',
-  'Ô' => 'Ô',
-  'Õ' => 'Õ',
-  'Ö' => 'Ö',
-  'Ù' => 'Ù',
-  'Ú' => 'Ú',
-  'Û' => 'Û',
-  'Ü' => 'Ü',
-  'Ý' => 'Ý',
-  'à' => 'à',
-  'á' => 'á',
-  'â' => 'â',
-  'ã' => 'ã',
-  'ä' => 'ä',
-  'Ã¥' => 'aÌŠ',
-  'ç' => 'ç',
-  'è' => 'è',
-  'é' => 'é',
-  'ê' => 'ê',
-  'ë' => 'ë',
-  'ì' => 'ì',
-  'í' => 'í',
-  'î' => 'î',
-  'ï' => 'ï',
-  'ñ' => 'ñ',
-  'ò' => 'ò',
-  'ó' => 'ó',
-  'ô' => 'ô',
-  'õ' => 'õ',
-  'ö' => 'ö',
-  'ù' => 'ù',
-  'ú' => 'ú',
-  'û' => 'û',
-  'ü' => 'ü',
-  'ý' => 'ý',
-  'ÿ' => 'ÿ',
-  'Ä€' => 'AÌ„',
-  'ā' => 'ā',
-  'Ă' => 'Ă',
-  'ă' => 'ă',
-  'Ą' => 'Ą',
-  'ą' => 'ą',
-  'Ć' => 'Ć',
-  'ć' => 'ć',
-  'Ĉ' => 'Ĉ',
-  'ĉ' => 'ĉ',
-  'Ċ' => 'Ċ',
-  'ċ' => 'ċ',
-  'Č' => 'Č',
-  'č' => 'č',
-  'Ď' => 'Ď',
-  'ď' => 'ď',
-  'Ä’' => 'EÌ„',
-  'ē' => 'ē',
-  'Ĕ' => 'Ĕ',
-  'ĕ' => 'ĕ',
-  'Ė' => 'Ė',
-  'ė' => 'ė',
-  'Ę' => 'Ę',
-  'ę' => 'ę',
-  'Ě' => 'Ě',
-  'ě' => 'ě',
-  'Ĝ' => 'Ĝ',
-  'ĝ' => 'ĝ',
-  'Ğ' => 'Ğ',
-  'ğ' => 'ğ',
-  'Ġ' => 'Ġ',
-  'ġ' => 'ġ',
-  'Ģ' => 'Ģ',
-  'ģ' => 'ģ',
-  'Ĥ' => 'Ĥ',
-  'ĥ' => 'ĥ',
-  'Ĩ' => 'Ĩ',
-  'ĩ' => 'ĩ',
-  'Ī' => 'Ī',
-  'ī' => 'ī',
-  'Ĭ' => 'Ĭ',
-  'ĭ' => 'ĭ',
-  'Į' => 'Į',
-  'į' => 'į',
-  'İ' => 'İ',
-  'Ä´' => 'JÌ‚',
-  'ĵ' => 'ĵ',
-  'Ķ' => 'Ķ',
-  'ķ' => 'ķ',
-  'Ĺ' => 'Ĺ',
-  'ĺ' => 'ĺ',
-  'Ļ' => 'Ļ',
-  'ļ' => 'ļ',
-  'Ľ' => 'Ľ',
-  'ľ' => 'ľ',
-  'Ń' => 'Ń',
-  'ń' => 'ń',
-  'Ņ' => 'Ņ',
-  'ņ' => 'ņ',
-  'Ň' => 'Ň',
-  'ň' => 'ň',
-  'Ō' => 'Ō',
-  'ō' => 'ō',
-  'Ŏ' => 'Ŏ',
-  'ŏ' => 'ŏ',
-  'Ő' => 'Ő',
-  'ő' => 'ő',
-  'Ŕ' => 'Ŕ',
-  'ŕ' => 'ŕ',
-  'Ŗ' => 'Ŗ',
-  'ŗ' => 'ŗ',
-  'Ř' => 'Ř',
-  'ř' => 'ř',
-  'Ś' => 'Ś',
-  'ś' => 'ś',
-  'Ŝ' => 'Ŝ',
-  'ŝ' => 'ŝ',
-  'Ş' => 'Ş',
-  'ş' => 'ş',
-  'Š' => 'Š',
-  'š' => 'š',
-  'Ţ' => 'Ţ',
-  'ţ' => 'ţ',
-  'Ť' => 'Ť',
-  'ť' => 'ť',
-  'Ũ' => 'Ũ',
-  'ũ' => 'ũ',
-  'Ū' => 'Ū',
-  'ū' => 'ū',
-  'Ŭ' => 'Ŭ',
-  'ŭ' => 'ŭ',
-  'Å®' => 'UÌŠ',
-  'ů' => 'ů',
-  'Ű' => 'Ű',
-  'ű' => 'ű',
-  'Ų' => 'Ų',
-  'ų' => 'ų',
-  'Å´' => 'WÌ‚',
-  'ŵ' => 'ŵ',
-  'Ŷ' => 'Ŷ',
-  'ŷ' => 'ŷ',
-  'Ÿ' => 'Ÿ',
-  'Ź' => 'Ź',
-  'ź' => 'ź',
-  'Ż' => 'Ż',
-  'ż' => 'ż',
-  'Ž' => 'Ž',
-  'ž' => 'ž',
-  'Æ ' => 'OÌ›',
-  'Æ¡' => 'oÌ›',
-  'Ư' => 'Ư',
-  'ư' => 'ư',
-  'Ǎ' => 'Ǎ',
-  'ǎ' => 'ǎ',
-  'Ǐ' => 'Ǐ',
-  'ǐ' => 'ǐ',
-  'Ǒ' => 'Ǒ',
-  'ǒ' => 'ǒ',
-  'Ǔ' => 'Ǔ',
-  'ǔ' => 'ǔ',
-  'Ǖ' => 'Ǖ',
-  'ǖ' => 'ǖ',
-  'Ǘ' => 'Ǘ',
-  'ǘ' => 'ǘ',
-  'Ǚ' => 'Ǚ',
-  'ǚ' => 'ǚ',
-  'Ǜ' => 'Ǜ',
-  'ǜ' => 'ǜ',
-  'Ǟ' => 'Ǟ',
-  'ǟ' => 'ǟ',
-  'Ǡ' => 'Ǡ',
-  'ǡ' => 'ǡ',
-  'Ǣ' => 'Ǣ',
-  'ǣ' => 'ǣ',
-  'Ǧ' => 'Ǧ',
-  'ǧ' => 'ǧ',
-  'Ǩ' => 'Ǩ',
-  'ǩ' => 'ǩ',
-  'Ǫ' => 'Ǫ',
-  'ǫ' => 'ǫ',
-  'Ǭ' => 'Ǭ',
-  'ǭ' => 'ǭ',
-  'Ǯ' => 'Ǯ',
-  'ǯ' => 'ǯ',
-  'ǰ' => 'ǰ',
-  'Ǵ' => 'Ǵ',
-  'ǵ' => 'ǵ',
-  'Ǹ' => 'Ǹ',
-  'ǹ' => 'ǹ',
-  'Ǻ' => 'Ǻ',
-  'ǻ' => 'ǻ',
-  'Ǽ' => 'Ǽ',
-  'ǽ' => 'ǽ',
-  'Ǿ' => 'Ǿ',
-  'ǿ' => 'ǿ',
-  'Ȁ' => 'Ȁ',
-  'ȁ' => 'ȁ',
-  'È‚' => 'AÌ‘',
-  'ȃ' => 'ȃ',
-  'Ȅ' => 'Ȅ',
-  'ȅ' => 'ȅ',
-  'Ȇ' => 'Ȇ',
-  'ȇ' => 'ȇ',
-  'Ȉ' => 'Ȉ',
-  'ȉ' => 'ȉ',
-  'ÈŠ' => 'IÌ‘',
-  'ȋ' => 'ȋ',
-  'Ȍ' => 'Ȍ',
-  'ȍ' => 'ȍ',
-  'ÈŽ' => 'OÌ‘',
-  'ȏ' => 'ȏ',
-  'Ȑ' => 'Ȑ',
-  'ȑ' => 'ȑ',
-  'È’' => 'RÌ‘',
-  'ȓ' => 'ȓ',
-  'Ȕ' => 'Ȕ',
-  'ȕ' => 'ȕ',
-  'È–' => 'UÌ‘',
-  'ȗ' => 'ȗ',
-  'Ș' => 'Ș',
-  'ș' => 'ș',
-  'Ț' => 'Ț',
-  'ț' => 'ț',
-  'Ȟ' => 'Ȟ',
-  'ȟ' => 'ȟ',
-  'Ȧ' => 'Ȧ',
-  'ȧ' => 'ȧ',
-  'Ȩ' => 'Ȩ',
-  'ȩ' => 'ȩ',
-  'Ȫ' => 'Ȫ',
-  'ȫ' => 'ȫ',
-  'Ȭ' => 'Ȭ',
-  'ȭ' => 'ȭ',
-  'Ȯ' => 'Ȯ',
-  'ȯ' => 'ȯ',
-  'Ȱ' => 'Ȱ',
-  'ȱ' => 'ȱ',
-  'Ȳ' => 'Ȳ',
-  'ȳ' => 'ȳ',
-  'Í€' => 'Ì€',
-  '́' => '́',
-  '̓' => '̓',
-  '̈́' => '̈́',
-  'ʹ' => 'ʹ',
-  ';' => ';',
-  '΅' => '΅',
-  'Ά' => 'Ά',
-  '·' => '·',
-  'Έ' => 'Έ',
-  'Ή' => 'Ή',
-  'Ί' => 'Ί',
-  'Ό' => 'Ό',
-  'Ύ' => 'Ύ',
-  'Ώ' => 'Ώ',
-  'ΐ' => 'ΐ',
-  'Ϊ' => 'Ϊ',
-  'Ϋ' => 'Ϋ',
-  'ά' => 'ά',
-  'έ' => 'έ',
-  'ή' => 'ή',
-  'ί' => 'ί',
-  'ΰ' => 'ΰ',
-  'ϊ' => 'ϊ',
-  'ϋ' => 'ϋ',
-  'ό' => 'ό',
-  'ύ' => 'ύ',
-  'ώ' => 'ώ',
-  'ϓ' => 'ϓ',
-  'ϔ' => 'ϔ',
-  'Ѐ' => 'Ѐ',
-  'Ё' => 'Ё',
-  'Ѓ' => 'Ѓ',
-  'Ї' => 'Ї',
-  'Ќ' => 'Ќ',
-  'Ѝ' => 'Ѝ',
-  'Ў' => 'Ў',
-  'Й' => 'Й',
-  'й' => 'й',
-  'ѐ' => 'ѐ',
-  'ё' => 'ё',
-  'ѓ' => 'ѓ',
-  'ї' => 'ї',
-  'ќ' => 'ќ',
-  'ѝ' => 'ѝ',
-  'ў' => 'ў',
-  'Ѷ' => 'Ѷ',
-  'ѷ' => 'ѷ',
-  'Ӂ' => 'Ӂ',
-  'ӂ' => 'ӂ',
-  'Ӑ' => 'Ӑ',
-  'ӑ' => 'ӑ',
-  'Ӓ' => 'Ӓ',
-  'ӓ' => 'ӓ',
-  'Ӗ' => 'Ӗ',
-  'ӗ' => 'ӗ',
-  'Ӛ' => 'Ӛ',
-  'ӛ' => 'ӛ',
-  'Ӝ' => 'Ӝ',
-  'ӝ' => 'ӝ',
-  'Ӟ' => 'Ӟ',
-  'ӟ' => 'ӟ',
-  'Ӣ' => 'Ӣ',
-  'ӣ' => 'ӣ',
-  'Ӥ' => 'Ӥ',
-  'ӥ' => 'ӥ',
-  'Ӧ' => 'Ӧ',
-  'ӧ' => 'ӧ',
-  'Ӫ' => 'Ӫ',
-  'ӫ' => 'ӫ',
-  'Ӭ' => 'Ӭ',
-  'ӭ' => 'ӭ',
-  'Ӯ' => 'Ӯ',
-  'ӯ' => 'ӯ',
-  'Ӱ' => 'Ӱ',
-  'ӱ' => 'ӱ',
-  'Ӳ' => 'Ӳ',
-  'ӳ' => 'ӳ',
-  'Ӵ' => 'Ӵ',
-  'ӵ' => 'ӵ',
-  'Ӹ' => 'Ӹ',
-  'ӹ' => 'ӹ',
-  'آ' => 'آ',
-  'أ' => 'أ',
-  'ؤ' => 'ؤ',
-  'إ' => 'إ',
-  'ئ' => 'ئ',
-  'Û€' => 'Û•Ù”',
-  'ۂ' => 'ۂ',
-  'Û“' => 'Û’Ù”',
-  'ऩ' => 'ऩ',
-  'ऱ' => 'ऱ',
-  'ऴ' => 'ऴ',
-  'क़' => 'क़',
-  'ख़' => 'ख़',
-  'ग़' => 'ग़',
-  'ज़' => 'ज़',
-  'ड़' => 'ड़',
-  'ढ़' => 'ढ़',
-  'फ़' => 'फ़',
-  'य़' => 'य़',
-  'ো' => 'ো',
-  'ৌ' => 'ৌ',
-  'ড়' => 'ড়',
-  'ঢ়' => 'ঢ়',
-  'য়' => 'য়',
-  'ਲ਼' => 'ਲ਼',
-  'ਸ਼' => 'ਸ਼',
-  'ਖ਼' => 'ਖ਼',
-  'ਗ਼' => 'ਗ਼',
-  'ਜ਼' => 'ਜ਼',
-  'ਫ਼' => 'ਫ਼',
-  'ୈ' => 'ୈ',
-  'ୋ' => 'ୋ',
-  'ୌ' => 'ୌ',
-  'ଡ଼' => 'ଡ଼',
-  'ଢ଼' => 'ଢ଼',
-  'ஔ' => 'ஔ',
-  'ொ' => 'ொ',
-  'ோ' => 'ோ',
-  'ௌ' => 'ௌ',
-  'ై' => 'ై',
-  'ೀ' => 'ೀ',
-  'ೇ' => 'ೇ',
-  'ೈ' => 'ೈ',
-  'ೊ' => 'ೊ',
-  'ೋ' => 'ೋ',
-  'ൊ' => 'ൊ',
-  'ോ' => 'ോ',
-  'ൌ' => 'ൌ',
-  'ේ' => 'ේ',
-  'ො' => 'ො',
-  'ෝ' => 'ෝ',
-  'ෞ' => 'ෞ',
-  'གྷ' => 'གྷ',
-  'ཌྷ' => 'ཌྷ',
-  'དྷ' => 'དྷ',
-  'བྷ' => 'བྷ',
-  'ཛྷ' => 'ཛྷ',
-  'ཀྵ' => 'ཀྵ',
-  'ཱི' => 'ཱི',
-  'ཱུ' => 'ཱུ',
-  'ྲྀ' => 'ྲྀ',
-  'ླྀ' => 'ླྀ',
-  'ཱྀ' => 'ཱྀ',
-  'ྒྷ' => 'ྒྷ',
-  'ྜྷ' => 'ྜྷ',
-  'ྡྷ' => 'ྡྷ',
-  'ྦྷ' => 'ྦྷ',
-  'ྫྷ' => 'ྫྷ',
-  'ྐྵ' => 'ྐྵ',
-  'ဦ' => 'ဦ',
-  'ᬆ' => 'ᬆ',
-  'ᬈ' => 'ᬈ',
-  'ᬊ' => 'ᬊ',
-  'ᬌ' => 'ᬌ',
-  'ᬎ' => 'ᬎ',
-  'ᬒ' => 'ᬒ',
-  'ᬻ' => 'ᬻ',
-  'ᬽ' => 'ᬽ',
-  'ᭀ' => 'ᭀ',
-  'ᭁ' => 'ᭁ',
-  'ᭃ' => 'ᭃ',
-  'Ḁ' => 'Ḁ',
-  'ḁ' => 'ḁ',
-  'Ḃ' => 'Ḃ',
-  'ḃ' => 'ḃ',
-  'Ḅ' => 'Ḅ',
-  'ḅ' => 'ḅ',
-  'Ḇ' => 'Ḇ',
-  'ḇ' => 'ḇ',
-  'Ḉ' => 'Ḉ',
-  'ḉ' => 'ḉ',
-  'Ḋ' => 'Ḋ',
-  'ḋ' => 'ḋ',
-  'Ḍ' => 'Ḍ',
-  'ḍ' => 'ḍ',
-  'Ḏ' => 'Ḏ',
-  'ḏ' => 'ḏ',
-  'Ḑ' => 'Ḑ',
-  'ḑ' => 'ḑ',
-  'Ḓ' => 'Ḓ',
-  'ḓ' => 'ḓ',
-  'Ḕ' => 'Ḕ',
-  'ḕ' => 'ḕ',
-  'Ḗ' => 'Ḗ',
-  'ḗ' => 'ḗ',
-  'Ḙ' => 'Ḙ',
-  'ḙ' => 'ḙ',
-  'Ḛ' => 'Ḛ',
-  'ḛ' => 'ḛ',
-  'Ḝ' => 'Ḝ',
-  'ḝ' => 'ḝ',
-  'Ḟ' => 'Ḟ',
-  'ḟ' => 'ḟ',
-  'Ḡ' => 'Ḡ',
-  'ḡ' => 'ḡ',
-  'Ḣ' => 'Ḣ',
-  'ḣ' => 'ḣ',
-  'Ḥ' => 'Ḥ',
-  'ḥ' => 'ḥ',
-  'Ḧ' => 'Ḧ',
-  'ḧ' => 'ḧ',
-  'Ḩ' => 'Ḩ',
-  'ḩ' => 'ḩ',
-  'Ḫ' => 'Ḫ',
-  'ḫ' => 'ḫ',
-  'Ḭ' => 'Ḭ',
-  'ḭ' => 'ḭ',
-  'Ḯ' => 'Ḯ',
-  'ḯ' => 'ḯ',
-  'Ḱ' => 'Ḱ',
-  'ḱ' => 'ḱ',
-  'Ḳ' => 'Ḳ',
-  'ḳ' => 'ḳ',
-  'Ḵ' => 'Ḵ',
-  'ḵ' => 'ḵ',
-  'Ḷ' => 'Ḷ',
-  'ḷ' => 'ḷ',
-  'Ḹ' => 'Ḹ',
-  'ḹ' => 'ḹ',
-  'Ḻ' => 'Ḻ',
-  'ḻ' => 'ḻ',
-  'Ḽ' => 'Ḽ',
-  'ḽ' => 'ḽ',
-  'Ḿ' => 'Ḿ',
-  'ḿ' => 'ḿ',
-  'Ṁ' => 'Ṁ',
-  'ṁ' => 'ṁ',
-  'Ṃ' => 'Ṃ',
-  'ṃ' => 'ṃ',
-  'Ṅ' => 'Ṅ',
-  'ṅ' => 'ṅ',
-  'Ṇ' => 'Ṇ',
-  'ṇ' => 'ṇ',
-  'Ṉ' => 'Ṉ',
-  'ṉ' => 'ṉ',
-  'Ṋ' => 'Ṋ',
-  'ṋ' => 'ṋ',
-  'Ṍ' => 'Ṍ',
-  'ṍ' => 'ṍ',
-  'Ṏ' => 'Ṏ',
-  'ṏ' => 'ṏ',
-  'Ṑ' => 'Ṑ',
-  'ṑ' => 'ṑ',
-  'Ṓ' => 'Ṓ',
-  'ṓ' => 'ṓ',
-  'Ṕ' => 'Ṕ',
-  'ṕ' => 'ṕ',
-  'Ṗ' => 'Ṗ',
-  'ṗ' => 'ṗ',
-  'Ṙ' => 'Ṙ',
-  'ṙ' => 'ṙ',
-  'Ṛ' => 'Ṛ',
-  'ṛ' => 'ṛ',
-  'Ṝ' => 'Ṝ',
-  'ṝ' => 'ṝ',
-  'Ṟ' => 'Ṟ',
-  'ṟ' => 'ṟ',
-  'Ṡ' => 'Ṡ',
-  'ṡ' => 'ṡ',
-  'á¹¢' => 'SÌ£',
-  'ṣ' => 'ṣ',
-  'Ṥ' => 'Ṥ',
-  'ṥ' => 'ṥ',
-  'Ṧ' => 'Ṧ',
-  'ṧ' => 'ṧ',
-  'Ṩ' => 'Ṩ',
-  'ṩ' => 'ṩ',
-  'Ṫ' => 'Ṫ',
-  'ṫ' => 'ṫ',
-  'Ṭ' => 'Ṭ',
-  'ṭ' => 'ṭ',
-  'Ṯ' => 'Ṯ',
-  'ṯ' => 'ṯ',
-  'á¹°' => 'TÌ­',
-  'á¹±' => 'tÌ­',
-  'Ṳ' => 'Ṳ',
-  'ṳ' => 'ṳ',
-  'Ṵ' => 'Ṵ',
-  'ṵ' => 'ṵ',
-  'á¹¶' => 'UÌ­',
-  'á¹·' => 'uÌ­',
-  'Ṹ' => 'Ṹ',
-  'ṹ' => 'ṹ',
-  'Ṻ' => 'Ṻ',
-  'ṻ' => 'ṻ',
-  'Ṽ' => 'Ṽ',
-  'ṽ' => 'ṽ',
-  'á¹¾' => 'VÌ£',
-  'ṿ' => 'ṿ',
-  'Ẁ' => 'Ẁ',
-  'ẁ' => 'ẁ',
-  'Ẃ' => 'Ẃ',
-  'ẃ' => 'ẃ',
-  'Ẅ' => 'Ẅ',
-  'ẅ' => 'ẅ',
-  'Ẇ' => 'Ẇ',
-  'ẇ' => 'ẇ',
-  'Ẉ' => 'Ẉ',
-  'ẉ' => 'ẉ',
-  'Ẋ' => 'Ẋ',
-  'ẋ' => 'ẋ',
-  'Ẍ' => 'Ẍ',
-  'ẍ' => 'ẍ',
-  'Ẏ' => 'Ẏ',
-  'ẏ' => 'ẏ',
-  'Ẑ' => 'Ẑ',
-  'ẑ' => 'ẑ',
-  'Ẓ' => 'Ẓ',
-  'ẓ' => 'ẓ',
-  'Ẕ' => 'Ẕ',
-  'ẕ' => 'ẕ',
-  'ẖ' => 'ẖ',
-  'ẗ' => 'ẗ',
-  'ẘ' => 'ẘ',
-  'ẙ' => 'ẙ',
-  'ẛ' => 'ẛ',
-  'Ạ' => 'Ạ',
-  'ạ' => 'ạ',
-  'Ả' => 'Ả',
-  'ả' => 'ả',
-  'Ấ' => 'Ấ',
-  'ấ' => 'ấ',
-  'Ầ' => 'Ầ',
-  'ầ' => 'ầ',
-  'Ẩ' => 'Ẩ',
-  'ẩ' => 'ẩ',
-  'Ẫ' => 'Ẫ',
-  'ẫ' => 'ẫ',
-  'Ậ' => 'Ậ',
-  'ậ' => 'ậ',
-  'Ắ' => 'Ắ',
-  'ắ' => 'ắ',
-  'Ằ' => 'Ằ',
-  'ằ' => 'ằ',
-  'Ẳ' => 'Ẳ',
-  'ẳ' => 'ẳ',
-  'Ẵ' => 'Ẵ',
-  'ẵ' => 'ẵ',
-  'Ặ' => 'Ặ',
-  'ặ' => 'ặ',
-  'Ẹ' => 'Ẹ',
-  'ẹ' => 'ẹ',
-  'Ẻ' => 'Ẻ',
-  'ẻ' => 'ẻ',
-  'Ẽ' => 'Ẽ',
-  'ẽ' => 'ẽ',
-  'Ế' => 'Ế',
-  'ế' => 'ế',
-  'Ề' => 'Ề',
-  'ề' => 'ề',
-  'Ể' => 'Ể',
-  'ể' => 'ể',
-  'Ễ' => 'Ễ',
-  'ễ' => 'ễ',
-  'Ệ' => 'Ệ',
-  'ệ' => 'ệ',
-  'Ỉ' => 'Ỉ',
-  'ỉ' => 'ỉ',
-  'Ị' => 'Ị',
-  'ị' => 'ị',
-  'Ọ' => 'Ọ',
-  'ọ' => 'ọ',
-  'Ỏ' => 'Ỏ',
-  'ỏ' => 'ỏ',
-  'Ố' => 'Ố',
-  'ố' => 'ố',
-  'Ồ' => 'Ồ',
-  'ồ' => 'ồ',
-  'Ổ' => 'Ổ',
-  'ổ' => 'ổ',
-  'Ỗ' => 'Ỗ',
-  'ỗ' => 'ỗ',
-  'Ộ' => 'Ộ',
-  'ộ' => 'ộ',
-  'Ớ' => 'Ớ',
-  'ớ' => 'ớ',
-  'Ờ' => 'Ờ',
-  'ờ' => 'ờ',
-  'Ở' => 'Ở',
-  'ở' => 'ở',
-  'Ỡ' => 'Ỡ',
-  'ỡ' => 'ỡ',
-  'Ợ' => 'Ợ',
-  'ợ' => 'ợ',
-  'Ụ' => 'Ụ',
-  'ụ' => 'ụ',
-  'Ủ' => 'Ủ',
-  'ủ' => 'ủ',
-  'Ứ' => 'Ứ',
-  'ứ' => 'ứ',
-  'Ừ' => 'Ừ',
-  'ừ' => 'ừ',
-  'Ử' => 'Ử',
-  'ử' => 'ử',
-  'Ữ' => 'Ữ',
-  'ữ' => 'ữ',
-  'Ự' => 'Ự',
-  'ự' => 'ự',
-  'Ỳ' => 'Ỳ',
-  'ỳ' => 'ỳ',
-  'á»´' => 'YÌ£',
-  'ỵ' => 'ỵ',
-  'Ỷ' => 'Ỷ',
-  'ỷ' => 'ỷ',
-  'Ỹ' => 'Ỹ',
-  'ỹ' => 'ỹ',
-  'ἀ' => 'ἀ',
-  'ἁ' => 'ἁ',
-  'ἂ' => 'ἂ',
-  'ἃ' => 'ἃ',
-  'ἄ' => 'ἄ',
-  'ἅ' => 'ἅ',
-  'ἆ' => 'ἆ',
-  'ἇ' => 'ἇ',
-  'Ἀ' => 'Ἀ',
-  'Ἁ' => 'Ἁ',
-  'Ἂ' => 'Ἂ',
-  'Ἃ' => 'Ἃ',
-  'Ἄ' => 'Ἄ',
-  'Ἅ' => 'Ἅ',
-  'Ἆ' => 'Ἆ',
-  'Ἇ' => 'Ἇ',
-  'ἐ' => 'ἐ',
-  'ἑ' => 'ἑ',
-  'ἒ' => 'ἒ',
-  'ἓ' => 'ἓ',
-  'ἔ' => 'ἔ',
-  'ἕ' => 'ἕ',
-  'Ἐ' => 'Ἐ',
-  'Ἑ' => 'Ἑ',
-  'Ἒ' => 'Ἒ',
-  'Ἓ' => 'Ἓ',
-  'Ἔ' => 'Ἔ',
-  'Ἕ' => 'Ἕ',
-  'ἠ' => 'ἠ',
-  'ἡ' => 'ἡ',
-  'ἢ' => 'ἢ',
-  'ἣ' => 'ἣ',
-  'ἤ' => 'ἤ',
-  'ἥ' => 'ἥ',
-  'ἦ' => 'ἦ',
-  'ἧ' => 'ἧ',
-  'Ἠ' => 'Ἠ',
-  'Ἡ' => 'Ἡ',
-  'Ἢ' => 'Ἢ',
-  'Ἣ' => 'Ἣ',
-  'Ἤ' => 'Ἤ',
-  'Ἥ' => 'Ἥ',
-  'Ἦ' => 'Ἦ',
-  'Ἧ' => 'Ἧ',
-  'ἰ' => 'ἰ',
-  'ἱ' => 'ἱ',
-  'ἲ' => 'ἲ',
-  'ἳ' => 'ἳ',
-  'ἴ' => 'ἴ',
-  'ἵ' => 'ἵ',
-  'ἶ' => 'ἶ',
-  'ἷ' => 'ἷ',
-  'Ἰ' => 'Ἰ',
-  'Ἱ' => 'Ἱ',
-  'Ἲ' => 'Ἲ',
-  'Ἳ' => 'Ἳ',
-  'Ἴ' => 'Ἴ',
-  'Ἵ' => 'Ἵ',
-  'Ἶ' => 'Ἶ',
-  'Ἷ' => 'Ἷ',
-  'ὀ' => 'ὀ',
-  'ὁ' => 'ὁ',
-  'ὂ' => 'ὂ',
-  'ὃ' => 'ὃ',
-  'ὄ' => 'ὄ',
-  'ὅ' => 'ὅ',
-  'Ὀ' => 'Ὀ',
-  'Ὁ' => 'Ὁ',
-  'Ὂ' => 'Ὂ',
-  'Ὃ' => 'Ὃ',
-  'Ὄ' => 'Ὄ',
-  'Ὅ' => 'Ὅ',
-  'ὐ' => 'ὐ',
-  'ὑ' => 'ὑ',
-  'ὒ' => 'ὒ',
-  'ὓ' => 'ὓ',
-  'ὔ' => 'ὔ',
-  'ὕ' => 'ὕ',
-  'ὖ' => 'ὖ',
-  'ὗ' => 'ὗ',
-  'Ὑ' => 'Ὑ',
-  'Ὓ' => 'Ὓ',
-  'Ὕ' => 'Ὕ',
-  'Ὗ' => 'Ὗ',
-  'ὠ' => 'ὠ',
-  'ὡ' => 'ὡ',
-  'ὢ' => 'ὢ',
-  'ὣ' => 'ὣ',
-  'ὤ' => 'ὤ',
-  'ὥ' => 'ὥ',
-  'ὦ' => 'ὦ',
-  'ὧ' => 'ὧ',
-  'Ὠ' => 'Ὠ',
-  'Ὡ' => 'Ὡ',
-  'Ὢ' => 'Ὢ',
-  'Ὣ' => 'Ὣ',
-  'Ὤ' => 'Ὤ',
-  'Ὥ' => 'Ὥ',
-  'Ὦ' => 'Ὦ',
-  'Ὧ' => 'Ὧ',
-  'ὰ' => 'ὰ',
-  'ά' => 'ά',
-  'ὲ' => 'ὲ',
-  'έ' => 'έ',
-  'ὴ' => 'ὴ',
-  'ή' => 'ή',
-  'ὶ' => 'ὶ',
-  'ί' => 'ί',
-  'ὸ' => 'ὸ',
-  'ό' => 'ό',
-  'ὺ' => 'ὺ',
-  'ύ' => 'ύ',
-  'ὼ' => 'ὼ',
-  'ώ' => 'ώ',
-  'ᾀ' => 'ᾀ',
-  'ᾁ' => 'ᾁ',
-  'ᾂ' => 'ᾂ',
-  'ᾃ' => 'ᾃ',
-  'ᾄ' => 'ᾄ',
-  'ᾅ' => 'ᾅ',
-  'ᾆ' => 'ᾆ',
-  'ᾇ' => 'ᾇ',
-  'ᾈ' => 'ᾈ',
-  'ᾉ' => 'ᾉ',
-  'ᾊ' => 'ᾊ',
-  'ᾋ' => 'ᾋ',
-  'ᾌ' => 'ᾌ',
-  'ᾍ' => 'ᾍ',
-  'ᾎ' => 'ᾎ',
-  'ᾏ' => 'ᾏ',
-  'ᾐ' => 'ᾐ',
-  'ᾑ' => 'ᾑ',
-  'ᾒ' => 'ᾒ',
-  'ᾓ' => 'ᾓ',
-  'ᾔ' => 'ᾔ',
-  'ᾕ' => 'ᾕ',
-  'ᾖ' => 'ᾖ',
-  'ᾗ' => 'ᾗ',
-  'ᾘ' => 'ᾘ',
-  'ᾙ' => 'ᾙ',
-  'ᾚ' => 'ᾚ',
-  'ᾛ' => 'ᾛ',
-  'ᾜ' => 'ᾜ',
-  'ᾝ' => 'ᾝ',
-  'ᾞ' => 'ᾞ',
-  'ᾟ' => 'ᾟ',
-  'ᾠ' => 'ᾠ',
-  'ᾡ' => 'ᾡ',
-  'ᾢ' => 'ᾢ',
-  'ᾣ' => 'ᾣ',
-  'ᾤ' => 'ᾤ',
-  'ᾥ' => 'ᾥ',
-  'ᾦ' => 'ᾦ',
-  'ᾧ' => 'ᾧ',
-  'ᾨ' => 'ᾨ',
-  'ᾩ' => 'ᾩ',
-  'ᾪ' => 'ᾪ',
-  'ᾫ' => 'ᾫ',
-  'ᾬ' => 'ᾬ',
-  'ᾭ' => 'ᾭ',
-  'ᾮ' => 'ᾮ',
-  'ᾯ' => 'ᾯ',
-  'ᾰ' => 'ᾰ',
-  'ᾱ' => 'ᾱ',
-  'ᾲ' => 'ᾲ',
-  'ᾳ' => 'ᾳ',
-  'ᾴ' => 'ᾴ',
-  'ᾶ' => 'ᾶ',
-  'ᾷ' => 'ᾷ',
-  'Ᾰ' => 'Ᾰ',
-  'Ᾱ' => 'Ᾱ',
-  'Ὰ' => 'Ὰ',
-  'Ά' => 'Ά',
-  'ᾼ' => 'ᾼ',
-  'ι' => 'ι',
-  '῁' => '῁',
-  'ῂ' => 'ῂ',
-  'ῃ' => 'ῃ',
-  'ῄ' => 'ῄ',
-  'ῆ' => 'ῆ',
-  'ῇ' => 'ῇ',
-  'Ὲ' => 'Ὲ',
-  'Έ' => 'Έ',
-  'Ὴ' => 'Ὴ',
-  'Ή' => 'Ή',
-  'ῌ' => 'ῌ',
-  '῍' => '῍',
-  '῎' => '῎',
-  '῏' => '῏',
-  'ῐ' => 'ῐ',
-  'ῑ' => 'ῑ',
-  'ῒ' => 'ῒ',
-  'ΐ' => 'ΐ',
-  'ῖ' => 'ῖ',
-  'ῗ' => 'ῗ',
-  'Ῐ' => 'Ῐ',
-  'Ῑ' => 'Ῑ',
-  'Ὶ' => 'Ὶ',
-  'Ί' => 'Ί',
-  '῝' => '῝',
-  '῞' => '῞',
-  '῟' => '῟',
-  'ῠ' => 'ῠ',
-  'á¿¡' => 'Ï…Ì„',
-  'ῢ' => 'ῢ',
-  'ΰ' => 'ΰ',
-  'ῤ' => 'ῤ',
-  'ῥ' => 'ῥ',
-  'ῦ' => 'ῦ',
-  'ῧ' => 'ῧ',
-  'Ῠ' => 'Ῠ',
-  'Ῡ' => 'Ῡ',
-  'Ὺ' => 'Ὺ',
-  'Ύ' => 'Ύ',
-  'Ῥ' => 'Ῥ',
-  '῭' => '῭',
-  '΅' => '΅',
-  '`' => '`',
-  'ῲ' => 'ῲ',
-  'ῳ' => 'ῳ',
-  'ῴ' => 'ῴ',
-  'ῶ' => 'ῶ',
-  'ῷ' => 'ῷ',
-  'Ὸ' => 'Ὸ',
-  'Ό' => 'Ό',
-  'Ὼ' => 'Ὼ',
-  'Ώ' => 'Ώ',
-  'ῼ' => 'ῼ',
-  '´' => '´',
-  ' ' => ' ',
-  ' ' => ' ',
-  'Ω' => 'Ω',
-  'K' => 'K',
-  'â„«' => 'AÌŠ',
-  '↚' => '↚',
-  '↛' => '↛',
-  '↮' => '↮',
-  '⇍' => '⇍',
-  '⇎' => '⇎',
-  '⇏' => '⇏',
-  '∄' => '∄',
-  '∉' => '∉',
-  '∌' => '∌',
-  '∤' => '∤',
-  '∦' => '∦',
-  '≁' => '≁',
-  '≄' => '≄',
-  '≇' => '≇',
-  '≉' => '≉',
-  '≠' => '≠',
-  '≢' => '≢',
-  '≭' => '≭',
-  '≮' => '≮',
-  '≯' => '≯',
-  '≰' => '≰',
-  '≱' => '≱',
-  '≴' => '≴',
-  '≵' => '≵',
-  '≸' => '≸',
-  '≹' => '≹',
-  '⊀' => '⊀',
-  '⊁' => '⊁',
-  '⊄' => '⊄',
-  '⊅' => '⊅',
-  '⊈' => '⊈',
-  '⊉' => '⊉',
-  '⊬' => '⊬',
-  '⊭' => '⊭',
-  '⊮' => '⊮',
-  '⊯' => '⊯',
-  '⋠' => '⋠',
-  '⋡' => '⋡',
-  '⋢' => '⋢',
-  '⋣' => '⋣',
-  '⋪' => '⋪',
-  '⋫' => '⋫',
-  '⋬' => '⋬',
-  '⋭' => '⋭',
-  '〈' => '〈',
-  '〉' => '〉',
-  '⫝̸' => '⫝̸',
-  'が' => 'が',
-  'ぎ' => 'ぎ',
-  'ぐ' => 'ぐ',
-  'げ' => 'げ',
-  'ご' => 'ご',
-  'ざ' => 'ざ',
-  'じ' => 'じ',
-  'ず' => 'ず',
-  'ぜ' => 'ぜ',
-  'ぞ' => 'ぞ',
-  'だ' => 'だ',
-  'ぢ' => 'ぢ',
-  'づ' => 'づ',
-  'で' => 'で',
-  'ど' => 'ど',
-  'ば' => 'ば',
-  'ぱ' => 'ぱ',
-  'び' => 'び',
-  'ぴ' => 'ぴ',
-  'ぶ' => 'ぶ',
-  'ぷ' => 'ぷ',
-  'べ' => 'べ',
-  'ぺ' => 'ぺ',
-  'ぼ' => 'ぼ',
-  'ぽ' => 'ぽ',
-  'ゔ' => 'ゔ',
-  'ゞ' => 'ゞ',
-  'ガ' => 'ガ',
-  'ã‚®' => 'ã‚­ã‚™',
-  'グ' => 'グ',
-  'ゲ' => 'ゲ',
-  'ゴ' => 'ゴ',
-  'ザ' => 'ザ',
-  'ジ' => 'ジ',
-  'ズ' => 'ズ',
-  'ゼ' => 'ゼ',
-  'ゾ' => 'ゾ',
-  'ダ' => 'ダ',
-  'ヂ' => 'ヂ',
-  'ヅ' => 'ヅ',
-  'デ' => 'デ',
-  'ド' => 'ド',
-  'バ' => 'バ',
-  'パ' => 'パ',
-  'ビ' => 'ビ',
-  'ピ' => 'ピ',
-  'ブ' => 'ブ',
-  'プ' => 'プ',
-  'ベ' => 'ベ',
-  'ペ' => 'ペ',
-  'ボ' => 'ボ',
-  'ポ' => 'ポ',
-  'ヴ' => 'ヴ',
-  'ヷ' => 'ヷ',
-  'ヸ' => 'ヸ',
-  'ヹ' => 'ヹ',
-  'ヺ' => 'ヺ',
-  'ヾ' => 'ヾ',
-  '豈' => '豈',
-  '更' => '更',
-  '車' => '車',
-  '賈' => '賈',
-  '滑' => '滑',
-  '串' => '串',
-  '句' => '句',
-  '龜' => '龜',
-  '龜' => '龜',
-  '契' => '契',
-  '金' => '金',
-  '喇' => '喇',
-  '奈' => '奈',
-  '懶' => '懶',
-  '癩' => '癩',
-  '羅' => '羅',
-  '蘿' => '蘿',
-  '螺' => '螺',
-  '裸' => '裸',
-  '邏' => '邏',
-  '樂' => '樂',
-  '洛' => '洛',
-  '烙' => '烙',
-  '珞' => '珞',
-  '落' => '落',
-  '酪' => '酪',
-  '駱' => '駱',
-  '亂' => '亂',
-  '卵' => '卵',
-  '欄' => '欄',
-  '爛' => '爛',
-  '蘭' => '蘭',
-  '鸞' => '鸞',
-  '嵐' => '嵐',
-  '濫' => '濫',
-  '藍' => '藍',
-  '襤' => '襤',
-  '拉' => '拉',
-  '臘' => '臘',
-  '蠟' => '蠟',
-  '廊' => '廊',
-  '朗' => '朗',
-  '浪' => '浪',
-  '狼' => '狼',
-  '郎' => '郎',
-  '來' => '來',
-  '冷' => '冷',
-  '勞' => '勞',
-  '擄' => '擄',
-  '櫓' => '櫓',
-  '爐' => '爐',
-  '盧' => '盧',
-  '老' => '老',
-  '蘆' => '蘆',
-  '虜' => '虜',
-  '路' => '路',
-  '露' => '露',
-  '魯' => '魯',
-  '鷺' => '鷺',
-  '碌' => '碌',
-  '祿' => '祿',
-  '綠' => '綠',
-  '菉' => '菉',
-  '錄' => '錄',
-  '鹿' => '鹿',
-  '論' => '論',
-  '壟' => '壟',
-  '弄' => '弄',
-  '籠' => '籠',
-  '聾' => '聾',
-  '牢' => '牢',
-  '磊' => '磊',
-  '賂' => '賂',
-  '雷' => '雷',
-  '壘' => '壘',
-  '屢' => '屢',
-  '樓' => '樓',
-  '淚' => '淚',
-  '漏' => '漏',
-  '累' => '累',
-  '縷' => '縷',
-  '陋' => '陋',
-  '勒' => '勒',
-  '肋' => '肋',
-  '凜' => '凜',
-  '凌' => '凌',
-  '稜' => '稜',
-  '綾' => '綾',
-  '菱' => '菱',
-  '陵' => '陵',
-  '讀' => '讀',
-  '拏' => '拏',
-  '樂' => '樂',
-  '諾' => '諾',
-  '丹' => '丹',
-  '寧' => '寧',
-  '怒' => '怒',
-  '率' => '率',
-  '異' => '異',
-  '北' => '北',
-  '磻' => '磻',
-  '便' => '便',
-  '復' => '復',
-  '不' => '不',
-  '泌' => '泌',
-  '數' => '數',
-  '索' => '索',
-  '參' => '參',
-  '塞' => '塞',
-  '省' => '省',
-  '葉' => '葉',
-  '說' => '說',
-  '殺' => '殺',
-  '辰' => '辰',
-  '沈' => '沈',
-  '拾' => '拾',
-  '若' => '若',
-  '掠' => '掠',
-  '略' => '略',
-  '亮' => '亮',
-  '兩' => '兩',
-  '凉' => '凉',
-  '梁' => '梁',
-  '糧' => '糧',
-  '良' => '良',
-  '諒' => '諒',
-  '量' => '量',
-  '勵' => '勵',
-  '呂' => '呂',
-  '女' => '女',
-  '廬' => '廬',
-  '旅' => '旅',
-  '濾' => '濾',
-  '礪' => '礪',
-  '閭' => '閭',
-  '驪' => '驪',
-  '麗' => '麗',
-  '黎' => '黎',
-  '力' => '力',
-  '曆' => '曆',
-  '歷' => '歷',
-  '轢' => '轢',
-  '年' => '年',
-  '憐' => '憐',
-  '戀' => '戀',
-  '撚' => '撚',
-  '漣' => '漣',
-  '煉' => '煉',
-  '璉' => '璉',
-  '秊' => '秊',
-  '練' => '練',
-  '聯' => '聯',
-  '輦' => '輦',
-  '蓮' => '蓮',
-  '連' => '連',
-  '鍊' => '鍊',
-  '列' => '列',
-  '劣' => '劣',
-  '咽' => '咽',
-  '烈' => '烈',
-  '裂' => '裂',
-  '說' => '說',
-  '廉' => '廉',
-  '念' => '念',
-  '捻' => '捻',
-  '殮' => '殮',
-  '簾' => '簾',
-  '獵' => '獵',
-  '令' => '令',
-  '囹' => '囹',
-  '寧' => '寧',
-  '嶺' => '嶺',
-  '怜' => '怜',
-  '玲' => '玲',
-  '瑩' => '瑩',
-  '羚' => '羚',
-  '聆' => '聆',
-  '鈴' => '鈴',
-  '零' => '零',
-  '靈' => '靈',
-  '領' => '領',
-  '例' => '例',
-  '禮' => '禮',
-  '醴' => '醴',
-  '隸' => '隸',
-  '惡' => '惡',
-  '了' => '了',
-  '僚' => '僚',
-  '寮' => '寮',
-  '尿' => '尿',
-  '料' => '料',
-  '樂' => '樂',
-  '燎' => '燎',
-  '療' => '療',
-  '蓼' => '蓼',
-  '遼' => '遼',
-  '龍' => '龍',
-  '暈' => '暈',
-  '阮' => '阮',
-  '劉' => '劉',
-  '杻' => '杻',
-  '柳' => '柳',
-  '流' => '流',
-  '溜' => '溜',
-  '琉' => '琉',
-  '留' => '留',
-  'ï§Ž' => 'ç¡«',
-  '紐' => '紐',
-  '類' => '類',
-  'ï§‘' => 'å…­',
-  '戮' => '戮',
-  '陸' => '陸',
-  '倫' => '倫',
-  'ï§•' => 'å´™',
-  'ï§–' => 'æ·ª',
-  '輪' => '輪',
-  '律' => '律',
-  'ï§™' => 'æ…„',
-  'ï§š' => 'æ —',
-  '率' => '率',
-  '隆' => '隆',
-  '利' => '利',
-  '吏' => '吏',
-  'ï§Ÿ' => 'å±¥',
-  '易' => '易',
-  '李' => '李',
-  '梨' => '梨',
-  'ï§£' => 'æ³¥',
-  '理' => '理',
-  'ï§¥' => 'ç—¢',
-  '罹' => '罹',
-  '裏' => '裏',
-  '裡' => '裡',
-  '里' => '里',
-  '離' => '離',
-  '匿' => '匿',
-  '溺' => '溺',
-  '吝' => '吝',
-  '燐' => '燐',
-  '璘' => '璘',
-  'ï§°' => 'è—º',
-  '隣' => '隣',
-  'ï§²' => 'é±—',
-  '麟' => '麟',
-  'ï§´' => 'æž—',
-  'ï§µ' => 'æ·‹',
-  '臨' => '臨',
-  'ï§·' => 'ç«‹',
-  '笠' => '笠',
-  'ï§¹' => 'ç²’',
-  '狀' => '狀',
-  'ï§»' => 'ç‚™',
-  'ï§¼' => 'è­˜',
-  '什' => '什',
-  '茶' => '茶',
-  '刺' => '刺',
-  '切' => '切',
-  '度' => '度',
-  '拓' => '拓',
-  '糖' => '糖',
-  '宅' => '宅',
-  '洞' => '洞',
-  '暴' => '暴',
-  '輻' => '輻',
-  '行' => '行',
-  '降' => '降',
-  '見' => '見',
-  '廓' => '廓',
-  '兀' => '兀',
-  '嗀' => '嗀',
-  '塚' => '塚',
-  '晴' => '晴',
-  '凞' => '凞',
-  '猪' => '猪',
-  '益' => '益',
-  '礼' => '礼',
-  '神' => '神',
-  '祥' => '祥',
-  '福' => '福',
-  '靖' => '靖',
-  '精' => '精',
-  '羽' => '羽',
-  '蘒' => '蘒',
-  '諸' => '諸',
-  '逸' => '逸',
-  '都' => '都',
-  '飯' => '飯',
-  '飼' => '飼',
-  '館' => '館',
-  '鶴' => '鶴',
-  '郞' => '郞',
-  '隷' => '隷',
-  '侮' => '侮',
-  '僧' => '僧',
-  '免' => '免',
-  '勉' => '勉',
-  '勤' => '勤',
-  '卑' => '卑',
-  '喝' => '喝',
-  '嘆' => '嘆',
-  '器' => '器',
-  '塀' => '塀',
-  '墨' => '墨',
-  '層' => '層',
-  '屮' => '屮',
-  '悔' => '悔',
-  '慨' => '慨',
-  '憎' => '憎',
-  '懲' => '懲',
-  '敏' => '敏',
-  'ï©‚' => 'æ—¢',
-  '暑' => '暑',
-  '梅' => '梅',
-  'ï©…' => 'æµ·',
-  '渚' => '渚',
-  '漢' => '漢',
-  '煮' => '煮',
-  '爫' => '爫',
-  '琢' => '琢',
-  '碑' => '碑',
-  '社' => '社',
-  '祉' => '祉',
-  '祈' => '祈',
-  '祐' => '祐',
-  '祖' => '祖',
-  '祝' => '祝',
-  '禍' => '禍',
-  '禎' => '禎',
-  'ï©”' => 'ç©€',
-  '突' => '突',
-  '節' => '節',
-  'ï©—' => 'ç·´',
-  '縉' => '縉',
-  '繁' => '繁',
-  '署' => '署',
-  '者' => '者',
-  '臭' => '臭',
-  '艹' => '艹',
-  '艹' => '艹',
-  '著' => '著',
-  '褐' => '褐',
-  '視' => '視',
-  '謁' => '謁',
-  '謹' => '謹',
-  '賓' => '賓',
-  'ï©¥' => 'è´ˆ',
-  '辶' => '辶',
-  '逸' => '逸',
-  '難' => '難',
-  '響' => '響',
-  '頻' => '頻',
-  '恵' => '恵',
-  '𤋮' => '𤋮',
-  '舘' => '舘',
-  '並' => '並',
-  '况' => '况',
-  '全' => '全',
-  '侀' => '侀',
-  'ï©´' => 'å……',
-  '冀' => '冀',
-  '勇' => '勇',
-  '勺' => '勺',
-  '喝' => '喝',
-  '啕' => '啕',
-  '喙' => '喙',
-  'ï©»' => 'å—¢',
-  '塚' => '塚',
-  '墳' => '墳',
-  '奄' => '奄',
-  '奔' => '奔',
-  '婢' => '婢',
-  '嬨' => '嬨',
-  '廒' => '廒',
-  '廙' => '廙',
-  '彩' => '彩',
-  '徭' => '徭',
-  '惘' => '惘',
-  '慎' => '慎',
-  '愈' => '愈',
-  '憎' => '憎',
-  '慠' => '慠',
-  '懲' => '懲',
-  '戴' => '戴',
-  '揄' => '揄',
-  '搜' => '搜',
-  '摒' => '摒',
-  '敖' => '敖',
-  '晴' => '晴',
-  '朗' => '朗',
-  '望' => '望',
-  '杖' => '杖',
-  '歹' => '歹',
-  '殺' => '殺',
-  '流' => '流',
-  '滛' => '滛',
-  '滋' => '滋',
-  '漢' => '漢',
-  '瀞' => '瀞',
-  '煮' => '煮',
-  '瞧' => '瞧',
-  '爵' => '爵',
-  '犯' => '犯',
-  '猪' => '猪',
-  '瑱' => '瑱',
-  '甆' => '甆',
-  '画' => '画',
-  '瘝' => '瘝',
-  '瘟' => '瘟',
-  '益' => '益',
-  '盛' => '盛',
-  '直' => '直',
-  '睊' => '睊',
-  '着' => '着',
-  '磌' => '磌',
-  '窱' => '窱',
-  '節' => '節',
-  '类' => '类',
-  '絛' => '絛',
-  '練' => '練',
-  '缾' => '缾',
-  '者' => '者',
-  '荒' => '荒',
-  '華' => '華',
-  '蝹' => '蝹',
-  '襁' => '襁',
-  '覆' => '覆',
-  '視' => '視',
-  '調' => '調',
-  '諸' => '諸',
-  '請' => '請',
-  '謁' => '謁',
-  '諾' => '諾',
-  '諭' => '諭',
-  '謹' => '謹',
-  '變' => '變',
-  '贈' => '贈',
-  '輸' => '輸',
-  '遲' => '遲',
-  '醙' => '醙',
-  '鉶' => '鉶',
-  '陼' => '陼',
-  '難' => '難',
-  '靖' => '靖',
-  '韛' => '韛',
-  '響' => '響',
-  'ï«‹' => 'é ‹',
-  '頻' => '頻',
-  '鬒' => '鬒',
-  '龜' => '龜',
-  '𢡊' => '𢡊',
-  '𢡄' => '𢡄',
-  '𣏕' => '𣏕',
-  '㮝' => '㮝',
-  '䀘' => '䀘',
-  '䀹' => '䀹',
-  '𥉉' => '𥉉',
-  '𥳐' => '𥳐',
-  '𧻓' => '𧻓',
-  '齃' => '齃',
-  '龎' => '龎',
-  'יִ' => 'יִ',
-  'ײַ' => 'ײַ',
-  'שׁ' => 'שׁ',
-  'שׂ' => 'שׂ',
-  'שּׁ' => 'שּׁ',
-  'שּׂ' => 'שּׂ',
-  'אַ' => 'אַ',
-  'אָ' => 'אָ',
-  'אּ' => 'אּ',
-  'בּ' => 'בּ',
-  'גּ' => 'גּ',
-  'דּ' => 'דּ',
-  'הּ' => 'הּ',
-  'וּ' => 'וּ',
-  'זּ' => 'זּ',
-  'טּ' => 'טּ',
-  'יּ' => 'יּ',
-  'ךּ' => 'ךּ',
-  'כּ' => 'כּ',
-  'לּ' => 'לּ',
-  'מּ' => 'מּ',
-  'ï­€' => '× Ö¼',
-  'סּ' => 'סּ',
-  'ï­ƒ' => '×£Ö¼',
-  'פּ' => 'פּ',
-  'צּ' => 'צּ',
-  'ï­‡' => '×§Ö¼',
-  'רּ' => 'רּ',
-  'שּ' => 'שּ',
-  'תּ' => 'תּ',
-  'וֹ' => 'וֹ',
-  'בֿ' => 'בֿ',
-  'כֿ' => 'כֿ',
-  'פֿ' => 'פֿ',
-  '𑂚' => '𑂚',
-  '𑂜' => '𑂜',
-  '𑂫' => '𑂫',
-  '𑄮' => '𑄮',
-  '𑄯' => '𑄯',
-  '𑍋' => '𑍋',
-  '𑍌' => '𑍌',
-  '𑒻' => '𑒻',
-  '𑒼' => '𑒼',
-  '𑒾' => '𑒾',
-  '𑖺' => '𑖺',
-  '𑖻' => '𑖻',
-  '𑤸' => '𑤸',
-  '𝅗𝅥' => '𝅗𝅥',
-  '𝅘𝅥' => '𝅘𝅥',
-  '𝅘𝅥𝅮' => '𝅘𝅥𝅮',
-  '𝅘𝅥𝅯' => '𝅘𝅥𝅯',
-  '𝅘𝅥𝅰' => '𝅘𝅥𝅰',
-  '𝅘𝅥𝅱' => '𝅘𝅥𝅱',
-  '𝅘𝅥𝅲' => '𝅘𝅥𝅲',
-  '𝆹𝅥' => '𝆹𝅥',
-  '𝆺𝅥' => '𝆺𝅥',
-  '𝆹𝅥𝅮' => '𝆹𝅥𝅮',
-  '𝆺𝅥𝅮' => '𝆺𝅥𝅮',
-  '𝆹𝅥𝅯' => '𝆹𝅥𝅯',
-  '𝆺𝅥𝅯' => '𝆺𝅥𝅯',
-  '丽' => '丽',
-  '丸' => '丸',
-  '乁' => '乁',
-  '𠄢' => '𠄢',
-  '你' => '你',
-  '侮' => '侮',
-  '侻' => '侻',
-  '倂' => '倂',
-  '偺' => '偺',
-  '備' => '備',
-  '僧' => '僧',
-  '像' => '像',
-  '㒞' => '㒞',
-  '𠘺' => '𠘺',
-  '免' => '免',
-  '兔' => '兔',
-  '兤' => '兤',
-  '具' => '具',
-  '𠔜' => '𠔜',
-  '㒹' => '㒹',
-  '內' => '內',
-  '再' => '再',
-  '𠕋' => '𠕋',
-  '冗' => '冗',
-  '冤' => '冤',
-  '仌' => '仌',
-  '冬' => '冬',
-  '况' => '况',
-  '𩇟' => '𩇟',
-  '凵' => '凵',
-  '刃' => '刃',
-  '㓟' => '㓟',
-  '刻' => '刻',
-  '剆' => '剆',
-  '割' => '割',
-  '剷' => '剷',
-  '㔕' => '㔕',
-  '勇' => '勇',
-  '勉' => '勉',
-  '勤' => '勤',
-  '勺' => '勺',
-  '包' => '包',
-  '匆' => '匆',
-  '北' => '北',
-  '卉' => '卉',
-  '卑' => '卑',
-  '博' => '博',
-  '即' => '即',
-  '卽' => '卽',
-  '卿' => '卿',
-  '卿' => '卿',
-  '卿' => '卿',
-  '𠨬' => '𠨬',
-  '灰' => '灰',
-  '及' => '及',
-  '叟' => '叟',
-  '𠭣' => '𠭣',
-  '叫' => '叫',
-  '叱' => '叱',
-  '吆' => '吆',
-  '咞' => '咞',
-  '吸' => '吸',
-  '呈' => '呈',
-  '周' => '周',
-  '咢' => '咢',
-  '哶' => '哶',
-  '唐' => '唐',
-  '啓' => '啓',
-  '啣' => '啣',
-  '善' => '善',
-  '善' => '善',
-  '喙' => '喙',
-  '喫' => '喫',
-  '喳' => '喳',
-  '嗂' => '嗂',
-  '圖' => '圖',
-  '嘆' => '嘆',
-  '圗' => '圗',
-  '噑' => '噑',
-  '噴' => '噴',
-  '切' => '切',
-  '壮' => '壮',
-  '城' => '城',
-  '埴' => '埴',
-  '堍' => '堍',
-  '型' => '型',
-  '堲' => '堲',
-  '報' => '報',
-  '墬' => '墬',
-  '𡓤' => '𡓤',
-  '売' => '売',
-  '壷' => '壷',
-  '夆' => '夆',
-  '多' => '多',
-  '夢' => '夢',
-  '奢' => '奢',
-  '𡚨' => '𡚨',
-  '𡛪' => '𡛪',
-  '姬' => '姬',
-  '娛' => '娛',
-  '娧' => '娧',
-  '姘' => '姘',
-  '婦' => '婦',
-  '㛮' => '㛮',
-  '㛼' => '㛼',
-  '嬈' => '嬈',
-  '嬾' => '嬾',
-  '嬾' => '嬾',
-  '𡧈' => '𡧈',
-  '寃' => '寃',
-  '寘' => '寘',
-  '寧' => '寧',
-  '寳' => '寳',
-  '𡬘' => '𡬘',
-  '寿' => '寿',
-  '将' => '将',
-  '当' => '当',
-  '尢' => '尢',
-  '㞁' => '㞁',
-  '屠' => '屠',
-  '屮' => '屮',
-  '峀' => '峀',
-  '岍' => '岍',
-  '𡷤' => '𡷤',
-  '嵃' => '嵃',
-  '𡷦' => '𡷦',
-  '嵮' => '嵮',
-  '嵫' => '嵫',
-  '嵼' => '嵼',
-  '巡' => '巡',
-  '巢' => '巢',
-  '㠯' => '㠯',
-  '巽' => '巽',
-  '帨' => '帨',
-  '帽' => '帽',
-  '幩' => '幩',
-  '㡢' => '㡢',
-  '𢆃' => '𢆃',
-  '㡼' => '㡼',
-  '庰' => '庰',
-  '庳' => '庳',
-  '庶' => '庶',
-  '廊' => '廊',
-  '𪎒' => '𪎒',
-  '廾' => '廾',
-  '𢌱' => '𢌱',
-  '𢌱' => '𢌱',
-  '舁' => '舁',
-  '弢' => '弢',
-  '弢' => '弢',
-  '㣇' => '㣇',
-  '𣊸' => '𣊸',
-  '𦇚' => '𦇚',
-  '形' => '形',
-  '彫' => '彫',
-  '㣣' => '㣣',
-  '徚' => '徚',
-  '忍' => '忍',
-  '志' => '志',
-  '忹' => '忹',
-  '悁' => '悁',
-  '㤺' => '㤺',
-  '㤜' => '㤜',
-  '悔' => '悔',
-  '𢛔' => '𢛔',
-  '惇' => '惇',
-  '慈' => '慈',
-  '慌' => '慌',
-  '慎' => '慎',
-  '慌' => '慌',
-  '慺' => '慺',
-  '憎' => '憎',
-  '憲' => '憲',
-  '憤' => '憤',
-  '憯' => '憯',
-  '懞' => '懞',
-  '懲' => '懲',
-  '懶' => '懶',
-  '成' => '成',
-  '戛' => '戛',
-  '扝' => '扝',
-  '抱' => '抱',
-  '拔' => '拔',
-  '捐' => '捐',
-  '𢬌' => '𢬌',
-  '挽' => '挽',
-  '拼' => '拼',
-  '捨' => '捨',
-  '掃' => '掃',
-  '揤' => '揤',
-  '𢯱' => '𢯱',
-  '搢' => '搢',
-  '揅' => '揅',
-  '掩' => '掩',
-  '㨮' => '㨮',
-  '摩' => '摩',
-  '摾' => '摾',
-  '撝' => '撝',
-  '摷' => '摷',
-  '㩬' => '㩬',
-  '敏' => '敏',
-  '敬' => '敬',
-  '𣀊' => '𣀊',
-  '旣' => '旣',
-  '書' => '書',
-  '晉' => '晉',
-  '㬙' => '㬙',
-  '暑' => '暑',
-  '㬈' => '㬈',
-  '㫤' => '㫤',
-  '冒' => '冒',
-  '冕' => '冕',
-  '最' => '最',
-  '暜' => '暜',
-  '肭' => '肭',
-  '䏙' => '䏙',
-  '朗' => '朗',
-  '望' => '望',
-  '朡' => '朡',
-  '杞' => '杞',
-  '杓' => '杓',
-  '𣏃' => '𣏃',
-  '㭉' => '㭉',
-  '柺' => '柺',
-  '枅' => '枅',
-  '桒' => '桒',
-  '梅' => '梅',
-  '𣑭' => '𣑭',
-  '梎' => '梎',
-  '栟' => '栟',
-  '椔' => '椔',
-  '㮝' => '㮝',
-  '楂' => '楂',
-  '榣' => '榣',
-  '槪' => '槪',
-  '檨' => '檨',
-  '𣚣' => '𣚣',
-  '櫛' => '櫛',
-  '㰘' => '㰘',
-  '次' => '次',
-  '𣢧' => '𣢧',
-  '歔' => '歔',
-  '㱎' => '㱎',
-  '歲' => '歲',
-  '殟' => '殟',
-  '殺' => '殺',
-  '殻' => '殻',
-  '𣪍' => '𣪍',
-  '𡴋' => '𡴋',
-  '𣫺' => '𣫺',
-  '汎' => '汎',
-  '𣲼' => '𣲼',
-  '沿' => '沿',
-  '泍' => '泍',
-  '汧' => '汧',
-  '洖' => '洖',
-  '派' => '派',
-  '海' => '海',
-  '流' => '流',
-  '浩' => '浩',
-  '浸' => '浸',
-  '涅' => '涅',
-  '𣴞' => '𣴞',
-  '洴' => '洴',
-  '港' => '港',
-  '湮' => '湮',
-  '㴳' => '㴳',
-  '滋' => '滋',
-  '滇' => '滇',
-  '𣻑' => '𣻑',
-  '淹' => '淹',
-  '潮' => '潮',
-  '𣽞' => '𣽞',
-  '𣾎' => '𣾎',
-  '濆' => '濆',
-  '瀹' => '瀹',
-  '瀞' => '瀞',
-  '瀛' => '瀛',
-  '㶖' => '㶖',
-  '灊' => '灊',
-  '災' => '災',
-  '灷' => '灷',
-  '炭' => '炭',
-  '𠔥' => '𠔥',
-  '煅' => '煅',
-  '𤉣' => '𤉣',
-  '熜' => '熜',
-  '𤎫' => '𤎫',
-  '爨' => '爨',
-  '爵' => '爵',
-  '牐' => '牐',
-  '𤘈' => '𤘈',
-  '犀' => '犀',
-  '犕' => '犕',
-  '𤜵' => '𤜵',
-  '𤠔' => '𤠔',
-  '獺' => '獺',
-  '王' => '王',
-  '㺬' => '㺬',
-  '玥' => '玥',
-  '㺸' => '㺸',
-  '㺸' => '㺸',
-  '瑇' => '瑇',
-  '瑜' => '瑜',
-  '瑱' => '瑱',
-  '璅' => '璅',
-  '瓊' => '瓊',
-  '㼛' => '㼛',
-  '甤' => '甤',
-  '𤰶' => '𤰶',
-  '甾' => '甾',
-  '𤲒' => '𤲒',
-  '異' => '異',
-  '𢆟' => '𢆟',
-  '瘐' => '瘐',
-  '𤾡' => '𤾡',
-  '𤾸' => '𤾸',
-  '𥁄' => '𥁄',
-  '㿼' => '㿼',
-  '䀈' => '䀈',
-  '直' => '直',
-  '𥃳' => '𥃳',
-  '𥃲' => '𥃲',
-  '𥄙' => '𥄙',
-  '𥄳' => '𥄳',
-  '眞' => '眞',
-  '真' => '真',
-  '真' => '真',
-  '睊' => '睊',
-  '䀹' => '䀹',
-  '瞋' => '瞋',
-  '䁆' => '䁆',
-  '䂖' => '䂖',
-  '𥐝' => '𥐝',
-  '硎' => '硎',
-  '碌' => '碌',
-  '磌' => '磌',
-  '䃣' => '䃣',
-  '𥘦' => '𥘦',
-  '祖' => '祖',
-  '𥚚' => '𥚚',
-  '𥛅' => '𥛅',
-  '福' => '福',
-  '秫' => '秫',
-  '䄯' => '䄯',
-  '穀' => '穀',
-  '穊' => '穊',
-  '穏' => '穏',
-  '𥥼' => '𥥼',
-  '𥪧' => '𥪧',
-  '𥪧' => '𥪧',
-  '竮' => '竮',
-  '䈂' => '䈂',
-  '𥮫' => '𥮫',
-  '篆' => '篆',
-  '築' => '築',
-  '䈧' => '䈧',
-  '𥲀' => '𥲀',
-  '糒' => '糒',
-  '䊠' => '䊠',
-  '糨' => '糨',
-  '糣' => '糣',
-  '紀' => '紀',
-  '𥾆' => '𥾆',
-  '絣' => '絣',
-  '䌁' => '䌁',
-  '緇' => '緇',
-  '縂' => '縂',
-  '繅' => '繅',
-  '䌴' => '䌴',
-  '𦈨' => '𦈨',
-  '𦉇' => '𦉇',
-  '䍙' => '䍙',
-  '𦋙' => '𦋙',
-  '罺' => '罺',
-  '𦌾' => '𦌾',
-  '羕' => '羕',
-  '翺' => '翺',
-  '者' => '者',
-  '𦓚' => '𦓚',
-  '𦔣' => '𦔣',
-  '聠' => '聠',
-  '𦖨' => '𦖨',
-  '聰' => '聰',
-  '𣍟' => '𣍟',
-  '䏕' => '䏕',
-  '育' => '育',
-  '脃' => '脃',
-  '䐋' => '䐋',
-  '脾' => '脾',
-  '媵' => '媵',
-  '𦞧' => '𦞧',
-  '𦞵' => '𦞵',
-  '𣎓' => '𣎓',
-  '𣎜' => '𣎜',
-  '舁' => '舁',
-  '舄' => '舄',
-  '辞' => '辞',
-  '䑫' => '䑫',
-  '芑' => '芑',
-  '芋' => '芋',
-  '芝' => '芝',
-  '劳' => '劳',
-  '花' => '花',
-  '芳' => '芳',
-  '芽' => '芽',
-  '苦' => '苦',
-  '𦬼' => '𦬼',
-  '若' => '若',
-  '茝' => '茝',
-  '荣' => '荣',
-  '莭' => '莭',
-  '茣' => '茣',
-  '莽' => '莽',
-  '菧' => '菧',
-  '著' => '著',
-  '荓' => '荓',
-  '菊' => '菊',
-  '菌' => '菌',
-  '菜' => '菜',
-  '𦰶' => '𦰶',
-  '𦵫' => '𦵫',
-  '𦳕' => '𦳕',
-  '䔫' => '䔫',
-  '蓱' => '蓱',
-  '蓳' => '蓳',
-  '蔖' => '蔖',
-  '𧏊' => '𧏊',
-  '蕤' => '蕤',
-  '𦼬' => '𦼬',
-  '䕝' => '䕝',
-  '䕡' => '䕡',
-  '𦾱' => '𦾱',
-  '𧃒' => '𧃒',
-  '䕫' => '䕫',
-  '虐' => '虐',
-  '虜' => '虜',
-  '虧' => '虧',
-  '虩' => '虩',
-  '蚩' => '蚩',
-  '蚈' => '蚈',
-  '蜎' => '蜎',
-  '蛢' => '蛢',
-  '蝹' => '蝹',
-  '蜨' => '蜨',
-  '蝫' => '蝫',
-  '螆' => '螆',
-  '䗗' => '䗗',
-  '蟡' => '蟡',
-  '蠁' => '蠁',
-  '䗹' => '䗹',
-  '衠' => '衠',
-  '衣' => '衣',
-  '𧙧' => '𧙧',
-  '裗' => '裗',
-  '裞' => '裞',
-  '䘵' => '䘵',
-  '裺' => '裺',
-  '㒻' => '㒻',
-  '𧢮' => '𧢮',
-  '𧥦' => '𧥦',
-  '䚾' => '䚾',
-  '䛇' => '䛇',
-  '誠' => '誠',
-  '諭' => '諭',
-  '變' => '變',
-  '豕' => '豕',
-  '𧲨' => '𧲨',
-  '貫' => '貫',
-  '賁' => '賁',
-  '贛' => '贛',
-  '起' => '起',
-  '𧼯' => '𧼯',
-  '𠠄' => '𠠄',
-  '跋' => '跋',
-  '趼' => '趼',
-  '跰' => '跰',
-  '𠣞' => '𠣞',
-  '軔' => '軔',
-  '輸' => '輸',
-  '𨗒' => '𨗒',
-  '𨗭' => '𨗭',
-  '邔' => '邔',
-  '郱' => '郱',
-  '鄑' => '鄑',
-  '𨜮' => '𨜮',
-  '鄛' => '鄛',
-  '鈸' => '鈸',
-  '鋗' => '鋗',
-  '鋘' => '鋘',
-  '鉼' => '鉼',
-  '鏹' => '鏹',
-  '鐕' => '鐕',
-  '𨯺' => '𨯺',
-  '開' => '開',
-  '䦕' => '䦕',
-  '閷' => '閷',
-  '𨵷' => '𨵷',
-  '䧦' => '䧦',
-  '雃' => '雃',
-  '嶲' => '嶲',
-  '霣' => '霣',
-  '𩅅' => '𩅅',
-  '𩈚' => '𩈚',
-  '䩮' => '䩮',
-  '䩶' => '䩶',
-  '韠' => '韠',
-  '𩐊' => '𩐊',
-  '䪲' => '䪲',
-  '𩒖' => '𩒖',
-  '頋' => '頋',
-  '頋' => '頋',
-  '頩' => '頩',
-  '𩖶' => '𩖶',
-  '飢' => '飢',
-  '䬳' => '䬳',
-  '餩' => '餩',
-  '馧' => '馧',
-  '駂' => '駂',
-  '駾' => '駾',
-  '䯎' => '䯎',
-  '𩬰' => '𩬰',
-  '鬒' => '鬒',
-  '鱀' => '鱀',
-  '鳽' => '鳽',
-  '䳎' => '䳎',
-  '䳭' => '䳭',
-  '鵧' => '鵧',
-  '𪃎' => '𪃎',
-  '䳸' => '䳸',
-  '𪄅' => '𪄅',
-  '𪈎' => '𪈎',
-  '𪊑' => '𪊑',
-  '麻' => '麻',
-  '䵖' => '䵖',
-  '黹' => '黹',
-  '黾' => '黾',
-  '鼅' => '鼅',
-  '鼏' => '鼏',
-  '鼖' => '鼖',
-  '鼻' => '鼻',
-  '𪘀' => '𪘀',
-);
diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php b/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php
deleted file mode 100644
index ec90f36eb65c636149d1de8f122e47649cefcbe2..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php
+++ /dev/null
@@ -1,876 +0,0 @@
-<?php
-
-return array (
-  'Ì€' => 230,
-  '́' => 230,
-  'Ì‚' => 230,
-  '̃' => 230,
-  'Ì„' => 230,
-  'Ì…' => 230,
-  '̆' => 230,
-  '̇' => 230,
-  '̈' => 230,
-  '̉' => 230,
-  'ÌŠ' => 230,
-  'Ì‹' => 230,
-  '̌' => 230,
-  '̍' => 230,
-  'ÌŽ' => 230,
-  '̏' => 230,
-  '̐' => 230,
-  'Ì‘' => 230,
-  'Ì’' => 230,
-  'Ì“' => 230,
-  'Ì”' => 230,
-  'Ì•' => 232,
-  'Ì–' => 220,
-  'Ì—' => 220,
-  '̘' => 220,
-  'Ì™' => 220,
-  'Ìš' => 232,
-  'Ì›' => 216,
-  '̜' => 220,
-  '̝' => 220,
-  'Ìž' => 220,
-  'ÌŸ' => 220,
-  'Ì ' => 220,
-  'Ì¡' => 202,
-  'Ì¢' => 202,
-  'Ì£' => 220,
-  '̤' => 220,
-  'Ì¥' => 220,
-  '̦' => 220,
-  '̧' => 202,
-  '̨' => 202,
-  'Ì©' => 220,
-  '̪' => 220,
-  'Ì«' => 220,
-  '̬' => 220,
-  'Ì­' => 220,
-  'Ì®' => 220,
-  '̯' => 220,
-  '̰' => 220,
-  '̱' => 220,
-  '̲' => 220,
-  '̳' => 220,
-  'Ì´' => 1,
-  '̵' => 1,
-  '̶' => 1,
-  'Ì·' => 1,
-  '̸' => 1,
-  '̹' => 220,
-  '̺' => 220,
-  'Ì»' => 220,
-  '̼' => 220,
-  '̽' => 230,
-  '̾' => 230,
-  'Ì¿' => 230,
-  'Í€' => 230,
-  '́' => 230,
-  'Í‚' => 230,
-  '̓' => 230,
-  'Í„' => 230,
-  'Í…' => 240,
-  '͆' => 230,
-  '͇' => 220,
-  '͈' => 220,
-  '͉' => 220,
-  'ÍŠ' => 230,
-  'Í‹' => 230,
-  '͌' => 230,
-  '͍' => 220,
-  'ÍŽ' => 220,
-  '͐' => 230,
-  'Í‘' => 230,
-  'Í’' => 230,
-  'Í“' => 220,
-  'Í”' => 220,
-  'Í•' => 220,
-  'Í–' => 220,
-  'Í—' => 230,
-  '͘' => 232,
-  'Í™' => 220,
-  'Íš' => 220,
-  'Í›' => 230,
-  '͜' => 233,
-  '͝' => 234,
-  'Íž' => 234,
-  'ÍŸ' => 233,
-  'Í ' => 234,
-  'Í¡' => 234,
-  'Í¢' => 233,
-  'Í£' => 230,
-  'ͤ' => 230,
-  'Í¥' => 230,
-  'ͦ' => 230,
-  'ͧ' => 230,
-  'ͨ' => 230,
-  'Í©' => 230,
-  'ͪ' => 230,
-  'Í«' => 230,
-  'ͬ' => 230,
-  'Í­' => 230,
-  'Í®' => 230,
-  'ͯ' => 230,
-  'Òƒ' => 230,
-  'Ò„' => 230,
-  'Ò…' => 230,
-  'Ò†' => 230,
-  'Ò‡' => 230,
-  'Ö‘' => 220,
-  'Ö’' => 230,
-  'Ö“' => 230,
-  'Ö”' => 230,
-  'Ö•' => 230,
-  'Ö–' => 220,
-  'Ö—' => 230,
-  'Ö˜' => 230,
-  'Ö™' => 230,
-  'Öš' => 222,
-  'Ö›' => 220,
-  '֜' => 230,
-  '֝' => 230,
-  'Öž' => 230,
-  'ÖŸ' => 230,
-  'Ö ' => 230,
-  'Ö¡' => 230,
-  'Ö¢' => 220,
-  'Ö£' => 220,
-  'Ö¤' => 220,
-  'Ö¥' => 220,
-  'Ö¦' => 220,
-  'Ö§' => 220,
-  'Ö¨' => 230,
-  'Ö©' => 230,
-  'Öª' => 220,
-  'Ö«' => 230,
-  'Ö¬' => 230,
-  'Ö­' => 222,
-  'Ö®' => 228,
-  'Ö¯' => 230,
-  'Ö°' => 10,
-  'Ö±' => 11,
-  'Ö²' => 12,
-  'Ö³' => 13,
-  'Ö´' => 14,
-  'Öµ' => 15,
-  'Ö¶' => 16,
-  'Ö·' => 17,
-  'Ö¸' => 18,
-  'Ö¹' => 19,
-  'Öº' => 19,
-  'Ö»' => 20,
-  'Ö¼' => 21,
-  'Ö½' => 22,
-  'Ö¿' => 23,
-  'ׁ' => 24,
-  'ׂ' => 25,
-  'ׄ' => 230,
-  '×…' => 220,
-  'ׇ' => 18,
-  'ؐ' => 230,
-  'Ø‘' => 230,
-  'Ø’' => 230,
-  'Ø“' => 230,
-  'Ø”' => 230,
-  'Ø•' => 230,
-  'Ø–' => 230,
-  'Ø—' => 230,
-  'ؘ' => 30,
-  'Ø™' => 31,
-  'Øš' => 32,
-  'Ù‹' => 27,
-  'ٌ' => 28,
-  'ٍ' => 29,
-  'ÙŽ' => 30,
-  'ُ' => 31,
-  'ِ' => 32,
-  'Ù‘' => 33,
-  'Ù’' => 34,
-  'Ù“' => 230,
-  'Ù”' => 230,
-  'Ù•' => 220,
-  'Ù–' => 220,
-  'Ù—' => 230,
-  'Ù˜' => 230,
-  'Ù™' => 230,
-  'Ùš' => 230,
-  'Ù›' => 230,
-  'ٜ' => 220,
-  'ٝ' => 230,
-  'Ùž' => 230,
-  'ÙŸ' => 220,
-  'Ù°' => 35,
-  'Û–' => 230,
-  'Û—' => 230,
-  'Û˜' => 230,
-  'Û™' => 230,
-  'Ûš' => 230,
-  'Û›' => 230,
-  'ۜ' => 230,
-  'ÛŸ' => 230,
-  'Û ' => 230,
-  'Û¡' => 230,
-  'Û¢' => 230,
-  'Û£' => 220,
-  'Û¤' => 230,
-  'Û§' => 230,
-  'Û¨' => 230,
-  'Ûª' => 220,
-  'Û«' => 230,
-  'Û¬' => 230,
-  'Û­' => 220,
-  'Ü‘' => 36,
-  'ܰ' => 230,
-  'ܱ' => 220,
-  'ܲ' => 230,
-  'ܳ' => 230,
-  'Ü´' => 220,
-  'ܵ' => 230,
-  'ܶ' => 230,
-  'Ü·' => 220,
-  'ܸ' => 220,
-  'ܹ' => 220,
-  'ܺ' => 230,
-  'Ü»' => 220,
-  'ܼ' => 220,
-  'ܽ' => 230,
-  'ܾ' => 220,
-  'Ü¿' => 230,
-  'Ý€' => 230,
-  '݁' => 230,
-  'Ý‚' => 220,
-  '݃' => 230,
-  'Ý„' => 220,
-  'Ý…' => 230,
-  '݆' => 220,
-  '݇' => 230,
-  '݈' => 220,
-  '݉' => 230,
-  'ÝŠ' => 230,
-  'ß«' => 230,
-  '߬' => 230,
-  'ß­' => 230,
-  'ß®' => 230,
-  '߯' => 230,
-  'ß°' => 230,
-  'ß±' => 230,
-  'ß²' => 220,
-  'ß³' => 230,
-  'ß½' => 220,
-  'à –' => 230,
-  'à —' => 230,
-  'à ˜' => 230,
-  'à ™' => 230,
-  'à ›' => 230,
-  'ࠜ' => 230,
-  'ࠝ' => 230,
-  'à ž' => 230,
-  'à Ÿ' => 230,
-  'à  ' => 230,
-  'à ¡' => 230,
-  'à ¢' => 230,
-  'à £' => 230,
-  'à ¥' => 230,
-  'à ¦' => 230,
-  'à §' => 230,
-  'à ©' => 230,
-  'à ª' => 230,
-  'à «' => 230,
-  'à ¬' => 230,
-  'à ­' => 230,
-  'à¡™' => 220,
-  '࡚' => 220,
-  'à¡›' => 220,
-  '࣓' => 220,
-  'ࣔ' => 230,
-  'ࣕ' => 230,
-  'ࣖ' => 230,
-  'ࣗ' => 230,
-  'ࣘ' => 230,
-  'ࣙ' => 230,
-  'ࣚ' => 230,
-  'ࣛ' => 230,
-  'ࣜ' => 230,
-  'ࣝ' => 230,
-  'ࣞ' => 230,
-  'ࣟ' => 230,
-  '࣠' => 230,
-  '࣡' => 230,
-  'ࣣ' => 220,
-  'ࣤ' => 230,
-  'ࣥ' => 230,
-  'ࣦ' => 220,
-  'ࣧ' => 230,
-  'ࣨ' => 230,
-  'ࣩ' => 220,
-  '࣪' => 230,
-  '࣫' => 230,
-  '࣬' => 230,
-  '࣭' => 220,
-  '࣮' => 220,
-  '࣯' => 220,
-  'ࣰ' => 27,
-  'ࣱ' => 28,
-  'ࣲ' => 29,
-  'ࣳ' => 230,
-  'ࣴ' => 230,
-  'ࣵ' => 230,
-  'ࣶ' => 220,
-  'ࣷ' => 230,
-  'ࣸ' => 230,
-  'ࣹ' => 220,
-  'ࣺ' => 220,
-  'ࣻ' => 230,
-  'ࣼ' => 230,
-  'ࣽ' => 230,
-  'ࣾ' => 230,
-  'ࣿ' => 230,
-  '़' => 7,
-  '्' => 9,
-  '॑' => 230,
-  '॒' => 220,
-  '॓' => 230,
-  '॔' => 230,
-  '়' => 7,
-  '্' => 9,
-  'à§¾' => 230,
-  '਼' => 7,
-  '੍' => 9,
-  '઼' => 7,
-  '્' => 9,
-  '଼' => 7,
-  '୍' => 9,
-  '்' => 9,
-  '్' => 9,
-  'ౕ' => 84,
-  'à±–' => 91,
-  '಼' => 7,
-  '್' => 9,
-  'à´»' => 9,
-  'à´¼' => 9,
-  '്' => 9,
-  'à·Š' => 9,
-  'ุ' => 103,
-  'ู' => 103,
-  'ฺ' => 9,
-  '่' => 107,
-  '้' => 107,
-  '๊' => 107,
-  '๋' => 107,
-  'ຸ' => 118,
-  'ູ' => 118,
-  '຺' => 9,
-  '່' => 122,
-  '້' => 122,
-  '໊' => 122,
-  '໋' => 122,
-  '༘' => 220,
-  '༙' => 220,
-  '༵' => 220,
-  '༷' => 220,
-  '༹' => 216,
-  'ཱ' => 129,
-  'ི' => 130,
-  'ུ' => 132,
-  'ེ' => 130,
-  'ཻ' => 130,
-  'ོ' => 130,
-  'ཽ' => 130,
-  'ྀ' => 130,
-  'ྂ' => 230,
-  'ྃ' => 230,
-  '྄' => 9,
-  '྆' => 230,
-  '྇' => 230,
-  '࿆' => 220,
-  '့' => 7,
-  '္' => 9,
-  '်' => 9,
-  'ႍ' => 220,
-  '፝' => 230,
-  '፞' => 230,
-  '፟' => 230,
-  '᜔' => 9,
-  '᜴' => 9,
-  '្' => 9,
-  '៝' => 230,
-  'ᢩ' => 228,
-  '᤹' => 222,
-  '᤺' => 230,
-  '᤻' => 220,
-  'ᨗ' => 230,
-  'ᨘ' => 220,
-  'á© ' => 9,
-  '᩵' => 230,
-  'á©¶' => 230,
-  'á©·' => 230,
-  '᩸' => 230,
-  '᩹' => 230,
-  '᩺' => 230,
-  'á©»' => 230,
-  '᩼' => 230,
-  'á©¿' => 220,
-  '᪰' => 230,
-  '᪱' => 230,
-  '᪲' => 230,
-  '᪳' => 230,
-  '᪴' => 230,
-  '᪵' => 220,
-  '᪶' => 220,
-  '᪷' => 220,
-  '᪸' => 220,
-  '᪹' => 220,
-  '᪺' => 220,
-  '᪻' => 230,
-  '᪼' => 230,
-  '᪽' => 220,
-  'ᪿ' => 220,
-  'á«€' => 220,
-  '᬴' => 7,
-  'á­„' => 9,
-  'á­«' => 230,
-  'á­¬' => 220,
-  'á­­' => 230,
-  'á­®' => 230,
-  'á­¯' => 230,
-  'á­°' => 230,
-  'á­±' => 230,
-  'á­²' => 230,
-  'á­³' => 230,
-  '᮪' => 9,
-  '᮫' => 9,
-  '᯦' => 7,
-  '᯲' => 9,
-  '᯳' => 9,
-  'á°·' => 7,
-  '᳐' => 230,
-  '᳑' => 230,
-  'á³’' => 230,
-  'á³”' => 1,
-  '᳕' => 220,
-  'á³–' => 220,
-  'á³—' => 220,
-  '᳘' => 220,
-  'á³™' => 220,
-  '᳚' => 230,
-  'á³›' => 230,
-  '᳜' => 220,
-  '᳝' => 220,
-  '᳞' => 220,
-  '᳟' => 220,
-  'á³ ' => 230,
-  'á³¢' => 1,
-  'á³£' => 1,
-  '᳤' => 1,
-  'á³¥' => 1,
-  '᳦' => 1,
-  'á³§' => 1,
-  '᳨' => 1,
-  'á³­' => 220,
-  'á³´' => 230,
-  '᳸' => 230,
-  'á³¹' => 230,
-  'á·€' => 230,
-  '᷁' => 230,
-  'á·‚' => 220,
-  'á·ƒ' => 230,
-  'á·„' => 230,
-  'á·…' => 230,
-  'á·†' => 230,
-  'á·‡' => 230,
-  'á·ˆ' => 230,
-  'á·‰' => 230,
-  'á·Š' => 220,
-  'á·‹' => 230,
-  '᷌' => 230,
-  '᷍' => 234,
-  'á·Ž' => 214,
-  '᷏' => 220,
-  '᷐' => 202,
-  'á·‘' => 230,
-  'á·’' => 230,
-  'á·“' => 230,
-  'á·”' => 230,
-  'á·•' => 230,
-  'á·–' => 230,
-  'á·—' => 230,
-  'á·˜' => 230,
-  'á·™' => 230,
-  'á·š' => 230,
-  'á·›' => 230,
-  'ᷜ' => 230,
-  'ᷝ' => 230,
-  'á·ž' => 230,
-  'á·Ÿ' => 230,
-  'á· ' => 230,
-  'á·¡' => 230,
-  'á·¢' => 230,
-  'á·£' => 230,
-  'á·¤' => 230,
-  'á·¥' => 230,
-  'á·¦' => 230,
-  'á·§' => 230,
-  'á·¨' => 230,
-  'á·©' => 230,
-  'á·ª' => 230,
-  'á·«' => 230,
-  'á·¬' => 230,
-  'á·­' => 230,
-  'á·®' => 230,
-  'á·¯' => 230,
-  'á·°' => 230,
-  'á·±' => 230,
-  'á·²' => 230,
-  'á·³' => 230,
-  'á·´' => 230,
-  'á·µ' => 230,
-  'á·¶' => 232,
-  'á··' => 228,
-  'á·¸' => 228,
-  'á·¹' => 220,
-  'á·»' => 230,
-  'á·¼' => 233,
-  'á·½' => 220,
-  'á·¾' => 230,
-  'á·¿' => 220,
-  '⃐' => 230,
-  '⃑' => 230,
-  '⃒' => 1,
-  '⃓' => 1,
-  '⃔' => 230,
-  '⃕' => 230,
-  '⃖' => 230,
-  '⃗' => 230,
-  '⃘' => 1,
-  '⃙' => 1,
-  '⃚' => 1,
-  '⃛' => 230,
-  '⃜' => 230,
-  '⃡' => 230,
-  '⃥' => 1,
-  '⃦' => 1,
-  '⃧' => 230,
-  '⃨' => 220,
-  '⃩' => 230,
-  '⃪' => 1,
-  '⃫' => 1,
-  '⃬' => 220,
-  '⃭' => 220,
-  '⃮' => 220,
-  '⃯' => 220,
-  '⃰' => 230,
-  '⳯' => 230,
-  'â³°' => 230,
-  'â³±' => 230,
-  '⵿' => 9,
-  'â· ' => 230,
-  'â·¡' => 230,
-  'â·¢' => 230,
-  'â·£' => 230,
-  'â·¤' => 230,
-  'â·¥' => 230,
-  'â·¦' => 230,
-  'â·§' => 230,
-  'â·¨' => 230,
-  'â·©' => 230,
-  'â·ª' => 230,
-  'â·«' => 230,
-  'â·¬' => 230,
-  'â·­' => 230,
-  'â·®' => 230,
-  'â·¯' => 230,
-  'â·°' => 230,
-  'â·±' => 230,
-  'â·²' => 230,
-  'â·³' => 230,
-  'â·´' => 230,
-  'â·µ' => 230,
-  'â·¶' => 230,
-  'â··' => 230,
-  'â·¸' => 230,
-  'â·¹' => 230,
-  'â·º' => 230,
-  'â·»' => 230,
-  'â·¼' => 230,
-  'â·½' => 230,
-  'â·¾' => 230,
-  'â·¿' => 230,
-  '〪' => 218,
-  '〫' => 228,
-  '〬' => 232,
-  '〭' => 222,
-  '〮' => 224,
-  '〯' => 224,
-  'ã‚™' => 8,
-  '゚' => 8,
-  '꙯' => 230,
-  'ê™´' => 230,
-  'ꙵ' => 230,
-  'ê™¶' => 230,
-  'ê™·' => 230,
-  'ꙸ' => 230,
-  'ꙹ' => 230,
-  'ꙺ' => 230,
-  'ê™»' => 230,
-  '꙼' => 230,
-  '꙽' => 230,
-  'êšž' => 230,
-  'ꚟ' => 230,
-  'ê›°' => 230,
-  'ê›±' => 230,
-  'ê †' => 9,
-  'ê ¬' => 9,
-  '꣄' => 9,
-  '꣠' => 230,
-  '꣡' => 230,
-  '꣢' => 230,
-  '꣣' => 230,
-  '꣤' => 230,
-  '꣥' => 230,
-  '꣦' => 230,
-  '꣧' => 230,
-  '꣨' => 230,
-  '꣩' => 230,
-  '꣪' => 230,
-  '꣫' => 230,
-  '꣬' => 230,
-  '꣭' => 230,
-  '꣮' => 230,
-  '꣯' => 230,
-  '꣰' => 230,
-  '꣱' => 230,
-  '꤫' => 220,
-  '꤬' => 220,
-  '꤭' => 220,
-  '꥓' => 9,
-  '꦳' => 7,
-  'ê§€' => 9,
-  'ꪰ' => 230,
-  'ꪲ' => 230,
-  'ꪳ' => 230,
-  'ꪴ' => 220,
-  'ꪷ' => 230,
-  'ꪸ' => 230,
-  'ꪾ' => 230,
-  '꪿' => 230,
-  '꫁' => 230,
-  'ê«¶' => 9,
-  '꯭' => 9,
-  'ﬞ' => 26,
-  '︠' => 230,
-  '︡' => 230,
-  '︢' => 230,
-  '︣' => 230,
-  '︤' => 230,
-  '︥' => 230,
-  '︦' => 230,
-  '︧' => 220,
-  '︨' => 220,
-  '︩' => 220,
-  '︪' => 220,
-  '︫' => 220,
-  '︬' => 220,
-  '︭' => 220,
-  '︮' => 230,
-  '︯' => 230,
-  '𐇽' => 220,
-  '𐋠' => 220,
-  '𐍶' => 230,
-  '𐍷' => 230,
-  '𐍸' => 230,
-  '𐍹' => 230,
-  '𐍺' => 230,
-  '𐨍' => 220,
-  '𐨏' => 230,
-  '𐨸' => 230,
-  '𐨹' => 1,
-  '𐨺' => 220,
-  '𐨿' => 9,
-  '𐫥' => 230,
-  '𐫦' => 220,
-  '𐴤' => 230,
-  '𐴥' => 230,
-  '𐴦' => 230,
-  '𐴧' => 230,
-  '𐺫' => 230,
-  '𐺬' => 230,
-  '𐽆' => 220,
-  '𐽇' => 220,
-  '𐽈' => 230,
-  '𐽉' => 230,
-  '𐽊' => 230,
-  '𐽋' => 220,
-  '𐽌' => 230,
-  '𐽍' => 220,
-  '𐽎' => 220,
-  '𐽏' => 220,
-  '𐽐' => 220,
-  '𑁆' => 9,
-  '𑁿' => 9,
-  'ð‘‚¹' => 9,
-  '𑂺' => 7,
-  'ð‘„€' => 230,
-  '𑄁' => 230,
-  'ð‘„‚' => 230,
-  'ð‘„³' => 9,
-  'ð‘„´' => 9,
-  'ð‘…³' => 7,
-  '𑇀' => 9,
-  '𑇊' => 7,
-  '𑈵' => 9,
-  '𑈶' => 7,
-  'ð‘‹©' => 7,
-  '𑋪' => 9,
-  '𑌻' => 7,
-  '𑌼' => 7,
-  '𑍍' => 9,
-  '𑍦' => 230,
-  '𑍧' => 230,
-  '𑍨' => 230,
-  '𑍩' => 230,
-  '𑍪' => 230,
-  '𑍫' => 230,
-  '𑍬' => 230,
-  '𑍰' => 230,
-  '𑍱' => 230,
-  '𑍲' => 230,
-  '𑍳' => 230,
-  '𑍴' => 230,
-  'ð‘‘‚' => 9,
-  '𑑆' => 7,
-  'ð‘‘ž' => 230,
-  'ð‘“‚' => 9,
-  '𑓃' => 7,
-  'ð‘–¿' => 9,
-  'ð‘—€' => 7,
-  '𑘿' => 9,
-  '𑚶' => 9,
-  '𑚷' => 7,
-  '𑜫' => 9,
-  'ð‘ ¹' => 9,
-  'ð‘ º' => 7,
-  '𑤽' => 9,
-  '𑤾' => 9,
-  '𑥃' => 7,
-  'ð‘§ ' => 9,
-  '𑨴' => 9,
-  '𑩇' => 9,
-  '𑪙' => 9,
-  'ð‘°¿' => 9,
-  '𑵂' => 7,
-  '𑵄' => 9,
-  '𑵅' => 9,
-  'ð‘¶—' => 9,
-  'ð–«°' => 1,
-  'ð–«±' => 1,
-  'ð–«²' => 1,
-  'ð–«³' => 1,
-  'ð–«´' => 1,
-  'ð–¬°' => 230,
-  '𖬱' => 230,
-  '𖬲' => 230,
-  '𖬳' => 230,
-  'ð–¬´' => 230,
-  '𖬵' => 230,
-  '𖬶' => 230,
-  'ð–¿°' => 6,
-  'ð–¿±' => 6,
-  '𛲞' => 1,
-  '𝅥' => 216,
-  '𝅦' => 216,
-  '𝅧' => 1,
-  '𝅨' => 1,
-  '𝅩' => 1,
-  '𝅭' => 226,
-  '𝅮' => 216,
-  '𝅯' => 216,
-  '𝅰' => 216,
-  '𝅱' => 216,
-  '𝅲' => 216,
-  '𝅻' => 220,
-  '𝅼' => 220,
-  '𝅽' => 220,
-  '𝅾' => 220,
-  '𝅿' => 220,
-  '𝆀' => 220,
-  '𝆁' => 220,
-  '𝆂' => 220,
-  '𝆅' => 230,
-  '𝆆' => 230,
-  '𝆇' => 230,
-  '𝆈' => 230,
-  '𝆉' => 230,
-  '𝆊' => 220,
-  '𝆋' => 220,
-  '𝆪' => 230,
-  '𝆫' => 230,
-  '𝆬' => 230,
-  '𝆭' => 230,
-  '𝉂' => 230,
-  '𝉃' => 230,
-  '𝉄' => 230,
-  '𞀀' => 230,
-  '𞀁' => 230,
-  '𞀂' => 230,
-  '𞀃' => 230,
-  '𞀄' => 230,
-  '𞀅' => 230,
-  '𞀆' => 230,
-  '𞀈' => 230,
-  '𞀉' => 230,
-  '𞀊' => 230,
-  '𞀋' => 230,
-  '𞀌' => 230,
-  '𞀍' => 230,
-  '𞀎' => 230,
-  '𞀏' => 230,
-  '𞀐' => 230,
-  '𞀑' => 230,
-  '𞀒' => 230,
-  '𞀓' => 230,
-  '𞀔' => 230,
-  '𞀕' => 230,
-  '𞀖' => 230,
-  '𞀗' => 230,
-  '𞀘' => 230,
-  '𞀛' => 230,
-  '𞀜' => 230,
-  '𞀝' => 230,
-  '𞀞' => 230,
-  '𞀟' => 230,
-  '𞀠' => 230,
-  '𞀡' => 230,
-  '𞀣' => 230,
-  '𞀤' => 230,
-  '𞀦' => 230,
-  '𞀧' => 230,
-  '𞀨' => 230,
-  '𞀩' => 230,
-  '𞀪' => 230,
-  'ðž„°' => 230,
-  '𞄱' => 230,
-  '𞄲' => 230,
-  '𞄳' => 230,
-  'ðž„´' => 230,
-  '𞄵' => 230,
-  'ðž„¶' => 230,
-  '𞋬' => 230,
-  'ðž‹­' => 230,
-  'ðž‹®' => 230,
-  '𞋯' => 230,
-  '𞣐' => 220,
-  '𞣑' => 220,
-  '𞣒' => 220,
-  '𞣓' => 220,
-  '𞣔' => 220,
-  '𞣕' => 220,
-  '𞣖' => 220,
-  '𞥄' => 230,
-  '𞥅' => 230,
-  '𞥆' => 230,
-  '𞥇' => 230,
-  '𞥈' => 230,
-  '𞥉' => 230,
-  '𞥊' => 7,
-);
diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php b/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php
deleted file mode 100644
index 1574902893cc426f0993da8ac3918a90430eb3a7..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php
+++ /dev/null
@@ -1,3695 +0,0 @@
-<?php
-
-return array (
-  ' ' => ' ',
-  '¨' => ' ̈',
-  'ª' => 'a',
-  '¯' => ' ̄',
-  '²' => '2',
-  '³' => '3',
-  '´' => ' ́',
-  'µ' => 'μ',
-  '¸' => ' ̧',
-  '¹' => '1',
-  'º' => 'o',
-  '¼' => '1⁄4',
-  '½' => '1⁄2',
-  '¾' => '3⁄4',
-  'IJ' => 'IJ',
-  'ij' => 'ij',
-  'Ŀ' => 'L·',
-  'ŀ' => 'l·',
-  'ʼn' => 'ʼn',
-  'Å¿' => 's',
-  'DŽ' => 'DŽ',
-  'Dž' => 'Dž',
-  'dž' => 'dž',
-  'LJ' => 'LJ',
-  'Lj' => 'Lj',
-  'lj' => 'lj',
-  'ÇŠ' => 'NJ',
-  'Ç‹' => 'Nj',
-  'nj' => 'nj',
-  'DZ' => 'DZ',
-  'Dz' => 'Dz',
-  'dz' => 'dz',
-  'ʰ' => 'h',
-  'ʱ' => 'ɦ',
-  'ʲ' => 'j',
-  'ʳ' => 'r',
-  'ʴ' => 'ɹ',
-  'ʵ' => 'ɻ',
-  'ʶ' => 'ʁ',
-  'Ê·' => 'w',
-  'ʸ' => 'y',
-  '˘' => ' ̆',
-  '˙' => ' ̇',
-  'Ëš' => ' ÌŠ',
-  '˛' => ' ̨',
-  '˜' => ' ̃',
-  '˝' => ' ̋',
-  'Ë ' => 'É£',
-  'Ë¡' => 'l',
-  'Ë¢' => 's',
-  'Ë£' => 'x',
-  'ˤ' => 'ʕ',
-  'ͺ' => ' ͅ',
-  '΄' => ' ́',
-  '΅' => ' ̈́',
-  'ϐ' => 'β',
-  'ϑ' => 'θ',
-  'Ï’' => 'Î¥',
-  'ϓ' => 'Ύ',
-  'ϔ' => 'Ϋ',
-  'ϕ' => 'φ',
-  'Ï–' => 'Ï€',
-  'ϰ' => 'κ',
-  'ϱ' => 'ρ',
-  'ϲ' => 'ς',
-  'ϴ' => 'Θ',
-  'ϵ' => 'ε',
-  'Ϲ' => 'Σ',
-  'Ö‡' => 'Õ¥Ö‚',
-  'ٵ' => 'اٴ',
-  'ٶ' => 'وٴ',
-  'Ù·' => 'Û‡Ù´',
-  'ٸ' => 'يٴ',
-  'ำ' => 'ํา',
-  'ຳ' => 'ໍາ',
-  'ໜ' => 'ຫນ',
-  'ໝ' => 'ຫມ',
-  '༌' => '་',
-  'ཷ' => 'ྲཱྀ',
-  'ཹ' => 'ླཱྀ',
-  'ჼ' => 'ნ',
-  'á´¬' => 'A',
-  'ᴭ' => 'Æ',
-  'á´®' => 'B',
-  'á´°' => 'D',
-  'á´±' => 'E',
-  'á´²' => 'ÆŽ',
-  'á´³' => 'G',
-  'á´´' => 'H',
-  'á´µ' => 'I',
-  'á´¶' => 'J',
-  'á´·' => 'K',
-  'á´¸' => 'L',
-  'á´¹' => 'M',
-  'á´º' => 'N',
-  'á´¼' => 'O',
-  'á´½' => 'È¢',
-  'á´¾' => 'P',
-  'á´¿' => 'R',
-  'áµ€' => 'T',
-  'ᵁ' => 'U',
-  'ᵂ' => 'W',
-  'ᵃ' => 'a',
-  'ᵄ' => 'ɐ',
-  'áµ…' => 'É‘',
-  'ᵆ' => 'ᴂ',
-  'ᵇ' => 'b',
-  'ᵈ' => 'd',
-  'ᵉ' => 'e',
-  'ᵊ' => 'ə',
-  'ᵋ' => 'ɛ',
-  'ᵌ' => 'ɜ',
-  'ᵍ' => 'g',
-  'ᵏ' => 'k',
-  'ᵐ' => 'm',
-  'ᵑ' => 'ŋ',
-  'áµ’' => 'o',
-  'ᵓ' => 'ɔ',
-  'áµ”' => 'á´–',
-  'ᵕ' => 'ᴗ',
-  'áµ–' => 'p',
-  'áµ—' => 't',
-  'ᵘ' => 'u',
-  'ᵙ' => 'ᴝ',
-  'ᵚ' => 'ɯ',
-  'áµ›' => 'v',
-  'ᵜ' => 'ᴥ',
-  'ᵝ' => 'β',
-  'ᵞ' => 'γ',
-  'ᵟ' => 'δ',
-  'ᵠ' => 'φ',
-  'ᵡ' => 'χ',
-  'áµ¢' => 'i',
-  'áµ£' => 'r',
-  'ᵤ' => 'u',
-  'áµ¥' => 'v',
-  'ᵦ' => 'β',
-  'ᵧ' => 'γ',
-  'ᵨ' => 'ρ',
-  'ᵩ' => 'φ',
-  'ᵪ' => 'χ',
-  'ᵸ' => 'н',
-  'á¶›' => 'É’',
-  'ᶜ' => 'c',
-  'ᶝ' => 'ɕ',
-  'ᶞ' => 'ð',
-  'ᶟ' => 'ɜ',
-  'á¶ ' => 'f',
-  'á¶¡' => 'ÉŸ',
-  'á¶¢' => 'É¡',
-  'á¶£' => 'É¥',
-  'ᶤ' => 'ɨ',
-  'á¶¥' => 'É©',
-  'ᶦ' => 'ɪ',
-  'á¶§' => 'áµ»',
-  'ᶨ' => 'ʝ',
-  'á¶©' => 'É­',
-  'ᶪ' => 'ᶅ',
-  'á¶«' => 'ÊŸ',
-  'ᶬ' => 'ɱ',
-  'ᶭ' => 'ɰ',
-  'ᶮ' => 'ɲ',
-  'ᶯ' => 'ɳ',
-  'á¶°' => 'É´',
-  'ᶱ' => 'ɵ',
-  'ᶲ' => 'ɸ',
-  'á¶³' => 'Ê‚',
-  'ᶴ' => 'ʃ',
-  'á¶µ' => 'Æ«',
-  'ᶶ' => 'ʉ',
-  'á¶·' => 'ÊŠ',
-  'ᶸ' => 'ᴜ',
-  'á¶¹' => 'Ê‹',
-  'ᶺ' => 'ʌ',
-  'á¶»' => 'z',
-  'ᶼ' => 'ʐ',
-  'á¶½' => 'Ê‘',
-  'á¶¾' => 'Ê’',
-  'ᶿ' => 'θ',
-  'ẚ' => 'aʾ',
-  'ẛ' => 'ṡ',
-  'á¾½' => ' Ì“',
-  '᾿' => ' ̓',
-  'á¿€' => ' Í‚',
-  '῁' => ' ̈͂',
-  '῍' => ' ̓̀',
-  '῎' => ' ̓́',
-  '῏' => ' ̓͂',
-  '῝' => ' ̔̀',
-  '῞' => ' ̔́',
-  '῟' => ' ̔͂',
-  '῭' => ' ̈̀',
-  '΅' => ' ̈́',
-  '´' => ' ́',
-  '῾' => ' ̔',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  '‑' => '‐',
-  '‗' => ' ̳',
-  '․' => '.',
-  '‥' => '..',
-  '…' => '...',
-  ' ' => ' ',
-  '″' => '′′',
-  '‴' => '′′′',
-  '‶' => '‵‵',
-  '‷' => '‵‵‵',
-  '‼' => '!!',
-  '‾' => ' ̅',
-  '⁇' => '??',
-  '⁈' => '?!',
-  '⁉' => '!?',
-  '⁗' => '′′′′',
-  ' ' => ' ',
-  '⁰' => '0',
-  'ⁱ' => 'i',
-  '⁴' => '4',
-  '⁵' => '5',
-  '⁶' => '6',
-  '⁷' => '7',
-  '⁸' => '8',
-  '⁹' => '9',
-  '⁺' => '+',
-  '⁻' => '−',
-  '⁼' => '=',
-  '⁽' => '(',
-  '⁾' => ')',
-  'ⁿ' => 'n',
-  'â‚€' => '0',
-  '₁' => '1',
-  'â‚‚' => '2',
-  '₃' => '3',
-  'â‚„' => '4',
-  'â‚…' => '5',
-  '₆' => '6',
-  '₇' => '7',
-  '₈' => '8',
-  '₉' => '9',
-  '₊' => '+',
-  '₋' => '−',
-  '₌' => '=',
-  '₍' => '(',
-  '₎' => ')',
-  'ₐ' => 'a',
-  'â‚‘' => 'e',
-  'â‚’' => 'o',
-  'â‚“' => 'x',
-  'â‚”' => 'É™',
-  'â‚•' => 'h',
-  'â‚–' => 'k',
-  'â‚—' => 'l',
-  'ₘ' => 'm',
-  'â‚™' => 'n',
-  'ₚ' => 'p',
-  'â‚›' => 's',
-  'ₜ' => 't',
-  '₨' => 'Rs',
-  'â„€' => 'a/c',
-  '℁' => 'a/s',
-  'â„‚' => 'C',
-  '℃' => '°C',
-  'â„…' => 'c/o',
-  '℆' => 'c/u',
-  'ℇ' => 'Ɛ',
-  '℉' => '°F',
-  'ℊ' => 'g',
-  'â„‹' => 'H',
-  'ℌ' => 'H',
-  'ℍ' => 'H',
-  'ℎ' => 'h',
-  'ℏ' => 'ħ',
-  'ℐ' => 'I',
-  'â„‘' => 'I',
-  'â„’' => 'L',
-  'â„“' => 'l',
-  'â„•' => 'N',
-  'â„–' => 'No',
-  'â„™' => 'P',
-  'ℚ' => 'Q',
-  'â„›' => 'R',
-  'ℜ' => 'R',
-  'ℝ' => 'R',
-  'â„ ' => 'SM',
-  'â„¡' => 'TEL',
-  'â„¢' => 'TM',
-  'ℤ' => 'Z',
-  'ℨ' => 'Z',
-  'ℬ' => 'B',
-  'â„­' => 'C',
-  'ℯ' => 'e',
-  'â„°' => 'E',
-  'ℱ' => 'F',
-  'ℳ' => 'M',
-  'â„´' => 'o',
-  'ℵ' => 'א',
-  'ℶ' => 'ב',
-  'â„·' => '×’',
-  'ℸ' => 'ד',
-  'ℹ' => 'i',
-  'â„»' => 'FAX',
-  'ℼ' => 'π',
-  'ℽ' => 'γ',
-  'ℾ' => 'Γ',
-  'ℿ' => 'Π',
-  '⅀' => '∑',
-  'â……' => 'D',
-  'â…†' => 'd',
-  'â…‡' => 'e',
-  'â…ˆ' => 'i',
-  'â…‰' => 'j',
-  '⅐' => '1⁄7',
-  '⅑' => '1⁄9',
-  '⅒' => '1⁄10',
-  '⅓' => '1⁄3',
-  '⅔' => '2⁄3',
-  '⅕' => '1⁄5',
-  '⅖' => '2⁄5',
-  '⅗' => '3⁄5',
-  '⅘' => '4⁄5',
-  '⅙' => '1⁄6',
-  '⅚' => '5⁄6',
-  '⅛' => '1⁄8',
-  '⅜' => '3⁄8',
-  '⅝' => '5⁄8',
-  '⅞' => '7⁄8',
-  '⅟' => '1⁄',
-  'â… ' => 'I',
-  'â…¡' => 'II',
-  'â…¢' => 'III',
-  'â…£' => 'IV',
-  'â…¤' => 'V',
-  'â…¥' => 'VI',
-  'â…¦' => 'VII',
-  'â…§' => 'VIII',
-  'â…¨' => 'IX',
-  'â…©' => 'X',
-  'â…ª' => 'XI',
-  'â…«' => 'XII',
-  'â…¬' => 'L',
-  'â…­' => 'C',
-  'â…®' => 'D',
-  'â…¯' => 'M',
-  'â…°' => 'i',
-  'â…±' => 'ii',
-  'â…²' => 'iii',
-  'â…³' => 'iv',
-  'â…´' => 'v',
-  'â…µ' => 'vi',
-  'â…¶' => 'vii',
-  'â…·' => 'viii',
-  'â…¸' => 'ix',
-  'â…¹' => 'x',
-  'â…º' => 'xi',
-  'â…»' => 'xii',
-  'â…¼' => 'l',
-  'â…½' => 'c',
-  'â…¾' => 'd',
-  'â…¿' => 'm',
-  '↉' => '0⁄3',
-  '∬' => '∫∫',
-  '∭' => '∫∫∫',
-  '∯' => '∮∮',
-  '∰' => '∮∮∮',
-  'â‘ ' => '1',
-  'â‘¡' => '2',
-  'â‘¢' => '3',
-  'â‘£' => '4',
-  '⑤' => '5',
-  'â‘¥' => '6',
-  '⑦' => '7',
-  'â‘§' => '8',
-  '⑨' => '9',
-  'â‘©' => '10',
-  '⑪' => '11',
-  'â‘«' => '12',
-  '⑬' => '13',
-  'â‘­' => '14',
-  'â‘®' => '15',
-  '⑯' => '16',
-  'â‘°' => '17',
-  '⑱' => '18',
-  '⑲' => '19',
-  '⑳' => '20',
-  'â‘´' => '(1)',
-  '⑵' => '(2)',
-  'â‘¶' => '(3)',
-  'â‘·' => '(4)',
-  '⑸' => '(5)',
-  '⑹' => '(6)',
-  '⑺' => '(7)',
-  'â‘»' => '(8)',
-  '⑼' => '(9)',
-  '⑽' => '(10)',
-  '⑾' => '(11)',
-  'â‘¿' => '(12)',
-  'â’€' => '(13)',
-  '⒁' => '(14)',
-  'â’‚' => '(15)',
-  'â’ƒ' => '(16)',
-  'â’„' => '(17)',
-  'â’…' => '(18)',
-  'â’†' => '(19)',
-  'â’‡' => '(20)',
-  'â’ˆ' => '1.',
-  'â’‰' => '2.',
-  'â’Š' => '3.',
-  'â’‹' => '4.',
-  '⒌' => '5.',
-  '⒍' => '6.',
-  'â’Ž' => '7.',
-  '⒏' => '8.',
-  '⒐' => '9.',
-  'â’‘' => '10.',
-  'â’’' => '11.',
-  'â’“' => '12.',
-  'â’”' => '13.',
-  'â’•' => '14.',
-  'â’–' => '15.',
-  'â’—' => '16.',
-  'â’˜' => '17.',
-  'â’™' => '18.',
-  'â’š' => '19.',
-  'â’›' => '20.',
-  '⒜' => '(a)',
-  '⒝' => '(b)',
-  'â’ž' => '(c)',
-  'â’Ÿ' => '(d)',
-  'â’ ' => '(e)',
-  'â’¡' => '(f)',
-  'â’¢' => '(g)',
-  'â’£' => '(h)',
-  'â’¤' => '(i)',
-  'â’¥' => '(j)',
-  'â’¦' => '(k)',
-  'â’§' => '(l)',
-  'â’¨' => '(m)',
-  'â’©' => '(n)',
-  'â’ª' => '(o)',
-  'â’«' => '(p)',
-  'â’¬' => '(q)',
-  'â’­' => '(r)',
-  'â’®' => '(s)',
-  'â’¯' => '(t)',
-  'â’°' => '(u)',
-  'â’±' => '(v)',
-  'â’²' => '(w)',
-  'â’³' => '(x)',
-  'â’´' => '(y)',
-  'â’µ' => '(z)',
-  'â’¶' => 'A',
-  'â’·' => 'B',
-  'â’¸' => 'C',
-  'â’¹' => 'D',
-  'â’º' => 'E',
-  'â’»' => 'F',
-  'â’¼' => 'G',
-  'â’½' => 'H',
-  'â’¾' => 'I',
-  'â’¿' => 'J',
-  'â“€' => 'K',
-  'Ⓛ' => 'L',
-  'â“‚' => 'M',
-  'Ⓝ' => 'N',
-  'â“„' => 'O',
-  'â“…' => 'P',
-  'Ⓠ' => 'Q',
-  'Ⓡ' => 'R',
-  'Ⓢ' => 'S',
-  'Ⓣ' => 'T',
-  'Ⓤ' => 'U',
-  'â“‹' => 'V',
-  'Ⓦ' => 'W',
-  'Ⓧ' => 'X',
-  'Ⓨ' => 'Y',
-  'Ⓩ' => 'Z',
-  'ⓐ' => 'a',
-  'â“‘' => 'b',
-  'â“’' => 'c',
-  'â““' => 'd',
-  'â“”' => 'e',
-  'â“•' => 'f',
-  'â“–' => 'g',
-  'â“—' => 'h',
-  'ⓘ' => 'i',
-  'â“™' => 'j',
-  'ⓚ' => 'k',
-  'â“›' => 'l',
-  'ⓜ' => 'm',
-  'ⓝ' => 'n',
-  'ⓞ' => 'o',
-  'ⓟ' => 'p',
-  'â“ ' => 'q',
-  'â“¡' => 'r',
-  'â“¢' => 's',
-  'â“£' => 't',
-  'ⓤ' => 'u',
-  'â“¥' => 'v',
-  'ⓦ' => 'w',
-  'â“§' => 'x',
-  'ⓨ' => 'y',
-  'â“©' => 'z',
-  '⓪' => '0',
-  '⨌' => '∫∫∫∫',
-  'â©´' => '::=',
-  '⩵' => '==',
-  'â©¶' => '===',
-  'â±¼' => 'j',
-  'â±½' => 'V',
-  'ⵯ' => 'ⵡ',
-  '⺟' => '母',
-  '⻳' => '龟',
-  '⼀' => '一',
-  '⼁' => '丨',
-  '⼂' => '丶',
-  '⼃' => '丿',
-  '⼄' => '乙',
-  '⼅' => '亅',
-  '⼆' => '二',
-  '⼇' => '亠',
-  '⼈' => '人',
-  '⼉' => '儿',
-  '⼊' => '入',
-  '⼋' => '八',
-  '⼌' => '冂',
-  '⼍' => '冖',
-  '⼎' => '冫',
-  '⼏' => '几',
-  '⼐' => '凵',
-  '⼑' => '刀',
-  '⼒' => '力',
-  '⼓' => '勹',
-  '⼔' => '匕',
-  '⼕' => '匚',
-  '⼖' => '匸',
-  '⼗' => '十',
-  '⼘' => '卜',
-  '⼙' => '卩',
-  '⼚' => '厂',
-  '⼛' => '厶',
-  '⼜' => '又',
-  '⼝' => '口',
-  '⼞' => '囗',
-  '⼟' => '土',
-  '⼠' => '士',
-  '⼡' => '夂',
-  '⼢' => '夊',
-  '⼣' => '夕',
-  '⼤' => '大',
-  '⼥' => '女',
-  '⼦' => '子',
-  '⼧' => '宀',
-  '⼨' => '寸',
-  '⼩' => '小',
-  '⼪' => '尢',
-  '⼫' => '尸',
-  '⼬' => '屮',
-  'â¼­' => 'å±±',
-  'â¼®' => 'å·›',
-  '⼯' => '工',
-  'â¼°' => 'å·±',
-  'â¼±' => 'å·¾',
-  'â¼²' => 'å¹²',
-  '⼳' => '幺',
-  '⼴' => '广',
-  'â¼µ' => 'å»´',
-  '⼶' => '廾',
-  '⼷' => '弋',
-  '⼸' => '弓',
-  '⼹' => '彐',
-  '⼺' => '彡',
-  'â¼»' => 'å½³',
-  '⼼' => '心',
-  '⼽' => '戈',
-  '⼾' => '戶',
-  '⼿' => '手',
-  '⽀' => '支',
-  '⽁' => '攴',
-  '⽂' => '文',
-  '⽃' => '斗',
-  '⽄' => '斤',
-  'â½…' => 'æ–¹',
-  '⽆' => '无',
-  '⽇' => '日',
-  '⽈' => '曰',
-  '⽉' => '月',
-  '⽊' => '木',
-  '⽋' => '欠',
-  '⽌' => '止',
-  '⽍' => '歹',
-  '⽎' => '殳',
-  '⽏' => '毋',
-  '⽐' => '比',
-  '⽑' => '毛',
-  '⽒' => '氏',
-  '⽓' => '气',
-  'â½”' => 'æ°´',
-  '⽕' => '火',
-  '⽖' => '爪',
-  '⽗' => '父',
-  '⽘' => '爻',
-  '⽙' => '爿',
-  '⽚' => '片',
-  '⽛' => '牙',
-  '⽜' => '牛',
-  '⽝' => '犬',
-  '⽞' => '玄',
-  '⽟' => '玉',
-  '⽠' => '瓜',
-  '⽡' => '瓦',
-  '⽢' => '甘',
-  '⽣' => '生',
-  '⽤' => '用',
-  'â½¥' => 'ç”°',
-  '⽦' => '疋',
-  'â½§' => 'ç–’',
-  '⽨' => '癶',
-  '⽩' => '白',
-  '⽪' => '皮',
-  '⽫' => '皿',
-  '⽬' => '目',
-  '⽭' => '矛',
-  '⽮' => '矢',
-  '⽯' => '石',
-  '⽰' => '示',
-  '⽱' => '禸',
-  '⽲' => '禾',
-  'â½³' => 'ç©´',
-  'â½´' => 'ç«‹',
-  '⽵' => '竹',
-  'â½¶' => 'ç±³',
-  '⽷' => '糸',
-  '⽸' => '缶',
-  '⽹' => '网',
-  '⽺' => '羊',
-  'â½»' => 'ç¾½',
-  '⽼' => '老',
-  '⽽' => '而',
-  '⽾' => '耒',
-  '⽿' => '耳',
-  '⾀' => '聿',
-  '⾁' => '肉',
-  '⾂' => '臣',
-  '⾃' => '自',
-  '⾄' => '至',
-  '⾅' => '臼',
-  '⾆' => '舌',
-  '⾇' => '舛',
-  '⾈' => '舟',
-  '⾉' => '艮',
-  '⾊' => '色',
-  '⾋' => '艸',
-  '⾌' => '虍',
-  '⾍' => '虫',
-  '⾎' => '血',
-  '⾏' => '行',
-  '⾐' => '衣',
-  '⾑' => '襾',
-  '⾒' => '見',
-  '⾓' => '角',
-  '⾔' => '言',
-  '⾕' => '谷',
-  '⾖' => '豆',
-  '⾗' => '豕',
-  '⾘' => '豸',
-  '⾙' => '貝',
-  '⾚' => '赤',
-  'â¾›' => 'èµ°',
-  '⾜' => '足',
-  '⾝' => '身',
-  '⾞' => '車',
-  '⾟' => '辛',
-  'â¾ ' => 'è¾°',
-  '⾡' => '辵',
-  'â¾¢' => 'é‚‘',
-  'â¾£' => 'é…‰',
-  '⾤' => '釆',
-  '⾥' => '里',
-  '⾦' => '金',
-  'â¾§' => 'é•·',
-  '⾨' => '門',
-  '⾩' => '阜',
-  '⾪' => '隶',
-  '⾫' => '隹',
-  '⾬' => '雨',
-  '⾭' => '靑',
-  '⾮' => '非',
-  '⾯' => '面',
-  '⾰' => '革',
-  '⾱' => '韋',
-  '⾲' => '韭',
-  '⾳' => '音',
-  '⾴' => '頁',
-  '⾵' => '風',
-  '⾶' => '飛',
-  '⾷' => '食',
-  '⾸' => '首',
-  '⾹' => '香',
-  '⾺' => '馬',
-  '⾻' => '骨',
-  '⾼' => '高',
-  '⾽' => '髟',
-  '⾾' => '鬥',
-  '⾿' => '鬯',
-  '⿀' => '鬲',
-  '⿁' => '鬼',
-  'â¿‚' => 'é­š',
-  '⿃' => '鳥',
-  'â¿„' => 'é¹µ',
-  '⿅' => '鹿',
-  '⿆' => '麥',
-  '⿇' => '麻',
-  '⿈' => '黃',
-  '⿉' => '黍',
-  '⿊' => '黑',
-  '⿋' => '黹',
-  '⿌' => '黽',
-  '⿍' => '鼎',
-  '⿎' => '鼓',
-  '⿏' => '鼠',
-  '⿐' => '鼻',
-  '⿑' => '齊',
-  'â¿’' => 'é½’',
-  '⿓' => '龍',
-  '⿔' => '龜',
-  'â¿•' => 'é¾ ',
-  ' ' => ' ',
-  '〶' => '〒',
-  '〸' => '十',
-  '〹' => '卄',
-  '〺' => '卅',
-  'ã‚›' => ' ã‚™',
-  '゜' => ' ゚',
-  'ゟ' => 'より',
-  'ヿ' => 'コト',
-  'ㄱ' => 'ᄀ',
-  'ㄲ' => 'ᄁ',
-  'ㄳ' => 'ᆪ',
-  'ã„´' => 'á„‚',
-  'ㄵ' => 'ᆬ',
-  'ㄶ' => 'ᆭ',
-  'ㄷ' => 'ᄃ',
-  'ㄸ' => 'ᄄ',
-  'ㄹ' => 'ᄅ',
-  'ㄺ' => 'ᆰ',
-  'ㄻ' => 'ᆱ',
-  'ㄼ' => 'ᆲ',
-  'ㄽ' => 'ᆳ',
-  'ㄾ' => 'ᆴ',
-  'ㄿ' => 'ᆵ',
-  'ㅀ' => 'ᄚ',
-  'ㅁ' => 'ᄆ',
-  'ㅂ' => 'ᄇ',
-  'ㅃ' => 'ᄈ',
-  'ã…„' => 'á„¡',
-  'ㅅ' => 'ᄉ',
-  'ㅆ' => 'ᄊ',
-  'ã…‡' => 'á„‹',
-  'ㅈ' => 'ᄌ',
-  'ㅉ' => 'ᄍ',
-  'ㅊ' => 'ᄎ',
-  'ㅋ' => 'ᄏ',
-  'ㅌ' => 'ᄐ',
-  'ㅍ' => 'ᄑ',
-  'ã…Ž' => 'á„’',
-  'ㅏ' => 'ᅡ',
-  'ㅐ' => 'ᅢ',
-  'ã…‘' => 'á…£',
-  'ã…’' => 'á…¤',
-  'ã…“' => 'á…¥',
-  'ã…”' => 'á…¦',
-  'ã…•' => 'á…§',
-  'ã…–' => 'á…¨',
-  'ã…—' => 'á…©',
-  'ã…˜' => 'á…ª',
-  'ã…™' => 'á…«',
-  'ã…š' => 'á…¬',
-  'ã…›' => 'á…­',
-  'ㅜ' => 'ᅮ',
-  'ㅝ' => 'ᅯ',
-  'ã…ž' => 'á…°',
-  'ã…Ÿ' => 'á…±',
-  'ã… ' => 'á…²',
-  'ã…¡' => 'á…³',
-  'ã…¢' => 'á…´',
-  'ã…£' => 'á…µ',
-  'ã…¤' => 'á… ',
-  'ã…¥' => 'á„”',
-  'ã…¦' => 'á„•',
-  'ㅧ' => 'ᇇ',
-  'ㅨ' => 'ᇈ',
-  'ㅩ' => 'ᇌ',
-  'ㅪ' => 'ᇎ',
-  'ㅫ' => 'ᇓ',
-  'ㅬ' => 'ᇗ',
-  'ㅭ' => 'ᇙ',
-  'ㅮ' => 'ᄜ',
-  'ㅯ' => 'ᇝ',
-  'ㅰ' => 'ᇟ',
-  'ㅱ' => 'ᄝ',
-  'ㅲ' => 'ᄞ',
-  'ã…³' => 'á„ ',
-  'ã…´' => 'á„¢',
-  'ã…µ' => 'á„£',
-  'ã…¶' => 'á„§',
-  'ã…·' => 'á„©',
-  'ã…¸' => 'á„«',
-  'ㅹ' => 'ᄬ',
-  'ã…º' => 'á„­',
-  'ã…»' => 'á„®',
-  'ㅼ' => 'ᄯ',
-  'ㅽ' => 'ᄲ',
-  'ã…¾' => 'á„¶',
-  'ã…¿' => 'á…€',
-  'ㆀ' => 'ᅇ',
-  'ㆁ' => 'ᅌ',
-  'ㆂ' => 'ᇱ',
-  'ㆃ' => 'ᇲ',
-  'ㆄ' => 'ᅗ',
-  'ㆅ' => 'ᅘ',
-  'ㆆ' => 'ᅙ',
-  'ㆇ' => 'ᆄ',
-  'ㆈ' => 'ᆅ',
-  'ㆉ' => 'ᆈ',
-  'ㆊ' => 'ᆑ',
-  'ㆋ' => 'ᆒ',
-  'ㆌ' => 'ᆔ',
-  'ㆍ' => 'ᆞ',
-  'ㆎ' => 'ᆡ',
-  '㆒' => '一',
-  '㆓' => '二',
-  '㆔' => '三',
-  '㆕' => '四',
-  '㆖' => '上',
-  '㆗' => '中',
-  '㆘' => '下',
-  '㆙' => '甲',
-  '㆚' => '乙',
-  '㆛' => '丙',
-  '㆜' => '丁',
-  '㆝' => '天',
-  '㆞' => '地',
-  '㆟' => '人',
-  '㈀' => '(ᄀ)',
-  '㈁' => '(ᄂ)',
-  '㈂' => '(ᄃ)',
-  '㈃' => '(ᄅ)',
-  '㈄' => '(ᄆ)',
-  '㈅' => '(ᄇ)',
-  '㈆' => '(ᄉ)',
-  '㈇' => '(ᄋ)',
-  '㈈' => '(ᄌ)',
-  '㈉' => '(ᄎ)',
-  '㈊' => '(ᄏ)',
-  '㈋' => '(ᄐ)',
-  '㈌' => '(ᄑ)',
-  '㈍' => '(ᄒ)',
-  '㈎' => '(가)',
-  '㈏' => '(나)',
-  '㈐' => '(다)',
-  '㈑' => '(라)',
-  '㈒' => '(마)',
-  '㈓' => '(바)',
-  '㈔' => '(사)',
-  '㈕' => '(아)',
-  '㈖' => '(자)',
-  '㈗' => '(차)',
-  '㈘' => '(카)',
-  '㈙' => '(타)',
-  '㈚' => '(파)',
-  '㈛' => '(하)',
-  '㈜' => '(주)',
-  '㈝' => '(오전)',
-  '㈞' => '(오후)',
-  '㈠' => '(一)',
-  '㈡' => '(二)',
-  '㈢' => '(三)',
-  '㈣' => '(四)',
-  '㈤' => '(五)',
-  '㈥' => '(六)',
-  '㈦' => '(七)',
-  '㈧' => '(八)',
-  '㈨' => '(九)',
-  '㈩' => '(十)',
-  '㈪' => '(月)',
-  '㈫' => '(火)',
-  '㈬' => '(水)',
-  '㈭' => '(木)',
-  '㈮' => '(金)',
-  '㈯' => '(土)',
-  '㈰' => '(日)',
-  '㈱' => '(株)',
-  '㈲' => '(有)',
-  '㈳' => '(社)',
-  '㈴' => '(名)',
-  '㈵' => '(特)',
-  '㈶' => '(財)',
-  '㈷' => '(祝)',
-  '㈸' => '(労)',
-  '㈹' => '(代)',
-  '㈺' => '(呼)',
-  '㈻' => '(学)',
-  '㈼' => '(監)',
-  '㈽' => '(企)',
-  '㈾' => '(資)',
-  '㈿' => '(協)',
-  '㉀' => '(祭)',
-  '㉁' => '(休)',
-  '㉂' => '(自)',
-  '㉃' => '(至)',
-  '㉄' => '問',
-  '㉅' => '幼',
-  '㉆' => '文',
-  '㉇' => '箏',
-  '㉐' => 'PTE',
-  '㉑' => '21',
-  '㉒' => '22',
-  '㉓' => '23',
-  '㉔' => '24',
-  '㉕' => '25',
-  '㉖' => '26',
-  '㉗' => '27',
-  '㉘' => '28',
-  '㉙' => '29',
-  '㉚' => '30',
-  '㉛' => '31',
-  '㉜' => '32',
-  '㉝' => '33',
-  '㉞' => '34',
-  '㉟' => '35',
-  '㉠' => 'ᄀ',
-  '㉡' => 'ᄂ',
-  '㉢' => 'ᄃ',
-  '㉣' => 'ᄅ',
-  '㉤' => 'ᄆ',
-  '㉥' => 'ᄇ',
-  '㉦' => 'ᄉ',
-  '㉧' => 'ᄋ',
-  '㉨' => 'ᄌ',
-  '㉩' => 'ᄎ',
-  '㉪' => 'ᄏ',
-  '㉫' => 'ᄐ',
-  '㉬' => 'ᄑ',
-  '㉭' => 'ᄒ',
-  '㉮' => '가',
-  '㉯' => '나',
-  '㉰' => '다',
-  '㉱' => '라',
-  '㉲' => '마',
-  '㉳' => '바',
-  '㉴' => '사',
-  '㉵' => '아',
-  '㉶' => '자',
-  '㉷' => '차',
-  '㉸' => '카',
-  '㉹' => '타',
-  '㉺' => '파',
-  '㉻' => '하',
-  '㉼' => '참고',
-  '㉽' => '주의',
-  '㉾' => '우',
-  '㊀' => '一',
-  '㊁' => '二',
-  '㊂' => '三',
-  '㊃' => '四',
-  '㊄' => '五',
-  '㊅' => '六',
-  '㊆' => '七',
-  '㊇' => '八',
-  '㊈' => '九',
-  '㊉' => '十',
-  '㊊' => '月',
-  '㊋' => '火',
-  '㊌' => '水',
-  '㊍' => '木',
-  '㊎' => '金',
-  '㊏' => '土',
-  '㊐' => '日',
-  '㊑' => '株',
-  '㊒' => '有',
-  '㊓' => '社',
-  '㊔' => '名',
-  '㊕' => '特',
-  '㊖' => '財',
-  '㊗' => '祝',
-  '㊘' => '労',
-  '㊙' => '秘',
-  '㊚' => '男',
-  '㊛' => '女',
-  '㊜' => '適',
-  '㊝' => '優',
-  '㊞' => '印',
-  '㊟' => '注',
-  '㊠' => '項',
-  '㊡' => '休',
-  '㊢' => '写',
-  '㊣' => '正',
-  '㊤' => '上',
-  '㊥' => '中',
-  '㊦' => '下',
-  '㊧' => '左',
-  '㊨' => '右',
-  '㊩' => '医',
-  '㊪' => '宗',
-  '㊫' => '学',
-  '㊬' => '監',
-  '㊭' => '企',
-  '㊮' => '資',
-  '㊯' => '協',
-  '㊰' => '夜',
-  '㊱' => '36',
-  '㊲' => '37',
-  '㊳' => '38',
-  '㊴' => '39',
-  '㊵' => '40',
-  '㊶' => '41',
-  '㊷' => '42',
-  '㊸' => '43',
-  '㊹' => '44',
-  '㊺' => '45',
-  '㊻' => '46',
-  '㊼' => '47',
-  '㊽' => '48',
-  '㊾' => '49',
-  '㊿' => '50',
-  '㋀' => '1月',
-  '㋁' => '2月',
-  '㋂' => '3月',
-  '㋃' => '4月',
-  '㋄' => '5月',
-  '㋅' => '6月',
-  '㋆' => '7月',
-  '㋇' => '8月',
-  '㋈' => '9月',
-  '㋉' => '10月',
-  '㋊' => '11月',
-  '㋋' => '12月',
-  '㋌' => 'Hg',
-  '㋍' => 'erg',
-  '㋎' => 'eV',
-  '㋏' => 'LTD',
-  '㋐' => 'ア',
-  '㋑' => 'イ',
-  '㋒' => 'ウ',
-  '㋓' => 'エ',
-  '㋔' => 'オ',
-  'ã‹•' => 'ã‚«',
-  'ã‹–' => 'ã‚­',
-  '㋗' => 'ク',
-  '㋘' => 'ケ',
-  '㋙' => 'コ',
-  '㋚' => 'サ',
-  'ã‹›' => 'ã‚·',
-  '㋜' => 'ス',
-  '㋝' => 'セ',
-  '㋞' => 'ソ',
-  '㋟' => 'タ',
-  '㋠' => 'チ',
-  '㋡' => 'ツ',
-  '㋢' => 'テ',
-  '㋣' => 'ト',
-  '㋤' => 'ナ',
-  '㋥' => 'ニ',
-  '㋦' => 'ヌ',
-  '㋧' => 'ネ',
-  '㋨' => 'ノ',
-  '㋩' => 'ハ',
-  '㋪' => 'ヒ',
-  '㋫' => 'フ',
-  '㋬' => 'ヘ',
-  '㋭' => 'ホ',
-  '㋮' => 'マ',
-  '㋯' => 'ミ',
-  '㋰' => 'ム',
-  '㋱' => 'メ',
-  '㋲' => 'モ',
-  '㋳' => 'ヤ',
-  '㋴' => 'ユ',
-  '㋵' => 'ヨ',
-  '㋶' => 'ラ',
-  '㋷' => 'リ',
-  '㋸' => 'ル',
-  '㋹' => 'レ',
-  '㋺' => 'ロ',
-  '㋻' => 'ワ',
-  '㋼' => 'ヰ',
-  '㋽' => 'ヱ',
-  '㋾' => 'ヲ',
-  '㋿' => '令和',
-  '㌀' => 'アパート',
-  '㌁' => 'アルファ',
-  '㌂' => 'アンペア',
-  '㌃' => 'アール',
-  '㌄' => 'イニング',
-  '㌅' => 'インチ',
-  '㌆' => 'ウォン',
-  '㌇' => 'エスクード',
-  '㌈' => 'エーカー',
-  '㌉' => 'オンス',
-  '㌊' => 'オーム',
-  '㌋' => 'カイリ',
-  '㌌' => 'カラット',
-  '㌍' => 'カロリー',
-  '㌎' => 'ガロン',
-  '㌏' => 'ガンマ',
-  '㌐' => 'ギガ',
-  '㌑' => 'ギニー',
-  '㌒' => 'キュリー',
-  '㌓' => 'ギルダー',
-  '㌔' => 'キロ',
-  '㌕' => 'キログラム',
-  '㌖' => 'キロメートル',
-  '㌗' => 'キロワット',
-  '㌘' => 'グラム',
-  '㌙' => 'グラムトン',
-  '㌚' => 'クルゼイロ',
-  '㌛' => 'クローネ',
-  '㌜' => 'ケース',
-  '㌝' => 'コルナ',
-  '㌞' => 'コーポ',
-  '㌟' => 'サイクル',
-  '㌠' => 'サンチーム',
-  '㌡' => 'シリング',
-  '㌢' => 'センチ',
-  '㌣' => 'セント',
-  '㌤' => 'ダース',
-  '㌥' => 'デシ',
-  '㌦' => 'ドル',
-  '㌧' => 'トン',
-  '㌨' => 'ナノ',
-  '㌩' => 'ノット',
-  '㌪' => 'ハイツ',
-  '㌫' => 'パーセント',
-  '㌬' => 'パーツ',
-  '㌭' => 'バーレル',
-  '㌮' => 'ピアストル',
-  '㌯' => 'ピクル',
-  '㌰' => 'ピコ',
-  '㌱' => 'ビル',
-  '㌲' => 'ファラッド',
-  '㌳' => 'フィート',
-  '㌴' => 'ブッシェル',
-  '㌵' => 'フラン',
-  '㌶' => 'ヘクタール',
-  '㌷' => 'ペソ',
-  '㌸' => 'ペニヒ',
-  '㌹' => 'ヘルツ',
-  '㌺' => 'ペンス',
-  '㌻' => 'ページ',
-  '㌼' => 'ベータ',
-  '㌽' => 'ポイント',
-  '㌾' => 'ボルト',
-  '㌿' => 'ホン',
-  '㍀' => 'ポンド',
-  '㍁' => 'ホール',
-  '㍂' => 'ホーン',
-  '㍃' => 'マイクロ',
-  '㍄' => 'マイル',
-  '㍅' => 'マッハ',
-  '㍆' => 'マルク',
-  '㍇' => 'マンション',
-  '㍈' => 'ミクロン',
-  '㍉' => 'ミリ',
-  '㍊' => 'ミリバール',
-  '㍋' => 'メガ',
-  '㍌' => 'メガトン',
-  '㍍' => 'メートル',
-  '㍎' => 'ヤード',
-  '㍏' => 'ヤール',
-  '㍐' => 'ユアン',
-  '㍑' => 'リットル',
-  '㍒' => 'リラ',
-  '㍓' => 'ルピー',
-  '㍔' => 'ルーブル',
-  '㍕' => 'レム',
-  '㍖' => 'レントゲン',
-  '㍗' => 'ワット',
-  '㍘' => '0点',
-  '㍙' => '1点',
-  '㍚' => '2点',
-  '㍛' => '3点',
-  '㍜' => '4点',
-  '㍝' => '5点',
-  '㍞' => '6点',
-  '㍟' => '7点',
-  '㍠' => '8点',
-  '㍡' => '9点',
-  '㍢' => '10点',
-  '㍣' => '11点',
-  '㍤' => '12点',
-  '㍥' => '13点',
-  '㍦' => '14点',
-  '㍧' => '15点',
-  '㍨' => '16点',
-  '㍩' => '17点',
-  '㍪' => '18点',
-  '㍫' => '19点',
-  '㍬' => '20点',
-  '㍭' => '21点',
-  '㍮' => '22点',
-  '㍯' => '23点',
-  '㍰' => '24点',
-  '㍱' => 'hPa',
-  '㍲' => 'da',
-  '㍳' => 'AU',
-  '㍴' => 'bar',
-  '㍵' => 'oV',
-  '㍶' => 'pc',
-  '㍷' => 'dm',
-  '㍸' => 'dm2',
-  '㍹' => 'dm3',
-  '㍺' => 'IU',
-  '㍻' => '平成',
-  '㍼' => '昭和',
-  '㍽' => '大正',
-  '㍾' => '明治',
-  '㍿' => '株式会社',
-  '㎀' => 'pA',
-  '㎁' => 'nA',
-  '㎂' => 'μA',
-  '㎃' => 'mA',
-  '㎄' => 'kA',
-  '㎅' => 'KB',
-  '㎆' => 'MB',
-  '㎇' => 'GB',
-  '㎈' => 'cal',
-  '㎉' => 'kcal',
-  '㎊' => 'pF',
-  '㎋' => 'nF',
-  '㎌' => 'μF',
-  '㎍' => 'μg',
-  '㎎' => 'mg',
-  '㎏' => 'kg',
-  '㎐' => 'Hz',
-  '㎑' => 'kHz',
-  '㎒' => 'MHz',
-  '㎓' => 'GHz',
-  '㎔' => 'THz',
-  '㎕' => 'μl',
-  '㎖' => 'ml',
-  '㎗' => 'dl',
-  '㎘' => 'kl',
-  '㎙' => 'fm',
-  '㎚' => 'nm',
-  '㎛' => 'μm',
-  '㎜' => 'mm',
-  '㎝' => 'cm',
-  '㎞' => 'km',
-  '㎟' => 'mm2',
-  '㎠' => 'cm2',
-  '㎡' => 'm2',
-  '㎢' => 'km2',
-  '㎣' => 'mm3',
-  '㎤' => 'cm3',
-  '㎥' => 'm3',
-  '㎦' => 'km3',
-  '㎧' => 'm∕s',
-  '㎨' => 'm∕s2',
-  '㎩' => 'Pa',
-  '㎪' => 'kPa',
-  '㎫' => 'MPa',
-  '㎬' => 'GPa',
-  '㎭' => 'rad',
-  '㎮' => 'rad∕s',
-  '㎯' => 'rad∕s2',
-  '㎰' => 'ps',
-  '㎱' => 'ns',
-  '㎲' => 'μs',
-  '㎳' => 'ms',
-  '㎴' => 'pV',
-  '㎵' => 'nV',
-  '㎶' => 'μV',
-  '㎷' => 'mV',
-  '㎸' => 'kV',
-  '㎹' => 'MV',
-  '㎺' => 'pW',
-  '㎻' => 'nW',
-  '㎼' => 'μW',
-  '㎽' => 'mW',
-  '㎾' => 'kW',
-  '㎿' => 'MW',
-  '㏀' => 'kΩ',
-  '㏁' => 'MΩ',
-  '㏂' => 'a.m.',
-  '㏃' => 'Bq',
-  '㏄' => 'cc',
-  '㏅' => 'cd',
-  '㏆' => 'C∕kg',
-  '㏇' => 'Co.',
-  '㏈' => 'dB',
-  '㏉' => 'Gy',
-  '㏊' => 'ha',
-  '㏋' => 'HP',
-  '㏌' => 'in',
-  '㏍' => 'KK',
-  '㏎' => 'KM',
-  '㏏' => 'kt',
-  '㏐' => 'lm',
-  '㏑' => 'ln',
-  '㏒' => 'log',
-  '㏓' => 'lx',
-  '㏔' => 'mb',
-  '㏕' => 'mil',
-  '㏖' => 'mol',
-  '㏗' => 'PH',
-  '㏘' => 'p.m.',
-  '㏙' => 'PPM',
-  '㏚' => 'PR',
-  '㏛' => 'sr',
-  '㏜' => 'Sv',
-  '㏝' => 'Wb',
-  '㏞' => 'V∕m',
-  '㏟' => 'A∕m',
-  '㏠' => '1日',
-  '㏡' => '2日',
-  '㏢' => '3日',
-  '㏣' => '4日',
-  '㏤' => '5日',
-  '㏥' => '6日',
-  '㏦' => '7日',
-  '㏧' => '8日',
-  '㏨' => '9日',
-  '㏩' => '10日',
-  '㏪' => '11日',
-  '㏫' => '12日',
-  '㏬' => '13日',
-  '㏭' => '14日',
-  '㏮' => '15日',
-  '㏯' => '16日',
-  '㏰' => '17日',
-  '㏱' => '18日',
-  '㏲' => '19日',
-  '㏳' => '20日',
-  '㏴' => '21日',
-  '㏵' => '22日',
-  '㏶' => '23日',
-  '㏷' => '24日',
-  '㏸' => '25日',
-  '㏹' => '26日',
-  '㏺' => '27日',
-  '㏻' => '28日',
-  '㏼' => '29日',
-  '㏽' => '30日',
-  '㏾' => '31日',
-  '㏿' => 'gal',
-  'ꚜ' => 'ъ',
-  'ꚝ' => 'ь',
-  'ꝰ' => 'ꝯ',
-  'ꟸ' => 'Ħ',
-  'ꟹ' => 'œ',
-  'ꭜ' => 'ꜧ',
-  'ꭝ' => 'ꬷ',
-  'ê­ž' => 'É«',
-  'ê­Ÿ' => 'ê­’',
-  'ꭩ' => 'ʍ',
-  'ff' => 'ff',
-  'fi' => 'fi',
-  'fl' => 'fl',
-  'ffi' => 'ffi',
-  'ffl' => 'ffl',
-  'ſt' => 'st',
-  'st' => 'st',
-  'ﬓ' => 'մն',
-  'ﬔ' => 'մե',
-  'ﬕ' => 'մի',
-  'ﬖ' => 'վն',
-  'ﬗ' => 'մխ',
-  'ﬠ' => 'ע',
-  'ﬡ' => 'א',
-  'ﬢ' => 'ד',
-  'ﬣ' => 'ה',
-  'ﬤ' => 'כ',
-  'ﬥ' => 'ל',
-  'ﬦ' => 'ם',
-  'ﬧ' => 'ר',
-  'ﬨ' => 'ת',
-  '﬩' => '+',
-  'ﭏ' => 'אל',
-  'ﭐ' => 'ٱ',
-  'ï­‘' => 'Ù±',
-  'ï­’' => 'Ù»',
-  'ï­“' => 'Ù»',
-  'ï­”' => 'Ù»',
-  'ï­•' => 'Ù»',
-  'ï­–' => 'Ù¾',
-  'ï­—' => 'Ù¾',
-  'ï­˜' => 'Ù¾',
-  'ï­™' => 'Ù¾',
-  'ï­š' => 'Ú€',
-  'ï­›' => 'Ú€',
-  'ﭜ' => 'ڀ',
-  'ﭝ' => 'ڀ',
-  'ï­ž' => 'Ùº',
-  'ï­Ÿ' => 'Ùº',
-  'ï­ ' => 'Ùº',
-  'ï­¡' => 'Ùº',
-  'ï­¢' => 'Ù¿',
-  'ï­£' => 'Ù¿',
-  'ï­¤' => 'Ù¿',
-  'ï­¥' => 'Ù¿',
-  'ï­¦' => 'Ù¹',
-  'ï­§' => 'Ù¹',
-  'ï­¨' => 'Ù¹',
-  'ï­©' => 'Ù¹',
-  'ï­ª' => 'Ú¤',
-  'ï­«' => 'Ú¤',
-  'ï­¬' => 'Ú¤',
-  'ï­­' => 'Ú¤',
-  'ï­®' => 'Ú¦',
-  'ï­¯' => 'Ú¦',
-  'ï­°' => 'Ú¦',
-  'ï­±' => 'Ú¦',
-  'ï­²' => 'Ú„',
-  'ï­³' => 'Ú„',
-  'ï­´' => 'Ú„',
-  'ï­µ' => 'Ú„',
-  'ï­¶' => 'Úƒ',
-  'ï­·' => 'Úƒ',
-  'ï­¸' => 'Úƒ',
-  'ï­¹' => 'Úƒ',
-  'ï­º' => 'Ú†',
-  'ï­»' => 'Ú†',
-  'ï­¼' => 'Ú†',
-  'ï­½' => 'Ú†',
-  'ï­¾' => 'Ú‡',
-  'ï­¿' => 'Ú‡',
-  'ﮀ' => 'ڇ',
-  'ﮁ' => 'ڇ',
-  'ﮂ' => 'ڍ',
-  'ﮃ' => 'ڍ',
-  'ﮄ' => 'ڌ',
-  'ﮅ' => 'ڌ',
-  'ﮆ' => 'ڎ',
-  'ﮇ' => 'ڎ',
-  'ﮈ' => 'ڈ',
-  'ﮉ' => 'ڈ',
-  'ﮊ' => 'ژ',
-  'ﮋ' => 'ژ',
-  'ﮌ' => 'ڑ',
-  'ﮍ' => 'ڑ',
-  'ﮎ' => 'ک',
-  'ﮏ' => 'ک',
-  'ﮐ' => 'ک',
-  'ﮑ' => 'ک',
-  'ï®’' => 'Ú¯',
-  'ﮓ' => 'گ',
-  'ï®”' => 'Ú¯',
-  'ﮕ' => 'گ',
-  'ï®–' => 'Ú³',
-  'ï®—' => 'Ú³',
-  'ﮘ' => 'ڳ',
-  'ï®™' => 'Ú³',
-  'ﮚ' => 'ڱ',
-  'ï®›' => 'Ú±',
-  'ﮜ' => 'ڱ',
-  'ﮝ' => 'ڱ',
-  'ﮞ' => 'ں',
-  'ﮟ' => 'ں',
-  'ï® ' => 'Ú»',
-  'ﮡ' => 'ڻ',
-  'ﮢ' => 'ڻ',
-  'ﮣ' => 'ڻ',
-  'ﮤ' => 'ۀ',
-  'ﮥ' => 'ۀ',
-  'ﮦ' => 'ہ',
-  'ﮧ' => 'ہ',
-  'ﮨ' => 'ہ',
-  'ﮩ' => 'ہ',
-  'ﮪ' => 'ھ',
-  'ﮫ' => 'ھ',
-  'ﮬ' => 'ھ',
-  'ï®­' => 'Ú¾',
-  'ï®®' => 'Û’',
-  'ﮯ' => 'ے',
-  'ï®°' => 'Û’Ù”',
-  'ï®±' => 'Û’Ù”',
-  'ﯓ' => 'ڭ',
-  'ﯔ' => 'ڭ',
-  'ﯕ' => 'ڭ',
-  'ﯖ' => 'ڭ',
-  'ﯗ' => 'ۇ',
-  'ﯘ' => 'ۇ',
-  'ﯙ' => 'ۆ',
-  'ﯚ' => 'ۆ',
-  'ﯛ' => 'ۈ',
-  'ﯜ' => 'ۈ',
-  'ﯝ' => 'ۇٴ',
-  'ﯞ' => 'ۋ',
-  'ﯟ' => 'ۋ',
-  'ﯠ' => 'ۅ',
-  'ﯡ' => 'ۅ',
-  'ﯢ' => 'ۉ',
-  'ﯣ' => 'ۉ',
-  'ﯤ' => 'ې',
-  'ﯥ' => 'ې',
-  'ﯦ' => 'ې',
-  'ﯧ' => 'ې',
-  'ﯨ' => 'ى',
-  'ﯩ' => 'ى',
-  'ﯪ' => 'ئا',
-  'ﯫ' => 'ئا',
-  'ﯬ' => 'ئە',
-  'ﯭ' => 'ئە',
-  'ﯮ' => 'ئو',
-  'ﯯ' => 'ئو',
-  'ﯰ' => 'ئۇ',
-  'ﯱ' => 'ئۇ',
-  'ﯲ' => 'ئۆ',
-  'ﯳ' => 'ئۆ',
-  'ﯴ' => 'ئۈ',
-  'ﯵ' => 'ئۈ',
-  'ﯶ' => 'ئې',
-  'ﯷ' => 'ئې',
-  'ﯸ' => 'ئې',
-  'ﯹ' => 'ئى',
-  'ﯺ' => 'ئى',
-  'ﯻ' => 'ئى',
-  'ﯼ' => 'ی',
-  'ﯽ' => 'ی',
-  'ﯾ' => 'ی',
-  'ﯿ' => 'ی',
-  'ﰀ' => 'ئج',
-  'ﰁ' => 'ئح',
-  'ï°‚' => 'ÙŠÙ”Ù…',
-  'ï°ƒ' => 'ÙŠÙ”Ù‰',
-  'ï°„' => 'ÙŠÙ”ÙŠ',
-  'ﰅ' => 'بج',
-  'ﰆ' => 'بح',
-  'ﰇ' => 'بخ',
-  'ﰈ' => 'بم',
-  'ﰉ' => 'بى',
-  'ﰊ' => 'بي',
-  'ﰋ' => 'تج',
-  'ﰌ' => 'تح',
-  'ﰍ' => 'تخ',
-  'ﰎ' => 'تم',
-  'ﰏ' => 'تى',
-  'ﰐ' => 'تي',
-  'ﰑ' => 'ثج',
-  'ﰒ' => 'ثم',
-  'ﰓ' => 'ثى',
-  'ﰔ' => 'ثي',
-  'ﰕ' => 'جح',
-  'ﰖ' => 'جم',
-  'ﰗ' => 'حج',
-  'ﰘ' => 'حم',
-  'ﰙ' => 'خج',
-  'ﰚ' => 'خح',
-  'ﰛ' => 'خم',
-  'ﰜ' => 'سج',
-  'ﰝ' => 'سح',
-  'ﰞ' => 'سخ',
-  'ﰟ' => 'سم',
-  'ﰠ' => 'صح',
-  'ﰡ' => 'صم',
-  'ﰢ' => 'ضج',
-  'ﰣ' => 'ضح',
-  'ﰤ' => 'ضخ',
-  'ﰥ' => 'ضم',
-  'ﰦ' => 'طح',
-  'ﰧ' => 'طم',
-  'ﰨ' => 'ظم',
-  'ﰩ' => 'عج',
-  'ﰪ' => 'عم',
-  'ﰫ' => 'غج',
-  'ﰬ' => 'غم',
-  'ﰭ' => 'فج',
-  'ﰮ' => 'فح',
-  'ﰯ' => 'فخ',
-  'ﰰ' => 'فم',
-  'ﰱ' => 'فى',
-  'ﰲ' => 'في',
-  'ﰳ' => 'قح',
-  'ﰴ' => 'قم',
-  'ﰵ' => 'قى',
-  'ﰶ' => 'قي',
-  'ﰷ' => 'كا',
-  'ﰸ' => 'كج',
-  'ﰹ' => 'كح',
-  'ﰺ' => 'كخ',
-  'ﰻ' => 'كل',
-  'ﰼ' => 'كم',
-  'ﰽ' => 'كى',
-  'ﰾ' => 'كي',
-  'ﰿ' => 'لج',
-  'ﱀ' => 'لح',
-  'ﱁ' => 'لخ',
-  'ﱂ' => 'لم',
-  'ﱃ' => 'لى',
-  'ﱄ' => 'لي',
-  'ﱅ' => 'مج',
-  'ﱆ' => 'مح',
-  'ﱇ' => 'مخ',
-  'ﱈ' => 'مم',
-  'ﱉ' => 'مى',
-  'ﱊ' => 'مي',
-  'ﱋ' => 'نج',
-  'ﱌ' => 'نح',
-  'ﱍ' => 'نخ',
-  'ﱎ' => 'نم',
-  'ﱏ' => 'نى',
-  'ﱐ' => 'ني',
-  'ﱑ' => 'هج',
-  'ﱒ' => 'هم',
-  'ﱓ' => 'هى',
-  'ﱔ' => 'هي',
-  'ﱕ' => 'يج',
-  'ﱖ' => 'يح',
-  'ﱗ' => 'يخ',
-  'ﱘ' => 'يم',
-  'ﱙ' => 'يى',
-  'ﱚ' => 'يي',
-  'ﱛ' => 'ذٰ',
-  'ﱜ' => 'رٰ',
-  'ﱝ' => 'ىٰ',
-  'ﱞ' => ' ٌّ',
-  'ﱟ' => ' ٍّ',
-  'ï± ' => ' ÙŽÙ‘',
-  'ﱡ' => ' ُّ',
-  'ﱢ' => ' ِّ',
-  'ﱣ' => ' ّٰ',
-  'ﱤ' => 'ئر',
-  'ﱥ' => 'ئز',
-  'ﱦ' => 'ئم',
-  'ï±§' => 'ÙŠÙ”Ù†',
-  'ﱨ' => 'ئى',
-  'ﱩ' => 'ئي',
-  'ﱪ' => 'بر',
-  'ﱫ' => 'بز',
-  'ﱬ' => 'بم',
-  'ﱭ' => 'بن',
-  'ﱮ' => 'بى',
-  'ﱯ' => 'بي',
-  'ﱰ' => 'تر',
-  'ﱱ' => 'تز',
-  'ﱲ' => 'تم',
-  'ﱳ' => 'تن',
-  'ﱴ' => 'تى',
-  'ﱵ' => 'تي',
-  'ﱶ' => 'ثر',
-  'ﱷ' => 'ثز',
-  'ﱸ' => 'ثم',
-  'ﱹ' => 'ثن',
-  'ﱺ' => 'ثى',
-  'ﱻ' => 'ثي',
-  'ﱼ' => 'فى',
-  'ﱽ' => 'في',
-  'ﱾ' => 'قى',
-  'ﱿ' => 'قي',
-  'ﲀ' => 'كا',
-  'ﲁ' => 'كل',
-  'ﲂ' => 'كم',
-  'ﲃ' => 'كى',
-  'ﲄ' => 'كي',
-  'ﲅ' => 'لم',
-  'ﲆ' => 'لى',
-  'ﲇ' => 'لي',
-  'ﲈ' => 'ما',
-  'ﲉ' => 'مم',
-  'ﲊ' => 'نر',
-  'ﲋ' => 'نز',
-  'ﲌ' => 'نم',
-  'ﲍ' => 'نن',
-  'ﲎ' => 'نى',
-  'ﲏ' => 'ني',
-  'ﲐ' => 'ىٰ',
-  'ﲑ' => 'ير',
-  'ﲒ' => 'يز',
-  'ﲓ' => 'يم',
-  'ﲔ' => 'ين',
-  'ﲕ' => 'يى',
-  'ﲖ' => 'يي',
-  'ﲗ' => 'ئج',
-  'ﲘ' => 'ئح',
-  'ﲙ' => 'ئخ',
-  'ﲚ' => 'ئم',
-  'ï²›' => 'ÙŠÙ”Ù‡',
-  'ﲜ' => 'بج',
-  'ﲝ' => 'بح',
-  'ﲞ' => 'بخ',
-  'ﲟ' => 'بم',
-  'ﲠ' => 'به',
-  'ﲡ' => 'تج',
-  'ﲢ' => 'تح',
-  'ﲣ' => 'تخ',
-  'ﲤ' => 'تم',
-  'ﲥ' => 'ته',
-  'ﲦ' => 'ثم',
-  'ﲧ' => 'جح',
-  'ﲨ' => 'جم',
-  'ﲩ' => 'حج',
-  'ﲪ' => 'حم',
-  'ﲫ' => 'خج',
-  'ﲬ' => 'خم',
-  'ﲭ' => 'سج',
-  'ﲮ' => 'سح',
-  'ﲯ' => 'سخ',
-  'ﲰ' => 'سم',
-  'ﲱ' => 'صح',
-  'ﲲ' => 'صخ',
-  'ﲳ' => 'صم',
-  'ﲴ' => 'ضج',
-  'ﲵ' => 'ضح',
-  'ﲶ' => 'ضخ',
-  'ﲷ' => 'ضم',
-  'ﲸ' => 'طح',
-  'ﲹ' => 'ظم',
-  'ﲺ' => 'عج',
-  'ﲻ' => 'عم',
-  'ﲼ' => 'غج',
-  'ﲽ' => 'غم',
-  'ﲾ' => 'فج',
-  'ﲿ' => 'فح',
-  'ﳀ' => 'فخ',
-  'ﳁ' => 'فم',
-  'ﳂ' => 'قح',
-  'ﳃ' => 'قم',
-  'ﳄ' => 'كج',
-  'ﳅ' => 'كح',
-  'ﳆ' => 'كخ',
-  'ﳇ' => 'كل',
-  'ﳈ' => 'كم',
-  'ﳉ' => 'لج',
-  'ﳊ' => 'لح',
-  'ﳋ' => 'لخ',
-  'ﳌ' => 'لم',
-  'ﳍ' => 'له',
-  'ﳎ' => 'مج',
-  'ﳏ' => 'مح',
-  'ﳐ' => 'مخ',
-  'ﳑ' => 'مم',
-  'ﳒ' => 'نج',
-  'ﳓ' => 'نح',
-  'ﳔ' => 'نخ',
-  'ﳕ' => 'نم',
-  'ﳖ' => 'نه',
-  'ﳗ' => 'هج',
-  'ﳘ' => 'هم',
-  'ﳙ' => 'هٰ',
-  'ﳚ' => 'يج',
-  'ﳛ' => 'يح',
-  'ﳜ' => 'يخ',
-  'ﳝ' => 'يم',
-  'ﳞ' => 'يه',
-  'ﳟ' => 'ئم',
-  'ï³ ' => 'ÙŠÙ”Ù‡',
-  'ﳡ' => 'بم',
-  'ﳢ' => 'به',
-  'ﳣ' => 'تم',
-  'ﳤ' => 'ته',
-  'ﳥ' => 'ثم',
-  'ﳦ' => 'ثه',
-  'ﳧ' => 'سم',
-  'ﳨ' => 'سه',
-  'ﳩ' => 'شم',
-  'ﳪ' => 'شه',
-  'ﳫ' => 'كل',
-  'ﳬ' => 'كم',
-  'ﳭ' => 'لم',
-  'ﳮ' => 'نم',
-  'ﳯ' => 'نه',
-  'ﳰ' => 'يم',
-  'ﳱ' => 'يه',
-  'ï³²' => 'Ù€ÙŽÙ‘',
-  'ﳳ' => 'ـُّ',
-  'ﳴ' => 'ـِّ',
-  'ﳵ' => 'طى',
-  'ﳶ' => 'طي',
-  'ﳷ' => 'عى',
-  'ﳸ' => 'عي',
-  'ﳹ' => 'غى',
-  'ﳺ' => 'غي',
-  'ﳻ' => 'سى',
-  'ﳼ' => 'سي',
-  'ﳽ' => 'شى',
-  'ﳾ' => 'شي',
-  'ﳿ' => 'حى',
-  'ﴀ' => 'حي',
-  'ﴁ' => 'جى',
-  'ﴂ' => 'جي',
-  'ﴃ' => 'خى',
-  'ﴄ' => 'خي',
-  'ﴅ' => 'صى',
-  'ﴆ' => 'صي',
-  'ﴇ' => 'ضى',
-  'ﴈ' => 'ضي',
-  'ﴉ' => 'شج',
-  'ﴊ' => 'شح',
-  'ﴋ' => 'شخ',
-  'ﴌ' => 'شم',
-  'ﴍ' => 'شر',
-  'ﴎ' => 'سر',
-  'ﴏ' => 'صر',
-  'ﴐ' => 'ضر',
-  'ﴑ' => 'طى',
-  'ﴒ' => 'طي',
-  'ﴓ' => 'عى',
-  'ﴔ' => 'عي',
-  'ﴕ' => 'غى',
-  'ﴖ' => 'غي',
-  'ﴗ' => 'سى',
-  'ﴘ' => 'سي',
-  'ﴙ' => 'شى',
-  'ﴚ' => 'شي',
-  'ﴛ' => 'حى',
-  'ﴜ' => 'حي',
-  'ﴝ' => 'جى',
-  'ﴞ' => 'جي',
-  'ﴟ' => 'خى',
-  'ﴠ' => 'خي',
-  'ﴡ' => 'صى',
-  'ﴢ' => 'صي',
-  'ﴣ' => 'ضى',
-  'ﴤ' => 'ضي',
-  'ﴥ' => 'شج',
-  'ﴦ' => 'شح',
-  'ﴧ' => 'شخ',
-  'ﴨ' => 'شم',
-  'ﴩ' => 'شر',
-  'ﴪ' => 'سر',
-  'ﴫ' => 'صر',
-  'ﴬ' => 'ضر',
-  'ﴭ' => 'شج',
-  'ﴮ' => 'شح',
-  'ﴯ' => 'شخ',
-  'ﴰ' => 'شم',
-  'ﴱ' => 'سه',
-  'ﴲ' => 'شه',
-  'ﴳ' => 'طم',
-  'ﴴ' => 'سج',
-  'ﴵ' => 'سح',
-  'ﴶ' => 'سخ',
-  'ﴷ' => 'شج',
-  'ﴸ' => 'شح',
-  'ﴹ' => 'شخ',
-  'ﴺ' => 'طم',
-  'ﴻ' => 'ظم',
-  'ﴼ' => 'اً',
-  'ﴽ' => 'اً',
-  'ﵐ' => 'تجم',
-  'ﵑ' => 'تحج',
-  'ﵒ' => 'تحج',
-  'ﵓ' => 'تحم',
-  'ﵔ' => 'تخم',
-  'ﵕ' => 'تمج',
-  'ﵖ' => 'تمح',
-  'ﵗ' => 'تمخ',
-  'ﵘ' => 'جمح',
-  'ﵙ' => 'جمح',
-  'ﵚ' => 'حمي',
-  'ﵛ' => 'حمى',
-  'ﵜ' => 'سحج',
-  'ﵝ' => 'سجح',
-  'ﵞ' => 'سجى',
-  'ﵟ' => 'سمح',
-  'ﵠ' => 'سمح',
-  'ﵡ' => 'سمج',
-  'ﵢ' => 'سمم',
-  'ﵣ' => 'سمم',
-  'ﵤ' => 'صحح',
-  'ﵥ' => 'صحح',
-  'ﵦ' => 'صمم',
-  'ﵧ' => 'شحم',
-  'ﵨ' => 'شحم',
-  'ﵩ' => 'شجي',
-  'ﵪ' => 'شمخ',
-  'ﵫ' => 'شمخ',
-  'ﵬ' => 'شمم',
-  'ﵭ' => 'شمم',
-  'ﵮ' => 'ضحى',
-  'ﵯ' => 'ضخم',
-  'ﵰ' => 'ضخم',
-  'ﵱ' => 'طمح',
-  'ﵲ' => 'طمح',
-  'ﵳ' => 'طمم',
-  'ﵴ' => 'طمي',
-  'ﵵ' => 'عجم',
-  'ﵶ' => 'عمم',
-  'ﵷ' => 'عمم',
-  'ﵸ' => 'عمى',
-  'ﵹ' => 'غمم',
-  'ﵺ' => 'غمي',
-  'ﵻ' => 'غمى',
-  'ﵼ' => 'فخم',
-  'ﵽ' => 'فخم',
-  'ﵾ' => 'قمح',
-  'ﵿ' => 'قمم',
-  'ﶀ' => 'لحم',
-  'ﶁ' => 'لحي',
-  'ﶂ' => 'لحى',
-  'ﶃ' => 'لجج',
-  'ﶄ' => 'لجج',
-  'ﶅ' => 'لخم',
-  'ﶆ' => 'لخم',
-  'ﶇ' => 'لمح',
-  'ﶈ' => 'لمح',
-  'ﶉ' => 'محج',
-  'ﶊ' => 'محم',
-  'ﶋ' => 'محي',
-  'ﶌ' => 'مجح',
-  'ﶍ' => 'مجم',
-  'ﶎ' => 'مخج',
-  'ﶏ' => 'مخم',
-  'ﶒ' => 'مجخ',
-  'ﶓ' => 'همج',
-  'ﶔ' => 'همم',
-  'ﶕ' => 'نحم',
-  'ﶖ' => 'نحى',
-  'ﶗ' => 'نجم',
-  'ﶘ' => 'نجم',
-  'ﶙ' => 'نجى',
-  'ﶚ' => 'نمي',
-  'ﶛ' => 'نمى',
-  'ﶜ' => 'يمم',
-  'ﶝ' => 'يمم',
-  'ﶞ' => 'بخي',
-  'ﶟ' => 'تجي',
-  'ﶠ' => 'تجى',
-  'ﶡ' => 'تخي',
-  'ﶢ' => 'تخى',
-  'ﶣ' => 'تمي',
-  'ﶤ' => 'تمى',
-  'ﶥ' => 'جمي',
-  'ﶦ' => 'جحى',
-  'ﶧ' => 'جمى',
-  'ﶨ' => 'سخى',
-  'ﶩ' => 'صحي',
-  'ﶪ' => 'شحي',
-  'ﶫ' => 'ضحي',
-  'ﶬ' => 'لجي',
-  'ﶭ' => 'لمي',
-  'ﶮ' => 'يحي',
-  'ﶯ' => 'يجي',
-  'ﶰ' => 'يمي',
-  'ﶱ' => 'ممي',
-  'ﶲ' => 'قمي',
-  'ﶳ' => 'نحي',
-  'ﶴ' => 'قمح',
-  'ﶵ' => 'لحم',
-  'ﶶ' => 'عمي',
-  'ﶷ' => 'كمي',
-  'ﶸ' => 'نجح',
-  'ﶹ' => 'مخي',
-  'ﶺ' => 'لجم',
-  'ﶻ' => 'كمم',
-  'ﶼ' => 'لجم',
-  'ﶽ' => 'نجح',
-  'ﶾ' => 'جحي',
-  'ﶿ' => 'حجي',
-  'ﷀ' => 'مجي',
-  'ﷁ' => 'فمي',
-  'ﷂ' => 'بحي',
-  'ﷃ' => 'كمم',
-  'ﷄ' => 'عجم',
-  'ﷅ' => 'صمم',
-  'ﷆ' => 'سخي',
-  'ﷇ' => 'نجي',
-  'ﷰ' => 'صلے',
-  'ﷱ' => 'قلے',
-  'ﷲ' => 'الله',
-  'ﷳ' => 'اكبر',
-  'ﷴ' => 'محمد',
-  'ﷵ' => 'صلعم',
-  'ﷶ' => 'رسول',
-  'ﷷ' => 'عليه',
-  'ﷸ' => 'وسلم',
-  'ﷹ' => 'صلى',
-  'ﷺ' => 'صلى الله عليه وسلم',
-  'ﷻ' => 'جل جلاله',
-  '﷼' => 'ریال',
-  '︐' => ',',
-  '︑' => '、',
-  '︒' => '。',
-  '︓' => ':',
-  '︔' => ';',
-  '︕' => '!',
-  '︖' => '?',
-  '︗' => '〖',
-  '︘' => '〗',
-  '︙' => '...',
-  '︰' => '..',
-  '︱' => '—',
-  '︲' => '–',
-  '︳' => '_',
-  '︴' => '_',
-  '︵' => '(',
-  '︶' => ')',
-  '︷' => '{',
-  '︸' => '}',
-  '︹' => '〔',
-  '︺' => '〕',
-  '︻' => '【',
-  '︼' => '】',
-  '︽' => '《',
-  '︾' => '》',
-  '︿' => '〈',
-  '﹀' => '〉',
-  '﹁' => '「',
-  '﹂' => '」',
-  '﹃' => '『',
-  '﹄' => '』',
-  '﹇' => '[',
-  '﹈' => ']',
-  '﹉' => ' ̅',
-  '﹊' => ' ̅',
-  '﹋' => ' ̅',
-  '﹌' => ' ̅',
-  '﹍' => '_',
-  '﹎' => '_',
-  '﹏' => '_',
-  '﹐' => ',',
-  '﹑' => '、',
-  'ï¹’' => '.',
-  'ï¹”' => ';',
-  '﹕' => ':',
-  'ï¹–' => '?',
-  'ï¹—' => '!',
-  '﹘' => '—',
-  'ï¹™' => '(',
-  '﹚' => ')',
-  'ï¹›' => '{',
-  '﹜' => '}',
-  '﹝' => '〔',
-  '﹞' => '〕',
-  '﹟' => '#',
-  'ï¹ ' => '&',
-  '﹡' => '*',
-  'ï¹¢' => '+',
-  'ï¹£' => '-',
-  '﹤' => '<',
-  'ï¹¥' => '>',
-  '﹦' => '=',
-  '﹨' => '\\',
-  '﹩' => '$',
-  '﹪' => '%',
-  '﹫' => '@',
-  'ï¹°' => ' Ù‹',
-  'ﹱ' => 'ـً',
-  'ﹲ' => ' ٌ',
-  'ﹴ' => ' ٍ',
-  'ï¹¶' => ' ÙŽ',
-  'ï¹·' => 'Ù€ÙŽ',
-  'ﹸ' => ' ُ',
-  'ﹹ' => 'ـُ',
-  'ﹺ' => ' ِ',
-  'ﹻ' => 'ـِ',
-  'ï¹¼' => ' Ù‘',
-  'ﹽ' => 'ـّ',
-  'ï¹¾' => ' Ù’',
-  'ﹿ' => 'ـْ',
-  'ﺀ' => 'ء',
-  'ﺁ' => 'آ',
-  'ﺂ' => 'آ',
-  'ﺃ' => 'أ',
-  'ﺄ' => 'أ',
-  'ﺅ' => 'ؤ',
-  'ﺆ' => 'ؤ',
-  'ﺇ' => 'إ',
-  'ﺈ' => 'إ',
-  'ﺉ' => 'ئ',
-  'ﺊ' => 'ئ',
-  'ﺋ' => 'ئ',
-  'ﺌ' => 'ئ',
-  'ﺍ' => 'ا',
-  'ﺎ' => 'ا',
-  'ﺏ' => 'ب',
-  'ﺐ' => 'ب',
-  'ﺑ' => 'ب',
-  'ﺒ' => 'ب',
-  'ﺓ' => 'ة',
-  'ﺔ' => 'ة',
-  'ﺕ' => 'ت',
-  'ﺖ' => 'ت',
-  'ﺗ' => 'ت',
-  'ﺘ' => 'ت',
-  'ﺙ' => 'ث',
-  'ﺚ' => 'ث',
-  'ﺛ' => 'ث',
-  'ﺜ' => 'ث',
-  'ﺝ' => 'ج',
-  'ﺞ' => 'ج',
-  'ﺟ' => 'ج',
-  'ﺠ' => 'ج',
-  'ﺡ' => 'ح',
-  'ﺢ' => 'ح',
-  'ﺣ' => 'ح',
-  'ﺤ' => 'ح',
-  'ﺥ' => 'خ',
-  'ﺦ' => 'خ',
-  'ﺧ' => 'خ',
-  'ﺨ' => 'خ',
-  'ﺩ' => 'د',
-  'ﺪ' => 'د',
-  'ﺫ' => 'ذ',
-  'ﺬ' => 'ذ',
-  'ﺭ' => 'ر',
-  'ﺮ' => 'ر',
-  'ﺯ' => 'ز',
-  'ﺰ' => 'ز',
-  'ﺱ' => 'س',
-  'ﺲ' => 'س',
-  'ﺳ' => 'س',
-  'ﺴ' => 'س',
-  'ﺵ' => 'ش',
-  'ﺶ' => 'ش',
-  'ﺷ' => 'ش',
-  'ﺸ' => 'ش',
-  'ﺹ' => 'ص',
-  'ﺺ' => 'ص',
-  'ﺻ' => 'ص',
-  'ﺼ' => 'ص',
-  'ﺽ' => 'ض',
-  'ﺾ' => 'ض',
-  'ﺿ' => 'ض',
-  'ﻀ' => 'ض',
-  'ﻁ' => 'ط',
-  'ﻂ' => 'ط',
-  'ﻃ' => 'ط',
-  'ﻄ' => 'ط',
-  'ﻅ' => 'ظ',
-  'ﻆ' => 'ظ',
-  'ﻇ' => 'ظ',
-  'ﻈ' => 'ظ',
-  'ﻉ' => 'ع',
-  'ﻊ' => 'ع',
-  'ﻋ' => 'ع',
-  'ﻌ' => 'ع',
-  'ﻍ' => 'غ',
-  'ﻎ' => 'غ',
-  'ﻏ' => 'غ',
-  'ﻐ' => 'غ',
-  'ﻑ' => 'ف',
-  'ﻒ' => 'ف',
-  'ﻓ' => 'ف',
-  'ﻔ' => 'ف',
-  'ﻕ' => 'ق',
-  'ï»–' => 'Ù‚',
-  'ï»—' => 'Ù‚',
-  'ﻘ' => 'ق',
-  'ï»™' => 'Ùƒ',
-  'ﻚ' => 'ك',
-  'ï»›' => 'Ùƒ',
-  'ﻜ' => 'ك',
-  'ﻝ' => 'ل',
-  'ﻞ' => 'ل',
-  'ﻟ' => 'ل',
-  'ï» ' => 'Ù„',
-  'ﻡ' => 'م',
-  'ﻢ' => 'م',
-  'ﻣ' => 'م',
-  'ﻤ' => 'م',
-  'ﻥ' => 'ن',
-  'ﻦ' => 'ن',
-  'ï»§' => 'Ù†',
-  'ﻨ' => 'ن',
-  'ﻩ' => 'ه',
-  'ﻪ' => 'ه',
-  'ﻫ' => 'ه',
-  'ﻬ' => 'ه',
-  'ï»­' => 'Ùˆ',
-  'ï»®' => 'Ùˆ',
-  'ﻯ' => 'ى',
-  'ï»°' => 'Ù‰',
-  'ï»±' => 'ÙŠ',
-  'ﻲ' => 'ي',
-  'ﻳ' => 'ي',
-  'ï»´' => 'ÙŠ',
-  'ﻵ' => 'لآ',
-  'ﻶ' => 'لآ',
-  'ﻷ' => 'لأ',
-  'ﻸ' => 'لأ',
-  'ﻹ' => 'لإ',
-  'ﻺ' => 'لإ',
-  'ﻻ' => 'لا',
-  'ﻼ' => 'لا',
-  '!' => '!',
-  '"' => '"',
-  '#' => '#',
-  '$' => '$',
-  'ï¼…' => '%',
-  '&' => '&',
-  ''' => '\'',
-  '(' => '(',
-  ')' => ')',
-  '*' => '*',
-  '+' => '+',
-  ',' => ',',
-  '-' => '-',
-  '.' => '.',
-  '/' => '/',
-  '0' => '0',
-  '1' => '1',
-  'ï¼’' => '2',
-  '3' => '3',
-  'ï¼”' => '4',
-  '5' => '5',
-  'ï¼–' => '6',
-  'ï¼—' => '7',
-  '8' => '8',
-  'ï¼™' => '9',
-  ':' => ':',
-  'ï¼›' => ';',
-  '<' => '<',
-  '=' => '=',
-  '>' => '>',
-  '?' => '?',
-  'ï¼ ' => '@',
-  'A' => 'A',
-  'ï¼¢' => 'B',
-  'ï¼£' => 'C',
-  'D' => 'D',
-  'ï¼¥' => 'E',
-  'F' => 'F',
-  'ï¼§' => 'G',
-  'H' => 'H',
-  'I' => 'I',
-  'J' => 'J',
-  'K' => 'K',
-  'L' => 'L',
-  'ï¼­' => 'M',
-  'ï¼®' => 'N',
-  'O' => 'O',
-  'ï¼°' => 'P',
-  'ï¼±' => 'Q',
-  'ï¼²' => 'R',
-  'ï¼³' => 'S',
-  'ï¼´' => 'T',
-  'ï¼µ' => 'U',
-  'ï¼¶' => 'V',
-  'ï¼·' => 'W',
-  'X' => 'X',
-  'ï¼¹' => 'Y',
-  'Z' => 'Z',
-  'ï¼»' => '[',
-  'ï¼¼' => '\\',
-  'ï¼½' => ']',
-  'ï¼¾' => '^',
-  '_' => '_',
-  'ï½€' => '`',
-  'a' => 'a',
-  'b' => 'b',
-  'c' => 'c',
-  'd' => 'd',
-  'ï½…' => 'e',
-  'f' => 'f',
-  'g' => 'g',
-  'h' => 'h',
-  'i' => 'i',
-  'j' => 'j',
-  'k' => 'k',
-  'l' => 'l',
-  'm' => 'm',
-  'n' => 'n',
-  'o' => 'o',
-  'p' => 'p',
-  'q' => 'q',
-  'ï½’' => 'r',
-  's' => 's',
-  'ï½”' => 't',
-  'u' => 'u',
-  'ï½–' => 'v',
-  'ï½—' => 'w',
-  'x' => 'x',
-  'ï½™' => 'y',
-  'z' => 'z',
-  'ï½›' => '{',
-  '|' => '|',
-  '}' => '}',
-  '~' => '~',
-  '⦅' => '⦅',
-  '⦆' => '⦆',
-  '。' => '。',
-  '「' => '「',
-  '」' => '」',
-  '、' => '、',
-  '・' => '・',
-  'ヲ' => 'ヲ',
-  'ï½§' => 'ã‚¡',
-  'ィ' => 'ィ',
-  'ゥ' => 'ゥ',
-  'ェ' => 'ェ',
-  'ォ' => 'ォ',
-  'ャ' => 'ャ',
-  'ュ' => 'ュ',
-  'ョ' => 'ョ',
-  'ッ' => 'ッ',
-  'ー' => 'ー',
-  'ï½±' => 'ã‚¢',
-  'イ' => 'イ',
-  'ウ' => 'ウ',
-  'エ' => 'エ',
-  'オ' => 'オ',
-  'ï½¶' => 'ã‚«',
-  'ï½·' => 'ã‚­',
-  'ク' => 'ク',
-  'ケ' => 'ケ',
-  'コ' => 'コ',
-  'サ' => 'サ',
-  'ï½¼' => 'ã‚·',
-  'ス' => 'ス',
-  'ï½¾' => 'ã‚»',
-  'ソ' => 'ソ',
-  'ï¾€' => 'ã‚¿',
-  'チ' => 'チ',
-  'ツ' => 'ツ',
-  'テ' => 'テ',
-  'ト' => 'ト',
-  'ナ' => 'ナ',
-  'ニ' => 'ニ',
-  'ヌ' => 'ヌ',
-  'ネ' => 'ネ',
-  'ノ' => 'ノ',
-  'ハ' => 'ハ',
-  'ヒ' => 'ヒ',
-  'フ' => 'フ',
-  'ヘ' => 'ヘ',
-  'ホ' => 'ホ',
-  'マ' => 'マ',
-  'ミ' => 'ミ',
-  'ム' => 'ム',
-  'メ' => 'メ',
-  'モ' => 'モ',
-  'ヤ' => 'ヤ',
-  'ユ' => 'ユ',
-  'ヨ' => 'ヨ',
-  'ラ' => 'ラ',
-  'リ' => 'リ',
-  'ル' => 'ル',
-  'レ' => 'レ',
-  'ロ' => 'ロ',
-  'ワ' => 'ワ',
-  'ン' => 'ン',
-  '゙' => '゙',
-  '゚' => '゚',
-  'ï¾ ' => 'á… ',
-  'ᄀ' => 'ᄀ',
-  'ᄁ' => 'ᄁ',
-  'ᆪ' => 'ᆪ',
-  'ᄂ' => 'ᄂ',
-  'ᆬ' => 'ᆬ',
-  'ᆭ' => 'ᆭ',
-  'ᄃ' => 'ᄃ',
-  'ᄄ' => 'ᄄ',
-  'ᄅ' => 'ᄅ',
-  'ᆰ' => 'ᆰ',
-  'ᆱ' => 'ᆱ',
-  'ᆲ' => 'ᆲ',
-  'ᆳ' => 'ᆳ',
-  'ᆴ' => 'ᆴ',
-  'ᆵ' => 'ᆵ',
-  'ᄚ' => 'ᄚ',
-  'ᄆ' => 'ᄆ',
-  'ᄇ' => 'ᄇ',
-  'ᄈ' => 'ᄈ',
-  'ï¾´' => 'á„¡',
-  'ᄉ' => 'ᄉ',
-  'ᄊ' => 'ᄊ',
-  'ï¾·' => 'á„‹',
-  'ᄌ' => 'ᄌ',
-  'ᄍ' => 'ᄍ',
-  'ᄎ' => 'ᄎ',
-  'ᄏ' => 'ᄏ',
-  'ᄐ' => 'ᄐ',
-  'ï¾½' => 'á„‘',
-  'ï¾¾' => 'á„’',
-  'ï¿‚' => 'á…¡',
-  'ᅢ' => 'ᅢ',
-  'ï¿„' => 'á…£',
-  'ï¿…' => 'á…¤',
-  'ᅥ' => 'ᅥ',
-  'ᅦ' => 'ᅦ',
-  'ᅧ' => 'ᅧ',
-  'ï¿‹' => 'á…¨',
-  'ᅩ' => 'ᅩ',
-  'ᅪ' => 'ᅪ',
-  'ᅫ' => 'ᅫ',
-  'ᅬ' => 'ᅬ',
-  'ï¿’' => 'á…­',
-  'ï¿“' => 'á…®',
-  'ï¿”' => 'á…¯',
-  'ï¿•' => 'á…°',
-  'ï¿–' => 'á…±',
-  'ï¿—' => 'á…²',
-  'ᅳ' => 'ᅳ',
-  'ï¿›' => 'á…´',
-  'ᅵ' => 'ᅵ',
-  '¢' => '¢',
-  '£' => '£',
-  '¬' => '¬',
-  'ï¿£' => ' Ì„',
-  '¦' => '¦',
-  'ï¿¥' => 'Â¥',
-  '₩' => '₩',
-  '│' => '│',
-  '←' => '←',
-  '↑' => '↑',
-  '→' => '→',
-  '↓' => '↓',
-  'ï¿­' => 'â– ',
-  'ï¿®' => 'â—‹',
-  '𝐀' => 'A',
-  '𝐁' => 'B',
-  '𝐂' => 'C',
-  '𝐃' => 'D',
-  '𝐄' => 'E',
-  '𝐅' => 'F',
-  '𝐆' => 'G',
-  '𝐇' => 'H',
-  '𝐈' => 'I',
-  '𝐉' => 'J',
-  '𝐊' => 'K',
-  '𝐋' => 'L',
-  '𝐌' => 'M',
-  '𝐍' => 'N',
-  '𝐎' => 'O',
-  '𝐏' => 'P',
-  '𝐐' => 'Q',
-  '𝐑' => 'R',
-  '𝐒' => 'S',
-  '𝐓' => 'T',
-  '𝐔' => 'U',
-  '𝐕' => 'V',
-  '𝐖' => 'W',
-  '𝐗' => 'X',
-  '𝐘' => 'Y',
-  '𝐙' => 'Z',
-  '𝐚' => 'a',
-  '𝐛' => 'b',
-  '𝐜' => 'c',
-  '𝐝' => 'd',
-  '𝐞' => 'e',
-  '𝐟' => 'f',
-  '𝐠' => 'g',
-  '𝐡' => 'h',
-  '𝐢' => 'i',
-  '𝐣' => 'j',
-  '𝐤' => 'k',
-  '𝐥' => 'l',
-  '𝐦' => 'm',
-  '𝐧' => 'n',
-  '𝐨' => 'o',
-  '𝐩' => 'p',
-  '𝐪' => 'q',
-  '𝐫' => 'r',
-  '𝐬' => 's',
-  '𝐭' => 't',
-  '𝐮' => 'u',
-  '𝐯' => 'v',
-  '𝐰' => 'w',
-  '𝐱' => 'x',
-  '𝐲' => 'y',
-  '𝐳' => 'z',
-  '𝐴' => 'A',
-  '𝐵' => 'B',
-  '𝐶' => 'C',
-  '𝐷' => 'D',
-  '𝐸' => 'E',
-  '𝐹' => 'F',
-  '𝐺' => 'G',
-  '𝐻' => 'H',
-  '𝐼' => 'I',
-  '𝐽' => 'J',
-  '𝐾' => 'K',
-  '𝐿' => 'L',
-  '𝑀' => 'M',
-  '𝑁' => 'N',
-  '𝑂' => 'O',
-  '𝑃' => 'P',
-  '𝑄' => 'Q',
-  '𝑅' => 'R',
-  '𝑆' => 'S',
-  '𝑇' => 'T',
-  '𝑈' => 'U',
-  '𝑉' => 'V',
-  '𝑊' => 'W',
-  '𝑋' => 'X',
-  '𝑌' => 'Y',
-  '𝑍' => 'Z',
-  '𝑎' => 'a',
-  '𝑏' => 'b',
-  '𝑐' => 'c',
-  '𝑑' => 'd',
-  '𝑒' => 'e',
-  '𝑓' => 'f',
-  '𝑔' => 'g',
-  '𝑖' => 'i',
-  '𝑗' => 'j',
-  '𝑘' => 'k',
-  '𝑙' => 'l',
-  '𝑚' => 'm',
-  '𝑛' => 'n',
-  '𝑜' => 'o',
-  '𝑝' => 'p',
-  '𝑞' => 'q',
-  '𝑟' => 'r',
-  '𝑠' => 's',
-  '𝑡' => 't',
-  '𝑢' => 'u',
-  '𝑣' => 'v',
-  '𝑤' => 'w',
-  '𝑥' => 'x',
-  '𝑦' => 'y',
-  '𝑧' => 'z',
-  '𝑨' => 'A',
-  '𝑩' => 'B',
-  '𝑪' => 'C',
-  '𝑫' => 'D',
-  '𝑬' => 'E',
-  '𝑭' => 'F',
-  '𝑮' => 'G',
-  '𝑯' => 'H',
-  '𝑰' => 'I',
-  '𝑱' => 'J',
-  '𝑲' => 'K',
-  '𝑳' => 'L',
-  '𝑴' => 'M',
-  '𝑵' => 'N',
-  '𝑶' => 'O',
-  '𝑷' => 'P',
-  '𝑸' => 'Q',
-  '𝑹' => 'R',
-  '𝑺' => 'S',
-  '𝑻' => 'T',
-  '𝑼' => 'U',
-  '𝑽' => 'V',
-  '𝑾' => 'W',
-  '𝑿' => 'X',
-  '𝒀' => 'Y',
-  '𝒁' => 'Z',
-  '𝒂' => 'a',
-  '𝒃' => 'b',
-  '𝒄' => 'c',
-  '𝒅' => 'd',
-  '𝒆' => 'e',
-  '𝒇' => 'f',
-  '𝒈' => 'g',
-  '𝒉' => 'h',
-  '𝒊' => 'i',
-  '𝒋' => 'j',
-  '𝒌' => 'k',
-  '𝒍' => 'l',
-  '𝒎' => 'm',
-  '𝒏' => 'n',
-  '𝒐' => 'o',
-  '𝒑' => 'p',
-  '𝒒' => 'q',
-  '𝒓' => 'r',
-  '𝒔' => 's',
-  '𝒕' => 't',
-  '𝒖' => 'u',
-  '𝒗' => 'v',
-  '𝒘' => 'w',
-  '𝒙' => 'x',
-  '𝒚' => 'y',
-  '𝒛' => 'z',
-  '𝒜' => 'A',
-  '𝒞' => 'C',
-  '𝒟' => 'D',
-  '𝒢' => 'G',
-  '𝒥' => 'J',
-  '𝒦' => 'K',
-  '𝒩' => 'N',
-  '𝒪' => 'O',
-  '𝒫' => 'P',
-  '𝒬' => 'Q',
-  '𝒮' => 'S',
-  '𝒯' => 'T',
-  '𝒰' => 'U',
-  '𝒱' => 'V',
-  '𝒲' => 'W',
-  '𝒳' => 'X',
-  '𝒴' => 'Y',
-  '𝒵' => 'Z',
-  '𝒶' => 'a',
-  '𝒷' => 'b',
-  '𝒸' => 'c',
-  '𝒹' => 'd',
-  '𝒻' => 'f',
-  '𝒽' => 'h',
-  '𝒾' => 'i',
-  '𝒿' => 'j',
-  '𝓀' => 'k',
-  '𝓁' => 'l',
-  '𝓂' => 'm',
-  '𝓃' => 'n',
-  '𝓅' => 'p',
-  '𝓆' => 'q',
-  '𝓇' => 'r',
-  '𝓈' => 's',
-  '𝓉' => 't',
-  '𝓊' => 'u',
-  '𝓋' => 'v',
-  '𝓌' => 'w',
-  '𝓍' => 'x',
-  '𝓎' => 'y',
-  '𝓏' => 'z',
-  '𝓐' => 'A',
-  '𝓑' => 'B',
-  '𝓒' => 'C',
-  '𝓓' => 'D',
-  '𝓔' => 'E',
-  '𝓕' => 'F',
-  '𝓖' => 'G',
-  '𝓗' => 'H',
-  '𝓘' => 'I',
-  '𝓙' => 'J',
-  '𝓚' => 'K',
-  '𝓛' => 'L',
-  '𝓜' => 'M',
-  '𝓝' => 'N',
-  '𝓞' => 'O',
-  '𝓟' => 'P',
-  '𝓠' => 'Q',
-  '𝓡' => 'R',
-  '𝓢' => 'S',
-  '𝓣' => 'T',
-  '𝓤' => 'U',
-  '𝓥' => 'V',
-  '𝓦' => 'W',
-  '𝓧' => 'X',
-  '𝓨' => 'Y',
-  '𝓩' => 'Z',
-  '𝓪' => 'a',
-  '𝓫' => 'b',
-  '𝓬' => 'c',
-  '𝓭' => 'd',
-  '𝓮' => 'e',
-  '𝓯' => 'f',
-  '𝓰' => 'g',
-  '𝓱' => 'h',
-  '𝓲' => 'i',
-  '𝓳' => 'j',
-  '𝓴' => 'k',
-  '𝓵' => 'l',
-  '𝓶' => 'm',
-  '𝓷' => 'n',
-  '𝓸' => 'o',
-  '𝓹' => 'p',
-  '𝓺' => 'q',
-  '𝓻' => 'r',
-  '𝓼' => 's',
-  '𝓽' => 't',
-  '𝓾' => 'u',
-  '𝓿' => 'v',
-  '𝔀' => 'w',
-  '𝔁' => 'x',
-  '𝔂' => 'y',
-  '𝔃' => 'z',
-  '𝔄' => 'A',
-  '𝔅' => 'B',
-  '𝔇' => 'D',
-  '𝔈' => 'E',
-  '𝔉' => 'F',
-  '𝔊' => 'G',
-  '𝔍' => 'J',
-  '𝔎' => 'K',
-  '𝔏' => 'L',
-  '𝔐' => 'M',
-  '𝔑' => 'N',
-  '𝔒' => 'O',
-  '𝔓' => 'P',
-  '𝔔' => 'Q',
-  '𝔖' => 'S',
-  '𝔗' => 'T',
-  '𝔘' => 'U',
-  '𝔙' => 'V',
-  '𝔚' => 'W',
-  '𝔛' => 'X',
-  '𝔜' => 'Y',
-  '𝔞' => 'a',
-  '𝔟' => 'b',
-  '𝔠' => 'c',
-  '𝔡' => 'd',
-  '𝔢' => 'e',
-  '𝔣' => 'f',
-  '𝔤' => 'g',
-  '𝔥' => 'h',
-  '𝔦' => 'i',
-  '𝔧' => 'j',
-  '𝔨' => 'k',
-  '𝔩' => 'l',
-  '𝔪' => 'm',
-  '𝔫' => 'n',
-  '𝔬' => 'o',
-  '𝔭' => 'p',
-  '𝔮' => 'q',
-  '𝔯' => 'r',
-  '𝔰' => 's',
-  '𝔱' => 't',
-  '𝔲' => 'u',
-  '𝔳' => 'v',
-  '𝔴' => 'w',
-  '𝔵' => 'x',
-  '𝔶' => 'y',
-  '𝔷' => 'z',
-  '𝔸' => 'A',
-  '𝔹' => 'B',
-  '𝔻' => 'D',
-  '𝔼' => 'E',
-  '𝔽' => 'F',
-  '𝔾' => 'G',
-  '𝕀' => 'I',
-  '𝕁' => 'J',
-  '𝕂' => 'K',
-  '𝕃' => 'L',
-  '𝕄' => 'M',
-  '𝕆' => 'O',
-  '𝕊' => 'S',
-  '𝕋' => 'T',
-  '𝕌' => 'U',
-  '𝕍' => 'V',
-  '𝕎' => 'W',
-  '𝕏' => 'X',
-  '𝕐' => 'Y',
-  '𝕒' => 'a',
-  '𝕓' => 'b',
-  '𝕔' => 'c',
-  '𝕕' => 'd',
-  '𝕖' => 'e',
-  '𝕗' => 'f',
-  '𝕘' => 'g',
-  '𝕙' => 'h',
-  '𝕚' => 'i',
-  '𝕛' => 'j',
-  '𝕜' => 'k',
-  '𝕝' => 'l',
-  '𝕞' => 'm',
-  '𝕟' => 'n',
-  '𝕠' => 'o',
-  '𝕡' => 'p',
-  '𝕢' => 'q',
-  '𝕣' => 'r',
-  '𝕤' => 's',
-  '𝕥' => 't',
-  '𝕦' => 'u',
-  '𝕧' => 'v',
-  '𝕨' => 'w',
-  '𝕩' => 'x',
-  '𝕪' => 'y',
-  '𝕫' => 'z',
-  '𝕬' => 'A',
-  '𝕭' => 'B',
-  '𝕮' => 'C',
-  '𝕯' => 'D',
-  '𝕰' => 'E',
-  '𝕱' => 'F',
-  '𝕲' => 'G',
-  '𝕳' => 'H',
-  '𝕴' => 'I',
-  '𝕵' => 'J',
-  '𝕶' => 'K',
-  '𝕷' => 'L',
-  '𝕸' => 'M',
-  '𝕹' => 'N',
-  '𝕺' => 'O',
-  '𝕻' => 'P',
-  '𝕼' => 'Q',
-  '𝕽' => 'R',
-  '𝕾' => 'S',
-  '𝕿' => 'T',
-  '𝖀' => 'U',
-  '𝖁' => 'V',
-  '𝖂' => 'W',
-  '𝖃' => 'X',
-  '𝖄' => 'Y',
-  '𝖅' => 'Z',
-  '𝖆' => 'a',
-  '𝖇' => 'b',
-  '𝖈' => 'c',
-  '𝖉' => 'd',
-  '𝖊' => 'e',
-  '𝖋' => 'f',
-  '𝖌' => 'g',
-  '𝖍' => 'h',
-  '𝖎' => 'i',
-  '𝖏' => 'j',
-  '𝖐' => 'k',
-  '𝖑' => 'l',
-  '𝖒' => 'm',
-  '𝖓' => 'n',
-  '𝖔' => 'o',
-  '𝖕' => 'p',
-  '𝖖' => 'q',
-  '𝖗' => 'r',
-  '𝖘' => 's',
-  '𝖙' => 't',
-  '𝖚' => 'u',
-  '𝖛' => 'v',
-  '𝖜' => 'w',
-  '𝖝' => 'x',
-  '𝖞' => 'y',
-  '𝖟' => 'z',
-  '𝖠' => 'A',
-  '𝖡' => 'B',
-  '𝖢' => 'C',
-  '𝖣' => 'D',
-  '𝖤' => 'E',
-  '𝖥' => 'F',
-  '𝖦' => 'G',
-  '𝖧' => 'H',
-  '𝖨' => 'I',
-  '𝖩' => 'J',
-  '𝖪' => 'K',
-  '𝖫' => 'L',
-  '𝖬' => 'M',
-  '𝖭' => 'N',
-  '𝖮' => 'O',
-  '𝖯' => 'P',
-  '𝖰' => 'Q',
-  '𝖱' => 'R',
-  '𝖲' => 'S',
-  '𝖳' => 'T',
-  '𝖴' => 'U',
-  '𝖵' => 'V',
-  '𝖶' => 'W',
-  '𝖷' => 'X',
-  '𝖸' => 'Y',
-  '𝖹' => 'Z',
-  '𝖺' => 'a',
-  '𝖻' => 'b',
-  '𝖼' => 'c',
-  '𝖽' => 'd',
-  '𝖾' => 'e',
-  '𝖿' => 'f',
-  '𝗀' => 'g',
-  '𝗁' => 'h',
-  '𝗂' => 'i',
-  '𝗃' => 'j',
-  '𝗄' => 'k',
-  '𝗅' => 'l',
-  '𝗆' => 'm',
-  '𝗇' => 'n',
-  '𝗈' => 'o',
-  '𝗉' => 'p',
-  '𝗊' => 'q',
-  '𝗋' => 'r',
-  '𝗌' => 's',
-  '𝗍' => 't',
-  '𝗎' => 'u',
-  '𝗏' => 'v',
-  '𝗐' => 'w',
-  '𝗑' => 'x',
-  '𝗒' => 'y',
-  '𝗓' => 'z',
-  '𝗔' => 'A',
-  '𝗕' => 'B',
-  '𝗖' => 'C',
-  '𝗗' => 'D',
-  '𝗘' => 'E',
-  '𝗙' => 'F',
-  '𝗚' => 'G',
-  '𝗛' => 'H',
-  '𝗜' => 'I',
-  '𝗝' => 'J',
-  '𝗞' => 'K',
-  '𝗟' => 'L',
-  '𝗠' => 'M',
-  '𝗡' => 'N',
-  '𝗢' => 'O',
-  '𝗣' => 'P',
-  '𝗤' => 'Q',
-  '𝗥' => 'R',
-  '𝗦' => 'S',
-  '𝗧' => 'T',
-  '𝗨' => 'U',
-  '𝗩' => 'V',
-  '𝗪' => 'W',
-  '𝗫' => 'X',
-  '𝗬' => 'Y',
-  '𝗭' => 'Z',
-  '𝗮' => 'a',
-  '𝗯' => 'b',
-  '𝗰' => 'c',
-  '𝗱' => 'd',
-  '𝗲' => 'e',
-  '𝗳' => 'f',
-  '𝗴' => 'g',
-  '𝗵' => 'h',
-  '𝗶' => 'i',
-  '𝗷' => 'j',
-  '𝗸' => 'k',
-  '𝗹' => 'l',
-  '𝗺' => 'm',
-  '𝗻' => 'n',
-  '𝗼' => 'o',
-  '𝗽' => 'p',
-  '𝗾' => 'q',
-  '𝗿' => 'r',
-  '𝘀' => 's',
-  '𝘁' => 't',
-  '𝘂' => 'u',
-  '𝘃' => 'v',
-  '𝘄' => 'w',
-  '𝘅' => 'x',
-  '𝘆' => 'y',
-  '𝘇' => 'z',
-  '𝘈' => 'A',
-  '𝘉' => 'B',
-  '𝘊' => 'C',
-  '𝘋' => 'D',
-  '𝘌' => 'E',
-  '𝘍' => 'F',
-  '𝘎' => 'G',
-  '𝘏' => 'H',
-  '𝘐' => 'I',
-  '𝘑' => 'J',
-  '𝘒' => 'K',
-  '𝘓' => 'L',
-  '𝘔' => 'M',
-  '𝘕' => 'N',
-  '𝘖' => 'O',
-  '𝘗' => 'P',
-  '𝘘' => 'Q',
-  '𝘙' => 'R',
-  '𝘚' => 'S',
-  '𝘛' => 'T',
-  '𝘜' => 'U',
-  '𝘝' => 'V',
-  '𝘞' => 'W',
-  '𝘟' => 'X',
-  '𝘠' => 'Y',
-  '𝘡' => 'Z',
-  '𝘢' => 'a',
-  '𝘣' => 'b',
-  '𝘤' => 'c',
-  '𝘥' => 'd',
-  '𝘦' => 'e',
-  '𝘧' => 'f',
-  '𝘨' => 'g',
-  '𝘩' => 'h',
-  '𝘪' => 'i',
-  '𝘫' => 'j',
-  '𝘬' => 'k',
-  '𝘭' => 'l',
-  '𝘮' => 'm',
-  '𝘯' => 'n',
-  '𝘰' => 'o',
-  '𝘱' => 'p',
-  '𝘲' => 'q',
-  '𝘳' => 'r',
-  '𝘴' => 's',
-  '𝘵' => 't',
-  '𝘶' => 'u',
-  '𝘷' => 'v',
-  '𝘸' => 'w',
-  '𝘹' => 'x',
-  '𝘺' => 'y',
-  '𝘻' => 'z',
-  '𝘼' => 'A',
-  '𝘽' => 'B',
-  '𝘾' => 'C',
-  '𝘿' => 'D',
-  '𝙀' => 'E',
-  '𝙁' => 'F',
-  '𝙂' => 'G',
-  '𝙃' => 'H',
-  '𝙄' => 'I',
-  '𝙅' => 'J',
-  '𝙆' => 'K',
-  '𝙇' => 'L',
-  '𝙈' => 'M',
-  '𝙉' => 'N',
-  '𝙊' => 'O',
-  '𝙋' => 'P',
-  '𝙌' => 'Q',
-  '𝙍' => 'R',
-  '𝙎' => 'S',
-  '𝙏' => 'T',
-  '𝙐' => 'U',
-  '𝙑' => 'V',
-  '𝙒' => 'W',
-  '𝙓' => 'X',
-  '𝙔' => 'Y',
-  '𝙕' => 'Z',
-  '𝙖' => 'a',
-  '𝙗' => 'b',
-  '𝙘' => 'c',
-  '𝙙' => 'd',
-  '𝙚' => 'e',
-  '𝙛' => 'f',
-  '𝙜' => 'g',
-  '𝙝' => 'h',
-  '𝙞' => 'i',
-  '𝙟' => 'j',
-  '𝙠' => 'k',
-  '𝙡' => 'l',
-  '𝙢' => 'm',
-  '𝙣' => 'n',
-  '𝙤' => 'o',
-  '𝙥' => 'p',
-  '𝙦' => 'q',
-  '𝙧' => 'r',
-  '𝙨' => 's',
-  '𝙩' => 't',
-  '𝙪' => 'u',
-  '𝙫' => 'v',
-  '𝙬' => 'w',
-  '𝙭' => 'x',
-  '𝙮' => 'y',
-  '𝙯' => 'z',
-  '𝙰' => 'A',
-  '𝙱' => 'B',
-  '𝙲' => 'C',
-  '𝙳' => 'D',
-  '𝙴' => 'E',
-  '𝙵' => 'F',
-  '𝙶' => 'G',
-  '𝙷' => 'H',
-  '𝙸' => 'I',
-  '𝙹' => 'J',
-  '𝙺' => 'K',
-  '𝙻' => 'L',
-  '𝙼' => 'M',
-  '𝙽' => 'N',
-  '𝙾' => 'O',
-  '𝙿' => 'P',
-  '𝚀' => 'Q',
-  '𝚁' => 'R',
-  '𝚂' => 'S',
-  '𝚃' => 'T',
-  '𝚄' => 'U',
-  '𝚅' => 'V',
-  '𝚆' => 'W',
-  '𝚇' => 'X',
-  '𝚈' => 'Y',
-  '𝚉' => 'Z',
-  '𝚊' => 'a',
-  '𝚋' => 'b',
-  '𝚌' => 'c',
-  '𝚍' => 'd',
-  '𝚎' => 'e',
-  '𝚏' => 'f',
-  '𝚐' => 'g',
-  '𝚑' => 'h',
-  '𝚒' => 'i',
-  '𝚓' => 'j',
-  '𝚔' => 'k',
-  '𝚕' => 'l',
-  '𝚖' => 'm',
-  '𝚗' => 'n',
-  '𝚘' => 'o',
-  '𝚙' => 'p',
-  '𝚚' => 'q',
-  '𝚛' => 'r',
-  '𝚜' => 's',
-  '𝚝' => 't',
-  '𝚞' => 'u',
-  '𝚟' => 'v',
-  '𝚠' => 'w',
-  '𝚡' => 'x',
-  '𝚢' => 'y',
-  '𝚣' => 'z',
-  '𝚤' => 'ı',
-  '𝚥' => 'ȷ',
-  '𝚨' => 'Α',
-  '𝚩' => 'Β',
-  '𝚪' => 'Γ',
-  '𝚫' => 'Δ',
-  '𝚬' => 'Ε',
-  '𝚭' => 'Ζ',
-  '𝚮' => 'Η',
-  '𝚯' => 'Θ',
-  '𝚰' => 'Ι',
-  '𝚱' => 'Κ',
-  '𝚲' => 'Λ',
-  '𝚳' => 'Μ',
-  '𝚴' => 'Ν',
-  '𝚵' => 'Ξ',
-  '𝚶' => 'Ο',
-  '𝚷' => 'Π',
-  '𝚸' => 'Ρ',
-  '𝚹' => 'Θ',
-  '𝚺' => 'Σ',
-  '𝚻' => 'Τ',
-  '𝚼' => 'Υ',
-  '𝚽' => 'Φ',
-  '𝚾' => 'Χ',
-  '𝚿' => 'Ψ',
-  '𝛀' => 'Ω',
-  '𝛁' => '∇',
-  '𝛂' => 'α',
-  '𝛃' => 'β',
-  '𝛄' => 'γ',
-  '𝛅' => 'δ',
-  '𝛆' => 'ε',
-  '𝛇' => 'ζ',
-  '𝛈' => 'η',
-  '𝛉' => 'θ',
-  '𝛊' => 'ι',
-  '𝛋' => 'κ',
-  '𝛌' => 'λ',
-  '𝛍' => 'μ',
-  '𝛎' => 'ν',
-  '𝛏' => 'ξ',
-  '𝛐' => 'ο',
-  '𝛑' => 'π',
-  '𝛒' => 'ρ',
-  '𝛓' => 'ς',
-  '𝛔' => 'σ',
-  '𝛕' => 'τ',
-  '𝛖' => 'υ',
-  '𝛗' => 'φ',
-  '𝛘' => 'χ',
-  '𝛙' => 'ψ',
-  '𝛚' => 'ω',
-  '𝛛' => '∂',
-  '𝛜' => 'ε',
-  '𝛝' => 'θ',
-  '𝛞' => 'κ',
-  '𝛟' => 'φ',
-  '𝛠' => 'ρ',
-  '𝛡' => 'π',
-  '𝛢' => 'Α',
-  '𝛣' => 'Β',
-  '𝛤' => 'Γ',
-  '𝛥' => 'Δ',
-  '𝛦' => 'Ε',
-  '𝛧' => 'Ζ',
-  '𝛨' => 'Η',
-  '𝛩' => 'Θ',
-  '𝛪' => 'Ι',
-  '𝛫' => 'Κ',
-  '𝛬' => 'Λ',
-  '𝛭' => 'Μ',
-  '𝛮' => 'Ν',
-  '𝛯' => 'Ξ',
-  '𝛰' => 'Ο',
-  '𝛱' => 'Π',
-  '𝛲' => 'Ρ',
-  '𝛳' => 'Θ',
-  '𝛴' => 'Σ',
-  '𝛵' => 'Τ',
-  '𝛶' => 'Υ',
-  '𝛷' => 'Φ',
-  '𝛸' => 'Χ',
-  '𝛹' => 'Ψ',
-  '𝛺' => 'Ω',
-  '𝛻' => '∇',
-  '𝛼' => 'α',
-  '𝛽' => 'β',
-  '𝛾' => 'γ',
-  '𝛿' => 'δ',
-  '𝜀' => 'ε',
-  '𝜁' => 'ζ',
-  '𝜂' => 'η',
-  '𝜃' => 'θ',
-  '𝜄' => 'ι',
-  '𝜅' => 'κ',
-  '𝜆' => 'λ',
-  '𝜇' => 'μ',
-  '𝜈' => 'ν',
-  '𝜉' => 'ξ',
-  '𝜊' => 'ο',
-  '𝜋' => 'π',
-  '𝜌' => 'ρ',
-  '𝜍' => 'ς',
-  '𝜎' => 'σ',
-  '𝜏' => 'τ',
-  '𝜐' => 'υ',
-  '𝜑' => 'φ',
-  '𝜒' => 'χ',
-  '𝜓' => 'ψ',
-  '𝜔' => 'ω',
-  '𝜕' => '∂',
-  '𝜖' => 'ε',
-  '𝜗' => 'θ',
-  '𝜘' => 'κ',
-  '𝜙' => 'φ',
-  '𝜚' => 'ρ',
-  '𝜛' => 'π',
-  '𝜜' => 'Α',
-  '𝜝' => 'Β',
-  '𝜞' => 'Γ',
-  '𝜟' => 'Δ',
-  '𝜠' => 'Ε',
-  '𝜡' => 'Ζ',
-  '𝜢' => 'Η',
-  '𝜣' => 'Θ',
-  '𝜤' => 'Ι',
-  '𝜥' => 'Κ',
-  '𝜦' => 'Λ',
-  '𝜧' => 'Μ',
-  '𝜨' => 'Ν',
-  '𝜩' => 'Ξ',
-  '𝜪' => 'Ο',
-  '𝜫' => 'Π',
-  '𝜬' => 'Ρ',
-  '𝜭' => 'Θ',
-  '𝜮' => 'Σ',
-  '𝜯' => 'Τ',
-  '𝜰' => 'Υ',
-  '𝜱' => 'Φ',
-  '𝜲' => 'Χ',
-  '𝜳' => 'Ψ',
-  '𝜴' => 'Ω',
-  '𝜵' => '∇',
-  '𝜶' => 'α',
-  '𝜷' => 'β',
-  '𝜸' => 'γ',
-  '𝜹' => 'δ',
-  '𝜺' => 'ε',
-  '𝜻' => 'ζ',
-  '𝜼' => 'η',
-  '𝜽' => 'θ',
-  '𝜾' => 'ι',
-  '𝜿' => 'κ',
-  '𝝀' => 'λ',
-  '𝝁' => 'μ',
-  '𝝂' => 'ν',
-  '𝝃' => 'ξ',
-  '𝝄' => 'ο',
-  '𝝅' => 'π',
-  '𝝆' => 'ρ',
-  '𝝇' => 'ς',
-  '𝝈' => 'σ',
-  '𝝉' => 'τ',
-  '𝝊' => 'υ',
-  '𝝋' => 'φ',
-  '𝝌' => 'χ',
-  '𝝍' => 'ψ',
-  '𝝎' => 'ω',
-  '𝝏' => '∂',
-  '𝝐' => 'ε',
-  '𝝑' => 'θ',
-  '𝝒' => 'κ',
-  '𝝓' => 'φ',
-  '𝝔' => 'ρ',
-  '𝝕' => 'π',
-  '𝝖' => 'Α',
-  '𝝗' => 'Β',
-  '𝝘' => 'Γ',
-  '𝝙' => 'Δ',
-  '𝝚' => 'Ε',
-  '𝝛' => 'Ζ',
-  '𝝜' => 'Η',
-  '𝝝' => 'Θ',
-  '𝝞' => 'Ι',
-  '𝝟' => 'Κ',
-  '𝝠' => 'Λ',
-  '𝝡' => 'Μ',
-  '𝝢' => 'Ν',
-  '𝝣' => 'Ξ',
-  '𝝤' => 'Ο',
-  '𝝥' => 'Π',
-  '𝝦' => 'Ρ',
-  '𝝧' => 'Θ',
-  '𝝨' => 'Σ',
-  '𝝩' => 'Τ',
-  '𝝪' => 'Υ',
-  '𝝫' => 'Φ',
-  '𝝬' => 'Χ',
-  '𝝭' => 'Ψ',
-  '𝝮' => 'Ω',
-  '𝝯' => '∇',
-  '𝝰' => 'α',
-  '𝝱' => 'β',
-  '𝝲' => 'γ',
-  '𝝳' => 'δ',
-  '𝝴' => 'ε',
-  '𝝵' => 'ζ',
-  '𝝶' => 'η',
-  '𝝷' => 'θ',
-  '𝝸' => 'ι',
-  '𝝹' => 'κ',
-  '𝝺' => 'λ',
-  '𝝻' => 'μ',
-  '𝝼' => 'ν',
-  '𝝽' => 'ξ',
-  '𝝾' => 'ο',
-  '𝝿' => 'π',
-  '𝞀' => 'ρ',
-  '𝞁' => 'ς',
-  '𝞂' => 'σ',
-  '𝞃' => 'τ',
-  '𝞄' => 'υ',
-  '𝞅' => 'φ',
-  '𝞆' => 'χ',
-  '𝞇' => 'ψ',
-  '𝞈' => 'ω',
-  '𝞉' => '∂',
-  '𝞊' => 'ε',
-  '𝞋' => 'θ',
-  '𝞌' => 'κ',
-  '𝞍' => 'φ',
-  '𝞎' => 'ρ',
-  '𝞏' => 'π',
-  '𝞐' => 'Α',
-  '𝞑' => 'Β',
-  '𝞒' => 'Γ',
-  '𝞓' => 'Δ',
-  '𝞔' => 'Ε',
-  '𝞕' => 'Ζ',
-  '𝞖' => 'Η',
-  '𝞗' => 'Θ',
-  '𝞘' => 'Ι',
-  '𝞙' => 'Κ',
-  '𝞚' => 'Λ',
-  '𝞛' => 'Μ',
-  '𝞜' => 'Ν',
-  '𝞝' => 'Ξ',
-  '𝞞' => 'Ο',
-  '𝞟' => 'Π',
-  '𝞠' => 'Ρ',
-  '𝞡' => 'Θ',
-  '𝞢' => 'Σ',
-  '𝞣' => 'Τ',
-  '𝞤' => 'Υ',
-  '𝞥' => 'Φ',
-  '𝞦' => 'Χ',
-  '𝞧' => 'Ψ',
-  '𝞨' => 'Ω',
-  '𝞩' => '∇',
-  '𝞪' => 'α',
-  '𝞫' => 'β',
-  '𝞬' => 'γ',
-  '𝞭' => 'δ',
-  '𝞮' => 'ε',
-  '𝞯' => 'ζ',
-  '𝞰' => 'η',
-  '𝞱' => 'θ',
-  '𝞲' => 'ι',
-  '𝞳' => 'κ',
-  '𝞴' => 'λ',
-  '𝞵' => 'μ',
-  '𝞶' => 'ν',
-  '𝞷' => 'ξ',
-  '𝞸' => 'ο',
-  '𝞹' => 'π',
-  '𝞺' => 'ρ',
-  '𝞻' => 'ς',
-  '𝞼' => 'σ',
-  '𝞽' => 'τ',
-  '𝞾' => 'υ',
-  '𝞿' => 'φ',
-  '𝟀' => 'χ',
-  '𝟁' => 'ψ',
-  '𝟂' => 'ω',
-  '𝟃' => '∂',
-  '𝟄' => 'ε',
-  '𝟅' => 'θ',
-  '𝟆' => 'κ',
-  '𝟇' => 'φ',
-  '𝟈' => 'ρ',
-  '𝟉' => 'π',
-  '𝟊' => 'Ϝ',
-  '𝟋' => 'ϝ',
-  '𝟎' => '0',
-  '𝟏' => '1',
-  '𝟐' => '2',
-  '𝟑' => '3',
-  '𝟒' => '4',
-  '𝟓' => '5',
-  '𝟔' => '6',
-  '𝟕' => '7',
-  '𝟖' => '8',
-  '𝟗' => '9',
-  '𝟘' => '0',
-  '𝟙' => '1',
-  '𝟚' => '2',
-  '𝟛' => '3',
-  '𝟜' => '4',
-  '𝟝' => '5',
-  '𝟞' => '6',
-  '𝟟' => '7',
-  '𝟠' => '8',
-  '𝟡' => '9',
-  '𝟢' => '0',
-  '𝟣' => '1',
-  '𝟤' => '2',
-  '𝟥' => '3',
-  '𝟦' => '4',
-  '𝟧' => '5',
-  '𝟨' => '6',
-  '𝟩' => '7',
-  '𝟪' => '8',
-  '𝟫' => '9',
-  '𝟬' => '0',
-  '𝟭' => '1',
-  '𝟮' => '2',
-  '𝟯' => '3',
-  '𝟰' => '4',
-  '𝟱' => '5',
-  '𝟲' => '6',
-  '𝟳' => '7',
-  '𝟴' => '8',
-  '𝟵' => '9',
-  '𝟶' => '0',
-  '𝟷' => '1',
-  '𝟸' => '2',
-  '𝟹' => '3',
-  '𝟺' => '4',
-  '𝟻' => '5',
-  '𝟼' => '6',
-  '𝟽' => '7',
-  '𝟾' => '8',
-  '𝟿' => '9',
-  '𞸀' => 'ا',
-  '𞸁' => 'ب',
-  '𞸂' => 'ج',
-  '𞸃' => 'د',
-  '𞸅' => 'و',
-  '𞸆' => 'ز',
-  '𞸇' => 'ح',
-  '𞸈' => 'ط',
-  '𞸉' => 'ي',
-  '𞸊' => 'ك',
-  '𞸋' => 'ل',
-  '𞸌' => 'م',
-  '𞸍' => 'ن',
-  '𞸎' => 'س',
-  '𞸏' => 'ع',
-  '𞸐' => 'ف',
-  '𞸑' => 'ص',
-  '𞸒' => 'ق',
-  '𞸓' => 'ر',
-  '𞸔' => 'ش',
-  '𞸕' => 'ت',
-  '𞸖' => 'ث',
-  '𞸗' => 'خ',
-  '𞸘' => 'ذ',
-  '𞸙' => 'ض',
-  '𞸚' => 'ظ',
-  '𞸛' => 'غ',
-  '𞸜' => 'ٮ',
-  '𞸝' => 'ں',
-  '𞸞' => 'ڡ',
-  '𞸟' => 'ٯ',
-  '𞸡' => 'ب',
-  '𞸢' => 'ج',
-  '𞸤' => 'ه',
-  '𞸧' => 'ح',
-  '𞸩' => 'ي',
-  '𞸪' => 'ك',
-  '𞸫' => 'ل',
-  '𞸬' => 'م',
-  '𞸭' => 'ن',
-  '𞸮' => 'س',
-  '𞸯' => 'ع',
-  '𞸰' => 'ف',
-  '𞸱' => 'ص',
-  '𞸲' => 'ق',
-  '𞸴' => 'ش',
-  '𞸵' => 'ت',
-  '𞸶' => 'ث',
-  '𞸷' => 'خ',
-  '𞸹' => 'ض',
-  '𞸻' => 'غ',
-  '𞹂' => 'ج',
-  '𞹇' => 'ح',
-  '𞹉' => 'ي',
-  '𞹋' => 'ل',
-  '𞹍' => 'ن',
-  '𞹎' => 'س',
-  '𞹏' => 'ع',
-  '𞹑' => 'ص',
-  'ðž¹’' => 'Ù‚',
-  'ðž¹”' => 'Ø´',
-  'ðž¹—' => 'Ø®',
-  '𞹙' => 'ض',
-  '𞹛' => 'غ',
-  '𞹝' => 'ں',
-  '𞹟' => 'ٯ',
-  '𞹡' => 'ب',
-  '𞹢' => 'ج',
-  '𞹤' => 'ه',
-  'ðž¹§' => 'Ø­',
-  '𞹨' => 'ط',
-  '𞹩' => 'ي',
-  '𞹪' => 'ك',
-  '𞹬' => 'م',
-  'ðž¹­' => 'Ù†',
-  '𞹮' => 'س',
-  '𞹯' => 'ع',
-  '𞹰' => 'ف',
-  '𞹱' => 'ص',
-  'ðž¹²' => 'Ù‚',
-  'ðž¹´' => 'Ø´',
-  '𞹵' => 'ت',
-  'ðž¹¶' => 'Ø«',
-  'ðž¹·' => 'Ø®',
-  '𞹹' => 'ض',
-  '𞹺' => 'ظ',
-  '𞹻' => 'غ',
-  'ðž¹¼' => 'Ù®',
-  'ðž¹¾' => 'Ú¡',
-  '𞺀' => 'ا',
-  '𞺁' => 'ب',
-  '𞺂' => 'ج',
-  '𞺃' => 'د',
-  '𞺄' => 'ه',
-  '𞺅' => 'و',
-  '𞺆' => 'ز',
-  '𞺇' => 'ح',
-  '𞺈' => 'ط',
-  '𞺉' => 'ي',
-  '𞺋' => 'ل',
-  '𞺌' => 'م',
-  '𞺍' => 'ن',
-  '𞺎' => 'س',
-  '𞺏' => 'ع',
-  '𞺐' => 'ف',
-  '𞺑' => 'ص',
-  '𞺒' => 'ق',
-  '𞺓' => 'ر',
-  '𞺔' => 'ش',
-  '𞺕' => 'ت',
-  '𞺖' => 'ث',
-  '𞺗' => 'خ',
-  '𞺘' => 'ذ',
-  '𞺙' => 'ض',
-  '𞺚' => 'ظ',
-  '𞺛' => 'غ',
-  '𞺡' => 'ب',
-  '𞺢' => 'ج',
-  '𞺣' => 'د',
-  '𞺥' => 'و',
-  '𞺦' => 'ز',
-  '𞺧' => 'ح',
-  '𞺨' => 'ط',
-  '𞺩' => 'ي',
-  '𞺫' => 'ل',
-  '𞺬' => 'م',
-  '𞺭' => 'ن',
-  '𞺮' => 'س',
-  '𞺯' => 'ع',
-  '𞺰' => 'ف',
-  '𞺱' => 'ص',
-  '𞺲' => 'ق',
-  '𞺳' => 'ر',
-  '𞺴' => 'ش',
-  '𞺵' => 'ت',
-  '𞺶' => 'ث',
-  '𞺷' => 'خ',
-  '𞺸' => 'ذ',
-  '𞺹' => 'ض',
-  '𞺺' => 'ظ',
-  '𞺻' => 'غ',
-  '🄀' => '0.',
-  '🄁' => '0,',
-  '🄂' => '1,',
-  '🄃' => '2,',
-  '🄄' => '3,',
-  '🄅' => '4,',
-  '🄆' => '5,',
-  '🄇' => '6,',
-  '🄈' => '7,',
-  '🄉' => '8,',
-  '🄊' => '9,',
-  '🄐' => '(A)',
-  '🄑' => '(B)',
-  '🄒' => '(C)',
-  '🄓' => '(D)',
-  '🄔' => '(E)',
-  '🄕' => '(F)',
-  '🄖' => '(G)',
-  '🄗' => '(H)',
-  '🄘' => '(I)',
-  '🄙' => '(J)',
-  '🄚' => '(K)',
-  '🄛' => '(L)',
-  '🄜' => '(M)',
-  '🄝' => '(N)',
-  '🄞' => '(O)',
-  '🄟' => '(P)',
-  '🄠' => '(Q)',
-  '🄡' => '(R)',
-  '🄢' => '(S)',
-  '🄣' => '(T)',
-  '🄤' => '(U)',
-  '🄥' => '(V)',
-  '🄦' => '(W)',
-  '🄧' => '(X)',
-  '🄨' => '(Y)',
-  '🄩' => '(Z)',
-  '🄪' => '〔S〕',
-  '🄫' => 'C',
-  '🄬' => 'R',
-  '🄭' => 'CD',
-  '🄮' => 'WZ',
-  '🄰' => 'A',
-  '🄱' => 'B',
-  '🄲' => 'C',
-  '🄳' => 'D',
-  '🄴' => 'E',
-  '🄵' => 'F',
-  '🄶' => 'G',
-  '🄷' => 'H',
-  '🄸' => 'I',
-  '🄹' => 'J',
-  '🄺' => 'K',
-  '🄻' => 'L',
-  '🄼' => 'M',
-  '🄽' => 'N',
-  '🄾' => 'O',
-  '🄿' => 'P',
-  '🅀' => 'Q',
-  '🅁' => 'R',
-  '🅂' => 'S',
-  '🅃' => 'T',
-  '🅄' => 'U',
-  '🅅' => 'V',
-  '🅆' => 'W',
-  '🅇' => 'X',
-  '🅈' => 'Y',
-  '🅉' => 'Z',
-  '🅊' => 'HV',
-  '🅋' => 'MV',
-  '🅌' => 'SD',
-  '🅍' => 'SS',
-  '🅎' => 'PPV',
-  '🅏' => 'WC',
-  '🅪' => 'MC',
-  '🅫' => 'MD',
-  '🅬' => 'MR',
-  '🆐' => 'DJ',
-  '🈀' => 'ほか',
-  '🈁' => 'ココ',
-  '🈂' => 'サ',
-  '🈐' => '手',
-  '🈑' => '字',
-  '🈒' => '双',
-  '🈓' => 'デ',
-  '🈔' => '二',
-  '🈕' => '多',
-  '🈖' => '解',
-  '🈗' => '天',
-  '🈘' => '交',
-  '🈙' => '映',
-  '🈚' => '無',
-  '🈛' => '料',
-  '🈜' => '前',
-  '🈝' => '後',
-  '🈞' => '再',
-  '🈟' => '新',
-  '🈠' => '初',
-  '🈡' => '終',
-  '🈢' => '生',
-  '🈣' => '販',
-  '🈤' => '声',
-  '🈥' => '吹',
-  '🈦' => '演',
-  '🈧' => '投',
-  '🈨' => '捕',
-  '🈩' => '一',
-  '🈪' => '三',
-  '🈫' => '遊',
-  '🈬' => '左',
-  '🈭' => '中',
-  '🈮' => '右',
-  '🈯' => '指',
-  '🈰' => '走',
-  '🈱' => '打',
-  '🈲' => '禁',
-  '🈳' => '空',
-  '🈴' => '合',
-  '🈵' => '満',
-  '🈶' => '有',
-  '🈷' => '月',
-  '🈸' => '申',
-  '🈹' => '割',
-  '🈺' => '営',
-  '🈻' => '配',
-  '🉀' => '〔本〕',
-  '🉁' => '〔三〕',
-  '🉂' => '〔二〕',
-  '🉃' => '〔安〕',
-  '🉄' => '〔点〕',
-  '🉅' => '〔打〕',
-  '🉆' => '〔盗〕',
-  '🉇' => '〔勝〕',
-  '🉈' => '〔敗〕',
-  '🉐' => '得',
-  '🉑' => '可',
-  '🯰' => '0',
-  '🯱' => '1',
-  '🯲' => '2',
-  '🯳' => '3',
-  '🯴' => '4',
-  '🯵' => '5',
-  '🯶' => '6',
-  '🯷' => '7',
-  '🯸' => '8',
-  '🯹' => '9',
-);
diff --git a/vendor/symfony/polyfill-intl-normalizer/bootstrap.php b/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
deleted file mode 100644
index bac4318c966fa0ac9a726bd2df0a44eafbde200b..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Normalizer as p;
-
-if (!function_exists('normalizer_is_normalized')) {
-    function normalizer_is_normalized($input, $form = p\Normalizer::NFC) { return p\Normalizer::isNormalized($input, $form); }
-}
-if (!function_exists('normalizer_normalize')) {
-    function normalizer_normalize($input, $form = p\Normalizer::NFC) { return p\Normalizer::normalize($input, $form); }
-}
diff --git a/vendor/symfony/polyfill-intl-normalizer/composer.json b/vendor/symfony/polyfill-intl-normalizer/composer.json
deleted file mode 100644
index 873abd3eaea4140cb296de77b320098ec417e968..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-intl-normalizer/composer.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-    "name": "symfony/polyfill-intl-normalizer",
-    "type": "library",
-    "description": "Symfony polyfill for intl's Normalizer class and related functions",
-    "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "normalizer"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Nicolas Grekas",
-            "email": "p@tchwork.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Polyfill\\Intl\\Normalizer\\": "" },
-        "files": [ "bootstrap.php" ],
-        "classmap": [ "Resources/stubs" ]
-    },
-    "suggest": {
-        "ext-intl": "For best performance"
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-main": "1.20-dev"
-        },
-        "thanks": {
-            "name": "symfony/polyfill",
-            "url": "https://github.com/symfony/polyfill"
-        }
-    }
-}
diff --git a/vendor/symfony/polyfill-mbstring/LICENSE b/vendor/symfony/polyfill-mbstring/LICENSE
deleted file mode 100644
index 4cd8bdd3007da4d62985ec9e5ca81a1e18ae34d1..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-mbstring/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015-2019 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-mbstring/Mbstring.php b/vendor/symfony/polyfill-mbstring/Mbstring.php
deleted file mode 100644
index 7bb3023715abb0d2ce8d90cebe6b175a2e0ec8fb..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-mbstring/Mbstring.php
+++ /dev/null
@@ -1,846 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Mbstring;
-
-/**
- * Partial mbstring implementation in PHP, iconv based, UTF-8 centric.
- *
- * Implemented:
- * - mb_chr                  - Returns a specific character from its Unicode code point
- * - mb_convert_encoding     - Convert character encoding
- * - mb_convert_variables    - Convert character code in variable(s)
- * - mb_decode_mimeheader    - Decode string in MIME header field
- * - mb_encode_mimeheader    - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED
- * - mb_decode_numericentity - Decode HTML numeric string reference to character
- * - mb_encode_numericentity - Encode character to HTML numeric string reference
- * - mb_convert_case         - Perform case folding on a string
- * - mb_detect_encoding      - Detect character encoding
- * - mb_get_info             - Get internal settings of mbstring
- * - mb_http_input           - Detect HTTP input character encoding
- * - mb_http_output          - Set/Get HTTP output character encoding
- * - mb_internal_encoding    - Set/Get internal character encoding
- * - mb_list_encodings       - Returns an array of all supported encodings
- * - mb_ord                  - Returns the Unicode code point of a character
- * - mb_output_handler       - Callback function converts character encoding in output buffer
- * - mb_scrub                - Replaces ill-formed byte sequences with substitute characters
- * - mb_strlen               - Get string length
- * - mb_strpos               - Find position of first occurrence of string in a string
- * - mb_strrpos              - Find position of last occurrence of a string in a string
- * - mb_str_split            - Convert a string to an array
- * - mb_strtolower           - Make a string lowercase
- * - mb_strtoupper           - Make a string uppercase
- * - mb_substitute_character - Set/Get substitution character
- * - mb_substr               - Get part of string
- * - mb_stripos              - Finds position of first occurrence of a string within another, case insensitive
- * - mb_stristr              - Finds first occurrence of a string within another, case insensitive
- * - mb_strrchr              - Finds the last occurrence of a character in a string within another
- * - mb_strrichr             - Finds the last occurrence of a character in a string within another, case insensitive
- * - mb_strripos             - Finds position of last occurrence of a string within another, case insensitive
- * - mb_strstr               - Finds first occurrence of a string within another
- * - mb_strwidth             - Return width of string
- * - mb_substr_count         - Count the number of substring occurrences
- *
- * Not implemented:
- * - mb_convert_kana         - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
- * - mb_ereg_*               - Regular expression with multibyte support
- * - mb_parse_str            - Parse GET/POST/COOKIE data and set global variable
- * - mb_preferred_mime_name  - Get MIME charset string
- * - mb_regex_encoding       - Returns current encoding for multibyte regex as string
- * - mb_regex_set_options    - Set/Get the default options for mbregex functions
- * - mb_send_mail            - Send encoded mail
- * - mb_split                - Split multibyte string using regular expression
- * - mb_strcut               - Get part of string
- * - mb_strimwidth           - Get truncated string with specified width
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-final class Mbstring
-{
-    const MB_CASE_FOLD = PHP_INT_MAX;
-
-    private static $encodingList = array('ASCII', 'UTF-8');
-    private static $language = 'neutral';
-    private static $internalEncoding = 'UTF-8';
-    private static $caseFold = array(
-        array('µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"),
-        array('μ', 's', 'ι',        'σ', 'β',        'θ',        'φ',        'π',        'κ',        'ρ',        'ε',        "\xE1\xB9\xA1", 'ι'),
-    );
-
-    public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
-    {
-        if (\is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) {
-            $fromEncoding = self::mb_detect_encoding($s, $fromEncoding);
-        } else {
-            $fromEncoding = self::getEncoding($fromEncoding);
-        }
-
-        $toEncoding = self::getEncoding($toEncoding);
-
-        if ('BASE64' === $fromEncoding) {
-            $s = base64_decode($s);
-            $fromEncoding = $toEncoding;
-        }
-
-        if ('BASE64' === $toEncoding) {
-            return base64_encode($s);
-        }
-
-        if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) {
-            if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) {
-                $fromEncoding = 'Windows-1252';
-            }
-            if ('UTF-8' !== $fromEncoding) {
-                $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s);
-            }
-
-            return preg_replace_callback('/[\x80-\xFF]+/', array(__CLASS__, 'html_encoding_callback'), $s);
-        }
-
-        if ('HTML-ENTITIES' === $fromEncoding) {
-            $s = html_entity_decode($s, ENT_COMPAT, 'UTF-8');
-            $fromEncoding = 'UTF-8';
-        }
-
-        return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
-    }
-
-    public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars)
-    {
-        $ok = true;
-        array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
-            if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
-                $ok = false;
-            }
-        });
-
-        return $ok ? $fromEncoding : false;
-    }
-
-    public static function mb_decode_mimeheader($s)
-    {
-        return iconv_mime_decode($s, 2, self::$internalEncoding);
-    }
-
-    public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null)
-    {
-        trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', E_USER_WARNING);
-    }
-
-    public static function mb_decode_numericentity($s, $convmap, $encoding = null)
-    {
-        if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
-            trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
-
-            return null;
-        }
-
-        if (!\is_array($convmap) || !$convmap) {
-            return false;
-        }
-
-        if (null !== $encoding && !\is_scalar($encoding)) {
-            trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
-
-            return '';  // Instead of null (cf. mb_encode_numericentity).
-        }
-
-        $s = (string) $s;
-        if ('' === $s) {
-            return '';
-        }
-
-        $encoding = self::getEncoding($encoding);
-
-        if ('UTF-8' === $encoding) {
-            $encoding = null;
-            if (!preg_match('//u', $s)) {
-                $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
-            }
-        } else {
-            $s = iconv($encoding, 'UTF-8//IGNORE', $s);
-        }
-
-        $cnt = floor(\count($convmap) / 4) * 4;
-
-        for ($i = 0; $i < $cnt; $i += 4) {
-            // collector_decode_htmlnumericentity ignores $convmap[$i + 3]
-            $convmap[$i] += $convmap[$i + 2];
-            $convmap[$i + 1] += $convmap[$i + 2];
-        }
-
-        $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) {
-            $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1];
-            for ($i = 0; $i < $cnt; $i += 4) {
-                if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) {
-                    return Mbstring::mb_chr($c - $convmap[$i + 2]);
-                }
-            }
-
-            return $m[0];
-        }, $s);
-
-        if (null === $encoding) {
-            return $s;
-        }
-
-        return iconv('UTF-8', $encoding.'//IGNORE', $s);
-    }
-
-    public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false)
-    {
-        if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
-            trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
-
-            return null;
-        }
-
-        if (!\is_array($convmap) || !$convmap) {
-            return false;
-        }
-
-        if (null !== $encoding && !\is_scalar($encoding)) {
-            trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
-
-            return null;  // Instead of '' (cf. mb_decode_numericentity).
-        }
-
-        if (null !== $is_hex && !\is_scalar($is_hex)) {
-            trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', E_USER_WARNING);
-
-            return null;
-        }
-
-        $s = (string) $s;
-        if ('' === $s) {
-            return '';
-        }
-
-        $encoding = self::getEncoding($encoding);
-
-        if ('UTF-8' === $encoding) {
-            $encoding = null;
-            if (!preg_match('//u', $s)) {
-                $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
-            }
-        } else {
-            $s = iconv($encoding, 'UTF-8//IGNORE', $s);
-        }
-
-        static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
-
-        $cnt = floor(\count($convmap) / 4) * 4;
-        $i = 0;
-        $len = \strlen($s);
-        $result = '';
-
-        while ($i < $len) {
-            $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
-            $uchr = substr($s, $i, $ulen);
-            $i += $ulen;
-            $c = self::mb_ord($uchr);
-
-            for ($j = 0; $j < $cnt; $j += 4) {
-                if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) {
-                    $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3];
-                    $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';';
-                    continue 2;
-                }
-            }
-            $result .= $uchr;
-        }
-
-        if (null === $encoding) {
-            return $result;
-        }
-
-        return iconv('UTF-8', $encoding.'//IGNORE', $result);
-    }
-
-    public static function mb_convert_case($s, $mode, $encoding = null)
-    {
-        $s = (string) $s;
-        if ('' === $s) {
-            return '';
-        }
-
-        $encoding = self::getEncoding($encoding);
-
-        if ('UTF-8' === $encoding) {
-            $encoding = null;
-            if (!preg_match('//u', $s)) {
-                $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
-            }
-        } else {
-            $s = iconv($encoding, 'UTF-8//IGNORE', $s);
-        }
-
-        if (MB_CASE_TITLE == $mode) {
-            static $titleRegexp = null;
-            if (null === $titleRegexp) {
-                $titleRegexp = self::getData('titleCaseRegexp');
-            }
-            $s = preg_replace_callback($titleRegexp, array(__CLASS__, 'title_case'), $s);
-        } else {
-            if (MB_CASE_UPPER == $mode) {
-                static $upper = null;
-                if (null === $upper) {
-                    $upper = self::getData('upperCase');
-                }
-                $map = $upper;
-            } else {
-                if (self::MB_CASE_FOLD === $mode) {
-                    $s = str_replace(self::$caseFold[0], self::$caseFold[1], $s);
-                }
-
-                static $lower = null;
-                if (null === $lower) {
-                    $lower = self::getData('lowerCase');
-                }
-                $map = $lower;
-            }
-
-            static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
-
-            $i = 0;
-            $len = \strlen($s);
-
-            while ($i < $len) {
-                $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
-                $uchr = substr($s, $i, $ulen);
-                $i += $ulen;
-
-                if (isset($map[$uchr])) {
-                    $uchr = $map[$uchr];
-                    $nlen = \strlen($uchr);
-
-                    if ($nlen == $ulen) {
-                        $nlen = $i;
-                        do {
-                            $s[--$nlen] = $uchr[--$ulen];
-                        } while ($ulen);
-                    } else {
-                        $s = substr_replace($s, $uchr, $i - $ulen, $ulen);
-                        $len += $nlen - $ulen;
-                        $i += $nlen - $ulen;
-                    }
-                }
-            }
-        }
-
-        if (null === $encoding) {
-            return $s;
-        }
-
-        return iconv('UTF-8', $encoding.'//IGNORE', $s);
-    }
-
-    public static function mb_internal_encoding($encoding = null)
-    {
-        if (null === $encoding) {
-            return self::$internalEncoding;
-        }
-
-        $encoding = self::getEncoding($encoding);
-
-        if ('UTF-8' === $encoding || false !== @iconv($encoding, $encoding, ' ')) {
-            self::$internalEncoding = $encoding;
-
-            return true;
-        }
-
-        return false;
-    }
-
-    public static function mb_language($lang = null)
-    {
-        if (null === $lang) {
-            return self::$language;
-        }
-
-        switch ($lang = strtolower($lang)) {
-            case 'uni':
-            case 'neutral':
-                self::$language = $lang;
-
-                return true;
-        }
-
-        return false;
-    }
-
-    public static function mb_list_encodings()
-    {
-        return array('UTF-8');
-    }
-
-    public static function mb_encoding_aliases($encoding)
-    {
-        switch (strtoupper($encoding)) {
-            case 'UTF8':
-            case 'UTF-8':
-                return array('utf8');
-        }
-
-        return false;
-    }
-
-    public static function mb_check_encoding($var = null, $encoding = null)
-    {
-        if (null === $encoding) {
-            if (null === $var) {
-                return false;
-            }
-            $encoding = self::$internalEncoding;
-        }
-
-        return self::mb_detect_encoding($var, array($encoding)) || false !== @iconv($encoding, $encoding, $var);
-    }
-
-    public static function mb_detect_encoding($str, $encodingList = null, $strict = false)
-    {
-        if (null === $encodingList) {
-            $encodingList = self::$encodingList;
-        } else {
-            if (!\is_array($encodingList)) {
-                $encodingList = array_map('trim', explode(',', $encodingList));
-            }
-            $encodingList = array_map('strtoupper', $encodingList);
-        }
-
-        foreach ($encodingList as $enc) {
-            switch ($enc) {
-                case 'ASCII':
-                    if (!preg_match('/[\x80-\xFF]/', $str)) {
-                        return $enc;
-                    }
-                    break;
-
-                case 'UTF8':
-                case 'UTF-8':
-                    if (preg_match('//u', $str)) {
-                        return 'UTF-8';
-                    }
-                    break;
-
-                default:
-                    if (0 === strncmp($enc, 'ISO-8859-', 9)) {
-                        return $enc;
-                    }
-            }
-        }
-
-        return false;
-    }
-
-    public static function mb_detect_order($encodingList = null)
-    {
-        if (null === $encodingList) {
-            return self::$encodingList;
-        }
-
-        if (!\is_array($encodingList)) {
-            $encodingList = array_map('trim', explode(',', $encodingList));
-        }
-        $encodingList = array_map('strtoupper', $encodingList);
-
-        foreach ($encodingList as $enc) {
-            switch ($enc) {
-                default:
-                    if (strncmp($enc, 'ISO-8859-', 9)) {
-                        return false;
-                    }
-                    // no break
-                case 'ASCII':
-                case 'UTF8':
-                case 'UTF-8':
-            }
-        }
-
-        self::$encodingList = $encodingList;
-
-        return true;
-    }
-
-    public static function mb_strlen($s, $encoding = null)
-    {
-        $encoding = self::getEncoding($encoding);
-        if ('CP850' === $encoding || 'ASCII' === $encoding) {
-            return \strlen($s);
-        }
-
-        return @iconv_strlen($s, $encoding);
-    }
-
-    public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null)
-    {
-        $encoding = self::getEncoding($encoding);
-        if ('CP850' === $encoding || 'ASCII' === $encoding) {
-            return strpos($haystack, $needle, $offset);
-        }
-
-        $needle = (string) $needle;
-        if ('' === $needle) {
-            trigger_error(__METHOD__.': Empty delimiter', E_USER_WARNING);
-
-            return false;
-        }
-
-        return iconv_strpos($haystack, $needle, $offset, $encoding);
-    }
-
-    public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null)
-    {
-        $encoding = self::getEncoding($encoding);
-        if ('CP850' === $encoding || 'ASCII' === $encoding) {
-            return strrpos($haystack, $needle, $offset);
-        }
-
-        if ($offset != (int) $offset) {
-            $offset = 0;
-        } elseif ($offset = (int) $offset) {
-            if ($offset < 0) {
-                if (0 > $offset += self::mb_strlen($needle)) {
-                    $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
-                }
-                $offset = 0;
-            } else {
-                $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
-            }
-        }
-
-        $pos = iconv_strrpos($haystack, $needle, $encoding);
-
-        return false !== $pos ? $offset + $pos : false;
-    }
-
-    public static function mb_str_split($string, $split_length = 1, $encoding = null)
-    {
-        if (null !== $string && !\is_scalar($string) && !(\is_object($string) && \method_exists($string, '__toString'))) {
-            trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', E_USER_WARNING);
-
-            return null;
-        }
-
-        if (1 > $split_length = (int) $split_length) {
-            trigger_error('The length of each segment must be greater than zero', E_USER_WARNING);
-
-            return false;
-        }
-
-        if (null === $encoding) {
-            $encoding = mb_internal_encoding();
-        }
-
-        if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
-            $rx = '/(';
-            while (65535 < $split_length) {
-                $rx .= '.{65535}';
-                $split_length -= 65535;
-            }
-            $rx .= '.{'.$split_length.'})/us';
-
-            return preg_split($rx, $string, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
-        }
-
-        $result = array();
-        $length = mb_strlen($string, $encoding);
-
-        for ($i = 0; $i < $length; $i += $split_length) {
-            $result[] = mb_substr($string, $i, $split_length, $encoding);
-        }
-
-        return $result;
-    }
-
-    public static function mb_strtolower($s, $encoding = null)
-    {
-        return self::mb_convert_case($s, MB_CASE_LOWER, $encoding);
-    }
-
-    public static function mb_strtoupper($s, $encoding = null)
-    {
-        return self::mb_convert_case($s, MB_CASE_UPPER, $encoding);
-    }
-
-    public static function mb_substitute_character($c = null)
-    {
-        if (0 === strcasecmp($c, 'none')) {
-            return true;
-        }
-
-        return null !== $c ? false : 'none';
-    }
-
-    public static function mb_substr($s, $start, $length = null, $encoding = null)
-    {
-        $encoding = self::getEncoding($encoding);
-        if ('CP850' === $encoding || 'ASCII' === $encoding) {
-            return (string) substr($s, $start, null === $length ? 2147483647 : $length);
-        }
-
-        if ($start < 0) {
-            $start = iconv_strlen($s, $encoding) + $start;
-            if ($start < 0) {
-                $start = 0;
-            }
-        }
-
-        if (null === $length) {
-            $length = 2147483647;
-        } elseif ($length < 0) {
-            $length = iconv_strlen($s, $encoding) + $length - $start;
-            if ($length < 0) {
-                return '';
-            }
-        }
-
-        return (string) iconv_substr($s, $start, $length, $encoding);
-    }
-
-    public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
-    {
-        $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
-        $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
-
-        return self::mb_strpos($haystack, $needle, $offset, $encoding);
-    }
-
-    public static function mb_stristr($haystack, $needle, $part = false, $encoding = null)
-    {
-        $pos = self::mb_stripos($haystack, $needle, 0, $encoding);
-
-        return self::getSubpart($pos, $part, $haystack, $encoding);
-    }
-
-    public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null)
-    {
-        $encoding = self::getEncoding($encoding);
-        if ('CP850' === $encoding || 'ASCII' === $encoding) {
-            $pos = strrpos($haystack, $needle);
-        } else {
-            $needle = self::mb_substr($needle, 0, 1, $encoding);
-            $pos = iconv_strrpos($haystack, $needle, $encoding);
-        }
-
-        return self::getSubpart($pos, $part, $haystack, $encoding);
-    }
-
-    public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null)
-    {
-        $needle = self::mb_substr($needle, 0, 1, $encoding);
-        $pos = self::mb_strripos($haystack, $needle, $encoding);
-
-        return self::getSubpart($pos, $part, $haystack, $encoding);
-    }
-
-    public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
-    {
-        $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
-        $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
-
-        return self::mb_strrpos($haystack, $needle, $offset, $encoding);
-    }
-
-    public static function mb_strstr($haystack, $needle, $part = false, $encoding = null)
-    {
-        $pos = strpos($haystack, $needle);
-        if (false === $pos) {
-            return false;
-        }
-        if ($part) {
-            return substr($haystack, 0, $pos);
-        }
-
-        return substr($haystack, $pos);
-    }
-
-    public static function mb_get_info($type = 'all')
-    {
-        $info = array(
-            'internal_encoding' => self::$internalEncoding,
-            'http_output' => 'pass',
-            'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)',
-            'func_overload' => 0,
-            'func_overload_list' => 'no overload',
-            'mail_charset' => 'UTF-8',
-            'mail_header_encoding' => 'BASE64',
-            'mail_body_encoding' => 'BASE64',
-            'illegal_chars' => 0,
-            'encoding_translation' => 'Off',
-            'language' => self::$language,
-            'detect_order' => self::$encodingList,
-            'substitute_character' => 'none',
-            'strict_detection' => 'Off',
-        );
-
-        if ('all' === $type) {
-            return $info;
-        }
-        if (isset($info[$type])) {
-            return $info[$type];
-        }
-
-        return false;
-    }
-
-    public static function mb_http_input($type = '')
-    {
-        return false;
-    }
-
-    public static function mb_http_output($encoding = null)
-    {
-        return null !== $encoding ? 'pass' === $encoding : 'pass';
-    }
-
-    public static function mb_strwidth($s, $encoding = null)
-    {
-        $encoding = self::getEncoding($encoding);
-
-        if ('UTF-8' !== $encoding) {
-            $s = iconv($encoding, 'UTF-8//IGNORE', $s);
-        }
-
-        $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide);
-
-        return ($wide << 1) + iconv_strlen($s, 'UTF-8');
-    }
-
-    public static function mb_substr_count($haystack, $needle, $encoding = null)
-    {
-        return substr_count($haystack, $needle);
-    }
-
-    public static function mb_output_handler($contents, $status)
-    {
-        return $contents;
-    }
-
-    public static function mb_chr($code, $encoding = null)
-    {
-        if (0x80 > $code %= 0x200000) {
-            $s = \chr($code);
-        } elseif (0x800 > $code) {
-            $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
-        } elseif (0x10000 > $code) {
-            $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
-        } else {
-            $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
-        }
-
-        if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
-            $s = mb_convert_encoding($s, $encoding, 'UTF-8');
-        }
-
-        return $s;
-    }
-
-    public static function mb_ord($s, $encoding = null)
-    {
-        if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
-            $s = mb_convert_encoding($s, 'UTF-8', $encoding);
-        }
-
-        if (1 === \strlen($s)) {
-            return \ord($s);
-        }
-
-        $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
-        if (0xF0 <= $code) {
-            return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
-        }
-        if (0xE0 <= $code) {
-            return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
-        }
-        if (0xC0 <= $code) {
-            return (($code - 0xC0) << 6) + $s[2] - 0x80;
-        }
-
-        return $code;
-    }
-
-    private static function getSubpart($pos, $part, $haystack, $encoding)
-    {
-        if (false === $pos) {
-            return false;
-        }
-        if ($part) {
-            return self::mb_substr($haystack, 0, $pos, $encoding);
-        }
-
-        return self::mb_substr($haystack, $pos, null, $encoding);
-    }
-
-    private static function html_encoding_callback(array $m)
-    {
-        $i = 1;
-        $entities = '';
-        $m = unpack('C*', htmlentities($m[0], ENT_COMPAT, 'UTF-8'));
-
-        while (isset($m[$i])) {
-            if (0x80 > $m[$i]) {
-                $entities .= \chr($m[$i++]);
-                continue;
-            }
-            if (0xF0 <= $m[$i]) {
-                $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
-            } elseif (0xE0 <= $m[$i]) {
-                $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
-            } else {
-                $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80;
-            }
-
-            $entities .= '&#'.$c.';';
-        }
-
-        return $entities;
-    }
-
-    private static function title_case(array $s)
-    {
-        return self::mb_convert_case($s[1], MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], MB_CASE_LOWER, 'UTF-8');
-    }
-
-    private static function getData($file)
-    {
-        if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
-            return require $file;
-        }
-
-        return false;
-    }
-
-    private static function getEncoding($encoding)
-    {
-        if (null === $encoding) {
-            return self::$internalEncoding;
-        }
-
-        if ('UTF-8' === $encoding) {
-            return 'UTF-8';
-        }
-
-        $encoding = strtoupper($encoding);
-
-        if ('8BIT' === $encoding || 'BINARY' === $encoding) {
-            return 'CP850';
-        }
-
-        if ('UTF8' === $encoding) {
-            return 'UTF-8';
-        }
-
-        return $encoding;
-    }
-}
diff --git a/vendor/symfony/polyfill-mbstring/README.md b/vendor/symfony/polyfill-mbstring/README.md
deleted file mode 100644
index 4efb599d81fcc2374cbf42273628660f40c6c683..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-mbstring/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-Symfony Polyfill / Mbstring
-===========================
-
-This component provides a partial, native PHP implementation for the
-[Mbstring](https://php.net/mbstring) extension.
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
deleted file mode 100644
index a22eca57bd99cc09a64162b32de0b143bf31be52..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
+++ /dev/null
@@ -1,1397 +0,0 @@
-<?php
-
-return array (
-  'A' => 'a',
-  'B' => 'b',
-  'C' => 'c',
-  'D' => 'd',
-  'E' => 'e',
-  'F' => 'f',
-  'G' => 'g',
-  'H' => 'h',
-  'I' => 'i',
-  'J' => 'j',
-  'K' => 'k',
-  'L' => 'l',
-  'M' => 'm',
-  'N' => 'n',
-  'O' => 'o',
-  'P' => 'p',
-  'Q' => 'q',
-  'R' => 'r',
-  'S' => 's',
-  'T' => 't',
-  'U' => 'u',
-  'V' => 'v',
-  'W' => 'w',
-  'X' => 'x',
-  'Y' => 'y',
-  'Z' => 'z',
-  'À' => 'à',
-  'Á' => 'á',
-  'Â' => 'â',
-  'Ã' => 'ã',
-  'Ä' => 'ä',
-  'Ã…' => 'Ã¥',
-  'Æ' => 'æ',
-  'Ç' => 'ç',
-  'È' => 'è',
-  'É' => 'é',
-  'Ê' => 'ê',
-  'Ë' => 'ë',
-  'Ì' => 'ì',
-  'Í' => 'í',
-  'Î' => 'î',
-  'Ï' => 'ï',
-  'Ð' => 'ð',
-  'Ñ' => 'ñ',
-  'Ò' => 'ò',
-  'Ó' => 'ó',
-  'Ô' => 'ô',
-  'Õ' => 'õ',
-  'Ö' => 'ö',
-  'Ø' => 'ø',
-  'Ù' => 'ù',
-  'Ú' => 'ú',
-  'Û' => 'û',
-  'Ü' => 'ü',
-  'Ý' => 'ý',
-  'Þ' => 'þ',
-  'Ā' => 'ā',
-  'Ă' => 'ă',
-  'Ä„' => 'Ä…',
-  'Ć' => 'ć',
-  'Ĉ' => 'ĉ',
-  'ÄŠ' => 'Ä‹',
-  'Č' => 'č',
-  'Ď' => 'ď',
-  'Đ' => 'đ',
-  'Ä’' => 'Ä“',
-  'Ä”' => 'Ä•',
-  'Ä–' => 'Ä—',
-  'Ę' => 'ę',
-  'Äš' => 'Ä›',
-  'Ĝ' => 'ĝ',
-  'Äž' => 'ÄŸ',
-  'Ä ' => 'Ä¡',
-  'Ä¢' => 'Ä£',
-  'Ĥ' => 'ĥ',
-  'Ħ' => 'ħ',
-  'Ĩ' => 'ĩ',
-  'Ī' => 'ī',
-  'Ĭ' => 'ĭ',
-  'Į' => 'į',
-  'İ' => 'i',
-  'IJ' => 'ij',
-  'Ĵ' => 'ĵ',
-  'Ķ' => 'ķ',
-  'Ĺ' => 'ĺ',
-  'Ļ' => 'ļ',
-  'Ľ' => 'ľ',
-  'Ä¿' => 'Å€',
-  'Ł' => 'ł',
-  'Ń' => 'ń',
-  'Ņ' => 'ņ',
-  'Ň' => 'ň',
-  'ÅŠ' => 'Å‹',
-  'Ō' => 'ō',
-  'Ŏ' => 'ŏ',
-  'Ő' => 'ő',
-  'Å’' => 'Å“',
-  'Å”' => 'Å•',
-  'Å–' => 'Å—',
-  'Ř' => 'ř',
-  'Åš' => 'Å›',
-  'Ŝ' => 'ŝ',
-  'Åž' => 'ÅŸ',
-  'Å ' => 'Å¡',
-  'Å¢' => 'Å£',
-  'Ť' => 'ť',
-  'Ŧ' => 'ŧ',
-  'Ũ' => 'ũ',
-  'Ū' => 'ū',
-  'Ŭ' => 'ŭ',
-  'Ů' => 'ů',
-  'Ű' => 'ű',
-  'Ų' => 'ų',
-  'Ŵ' => 'ŵ',
-  'Ŷ' => 'ŷ',
-  'Ÿ' => 'ÿ',
-  'Ź' => 'ź',
-  'Ż' => 'ż',
-  'Ž' => 'ž',
-  'Ɓ' => 'ɓ',
-  'Ƃ' => 'ƃ',
-  'Æ„' => 'Æ…',
-  'Ɔ' => 'ɔ',
-  'Ƈ' => 'ƈ',
-  'Ɖ' => 'ɖ',
-  'ÆŠ' => 'É—',
-  'Ƌ' => 'ƌ',
-  'Ǝ' => 'ǝ',
-  'Ə' => 'ə',
-  'Ɛ' => 'ɛ',
-  'Æ‘' => 'Æ’',
-  'Æ“' => 'É ',
-  'Æ”' => 'É£',
-  'Æ–' => 'É©',
-  'Ɨ' => 'ɨ',
-  'Ƙ' => 'ƙ',
-  'Ɯ' => 'ɯ',
-  'Ɲ' => 'ɲ',
-  'Ɵ' => 'ɵ',
-  'Æ ' => 'Æ¡',
-  'Æ¢' => 'Æ£',
-  'Ƥ' => 'ƥ',
-  'Ʀ' => 'ʀ',
-  'Ƨ' => 'ƨ',
-  'Ʃ' => 'ʃ',
-  'Ƭ' => 'ƭ',
-  'Ʈ' => 'ʈ',
-  'Ư' => 'ư',
-  'Ʊ' => 'ʊ',
-  'Ʋ' => 'ʋ',
-  'Ƴ' => 'ƴ',
-  'Ƶ' => 'ƶ',
-  'Æ·' => 'Ê’',
-  'Ƹ' => 'ƹ',
-  'Ƽ' => 'ƽ',
-  'DŽ' => 'dž',
-  'Dž' => 'dž',
-  'LJ' => 'lj',
-  'Lj' => 'lj',
-  'NJ' => 'nj',
-  'Nj' => 'nj',
-  'Ǎ' => 'ǎ',
-  'Ǐ' => 'ǐ',
-  'Ç‘' => 'Ç’',
-  'Ç“' => 'Ç”',
-  'Ç•' => 'Ç–',
-  'Ǘ' => 'ǘ',
-  'Ç™' => 'Çš',
-  'Ǜ' => 'ǜ',
-  'Çž' => 'ÇŸ',
-  'Ç ' => 'Ç¡',
-  'Ç¢' => 'Ç£',
-  'Ǥ' => 'ǥ',
-  'Ǧ' => 'ǧ',
-  'Ǩ' => 'ǩ',
-  'Ǫ' => 'ǫ',
-  'Ǭ' => 'ǭ',
-  'Ǯ' => 'ǯ',
-  'DZ' => 'dz',
-  'Dz' => 'dz',
-  'Ǵ' => 'ǵ',
-  'Ƕ' => 'ƕ',
-  'Ç·' => 'Æ¿',
-  'Ǹ' => 'ǹ',
-  'Ǻ' => 'ǻ',
-  'Ǽ' => 'ǽ',
-  'Ǿ' => 'ǿ',
-  'Ȁ' => 'ȁ',
-  'Ȃ' => 'ȃ',
-  'È„' => 'È…',
-  'Ȇ' => 'ȇ',
-  'Ȉ' => 'ȉ',
-  'ÈŠ' => 'È‹',
-  'Ȍ' => 'ȍ',
-  'Ȏ' => 'ȏ',
-  'Ȑ' => 'ȑ',
-  'È’' => 'È“',
-  'È”' => 'È•',
-  'È–' => 'È—',
-  'Ș' => 'ș',
-  'Èš' => 'È›',
-  'Ȝ' => 'ȝ',
-  'Èž' => 'ÈŸ',
-  'È ' => 'Æž',
-  'È¢' => 'È£',
-  'Ȥ' => 'ȥ',
-  'Ȧ' => 'ȧ',
-  'Ȩ' => 'ȩ',
-  'Ȫ' => 'ȫ',
-  'Ȭ' => 'ȭ',
-  'Ȯ' => 'ȯ',
-  'Ȱ' => 'ȱ',
-  'Ȳ' => 'ȳ',
-  'Ⱥ' => 'ⱥ',
-  'Ȼ' => 'ȼ',
-  'Ƚ' => 'ƚ',
-  'Ⱦ' => 'ⱦ',
-  'Ɂ' => 'ɂ',
-  'Ƀ' => 'ƀ',
-  'Ʉ' => 'ʉ',
-  'Ʌ' => 'ʌ',
-  'Ɇ' => 'ɇ',
-  'Ɉ' => 'ɉ',
-  'ÉŠ' => 'É‹',
-  'Ɍ' => 'ɍ',
-  'Ɏ' => 'ɏ',
-  'Ͱ' => 'ͱ',
-  'Ͳ' => 'ͳ',
-  'Ͷ' => 'ͷ',
-  'Ϳ' => 'ϳ',
-  'Ά' => 'ά',
-  'Έ' => 'έ',
-  'Ή' => 'ή',
-  'Ί' => 'ί',
-  'Ό' => 'ό',
-  'Ύ' => 'ύ',
-  'Ώ' => 'ώ',
-  'Α' => 'α',
-  'Β' => 'β',
-  'Γ' => 'γ',
-  'Δ' => 'δ',
-  'Ε' => 'ε',
-  'Ζ' => 'ζ',
-  'Η' => 'η',
-  'Θ' => 'θ',
-  'Ι' => 'ι',
-  'Κ' => 'κ',
-  'Λ' => 'λ',
-  'Μ' => 'μ',
-  'Ν' => 'ν',
-  'Ξ' => 'ξ',
-  'Ο' => 'ο',
-  'Π' => 'π',
-  'Ρ' => 'ρ',
-  'Σ' => 'σ',
-  'Τ' => 'τ',
-  'Î¥' => 'Ï…',
-  'Φ' => 'φ',
-  'Χ' => 'χ',
-  'Ψ' => 'ψ',
-  'Ω' => 'ω',
-  'Ϊ' => 'ϊ',
-  'Ϋ' => 'ϋ',
-  'Ϗ' => 'ϗ',
-  'Ϙ' => 'ϙ',
-  'Ïš' => 'Ï›',
-  'Ϝ' => 'ϝ',
-  'Ïž' => 'ÏŸ',
-  'Ï ' => 'Ï¡',
-  'Ï¢' => 'Ï£',
-  'Ϥ' => 'ϥ',
-  'Ϧ' => 'ϧ',
-  'Ϩ' => 'ϩ',
-  'Ϫ' => 'ϫ',
-  'Ϭ' => 'ϭ',
-  'Ϯ' => 'ϯ',
-  'ϴ' => 'θ',
-  'Ϸ' => 'ϸ',
-  'Ϲ' => 'ϲ',
-  'Ϻ' => 'ϻ',
-  'Ͻ' => 'ͻ',
-  'Ͼ' => 'ͼ',
-  'Ͽ' => 'ͽ',
-  'Ѐ' => 'ѐ',
-  'Ё' => 'ё',
-  'Ђ' => 'ђ',
-  'Ѓ' => 'ѓ',
-  'Є' => 'є',
-  'Ð…' => 'Ñ•',
-  'І' => 'і',
-  'Ї' => 'ї',
-  'Ј' => 'ј',
-  'Љ' => 'љ',
-  'Њ' => 'њ',
-  'Ћ' => 'ћ',
-  'Ќ' => 'ќ',
-  'Ѝ' => 'ѝ',
-  'ÐŽ' => 'Ñž',
-  'Џ' => 'џ',
-  'А' => 'а',
-  'Б' => 'б',
-  'В' => 'в',
-  'Г' => 'г',
-  'Д' => 'д',
-  'Е' => 'е',
-  'Ж' => 'ж',
-  'З' => 'з',
-  'И' => 'и',
-  'Й' => 'й',
-  'К' => 'к',
-  'Л' => 'л',
-  'М' => 'м',
-  'Н' => 'н',
-  'О' => 'о',
-  'П' => 'п',
-  'Р' => 'р',
-  'С' => 'с',
-  'Т' => 'т',
-  'У' => 'у',
-  'Ф' => 'ф',
-  'Ð¥' => 'Ñ…',
-  'Ц' => 'ц',
-  'Ч' => 'ч',
-  'Ш' => 'ш',
-  'Щ' => 'щ',
-  'Ъ' => 'ъ',
-  'Ы' => 'ы',
-  'Ь' => 'ь',
-  'Э' => 'э',
-  'Ю' => 'ю',
-  'Я' => 'я',
-  'Ñ ' => 'Ñ¡',
-  'Ñ¢' => 'Ñ£',
-  'Ѥ' => 'ѥ',
-  'Ѧ' => 'ѧ',
-  'Ѩ' => 'ѩ',
-  'Ѫ' => 'ѫ',
-  'Ѭ' => 'ѭ',
-  'Ѯ' => 'ѯ',
-  'Ѱ' => 'ѱ',
-  'Ѳ' => 'ѳ',
-  'Ѵ' => 'ѵ',
-  'Ѷ' => 'ѷ',
-  'Ѹ' => 'ѹ',
-  'Ѻ' => 'ѻ',
-  'Ѽ' => 'ѽ',
-  'Ѿ' => 'ѿ',
-  'Ҁ' => 'ҁ',
-  'ÒŠ' => 'Ò‹',
-  'Ҍ' => 'ҍ',
-  'Ҏ' => 'ҏ',
-  'Ґ' => 'ґ',
-  'Ò’' => 'Ò“',
-  'Ò”' => 'Ò•',
-  'Ò–' => 'Ò—',
-  'Ò˜' => 'Ò™',
-  'Òš' => 'Ò›',
-  'Ҝ' => 'ҝ',
-  'Òž' => 'ÒŸ',
-  'Ò ' => 'Ò¡',
-  'Ò¢' => 'Ò£',
-  'Ò¤' => 'Ò¥',
-  'Ò¦' => 'Ò§',
-  'Ò¨' => 'Ò©',
-  'Òª' => 'Ò«',
-  'Ò¬' => 'Ò­',
-  'Ò®' => 'Ò¯',
-  'Ò°' => 'Ò±',
-  'Ò²' => 'Ò³',
-  'Ò´' => 'Òµ',
-  'Ò¶' => 'Ò·',
-  'Ò¸' => 'Ò¹',
-  'Òº' => 'Ò»',
-  'Ò¼' => 'Ò½',
-  'Ò¾' => 'Ò¿',
-  'Ӏ' => 'ӏ',
-  'Ӂ' => 'ӂ',
-  'Óƒ' => 'Ó„',
-  'Ó…' => 'Ó†',
-  'Ó‡' => 'Óˆ',
-  'Ó‰' => 'ÓŠ',
-  'Ӌ' => 'ӌ',
-  'Ӎ' => 'ӎ',
-  'Ӑ' => 'ӑ',
-  'Ó’' => 'Ó“',
-  'Ó”' => 'Ó•',
-  'Ó–' => 'Ó—',
-  'Ó˜' => 'Ó™',
-  'Óš' => 'Ó›',
-  'Ӝ' => 'ӝ',
-  'Óž' => 'ÓŸ',
-  'Ó ' => 'Ó¡',
-  'Ó¢' => 'Ó£',
-  'Ó¤' => 'Ó¥',
-  'Ó¦' => 'Ó§',
-  'Ó¨' => 'Ó©',
-  'Óª' => 'Ó«',
-  'Ó¬' => 'Ó­',
-  'Ó®' => 'Ó¯',
-  'Ó°' => 'Ó±',
-  'Ó²' => 'Ó³',
-  'Ó´' => 'Óµ',
-  'Ó¶' => 'Ó·',
-  'Ó¸' => 'Ó¹',
-  'Óº' => 'Ó»',
-  'Ó¼' => 'Ó½',
-  'Ó¾' => 'Ó¿',
-  'Ԁ' => 'ԁ',
-  'Ô‚' => 'Ôƒ',
-  'Ô„' => 'Ô…',
-  'Ô†' => 'Ô‡',
-  'Ôˆ' => 'Ô‰',
-  'ÔŠ' => 'Ô‹',
-  'Ԍ' => 'ԍ',
-  'Ԏ' => 'ԏ',
-  'Ԑ' => 'ԑ',
-  'Ô’' => 'Ô“',
-  'Ô”' => 'Ô•',
-  'Ô–' => 'Ô—',
-  'Ô˜' => 'Ô™',
-  'Ôš' => 'Ô›',
-  'Ԝ' => 'ԝ',
-  'Ôž' => 'ÔŸ',
-  'Ô ' => 'Ô¡',
-  'Ô¢' => 'Ô£',
-  'Ô¤' => 'Ô¥',
-  'Ô¦' => 'Ô§',
-  'Ô¨' => 'Ô©',
-  'Ôª' => 'Ô«',
-  'Ô¬' => 'Ô­',
-  'Ô®' => 'Ô¯',
-  'Ô±' => 'Õ¡',
-  'Ô²' => 'Õ¢',
-  'Ô³' => 'Õ£',
-  'Ô´' => 'Õ¤',
-  'Ôµ' => 'Õ¥',
-  'Ô¶' => 'Õ¦',
-  'Ô·' => 'Õ§',
-  'Ô¸' => 'Õ¨',
-  'Ô¹' => 'Õ©',
-  'Ôº' => 'Õª',
-  'Ô»' => 'Õ«',
-  'Ô¼' => 'Õ¬',
-  'Ô½' => 'Õ­',
-  'Ô¾' => 'Õ®',
-  'Ô¿' => 'Õ¯',
-  'Õ€' => 'Õ°',
-  'Ձ' => 'ձ',
-  'Õ‚' => 'Õ²',
-  'Õƒ' => 'Õ³',
-  'Õ„' => 'Õ´',
-  'Õ…' => 'Õµ',
-  'Õ†' => 'Õ¶',
-  'Õ‡' => 'Õ·',
-  'Õˆ' => 'Õ¸',
-  'Õ‰' => 'Õ¹',
-  'ÕŠ' => 'Õº',
-  'Õ‹' => 'Õ»',
-  'Ռ' => 'ռ',
-  'Ս' => 'ս',
-  'ÕŽ' => 'Õ¾',
-  'Տ' => 'տ',
-  'Ր' => 'ր',
-  'Ց' => 'ց',
-  'Õ’' => 'Ö‚',
-  'Õ“' => 'Öƒ',
-  'Õ”' => 'Ö„',
-  'Õ•' => 'Ö…',
-  'Õ–' => 'Ö†',
-  'á‚ ' => 'â´€',
-  'Ⴁ' => 'ⴁ',
-  'á‚¢' => 'â´‚',
-  'á‚£' => 'â´ƒ',
-  'Ⴄ' => 'ⴄ',
-  'á‚¥' => 'â´…',
-  'Ⴆ' => 'ⴆ',
-  'á‚§' => 'â´‡',
-  'Ⴈ' => 'ⴈ',
-  'á‚©' => 'â´‰',
-  'Ⴊ' => 'ⴊ',
-  'á‚«' => 'â´‹',
-  'Ⴌ' => 'ⴌ',
-  'Ⴍ' => 'ⴍ',
-  'á‚®' => 'â´Ž',
-  'Ⴏ' => 'ⴏ',
-  'Ⴐ' => 'ⴐ',
-  'Ⴑ' => 'ⴑ',
-  'Ⴒ' => 'ⴒ',
-  'Ⴓ' => 'ⴓ',
-  'á‚´' => 'â´”',
-  'Ⴕ' => 'ⴕ',
-  'á‚¶' => 'â´–',
-  'á‚·' => 'â´—',
-  'Ⴘ' => 'ⴘ',
-  'Ⴙ' => 'ⴙ',
-  'Ⴚ' => 'ⴚ',
-  'á‚»' => 'â´›',
-  'Ⴜ' => 'ⴜ',
-  'Ⴝ' => 'ⴝ',
-  'Ⴞ' => 'ⴞ',
-  'á‚¿' => 'â´Ÿ',
-  'Ⴠ' => 'ⴠ',
-  'Ⴡ' => 'ⴡ',
-  'Ⴢ' => 'ⴢ',
-  'Ⴣ' => 'ⴣ',
-  'Ⴤ' => 'ⴤ',
-  'Ⴥ' => 'ⴥ',
-  'Ⴧ' => 'ⴧ',
-  'Ⴭ' => 'ⴭ',
-  'Ꭰ' => 'ꭰ',
-  'Ꭱ' => 'ꭱ',
-  'Ꭲ' => 'ꭲ',
-  'Ꭳ' => 'ꭳ',
-  'Ꭴ' => 'ꭴ',
-  'Ꭵ' => 'ꭵ',
-  'Ꭶ' => 'ꭶ',
-  'Ꭷ' => 'ꭷ',
-  'Ꭸ' => 'ꭸ',
-  'Ꭹ' => 'ꭹ',
-  'Ꭺ' => 'ꭺ',
-  'Ꭻ' => 'ꭻ',
-  'Ꭼ' => 'ꭼ',
-  'Ꭽ' => 'ꭽ',
-  'Ꭾ' => 'ꭾ',
-  'Ꭿ' => 'ꭿ',
-  'Ꮀ' => 'ꮀ',
-  'Ꮁ' => 'ꮁ',
-  'Ꮂ' => 'ꮂ',
-  'Ꮃ' => 'ꮃ',
-  'Ꮄ' => 'ꮄ',
-  'Ꮅ' => 'ꮅ',
-  'Ꮆ' => 'ꮆ',
-  'Ꮇ' => 'ꮇ',
-  'Ꮈ' => 'ꮈ',
-  'Ꮉ' => 'ꮉ',
-  'Ꮊ' => 'ꮊ',
-  'Ꮋ' => 'ꮋ',
-  'Ꮌ' => 'ꮌ',
-  'Ꮍ' => 'ꮍ',
-  'Ꮎ' => 'ꮎ',
-  'Ꮏ' => 'ꮏ',
-  'Ꮐ' => 'ꮐ',
-  'Ꮑ' => 'ꮑ',
-  'Ꮒ' => 'ꮒ',
-  'Ꮓ' => 'ꮓ',
-  'Ꮔ' => 'ꮔ',
-  'Ꮕ' => 'ꮕ',
-  'Ꮖ' => 'ꮖ',
-  'Ꮗ' => 'ꮗ',
-  'Ꮘ' => 'ꮘ',
-  'Ꮙ' => 'ꮙ',
-  'Ꮚ' => 'ꮚ',
-  'Ꮛ' => 'ꮛ',
-  'Ꮜ' => 'ꮜ',
-  'Ꮝ' => 'ꮝ',
-  'Ꮞ' => 'ꮞ',
-  'Ꮟ' => 'ꮟ',
-  'Ꮠ' => 'ꮠ',
-  'Ꮡ' => 'ꮡ',
-  'Ꮢ' => 'ꮢ',
-  'Ꮣ' => 'ꮣ',
-  'Ꮤ' => 'ꮤ',
-  'Ꮥ' => 'ꮥ',
-  'Ꮦ' => 'ꮦ',
-  'Ꮧ' => 'ꮧ',
-  'Ꮨ' => 'ꮨ',
-  'Ꮩ' => 'ꮩ',
-  'Ꮪ' => 'ꮪ',
-  'Ꮫ' => 'ꮫ',
-  'Ꮬ' => 'ꮬ',
-  'Ꮭ' => 'ꮭ',
-  'Ꮮ' => 'ꮮ',
-  'Ꮯ' => 'ꮯ',
-  'Ꮰ' => 'ꮰ',
-  'Ꮱ' => 'ꮱ',
-  'Ꮲ' => 'ꮲ',
-  'Ꮳ' => 'ꮳ',
-  'Ꮴ' => 'ꮴ',
-  'Ꮵ' => 'ꮵ',
-  'Ꮶ' => 'ꮶ',
-  'Ꮷ' => 'ꮷ',
-  'Ꮸ' => 'ꮸ',
-  'Ꮹ' => 'ꮹ',
-  'Ꮺ' => 'ꮺ',
-  'Ꮻ' => 'ꮻ',
-  'Ꮼ' => 'ꮼ',
-  'Ꮽ' => 'ꮽ',
-  'Ꮾ' => 'ꮾ',
-  'Ꮿ' => 'ꮿ',
-  'Ᏸ' => 'ᏸ',
-  'Ᏹ' => 'ᏹ',
-  'Ᏺ' => 'ᏺ',
-  'Ᏻ' => 'ᏻ',
-  'Ᏼ' => 'ᏼ',
-  'Ᏽ' => 'ᏽ',
-  'Ა' => 'ა',
-  'Ბ' => 'ბ',
-  'Გ' => 'გ',
-  'Დ' => 'დ',
-  'Ე' => 'ე',
-  'Ვ' => 'ვ',
-  'Ზ' => 'ზ',
-  'Თ' => 'თ',
-  'Ი' => 'ი',
-  'Კ' => 'კ',
-  'Ლ' => 'ლ',
-  'Მ' => 'მ',
-  'Ნ' => 'ნ',
-  'Ო' => 'ო',
-  'Პ' => 'პ',
-  'Ჟ' => 'ჟ',
-  'Რ' => 'რ',
-  'Ს' => 'ს',
-  'Ტ' => 'ტ',
-  'Უ' => 'უ',
-  'Ფ' => 'ფ',
-  'Ქ' => 'ქ',
-  'Ღ' => 'ღ',
-  'Ყ' => 'ყ',
-  'Შ' => 'შ',
-  'Ჩ' => 'ჩ',
-  'Ც' => 'ც',
-  'Ძ' => 'ძ',
-  'Წ' => 'წ',
-  'Ჭ' => 'ჭ',
-  'Ხ' => 'ხ',
-  'Ჯ' => 'ჯ',
-  'Ჰ' => 'ჰ',
-  'Ჱ' => 'ჱ',
-  'Ჲ' => 'ჲ',
-  'Ჳ' => 'ჳ',
-  'Ჴ' => 'ჴ',
-  'Ჵ' => 'ჵ',
-  'Ჶ' => 'ჶ',
-  'Ჷ' => 'ჷ',
-  'Ჸ' => 'ჸ',
-  'Ჹ' => 'ჹ',
-  'Ჺ' => 'ჺ',
-  'Ჽ' => 'ჽ',
-  'Ჾ' => 'ჾ',
-  'Ჿ' => 'ჿ',
-  'Ḁ' => 'ḁ',
-  'Ḃ' => 'ḃ',
-  'Ḅ' => 'ḅ',
-  'Ḇ' => 'ḇ',
-  'Ḉ' => 'ḉ',
-  'Ḋ' => 'ḋ',
-  'Ḍ' => 'ḍ',
-  'Ḏ' => 'ḏ',
-  'Ḑ' => 'ḑ',
-  'Ḓ' => 'ḓ',
-  'Ḕ' => 'ḕ',
-  'Ḗ' => 'ḗ',
-  'Ḙ' => 'ḙ',
-  'Ḛ' => 'ḛ',
-  'Ḝ' => 'ḝ',
-  'Ḟ' => 'ḟ',
-  'Ḡ' => 'ḡ',
-  'Ḣ' => 'ḣ',
-  'Ḥ' => 'ḥ',
-  'Ḧ' => 'ḧ',
-  'Ḩ' => 'ḩ',
-  'Ḫ' => 'ḫ',
-  'Ḭ' => 'ḭ',
-  'Ḯ' => 'ḯ',
-  'Ḱ' => 'ḱ',
-  'Ḳ' => 'ḳ',
-  'Ḵ' => 'ḵ',
-  'Ḷ' => 'ḷ',
-  'Ḹ' => 'ḹ',
-  'Ḻ' => 'ḻ',
-  'Ḽ' => 'ḽ',
-  'Ḿ' => 'ḿ',
-  'Ṁ' => 'ṁ',
-  'Ṃ' => 'ṃ',
-  'Ṅ' => 'ṅ',
-  'Ṇ' => 'ṇ',
-  'Ṉ' => 'ṉ',
-  'Ṋ' => 'ṋ',
-  'Ṍ' => 'ṍ',
-  'Ṏ' => 'ṏ',
-  'Ṑ' => 'ṑ',
-  'Ṓ' => 'ṓ',
-  'Ṕ' => 'ṕ',
-  'á¹–' => 'á¹—',
-  'Ṙ' => 'ṙ',
-  'Ṛ' => 'ṛ',
-  'Ṝ' => 'ṝ',
-  'Ṟ' => 'ṟ',
-  'Ṡ' => 'ṡ',
-  'á¹¢' => 'á¹£',
-  'Ṥ' => 'ṥ',
-  'Ṧ' => 'ṧ',
-  'Ṩ' => 'ṩ',
-  'Ṫ' => 'ṫ',
-  'Ṭ' => 'ṭ',
-  'Ṯ' => 'ṯ',
-  'á¹°' => 'á¹±',
-  'á¹²' => 'á¹³',
-  'á¹´' => 'á¹µ',
-  'á¹¶' => 'á¹·',
-  'Ṹ' => 'ṹ',
-  'Ṻ' => 'ṻ',
-  'á¹¼' => 'á¹½',
-  'Ṿ' => 'ṿ',
-  'Ẁ' => 'ẁ',
-  'Ẃ' => 'ẃ',
-  'Ẅ' => 'ẅ',
-  'Ẇ' => 'ẇ',
-  'Ẉ' => 'ẉ',
-  'Ẋ' => 'ẋ',
-  'Ẍ' => 'ẍ',
-  'Ẏ' => 'ẏ',
-  'Ẑ' => 'ẑ',
-  'Ẓ' => 'ẓ',
-  'Ẕ' => 'ẕ',
-  'ẞ' => 'ß',
-  'Ạ' => 'ạ',
-  'Ả' => 'ả',
-  'Ấ' => 'ấ',
-  'Ầ' => 'ầ',
-  'Ẩ' => 'ẩ',
-  'Ẫ' => 'ẫ',
-  'Ậ' => 'ậ',
-  'Ắ' => 'ắ',
-  'Ằ' => 'ằ',
-  'Ẳ' => 'ẳ',
-  'Ẵ' => 'ẵ',
-  'Ặ' => 'ặ',
-  'Ẹ' => 'ẹ',
-  'Ẻ' => 'ẻ',
-  'Ẽ' => 'ẽ',
-  'Ế' => 'ế',
-  'Ề' => 'ề',
-  'Ể' => 'ể',
-  'Ễ' => 'ễ',
-  'Ệ' => 'ệ',
-  'Ỉ' => 'ỉ',
-  'Ị' => 'ị',
-  'Ọ' => 'ọ',
-  'Ỏ' => 'ỏ',
-  'Ố' => 'ố',
-  'Ồ' => 'ồ',
-  'Ổ' => 'ổ',
-  'á»–' => 'á»—',
-  'Ộ' => 'ộ',
-  'Ớ' => 'ớ',
-  'Ờ' => 'ờ',
-  'Ở' => 'ở',
-  'Ỡ' => 'ỡ',
-  'Ợ' => 'ợ',
-  'Ụ' => 'ụ',
-  'Ủ' => 'ủ',
-  'Ứ' => 'ứ',
-  'Ừ' => 'ừ',
-  'Ử' => 'ử',
-  'Ữ' => 'ữ',
-  'á»°' => 'á»±',
-  'Ỳ' => 'ỳ',
-  'Ỵ' => 'ỵ',
-  'á»¶' => 'á»·',
-  'Ỹ' => 'ỹ',
-  'Ỻ' => 'ỻ',
-  'Ỽ' => 'ỽ',
-  'Ỿ' => 'ỿ',
-  'Ἀ' => 'ἀ',
-  'Ἁ' => 'ἁ',
-  'Ἂ' => 'ἂ',
-  'Ἃ' => 'ἃ',
-  'Ἄ' => 'ἄ',
-  'Ἅ' => 'ἅ',
-  'Ἆ' => 'ἆ',
-  'Ἇ' => 'ἇ',
-  'Ἐ' => 'ἐ',
-  'Ἑ' => 'ἑ',
-  'Ἒ' => 'ἒ',
-  'Ἓ' => 'ἓ',
-  'Ἔ' => 'ἔ',
-  'Ἕ' => 'ἕ',
-  'Ἠ' => 'ἠ',
-  'Ἡ' => 'ἡ',
-  'Ἢ' => 'ἢ',
-  'Ἣ' => 'ἣ',
-  'Ἤ' => 'ἤ',
-  'á¼­' => 'á¼¥',
-  'Ἦ' => 'ἦ',
-  'Ἧ' => 'ἧ',
-  'Ἰ' => 'ἰ',
-  'á¼¹' => 'á¼±',
-  'Ἲ' => 'ἲ',
-  'á¼»' => 'á¼³',
-  'á¼¼' => 'á¼´',
-  'á¼½' => 'á¼µ',
-  'á¼¾' => 'á¼¶',
-  'Ἷ' => 'ἷ',
-  'Ὀ' => 'ὀ',
-  'Ὁ' => 'ὁ',
-  'Ὂ' => 'ὂ',
-  'Ὃ' => 'ὃ',
-  'Ὄ' => 'ὄ',
-  'Ὅ' => 'ὅ',
-  'Ὑ' => 'ὑ',
-  'Ὓ' => 'ὓ',
-  'Ὕ' => 'ὕ',
-  'Ὗ' => 'ὗ',
-  'Ὠ' => 'ὠ',
-  'Ὡ' => 'ὡ',
-  'Ὢ' => 'ὢ',
-  'Ὣ' => 'ὣ',
-  'Ὤ' => 'ὤ',
-  'á½­' => 'á½¥',
-  'Ὦ' => 'ὦ',
-  'Ὧ' => 'ὧ',
-  'ᾈ' => 'ᾀ',
-  'ᾉ' => 'ᾁ',
-  'ᾊ' => 'ᾂ',
-  'ᾋ' => 'ᾃ',
-  'ᾌ' => 'ᾄ',
-  'ᾍ' => 'ᾅ',
-  'ᾎ' => 'ᾆ',
-  'ᾏ' => 'ᾇ',
-  'ᾘ' => 'ᾐ',
-  'ᾙ' => 'ᾑ',
-  'ᾚ' => 'ᾒ',
-  'ᾛ' => 'ᾓ',
-  'ᾜ' => 'ᾔ',
-  'ᾝ' => 'ᾕ',
-  'ᾞ' => 'ᾖ',
-  'ᾟ' => 'ᾗ',
-  'ᾨ' => 'ᾠ',
-  'ᾩ' => 'ᾡ',
-  'ᾪ' => 'ᾢ',
-  'ᾫ' => 'ᾣ',
-  'ᾬ' => 'ᾤ',
-  'á¾­' => 'á¾¥',
-  'ᾮ' => 'ᾦ',
-  'ᾯ' => 'ᾧ',
-  'Ᾰ' => 'ᾰ',
-  'á¾¹' => 'á¾±',
-  'Ὰ' => 'ὰ',
-  'á¾»' => 'á½±',
-  'á¾¼' => 'á¾³',
-  'Ὲ' => 'ὲ',
-  'Έ' => 'έ',
-  'Ὴ' => 'ὴ',
-  'á¿‹' => 'á½µ',
-  'ῌ' => 'ῃ',
-  'Ῐ' => 'ῐ',
-  'á¿™' => 'á¿‘',
-  'Ὶ' => 'ὶ',
-  'á¿›' => 'á½·',
-  'Ῠ' => 'ῠ',
-  'á¿©' => 'á¿¡',
-  'Ὺ' => 'ὺ',
-  'á¿«' => 'á½»',
-  'Ῥ' => 'ῥ',
-  'Ὸ' => 'ὸ',
-  'Ό' => 'ό',
-  'Ὼ' => 'ὼ',
-  'á¿»' => 'á½½',
-  'ῼ' => 'ῳ',
-  'Ω' => 'ω',
-  'K' => 'k',
-  'â„«' => 'Ã¥',
-  'Ⅎ' => 'ⅎ',
-  'â… ' => 'â…°',
-  'â…¡' => 'â…±',
-  'â…¢' => 'â…²',
-  'â…£' => 'â…³',
-  'â…¤' => 'â…´',
-  'â…¥' => 'â…µ',
-  'â…¦' => 'â…¶',
-  'â…§' => 'â…·',
-  'â…¨' => 'â…¸',
-  'â…©' => 'â…¹',
-  'â…ª' => 'â…º',
-  'â…«' => 'â…»',
-  'â…¬' => 'â…¼',
-  'â…­' => 'â…½',
-  'â…®' => 'â…¾',
-  'â…¯' => 'â…¿',
-  'Ↄ' => 'ↄ',
-  'Ⓐ' => 'ⓐ',
-  'â’·' => 'â“‘',
-  'â’¸' => 'â“’',
-  'â’¹' => 'â““',
-  'â’º' => 'â“”',
-  'â’»' => 'â“•',
-  'â’¼' => 'â“–',
-  'â’½' => 'â“—',
-  'Ⓘ' => 'ⓘ',
-  'â’¿' => 'â“™',
-  'Ⓚ' => 'ⓚ',
-  'Ⓛ' => 'ⓛ',
-  'Ⓜ' => 'ⓜ',
-  'Ⓝ' => 'ⓝ',
-  'Ⓞ' => 'ⓞ',
-  'Ⓟ' => 'ⓟ',
-  'Ⓠ' => 'ⓠ',
-  'Ⓡ' => 'ⓡ',
-  'Ⓢ' => 'ⓢ',
-  'Ⓣ' => 'ⓣ',
-  'Ⓤ' => 'ⓤ',
-  'â“‹' => 'â“¥',
-  'Ⓦ' => 'ⓦ',
-  'Ⓧ' => 'ⓧ',
-  'Ⓨ' => 'ⓨ',
-  'Ⓩ' => 'ⓩ',
-  'â°€' => 'â°°',
-  'Ⰱ' => 'ⰱ',
-  'â°‚' => 'â°²',
-  'â°ƒ' => 'â°³',
-  'â°„' => 'â°´',
-  'â°…' => 'â°µ',
-  'â°†' => 'â°¶',
-  'â°‡' => 'â°·',
-  'â°ˆ' => 'â°¸',
-  'â°‰' => 'â°¹',
-  'â°Š' => 'â°º',
-  'â°‹' => 'â°»',
-  'Ⰼ' => 'ⰼ',
-  'Ⰽ' => 'ⰽ',
-  'â°Ž' => 'â°¾',
-  'Ⰿ' => 'ⰿ',
-  'Ⱀ' => 'ⱀ',
-  'Ⱁ' => 'ⱁ',
-  'Ⱂ' => 'ⱂ',
-  'Ⱃ' => 'ⱃ',
-  'Ⱄ' => 'ⱄ',
-  'â°•' => 'â±…',
-  'Ⱆ' => 'ⱆ',
-  'Ⱇ' => 'ⱇ',
-  'Ⱈ' => 'ⱈ',
-  'Ⱉ' => 'ⱉ',
-  'Ⱊ' => 'ⱊ',
-  'Ⱋ' => 'ⱋ',
-  'Ⱌ' => 'ⱌ',
-  'Ⱍ' => 'ⱍ',
-  'Ⱎ' => 'ⱎ',
-  'Ⱏ' => 'ⱏ',
-  'Ⱐ' => 'ⱐ',
-  'Ⱑ' => 'ⱑ',
-  'â°¢' => 'â±’',
-  'Ⱓ' => 'ⱓ',
-  'â°¤' => 'â±”',
-  'Ⱕ' => 'ⱕ',
-  'â°¦' => 'â±–',
-  'â°§' => 'â±—',
-  'Ⱘ' => 'ⱘ',
-  'â°©' => 'â±™',
-  'Ⱚ' => 'ⱚ',
-  'â°«' => 'â±›',
-  'Ⱜ' => 'ⱜ',
-  'Ⱝ' => 'ⱝ',
-  'Ⱞ' => 'ⱞ',
-  'Ⱡ' => 'ⱡ',
-  'â±¢' => 'É«',
-  'â±£' => 'áµ½',
-  'Ɽ' => 'ɽ',
-  'Ⱨ' => 'ⱨ',
-  'Ⱪ' => 'ⱪ',
-  'Ⱬ' => 'ⱬ',
-  'â±­' => 'É‘',
-  'Ɱ' => 'ɱ',
-  'Ɐ' => 'ɐ',
-  'â±°' => 'É’',
-  'â±²' => 'â±³',
-  'â±µ' => 'â±¶',
-  'â±¾' => 'È¿',
-  'Ɀ' => 'ɀ',
-  'Ⲁ' => 'ⲁ',
-  'Ⲃ' => 'ⲃ',
-  'Ⲅ' => 'ⲅ',
-  'Ⲇ' => 'ⲇ',
-  'Ⲉ' => 'ⲉ',
-  'Ⲋ' => 'ⲋ',
-  'Ⲍ' => 'ⲍ',
-  'Ⲏ' => 'ⲏ',
-  'Ⲑ' => 'ⲑ',
-  'Ⲓ' => 'ⲓ',
-  'Ⲕ' => 'ⲕ',
-  'â²–' => 'â²—',
-  'Ⲙ' => 'ⲙ',
-  'Ⲛ' => 'ⲛ',
-  'Ⲝ' => 'ⲝ',
-  'Ⲟ' => 'ⲟ',
-  'Ⲡ' => 'ⲡ',
-  'â²¢' => 'â²£',
-  'Ⲥ' => 'ⲥ',
-  'Ⲧ' => 'ⲧ',
-  'Ⲩ' => 'ⲩ',
-  'Ⲫ' => 'ⲫ',
-  'Ⲭ' => 'ⲭ',
-  'Ⲯ' => 'ⲯ',
-  'â²°' => 'â²±',
-  'â²²' => 'â²³',
-  'â²´' => 'â²µ',
-  'â²¶' => 'â²·',
-  'Ⲹ' => 'ⲹ',
-  'Ⲻ' => 'ⲻ',
-  'â²¼' => 'â²½',
-  'Ⲿ' => 'ⲿ',
-  'Ⳁ' => 'ⳁ',
-  'Ⳃ' => 'ⳃ',
-  'Ⳅ' => 'ⳅ',
-  'Ⳇ' => 'ⳇ',
-  'Ⳉ' => 'ⳉ',
-  'Ⳋ' => 'ⳋ',
-  'Ⳍ' => 'ⳍ',
-  'Ⳏ' => 'ⳏ',
-  'Ⳑ' => 'ⳑ',
-  'Ⳓ' => 'ⳓ',
-  'Ⳕ' => 'ⳕ',
-  'â³–' => 'â³—',
-  'Ⳙ' => 'ⳙ',
-  'Ⳛ' => 'ⳛ',
-  'Ⳝ' => 'ⳝ',
-  'Ⳟ' => 'ⳟ',
-  'Ⳡ' => 'ⳡ',
-  'â³¢' => 'â³£',
-  'Ⳬ' => 'ⳬ',
-  'â³­' => 'â³®',
-  'â³²' => 'â³³',
-  'Ꙁ' => 'ꙁ',
-  'Ꙃ' => 'ꙃ',
-  'Ꙅ' => 'ꙅ',
-  'Ꙇ' => 'ꙇ',
-  'Ꙉ' => 'ꙉ',
-  'Ꙋ' => 'ꙋ',
-  'Ꙍ' => 'ꙍ',
-  'Ꙏ' => 'ꙏ',
-  'Ꙑ' => 'ꙑ',
-  'Ꙓ' => 'ꙓ',
-  'Ꙕ' => 'ꙕ',
-  'ê™–' => 'ê™—',
-  'Ꙙ' => 'ꙙ',
-  'Ꙛ' => 'ꙛ',
-  'Ꙝ' => 'ꙝ',
-  'Ꙟ' => 'ꙟ',
-  'Ꙡ' => 'ꙡ',
-  'Ꙣ' => 'ꙣ',
-  'Ꙥ' => 'ꙥ',
-  'Ꙧ' => 'ꙧ',
-  'Ꙩ' => 'ꙩ',
-  'Ꙫ' => 'ꙫ',
-  'Ꙭ' => 'ꙭ',
-  'Ꚁ' => 'ꚁ',
-  'Ꚃ' => 'ꚃ',
-  'êš„' => 'êš…',
-  'Ꚇ' => 'ꚇ',
-  'Ꚉ' => 'ꚉ',
-  'Ꚋ' => 'ꚋ',
-  'Ꚍ' => 'ꚍ',
-  'Ꚏ' => 'ꚏ',
-  'Ꚑ' => 'ꚑ',
-  'êš’' => 'êš“',
-  'êš”' => 'êš•',
-  'êš–' => 'êš—',
-  'Ꚙ' => 'ꚙ',
-  'êšš' => 'êš›',
-  'Ꜣ' => 'ꜣ',
-  'Ꜥ' => 'ꜥ',
-  'Ꜧ' => 'ꜧ',
-  'Ꜩ' => 'ꜩ',
-  'Ꜫ' => 'ꜫ',
-  'Ꜭ' => 'ꜭ',
-  'Ꜯ' => 'ꜯ',
-  'Ꜳ' => 'ꜳ',
-  'Ꜵ' => 'ꜵ',
-  'Ꜷ' => 'ꜷ',
-  'Ꜹ' => 'ꜹ',
-  'Ꜻ' => 'ꜻ',
-  'Ꜽ' => 'ꜽ',
-  'Ꜿ' => 'ꜿ',
-  'Ꝁ' => 'ꝁ',
-  'Ꝃ' => 'ꝃ',
-  'Ꝅ' => 'ꝅ',
-  'Ꝇ' => 'ꝇ',
-  'Ꝉ' => 'ꝉ',
-  'Ꝋ' => 'ꝋ',
-  'Ꝍ' => 'ꝍ',
-  'Ꝏ' => 'ꝏ',
-  'Ꝑ' => 'ꝑ',
-  'Ꝓ' => 'ꝓ',
-  'Ꝕ' => 'ꝕ',
-  'Ꝗ' => 'ꝗ',
-  'Ꝙ' => 'ꝙ',
-  'Ꝛ' => 'ꝛ',
-  'Ꝝ' => 'ꝝ',
-  'Ꝟ' => 'ꝟ',
-  'Ꝡ' => 'ꝡ',
-  'Ꝣ' => 'ꝣ',
-  'Ꝥ' => 'ꝥ',
-  'Ꝧ' => 'ꝧ',
-  'Ꝩ' => 'ꝩ',
-  'Ꝫ' => 'ꝫ',
-  'Ꝭ' => 'ꝭ',
-  'Ꝯ' => 'ꝯ',
-  'Ꝺ' => 'ꝺ',
-  'Ꝼ' => 'ꝼ',
-  'Ᵹ' => 'ᵹ',
-  'Ꝿ' => 'ꝿ',
-  'Ꞁ' => 'ꞁ',
-  'Ꞃ' => 'ꞃ',
-  'êž„' => 'êž…',
-  'Ꞇ' => 'ꞇ',
-  'Ꞌ' => 'ꞌ',
-  'Ɥ' => 'ɥ',
-  'Ꞑ' => 'ꞑ',
-  'êž’' => 'êž“',
-  'êž–' => 'êž—',
-  'Ꞙ' => 'ꞙ',
-  'êžš' => 'êž›',
-  'Ꞝ' => 'ꞝ',
-  'Ꞟ' => 'ꞟ',
-  'êž ' => 'êž¡',
-  'Ꞣ' => 'ꞣ',
-  'Ꞥ' => 'ꞥ',
-  'Ꞧ' => 'ꞧ',
-  'Ꞩ' => 'ꞩ',
-  'Ɦ' => 'ɦ',
-  'Ɜ' => 'ɜ',
-  'Ɡ' => 'ɡ',
-  'Ɬ' => 'ɬ',
-  'Ɪ' => 'ɪ',
-  'êž°' => 'Êž',
-  'Ʇ' => 'ʇ',
-  'Ʝ' => 'ʝ',
-  'êž³' => 'ê­“',
-  'êž´' => 'êžµ',
-  'êž¶' => 'êž·',
-  'Ꞹ' => 'ꞹ',
-  'Ꞻ' => 'ꞻ',
-  'êž¼' => 'êž½',
-  'êž¾' => 'êž¿',
-  'Ꟃ' => 'ꟃ',
-  'Ꞔ' => 'ꞔ',
-  'Ʂ' => 'ʂ',
-  'Ᶎ' => 'ᶎ',
-  'Ꟈ' => 'ꟈ',
-  'Ꟊ' => 'ꟊ',
-  'Ꟶ' => 'ꟶ',
-  'A' => 'a',
-  'B' => 'b',
-  'C' => 'c',
-  'D' => 'd',
-  'ï¼¥' => 'ï½…',
-  'F' => 'f',
-  'G' => 'g',
-  'H' => 'h',
-  'I' => 'i',
-  'J' => 'j',
-  'K' => 'k',
-  'L' => 'l',
-  'M' => 'm',
-  'N' => 'n',
-  'O' => 'o',
-  'P' => 'p',
-  'Q' => 'q',
-  'ï¼²' => 'ï½’',
-  'S' => 's',
-  'ï¼´' => 'ï½”',
-  'U' => 'u',
-  'ï¼¶' => 'ï½–',
-  'ï¼·' => 'ï½—',
-  'X' => 'x',
-  'ï¼¹' => 'ï½™',
-  'Z' => 'z',
-  '𐐀' => '𐐨',
-  '𐐁' => '𐐩',
-  '𐐂' => '𐐪',
-  '𐐃' => '𐐫',
-  '𐐄' => '𐐬',
-  '𐐅' => '𐐭',
-  '𐐆' => '𐐮',
-  '𐐇' => '𐐯',
-  '𐐈' => '𐐰',
-  '𐐉' => '𐐱',
-  '𐐊' => '𐐲',
-  '𐐋' => '𐐳',
-  '𐐌' => '𐐴',
-  '𐐍' => '𐐵',
-  '𐐎' => '𐐶',
-  '𐐏' => '𐐷',
-  '𐐐' => '𐐸',
-  '𐐑' => '𐐹',
-  '𐐒' => '𐐺',
-  '𐐓' => '𐐻',
-  '𐐔' => '𐐼',
-  '𐐕' => '𐐽',
-  '𐐖' => '𐐾',
-  '𐐗' => '𐐿',
-  '𐐘' => '𐑀',
-  '𐐙' => '𐑁',
-  '𐐚' => '𐑂',
-  '𐐛' => '𐑃',
-  '𐐜' => '𐑄',
-  '𐐝' => '𐑅',
-  '𐐞' => '𐑆',
-  '𐐟' => '𐑇',
-  '𐐠' => '𐑈',
-  '𐐡' => '𐑉',
-  '𐐢' => '𐑊',
-  '𐐣' => '𐑋',
-  '𐐤' => '𐑌',
-  '𐐥' => '𐑍',
-  '𐐦' => '𐑎',
-  '𐐧' => '𐑏',
-  '𐒰' => '𐓘',
-  '𐒱' => '𐓙',
-  '𐒲' => '𐓚',
-  '𐒳' => '𐓛',
-  '𐒴' => '𐓜',
-  '𐒵' => '𐓝',
-  '𐒶' => '𐓞',
-  '𐒷' => '𐓟',
-  '𐒸' => '𐓠',
-  '𐒹' => '𐓡',
-  '𐒺' => '𐓢',
-  '𐒻' => '𐓣',
-  '𐒼' => '𐓤',
-  '𐒽' => '𐓥',
-  '𐒾' => '𐓦',
-  '𐒿' => '𐓧',
-  '𐓀' => '𐓨',
-  '𐓁' => '𐓩',
-  '𐓂' => '𐓪',
-  '𐓃' => '𐓫',
-  '𐓄' => '𐓬',
-  '𐓅' => '𐓭',
-  '𐓆' => '𐓮',
-  '𐓇' => '𐓯',
-  '𐓈' => '𐓰',
-  '𐓉' => '𐓱',
-  '𐓊' => '𐓲',
-  '𐓋' => '𐓳',
-  '𐓌' => '𐓴',
-  '𐓍' => '𐓵',
-  '𐓎' => '𐓶',
-  '𐓏' => '𐓷',
-  '𐓐' => '𐓸',
-  '𐓑' => '𐓹',
-  '𐓒' => '𐓺',
-  '𐓓' => '𐓻',
-  '𐲀' => '𐳀',
-  '𐲁' => '𐳁',
-  '𐲂' => '𐳂',
-  '𐲃' => '𐳃',
-  '𐲄' => '𐳄',
-  '𐲅' => '𐳅',
-  '𐲆' => '𐳆',
-  '𐲇' => '𐳇',
-  '𐲈' => '𐳈',
-  '𐲉' => '𐳉',
-  '𐲊' => '𐳊',
-  '𐲋' => '𐳋',
-  '𐲌' => '𐳌',
-  '𐲍' => '𐳍',
-  '𐲎' => '𐳎',
-  '𐲏' => '𐳏',
-  '𐲐' => '𐳐',
-  '𐲑' => '𐳑',
-  '𐲒' => '𐳒',
-  '𐲓' => '𐳓',
-  '𐲔' => '𐳔',
-  '𐲕' => '𐳕',
-  '𐲖' => '𐳖',
-  '𐲗' => '𐳗',
-  '𐲘' => '𐳘',
-  '𐲙' => '𐳙',
-  '𐲚' => '𐳚',
-  '𐲛' => '𐳛',
-  '𐲜' => '𐳜',
-  '𐲝' => '𐳝',
-  '𐲞' => '𐳞',
-  '𐲟' => '𐳟',
-  '𐲠' => '𐳠',
-  '𐲡' => '𐳡',
-  '𐲢' => '𐳢',
-  '𐲣' => '𐳣',
-  '𐲤' => '𐳤',
-  '𐲥' => '𐳥',
-  '𐲦' => '𐳦',
-  '𐲧' => '𐳧',
-  '𐲨' => '𐳨',
-  '𐲩' => '𐳩',
-  '𐲪' => '𐳪',
-  '𐲫' => '𐳫',
-  '𐲬' => '𐳬',
-  '𐲭' => '𐳭',
-  '𐲮' => '𐳮',
-  '𐲯' => '𐳯',
-  '𐲰' => '𐳰',
-  '𐲱' => '𐳱',
-  '𐲲' => '𐳲',
-  'ð‘¢ ' => 'ð‘£€',
-  '𑢡' => '𑣁',
-  '𑢢' => '𑣂',
-  '𑢣' => '𑣃',
-  '𑢤' => '𑣄',
-  'ð‘¢¥' => 'ð‘£…',
-  '𑢦' => '𑣆',
-  '𑢧' => '𑣇',
-  '𑢨' => '𑣈',
-  '𑢩' => '𑣉',
-  '𑢪' => '𑣊',
-  '𑢫' => '𑣋',
-  '𑢬' => '𑣌',
-  '𑢭' => '𑣍',
-  '𑢮' => '𑣎',
-  '𑢯' => '𑣏',
-  '𑢰' => '𑣐',
-  '𑢱' => '𑣑',
-  'ð‘¢²' => 'ð‘£’',
-  '𑢳' => '𑣓',
-  'ð‘¢´' => 'ð‘£”',
-  '𑢵' => '𑣕',
-  'ð‘¢¶' => 'ð‘£–',
-  'ð‘¢·' => 'ð‘£—',
-  '𑢸' => '𑣘',
-  'ð‘¢¹' => 'ð‘£™',
-  '𑢺' => '𑣚',
-  'ð‘¢»' => 'ð‘£›',
-  '𑢼' => '𑣜',
-  '𑢽' => '𑣝',
-  '𑢾' => '𑣞',
-  '𑢿' => '𑣟',
-  'ð–¹€' => 'ð–¹ ',
-  '𖹁' => '𖹡',
-  '𖹂' => '𖹢',
-  '𖹃' => '𖹣',
-  '𖹄' => '𖹤',
-  'ð–¹…' => 'ð–¹¥',
-  '𖹆' => '𖹦',
-  '𖹇' => '𖹧',
-  '𖹈' => '𖹨',
-  '𖹉' => '𖹩',
-  '𖹊' => '𖹪',
-  '𖹋' => '𖹫',
-  '𖹌' => '𖹬',
-  '𖹍' => '𖹭',
-  '𖹎' => '𖹮',
-  '𖹏' => '𖹯',
-  '𖹐' => '𖹰',
-  '𖹑' => '𖹱',
-  'ð–¹’' => 'ð–¹²',
-  '𖹓' => '𖹳',
-  'ð–¹”' => 'ð–¹´',
-  '𖹕' => '𖹵',
-  'ð–¹–' => 'ð–¹¶',
-  'ð–¹—' => 'ð–¹·',
-  '𖹘' => '𖹸',
-  'ð–¹™' => 'ð–¹¹',
-  '𖹚' => '𖹺',
-  'ð–¹›' => 'ð–¹»',
-  '𖹜' => '𖹼',
-  '𖹝' => '𖹽',
-  '𖹞' => '𖹾',
-  '𖹟' => '𖹿',
-  '𞤀' => '𞤢',
-  '𞤁' => '𞤣',
-  '𞤂' => '𞤤',
-  '𞤃' => '𞤥',
-  '𞤄' => '𞤦',
-  '𞤅' => '𞤧',
-  '𞤆' => '𞤨',
-  '𞤇' => '𞤩',
-  '𞤈' => '𞤪',
-  '𞤉' => '𞤫',
-  '𞤊' => '𞤬',
-  '𞤋' => '𞤭',
-  '𞤌' => '𞤮',
-  '𞤍' => '𞤯',
-  '𞤎' => '𞤰',
-  '𞤏' => '𞤱',
-  '𞤐' => '𞤲',
-  '𞤑' => '𞤳',
-  '𞤒' => '𞤴',
-  '𞤓' => '𞤵',
-  '𞤔' => '𞤶',
-  '𞤕' => '𞤷',
-  '𞤖' => '𞤸',
-  '𞤗' => '𞤹',
-  '𞤘' => '𞤺',
-  '𞤙' => '𞤻',
-  '𞤚' => '𞤼',
-  '𞤛' => '𞤽',
-  '𞤜' => '𞤾',
-  '𞤝' => '𞤿',
-  '𞤞' => '𞥀',
-  '𞤟' => '𞥁',
-  '𞤠' => '𞥂',
-  '𞤡' => '𞥃',
-);
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
deleted file mode 100644
index 2a8f6e73b99301469991b2bb835324b39d96cd60..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-// from Case_Ignorable in https://unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
-
-return '/(?<![\x{0027}\x{002E}\x{003A}\x{005E}\x{0060}\x{00A8}\x{00AD}\x{00AF}\x{00B4}\x{00B7}\x{00B8}\x{02B0}-\x{02C1}\x{02C2}-\x{02C5}\x{02C6}-\x{02D1}\x{02D2}-\x{02DF}\x{02E0}-\x{02E4}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EE}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037A}\x{0384}-\x{0385}\x{0387}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0559}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{05F4}\x{0600}-\x{0605}\x{0610}-\x{061A}\x{061C}\x{0640}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DD}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07FA}\x{07FD}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0971}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E46}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EB9}\x{0EBB}-\x{0EBC}\x{0EC6}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{10FC}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17D7}\x{17DD}\x{180B}-\x{180D}\x{180E}\x{1843}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AA7}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1C78}-\x{1C7D}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1D2C}-\x{1D6A}\x{1D78}\x{1D9B}-\x{1DBF}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{200B}-\x{200F}\x{2018}\x{2019}\x{2024}\x{2027}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{2066}-\x{206F}\x{2071}\x{207F}\x{2090}-\x{209C}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2C7C}-\x{2C7D}\x{2CEF}-\x{2CF1}\x{2D6F}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E2F}\x{3005}\x{302A}-\x{302D}\x{3031}-\x{3035}\x{303B}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{309D}-\x{309E}\x{30FC}-\x{30FE}\x{A015}\x{A4F8}-\x{A4FD}\x{A60C}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A67F}\x{A69C}-\x{A69D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A770}\x{A788}\x{A789}-\x{A78A}\x{A7F8}-\x{A7F9}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}\x{A9CF}\x{A9E5}\x{A9E6}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA70}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AADD}\x{AAEC}-\x{AAED}\x{AAF3}-\x{AAF4}\x{AAF6}\x{AB5B}\x{AB5C}-\x{AB5F}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FBB2}-\x{FBC1}\x{FE00}-\x{FE0F}\x{FE13}\x{FE20}-\x{FE2F}\x{FE52}\x{FE55}\x{FEFF}\x{FF07}\x{FF0E}\x{FF1A}\x{FF3E}\x{FF40}\x{FF70}\x{FF9E}-\x{FF9F}\x{FFE3}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{110BD}\x{110CD}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16B40}-\x{16B43}\x{16F8F}-\x{16F92}\x{16F93}-\x{16F9F}\x{16FE0}-\x{16FE1}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1F3FB}-\x{1F3FF}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}])(\pL)(\pL*+)/u';
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
deleted file mode 100644
index ecbc15895eb71c7b92bb18bce90d955848b509a9..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
+++ /dev/null
@@ -1,1414 +0,0 @@
-<?php
-
-return array (
-  'a' => 'A',
-  'b' => 'B',
-  'c' => 'C',
-  'd' => 'D',
-  'e' => 'E',
-  'f' => 'F',
-  'g' => 'G',
-  'h' => 'H',
-  'i' => 'I',
-  'j' => 'J',
-  'k' => 'K',
-  'l' => 'L',
-  'm' => 'M',
-  'n' => 'N',
-  'o' => 'O',
-  'p' => 'P',
-  'q' => 'Q',
-  'r' => 'R',
-  's' => 'S',
-  't' => 'T',
-  'u' => 'U',
-  'v' => 'V',
-  'w' => 'W',
-  'x' => 'X',
-  'y' => 'Y',
-  'z' => 'Z',
-  'µ' => 'Μ',
-  'à' => 'À',
-  'á' => 'Á',
-  'â' => 'Â',
-  'ã' => 'Ã',
-  'ä' => 'Ä',
-  'Ã¥' => 'Ã…',
-  'æ' => 'Æ',
-  'ç' => 'Ç',
-  'è' => 'È',
-  'é' => 'É',
-  'ê' => 'Ê',
-  'ë' => 'Ë',
-  'ì' => 'Ì',
-  'í' => 'Í',
-  'î' => 'Î',
-  'ï' => 'Ï',
-  'ð' => 'Ð',
-  'ñ' => 'Ñ',
-  'ò' => 'Ò',
-  'ó' => 'Ó',
-  'ô' => 'Ô',
-  'õ' => 'Õ',
-  'ö' => 'Ö',
-  'ø' => 'Ø',
-  'ù' => 'Ù',
-  'ú' => 'Ú',
-  'û' => 'Û',
-  'ü' => 'Ü',
-  'ý' => 'Ý',
-  'þ' => 'Þ',
-  'ÿ' => 'Ÿ',
-  'ā' => 'Ā',
-  'ă' => 'Ă',
-  'Ä…' => 'Ä„',
-  'ć' => 'Ć',
-  'ĉ' => 'Ĉ',
-  'Ä‹' => 'ÄŠ',
-  'č' => 'Č',
-  'ď' => 'Ď',
-  'đ' => 'Đ',
-  'Ä“' => 'Ä’',
-  'Ä•' => 'Ä”',
-  'Ä—' => 'Ä–',
-  'ę' => 'Ę',
-  'Ä›' => 'Äš',
-  'ĝ' => 'Ĝ',
-  'ÄŸ' => 'Äž',
-  'Ä¡' => 'Ä ',
-  'Ä£' => 'Ä¢',
-  'ĥ' => 'Ĥ',
-  'ħ' => 'Ħ',
-  'ĩ' => 'Ĩ',
-  'ī' => 'Ī',
-  'ĭ' => 'Ĭ',
-  'į' => 'Į',
-  'ı' => 'I',
-  'ij' => 'IJ',
-  'ĵ' => 'Ĵ',
-  'ķ' => 'Ķ',
-  'ĺ' => 'Ĺ',
-  'ļ' => 'Ļ',
-  'ľ' => 'Ľ',
-  'Å€' => 'Ä¿',
-  'ł' => 'Ł',
-  'ń' => 'Ń',
-  'ņ' => 'Ņ',
-  'ň' => 'Ň',
-  'Å‹' => 'ÅŠ',
-  'ō' => 'Ō',
-  'ŏ' => 'Ŏ',
-  'ő' => 'Ő',
-  'Å“' => 'Å’',
-  'Å•' => 'Å”',
-  'Å—' => 'Å–',
-  'ř' => 'Ř',
-  'Å›' => 'Åš',
-  'ŝ' => 'Ŝ',
-  'ÅŸ' => 'Åž',
-  'Å¡' => 'Å ',
-  'Å£' => 'Å¢',
-  'ť' => 'Ť',
-  'ŧ' => 'Ŧ',
-  'ũ' => 'Ũ',
-  'ū' => 'Ū',
-  'ŭ' => 'Ŭ',
-  'ů' => 'Ů',
-  'ű' => 'Ű',
-  'ų' => 'Ų',
-  'ŵ' => 'Ŵ',
-  'ŷ' => 'Ŷ',
-  'ź' => 'Ź',
-  'ż' => 'Ż',
-  'ž' => 'Ž',
-  'Å¿' => 'S',
-  'ƀ' => 'Ƀ',
-  'ƃ' => 'Ƃ',
-  'Æ…' => 'Æ„',
-  'ƈ' => 'Ƈ',
-  'ƌ' => 'Ƌ',
-  'Æ’' => 'Æ‘',
-  'ƕ' => 'Ƕ',
-  'ƙ' => 'Ƙ',
-  'ƚ' => 'Ƚ',
-  'Æž' => 'È ',
-  'Æ¡' => 'Æ ',
-  'Æ£' => 'Æ¢',
-  'ƥ' => 'Ƥ',
-  'ƨ' => 'Ƨ',
-  'ƭ' => 'Ƭ',
-  'ư' => 'Ư',
-  'ƴ' => 'Ƴ',
-  'ƶ' => 'Ƶ',
-  'ƹ' => 'Ƹ',
-  'ƽ' => 'Ƽ',
-  'Æ¿' => 'Ç·',
-  'Ç…' => 'Ç„',
-  'dž' => 'DŽ',
-  'Lj' => 'LJ',
-  'lj' => 'LJ',
-  'Ç‹' => 'ÇŠ',
-  'nj' => 'NJ',
-  'ǎ' => 'Ǎ',
-  'ǐ' => 'Ǐ',
-  'Ç’' => 'Ç‘',
-  'Ç”' => 'Ç“',
-  'Ç–' => 'Ç•',
-  'ǘ' => 'Ǘ',
-  'Çš' => 'Ç™',
-  'ǜ' => 'Ǜ',
-  'ǝ' => 'Ǝ',
-  'ÇŸ' => 'Çž',
-  'Ç¡' => 'Ç ',
-  'Ç£' => 'Ç¢',
-  'ǥ' => 'Ǥ',
-  'ǧ' => 'Ǧ',
-  'ǩ' => 'Ǩ',
-  'ǫ' => 'Ǫ',
-  'ǭ' => 'Ǭ',
-  'ǯ' => 'Ǯ',
-  'Dz' => 'DZ',
-  'dz' => 'DZ',
-  'ǵ' => 'Ǵ',
-  'ǹ' => 'Ǹ',
-  'ǻ' => 'Ǻ',
-  'ǽ' => 'Ǽ',
-  'ǿ' => 'Ǿ',
-  'ȁ' => 'Ȁ',
-  'ȃ' => 'Ȃ',
-  'È…' => 'È„',
-  'ȇ' => 'Ȇ',
-  'ȉ' => 'Ȉ',
-  'È‹' => 'ÈŠ',
-  'ȍ' => 'Ȍ',
-  'ȏ' => 'Ȏ',
-  'ȑ' => 'Ȑ',
-  'È“' => 'È’',
-  'È•' => 'È”',
-  'È—' => 'È–',
-  'ș' => 'Ș',
-  'È›' => 'Èš',
-  'ȝ' => 'Ȝ',
-  'ÈŸ' => 'Èž',
-  'È£' => 'È¢',
-  'ȥ' => 'Ȥ',
-  'ȧ' => 'Ȧ',
-  'ȩ' => 'Ȩ',
-  'ȫ' => 'Ȫ',
-  'ȭ' => 'Ȭ',
-  'ȯ' => 'Ȯ',
-  'ȱ' => 'Ȱ',
-  'ȳ' => 'Ȳ',
-  'ȼ' => 'Ȼ',
-  'È¿' => 'â±¾',
-  'ɀ' => 'Ɀ',
-  'ɂ' => 'Ɂ',
-  'ɇ' => 'Ɇ',
-  'ɉ' => 'Ɉ',
-  'É‹' => 'ÉŠ',
-  'ɍ' => 'Ɍ',
-  'ɏ' => 'Ɏ',
-  'ɐ' => 'Ɐ',
-  'É‘' => 'â±­',
-  'É’' => 'â±°',
-  'ɓ' => 'Ɓ',
-  'ɔ' => 'Ɔ',
-  'ɖ' => 'Ɖ',
-  'É—' => 'ÆŠ',
-  'ə' => 'Ə',
-  'ɛ' => 'Ɛ',
-  'ɜ' => 'Ɜ',
-  'É ' => 'Æ“',
-  'ɡ' => 'Ɡ',
-  'É£' => 'Æ”',
-  'ɥ' => 'Ɥ',
-  'ɦ' => 'Ɦ',
-  'ɨ' => 'Ɨ',
-  'É©' => 'Æ–',
-  'ɪ' => 'Ɪ',
-  'É«' => 'â±¢',
-  'ɬ' => 'Ɬ',
-  'ɯ' => 'Ɯ',
-  'ɱ' => 'Ɱ',
-  'ɲ' => 'Ɲ',
-  'ɵ' => 'Ɵ',
-  'ɽ' => 'Ɽ',
-  'ʀ' => 'Ʀ',
-  'ʂ' => 'Ʂ',
-  'ʃ' => 'Ʃ',
-  'ʇ' => 'Ʇ',
-  'ʈ' => 'Ʈ',
-  'ʉ' => 'Ʉ',
-  'ʊ' => 'Ʊ',
-  'ʋ' => 'Ʋ',
-  'ʌ' => 'Ʌ',
-  'Ê’' => 'Æ·',
-  'ʝ' => 'Ʝ',
-  'Êž' => 'êž°',
-  'ͅ' => 'Ι',
-  'ͱ' => 'Ͱ',
-  'ͳ' => 'Ͳ',
-  'ͷ' => 'Ͷ',
-  'ͻ' => 'Ͻ',
-  'ͼ' => 'Ͼ',
-  'ͽ' => 'Ͽ',
-  'ά' => 'Ά',
-  'έ' => 'Έ',
-  'ή' => 'Ή',
-  'ί' => 'Ί',
-  'α' => 'Α',
-  'β' => 'Β',
-  'γ' => 'Γ',
-  'δ' => 'Δ',
-  'ε' => 'Ε',
-  'ζ' => 'Ζ',
-  'η' => 'Η',
-  'θ' => 'Θ',
-  'ι' => 'Ι',
-  'κ' => 'Κ',
-  'λ' => 'Λ',
-  'μ' => 'Μ',
-  'ν' => 'Ν',
-  'ξ' => 'Ξ',
-  'ο' => 'Ο',
-  'π' => 'Π',
-  'ρ' => 'Ρ',
-  'ς' => 'Σ',
-  'σ' => 'Σ',
-  'τ' => 'Τ',
-  'Ï…' => 'Î¥',
-  'φ' => 'Φ',
-  'χ' => 'Χ',
-  'ψ' => 'Ψ',
-  'ω' => 'Ω',
-  'ϊ' => 'Ϊ',
-  'ϋ' => 'Ϋ',
-  'ό' => 'Ό',
-  'ύ' => 'Ύ',
-  'ώ' => 'Ώ',
-  'ϐ' => 'Β',
-  'ϑ' => 'Θ',
-  'ϕ' => 'Φ',
-  'ϖ' => 'Π',
-  'ϗ' => 'Ϗ',
-  'ϙ' => 'Ϙ',
-  'Ï›' => 'Ïš',
-  'ϝ' => 'Ϝ',
-  'ÏŸ' => 'Ïž',
-  'Ï¡' => 'Ï ',
-  'Ï£' => 'Ï¢',
-  'ϥ' => 'Ϥ',
-  'ϧ' => 'Ϧ',
-  'ϩ' => 'Ϩ',
-  'ϫ' => 'Ϫ',
-  'ϭ' => 'Ϭ',
-  'ϯ' => 'Ϯ',
-  'ϰ' => 'Κ',
-  'ϱ' => 'Ρ',
-  'ϲ' => 'Ϲ',
-  'ϳ' => 'Ϳ',
-  'ϵ' => 'Ε',
-  'ϸ' => 'Ϸ',
-  'ϻ' => 'Ϻ',
-  'а' => 'А',
-  'б' => 'Б',
-  'в' => 'В',
-  'г' => 'Г',
-  'д' => 'Д',
-  'е' => 'Е',
-  'ж' => 'Ж',
-  'з' => 'З',
-  'и' => 'И',
-  'й' => 'Й',
-  'к' => 'К',
-  'л' => 'Л',
-  'м' => 'М',
-  'н' => 'Н',
-  'о' => 'О',
-  'п' => 'П',
-  'р' => 'Р',
-  'с' => 'С',
-  'т' => 'Т',
-  'у' => 'У',
-  'ф' => 'Ф',
-  'Ñ…' => 'Ð¥',
-  'ц' => 'Ц',
-  'ч' => 'Ч',
-  'ш' => 'Ш',
-  'щ' => 'Щ',
-  'ъ' => 'Ъ',
-  'ы' => 'Ы',
-  'ь' => 'Ь',
-  'э' => 'Э',
-  'ю' => 'Ю',
-  'я' => 'Я',
-  'ѐ' => 'Ѐ',
-  'ё' => 'Ё',
-  'ђ' => 'Ђ',
-  'ѓ' => 'Ѓ',
-  'є' => 'Є',
-  'Ñ•' => 'Ð…',
-  'і' => 'І',
-  'ї' => 'Ї',
-  'ј' => 'Ј',
-  'љ' => 'Љ',
-  'њ' => 'Њ',
-  'ћ' => 'Ћ',
-  'ќ' => 'Ќ',
-  'ѝ' => 'Ѝ',
-  'Ñž' => 'ÐŽ',
-  'џ' => 'Џ',
-  'Ñ¡' => 'Ñ ',
-  'Ñ£' => 'Ñ¢',
-  'ѥ' => 'Ѥ',
-  'ѧ' => 'Ѧ',
-  'ѩ' => 'Ѩ',
-  'ѫ' => 'Ѫ',
-  'ѭ' => 'Ѭ',
-  'ѯ' => 'Ѯ',
-  'ѱ' => 'Ѱ',
-  'ѳ' => 'Ѳ',
-  'ѵ' => 'Ѵ',
-  'ѷ' => 'Ѷ',
-  'ѹ' => 'Ѹ',
-  'ѻ' => 'Ѻ',
-  'ѽ' => 'Ѽ',
-  'ѿ' => 'Ѿ',
-  'ҁ' => 'Ҁ',
-  'Ò‹' => 'ÒŠ',
-  'ҍ' => 'Ҍ',
-  'ҏ' => 'Ҏ',
-  'ґ' => 'Ґ',
-  'Ò“' => 'Ò’',
-  'Ò•' => 'Ò”',
-  'Ò—' => 'Ò–',
-  'Ò™' => 'Ò˜',
-  'Ò›' => 'Òš',
-  'ҝ' => 'Ҝ',
-  'ÒŸ' => 'Òž',
-  'Ò¡' => 'Ò ',
-  'Ò£' => 'Ò¢',
-  'Ò¥' => 'Ò¤',
-  'Ò§' => 'Ò¦',
-  'Ò©' => 'Ò¨',
-  'Ò«' => 'Òª',
-  'Ò­' => 'Ò¬',
-  'Ò¯' => 'Ò®',
-  'Ò±' => 'Ò°',
-  'Ò³' => 'Ò²',
-  'Òµ' => 'Ò´',
-  'Ò·' => 'Ò¶',
-  'Ò¹' => 'Ò¸',
-  'Ò»' => 'Òº',
-  'Ò½' => 'Ò¼',
-  'Ò¿' => 'Ò¾',
-  'ӂ' => 'Ӂ',
-  'Ó„' => 'Óƒ',
-  'Ó†' => 'Ó…',
-  'Óˆ' => 'Ó‡',
-  'ÓŠ' => 'Ó‰',
-  'ӌ' => 'Ӌ',
-  'ӎ' => 'Ӎ',
-  'ӏ' => 'Ӏ',
-  'ӑ' => 'Ӑ',
-  'Ó“' => 'Ó’',
-  'Ó•' => 'Ó”',
-  'Ó—' => 'Ó–',
-  'Ó™' => 'Ó˜',
-  'Ó›' => 'Óš',
-  'ӝ' => 'Ӝ',
-  'ÓŸ' => 'Óž',
-  'Ó¡' => 'Ó ',
-  'Ó£' => 'Ó¢',
-  'Ó¥' => 'Ó¤',
-  'Ó§' => 'Ó¦',
-  'Ó©' => 'Ó¨',
-  'Ó«' => 'Óª',
-  'Ó­' => 'Ó¬',
-  'Ó¯' => 'Ó®',
-  'Ó±' => 'Ó°',
-  'Ó³' => 'Ó²',
-  'Óµ' => 'Ó´',
-  'Ó·' => 'Ó¶',
-  'Ó¹' => 'Ó¸',
-  'Ó»' => 'Óº',
-  'Ó½' => 'Ó¼',
-  'Ó¿' => 'Ó¾',
-  'ԁ' => 'Ԁ',
-  'Ôƒ' => 'Ô‚',
-  'Ô…' => 'Ô„',
-  'Ô‡' => 'Ô†',
-  'Ô‰' => 'Ôˆ',
-  'Ô‹' => 'ÔŠ',
-  'ԍ' => 'Ԍ',
-  'ԏ' => 'Ԏ',
-  'ԑ' => 'Ԑ',
-  'Ô“' => 'Ô’',
-  'Ô•' => 'Ô”',
-  'Ô—' => 'Ô–',
-  'Ô™' => 'Ô˜',
-  'Ô›' => 'Ôš',
-  'ԝ' => 'Ԝ',
-  'ÔŸ' => 'Ôž',
-  'Ô¡' => 'Ô ',
-  'Ô£' => 'Ô¢',
-  'Ô¥' => 'Ô¤',
-  'Ô§' => 'Ô¦',
-  'Ô©' => 'Ô¨',
-  'Ô«' => 'Ôª',
-  'Ô­' => 'Ô¬',
-  'Ô¯' => 'Ô®',
-  'Õ¡' => 'Ô±',
-  'Õ¢' => 'Ô²',
-  'Õ£' => 'Ô³',
-  'Õ¤' => 'Ô´',
-  'Õ¥' => 'Ôµ',
-  'Õ¦' => 'Ô¶',
-  'Õ§' => 'Ô·',
-  'Õ¨' => 'Ô¸',
-  'Õ©' => 'Ô¹',
-  'Õª' => 'Ôº',
-  'Õ«' => 'Ô»',
-  'Õ¬' => 'Ô¼',
-  'Õ­' => 'Ô½',
-  'Õ®' => 'Ô¾',
-  'Õ¯' => 'Ô¿',
-  'Õ°' => 'Õ€',
-  'ձ' => 'Ձ',
-  'Õ²' => 'Õ‚',
-  'Õ³' => 'Õƒ',
-  'Õ´' => 'Õ„',
-  'Õµ' => 'Õ…',
-  'Õ¶' => 'Õ†',
-  'Õ·' => 'Õ‡',
-  'Õ¸' => 'Õˆ',
-  'Õ¹' => 'Õ‰',
-  'Õº' => 'ÕŠ',
-  'Õ»' => 'Õ‹',
-  'ռ' => 'Ռ',
-  'ս' => 'Ս',
-  'Õ¾' => 'ÕŽ',
-  'տ' => 'Տ',
-  'ր' => 'Ր',
-  'ց' => 'Ց',
-  'Ö‚' => 'Õ’',
-  'Öƒ' => 'Õ“',
-  'Ö„' => 'Õ”',
-  'Ö…' => 'Õ•',
-  'Ö†' => 'Õ–',
-  'ა' => 'Ა',
-  'ბ' => 'Ბ',
-  'გ' => 'Გ',
-  'დ' => 'Დ',
-  'ე' => 'Ე',
-  'ვ' => 'Ვ',
-  'ზ' => 'Ზ',
-  'თ' => 'Თ',
-  'ი' => 'Ი',
-  'კ' => 'Კ',
-  'ლ' => 'Ლ',
-  'მ' => 'Მ',
-  'ნ' => 'Ნ',
-  'ო' => 'Ო',
-  'პ' => 'Პ',
-  'ჟ' => 'Ჟ',
-  'რ' => 'Რ',
-  'ს' => 'Ს',
-  'ტ' => 'Ტ',
-  'უ' => 'Უ',
-  'ფ' => 'Ფ',
-  'ქ' => 'Ქ',
-  'ღ' => 'Ღ',
-  'ყ' => 'Ყ',
-  'შ' => 'Შ',
-  'ჩ' => 'Ჩ',
-  'ც' => 'Ც',
-  'ძ' => 'Ძ',
-  'წ' => 'Წ',
-  'ჭ' => 'Ჭ',
-  'ხ' => 'Ხ',
-  'ჯ' => 'Ჯ',
-  'ჰ' => 'Ჰ',
-  'ჱ' => 'Ჱ',
-  'ჲ' => 'Ჲ',
-  'ჳ' => 'Ჳ',
-  'ჴ' => 'Ჴ',
-  'ჵ' => 'Ჵ',
-  'ჶ' => 'Ჶ',
-  'ჷ' => 'Ჷ',
-  'ჸ' => 'Ჸ',
-  'ჹ' => 'Ჹ',
-  'ჺ' => 'Ჺ',
-  'ჽ' => 'Ჽ',
-  'ჾ' => 'Ჾ',
-  'ჿ' => 'Ჿ',
-  'ᏸ' => 'Ᏸ',
-  'ᏹ' => 'Ᏹ',
-  'ᏺ' => 'Ᏺ',
-  'ᏻ' => 'Ᏻ',
-  'ᏼ' => 'Ᏼ',
-  'ᏽ' => 'Ᏽ',
-  'á²€' => 'Ð’',
-  'ᲁ' => 'Д',
-  'ᲂ' => 'О',
-  'ᲃ' => 'С',
-  'ᲄ' => 'Т',
-  'ᲅ' => 'Т',
-  'ᲆ' => 'Ъ',
-  'ᲇ' => 'Ѣ',
-  'ᲈ' => 'Ꙋ',
-  'ᵹ' => 'Ᵹ',
-  'áµ½' => 'â±£',
-  'ᶎ' => 'Ᶎ',
-  'ḁ' => 'Ḁ',
-  'ḃ' => 'Ḃ',
-  'ḅ' => 'Ḅ',
-  'ḇ' => 'Ḇ',
-  'ḉ' => 'Ḉ',
-  'ḋ' => 'Ḋ',
-  'ḍ' => 'Ḍ',
-  'ḏ' => 'Ḏ',
-  'ḑ' => 'Ḑ',
-  'ḓ' => 'Ḓ',
-  'ḕ' => 'Ḕ',
-  'ḗ' => 'Ḗ',
-  'ḙ' => 'Ḙ',
-  'ḛ' => 'Ḛ',
-  'ḝ' => 'Ḝ',
-  'ḟ' => 'Ḟ',
-  'ḡ' => 'Ḡ',
-  'ḣ' => 'Ḣ',
-  'ḥ' => 'Ḥ',
-  'ḧ' => 'Ḧ',
-  'ḩ' => 'Ḩ',
-  'ḫ' => 'Ḫ',
-  'ḭ' => 'Ḭ',
-  'ḯ' => 'Ḯ',
-  'ḱ' => 'Ḱ',
-  'ḳ' => 'Ḳ',
-  'ḵ' => 'Ḵ',
-  'ḷ' => 'Ḷ',
-  'ḹ' => 'Ḹ',
-  'ḻ' => 'Ḻ',
-  'ḽ' => 'Ḽ',
-  'ḿ' => 'Ḿ',
-  'ṁ' => 'Ṁ',
-  'ṃ' => 'Ṃ',
-  'ṅ' => 'Ṅ',
-  'ṇ' => 'Ṇ',
-  'ṉ' => 'Ṉ',
-  'ṋ' => 'Ṋ',
-  'ṍ' => 'Ṍ',
-  'ṏ' => 'Ṏ',
-  'ṑ' => 'Ṑ',
-  'ṓ' => 'Ṓ',
-  'ṕ' => 'Ṕ',
-  'á¹—' => 'á¹–',
-  'ṙ' => 'Ṙ',
-  'ṛ' => 'Ṛ',
-  'ṝ' => 'Ṝ',
-  'ṟ' => 'Ṟ',
-  'ṡ' => 'Ṡ',
-  'á¹£' => 'á¹¢',
-  'ṥ' => 'Ṥ',
-  'ṧ' => 'Ṧ',
-  'ṩ' => 'Ṩ',
-  'ṫ' => 'Ṫ',
-  'ṭ' => 'Ṭ',
-  'ṯ' => 'Ṯ',
-  'á¹±' => 'á¹°',
-  'á¹³' => 'á¹²',
-  'á¹µ' => 'á¹´',
-  'á¹·' => 'á¹¶',
-  'ṹ' => 'Ṹ',
-  'ṻ' => 'Ṻ',
-  'á¹½' => 'á¹¼',
-  'ṿ' => 'Ṿ',
-  'ẁ' => 'Ẁ',
-  'ẃ' => 'Ẃ',
-  'ẅ' => 'Ẅ',
-  'ẇ' => 'Ẇ',
-  'ẉ' => 'Ẉ',
-  'ẋ' => 'Ẋ',
-  'ẍ' => 'Ẍ',
-  'ẏ' => 'Ẏ',
-  'ẑ' => 'Ẑ',
-  'ẓ' => 'Ẓ',
-  'ẕ' => 'Ẕ',
-  'ẛ' => 'Ṡ',
-  'ạ' => 'Ạ',
-  'ả' => 'Ả',
-  'ấ' => 'Ấ',
-  'ầ' => 'Ầ',
-  'ẩ' => 'Ẩ',
-  'ẫ' => 'Ẫ',
-  'ậ' => 'Ậ',
-  'ắ' => 'Ắ',
-  'ằ' => 'Ằ',
-  'ẳ' => 'Ẳ',
-  'ẵ' => 'Ẵ',
-  'ặ' => 'Ặ',
-  'ẹ' => 'Ẹ',
-  'ẻ' => 'Ẻ',
-  'ẽ' => 'Ẽ',
-  'ế' => 'Ế',
-  'ề' => 'Ề',
-  'ể' => 'Ể',
-  'ễ' => 'Ễ',
-  'ệ' => 'Ệ',
-  'ỉ' => 'Ỉ',
-  'ị' => 'Ị',
-  'ọ' => 'Ọ',
-  'ỏ' => 'Ỏ',
-  'ố' => 'Ố',
-  'ồ' => 'Ồ',
-  'ổ' => 'Ổ',
-  'á»—' => 'á»–',
-  'ộ' => 'Ộ',
-  'ớ' => 'Ớ',
-  'ờ' => 'Ờ',
-  'ở' => 'Ở',
-  'ỡ' => 'Ỡ',
-  'ợ' => 'Ợ',
-  'ụ' => 'Ụ',
-  'ủ' => 'Ủ',
-  'ứ' => 'Ứ',
-  'ừ' => 'Ừ',
-  'ử' => 'Ử',
-  'ữ' => 'Ữ',
-  'á»±' => 'á»°',
-  'ỳ' => 'Ỳ',
-  'ỵ' => 'Ỵ',
-  'á»·' => 'á»¶',
-  'ỹ' => 'Ỹ',
-  'ỻ' => 'Ỻ',
-  'ỽ' => 'Ỽ',
-  'ỿ' => 'Ỿ',
-  'ἀ' => 'Ἀ',
-  'ἁ' => 'Ἁ',
-  'ἂ' => 'Ἂ',
-  'ἃ' => 'Ἃ',
-  'ἄ' => 'Ἄ',
-  'ἅ' => 'Ἅ',
-  'ἆ' => 'Ἆ',
-  'ἇ' => 'Ἇ',
-  'ἐ' => 'Ἐ',
-  'ἑ' => 'Ἑ',
-  'ἒ' => 'Ἒ',
-  'ἓ' => 'Ἓ',
-  'ἔ' => 'Ἔ',
-  'ἕ' => 'Ἕ',
-  'ἠ' => 'Ἠ',
-  'ἡ' => 'Ἡ',
-  'ἢ' => 'Ἢ',
-  'ἣ' => 'Ἣ',
-  'ἤ' => 'Ἤ',
-  'á¼¥' => 'á¼­',
-  'ἦ' => 'Ἦ',
-  'ἧ' => 'Ἧ',
-  'ἰ' => 'Ἰ',
-  'á¼±' => 'á¼¹',
-  'ἲ' => 'Ἲ',
-  'á¼³' => 'á¼»',
-  'á¼´' => 'á¼¼',
-  'á¼µ' => 'á¼½',
-  'á¼¶' => 'á¼¾',
-  'ἷ' => 'Ἷ',
-  'ὀ' => 'Ὀ',
-  'ὁ' => 'Ὁ',
-  'ὂ' => 'Ὂ',
-  'ὃ' => 'Ὃ',
-  'ὄ' => 'Ὄ',
-  'ὅ' => 'Ὅ',
-  'ὑ' => 'Ὑ',
-  'ὓ' => 'Ὓ',
-  'ὕ' => 'Ὕ',
-  'ὗ' => 'Ὗ',
-  'ὠ' => 'Ὠ',
-  'ὡ' => 'Ὡ',
-  'ὢ' => 'Ὢ',
-  'ὣ' => 'Ὣ',
-  'ὤ' => 'Ὤ',
-  'á½¥' => 'á½­',
-  'ὦ' => 'Ὦ',
-  'ὧ' => 'Ὧ',
-  'ὰ' => 'Ὰ',
-  'á½±' => 'á¾»',
-  'ὲ' => 'Ὲ',
-  'έ' => 'Έ',
-  'ὴ' => 'Ὴ',
-  'á½µ' => 'á¿‹',
-  'ὶ' => 'Ὶ',
-  'á½·' => 'á¿›',
-  'ὸ' => 'Ὸ',
-  'ό' => 'Ό',
-  'ὺ' => 'Ὺ',
-  'á½»' => 'á¿«',
-  'ὼ' => 'Ὼ',
-  'á½½' => 'á¿»',
-  'ᾀ' => 'ᾈ',
-  'ᾁ' => 'ᾉ',
-  'ᾂ' => 'ᾊ',
-  'ᾃ' => 'ᾋ',
-  'ᾄ' => 'ᾌ',
-  'ᾅ' => 'ᾍ',
-  'ᾆ' => 'ᾎ',
-  'ᾇ' => 'ᾏ',
-  'ᾐ' => 'ᾘ',
-  'ᾑ' => 'ᾙ',
-  'ᾒ' => 'ᾚ',
-  'ᾓ' => 'ᾛ',
-  'ᾔ' => 'ᾜ',
-  'ᾕ' => 'ᾝ',
-  'ᾖ' => 'ᾞ',
-  'ᾗ' => 'ᾟ',
-  'ᾠ' => 'ᾨ',
-  'ᾡ' => 'ᾩ',
-  'ᾢ' => 'ᾪ',
-  'ᾣ' => 'ᾫ',
-  'ᾤ' => 'ᾬ',
-  'á¾¥' => 'á¾­',
-  'ᾦ' => 'ᾮ',
-  'ᾧ' => 'ᾯ',
-  'ᾰ' => 'Ᾰ',
-  'á¾±' => 'á¾¹',
-  'á¾³' => 'á¾¼',
-  'ι' => 'Ι',
-  'ῃ' => 'ῌ',
-  'ῐ' => 'Ῐ',
-  'á¿‘' => 'á¿™',
-  'ῠ' => 'Ῠ',
-  'á¿¡' => 'á¿©',
-  'ῥ' => 'Ῥ',
-  'ῳ' => 'ῼ',
-  'ⅎ' => 'Ⅎ',
-  'â…°' => 'â… ',
-  'â…±' => 'â…¡',
-  'â…²' => 'â…¢',
-  'â…³' => 'â…£',
-  'â…´' => 'â…¤',
-  'â…µ' => 'â…¥',
-  'â…¶' => 'â…¦',
-  'â…·' => 'â…§',
-  'â…¸' => 'â…¨',
-  'â…¹' => 'â…©',
-  'â…º' => 'â…ª',
-  'â…»' => 'â…«',
-  'â…¼' => 'â…¬',
-  'â…½' => 'â…­',
-  'â…¾' => 'â…®',
-  'â…¿' => 'â…¯',
-  'ↄ' => 'Ↄ',
-  'ⓐ' => 'Ⓐ',
-  'â“‘' => 'â’·',
-  'â“’' => 'â’¸',
-  'â““' => 'â’¹',
-  'â“”' => 'â’º',
-  'â“•' => 'â’»',
-  'â“–' => 'â’¼',
-  'â“—' => 'â’½',
-  'ⓘ' => 'Ⓘ',
-  'â“™' => 'â’¿',
-  'ⓚ' => 'Ⓚ',
-  'ⓛ' => 'Ⓛ',
-  'ⓜ' => 'Ⓜ',
-  'ⓝ' => 'Ⓝ',
-  'ⓞ' => 'Ⓞ',
-  'ⓟ' => 'Ⓟ',
-  'ⓠ' => 'Ⓠ',
-  'ⓡ' => 'Ⓡ',
-  'ⓢ' => 'Ⓢ',
-  'ⓣ' => 'Ⓣ',
-  'ⓤ' => 'Ⓤ',
-  'â“¥' => 'â“‹',
-  'ⓦ' => 'Ⓦ',
-  'ⓧ' => 'Ⓧ',
-  'ⓨ' => 'Ⓨ',
-  'ⓩ' => 'Ⓩ',
-  'â°°' => 'â°€',
-  'ⰱ' => 'Ⰱ',
-  'â°²' => 'â°‚',
-  'â°³' => 'â°ƒ',
-  'â°´' => 'â°„',
-  'â°µ' => 'â°…',
-  'â°¶' => 'â°†',
-  'â°·' => 'â°‡',
-  'â°¸' => 'â°ˆ',
-  'â°¹' => 'â°‰',
-  'â°º' => 'â°Š',
-  'â°»' => 'â°‹',
-  'ⰼ' => 'Ⰼ',
-  'ⰽ' => 'Ⰽ',
-  'â°¾' => 'â°Ž',
-  'ⰿ' => 'Ⰿ',
-  'ⱀ' => 'Ⱀ',
-  'ⱁ' => 'Ⱁ',
-  'ⱂ' => 'Ⱂ',
-  'ⱃ' => 'Ⱃ',
-  'ⱄ' => 'Ⱄ',
-  'â±…' => 'â°•',
-  'ⱆ' => 'Ⱆ',
-  'ⱇ' => 'Ⱇ',
-  'ⱈ' => 'Ⱈ',
-  'ⱉ' => 'Ⱉ',
-  'ⱊ' => 'Ⱊ',
-  'ⱋ' => 'Ⱋ',
-  'ⱌ' => 'Ⱌ',
-  'ⱍ' => 'Ⱍ',
-  'ⱎ' => 'Ⱎ',
-  'ⱏ' => 'Ⱏ',
-  'ⱐ' => 'Ⱐ',
-  'ⱑ' => 'Ⱑ',
-  'â±’' => 'â°¢',
-  'ⱓ' => 'Ⱓ',
-  'â±”' => 'â°¤',
-  'ⱕ' => 'Ⱕ',
-  'â±–' => 'â°¦',
-  'â±—' => 'â°§',
-  'ⱘ' => 'Ⱘ',
-  'â±™' => 'â°©',
-  'ⱚ' => 'Ⱚ',
-  'â±›' => 'â°«',
-  'ⱜ' => 'Ⱜ',
-  'ⱝ' => 'Ⱝ',
-  'ⱞ' => 'Ⱞ',
-  'ⱡ' => 'Ⱡ',
-  'ⱥ' => 'Ⱥ',
-  'ⱦ' => 'Ⱦ',
-  'ⱨ' => 'Ⱨ',
-  'ⱪ' => 'Ⱪ',
-  'ⱬ' => 'Ⱬ',
-  'â±³' => 'â±²',
-  'â±¶' => 'â±µ',
-  'ⲁ' => 'Ⲁ',
-  'ⲃ' => 'Ⲃ',
-  'ⲅ' => 'Ⲅ',
-  'ⲇ' => 'Ⲇ',
-  'ⲉ' => 'Ⲉ',
-  'ⲋ' => 'Ⲋ',
-  'ⲍ' => 'Ⲍ',
-  'ⲏ' => 'Ⲏ',
-  'ⲑ' => 'Ⲑ',
-  'ⲓ' => 'Ⲓ',
-  'ⲕ' => 'Ⲕ',
-  'â²—' => 'â²–',
-  'ⲙ' => 'Ⲙ',
-  'ⲛ' => 'Ⲛ',
-  'ⲝ' => 'Ⲝ',
-  'ⲟ' => 'Ⲟ',
-  'ⲡ' => 'Ⲡ',
-  'â²£' => 'â²¢',
-  'ⲥ' => 'Ⲥ',
-  'ⲧ' => 'Ⲧ',
-  'ⲩ' => 'Ⲩ',
-  'ⲫ' => 'Ⲫ',
-  'ⲭ' => 'Ⲭ',
-  'ⲯ' => 'Ⲯ',
-  'â²±' => 'â²°',
-  'â²³' => 'â²²',
-  'â²µ' => 'â²´',
-  'â²·' => 'â²¶',
-  'ⲹ' => 'Ⲹ',
-  'ⲻ' => 'Ⲻ',
-  'â²½' => 'â²¼',
-  'ⲿ' => 'Ⲿ',
-  'ⳁ' => 'Ⳁ',
-  'ⳃ' => 'Ⳃ',
-  'ⳅ' => 'Ⳅ',
-  'ⳇ' => 'Ⳇ',
-  'ⳉ' => 'Ⳉ',
-  'ⳋ' => 'Ⳋ',
-  'ⳍ' => 'Ⳍ',
-  'ⳏ' => 'Ⳏ',
-  'ⳑ' => 'Ⳑ',
-  'ⳓ' => 'Ⳓ',
-  'ⳕ' => 'Ⳕ',
-  'â³—' => 'â³–',
-  'ⳙ' => 'Ⳙ',
-  'ⳛ' => 'Ⳛ',
-  'ⳝ' => 'Ⳝ',
-  'ⳟ' => 'Ⳟ',
-  'ⳡ' => 'Ⳡ',
-  'â³£' => 'â³¢',
-  'ⳬ' => 'Ⳬ',
-  'â³®' => 'â³­',
-  'â³³' => 'â³²',
-  'â´€' => 'á‚ ',
-  'ⴁ' => 'Ⴁ',
-  'â´‚' => 'á‚¢',
-  'â´ƒ' => 'á‚£',
-  'ⴄ' => 'Ⴄ',
-  'â´…' => 'á‚¥',
-  'ⴆ' => 'Ⴆ',
-  'â´‡' => 'á‚§',
-  'ⴈ' => 'Ⴈ',
-  'â´‰' => 'á‚©',
-  'ⴊ' => 'Ⴊ',
-  'â´‹' => 'á‚«',
-  'ⴌ' => 'Ⴌ',
-  'ⴍ' => 'Ⴍ',
-  'â´Ž' => 'á‚®',
-  'ⴏ' => 'Ⴏ',
-  'ⴐ' => 'Ⴐ',
-  'ⴑ' => 'Ⴑ',
-  'ⴒ' => 'Ⴒ',
-  'ⴓ' => 'Ⴓ',
-  'â´”' => 'á‚´',
-  'ⴕ' => 'Ⴕ',
-  'â´–' => 'á‚¶',
-  'â´—' => 'á‚·',
-  'ⴘ' => 'Ⴘ',
-  'ⴙ' => 'Ⴙ',
-  'ⴚ' => 'Ⴚ',
-  'â´›' => 'á‚»',
-  'ⴜ' => 'Ⴜ',
-  'ⴝ' => 'Ⴝ',
-  'ⴞ' => 'Ⴞ',
-  'â´Ÿ' => 'á‚¿',
-  'ⴠ' => 'Ⴠ',
-  'ⴡ' => 'Ⴡ',
-  'ⴢ' => 'Ⴢ',
-  'ⴣ' => 'Ⴣ',
-  'ⴤ' => 'Ⴤ',
-  'ⴥ' => 'Ⴥ',
-  'ⴧ' => 'Ⴧ',
-  'ⴭ' => 'Ⴭ',
-  'ꙁ' => 'Ꙁ',
-  'ꙃ' => 'Ꙃ',
-  'ꙅ' => 'Ꙅ',
-  'ꙇ' => 'Ꙇ',
-  'ꙉ' => 'Ꙉ',
-  'ꙋ' => 'Ꙋ',
-  'ꙍ' => 'Ꙍ',
-  'ꙏ' => 'Ꙏ',
-  'ꙑ' => 'Ꙑ',
-  'ꙓ' => 'Ꙓ',
-  'ꙕ' => 'Ꙕ',
-  'ê™—' => 'ê™–',
-  'ꙙ' => 'Ꙙ',
-  'ꙛ' => 'Ꙛ',
-  'ꙝ' => 'Ꙝ',
-  'ꙟ' => 'Ꙟ',
-  'ꙡ' => 'Ꙡ',
-  'ꙣ' => 'Ꙣ',
-  'ꙥ' => 'Ꙥ',
-  'ꙧ' => 'Ꙧ',
-  'ꙩ' => 'Ꙩ',
-  'ꙫ' => 'Ꙫ',
-  'ꙭ' => 'Ꙭ',
-  'ꚁ' => 'Ꚁ',
-  'ꚃ' => 'Ꚃ',
-  'êš…' => 'êš„',
-  'ꚇ' => 'Ꚇ',
-  'ꚉ' => 'Ꚉ',
-  'ꚋ' => 'Ꚋ',
-  'ꚍ' => 'Ꚍ',
-  'ꚏ' => 'Ꚏ',
-  'ꚑ' => 'Ꚑ',
-  'êš“' => 'êš’',
-  'êš•' => 'êš”',
-  'êš—' => 'êš–',
-  'ꚙ' => 'Ꚙ',
-  'êš›' => 'êšš',
-  'ꜣ' => 'Ꜣ',
-  'ꜥ' => 'Ꜥ',
-  'ꜧ' => 'Ꜧ',
-  'ꜩ' => 'Ꜩ',
-  'ꜫ' => 'Ꜫ',
-  'ꜭ' => 'Ꜭ',
-  'ꜯ' => 'Ꜯ',
-  'ꜳ' => 'Ꜳ',
-  'ꜵ' => 'Ꜵ',
-  'ꜷ' => 'Ꜷ',
-  'ꜹ' => 'Ꜹ',
-  'ꜻ' => 'Ꜻ',
-  'ꜽ' => 'Ꜽ',
-  'ꜿ' => 'Ꜿ',
-  'ꝁ' => 'Ꝁ',
-  'ꝃ' => 'Ꝃ',
-  'ꝅ' => 'Ꝅ',
-  'ꝇ' => 'Ꝇ',
-  'ꝉ' => 'Ꝉ',
-  'ꝋ' => 'Ꝋ',
-  'ꝍ' => 'Ꝍ',
-  'ꝏ' => 'Ꝏ',
-  'ꝑ' => 'Ꝑ',
-  'ꝓ' => 'Ꝓ',
-  'ꝕ' => 'Ꝕ',
-  'ꝗ' => 'Ꝗ',
-  'ꝙ' => 'Ꝙ',
-  'ꝛ' => 'Ꝛ',
-  'ꝝ' => 'Ꝝ',
-  'ꝟ' => 'Ꝟ',
-  'ꝡ' => 'Ꝡ',
-  'ꝣ' => 'Ꝣ',
-  'ꝥ' => 'Ꝥ',
-  'ꝧ' => 'Ꝧ',
-  'ꝩ' => 'Ꝩ',
-  'ꝫ' => 'Ꝫ',
-  'ꝭ' => 'Ꝭ',
-  'ꝯ' => 'Ꝯ',
-  'ꝺ' => 'Ꝺ',
-  'ꝼ' => 'Ꝼ',
-  'ꝿ' => 'Ꝿ',
-  'ꞁ' => 'Ꞁ',
-  'ꞃ' => 'Ꞃ',
-  'êž…' => 'êž„',
-  'ꞇ' => 'Ꞇ',
-  'ꞌ' => 'Ꞌ',
-  'ꞑ' => 'Ꞑ',
-  'êž“' => 'êž’',
-  'ꞔ' => 'Ꞔ',
-  'êž—' => 'êž–',
-  'ꞙ' => 'Ꞙ',
-  'êž›' => 'êžš',
-  'ꞝ' => 'Ꞝ',
-  'ꞟ' => 'Ꞟ',
-  'êž¡' => 'êž ',
-  'ꞣ' => 'Ꞣ',
-  'ꞥ' => 'Ꞥ',
-  'ꞧ' => 'Ꞧ',
-  'ꞩ' => 'Ꞩ',
-  'êžµ' => 'êž´',
-  'êž·' => 'êž¶',
-  'ꞹ' => 'Ꞹ',
-  'ꞻ' => 'Ꞻ',
-  'êž½' => 'êž¼',
-  'êž¿' => 'êž¾',
-  'ꟃ' => 'Ꟃ',
-  'ꟈ' => 'Ꟈ',
-  'ꟊ' => 'Ꟊ',
-  'ꟶ' => 'Ꟶ',
-  'ê­“' => 'êž³',
-  'ꭰ' => 'Ꭰ',
-  'ꭱ' => 'Ꭱ',
-  'ꭲ' => 'Ꭲ',
-  'ꭳ' => 'Ꭳ',
-  'ꭴ' => 'Ꭴ',
-  'ꭵ' => 'Ꭵ',
-  'ꭶ' => 'Ꭶ',
-  'ꭷ' => 'Ꭷ',
-  'ꭸ' => 'Ꭸ',
-  'ꭹ' => 'Ꭹ',
-  'ꭺ' => 'Ꭺ',
-  'ꭻ' => 'Ꭻ',
-  'ꭼ' => 'Ꭼ',
-  'ꭽ' => 'Ꭽ',
-  'ꭾ' => 'Ꭾ',
-  'ꭿ' => 'Ꭿ',
-  'ꮀ' => 'Ꮀ',
-  'ꮁ' => 'Ꮁ',
-  'ꮂ' => 'Ꮂ',
-  'ꮃ' => 'Ꮃ',
-  'ꮄ' => 'Ꮄ',
-  'ꮅ' => 'Ꮅ',
-  'ꮆ' => 'Ꮆ',
-  'ꮇ' => 'Ꮇ',
-  'ꮈ' => 'Ꮈ',
-  'ꮉ' => 'Ꮉ',
-  'ꮊ' => 'Ꮊ',
-  'ꮋ' => 'Ꮋ',
-  'ꮌ' => 'Ꮌ',
-  'ꮍ' => 'Ꮍ',
-  'ꮎ' => 'Ꮎ',
-  'ꮏ' => 'Ꮏ',
-  'ꮐ' => 'Ꮐ',
-  'ꮑ' => 'Ꮑ',
-  'ꮒ' => 'Ꮒ',
-  'ꮓ' => 'Ꮓ',
-  'ꮔ' => 'Ꮔ',
-  'ꮕ' => 'Ꮕ',
-  'ꮖ' => 'Ꮖ',
-  'ꮗ' => 'Ꮗ',
-  'ꮘ' => 'Ꮘ',
-  'ꮙ' => 'Ꮙ',
-  'ꮚ' => 'Ꮚ',
-  'ꮛ' => 'Ꮛ',
-  'ꮜ' => 'Ꮜ',
-  'ꮝ' => 'Ꮝ',
-  'ꮞ' => 'Ꮞ',
-  'ꮟ' => 'Ꮟ',
-  'ꮠ' => 'Ꮠ',
-  'ꮡ' => 'Ꮡ',
-  'ꮢ' => 'Ꮢ',
-  'ꮣ' => 'Ꮣ',
-  'ꮤ' => 'Ꮤ',
-  'ꮥ' => 'Ꮥ',
-  'ꮦ' => 'Ꮦ',
-  'ꮧ' => 'Ꮧ',
-  'ꮨ' => 'Ꮨ',
-  'ꮩ' => 'Ꮩ',
-  'ꮪ' => 'Ꮪ',
-  'ꮫ' => 'Ꮫ',
-  'ꮬ' => 'Ꮬ',
-  'ꮭ' => 'Ꮭ',
-  'ꮮ' => 'Ꮮ',
-  'ꮯ' => 'Ꮯ',
-  'ꮰ' => 'Ꮰ',
-  'ꮱ' => 'Ꮱ',
-  'ꮲ' => 'Ꮲ',
-  'ꮳ' => 'Ꮳ',
-  'ꮴ' => 'Ꮴ',
-  'ꮵ' => 'Ꮵ',
-  'ꮶ' => 'Ꮶ',
-  'ꮷ' => 'Ꮷ',
-  'ꮸ' => 'Ꮸ',
-  'ꮹ' => 'Ꮹ',
-  'ꮺ' => 'Ꮺ',
-  'ꮻ' => 'Ꮻ',
-  'ꮼ' => 'Ꮼ',
-  'ꮽ' => 'Ꮽ',
-  'ꮾ' => 'Ꮾ',
-  'ꮿ' => 'Ꮿ',
-  'a' => 'A',
-  'b' => 'B',
-  'c' => 'C',
-  'd' => 'D',
-  'ï½…' => 'ï¼¥',
-  'f' => 'F',
-  'g' => 'G',
-  'h' => 'H',
-  'i' => 'I',
-  'j' => 'J',
-  'k' => 'K',
-  'l' => 'L',
-  'm' => 'M',
-  'n' => 'N',
-  'o' => 'O',
-  'p' => 'P',
-  'q' => 'Q',
-  'ï½’' => 'ï¼²',
-  's' => 'S',
-  'ï½”' => 'ï¼´',
-  'u' => 'U',
-  'ï½–' => 'ï¼¶',
-  'ï½—' => 'ï¼·',
-  'x' => 'X',
-  'ï½™' => 'ï¼¹',
-  'z' => 'Z',
-  '𐐨' => '𐐀',
-  '𐐩' => '𐐁',
-  '𐐪' => '𐐂',
-  '𐐫' => '𐐃',
-  '𐐬' => '𐐄',
-  '𐐭' => '𐐅',
-  '𐐮' => '𐐆',
-  '𐐯' => '𐐇',
-  '𐐰' => '𐐈',
-  '𐐱' => '𐐉',
-  '𐐲' => '𐐊',
-  '𐐳' => '𐐋',
-  '𐐴' => '𐐌',
-  '𐐵' => '𐐍',
-  '𐐶' => '𐐎',
-  '𐐷' => '𐐏',
-  '𐐸' => '𐐐',
-  '𐐹' => '𐐑',
-  '𐐺' => '𐐒',
-  '𐐻' => '𐐓',
-  '𐐼' => '𐐔',
-  '𐐽' => '𐐕',
-  '𐐾' => '𐐖',
-  '𐐿' => '𐐗',
-  '𐑀' => '𐐘',
-  '𐑁' => '𐐙',
-  '𐑂' => '𐐚',
-  '𐑃' => '𐐛',
-  '𐑄' => '𐐜',
-  '𐑅' => '𐐝',
-  '𐑆' => '𐐞',
-  '𐑇' => '𐐟',
-  '𐑈' => '𐐠',
-  '𐑉' => '𐐡',
-  '𐑊' => '𐐢',
-  '𐑋' => '𐐣',
-  '𐑌' => '𐐤',
-  '𐑍' => '𐐥',
-  '𐑎' => '𐐦',
-  '𐑏' => '𐐧',
-  '𐓘' => '𐒰',
-  '𐓙' => '𐒱',
-  '𐓚' => '𐒲',
-  '𐓛' => '𐒳',
-  '𐓜' => '𐒴',
-  '𐓝' => '𐒵',
-  '𐓞' => '𐒶',
-  '𐓟' => '𐒷',
-  '𐓠' => '𐒸',
-  '𐓡' => '𐒹',
-  '𐓢' => '𐒺',
-  '𐓣' => '𐒻',
-  '𐓤' => '𐒼',
-  '𐓥' => '𐒽',
-  '𐓦' => '𐒾',
-  '𐓧' => '𐒿',
-  '𐓨' => '𐓀',
-  '𐓩' => '𐓁',
-  '𐓪' => '𐓂',
-  '𐓫' => '𐓃',
-  '𐓬' => '𐓄',
-  '𐓭' => '𐓅',
-  '𐓮' => '𐓆',
-  '𐓯' => '𐓇',
-  '𐓰' => '𐓈',
-  '𐓱' => '𐓉',
-  '𐓲' => '𐓊',
-  '𐓳' => '𐓋',
-  '𐓴' => '𐓌',
-  '𐓵' => '𐓍',
-  '𐓶' => '𐓎',
-  '𐓷' => '𐓏',
-  '𐓸' => '𐓐',
-  '𐓹' => '𐓑',
-  '𐓺' => '𐓒',
-  '𐓻' => '𐓓',
-  '𐳀' => '𐲀',
-  '𐳁' => '𐲁',
-  '𐳂' => '𐲂',
-  '𐳃' => '𐲃',
-  '𐳄' => '𐲄',
-  '𐳅' => '𐲅',
-  '𐳆' => '𐲆',
-  '𐳇' => '𐲇',
-  '𐳈' => '𐲈',
-  '𐳉' => '𐲉',
-  '𐳊' => '𐲊',
-  '𐳋' => '𐲋',
-  '𐳌' => '𐲌',
-  '𐳍' => '𐲍',
-  '𐳎' => '𐲎',
-  '𐳏' => '𐲏',
-  '𐳐' => '𐲐',
-  '𐳑' => '𐲑',
-  '𐳒' => '𐲒',
-  '𐳓' => '𐲓',
-  '𐳔' => '𐲔',
-  '𐳕' => '𐲕',
-  '𐳖' => '𐲖',
-  '𐳗' => '𐲗',
-  '𐳘' => '𐲘',
-  '𐳙' => '𐲙',
-  '𐳚' => '𐲚',
-  '𐳛' => '𐲛',
-  '𐳜' => '𐲜',
-  '𐳝' => '𐲝',
-  '𐳞' => '𐲞',
-  '𐳟' => '𐲟',
-  '𐳠' => '𐲠',
-  '𐳡' => '𐲡',
-  '𐳢' => '𐲢',
-  '𐳣' => '𐲣',
-  '𐳤' => '𐲤',
-  '𐳥' => '𐲥',
-  '𐳦' => '𐲦',
-  '𐳧' => '𐲧',
-  '𐳨' => '𐲨',
-  '𐳩' => '𐲩',
-  '𐳪' => '𐲪',
-  '𐳫' => '𐲫',
-  '𐳬' => '𐲬',
-  '𐳭' => '𐲭',
-  '𐳮' => '𐲮',
-  '𐳯' => '𐲯',
-  '𐳰' => '𐲰',
-  '𐳱' => '𐲱',
-  '𐳲' => '𐲲',
-  'ð‘£€' => 'ð‘¢ ',
-  '𑣁' => '𑢡',
-  '𑣂' => '𑢢',
-  '𑣃' => '𑢣',
-  '𑣄' => '𑢤',
-  'ð‘£…' => 'ð‘¢¥',
-  '𑣆' => '𑢦',
-  '𑣇' => '𑢧',
-  '𑣈' => '𑢨',
-  '𑣉' => '𑢩',
-  '𑣊' => '𑢪',
-  '𑣋' => '𑢫',
-  '𑣌' => '𑢬',
-  '𑣍' => '𑢭',
-  '𑣎' => '𑢮',
-  '𑣏' => '𑢯',
-  '𑣐' => '𑢰',
-  '𑣑' => '𑢱',
-  'ð‘£’' => 'ð‘¢²',
-  '𑣓' => '𑢳',
-  'ð‘£”' => 'ð‘¢´',
-  '𑣕' => '𑢵',
-  'ð‘£–' => 'ð‘¢¶',
-  'ð‘£—' => 'ð‘¢·',
-  '𑣘' => '𑢸',
-  'ð‘£™' => 'ð‘¢¹',
-  '𑣚' => '𑢺',
-  'ð‘£›' => 'ð‘¢»',
-  '𑣜' => '𑢼',
-  '𑣝' => '𑢽',
-  '𑣞' => '𑢾',
-  '𑣟' => '𑢿',
-  'ð–¹ ' => 'ð–¹€',
-  '𖹡' => '𖹁',
-  '𖹢' => '𖹂',
-  '𖹣' => '𖹃',
-  '𖹤' => '𖹄',
-  'ð–¹¥' => 'ð–¹…',
-  '𖹦' => '𖹆',
-  '𖹧' => '𖹇',
-  '𖹨' => '𖹈',
-  '𖹩' => '𖹉',
-  '𖹪' => '𖹊',
-  '𖹫' => '𖹋',
-  '𖹬' => '𖹌',
-  '𖹭' => '𖹍',
-  '𖹮' => '𖹎',
-  '𖹯' => '𖹏',
-  '𖹰' => '𖹐',
-  '𖹱' => '𖹑',
-  'ð–¹²' => 'ð–¹’',
-  '𖹳' => '𖹓',
-  'ð–¹´' => 'ð–¹”',
-  '𖹵' => '𖹕',
-  'ð–¹¶' => 'ð–¹–',
-  'ð–¹·' => 'ð–¹—',
-  '𖹸' => '𖹘',
-  'ð–¹¹' => 'ð–¹™',
-  '𖹺' => '𖹚',
-  'ð–¹»' => 'ð–¹›',
-  '𖹼' => '𖹜',
-  '𖹽' => '𖹝',
-  '𖹾' => '𖹞',
-  '𖹿' => '𖹟',
-  '𞤢' => '𞤀',
-  '𞤣' => '𞤁',
-  '𞤤' => '𞤂',
-  '𞤥' => '𞤃',
-  '𞤦' => '𞤄',
-  '𞤧' => '𞤅',
-  '𞤨' => '𞤆',
-  '𞤩' => '𞤇',
-  '𞤪' => '𞤈',
-  '𞤫' => '𞤉',
-  '𞤬' => '𞤊',
-  '𞤭' => '𞤋',
-  '𞤮' => '𞤌',
-  '𞤯' => '𞤍',
-  '𞤰' => '𞤎',
-  '𞤱' => '𞤏',
-  '𞤲' => '𞤐',
-  '𞤳' => '𞤑',
-  '𞤴' => '𞤒',
-  '𞤵' => '𞤓',
-  '𞤶' => '𞤔',
-  '𞤷' => '𞤕',
-  '𞤸' => '𞤖',
-  '𞤹' => '𞤗',
-  '𞤺' => '𞤘',
-  '𞤻' => '𞤙',
-  '𞤼' => '𞤚',
-  '𞤽' => '𞤛',
-  '𞤾' => '𞤜',
-  '𞤿' => '𞤝',
-  '𞥀' => '𞤞',
-  '𞥁' => '𞤟',
-  '𞥂' => '𞤠',
-  '𞥃' => '𞤡',
-);
diff --git a/vendor/symfony/polyfill-mbstring/bootstrap.php b/vendor/symfony/polyfill-mbstring/bootstrap.php
deleted file mode 100644
index d0a93d4ddc22468595b185f1eb233e22c830aec5..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-mbstring/bootstrap.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Mbstring as p;
-
-if (!function_exists('mb_convert_encoding')) {
-    function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); }
-}
-if (!function_exists('mb_decode_mimeheader')) {
-    function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); }
-}
-if (!function_exists('mb_encode_mimeheader')) {
-    function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); }
-}
-if (!function_exists('mb_decode_numericentity')) {
-    function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); }
-}
-if (!function_exists('mb_encode_numericentity')) {
-    function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); }
-}
-if (!function_exists('mb_convert_case')) {
-    function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); }
-}
-if (!function_exists('mb_internal_encoding')) {
-    function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); }
-}
-if (!function_exists('mb_language')) {
-    function mb_language($language = null) { return p\Mbstring::mb_language($language); }
-}
-if (!function_exists('mb_list_encodings')) {
-    function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
-}
-if (!function_exists('mb_encoding_aliases')) {
-    function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
-}
-if (!function_exists('mb_check_encoding')) {
-    function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); }
-}
-if (!function_exists('mb_detect_encoding')) {
-    function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); }
-}
-if (!function_exists('mb_detect_order')) {
-    function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); }
-}
-if (!function_exists('mb_parse_str')) {
-    function mb_parse_str($string, &$result = array()) { parse_str($string, $result); }
-}
-if (!function_exists('mb_strlen')) {
-    function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); }
-}
-if (!function_exists('mb_strpos')) {
-    function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); }
-}
-if (!function_exists('mb_strtolower')) {
-    function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); }
-}
-if (!function_exists('mb_strtoupper')) {
-    function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); }
-}
-if (!function_exists('mb_substitute_character')) {
-    function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); }
-}
-if (!function_exists('mb_substr')) {
-    function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); }
-}
-if (!function_exists('mb_stripos')) {
-    function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); }
-}
-if (!function_exists('mb_stristr')) {
-    function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); }
-}
-if (!function_exists('mb_strrchr')) {
-    function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); }
-}
-if (!function_exists('mb_strrichr')) {
-    function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); }
-}
-if (!function_exists('mb_strripos')) {
-    function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); }
-}
-if (!function_exists('mb_strrpos')) {
-    function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); }
-}
-if (!function_exists('mb_strstr')) {
-    function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); }
-}
-if (!function_exists('mb_get_info')) {
-    function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
-}
-if (!function_exists('mb_http_output')) {
-    function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); }
-}
-if (!function_exists('mb_strwidth')) {
-    function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); }
-}
-if (!function_exists('mb_substr_count')) {
-    function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); }
-}
-if (!function_exists('mb_output_handler')) {
-    function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); }
-}
-if (!function_exists('mb_http_input')) {
-    function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); }
-}
-
-if (!function_exists('mb_convert_variables')) {
-    if (PHP_VERSION_ID >= 80000) {
-        function mb_convert_variables($to_encoding, $from_encoding, &$var, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, $var, ...$vars); }
-    } else {
-        function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); }
-    }
-}
-
-if (!function_exists('mb_ord')) {
-    function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); }
-}
-if (!function_exists('mb_chr')) {
-    function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); }
-}
-if (!function_exists('mb_scrub')) {
-    function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
-}
-if (!function_exists('mb_str_split')) {
-    function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); }
-}
-
-if (extension_loaded('mbstring')) {
-    return;
-}
-
-if (!defined('MB_CASE_UPPER')) {
-    define('MB_CASE_UPPER', 0);
-}
-if (!defined('MB_CASE_LOWER')) {
-    define('MB_CASE_LOWER', 1);
-}
-if (!defined('MB_CASE_TITLE')) {
-    define('MB_CASE_TITLE', 2);
-}
diff --git a/vendor/symfony/polyfill-mbstring/composer.json b/vendor/symfony/polyfill-mbstring/composer.json
deleted file mode 100644
index ca4a8392eed3e7ec9e316a38afeadff724b4350e..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-mbstring/composer.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-    "name": "symfony/polyfill-mbstring",
-    "type": "library",
-    "description": "Symfony polyfill for the Mbstring extension",
-    "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Nicolas Grekas",
-            "email": "p@tchwork.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
-        "files": [ "bootstrap.php" ]
-    },
-    "suggest": {
-        "ext-mbstring": "For best performance"
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-main": "1.20-dev"
-        },
-        "thanks": {
-            "name": "symfony/polyfill",
-            "url": "https://github.com/symfony/polyfill"
-        }
-    }
-}
diff --git a/vendor/symfony/polyfill-php72/LICENSE b/vendor/symfony/polyfill-php72/LICENSE
deleted file mode 100644
index 4cd8bdd3007da4d62985ec9e5ca81a1e18ae34d1..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php72/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015-2019 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-php72/Php72.php b/vendor/symfony/polyfill-php72/Php72.php
deleted file mode 100644
index 1e36d5e62b6a8fefa3944ca15f71f0ecb3fdf330..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php72/Php72.php
+++ /dev/null
@@ -1,217 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Php72;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
- *
- * @internal
- */
-final class Php72
-{
-    private static $hashMask;
-
-    public static function utf8_encode($s)
-    {
-        $s .= $s;
-        $len = \strlen($s);
-
-        for ($i = $len >> 1, $j = 0; $i < $len; ++$i, ++$j) {
-            switch (true) {
-                case $s[$i] < "\x80": $s[$j] = $s[$i]; break;
-                case $s[$i] < "\xC0": $s[$j] = "\xC2"; $s[++$j] = $s[$i]; break;
-                default: $s[$j] = "\xC3"; $s[++$j] = \chr(\ord($s[$i]) - 64); break;
-            }
-        }
-
-        return substr($s, 0, $j);
-    }
-
-    public static function utf8_decode($s)
-    {
-        $s = (string) $s;
-        $len = \strlen($s);
-
-        for ($i = 0, $j = 0; $i < $len; ++$i, ++$j) {
-            switch ($s[$i] & "\xF0") {
-                case "\xC0":
-                case "\xD0":
-                    $c = (\ord($s[$i] & "\x1F") << 6) | \ord($s[++$i] & "\x3F");
-                    $s[$j] = $c < 256 ? \chr($c) : '?';
-                    break;
-
-                case "\xF0":
-                    ++$i;
-                    // no break
-
-                case "\xE0":
-                    $s[$j] = '?';
-                    $i += 2;
-                    break;
-
-                default:
-                    $s[$j] = $s[$i];
-            }
-        }
-
-        return substr($s, 0, $j);
-    }
-
-    public static function php_os_family()
-    {
-        if ('\\' === \DIRECTORY_SEPARATOR) {
-            return 'Windows';
-        }
-
-        $map = array(
-            'Darwin' => 'Darwin',
-            'DragonFly' => 'BSD',
-            'FreeBSD' => 'BSD',
-            'NetBSD' => 'BSD',
-            'OpenBSD' => 'BSD',
-            'Linux' => 'Linux',
-            'SunOS' => 'Solaris',
-        );
-
-        return isset($map[PHP_OS]) ? $map[PHP_OS] : 'Unknown';
-    }
-
-    public static function spl_object_id($object)
-    {
-        if (null === self::$hashMask) {
-            self::initHashMask();
-        }
-        if (null === $hash = spl_object_hash($object)) {
-            return;
-        }
-
-        // On 32-bit systems, PHP_INT_SIZE is 4,
-        return self::$hashMask ^ hexdec(substr($hash, 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
-    }
-
-    public static function sapi_windows_vt100_support($stream, $enable = null)
-    {
-        if (!\is_resource($stream)) {
-            trigger_error('sapi_windows_vt100_support() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING);
-
-            return false;
-        }
-
-        $meta = stream_get_meta_data($stream);
-
-        if ('STDIO' !== $meta['stream_type']) {
-            trigger_error('sapi_windows_vt100_support() was not able to analyze the specified stream', E_USER_WARNING);
-
-            return false;
-        }
-
-        // We cannot actually disable vt100 support if it is set
-        if (false === $enable || !self::stream_isatty($stream)) {
-            return false;
-        }
-
-        // The native function does not apply to stdin
-        $meta = array_map('strtolower', $meta);
-        $stdin = 'php://stdin' === $meta['uri'] || 'php://fd/0' === $meta['uri'];
-
-        return !$stdin
-            && (false !== getenv('ANSICON')
-            || 'ON' === getenv('ConEmuANSI')
-            || 'xterm' === getenv('TERM')
-            || 'Hyper' === getenv('TERM_PROGRAM'));
-    }
-
-    public static function stream_isatty($stream)
-    {
-        if (!\is_resource($stream)) {
-            trigger_error('stream_isatty() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING);
-
-            return false;
-        }
-
-        if ('\\' === \DIRECTORY_SEPARATOR) {
-            $stat = @fstat($stream);
-            // Check if formatted mode is S_IFCHR
-            return $stat ? 0020000 === ($stat['mode'] & 0170000) : false;
-        }
-
-        return \function_exists('posix_isatty') && @posix_isatty($stream);
-    }
-
-    private static function initHashMask()
-    {
-        $obj = (object) array();
-        self::$hashMask = -1;
-
-        // check if we are nested in an output buffering handler to prevent a fatal error with ob_start() below
-        $obFuncs = array('ob_clean', 'ob_end_clean', 'ob_flush', 'ob_end_flush', 'ob_get_contents', 'ob_get_flush');
-        foreach (debug_backtrace(\PHP_VERSION_ID >= 50400 ? DEBUG_BACKTRACE_IGNORE_ARGS : false) as $frame) {
-            if (isset($frame['function'][0]) && !isset($frame['class']) && 'o' === $frame['function'][0] && \in_array($frame['function'], $obFuncs)) {
-                $frame['line'] = 0;
-                break;
-            }
-        }
-        if (!empty($frame['line'])) {
-            ob_start();
-            debug_zval_dump($obj);
-            self::$hashMask = (int) substr(ob_get_clean(), 17);
-        }
-
-        self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
-    }
-
-    public static function mb_chr($code, $encoding = null)
-    {
-        if (0x80 > $code %= 0x200000) {
-            $s = \chr($code);
-        } elseif (0x800 > $code) {
-            $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
-        } elseif (0x10000 > $code) {
-            $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
-        } else {
-            $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
-        }
-
-        if ('UTF-8' !== $encoding) {
-            $s = mb_convert_encoding($s, $encoding, 'UTF-8');
-        }
-
-        return $s;
-    }
-
-    public static function mb_ord($s, $encoding = null)
-    {
-        if (null === $encoding) {
-            $s = mb_convert_encoding($s, 'UTF-8');
-        } elseif ('UTF-8' !== $encoding) {
-            $s = mb_convert_encoding($s, 'UTF-8', $encoding);
-        }
-
-        if (1 === \strlen($s)) {
-            return \ord($s);
-        }
-
-        $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
-        if (0xF0 <= $code) {
-            return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
-        }
-        if (0xE0 <= $code) {
-            return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
-        }
-        if (0xC0 <= $code) {
-            return (($code - 0xC0) << 6) + $s[2] - 0x80;
-        }
-
-        return $code;
-    }
-}
diff --git a/vendor/symfony/polyfill-php72/README.md b/vendor/symfony/polyfill-php72/README.md
deleted file mode 100644
index 59dec8a237f5d96cbcb969651e50a099e7ac38cd..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php72/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-Symfony Polyfill / Php72
-========================
-
-This component provides functions added to PHP 7.2 core:
-
-- [`spl_object_id`](https://php.net/spl_object_id)
-- [`stream_isatty`](https://php.net/stream_isatty)
-
-On Windows only:
-
-- [`sapi_windows_vt100_support`](https://php.net/sapi_windows_vt100_support)
-
-Moved to core since 7.2 (was in the optional XML extension earlier):
-
-- [`utf8_encode`](https://php.net/utf8_encode)
-- [`utf8_decode`](https://php.net/utf8_decode)
-
-Also, it provides constants added to PHP 7.2:
-- [`PHP_FLOAT_*`](https://php.net/reserved.constants#constant.php-float-dig)
-- [`PHP_OS_FAMILY`](https://php.net/reserved.constants#constant.php-os-family)
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-php72/bootstrap.php b/vendor/symfony/polyfill-php72/bootstrap.php
deleted file mode 100644
index 3154b2c32fc27f02f2869a24c97dabb154df9a2d..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php72/bootstrap.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Php72 as p;
-
-if (PHP_VERSION_ID >= 70200) {
-    return;
-}
-
-if (!defined('PHP_FLOAT_DIG')) {
-    define('PHP_FLOAT_DIG', 15);
-}
-if (!defined('PHP_FLOAT_EPSILON')) {
-    define('PHP_FLOAT_EPSILON', 2.2204460492503E-16);
-}
-if (!defined('PHP_FLOAT_MIN')) {
-    define('PHP_FLOAT_MIN', 2.2250738585072E-308);
-}
-if (!defined('PHP_FLOAT_MAX')) {
-    define('PHP_FLOAT_MAX', 1.7976931348623157E+308);
-}
-if (!defined('PHP_OS_FAMILY')) {
-    define('PHP_OS_FAMILY', p\Php72::php_os_family());
-}
-
-if ('\\' === DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) {
-    function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); }
-}
-if (!function_exists('stream_isatty')) {
-    function stream_isatty($stream) { return p\Php72::stream_isatty($stream); }
-}
-if (!function_exists('utf8_encode')) {
-    function utf8_encode($string) { return p\Php72::utf8_encode($string); }
-}
-if (!function_exists('utf8_decode')) {
-    function utf8_decode($string) { return p\Php72::utf8_decode($string); }
-}
-if (!function_exists('spl_object_id')) {
-    function spl_object_id($object) { return p\Php72::spl_object_id($object); }
-}
-if (!function_exists('mb_ord')) {
-    function mb_ord($string, $encoding = null) { return p\Php72::mb_ord($string, $encoding); }
-}
-if (!function_exists('mb_chr')) {
-    function mb_chr($codepoint, $encoding = null) { return p\Php72::mb_chr($codepoint, $encoding); }
-}
-if (!function_exists('mb_scrub')) {
-    function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
-}
diff --git a/vendor/symfony/polyfill-php72/composer.json b/vendor/symfony/polyfill-php72/composer.json
deleted file mode 100644
index 994443a44cad19c40ed824c524c7033078be355d..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php72/composer.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "name": "symfony/polyfill-php72",
-    "type": "library",
-    "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
-    "keywords": ["polyfill", "shim", "compatibility", "portable"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Nicolas Grekas",
-            "email": "p@tchwork.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Polyfill\\Php72\\": "" },
-        "files": [ "bootstrap.php" ]
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-main": "1.20-dev"
-        },
-        "thanks": {
-            "name": "symfony/polyfill",
-            "url": "https://github.com/symfony/polyfill"
-        }
-    }
-}
diff --git a/vendor/symfony/polyfill-php73/LICENSE b/vendor/symfony/polyfill-php73/LICENSE
deleted file mode 100644
index 3f853aaf35fe186d4016761eb6e8a403de3e6e0d..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php73/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2018-2019 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-php73/Php73.php b/vendor/symfony/polyfill-php73/Php73.php
deleted file mode 100644
index 7c99d1972a05af1f980fab27c1f5078fd33cf14b..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php73/Php73.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Php73;
-
-/**
- * @author Gabriel Caruso <carusogabriel34@gmail.com>
- * @author Ion Bazan <ion.bazan@gmail.com>
- *
- * @internal
- */
-final class Php73
-{
-    public static $startAt = 1533462603;
-
-    /**
-     * @param bool $asNum
-     *
-     * @return array|float|int
-     */
-    public static function hrtime($asNum = false)
-    {
-        $ns = microtime(false);
-        $s = substr($ns, 11) - self::$startAt;
-        $ns = 1E9 * (float) $ns;
-
-        if ($asNum) {
-            $ns += $s * 1E9;
-
-            return \PHP_INT_SIZE === 4 ? $ns : (int) $ns;
-        }
-
-        return array($s, (int) $ns);
-    }
-}
diff --git a/vendor/symfony/polyfill-php73/README.md b/vendor/symfony/polyfill-php73/README.md
deleted file mode 100644
index b3ebbce511bcd3840e6565753a9854b6f459cefe..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php73/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-Symfony Polyfill / Php73
-========================
-
-This component provides functions added to PHP 7.3 core:
-
-- [`array_key_first`](https://php.net/array_key_first)
-- [`array_key_last`](https://php.net/array_key_last)
-- [`hrtime`](https://php.net/function.hrtime)
-- [`is_countable`](https://php.net/is_countable)
-- [`JsonException`](https://php.net/JsonException)
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-php73/Resources/stubs/JsonException.php b/vendor/symfony/polyfill-php73/Resources/stubs/JsonException.php
deleted file mode 100644
index 673d100224854a8d9c0dc429cf4dfd5b3bef0726..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php73/Resources/stubs/JsonException.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-class JsonException extends Exception
-{
-}
diff --git a/vendor/symfony/polyfill-php73/bootstrap.php b/vendor/symfony/polyfill-php73/bootstrap.php
deleted file mode 100644
index 267872522f72d56baa88e9b764c9901c644f8bde..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php73/bootstrap.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Php73 as p;
-
-if (PHP_VERSION_ID >= 70300) {
-    return;
-}
-
-if (!function_exists('is_countable')) {
-    function is_countable($value) { return is_array($value) || $value instanceof Countable || $value instanceof ResourceBundle || $value instanceof SimpleXmlElement; }
-}
-if (!function_exists('hrtime')) {
-    require_once __DIR__.'/Php73.php';
-    p\Php73::$startAt = (int) microtime(true);
-    function hrtime($as_number  = false) { return p\Php73::hrtime($as_number ); }
-}
-if (!function_exists('array_key_first')) {
-    function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } }
-}
-if (!function_exists('array_key_last')) {
-    function array_key_last(array $array) { return key(array_slice($array, -1, 1, true)); }
-}
diff --git a/vendor/symfony/polyfill-php73/composer.json b/vendor/symfony/polyfill-php73/composer.json
deleted file mode 100644
index 6c9660dddd67c5317bbac2c33675701899822520..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php73/composer.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-    "name": "symfony/polyfill-php73",
-    "type": "library",
-    "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
-    "keywords": ["polyfill", "shim", "compatibility", "portable"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Nicolas Grekas",
-            "email": "p@tchwork.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Polyfill\\Php73\\": "" },
-        "files": [ "bootstrap.php" ],
-        "classmap": [ "Resources/stubs" ]
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-main": "1.20-dev"
-        },
-        "thanks": {
-            "name": "symfony/polyfill",
-            "url": "https://github.com/symfony/polyfill"
-        }
-    }
-}
diff --git a/vendor/symfony/polyfill-php80/LICENSE b/vendor/symfony/polyfill-php80/LICENSE
deleted file mode 100644
index 5593b1d84f74a170e02b3e58408dc189ea838434..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php80/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-php80/Php80.php b/vendor/symfony/polyfill-php80/Php80.php
deleted file mode 100644
index c03491b724db40cfc28bf28692e55309141f6eca..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php80/Php80.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Php80;
-
-/**
- * @author Ion Bazan <ion.bazan@gmail.com>
- * @author Nico Oelgart <nicoswd@gmail.com>
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-final class Php80
-{
-    public static function fdiv(float $dividend, float $divisor): float
-    {
-        return @($dividend / $divisor);
-    }
-
-    public static function get_debug_type($value): string
-    {
-        switch (true) {
-            case null === $value: return 'null';
-            case \is_bool($value): return 'bool';
-            case \is_string($value): return 'string';
-            case \is_array($value): return 'array';
-            case \is_int($value): return 'int';
-            case \is_float($value): return 'float';
-            case \is_object($value): break;
-            case $value instanceof \__PHP_Incomplete_Class: return '__PHP_Incomplete_Class';
-            default:
-                if (null === $type = @get_resource_type($value)) {
-                    return 'unknown';
-                }
-
-                if ('Unknown' === $type) {
-                    $type = 'closed';
-                }
-
-                return "resource ($type)";
-        }
-
-        $class = \get_class($value);
-
-        if (false === strpos($class, '@')) {
-            return $class;
-        }
-
-        return (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous';
-    }
-
-    public static function get_resource_id($res): int
-    {
-        if (!\is_resource($res) && null === @get_resource_type($res)) {
-            throw new \TypeError(sprintf('Argument 1 passed to get_resource_id() must be of the type resource, %s given', get_debug_type($res)));
-        }
-
-        return (int) $res;
-    }
-
-    public static function preg_last_error_msg(): string
-    {
-        switch (preg_last_error()) {
-            case PREG_INTERNAL_ERROR:
-                return 'Internal error';
-            case PREG_BAD_UTF8_ERROR:
-                return 'Malformed UTF-8 characters, possibly incorrectly encoded';
-            case PREG_BAD_UTF8_OFFSET_ERROR:
-                return 'The offset did not correspond to the beginning of a valid UTF-8 code point';
-            case PREG_BACKTRACK_LIMIT_ERROR:
-                return 'Backtrack limit exhausted';
-            case PREG_RECURSION_LIMIT_ERROR:
-                return 'Recursion limit exhausted';
-            case PREG_JIT_STACKLIMIT_ERROR:
-                return 'JIT stack limit exhausted';
-            case PREG_NO_ERROR:
-                return 'No error';
-            default:
-                return 'Unknown error';
-        }
-    }
-
-    public static function str_contains(string $haystack, string $needle): bool
-    {
-        return '' === $needle || false !== strpos($haystack, $needle);
-    }
-
-    public static function str_starts_with(string $haystack, string $needle): bool
-    {
-        return 0 === \strncmp($haystack, $needle, \strlen($needle));
-    }
-
-    public static function str_ends_with(string $haystack, string $needle): bool
-    {
-        return '' === $needle || ('' !== $haystack && 0 === \substr_compare($haystack, $needle, -\strlen($needle)));
-    }
-}
diff --git a/vendor/symfony/polyfill-php80/README.md b/vendor/symfony/polyfill-php80/README.md
deleted file mode 100644
index eaa3050abc11f9852eed71f79dccaa3688f67854..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php80/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-Symfony Polyfill / Php80
-========================
-
-This component provides features added to PHP 8.0 core:
-
-- `Stringable` interface
-- [`fdiv`](https://php.net/fdiv)
-- `ValueError` class
-- `UnhandledMatchError` class
-- `FILTER_VALIDATE_BOOL` constant
-- [`get_debug_type`](https://php.net/get_debug_type)
-- [`preg_last_error_msg`](https://php.net/preg_last_error_msg)
-- [`str_contains`](https://php.net/str_contains)
-- [`str_starts_with`](https://php.net/str_starts_with)
-- [`str_ends_with`](https://php.net/str_ends_with)
-- [`get_resource_id`](https://php.net/get_resource_id)
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php b/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php
deleted file mode 100644
index 8f9e6793ada687ae0b733d0df9cea091264d7c8f..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-#[Attribute(Attribute::TARGET_CLASS)]
-final class Attribute
-{
-    const TARGET_CLASS = 1;
-    const TARGET_FUNCTION = 2;
-    const TARGET_METHOD = 4;
-    const TARGET_PROPERTY = 8;
-    const TARGET_CLASS_CONSTANT = 16;
-    const TARGET_PARAMETER = 32;
-    const TARGET_ALL = 63;
-    const IS_REPEATABLE = 64;
-
-    /** @var int */
-    public $flags;
-
-    public function __construct(int $flags = Attribute::TARGET_ALL)
-    {
-        $this->flags = $flags;
-    }
-}
diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php b/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php
deleted file mode 100644
index 77e037cb58d5acc48e5eb675c337fc2acff1d3f3..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-if (\PHP_VERSION_ID < 80000) {
-    interface Stringable
-    {
-        /**
-         * @return string
-         */
-        public function __toString();
-    }
-}
diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php b/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php
deleted file mode 100644
index 7fb2000e9e164de1e909cd366e9640a5a413eee8..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-class UnhandledMatchError extends Error
-{
-}
diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php b/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php
deleted file mode 100644
index 99843cad3353ce7e3e295fb452ed8307e86a1b57..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-class ValueError extends Error
-{
-}
diff --git a/vendor/symfony/polyfill-php80/bootstrap.php b/vendor/symfony/polyfill-php80/bootstrap.php
deleted file mode 100644
index 4b938e6dd23b8a69a0e44cf8613e81e0382e71d1..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php80/bootstrap.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Php80 as p;
-
-if (PHP_VERSION_ID >= 80000) {
-    return;
-}
-
-if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) {
-    define('FILTER_VALIDATE_BOOL', FILTER_VALIDATE_BOOLEAN);
-}
-
-if (!function_exists('fdiv')) {
-    function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); }
-}
-if (!function_exists('preg_last_error_msg')) {
-    function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); }
-}
-if (!function_exists('str_contains')) {
-    function str_contains(string $haystack, string $needle): bool { return p\Php80::str_contains($haystack, $needle); }
-}
-if (!function_exists('str_starts_with')) {
-    function str_starts_with(string $haystack, string $needle): bool { return p\Php80::str_starts_with($haystack, $needle); }
-}
-if (!function_exists('str_ends_with')) {
-    function str_ends_with(string $haystack, string $needle): bool { return p\Php80::str_ends_with($haystack, $needle); }
-}
-if (!function_exists('get_debug_type')) {
-    function get_debug_type($value): string { return p\Php80::get_debug_type($value); }
-}
-if (!function_exists('get_resource_id')) {
-    function get_resource_id($res): int { return p\Php80::get_resource_id($res); }
-}
diff --git a/vendor/symfony/polyfill-php80/composer.json b/vendor/symfony/polyfill-php80/composer.json
deleted file mode 100644
index 8ad4c317dde5923a45c4cfc14d2713ca03d654f5..0000000000000000000000000000000000000000
--- a/vendor/symfony/polyfill-php80/composer.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-    "name": "symfony/polyfill-php80",
-    "type": "library",
-    "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
-    "keywords": ["polyfill", "shim", "compatibility", "portable"],
-    "homepage": "https://symfony.com",
-    "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"
-        }
-    ],
-    "require": {
-        "php": ">=7.1"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Polyfill\\Php80\\": "" },
-        "files": [ "bootstrap.php" ],
-        "classmap": [ "Resources/stubs" ]
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-main": "1.20-dev"
-        },
-        "thanks": {
-            "name": "symfony/polyfill",
-            "url": "https://github.com/symfony/polyfill"
-        }
-    }
-}
diff --git a/vendor/symfony/routing/Annotation/Route.php b/vendor/symfony/routing/Annotation/Route.php
deleted file mode 100644
index dc1cee319c9e062bae11acac6a5dc2aeaa7b897c..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Annotation/Route.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Annotation;
-
-/**
- * Annotation class for @Route().
- *
- * @Annotation
- * @Target({"CLASS", "METHOD"})
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Route
-{
-    private $path;
-    private $localizedPaths = [];
-    private $name;
-    private $requirements = [];
-    private $options = [];
-    private $defaults = [];
-    private $host;
-    private $methods = [];
-    private $schemes = [];
-    private $condition;
-
-    /**
-     * @param array $data An array of key/value parameters
-     *
-     * @throws \BadMethodCallException
-     */
-    public function __construct(array $data)
-    {
-        if (isset($data['localized_paths'])) {
-            throw new \BadMethodCallException(sprintf('Unknown property "localized_paths" on annotation "%s".', static::class));
-        }
-
-        if (isset($data['value'])) {
-            $data[\is_array($data['value']) ? 'localized_paths' : 'path'] = $data['value'];
-            unset($data['value']);
-        }
-
-        if (isset($data['path']) && \is_array($data['path'])) {
-            $data['localized_paths'] = $data['path'];
-            unset($data['path']);
-        }
-
-        if (isset($data['locale'])) {
-            $data['defaults']['_locale'] = $data['locale'];
-            unset($data['locale']);
-        }
-
-        if (isset($data['format'])) {
-            $data['defaults']['_format'] = $data['format'];
-            unset($data['format']);
-        }
-
-        if (isset($data['utf8'])) {
-            $data['options']['utf8'] = filter_var($data['utf8'], \FILTER_VALIDATE_BOOLEAN) ?: false;
-            unset($data['utf8']);
-        }
-
-        foreach ($data as $key => $value) {
-            $method = 'set'.str_replace('_', '', $key);
-            if (!method_exists($this, $method)) {
-                throw new \BadMethodCallException(sprintf('Unknown property "%s" on annotation "%s".', $key, static::class));
-            }
-            $this->$method($value);
-        }
-    }
-
-    public function setPath($path)
-    {
-        $this->path = $path;
-    }
-
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    public function setLocalizedPaths(array $localizedPaths)
-    {
-        $this->localizedPaths = $localizedPaths;
-    }
-
-    public function getLocalizedPaths(): array
-    {
-        return $this->localizedPaths;
-    }
-
-    public function setHost($pattern)
-    {
-        $this->host = $pattern;
-    }
-
-    public function getHost()
-    {
-        return $this->host;
-    }
-
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function setRequirements($requirements)
-    {
-        $this->requirements = $requirements;
-    }
-
-    public function getRequirements()
-    {
-        return $this->requirements;
-    }
-
-    public function setOptions($options)
-    {
-        $this->options = $options;
-    }
-
-    public function getOptions()
-    {
-        return $this->options;
-    }
-
-    public function setDefaults($defaults)
-    {
-        $this->defaults = $defaults;
-    }
-
-    public function getDefaults()
-    {
-        return $this->defaults;
-    }
-
-    public function setSchemes($schemes)
-    {
-        $this->schemes = \is_array($schemes) ? $schemes : [$schemes];
-    }
-
-    public function getSchemes()
-    {
-        return $this->schemes;
-    }
-
-    public function setMethods($methods)
-    {
-        $this->methods = \is_array($methods) ? $methods : [$methods];
-    }
-
-    public function getMethods()
-    {
-        return $this->methods;
-    }
-
-    public function setCondition($condition)
-    {
-        $this->condition = $condition;
-    }
-
-    public function getCondition()
-    {
-        return $this->condition;
-    }
-}
diff --git a/vendor/symfony/routing/CHANGELOG.md b/vendor/symfony/routing/CHANGELOG.md
deleted file mode 100644
index 4eebca62065b09c7a7975a7b2fe1842df77c0c7d..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/CHANGELOG.md
+++ /dev/null
@@ -1,259 +0,0 @@
-CHANGELOG
-=========
-
-4.4.0
------
-
- * Deprecated `ServiceRouterLoader` in favor of `ContainerLoader`.
- * Deprecated `ObjectRouteLoader` in favor of `ObjectLoader`.
- * Added a way to exclude patterns of resources from being imported by the `import()` method
-
-4.3.0
------
-
- * added `CompiledUrlMatcher` and `CompiledUrlMatcherDumper`
- * added `CompiledUrlGenerator` and `CompiledUrlGeneratorDumper`
- * deprecated `PhpGeneratorDumper` and `PhpMatcherDumper`
- * deprecated `generator_base_class`, `generator_cache_class`, `matcher_base_class` and `matcher_cache_class` router options
- * `Serializable` implementing methods for `Route` and `CompiledRoute` are marked as `@internal` and `@final`.
-   Instead of overwriting them, use `__serialize` and `__unserialize` as extension points which are forward compatible
-   with the new serialization methods in PHP 7.4.
- * exposed `utf8` Route option, defaults "locale" and "format" in configuration loaders and configurators
- * added support for invokable service route loaders
-
-4.2.0
------
-
- * added fallback to cultureless locale for internationalized routes
-
-4.0.0
------
-
- * dropped support for using UTF-8 route patterns without using the `utf8` option
- * dropped support for using UTF-8 route requirements without using the `utf8` option
-
-3.4.0
------
-
- * Added `NoConfigurationException`.
- * Added the possibility to define a prefix for all routes of a controller via @Route(name="prefix_")
- * Added support for prioritized routing loaders.
- * Add matched and default parameters to redirect responses
- * Added support for a `controller` keyword for configuring route controllers in YAML and XML configurations.
-
-3.3.0
------
-
-  * [DEPRECATION] Class parameters have been deprecated and will be removed in 4.0.
-    * router.options.generator_class
-    * router.options.generator_base_class
-    * router.options.generator_dumper_class
-    * router.options.matcher_class
-    * router.options.matcher_base_class
-    * router.options.matcher_dumper_class
-    * router.options.matcher.cache_class
-    * router.options.generator.cache_class
-
-3.2.0
------
-
- * Added support for `bool`, `int`, `float`, `string`, `list` and `map` defaults in XML configurations.
- * Added support for UTF-8 requirements
-
-2.8.0
------
-
- * allowed specifying a directory to recursively load all routing configuration files it contains
- * Added ObjectRouteLoader and ServiceRouteLoader that allow routes to be loaded
-   by calling a method on an object/service.
- * [DEPRECATION] Deprecated the hardcoded value for the `$referenceType` argument of the `UrlGeneratorInterface::generate` method.
-   Use the constants defined in the `UrlGeneratorInterface` instead.
-
-   Before:
-
-   ```php
-   $router->generate('blog_show', ['slug' => 'my-blog-post'], true);
-   ```
-
-   After:
-
-   ```php
-   use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-
-   $router->generate('blog_show', ['slug' => 'my-blog-post'], UrlGeneratorInterface::ABSOLUTE_URL);
-   ```
-
-2.5.0
------
-
- * [DEPRECATION] The `ApacheMatcherDumper` and `ApacheUrlMatcher` were deprecated and
-   will be removed in Symfony 3.0, since the performance gains were minimal and
-   it's hard to replicate the behavior of PHP implementation.
-
-2.3.0
------
-
- * added RequestContext::getQueryString()
-
-2.2.0
------
-
- * [DEPRECATION] Several route settings have been renamed (the old ones will be removed in 3.0):
-
-    * The `pattern` setting for a route has been deprecated in favor of `path`
-    * The `_scheme` and `_method` requirements have been moved to the `schemes` and `methods` settings
-
-   Before:
-
-   ```yaml
-   article_edit:
-       pattern: /article/{id}
-       requirements: { '_method': 'POST|PUT', '_scheme': 'https', 'id': '\d+' }
-   ```
-
-   ```xml
-   <route id="article_edit" pattern="/article/{id}">
-       <requirement key="_method">POST|PUT</requirement>
-       <requirement key="_scheme">https</requirement>
-       <requirement key="id">\d+</requirement>
-   </route>
-   ```
-
-   ```php
-   $route = new Route();
-   $route->setPattern('/article/{id}');
-   $route->setRequirement('_method', 'POST|PUT');
-   $route->setRequirement('_scheme', 'https');
-   ```
-
-   After:
-
-   ```yaml
-   article_edit:
-       path: /article/{id}
-       methods: [POST, PUT]
-       schemes: https
-       requirements: { 'id': '\d+' }
-   ```
-
-   ```xml
-   <route id="article_edit" pattern="/article/{id}" methods="POST PUT" schemes="https">
-       <requirement key="id">\d+</requirement>
-   </route>
-   ```
-
-   ```php
-   $route = new Route();
-   $route->setPath('/article/{id}');
-   $route->setMethods(['POST', 'PUT']);
-   $route->setSchemes('https');
-   ```
-
- * [BC BREAK] RouteCollection does not behave like a tree structure anymore but as
-   a flat array of Routes. So when using PHP to build the RouteCollection, you must
-   make sure to add routes to the sub-collection before adding it to the parent
-   collection (this is not relevant when using YAML or XML for Route definitions).
-
-   Before:
-
-   ```php
-   $rootCollection = new RouteCollection();
-   $subCollection = new RouteCollection();
-   $rootCollection->addCollection($subCollection);
-   $subCollection->add('foo', new Route('/foo'));
-   ```
-
-   After:
-
-   ```php
-   $rootCollection = new RouteCollection();
-   $subCollection = new RouteCollection();
-   $subCollection->add('foo', new Route('/foo'));
-   $rootCollection->addCollection($subCollection);
-   ```
-
-   Also one must call `addCollection` from the bottom to the top hierarchy.
-   So the correct sequence is the following (and not the reverse):
-
-   ```php
-   $childCollection->addCollection($grandchildCollection);
-   $rootCollection->addCollection($childCollection);
-   ```
-
- * [DEPRECATION] The methods `RouteCollection::getParent()` and `RouteCollection::getRoot()`
-   have been deprecated and will be removed in Symfony 2.3.
- * [BC BREAK] Misusing the `RouteCollection::addPrefix` method to add defaults, requirements
-   or options without adding a prefix is not supported anymore. So if you called `addPrefix`
-   with an empty prefix or `/` only (both have no relevance), like
-   `addPrefix('', $defaultsArray, $requirementsArray, $optionsArray)`
-   you need to use the new dedicated methods `addDefaults($defaultsArray)`,
-   `addRequirements($requirementsArray)` or `addOptions($optionsArray)` instead.
- * [DEPRECATION] The `$options` parameter to `RouteCollection::addPrefix()` has been deprecated
-   because adding options has nothing to do with adding a path prefix. If you want to add options
-   to all child routes of a RouteCollection, you can use `addOptions()`.
- * [DEPRECATION] The method `RouteCollection::getPrefix()` has been deprecated
-   because it suggested that all routes in the collection would have this prefix, which is
-   not necessarily true. On top of that, since there is no tree structure anymore, this method
-   is also useless. Don't worry about performance, prefix optimization for matching is still done
-   in the dumper, which was also improved in 2.2.0 to find even more grouping possibilities.
- * [DEPRECATION] `RouteCollection::addCollection(RouteCollection $collection)` should now only be
-   used with a single parameter. The other params `$prefix`, `$default`, `$requirements` and `$options`
-   will still work, but have been deprecated. The `addPrefix` method should be used for this
-   use-case instead.
-   Before: `$parentCollection->addCollection($collection, '/prefix', [...], [...])`
-   After:
-   ```php
-   $collection->addPrefix('/prefix', [...], [...]);
-   $parentCollection->addCollection($collection);
-   ```
- * added support for the method default argument values when defining a @Route
- * Adjacent placeholders without separator work now, e.g. `/{x}{y}{z}.{_format}`.
- * Characters that function as separator between placeholders are now whitelisted
-   to fix routes with normal text around a variable, e.g. `/prefix{var}suffix`.
- * [BC BREAK] The default requirement of a variable has been changed slightly.
-   Previously it disallowed the previous and the next char around a variable. Now
-   it disallows the slash (`/`) and the next char. Using the previous char added
-   no value and was problematic because the route `/index.{_format}` would be
-   matched by `/index.ht/ml`.
- * The default requirement now uses possessive quantifiers when possible which
-   improves matching performance by up to 20% because it prevents backtracking
-   when it's not needed.
- * The ConfigurableRequirementsInterface can now also be used to disable the requirements
-   check on URL generation completely by calling `setStrictRequirements(null)`. It
-   improves performance in production environment as you should know that params always
-   pass the requirements (otherwise it would break your link anyway).
- * There is no restriction on the route name anymore. So non-alphanumeric characters
-   are now also allowed.
- * [BC BREAK] `RouteCompilerInterface::compile(Route $route)` was made static
-   (only relevant if you implemented your own RouteCompiler).
- * Added possibility to generate relative paths and network paths in the UrlGenerator, e.g.
-   "../parent-file" and "//example.com/dir/file". The third parameter in
-   `UrlGeneratorInterface::generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH)`
-   now accepts more values and you should use the constants defined in `UrlGeneratorInterface` for
-   claritiy. The old method calls with a Boolean parameter will continue to work because they
-   equal the signature using the constants.
-
-2.1.0
------
-
- * added RequestMatcherInterface
- * added RequestContext::fromRequest()
- * the UrlMatcher does not throw a \LogicException anymore when the required
-   scheme is not the current one
- * added TraceableUrlMatcher
- * added the possibility to define options, default values and requirements
-   for placeholders in prefix, including imported routes
- * added RouterInterface::getRouteCollection
- * [BC BREAK] the UrlMatcher urldecodes the route parameters only once, they
-   were decoded twice before. Note that the `urldecode()` calls have been
-   changed for a single `rawurldecode()` in order to support `+` for input
-   paths.
- * added RouteCollection::getRoot method to retrieve the root of a
-   RouteCollection tree
- * [BC BREAK] made RouteCollection::setParent private which could not have
-   been used anyway without creating inconsistencies
- * [BC BREAK] RouteCollection::remove also removes a route from parent
-   collections (not only from its children)
- * added ConfigurableRequirementsInterface that allows to disable exceptions
-   (and generate empty URLs instead) when generating a route with an invalid
-   parameter value
diff --git a/vendor/symfony/routing/CompiledRoute.php b/vendor/symfony/routing/CompiledRoute.php
deleted file mode 100644
index b6f31b2ebe94d734ab03877aeaf92e4773439b3a..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/CompiledRoute.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing;
-
-/**
- * CompiledRoutes are returned by the RouteCompiler class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class CompiledRoute implements \Serializable
-{
-    private $variables;
-    private $tokens;
-    private $staticPrefix;
-    private $regex;
-    private $pathVariables;
-    private $hostVariables;
-    private $hostRegex;
-    private $hostTokens;
-
-    /**
-     * @param string      $staticPrefix  The static prefix of the compiled route
-     * @param string      $regex         The regular expression to use to match this route
-     * @param array       $tokens        An array of tokens to use to generate URL for this route
-     * @param array       $pathVariables An array of path variables
-     * @param string|null $hostRegex     Host regex
-     * @param array       $hostTokens    Host tokens
-     * @param array       $hostVariables An array of host variables
-     * @param array       $variables     An array of variables (variables defined in the path and in the host patterns)
-     */
-    public function __construct(string $staticPrefix, string $regex, array $tokens, array $pathVariables, string $hostRegex = null, array $hostTokens = [], array $hostVariables = [], array $variables = [])
-    {
-        $this->staticPrefix = $staticPrefix;
-        $this->regex = $regex;
-        $this->tokens = $tokens;
-        $this->pathVariables = $pathVariables;
-        $this->hostRegex = $hostRegex;
-        $this->hostTokens = $hostTokens;
-        $this->hostVariables = $hostVariables;
-        $this->variables = $variables;
-    }
-
-    public function __serialize(): array
-    {
-        return [
-            'vars' => $this->variables,
-            'path_prefix' => $this->staticPrefix,
-            'path_regex' => $this->regex,
-            'path_tokens' => $this->tokens,
-            'path_vars' => $this->pathVariables,
-            'host_regex' => $this->hostRegex,
-            'host_tokens' => $this->hostTokens,
-            'host_vars' => $this->hostVariables,
-        ];
-    }
-
-    /**
-     * @return string
-     *
-     * @internal since Symfony 4.3
-     * @final since Symfony 4.3
-     */
-    public function serialize()
-    {
-        return serialize($this->__serialize());
-    }
-
-    public function __unserialize(array $data): void
-    {
-        $this->variables = $data['vars'];
-        $this->staticPrefix = $data['path_prefix'];
-        $this->regex = $data['path_regex'];
-        $this->tokens = $data['path_tokens'];
-        $this->pathVariables = $data['path_vars'];
-        $this->hostRegex = $data['host_regex'];
-        $this->hostTokens = $data['host_tokens'];
-        $this->hostVariables = $data['host_vars'];
-    }
-
-    /**
-     * @internal since Symfony 4.3
-     * @final since Symfony 4.3
-     */
-    public function unserialize($serialized)
-    {
-        $this->__unserialize(unserialize($serialized, ['allowed_classes' => false]));
-    }
-
-    /**
-     * Returns the static prefix.
-     *
-     * @return string The static prefix
-     */
-    public function getStaticPrefix()
-    {
-        return $this->staticPrefix;
-    }
-
-    /**
-     * Returns the regex.
-     *
-     * @return string The regex
-     */
-    public function getRegex()
-    {
-        return $this->regex;
-    }
-
-    /**
-     * Returns the host regex.
-     *
-     * @return string|null The host regex or null
-     */
-    public function getHostRegex()
-    {
-        return $this->hostRegex;
-    }
-
-    /**
-     * Returns the tokens.
-     *
-     * @return array The tokens
-     */
-    public function getTokens()
-    {
-        return $this->tokens;
-    }
-
-    /**
-     * Returns the host tokens.
-     *
-     * @return array The tokens
-     */
-    public function getHostTokens()
-    {
-        return $this->hostTokens;
-    }
-
-    /**
-     * Returns the variables.
-     *
-     * @return array The variables
-     */
-    public function getVariables()
-    {
-        return $this->variables;
-    }
-
-    /**
-     * Returns the path variables.
-     *
-     * @return array The variables
-     */
-    public function getPathVariables()
-    {
-        return $this->pathVariables;
-    }
-
-    /**
-     * Returns the host variables.
-     *
-     * @return array The variables
-     */
-    public function getHostVariables()
-    {
-        return $this->hostVariables;
-    }
-}
diff --git a/vendor/symfony/routing/DependencyInjection/RoutingResolverPass.php b/vendor/symfony/routing/DependencyInjection/RoutingResolverPass.php
deleted file mode 100644
index 7068825fef7a1c5c4268f9cd44ffb9ee44114340..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/DependencyInjection/RoutingResolverPass.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-
-/**
- * Adds tagged routing.loader services to routing.resolver service.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RoutingResolverPass implements CompilerPassInterface
-{
-    use PriorityTaggedServiceTrait;
-
-    private $resolverServiceId;
-    private $loaderTag;
-
-    public function __construct(string $resolverServiceId = 'routing.resolver', string $loaderTag = 'routing.loader')
-    {
-        $this->resolverServiceId = $resolverServiceId;
-        $this->loaderTag = $loaderTag;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        if (false === $container->hasDefinition($this->resolverServiceId)) {
-            return;
-        }
-
-        $definition = $container->getDefinition($this->resolverServiceId);
-
-        foreach ($this->findAndSortTaggedServices($this->loaderTag, $container) as $id) {
-            $definition->addMethodCall('addLoader', [new Reference($id)]);
-        }
-    }
-}
diff --git a/vendor/symfony/routing/Exception/ExceptionInterface.php b/vendor/symfony/routing/Exception/ExceptionInterface.php
deleted file mode 100644
index 22e72b16bdbd456243f517ad9eb8bc1ae5647cb8..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Exception;
-
-/**
- * ExceptionInterface.
- *
- * @author Alexandre Salomé <alexandre.salome@gmail.com>
- */
-interface ExceptionInterface extends \Throwable
-{
-}
diff --git a/vendor/symfony/routing/Exception/InvalidParameterException.php b/vendor/symfony/routing/Exception/InvalidParameterException.php
deleted file mode 100644
index 94d841f4ce6c62db5a25b48fb939e8469f8df3dc..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Exception/InvalidParameterException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Exception;
-
-/**
- * Exception thrown when a parameter is not valid.
- *
- * @author Alexandre Salomé <alexandre.salome@gmail.com>
- */
-class InvalidParameterException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/routing/Exception/MethodNotAllowedException.php b/vendor/symfony/routing/Exception/MethodNotAllowedException.php
deleted file mode 100644
index b897081bd5d844b025a9eab58e204a357d996fb5..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Exception/MethodNotAllowedException.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Exception;
-
-/**
- * The resource was found but the request method is not allowed.
- *
- * This exception should trigger an HTTP 405 response in your application code.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class MethodNotAllowedException extends \RuntimeException implements ExceptionInterface
-{
-    protected $allowedMethods = [];
-
-    public function __construct(array $allowedMethods, string $message = null, int $code = 0, \Throwable $previous = null)
-    {
-        $this->allowedMethods = array_map('strtoupper', $allowedMethods);
-
-        parent::__construct($message, $code, $previous);
-    }
-
-    /**
-     * Gets the allowed HTTP methods.
-     *
-     * @return array
-     */
-    public function getAllowedMethods()
-    {
-        return $this->allowedMethods;
-    }
-}
diff --git a/vendor/symfony/routing/Exception/MissingMandatoryParametersException.php b/vendor/symfony/routing/Exception/MissingMandatoryParametersException.php
deleted file mode 100644
index 57f3a40dfa7ff77e28c3b5142b5627e0236118c2..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Exception/MissingMandatoryParametersException.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Exception;
-
-/**
- * Exception thrown when a route cannot be generated because of missing
- * mandatory parameters.
- *
- * @author Alexandre Salomé <alexandre.salome@gmail.com>
- */
-class MissingMandatoryParametersException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/routing/Exception/NoConfigurationException.php b/vendor/symfony/routing/Exception/NoConfigurationException.php
deleted file mode 100644
index 333bc743314601661349119fb60077039d5d2fec..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Exception/NoConfigurationException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Exception;
-
-/**
- * Exception thrown when no routes are configured.
- *
- * @author Yonel Ceruto <yonelceruto@gmail.com>
- */
-class NoConfigurationException extends ResourceNotFoundException
-{
-}
diff --git a/vendor/symfony/routing/Exception/ResourceNotFoundException.php b/vendor/symfony/routing/Exception/ResourceNotFoundException.php
deleted file mode 100644
index ccbca15270b459d2f6ce508fd58e328d7fa112de..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Exception/ResourceNotFoundException.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Exception;
-
-/**
- * The resource was not found.
- *
- * This exception should trigger an HTTP 404 response in your application code.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class ResourceNotFoundException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/routing/Exception/RouteNotFoundException.php b/vendor/symfony/routing/Exception/RouteNotFoundException.php
deleted file mode 100644
index 24ab0b44a913b5fbcfd5cab9c0ae013586b04feb..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Exception/RouteNotFoundException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Exception;
-
-/**
- * Exception thrown when a route does not exist.
- *
- * @author Alexandre Salomé <alexandre.salome@gmail.com>
- */
-class RouteNotFoundException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/routing/Generator/CompiledUrlGenerator.php b/vendor/symfony/routing/Generator/CompiledUrlGenerator.php
deleted file mode 100644
index adcc99e31015abdb1299f5bf1f86e76edff9658f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Generator/CompiledUrlGenerator.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Generator;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * Generates URLs based on rules dumped by CompiledUrlGeneratorDumper.
- */
-class CompiledUrlGenerator extends UrlGenerator
-{
-    private $compiledRoutes = [];
-    private $defaultLocale;
-
-    public function __construct(array $compiledRoutes, RequestContext $context, LoggerInterface $logger = null, string $defaultLocale = null)
-    {
-        $this->compiledRoutes = $compiledRoutes;
-        $this->context = $context;
-        $this->logger = $logger;
-        $this->defaultLocale = $defaultLocale;
-    }
-
-    public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH)
-    {
-        $locale = $parameters['_locale']
-            ?? $this->context->getParameter('_locale')
-            ?: $this->defaultLocale;
-
-        if (null !== $locale) {
-            do {
-                if (($this->compiledRoutes[$name.'.'.$locale][1]['_canonical_route'] ?? null) === $name) {
-                    $name .= '.'.$locale;
-                    break;
-                }
-            } while (false !== $locale = strstr($locale, '_', true));
-        }
-
-        if (!isset($this->compiledRoutes[$name])) {
-            throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name));
-        }
-
-        list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = $this->compiledRoutes[$name];
-
-        if (isset($defaults['_canonical_route']) && isset($defaults['_locale'])) {
-            if (!\in_array('_locale', $variables, true)) {
-                unset($parameters['_locale']);
-            } elseif (!isset($parameters['_locale'])) {
-                $parameters['_locale'] = $defaults['_locale'];
-            }
-        }
-
-        return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, $requiredSchemes);
-    }
-}
diff --git a/vendor/symfony/routing/Generator/ConfigurableRequirementsInterface.php b/vendor/symfony/routing/Generator/ConfigurableRequirementsInterface.php
deleted file mode 100644
index 2e5dc5325bddf6c670c6f19242fab05836b711e1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Generator/ConfigurableRequirementsInterface.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Generator;
-
-/**
- * ConfigurableRequirementsInterface must be implemented by URL generators that
- * can be configured whether an exception should be generated when the parameters
- * do not match the requirements. It is also possible to disable the requirements
- * check for URL generation completely.
- *
- * The possible configurations and use-cases:
- * - setStrictRequirements(true): Throw an exception for mismatching requirements. This
- *   is mostly useful in development environment.
- * - setStrictRequirements(false): Don't throw an exception but return an empty string as URL for
- *   mismatching requirements and log the problem. Useful when you cannot control all
- *   params because they come from third party libs but don't want to have a 404 in
- *   production environment. It should log the mismatch so one can review it.
- * - setStrictRequirements(null): Return the URL with the given parameters without
- *   checking the requirements at all. When generating a URL you should either trust
- *   your params or you validated them beforehand because otherwise it would break your
- *   link anyway. So in production environment you should know that params always pass
- *   the requirements. Thus this option allows to disable the check on URL generation for
- *   performance reasons (saving a preg_match for each requirement every time a URL is
- *   generated).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-interface ConfigurableRequirementsInterface
-{
-    /**
-     * Enables or disables the exception on incorrect parameters.
-     * Passing null will deactivate the requirements check completely.
-     *
-     * @param bool|null $enabled
-     */
-    public function setStrictRequirements($enabled);
-
-    /**
-     * Returns whether to throw an exception on incorrect parameters.
-     * Null means the requirements check is deactivated completely.
-     *
-     * @return bool|null
-     */
-    public function isStrictRequirements();
-}
diff --git a/vendor/symfony/routing/Generator/Dumper/CompiledUrlGeneratorDumper.php b/vendor/symfony/routing/Generator/Dumper/CompiledUrlGeneratorDumper.php
deleted file mode 100644
index e90a40a26f0fcc67325cfb78c8345cc65a8eeb06..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Generator/Dumper/CompiledUrlGeneratorDumper.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Generator\Dumper;
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
-
-/**
- * CompiledUrlGeneratorDumper creates a PHP array to be used with CompiledUrlGenerator.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class CompiledUrlGeneratorDumper extends GeneratorDumper
-{
-    public function getCompiledRoutes(): array
-    {
-        $compiledRoutes = [];
-        foreach ($this->getRoutes()->all() as $name => $route) {
-            $compiledRoute = $route->compile();
-
-            $compiledRoutes[$name] = [
-                $compiledRoute->getVariables(),
-                $route->getDefaults(),
-                $route->getRequirements(),
-                $compiledRoute->getTokens(),
-                $compiledRoute->getHostTokens(),
-                $route->getSchemes(),
-            ];
-        }
-
-        return $compiledRoutes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dump(array $options = [])
-    {
-        return <<<EOF
-<?php
-
-// This file has been auto-generated by the Symfony Routing Component.
-
-return [{$this->generateDeclaredRoutes()}
-];
-
-EOF;
-    }
-
-    /**
-     * Generates PHP code representing an array of defined routes
-     * together with the routes properties (e.g. requirements).
-     */
-    private function generateDeclaredRoutes(): string
-    {
-        $routes = '';
-        foreach ($this->getCompiledRoutes() as $name => $properties) {
-            $routes .= sprintf("\n    '%s' => %s,", $name, CompiledUrlMatcherDumper::export($properties));
-        }
-
-        return $routes;
-    }
-}
diff --git a/vendor/symfony/routing/Generator/Dumper/GeneratorDumper.php b/vendor/symfony/routing/Generator/Dumper/GeneratorDumper.php
deleted file mode 100644
index 659c5ba1c8074dd5ae541dfd41ec157efcbe701e..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Generator/Dumper/GeneratorDumper.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Generator\Dumper;
-
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * GeneratorDumper is the base class for all built-in generator dumpers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class GeneratorDumper implements GeneratorDumperInterface
-{
-    private $routes;
-
-    public function __construct(RouteCollection $routes)
-    {
-        $this->routes = $routes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRoutes()
-    {
-        return $this->routes;
-    }
-}
diff --git a/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php b/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php
deleted file mode 100644
index 26daefc63c7f227d2321d209a25df72f2e2fbd74..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Generator\Dumper;
-
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * GeneratorDumperInterface is the interface that all generator dumper classes must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface GeneratorDumperInterface
-{
-    /**
-     * Dumps a set of routes to a string representation of executable code
-     * that can then be used to generate a URL of such a route.
-     *
-     * @return string Executable code
-     */
-    public function dump(array $options = []);
-
-    /**
-     * Gets the routes to dump.
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    public function getRoutes();
-}
diff --git a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php b/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
deleted file mode 100644
index 23081f917013d4bfe2ea5b457fb1ca662f9cbe3a..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Generator\Dumper;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlGeneratorDumper" instead.', PhpGeneratorDumper::class), \E_USER_DEPRECATED);
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
-
-/**
- * PhpGeneratorDumper creates a PHP class able to generate URLs for a given set of routes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- *
- * @deprecated since Symfony 4.3, use CompiledUrlGeneratorDumper instead.
- */
-class PhpGeneratorDumper extends GeneratorDumper
-{
-    /**
-     * Dumps a set of routes to a PHP class.
-     *
-     * Available options:
-     *
-     *  * class:      The class name
-     *  * base_class: The base class name
-     *
-     * @param array $options An array of options
-     *
-     * @return string A PHP class representing the generator class
-     */
-    public function dump(array $options = [])
-    {
-        $options = array_merge([
-            'class' => 'ProjectUrlGenerator',
-            'base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator',
-        ], $options);
-
-        return <<<EOF
-<?php
-
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Psr\Log\LoggerInterface;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class {$options['class']} extends {$options['base_class']}
-{
-    private static \$declaredRoutes;
-    private \$defaultLocale;
-
-    public function __construct(RequestContext \$context, LoggerInterface \$logger = null, string \$defaultLocale = null)
-    {
-        \$this->context = \$context;
-        \$this->logger = \$logger;
-        \$this->defaultLocale = \$defaultLocale;
-        if (null === self::\$declaredRoutes) {
-            self::\$declaredRoutes = {$this->generateDeclaredRoutes()};
-        }
-    }
-
-{$this->generateGenerateMethod()}
-}
-
-EOF;
-    }
-
-    /**
-     * Generates PHP code representing an array of defined routes
-     * together with the routes properties (e.g. requirements).
-     */
-    private function generateDeclaredRoutes(): string
-    {
-        $routes = "[\n";
-        foreach ($this->getRoutes()->all() as $name => $route) {
-            $compiledRoute = $route->compile();
-
-            $properties = [];
-            $properties[] = $compiledRoute->getVariables();
-            $properties[] = $route->getDefaults();
-            $properties[] = $route->getRequirements();
-            $properties[] = $compiledRoute->getTokens();
-            $properties[] = $compiledRoute->getHostTokens();
-            $properties[] = $route->getSchemes();
-
-            $routes .= sprintf("        '%s' => %s,\n", $name, CompiledUrlMatcherDumper::export($properties));
-        }
-        $routes .= '    ]';
-
-        return $routes;
-    }
-
-    /**
-     * Generates PHP code representing the `generate` method that implements the UrlGeneratorInterface.
-     */
-    private function generateGenerateMethod(): string
-    {
-        return <<<'EOF'
-    public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH)
-    {
-        $locale = $parameters['_locale']
-            ?? $this->context->getParameter('_locale')
-            ?: $this->defaultLocale;
-
-        if (null !== $locale && null !== $name) {
-            do {
-                if ((self::$declaredRoutes[$name.'.'.$locale][1]['_canonical_route'] ?? null) === $name) {
-                    $name .= '.'.$locale;
-                    break;
-                }
-            } while (false !== $locale = strstr($locale, '_', true));
-        }
-
-        if (!isset(self::$declaredRoutes[$name])) {
-            throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name));
-        }
-
-        list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = self::$declaredRoutes[$name];
-
-        if (isset($defaults['_canonical_route']) && isset($defaults['_locale'])) {
-            if (!\in_array('_locale', $variables, true)) {
-                unset($parameters['_locale']);
-            } elseif (!isset($parameters['_locale'])) {
-                $parameters['_locale'] = $defaults['_locale'];
-            }
-        }
-
-        return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, $requiredSchemes);
-    }
-EOF;
-    }
-}
diff --git a/vendor/symfony/routing/Generator/UrlGenerator.php b/vendor/symfony/routing/Generator/UrlGenerator.php
deleted file mode 100644
index 7adf2ed27e77c79bbd7d62ebb31864f2fa44d618..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Generator/UrlGenerator.php
+++ /dev/null
@@ -1,366 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Generator;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Routing\Exception\InvalidParameterException;
-use Symfony\Component\Routing\Exception\MissingMandatoryParametersException;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * UrlGenerator can generate a URL or a path for any route in the RouteCollection
- * based on the passed parameters.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInterface
-{
-    private const QUERY_FRAGMENT_DECODED = [
-        // RFC 3986 explicitly allows those in the query/fragment to reference other URIs unencoded
-        '%2F' => '/',
-        '%3F' => '?',
-        // reserved chars that have no special meaning for HTTP URIs in a query or fragment
-        // this excludes esp. "&", "=" and also "+" because PHP would treat it as a space (form-encoded)
-        '%40' => '@',
-        '%3A' => ':',
-        '%21' => '!',
-        '%3B' => ';',
-        '%2C' => ',',
-        '%2A' => '*',
-    ];
-
-    protected $routes;
-    protected $context;
-
-    /**
-     * @var bool|null
-     */
-    protected $strictRequirements = true;
-
-    protected $logger;
-
-    private $defaultLocale;
-
-    /**
-     * This array defines the characters (besides alphanumeric ones) that will not be percent-encoded in the path segment of the generated URL.
-     *
-     * PHP's rawurlencode() encodes all chars except "a-zA-Z0-9-._~" according to RFC 3986. But we want to allow some chars
-     * to be used in their literal form (reasons below). Other chars inside the path must of course be encoded, e.g.
-     * "?" and "#" (would be interpreted wrongly as query and fragment identifier),
-     * "'" and """ (are used as delimiters in HTML).
-     */
-    protected $decodedChars = [
-        // the slash can be used to designate a hierarchical structure and we want allow using it with this meaning
-        // some webservers don't allow the slash in encoded form in the path for security reasons anyway
-        // see http://stackoverflow.com/questions/4069002/http-400-if-2f-part-of-get-url-in-jboss
-        '%2F' => '/',
-        // the following chars are general delimiters in the URI specification but have only special meaning in the authority component
-        // so they can safely be used in the path in unencoded form
-        '%40' => '@',
-        '%3A' => ':',
-        // these chars are only sub-delimiters that have no predefined meaning and can therefore be used literally
-        // so URI producing applications can use these chars to delimit subcomponents in a path segment without being encoded for better readability
-        '%3B' => ';',
-        '%2C' => ',',
-        '%3D' => '=',
-        '%2B' => '+',
-        '%21' => '!',
-        '%2A' => '*',
-        '%7C' => '|',
-    ];
-
-    public function __construct(RouteCollection $routes, RequestContext $context, LoggerInterface $logger = null, string $defaultLocale = null)
-    {
-        $this->routes = $routes;
-        $this->context = $context;
-        $this->logger = $logger;
-        $this->defaultLocale = $defaultLocale;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContext(RequestContext $context)
-    {
-        $this->context = $context;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContext()
-    {
-        return $this->context;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setStrictRequirements($enabled)
-    {
-        $this->strictRequirements = null === $enabled ? null : (bool) $enabled;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isStrictRequirements()
-    {
-        return $this->strictRequirements;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH)
-    {
-        $route = null;
-        $locale = $parameters['_locale']
-            ?? $this->context->getParameter('_locale')
-            ?: $this->defaultLocale;
-
-        if (null !== $locale) {
-            do {
-                if (null !== ($route = $this->routes->get($name.'.'.$locale)) && $route->getDefault('_canonical_route') === $name) {
-                    break;
-                }
-            } while (false !== $locale = strstr($locale, '_', true));
-        }
-
-        if (null === $route = $route ?? $this->routes->get($name)) {
-            throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name));
-        }
-
-        // the Route has a cache of its own and is not recompiled as long as it does not get modified
-        $compiledRoute = $route->compile();
-
-        $defaults = $route->getDefaults();
-        $variables = $compiledRoute->getVariables();
-
-        if (isset($defaults['_canonical_route']) && isset($defaults['_locale'])) {
-            if (!\in_array('_locale', $variables, true)) {
-                unset($parameters['_locale']);
-            } elseif (!isset($parameters['_locale'])) {
-                $parameters['_locale'] = $defaults['_locale'];
-            }
-        }
-
-        return $this->doGenerate($variables, $defaults, $route->getRequirements(), $compiledRoute->getTokens(), $parameters, $name, $referenceType, $compiledRoute->getHostTokens(), $route->getSchemes());
-    }
-
-    /**
-     * @throws MissingMandatoryParametersException When some parameters are missing that are mandatory for the route
-     * @throws InvalidParameterException           When a parameter value for a placeholder is not correct because
-     *                                             it does not match the requirement
-     *
-     * @return string
-     */
-    protected function doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, array $requiredSchemes = [])
-    {
-        $variables = array_flip($variables);
-        $mergedParams = array_replace($defaults, $this->context->getParameters(), $parameters);
-
-        // all params must be given
-        if ($diff = array_diff_key($variables, $mergedParams)) {
-            throw new MissingMandatoryParametersException(sprintf('Some mandatory parameters are missing ("%s") to generate a URL for route "%s".', implode('", "', array_keys($diff)), $name));
-        }
-
-        $url = '';
-        $optional = true;
-        $message = 'Parameter "{parameter}" for route "{route}" must match "{expected}" ("{given}" given) to generate a corresponding URL.';
-        foreach ($tokens as $token) {
-            if ('variable' === $token[0]) {
-                $varName = $token[3];
-                // variable is not important by default
-                $important = $token[5] ?? false;
-
-                if (!$optional || $important || !\array_key_exists($varName, $defaults) || (null !== $mergedParams[$varName] && (string) $mergedParams[$varName] !== (string) $defaults[$varName])) {
-                    // check requirement (while ignoring look-around patterns)
-                    if (null !== $this->strictRequirements && !preg_match('#^'.preg_replace('/\(\?(?:=|<=|!|<!)((?:[^()\\\\]+|\\\\.|\((?1)\))*)\)/', '', $token[2]).'$#i'.(empty($token[4]) ? '' : 'u'), $mergedParams[$token[3]])) {
-                        if ($this->strictRequirements) {
-                            throw new InvalidParameterException(strtr($message, ['{parameter}' => $varName, '{route}' => $name, '{expected}' => $token[2], '{given}' => $mergedParams[$varName]]));
-                        }
-
-                        if ($this->logger) {
-                            $this->logger->error($message, ['parameter' => $varName, 'route' => $name, 'expected' => $token[2], 'given' => $mergedParams[$varName]]);
-                        }
-
-                        return '';
-                    }
-
-                    $url = $token[1].$mergedParams[$varName].$url;
-                    $optional = false;
-                }
-            } else {
-                // static text
-                $url = $token[1].$url;
-                $optional = false;
-            }
-        }
-
-        if ('' === $url) {
-            $url = '/';
-        }
-
-        // the contexts base URL is already encoded (see Symfony\Component\HttpFoundation\Request)
-        $url = strtr(rawurlencode($url), $this->decodedChars);
-
-        // the path segments "." and ".." are interpreted as relative reference when resolving a URI; see http://tools.ietf.org/html/rfc3986#section-3.3
-        // so we need to encode them as they are not used for this purpose here
-        // otherwise we would generate a URI that, when followed by a user agent (e.g. browser), does not match this route
-        $url = strtr($url, ['/../' => '/%2E%2E/', '/./' => '/%2E/']);
-        if ('/..' === substr($url, -3)) {
-            $url = substr($url, 0, -2).'%2E%2E';
-        } elseif ('/.' === substr($url, -2)) {
-            $url = substr($url, 0, -1).'%2E';
-        }
-
-        $schemeAuthority = '';
-        $host = $this->context->getHost();
-        $scheme = $this->context->getScheme();
-
-        if ($requiredSchemes) {
-            if (!\in_array($scheme, $requiredSchemes, true)) {
-                $referenceType = self::ABSOLUTE_URL;
-                $scheme = current($requiredSchemes);
-            }
-        }
-
-        if ($hostTokens) {
-            $routeHost = '';
-            foreach ($hostTokens as $token) {
-                if ('variable' === $token[0]) {
-                    // check requirement (while ignoring look-around patterns)
-                    if (null !== $this->strictRequirements && !preg_match('#^'.preg_replace('/\(\?(?:=|<=|!|<!)((?:[^()\\\\]+|\\\\.|\((?1)\))*)\)/', '', $token[2]).'$#i'.(empty($token[4]) ? '' : 'u'), $mergedParams[$token[3]])) {
-                        if ($this->strictRequirements) {
-                            throw new InvalidParameterException(strtr($message, ['{parameter}' => $token[3], '{route}' => $name, '{expected}' => $token[2], '{given}' => $mergedParams[$token[3]]]));
-                        }
-
-                        if ($this->logger) {
-                            $this->logger->error($message, ['parameter' => $token[3], 'route' => $name, 'expected' => $token[2], 'given' => $mergedParams[$token[3]]]);
-                        }
-
-                        return '';
-                    }
-
-                    $routeHost = $token[1].$mergedParams[$token[3]].$routeHost;
-                } else {
-                    $routeHost = $token[1].$routeHost;
-                }
-            }
-
-            if ($routeHost !== $host) {
-                $host = $routeHost;
-                if (self::ABSOLUTE_URL !== $referenceType) {
-                    $referenceType = self::NETWORK_PATH;
-                }
-            }
-        }
-
-        if (self::ABSOLUTE_URL === $referenceType || self::NETWORK_PATH === $referenceType) {
-            if ('' !== $host || ('' !== $scheme && 'http' !== $scheme && 'https' !== $scheme)) {
-                $port = '';
-                if ('http' === $scheme && 80 !== $this->context->getHttpPort()) {
-                    $port = ':'.$this->context->getHttpPort();
-                } elseif ('https' === $scheme && 443 !== $this->context->getHttpsPort()) {
-                    $port = ':'.$this->context->getHttpsPort();
-                }
-
-                $schemeAuthority = self::NETWORK_PATH === $referenceType || '' === $scheme ? '//' : "$scheme://";
-                $schemeAuthority .= $host.$port;
-            }
-        }
-
-        if (self::RELATIVE_PATH === $referenceType) {
-            $url = self::getRelativePath($this->context->getPathInfo(), $url);
-        } else {
-            $url = $schemeAuthority.$this->context->getBaseUrl().$url;
-        }
-
-        // add a query string if needed
-        $extra = array_udiff_assoc(array_diff_key($parameters, $variables), $defaults, function ($a, $b) {
-            return $a == $b ? 0 : 1;
-        });
-
-        // extract fragment
-        $fragment = $defaults['_fragment'] ?? '';
-
-        if (isset($extra['_fragment'])) {
-            $fragment = $extra['_fragment'];
-            unset($extra['_fragment']);
-        }
-
-        if ($extra && $query = http_build_query($extra, '', '&', \PHP_QUERY_RFC3986)) {
-            $url .= '?'.strtr($query, self::QUERY_FRAGMENT_DECODED);
-        }
-
-        if ('' !== $fragment) {
-            $url .= '#'.strtr(rawurlencode($fragment), self::QUERY_FRAGMENT_DECODED);
-        }
-
-        return $url;
-    }
-
-    /**
-     * Returns the target path as relative reference from the base path.
-     *
-     * Only the URIs path component (no schema, host etc.) is relevant and must be given, starting with a slash.
-     * Both paths must be absolute and not contain relative parts.
-     * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives.
-     * Furthermore, they can be used to reduce the link size in documents.
-     *
-     * Example target paths, given a base path of "/a/b/c/d":
-     * - "/a/b/c/d"     -> ""
-     * - "/a/b/c/"      -> "./"
-     * - "/a/b/"        -> "../"
-     * - "/a/b/c/other" -> "other"
-     * - "/a/x/y"       -> "../../x/y"
-     *
-     * @param string $basePath   The base path
-     * @param string $targetPath The target path
-     *
-     * @return string The relative target path
-     */
-    public static function getRelativePath($basePath, $targetPath)
-    {
-        if ($basePath === $targetPath) {
-            return '';
-        }
-
-        $sourceDirs = explode('/', isset($basePath[0]) && '/' === $basePath[0] ? substr($basePath, 1) : $basePath);
-        $targetDirs = explode('/', isset($targetPath[0]) && '/' === $targetPath[0] ? substr($targetPath, 1) : $targetPath);
-        array_pop($sourceDirs);
-        $targetFile = array_pop($targetDirs);
-
-        foreach ($sourceDirs as $i => $dir) {
-            if (isset($targetDirs[$i]) && $dir === $targetDirs[$i]) {
-                unset($sourceDirs[$i], $targetDirs[$i]);
-            } else {
-                break;
-            }
-        }
-
-        $targetDirs[] = $targetFile;
-        $path = str_repeat('../', \count($sourceDirs)).implode('/', $targetDirs);
-
-        // A reference to the same base directory or an empty subdirectory must be prefixed with "./".
-        // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used
-        // as the first segment of a relative-path reference, as it would be mistaken for a scheme name
-        // (see http://tools.ietf.org/html/rfc3986#section-4.2).
-        return '' === $path || '/' === $path[0]
-            || false !== ($colonPos = strpos($path, ':')) && ($colonPos < ($slashPos = strpos($path, '/')) || false === $slashPos)
-            ? "./$path" : $path;
-    }
-}
diff --git a/vendor/symfony/routing/Generator/UrlGeneratorInterface.php b/vendor/symfony/routing/Generator/UrlGeneratorInterface.php
deleted file mode 100644
index 64714d354dba2f1f56e4b8d71ecff150aa2067e3..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Generator/UrlGeneratorInterface.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Generator;
-
-use Symfony\Component\Routing\Exception\InvalidParameterException;
-use Symfony\Component\Routing\Exception\MissingMandatoryParametersException;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Symfony\Component\Routing\RequestContextAwareInterface;
-
-/**
- * UrlGeneratorInterface is the interface that all URL generator classes must implement.
- *
- * The constants in this interface define the different types of resource references that
- * are declared in RFC 3986: http://tools.ietf.org/html/rfc3986
- * We are using the term "URL" instead of "URI" as this is more common in web applications
- * and we do not need to distinguish them as the difference is mostly semantical and
- * less technical. Generating URIs, i.e. representation-independent resource identifiers,
- * is also possible.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-interface UrlGeneratorInterface extends RequestContextAwareInterface
-{
-    /**
-     * Generates an absolute URL, e.g. "http://example.com/dir/file".
-     */
-    const ABSOLUTE_URL = 0;
-
-    /**
-     * Generates an absolute path, e.g. "/dir/file".
-     */
-    const ABSOLUTE_PATH = 1;
-
-    /**
-     * Generates a relative path based on the current request path, e.g. "../parent-file".
-     *
-     * @see UrlGenerator::getRelativePath()
-     */
-    const RELATIVE_PATH = 2;
-
-    /**
-     * Generates a network path, e.g. "//example.com/dir/file".
-     * Such reference reuses the current scheme but specifies the host.
-     */
-    const NETWORK_PATH = 3;
-
-    /**
-     * Generates a URL or path for a specific route based on the given parameters.
-     *
-     * Parameters that reference placeholders in the route pattern will substitute them in the
-     * path or host. Extra params are added as query string to the URL.
-     *
-     * When the passed reference type cannot be generated for the route because it requires a different
-     * host or scheme than the current one, the method will return a more comprehensive reference
-     * that includes the required params. For example, when you call this method with $referenceType = ABSOLUTE_PATH
-     * but the route requires the https scheme whereas the current scheme is http, it will instead return an
-     * ABSOLUTE_URL with the https scheme and the current host. This makes sure the generated URL matches
-     * the route in any case.
-     *
-     * If there is no route with the given name, the generator must throw the RouteNotFoundException.
-     *
-     * The special parameter _fragment will be used as the document fragment suffixed to the final URL.
-     *
-     * @param string  $name          The name of the route
-     * @param mixed[] $parameters    An array of parameters
-     * @param int     $referenceType The type of reference to be generated (one of the constants)
-     *
-     * @return string The generated URL
-     *
-     * @throws RouteNotFoundException              If the named route doesn't exist
-     * @throws MissingMandatoryParametersException When some parameters are missing that are mandatory for the route
-     * @throws InvalidParameterException           When a parameter value for a placeholder is not correct because
-     *                                             it does not match the requirement
-     */
-    public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH);
-}
diff --git a/vendor/symfony/routing/LICENSE b/vendor/symfony/routing/LICENSE
deleted file mode 100644
index 9e936ec0448b8549e5edf08e5ac5f01491a8bfc8..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/routing/Loader/AnnotationClassLoader.php b/vendor/symfony/routing/Loader/AnnotationClassLoader.php
deleted file mode 100644
index ca7f46b164c95efa779d805e75cba4577c9385e1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/AnnotationClassLoader.php
+++ /dev/null
@@ -1,338 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-use Doctrine\Common\Annotations\Reader;
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\Config\Loader\LoaderResolverInterface;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Annotation\Route as RouteAnnotation;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\RouteCompiler;
-
-/**
- * AnnotationClassLoader loads routing information from a PHP class and its methods.
- *
- * You need to define an implementation for the configureRoute() method. Most of the
- * time, this method should define some PHP callable to be called for the route
- * (a controller in MVC speak).
- *
- * The @Route annotation can be set on the class (for global parameters),
- * and on each method.
- *
- * The @Route annotation main value is the route path. The annotation also
- * recognizes several parameters: requirements, options, defaults, schemes,
- * methods, host, and name. The name parameter is mandatory.
- * Here is an example of how you should be able to use it:
- *     /**
- *      * @Route("/Blog")
- *      * /
- *     class Blog
- *     {
- *         /**
- *          * @Route("/", name="blog_index")
- *          * /
- *         public function index()
- *         {
- *         }
- *         /**
- *          * @Route("/{id}", name="blog_post", requirements = {"id" = "\d+"})
- *          * /
- *         public function show()
- *         {
- *         }
- *     }
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class AnnotationClassLoader implements LoaderInterface
-{
-    protected $reader;
-
-    /**
-     * @var string
-     */
-    protected $routeAnnotationClass = 'Symfony\\Component\\Routing\\Annotation\\Route';
-
-    /**
-     * @var int
-     */
-    protected $defaultRouteIndex = 0;
-
-    public function __construct(Reader $reader)
-    {
-        $this->reader = $reader;
-    }
-
-    /**
-     * Sets the annotation class to read route properties from.
-     *
-     * @param string $class A fully-qualified class name
-     */
-    public function setRouteAnnotationClass($class)
-    {
-        $this->routeAnnotationClass = $class;
-    }
-
-    /**
-     * Loads from annotations from a class.
-     *
-     * @param string      $class A class name
-     * @param string|null $type  The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     *
-     * @throws \InvalidArgumentException When route can't be parsed
-     */
-    public function load($class, $type = null)
-    {
-        if (!class_exists($class)) {
-            throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $class));
-        }
-
-        $class = new \ReflectionClass($class);
-        if ($class->isAbstract()) {
-            throw new \InvalidArgumentException(sprintf('Annotations from class "%s" cannot be read as it is abstract.', $class->getName()));
-        }
-
-        $globals = $this->getGlobals($class);
-
-        $collection = new RouteCollection();
-        $collection->addResource(new FileResource($class->getFileName()));
-
-        foreach ($class->getMethods() as $method) {
-            $this->defaultRouteIndex = 0;
-            foreach ($this->reader->getMethodAnnotations($method) as $annot) {
-                if ($annot instanceof $this->routeAnnotationClass) {
-                    $this->addRoute($collection, $annot, $globals, $class, $method);
-                }
-            }
-        }
-
-        if (0 === $collection->count() && $class->hasMethod('__invoke')) {
-            $globals = $this->resetGlobals();
-            foreach ($this->reader->getClassAnnotations($class) as $annot) {
-                if ($annot instanceof $this->routeAnnotationClass) {
-                    $this->addRoute($collection, $annot, $globals, $class, $class->getMethod('__invoke'));
-                }
-            }
-        }
-
-        return $collection;
-    }
-
-    /**
-     * @param RouteAnnotation $annot   or an object that exposes a similar interface
-     * @param array           $globals
-     */
-    protected function addRoute(RouteCollection $collection, $annot, $globals, \ReflectionClass $class, \ReflectionMethod $method)
-    {
-        $name = $annot->getName();
-        if (null === $name) {
-            $name = $this->getDefaultRouteName($class, $method);
-        }
-        $name = $globals['name'].$name;
-
-        $requirements = $annot->getRequirements();
-
-        foreach ($requirements as $placeholder => $requirement) {
-            if (\is_int($placeholder)) {
-                @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s::%s()"?', $placeholder, $requirement, $name, $class->getName(), $method->getName()), \E_USER_DEPRECATED);
-            }
-        }
-
-        $defaults = array_replace($globals['defaults'], $annot->getDefaults());
-        $requirements = array_replace($globals['requirements'], $requirements);
-        $options = array_replace($globals['options'], $annot->getOptions());
-        $schemes = array_merge($globals['schemes'], $annot->getSchemes());
-        $methods = array_merge($globals['methods'], $annot->getMethods());
-
-        $host = $annot->getHost();
-        if (null === $host) {
-            $host = $globals['host'];
-        }
-
-        $condition = $annot->getCondition();
-        if (null === $condition) {
-            $condition = $globals['condition'];
-        }
-
-        $path = $annot->getLocalizedPaths() ?: $annot->getPath();
-        $prefix = $globals['localized_paths'] ?: $globals['path'];
-        $paths = [];
-
-        if (\is_array($path)) {
-            if (!\is_array($prefix)) {
-                foreach ($path as $locale => $localePath) {
-                    $paths[$locale] = $prefix.$localePath;
-                }
-            } elseif ($missing = array_diff_key($prefix, $path)) {
-                throw new \LogicException(sprintf('Route to "%s" is missing paths for locale(s) "%s".', $class->name.'::'.$method->name, implode('", "', array_keys($missing))));
-            } else {
-                foreach ($path as $locale => $localePath) {
-                    if (!isset($prefix[$locale])) {
-                        throw new \LogicException(sprintf('Route to "%s" with locale "%s" is missing a corresponding prefix in class "%s".', $method->name, $locale, $class->name));
-                    }
-
-                    $paths[$locale] = $prefix[$locale].$localePath;
-                }
-            }
-        } elseif (\is_array($prefix)) {
-            foreach ($prefix as $locale => $localePrefix) {
-                $paths[$locale] = $localePrefix.$path;
-            }
-        } else {
-            $paths[] = $prefix.$path;
-        }
-
-        foreach ($method->getParameters() as $param) {
-            if (isset($defaults[$param->name]) || !$param->isDefaultValueAvailable()) {
-                continue;
-            }
-            foreach ($paths as $locale => $path) {
-                if (preg_match(sprintf('/\{%s(?:<.*?>)?\}/', preg_quote($param->name)), $path)) {
-                    $defaults[$param->name] = $param->getDefaultValue();
-                    break;
-                }
-            }
-        }
-
-        foreach ($paths as $locale => $path) {
-            $route = $this->createRoute($path, $defaults, $requirements, $options, $host, $schemes, $methods, $condition);
-            $this->configureRoute($route, $class, $method, $annot);
-            if (0 !== $locale) {
-                $route->setDefault('_locale', $locale);
-                $route->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
-                $route->setDefault('_canonical_route', $name);
-                $collection->add($name.'.'.$locale, $route);
-            } else {
-                $collection->add($name, $route);
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return \is_string($resource) && preg_match('/^(?:\\\\?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)+$/', $resource) && (!$type || 'annotation' === $type);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setResolver(LoaderResolverInterface $resolver)
-    {
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getResolver()
-    {
-    }
-
-    /**
-     * Gets the default route name for a class method.
-     *
-     * @return string
-     */
-    protected function getDefaultRouteName(\ReflectionClass $class, \ReflectionMethod $method)
-    {
-        $name = str_replace('\\', '_', $class->name).'_'.$method->name;
-        $name = \function_exists('mb_strtolower') && preg_match('//u', $name) ? mb_strtolower($name, 'UTF-8') : strtolower($name);
-        if ($this->defaultRouteIndex > 0) {
-            $name .= '_'.$this->defaultRouteIndex;
-        }
-        ++$this->defaultRouteIndex;
-
-        return $name;
-    }
-
-    protected function getGlobals(\ReflectionClass $class)
-    {
-        $globals = $this->resetGlobals();
-
-        if ($annot = $this->reader->getClassAnnotation($class, $this->routeAnnotationClass)) {
-            if (null !== $annot->getName()) {
-                $globals['name'] = $annot->getName();
-            }
-
-            if (null !== $annot->getPath()) {
-                $globals['path'] = $annot->getPath();
-            }
-
-            $globals['localized_paths'] = $annot->getLocalizedPaths();
-
-            if (null !== $annot->getRequirements()) {
-                $globals['requirements'] = $annot->getRequirements();
-            }
-
-            if (null !== $annot->getOptions()) {
-                $globals['options'] = $annot->getOptions();
-            }
-
-            if (null !== $annot->getDefaults()) {
-                $globals['defaults'] = $annot->getDefaults();
-            }
-
-            if (null !== $annot->getSchemes()) {
-                $globals['schemes'] = $annot->getSchemes();
-            }
-
-            if (null !== $annot->getMethods()) {
-                $globals['methods'] = $annot->getMethods();
-            }
-
-            if (null !== $annot->getHost()) {
-                $globals['host'] = $annot->getHost();
-            }
-
-            if (null !== $annot->getCondition()) {
-                $globals['condition'] = $annot->getCondition();
-            }
-
-            foreach ($globals['requirements'] as $placeholder => $requirement) {
-                if (\is_int($placeholder)) {
-                    @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" in "%s"?', $placeholder, $requirement, $class->getName()), \E_USER_DEPRECATED);
-                }
-            }
-        }
-
-        return $globals;
-    }
-
-    private function resetGlobals()
-    {
-        return [
-            'path' => null,
-            'localized_paths' => [],
-            'requirements' => [],
-            'options' => [],
-            'defaults' => [],
-            'schemes' => [],
-            'methods' => [],
-            'host' => '',
-            'condition' => '',
-            'name' => '',
-        ];
-    }
-
-    protected function createRoute($path, $defaults, $requirements, $options, $host, $schemes, $methods, $condition)
-    {
-        return new Route($path, $defaults, $requirements, $options, $host, $schemes, $methods, $condition);
-    }
-
-    abstract protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot);
-}
diff --git a/vendor/symfony/routing/Loader/AnnotationDirectoryLoader.php b/vendor/symfony/routing/Loader/AnnotationDirectoryLoader.php
deleted file mode 100644
index 3fb70ea20b4338e77139681564fa27134b120fdc..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/AnnotationDirectoryLoader.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-use Symfony\Component\Config\Resource\DirectoryResource;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * AnnotationDirectoryLoader loads routing information from annotations set
- * on PHP classes and methods.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AnnotationDirectoryLoader extends AnnotationFileLoader
-{
-    /**
-     * Loads from annotations from a directory.
-     *
-     * @param string      $path A directory path
-     * @param string|null $type The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     *
-     * @throws \InvalidArgumentException When the directory does not exist or its routes cannot be parsed
-     */
-    public function load($path, $type = null)
-    {
-        if (!is_dir($dir = $this->locator->locate($path))) {
-            return parent::supports($path, $type) ? parent::load($path, $type) : new RouteCollection();
-        }
-
-        $collection = new RouteCollection();
-        $collection->addResource(new DirectoryResource($dir, '/\.php$/'));
-        $files = iterator_to_array(new \RecursiveIteratorIterator(
-            new \RecursiveCallbackFilterIterator(
-                new \RecursiveDirectoryIterator($dir, \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS),
-                function (\SplFileInfo $current) {
-                    return '.' !== substr($current->getBasename(), 0, 1);
-                }
-            ),
-            \RecursiveIteratorIterator::LEAVES_ONLY
-        ));
-        usort($files, function (\SplFileInfo $a, \SplFileInfo $b) {
-            return (string) $a > (string) $b ? 1 : -1;
-        });
-
-        foreach ($files as $file) {
-            if (!$file->isFile() || '.php' !== substr($file->getFilename(), -4)) {
-                continue;
-            }
-
-            if ($class = $this->findClass($file)) {
-                $refl = new \ReflectionClass($class);
-                if ($refl->isAbstract()) {
-                    continue;
-                }
-
-                $collection->addCollection($this->loader->load($class, $type));
-            }
-        }
-
-        return $collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        if ('annotation' === $type) {
-            return true;
-        }
-
-        if ($type || !\is_string($resource)) {
-            return false;
-        }
-
-        try {
-            return is_dir($this->locator->locate($resource));
-        } catch (\Exception $e) {
-            return false;
-        }
-    }
-}
diff --git a/vendor/symfony/routing/Loader/AnnotationFileLoader.php b/vendor/symfony/routing/Loader/AnnotationFileLoader.php
deleted file mode 100644
index 8f9af3a8f76d5b2cc02014807319304ae5e9980f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/AnnotationFileLoader.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-use Symfony\Component\Config\FileLocatorInterface;
-use Symfony\Component\Config\Loader\FileLoader;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * AnnotationFileLoader loads routing information from annotations set
- * on a PHP class and its methods.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AnnotationFileLoader extends FileLoader
-{
-    protected $loader;
-
-    /**
-     * @throws \RuntimeException
-     */
-    public function __construct(FileLocatorInterface $locator, AnnotationClassLoader $loader)
-    {
-        if (!\function_exists('token_get_all')) {
-            throw new \LogicException('The Tokenizer extension is required for the routing annotation loaders.');
-        }
-
-        parent::__construct($locator);
-
-        $this->loader = $loader;
-    }
-
-    /**
-     * Loads from annotations from a file.
-     *
-     * @param string      $file A PHP file path
-     * @param string|null $type The resource type
-     *
-     * @return RouteCollection|null A RouteCollection instance
-     *
-     * @throws \InvalidArgumentException When the file does not exist or its routes cannot be parsed
-     */
-    public function load($file, $type = null)
-    {
-        $path = $this->locator->locate($file);
-
-        $collection = new RouteCollection();
-        if ($class = $this->findClass($path)) {
-            $refl = new \ReflectionClass($class);
-            if ($refl->isAbstract()) {
-                return null;
-            }
-
-            $collection->addResource(new FileResource($path));
-            $collection->addCollection($this->loader->load($class, $type));
-        }
-
-        gc_mem_caches();
-
-        return $collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return \is_string($resource) && 'php' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'annotation' === $type);
-    }
-
-    /**
-     * Returns the full class name for the first class in the file.
-     *
-     * @param string $file A PHP file path
-     *
-     * @return string|false Full class name if found, false otherwise
-     */
-    protected function findClass($file)
-    {
-        $class = false;
-        $namespace = false;
-        $tokens = token_get_all(file_get_contents($file));
-
-        if (1 === \count($tokens) && \T_INLINE_HTML === $tokens[0][0]) {
-            throw new \InvalidArgumentException(sprintf('The file "%s" does not contain PHP code. Did you forgot to add the "<?php" start tag at the beginning of the file?', $file));
-        }
-
-        $nsTokens = [\T_NS_SEPARATOR => true, \T_STRING => true];
-        if (\defined('T_NAME_QUALIFIED')) {
-            $nsTokens[T_NAME_QUALIFIED] = true;
-        }
-
-        for ($i = 0; isset($tokens[$i]); ++$i) {
-            $token = $tokens[$i];
-
-            if (!isset($token[1])) {
-                continue;
-            }
-
-            if (true === $class && \T_STRING === $token[0]) {
-                return $namespace.'\\'.$token[1];
-            }
-
-            if (true === $namespace && isset($nsTokens[$token[0]])) {
-                $namespace = $token[1];
-                while (isset($tokens[++$i][1], $nsTokens[$tokens[$i][0]])) {
-                    $namespace .= $tokens[$i][1];
-                }
-                $token = $tokens[$i];
-            }
-
-            if (\T_CLASS === $token[0]) {
-                // Skip usage of ::class constant and anonymous classes
-                $skipClassToken = false;
-                for ($j = $i - 1; $j > 0; --$j) {
-                    if (!isset($tokens[$j][1])) {
-                        break;
-                    }
-
-                    if (\T_DOUBLE_COLON === $tokens[$j][0] || \T_NEW === $tokens[$j][0]) {
-                        $skipClassToken = true;
-                        break;
-                    } elseif (!\in_array($tokens[$j][0], [\T_WHITESPACE, \T_DOC_COMMENT, \T_COMMENT])) {
-                        break;
-                    }
-                }
-
-                if (!$skipClassToken) {
-                    $class = true;
-                }
-            }
-
-            if (\T_NAMESPACE === $token[0]) {
-                $namespace = true;
-            }
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/symfony/routing/Loader/ClosureLoader.php b/vendor/symfony/routing/Loader/ClosureLoader.php
deleted file mode 100644
index 5df9f6ae8f172bc829f639a377bcc3de49719649..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/ClosureLoader.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-use Symfony\Component\Config\Loader\Loader;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * ClosureLoader loads routes from a PHP closure.
- *
- * The Closure must return a RouteCollection instance.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ClosureLoader extends Loader
-{
-    /**
-     * Loads a Closure.
-     *
-     * @param \Closure    $closure A Closure
-     * @param string|null $type    The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    public function load($closure, $type = null)
-    {
-        return $closure();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return $resource instanceof \Closure && (!$type || 'closure' === $type);
-    }
-}
diff --git a/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php b/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php
deleted file mode 100644
index 79c1100a82fb98620286c279cbb250ab9ff4009f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class CollectionConfigurator
-{
-    use Traits\AddTrait;
-    use Traits\RouteTrait;
-
-    private $parent;
-    private $parentConfigurator;
-    private $parentPrefixes;
-
-    public function __construct(RouteCollection $parent, string $name, self $parentConfigurator = null, array $parentPrefixes = null)
-    {
-        $this->parent = $parent;
-        $this->name = $name;
-        $this->collection = new RouteCollection();
-        $this->route = new Route('');
-        $this->parentConfigurator = $parentConfigurator; // for GC control
-        $this->parentPrefixes = $parentPrefixes;
-    }
-
-    public function __destruct()
-    {
-        if (null === $this->prefixes) {
-            $this->collection->addPrefix($this->route->getPath());
-        }
-
-        $this->parent->addCollection($this->collection);
-    }
-
-    /**
-     * Creates a sub-collection.
-     */
-    final public function collection(string $name = ''): self
-    {
-        return new self($this->collection, $this->name.$name, $this, $this->prefixes);
-    }
-
-    /**
-     * Sets the prefix to add to the path of all child routes.
-     *
-     * @param string|array $prefix the prefix, or the localized prefixes
-     *
-     * @return $this
-     */
-    final public function prefix($prefix): self
-    {
-        if (\is_array($prefix)) {
-            if (null === $this->parentPrefixes) {
-                // no-op
-            } elseif ($missing = array_diff_key($this->parentPrefixes, $prefix)) {
-                throw new \LogicException(sprintf('Collection "%s" is missing prefixes for locale(s) "%s".', $this->name, implode('", "', array_keys($missing))));
-            } else {
-                foreach ($prefix as $locale => $localePrefix) {
-                    if (!isset($this->parentPrefixes[$locale])) {
-                        throw new \LogicException(sprintf('Collection "%s" with locale "%s" is missing a corresponding prefix in its parent collection.', $this->name, $locale));
-                    }
-
-                    $prefix[$locale] = $this->parentPrefixes[$locale].$localePrefix;
-                }
-            }
-            $this->prefixes = $prefix;
-            $this->route->setPath('/');
-        } else {
-            $this->prefixes = null;
-            $this->route->setPath($prefix);
-        }
-
-        return $this;
-    }
-
-    private function createRoute(string $path): Route
-    {
-        return (clone $this->route)->setPath($path);
-    }
-}
diff --git a/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php b/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php
deleted file mode 100644
index 0059a632a197701fea2cb3e7c9779d4ea6d7cbca..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\RouteCompiler;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class ImportConfigurator
-{
-    use Traits\RouteTrait;
-
-    private $parent;
-
-    public function __construct(RouteCollection $parent, RouteCollection $route)
-    {
-        $this->parent = $parent;
-        $this->route = $route;
-    }
-
-    public function __destruct()
-    {
-        $this->parent->addCollection($this->route);
-    }
-
-    /**
-     * Sets the prefix to add to the path of all child routes.
-     *
-     * @param string|array $prefix the prefix, or the localized prefixes
-     *
-     * @return $this
-     */
-    final public function prefix($prefix, bool $trailingSlashOnRoot = true): self
-    {
-        if (!\is_array($prefix)) {
-            $this->route->addPrefix($prefix);
-            if (!$trailingSlashOnRoot) {
-                $rootPath = (new Route(trim(trim($prefix), '/').'/'))->getPath();
-                foreach ($this->route->all() as $route) {
-                    if ($route->getPath() === $rootPath) {
-                        $route->setPath(rtrim($rootPath, '/'));
-                    }
-                }
-            }
-        } else {
-            foreach ($prefix as $locale => $localePrefix) {
-                $prefix[$locale] = trim(trim($localePrefix), '/');
-            }
-            foreach ($this->route->all() as $name => $route) {
-                if (null === $locale = $route->getDefault('_locale')) {
-                    $this->route->remove($name);
-                    foreach ($prefix as $locale => $localePrefix) {
-                        $localizedRoute = clone $route;
-                        $localizedRoute->setDefault('_locale', $locale);
-                        $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
-                        $localizedRoute->setDefault('_canonical_route', $name);
-                        $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
-                        $this->route->add($name.'.'.$locale, $localizedRoute);
-                    }
-                } elseif (!isset($prefix[$locale])) {
-                    throw new \InvalidArgumentException(sprintf('Route "%s" with locale "%s" is missing a corresponding prefix in its parent collection.', $name, $locale));
-                } else {
-                    $route->setPath($prefix[$locale].(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
-                    $this->route->add($name, $route);
-                }
-            }
-        }
-
-        return $this;
-    }
-
-    /**
-     * Sets the prefix to add to the name of all child routes.
-     *
-     * @return $this
-     */
-    final public function namePrefix(string $namePrefix): self
-    {
-        $this->route->addNamePrefix($namePrefix);
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/routing/Loader/Configurator/RouteConfigurator.php b/vendor/symfony/routing/Loader/Configurator/RouteConfigurator.php
deleted file mode 100644
index e700f8de7c13b6656745de9471e445b0c5471af4..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/Configurator/RouteConfigurator.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class RouteConfigurator
-{
-    use Traits\AddTrait;
-    use Traits\RouteTrait;
-
-    private $parentConfigurator;
-
-    public function __construct(RouteCollection $collection, $route, string $name = '', CollectionConfigurator $parentConfigurator = null, array $prefixes = null)
-    {
-        $this->collection = $collection;
-        $this->route = $route;
-        $this->name = $name;
-        $this->parentConfigurator = $parentConfigurator; // for GC control
-        $this->prefixes = $prefixes;
-    }
-}
diff --git a/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php b/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php
deleted file mode 100644
index 8ed06f307c6464ac23705374d6eb11c6e17d8e66..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-use Symfony\Component\Routing\Loader\PhpFileLoader;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class RoutingConfigurator
-{
-    use Traits\AddTrait;
-
-    private $loader;
-    private $path;
-    private $file;
-
-    public function __construct(RouteCollection $collection, PhpFileLoader $loader, string $path, string $file)
-    {
-        $this->collection = $collection;
-        $this->loader = $loader;
-        $this->path = $path;
-        $this->file = $file;
-    }
-
-    /**
-     * @param string|string[]|null $exclude Glob patterns to exclude from the import
-     */
-    final public function import($resource, string $type = null, bool $ignoreErrors = false, $exclude = null): ImportConfigurator
-    {
-        $this->loader->setCurrentDir(\dirname($this->path));
-
-        $imported = $this->loader->import($resource, $type, $ignoreErrors, $this->file, $exclude) ?: [];
-        if (!\is_array($imported)) {
-            return new ImportConfigurator($this->collection, $imported);
-        }
-
-        $mergedCollection = new RouteCollection();
-        foreach ($imported as $subCollection) {
-            $mergedCollection->addCollection($subCollection);
-        }
-
-        return new ImportConfigurator($this->collection, $mergedCollection);
-    }
-
-    final public function collection(string $name = ''): CollectionConfigurator
-    {
-        return new CollectionConfigurator($this->collection, $name);
-    }
-}
diff --git a/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php b/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php
deleted file mode 100644
index 84899aa2e27fc5fa4649874e24f137198f9e2adb..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader\Configurator\Traits;
-
-use Symfony\Component\Routing\Loader\Configurator\CollectionConfigurator;
-use Symfony\Component\Routing\Loader\Configurator\RouteConfigurator;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\RouteCompiler;
-
-trait AddTrait
-{
-    /**
-     * @var RouteCollection
-     */
-    private $collection;
-
-    private $name = '';
-
-    private $prefixes;
-
-    /**
-     * Adds a route.
-     *
-     * @param string|array $path the path, or the localized paths of the route
-     */
-    final public function add(string $name, $path): RouteConfigurator
-    {
-        $paths = [];
-        $parentConfigurator = $this instanceof CollectionConfigurator ? $this : ($this instanceof RouteConfigurator ? $this->parentConfigurator : null);
-
-        if (\is_array($path)) {
-            if (null === $this->prefixes) {
-                $paths = $path;
-            } elseif ($missing = array_diff_key($this->prefixes, $path)) {
-                throw new \LogicException(sprintf('Route "%s" is missing routes for locale(s) "%s".', $name, implode('", "', array_keys($missing))));
-            } else {
-                foreach ($path as $locale => $localePath) {
-                    if (!isset($this->prefixes[$locale])) {
-                        throw new \LogicException(sprintf('Route "%s" with locale "%s" is missing a corresponding prefix in its parent collection.', $name, $locale));
-                    }
-
-                    $paths[$locale] = $this->prefixes[$locale].$localePath;
-                }
-            }
-        } elseif (null !== $this->prefixes) {
-            foreach ($this->prefixes as $locale => $prefix) {
-                $paths[$locale] = $prefix.$path;
-            }
-        } else {
-            $this->collection->add($this->name.$name, $route = $this->createRoute($path));
-
-            return new RouteConfigurator($this->collection, $route, $this->name, $parentConfigurator, $this->prefixes);
-        }
-
-        $routes = new RouteCollection();
-
-        foreach ($paths as $locale => $path) {
-            $routes->add($name.'.'.$locale, $route = $this->createRoute($path));
-            $this->collection->add($this->name.$name.'.'.$locale, $route);
-            $route->setDefault('_locale', $locale);
-            $route->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
-            $route->setDefault('_canonical_route', $this->name.$name);
-        }
-
-        return new RouteConfigurator($this->collection, $routes, $this->name, $parentConfigurator, $this->prefixes);
-    }
-
-    /**
-     * Adds a route.
-     *
-     * @param string|array $path the path, or the localized paths of the route
-     */
-    final public function __invoke(string $name, $path): RouteConfigurator
-    {
-        return $this->add($name, $path);
-    }
-
-    private function createRoute(string $path): Route
-    {
-        return new Route($path);
-    }
-}
diff --git a/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php b/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php
deleted file mode 100644
index 04009cd16d3a81e10c2ffd2b8b243de1e52839b0..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader\Configurator\Traits;
-
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-trait RouteTrait
-{
-    /**
-     * @var RouteCollection|Route
-     */
-    private $route;
-
-    /**
-     * Adds defaults.
-     *
-     * @return $this
-     */
-    final public function defaults(array $defaults): self
-    {
-        $this->route->addDefaults($defaults);
-
-        return $this;
-    }
-
-    /**
-     * Adds requirements.
-     *
-     * @return $this
-     */
-    final public function requirements(array $requirements): self
-    {
-        $this->route->addRequirements($requirements);
-
-        return $this;
-    }
-
-    /**
-     * Adds options.
-     *
-     * @return $this
-     */
-    final public function options(array $options): self
-    {
-        $this->route->addOptions($options);
-
-        return $this;
-    }
-
-    /**
-     * Whether paths should accept utf8 encoding.
-     *
-     * @return $this
-     */
-    final public function utf8(bool $utf8 = true): self
-    {
-        $this->route->addOptions(['utf8' => $utf8]);
-
-        return $this;
-    }
-
-    /**
-     * Sets the condition.
-     *
-     * @return $this
-     */
-    final public function condition(string $condition): self
-    {
-        $this->route->setCondition($condition);
-
-        return $this;
-    }
-
-    /**
-     * Sets the pattern for the host.
-     *
-     * @return $this
-     */
-    final public function host(string $pattern): self
-    {
-        $this->route->setHost($pattern);
-
-        return $this;
-    }
-
-    /**
-     * Sets the schemes (e.g. 'https') this route is restricted to.
-     * So an empty array means that any scheme is allowed.
-     *
-     * @param string[] $schemes
-     *
-     * @return $this
-     */
-    final public function schemes(array $schemes): self
-    {
-        $this->route->setSchemes($schemes);
-
-        return $this;
-    }
-
-    /**
-     * Sets the HTTP methods (e.g. 'POST') this route is restricted to.
-     * So an empty array means that any method is allowed.
-     *
-     * @param string[] $methods
-     *
-     * @return $this
-     */
-    final public function methods(array $methods): self
-    {
-        $this->route->setMethods($methods);
-
-        return $this;
-    }
-
-    /**
-     * Adds the "_controller" entry to defaults.
-     *
-     * @param callable|string $controller a callable or parseable pseudo-callable
-     *
-     * @return $this
-     */
-    final public function controller($controller): self
-    {
-        $this->route->addDefaults(['_controller' => $controller]);
-
-        return $this;
-    }
-
-    /**
-     * Adds the "_locale" entry to defaults.
-     *
-     * @return $this
-     */
-    final public function locale(string $locale): self
-    {
-        $this->route->addDefaults(['_locale' => $locale]);
-
-        return $this;
-    }
-
-    /**
-     * Adds the "_format" entry to defaults.
-     *
-     * @return $this
-     */
-    final public function format(string $format): self
-    {
-        $this->route->addDefaults(['_format' => $format]);
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/routing/Loader/ContainerLoader.php b/vendor/symfony/routing/Loader/ContainerLoader.php
deleted file mode 100644
index 948da7b101c0ad59add9d1ce716be6b66d06b338..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/ContainerLoader.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-use Psr\Container\ContainerInterface;
-
-/**
- * A route loader that executes a service from a PSR-11 container to load the routes.
- *
- * @author Ryan Weaver <ryan@knpuniversity.com>
- */
-class ContainerLoader extends ObjectLoader
-{
-    private $container;
-
-    public function __construct(ContainerInterface $container)
-    {
-        $this->container = $container;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return 'service' === $type;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getObject(string $id)
-    {
-        return $this->container->get($id);
-    }
-}
diff --git a/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php b/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php
deleted file mode 100644
index ab2be10269cdcfcd3dcd5f7ccf9c6a8162828ecb..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader\DependencyInjection;
-
-use Psr\Container\ContainerInterface;
-use Symfony\Component\Routing\Loader\ContainerLoader;
-use Symfony\Component\Routing\Loader\ObjectRouteLoader;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ServiceRouterLoader::class, ContainerLoader::class), \E_USER_DEPRECATED);
-
-/**
- * A route loader that executes a service to load the routes.
- *
- * @author Ryan Weaver <ryan@knpuniversity.com>
- *
- * @deprecated since Symfony 4.4, use Symfony\Component\Routing\Loader\ContainerLoader instead.
- */
-class ServiceRouterLoader extends ObjectRouteLoader
-{
-    /**
-     * @var ContainerInterface
-     */
-    private $container;
-
-    public function __construct(ContainerInterface $container)
-    {
-        $this->container = $container;
-    }
-
-    protected function getServiceObject($id)
-    {
-        return $this->container->get($id);
-    }
-}
diff --git a/vendor/symfony/routing/Loader/DirectoryLoader.php b/vendor/symfony/routing/Loader/DirectoryLoader.php
deleted file mode 100644
index 08e833e0a1ea5278e13e42d23fd673158f896b5f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/DirectoryLoader.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-use Symfony\Component\Config\Loader\FileLoader;
-use Symfony\Component\Config\Resource\DirectoryResource;
-use Symfony\Component\Routing\RouteCollection;
-
-class DirectoryLoader extends FileLoader
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function load($file, $type = null)
-    {
-        $path = $this->locator->locate($file);
-
-        $collection = new RouteCollection();
-        $collection->addResource(new DirectoryResource($path));
-
-        foreach (scandir($path) as $dir) {
-            if ('.' !== $dir[0]) {
-                $this->setCurrentDir($path);
-                $subPath = $path.'/'.$dir;
-                $subType = null;
-
-                if (is_dir($subPath)) {
-                    $subPath .= '/';
-                    $subType = 'directory';
-                }
-
-                $subCollection = $this->import($subPath, $subType, false, $path);
-                $collection->addCollection($subCollection);
-            }
-        }
-
-        return $collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        // only when type is forced to directory, not to conflict with AnnotationLoader
-
-        return 'directory' === $type;
-    }
-}
diff --git a/vendor/symfony/routing/Loader/GlobFileLoader.php b/vendor/symfony/routing/Loader/GlobFileLoader.php
deleted file mode 100644
index 03ee341b98250790edd80f2ac5bb3b415cf3a9dc..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/GlobFileLoader.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-use Symfony\Component\Config\Loader\FileLoader;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * GlobFileLoader loads files from a glob pattern.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class GlobFileLoader extends FileLoader
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function load($resource, $type = null)
-    {
-        $collection = new RouteCollection();
-
-        foreach ($this->glob($resource, false, $globResource) as $path => $info) {
-            $collection->addCollection($this->import($path));
-        }
-
-        $collection->addResource($globResource);
-
-        return $collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return 'glob' === $type;
-    }
-}
diff --git a/vendor/symfony/routing/Loader/ObjectLoader.php b/vendor/symfony/routing/Loader/ObjectLoader.php
deleted file mode 100644
index 344a79b70d6435e3d3ccb2677174f29dbd593888..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/ObjectLoader.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-use Symfony\Component\Config\Loader\Loader;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * A route loader that calls a method on an object to load the routes.
- *
- * @author Ryan Weaver <ryan@knpuniversity.com>
- */
-abstract class ObjectLoader extends Loader
-{
-    /**
-     * Returns the object that the method will be called on to load routes.
-     *
-     * For example, if your application uses a service container,
-     * the $id may be a service id.
-     *
-     * @return object
-     */
-    abstract protected function getObject(string $id);
-
-    /**
-     * Calls the object method that will load the routes.
-     *
-     * @param string      $resource object_id::method
-     * @param string|null $type     The resource type
-     *
-     * @return RouteCollection
-     */
-    public function load($resource, $type = null)
-    {
-        if (!preg_match('/^[^\:]+(?:::?(?:[^\:]+))?$/', $resource)) {
-            throw new \InvalidArgumentException(sprintf('Invalid resource "%s" passed to the %s route loader: use the format "object_id::method" or "object_id" if your object class has an "__invoke" method.', $resource, \is_string($type) ? '"'.$type.'"' : 'object'));
-        }
-
-        if (1 === substr_count($resource, ':')) {
-            $resource = str_replace(':', '::', $resource);
-            @trigger_error(sprintf('Referencing object route loaders with a single colon is deprecated since Symfony 4.1. Use %s instead.', $resource), \E_USER_DEPRECATED);
-        }
-
-        $parts = explode('::', $resource);
-        $method = $parts[1] ?? '__invoke';
-
-        $loaderObject = $this->getObject($parts[0]);
-
-        if (!\is_object($loaderObject)) {
-            throw new \TypeError(sprintf('"%s:getObject()" must return an object: "%s" returned.', static::class, \gettype($loaderObject)));
-        }
-
-        if (!\is_callable([$loaderObject, $method])) {
-            throw new \BadMethodCallException(sprintf('Method "%s" not found on "%s" when importing routing resource "%s".', $method, \get_class($loaderObject), $resource));
-        }
-
-        $routeCollection = $loaderObject->$method($this);
-
-        if (!$routeCollection instanceof RouteCollection) {
-            $type = \is_object($routeCollection) ? \get_class($routeCollection) : \gettype($routeCollection);
-
-            throw new \LogicException(sprintf('The "%s::%s()" method must return a RouteCollection: "%s" returned.', \get_class($loaderObject), $method, $type));
-        }
-
-        // make the object file tracked so that if it changes, the cache rebuilds
-        $this->addClassResource(new \ReflectionClass($loaderObject), $routeCollection);
-
-        return $routeCollection;
-    }
-
-    private function addClassResource(\ReflectionClass $class, RouteCollection $collection)
-    {
-        do {
-            if (is_file($class->getFileName())) {
-                $collection->addResource(new FileResource($class->getFileName()));
-            }
-        } while ($class = $class->getParentClass());
-    }
-}
diff --git a/vendor/symfony/routing/Loader/ObjectRouteLoader.php b/vendor/symfony/routing/Loader/ObjectRouteLoader.php
deleted file mode 100644
index 44f28fb8a43c243d8c059540533904413f7333e2..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/ObjectRouteLoader.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ObjectRouteLoader::class, ObjectLoader::class), \E_USER_DEPRECATED);
-
-/**
- * A route loader that calls a method on an object to load the routes.
- *
- * @author Ryan Weaver <ryan@knpuniversity.com>
- *
- * @deprecated since Symfony 4.4, use ObjectLoader instead.
- */
-abstract class ObjectRouteLoader extends ObjectLoader
-{
-    /**
-     * Returns the object that the method will be called on to load routes.
-     *
-     * For example, if your application uses a service container,
-     * the $id may be a service id.
-     *
-     * @param string $id
-     *
-     * @return object
-     */
-    abstract protected function getServiceObject($id);
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return 'service' === $type;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getObject(string $id)
-    {
-        return $this->getServiceObject($id);
-    }
-}
diff --git a/vendor/symfony/routing/Loader/PhpFileLoader.php b/vendor/symfony/routing/Loader/PhpFileLoader.php
deleted file mode 100644
index 054290bff73e0dd0dc02454053d49e53ec255b62..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/PhpFileLoader.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-use Symfony\Component\Config\Loader\FileLoader;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * PhpFileLoader loads routes from a PHP file.
- *
- * The file must return a RouteCollection instance.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class PhpFileLoader extends FileLoader
-{
-    /**
-     * Loads a PHP file.
-     *
-     * @param string      $file A PHP file path
-     * @param string|null $type The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    public function load($file, $type = null)
-    {
-        $path = $this->locator->locate($file);
-        $this->setCurrentDir(\dirname($path));
-
-        // the closure forbids access to the private scope in the included file
-        $loader = $this;
-        $load = \Closure::bind(static function ($file) use ($loader) {
-            return include $file;
-        }, null, ProtectedPhpFileLoader::class);
-
-        $result = $load($path);
-
-        if (\is_object($result) && \is_callable($result)) {
-            $collection = new RouteCollection();
-            $result(new RoutingConfigurator($collection, $this, $path, $file));
-        } else {
-            $collection = $result;
-        }
-
-        $collection->addResource(new FileResource($path));
-
-        return $collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return \is_string($resource) && 'php' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'php' === $type);
-    }
-}
-
-/**
- * @internal
- */
-final class ProtectedPhpFileLoader extends PhpFileLoader
-{
-}
diff --git a/vendor/symfony/routing/Loader/XmlFileLoader.php b/vendor/symfony/routing/Loader/XmlFileLoader.php
deleted file mode 100644
index e8732b3d6a12dd7bcd38b4e4bce0ac637205c76d..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/XmlFileLoader.php
+++ /dev/null
@@ -1,439 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-use Symfony\Component\Config\Loader\FileLoader;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Config\Util\XmlUtils;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\RouteCompiler;
-
-/**
- * XmlFileLoader loads XML routing files.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class XmlFileLoader extends FileLoader
-{
-    const NAMESPACE_URI = 'http://symfony.com/schema/routing';
-    const SCHEME_PATH = '/schema/routing/routing-1.0.xsd';
-
-    /**
-     * Loads an XML file.
-     *
-     * @param string      $file An XML file path
-     * @param string|null $type The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     *
-     * @throws \InvalidArgumentException when the file cannot be loaded or when the XML cannot be
-     *                                   parsed because it does not validate against the scheme
-     */
-    public function load($file, $type = null)
-    {
-        $path = $this->locator->locate($file);
-
-        $xml = $this->loadFile($path);
-
-        $collection = new RouteCollection();
-        $collection->addResource(new FileResource($path));
-
-        // process routes and imports
-        foreach ($xml->documentElement->childNodes as $node) {
-            if (!$node instanceof \DOMElement) {
-                continue;
-            }
-
-            $this->parseNode($collection, $node, $path, $file);
-        }
-
-        return $collection;
-    }
-
-    /**
-     * Parses a node from a loaded XML file.
-     *
-     * @param \DOMElement $node Element to parse
-     * @param string      $path Full path of the XML file being processed
-     * @param string      $file Loaded file name
-     *
-     * @throws \InvalidArgumentException When the XML is invalid
-     */
-    protected function parseNode(RouteCollection $collection, \DOMElement $node, $path, $file)
-    {
-        if (self::NAMESPACE_URI !== $node->namespaceURI) {
-            return;
-        }
-
-        switch ($node->localName) {
-            case 'route':
-                $this->parseRoute($collection, $node, $path);
-                break;
-            case 'import':
-                $this->parseImport($collection, $node, $path, $file);
-                break;
-            default:
-                throw new \InvalidArgumentException(sprintf('Unknown tag "%s" used in file "%s". Expected "route" or "import".', $node->localName, $path));
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return \is_string($resource) && 'xml' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'xml' === $type);
-    }
-
-    /**
-     * Parses a route and adds it to the RouteCollection.
-     *
-     * @param \DOMElement $node Element to parse that represents a Route
-     * @param string      $path Full path of the XML file being processed
-     *
-     * @throws \InvalidArgumentException When the XML is invalid
-     */
-    protected function parseRoute(RouteCollection $collection, \DOMElement $node, $path)
-    {
-        if ('' === $id = $node->getAttribute('id')) {
-            throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must have an "id" attribute.', $path));
-        }
-
-        $schemes = preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, \PREG_SPLIT_NO_EMPTY);
-        $methods = preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, \PREG_SPLIT_NO_EMPTY);
-
-        list($defaults, $requirements, $options, $condition, $paths) = $this->parseConfigs($node, $path);
-
-        if (!$paths && '' === $node->getAttribute('path')) {
-            throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must have a "path" attribute or <path> child nodes.', $path));
-        }
-
-        if ($paths && '' !== $node->getAttribute('path')) {
-            throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must not have both a "path" attribute and <path> child nodes.', $path));
-        }
-
-        if (!$paths) {
-            $route = new Route($node->getAttribute('path'), $defaults, $requirements, $options, $node->getAttribute('host'), $schemes, $methods, $condition);
-            $collection->add($id, $route);
-        } else {
-            foreach ($paths as $locale => $p) {
-                $defaults['_locale'] = $locale;
-                $defaults['_canonical_route'] = $id;
-                $requirements['_locale'] = preg_quote($locale, RouteCompiler::REGEX_DELIMITER);
-                $route = new Route($p, $defaults, $requirements, $options, $node->getAttribute('host'), $schemes, $methods, $condition);
-                $collection->add($id.'.'.$locale, $route);
-            }
-        }
-    }
-
-    /**
-     * Parses an import and adds the routes in the resource to the RouteCollection.
-     *
-     * @param \DOMElement $node Element to parse that represents a Route
-     * @param string      $path Full path of the XML file being processed
-     * @param string      $file Loaded file name
-     *
-     * @throws \InvalidArgumentException When the XML is invalid
-     */
-    protected function parseImport(RouteCollection $collection, \DOMElement $node, $path, $file)
-    {
-        if ('' === $resource = $node->getAttribute('resource')) {
-            throw new \InvalidArgumentException(sprintf('The <import> element in file "%s" must have a "resource" attribute.', $path));
-        }
-
-        $type = $node->getAttribute('type');
-        $prefix = $node->getAttribute('prefix');
-        $host = $node->hasAttribute('host') ? $node->getAttribute('host') : null;
-        $schemes = $node->hasAttribute('schemes') ? preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, \PREG_SPLIT_NO_EMPTY) : null;
-        $methods = $node->hasAttribute('methods') ? preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, \PREG_SPLIT_NO_EMPTY) : null;
-        $trailingSlashOnRoot = $node->hasAttribute('trailing-slash-on-root') ? XmlUtils::phpize($node->getAttribute('trailing-slash-on-root')) : true;
-
-        list($defaults, $requirements, $options, $condition, /* $paths */, $prefixes) = $this->parseConfigs($node, $path);
-
-        if ('' !== $prefix && $prefixes) {
-            throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must not have both a "prefix" attribute and <prefix> child nodes.', $path));
-        }
-
-        $exclude = [];
-        foreach ($node->childNodes as $child) {
-            if ($child instanceof \DOMElement && $child->localName === $exclude && self::NAMESPACE_URI === $child->namespaceURI) {
-                $exclude[] = $child->nodeValue;
-            }
-        }
-
-        if ($node->hasAttribute('exclude')) {
-            if ($exclude) {
-                throw new \InvalidArgumentException('You cannot use both the attribute "exclude" and <exclude> tags at the same time.');
-            }
-            $exclude = [$node->getAttribute('exclude')];
-        }
-
-        $this->setCurrentDir(\dirname($path));
-
-        /** @var RouteCollection[] $imported */
-        $imported = $this->import($resource, ('' !== $type ? $type : null), false, $file, $exclude) ?: [];
-
-        if (!\is_array($imported)) {
-            $imported = [$imported];
-        }
-
-        foreach ($imported as $subCollection) {
-            /* @var $subCollection RouteCollection */
-            if ('' !== $prefix || !$prefixes) {
-                $subCollection->addPrefix($prefix);
-                if (!$trailingSlashOnRoot) {
-                    $rootPath = (new Route(trim(trim($prefix), '/').'/'))->getPath();
-                    foreach ($subCollection->all() as $route) {
-                        if ($route->getPath() === $rootPath) {
-                            $route->setPath(rtrim($rootPath, '/'));
-                        }
-                    }
-                }
-            } else {
-                foreach ($prefixes as $locale => $localePrefix) {
-                    $prefixes[$locale] = trim(trim($localePrefix), '/');
-                }
-                foreach ($subCollection->all() as $name => $route) {
-                    if (null === $locale = $route->getDefault('_locale')) {
-                        $subCollection->remove($name);
-                        foreach ($prefixes as $locale => $localePrefix) {
-                            $localizedRoute = clone $route;
-                            $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
-                            $localizedRoute->setDefault('_locale', $locale);
-                            $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
-                            $localizedRoute->setDefault('_canonical_route', $name);
-                            $subCollection->add($name.'.'.$locale, $localizedRoute);
-                        }
-                    } elseif (!isset($prefixes[$locale])) {
-                        throw new \InvalidArgumentException(sprintf('Route "%s" with locale "%s" is missing a corresponding prefix when imported in "%s".', $name, $locale, $path));
-                    } else {
-                        $route->setPath($prefixes[$locale].(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
-                        $subCollection->add($name, $route);
-                    }
-                }
-            }
-
-            if (null !== $host) {
-                $subCollection->setHost($host);
-            }
-            if (null !== $condition) {
-                $subCollection->setCondition($condition);
-            }
-            if (null !== $schemes) {
-                $subCollection->setSchemes($schemes);
-            }
-            if (null !== $methods) {
-                $subCollection->setMethods($methods);
-            }
-            $subCollection->addDefaults($defaults);
-            $subCollection->addRequirements($requirements);
-            $subCollection->addOptions($options);
-
-            if ($namePrefix = $node->getAttribute('name-prefix')) {
-                $subCollection->addNamePrefix($namePrefix);
-            }
-
-            $collection->addCollection($subCollection);
-        }
-    }
-
-    /**
-     * Loads an XML file.
-     *
-     * @param string $file An XML file path
-     *
-     * @return \DOMDocument
-     *
-     * @throws \InvalidArgumentException When loading of XML file fails because of syntax errors
-     *                                   or when the XML structure is not as expected by the scheme -
-     *                                   see validate()
-     */
-    protected function loadFile($file)
-    {
-        return XmlUtils::loadFile($file, __DIR__.static::SCHEME_PATH);
-    }
-
-    /**
-     * Parses the config elements (default, requirement, option).
-     *
-     * @throws \InvalidArgumentException When the XML is invalid
-     */
-    private function parseConfigs(\DOMElement $node, string $path): array
-    {
-        $defaults = [];
-        $requirements = [];
-        $options = [];
-        $condition = null;
-        $prefixes = [];
-        $paths = [];
-
-        /** @var \DOMElement $n */
-        foreach ($node->getElementsByTagNameNS(self::NAMESPACE_URI, '*') as $n) {
-            if ($node !== $n->parentNode) {
-                continue;
-            }
-
-            switch ($n->localName) {
-                case 'path':
-                    $paths[$n->getAttribute('locale')] = trim($n->textContent);
-                    break;
-                case 'prefix':
-                    $prefixes[$n->getAttribute('locale')] = trim($n->textContent);
-                    break;
-                case 'default':
-                    if ($this->isElementValueNull($n)) {
-                        $defaults[$n->getAttribute('key')] = null;
-                    } else {
-                        $defaults[$n->getAttribute('key')] = $this->parseDefaultsConfig($n, $path);
-                    }
-
-                    break;
-                case 'requirement':
-                    $requirements[$n->getAttribute('key')] = trim($n->textContent);
-                    break;
-                case 'option':
-                    $options[$n->getAttribute('key')] = XmlUtils::phpize(trim($n->textContent));
-                    break;
-                case 'condition':
-                    $condition = trim($n->textContent);
-                    break;
-                default:
-                    throw new \InvalidArgumentException(sprintf('Unknown tag "%s" used in file "%s". Expected "default", "requirement", "option" or "condition".', $n->localName, $path));
-            }
-        }
-
-        if ($controller = $node->getAttribute('controller')) {
-            if (isset($defaults['_controller'])) {
-                $name = $node->hasAttribute('id') ? sprintf('"%s".', $node->getAttribute('id')) : sprintf('the "%s" tag.', $node->tagName);
-
-                throw new \InvalidArgumentException(sprintf('The routing file "%s" must not specify both the "controller" attribute and the defaults key "_controller" for ', $path).$name);
-            }
-
-            $defaults['_controller'] = $controller;
-        }
-        if ($node->hasAttribute('locale')) {
-            $defaults['_locale'] = $node->getAttribute('locale');
-        }
-        if ($node->hasAttribute('format')) {
-            $defaults['_format'] = $node->getAttribute('format');
-        }
-        if ($node->hasAttribute('utf8')) {
-            $options['utf8'] = XmlUtils::phpize($node->getAttribute('utf8'));
-        }
-
-        return [$defaults, $requirements, $options, $condition, $paths, $prefixes];
-    }
-
-    /**
-     * Parses the "default" elements.
-     *
-     * @return array|bool|float|int|string|null The parsed value of the "default" element
-     */
-    private function parseDefaultsConfig(\DOMElement $element, string $path)
-    {
-        if ($this->isElementValueNull($element)) {
-            return null;
-        }
-
-        // Check for existing element nodes in the default element. There can
-        // only be a single element inside a default element. So this element
-        // (if one was found) can safely be returned.
-        foreach ($element->childNodes as $child) {
-            if (!$child instanceof \DOMElement) {
-                continue;
-            }
-
-            if (self::NAMESPACE_URI !== $child->namespaceURI) {
-                continue;
-            }
-
-            return $this->parseDefaultNode($child, $path);
-        }
-
-        // If the default element doesn't contain a nested "bool", "int", "float",
-        // "string", "list", or "map" element, the element contents will be treated
-        // as the string value of the associated default option.
-        return trim($element->textContent);
-    }
-
-    /**
-     * Recursively parses the value of a "default" element.
-     *
-     * @return array|bool|float|int|string The parsed value
-     *
-     * @throws \InvalidArgumentException when the XML is invalid
-     */
-    private function parseDefaultNode(\DOMElement $node, string $path)
-    {
-        if ($this->isElementValueNull($node)) {
-            return null;
-        }
-
-        switch ($node->localName) {
-            case 'bool':
-                return 'true' === trim($node->nodeValue) || '1' === trim($node->nodeValue);
-            case 'int':
-                return (int) trim($node->nodeValue);
-            case 'float':
-                return (float) trim($node->nodeValue);
-            case 'string':
-                return trim($node->nodeValue);
-            case 'list':
-                $list = [];
-
-                foreach ($node->childNodes as $element) {
-                    if (!$element instanceof \DOMElement) {
-                        continue;
-                    }
-
-                    if (self::NAMESPACE_URI !== $element->namespaceURI) {
-                        continue;
-                    }
-
-                    $list[] = $this->parseDefaultNode($element, $path);
-                }
-
-                return $list;
-            case 'map':
-                $map = [];
-
-                foreach ($node->childNodes as $element) {
-                    if (!$element instanceof \DOMElement) {
-                        continue;
-                    }
-
-                    if (self::NAMESPACE_URI !== $element->namespaceURI) {
-                        continue;
-                    }
-
-                    $map[$element->getAttribute('key')] = $this->parseDefaultNode($element, $path);
-                }
-
-                return $map;
-            default:
-                throw new \InvalidArgumentException(sprintf('Unknown tag "%s" used in file "%s". Expected "bool", "int", "float", "string", "list", or "map".', $node->localName, $path));
-        }
-    }
-
-    private function isElementValueNull(\DOMElement $element): bool
-    {
-        $namespaceUri = 'http://www.w3.org/2001/XMLSchema-instance';
-
-        if (!$element->hasAttributeNS($namespaceUri, 'nil')) {
-            return false;
-        }
-
-        return 'true' === $element->getAttributeNS($namespaceUri, 'nil') || '1' === $element->getAttributeNS($namespaceUri, 'nil');
-    }
-}
diff --git a/vendor/symfony/routing/Loader/YamlFileLoader.php b/vendor/symfony/routing/Loader/YamlFileLoader.php
deleted file mode 100644
index c7aa00e17962985e7edc2317ae34fc530872f52d..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/YamlFileLoader.php
+++ /dev/null
@@ -1,288 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Loader;
-
-use Symfony\Component\Config\Loader\FileLoader;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\RouteCompiler;
-use Symfony\Component\Yaml\Exception\ParseException;
-use Symfony\Component\Yaml\Parser as YamlParser;
-use Symfony\Component\Yaml\Yaml;
-
-/**
- * YamlFileLoader loads Yaml routing files.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class YamlFileLoader extends FileLoader
-{
-    private static $availableKeys = [
-        'resource', 'type', 'prefix', 'path', 'host', 'schemes', 'methods', 'defaults', 'requirements', 'options', 'condition', 'controller', 'name_prefix', 'trailing_slash_on_root', 'locale', 'format', 'utf8', 'exclude',
-    ];
-    private $yamlParser;
-
-    /**
-     * Loads a Yaml file.
-     *
-     * @param string      $file A Yaml file path
-     * @param string|null $type The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     *
-     * @throws \InvalidArgumentException When a route can't be parsed because YAML is invalid
-     */
-    public function load($file, $type = null)
-    {
-        $path = $this->locator->locate($file);
-
-        if (!stream_is_local($path)) {
-            throw new \InvalidArgumentException(sprintf('This is not a local file "%s".', $path));
-        }
-
-        if (!file_exists($path)) {
-            throw new \InvalidArgumentException(sprintf('File "%s" not found.', $path));
-        }
-
-        if (null === $this->yamlParser) {
-            $this->yamlParser = new YamlParser();
-        }
-
-        try {
-            $parsedConfig = $this->yamlParser->parseFile($path, Yaml::PARSE_CONSTANT);
-        } catch (ParseException $e) {
-            throw new \InvalidArgumentException(sprintf('The file "%s" does not contain valid YAML: ', $path).$e->getMessage(), 0, $e);
-        }
-
-        $collection = new RouteCollection();
-        $collection->addResource(new FileResource($path));
-
-        // empty file
-        if (null === $parsedConfig) {
-            return $collection;
-        }
-
-        // not an array
-        if (!\is_array($parsedConfig)) {
-            throw new \InvalidArgumentException(sprintf('The file "%s" must contain a YAML array.', $path));
-        }
-
-        foreach ($parsedConfig as $name => $config) {
-            $this->validate($config, $name, $path);
-
-            if (isset($config['resource'])) {
-                $this->parseImport($collection, $config, $path, $file);
-            } else {
-                $this->parseRoute($collection, $name, $config, $path);
-            }
-        }
-
-        return $collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return \is_string($resource) && \in_array(pathinfo($resource, \PATHINFO_EXTENSION), ['yml', 'yaml'], true) && (!$type || 'yaml' === $type);
-    }
-
-    /**
-     * Parses a route and adds it to the RouteCollection.
-     *
-     * @param string $name   Route name
-     * @param array  $config Route definition
-     * @param string $path   Full path of the YAML file being processed
-     */
-    protected function parseRoute(RouteCollection $collection, $name, array $config, $path)
-    {
-        $defaults = isset($config['defaults']) ? $config['defaults'] : [];
-        $requirements = isset($config['requirements']) ? $config['requirements'] : [];
-        $options = isset($config['options']) ? $config['options'] : [];
-        $host = isset($config['host']) ? $config['host'] : '';
-        $schemes = isset($config['schemes']) ? $config['schemes'] : [];
-        $methods = isset($config['methods']) ? $config['methods'] : [];
-        $condition = isset($config['condition']) ? $config['condition'] : null;
-
-        foreach ($requirements as $placeholder => $requirement) {
-            if (\is_int($placeholder)) {
-                @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s"?', $placeholder, $requirement, $name, $path), \E_USER_DEPRECATED);
-            }
-        }
-
-        if (isset($config['controller'])) {
-            $defaults['_controller'] = $config['controller'];
-        }
-        if (isset($config['locale'])) {
-            $defaults['_locale'] = $config['locale'];
-        }
-        if (isset($config['format'])) {
-            $defaults['_format'] = $config['format'];
-        }
-        if (isset($config['utf8'])) {
-            $options['utf8'] = $config['utf8'];
-        }
-
-        if (\is_array($config['path'])) {
-            $route = new Route('', $defaults, $requirements, $options, $host, $schemes, $methods, $condition);
-
-            foreach ($config['path'] as $locale => $path) {
-                $localizedRoute = clone $route;
-                $localizedRoute->setDefault('_locale', $locale);
-                $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
-                $localizedRoute->setDefault('_canonical_route', $name);
-                $localizedRoute->setPath($path);
-                $collection->add($name.'.'.$locale, $localizedRoute);
-            }
-        } else {
-            $route = new Route($config['path'], $defaults, $requirements, $options, $host, $schemes, $methods, $condition);
-            $collection->add($name, $route);
-        }
-    }
-
-    /**
-     * Parses an import and adds the routes in the resource to the RouteCollection.
-     *
-     * @param array  $config Route definition
-     * @param string $path   Full path of the YAML file being processed
-     * @param string $file   Loaded file name
-     */
-    protected function parseImport(RouteCollection $collection, array $config, $path, $file)
-    {
-        $type = isset($config['type']) ? $config['type'] : null;
-        $prefix = isset($config['prefix']) ? $config['prefix'] : '';
-        $defaults = isset($config['defaults']) ? $config['defaults'] : [];
-        $requirements = isset($config['requirements']) ? $config['requirements'] : [];
-        $options = isset($config['options']) ? $config['options'] : [];
-        $host = isset($config['host']) ? $config['host'] : null;
-        $condition = isset($config['condition']) ? $config['condition'] : null;
-        $schemes = isset($config['schemes']) ? $config['schemes'] : null;
-        $methods = isset($config['methods']) ? $config['methods'] : null;
-        $trailingSlashOnRoot = $config['trailing_slash_on_root'] ?? true;
-        $exclude = $config['exclude'] ?? null;
-
-        if (isset($config['controller'])) {
-            $defaults['_controller'] = $config['controller'];
-        }
-        if (isset($config['locale'])) {
-            $defaults['_locale'] = $config['locale'];
-        }
-        if (isset($config['format'])) {
-            $defaults['_format'] = $config['format'];
-        }
-        if (isset($config['utf8'])) {
-            $options['utf8'] = $config['utf8'];
-        }
-
-        $this->setCurrentDir(\dirname($path));
-
-        $imported = $this->import($config['resource'], $type, false, $file, $exclude) ?: [];
-
-        if (!\is_array($imported)) {
-            $imported = [$imported];
-        }
-
-        foreach ($imported as $subCollection) {
-            /* @var $subCollection RouteCollection */
-            if (!\is_array($prefix)) {
-                $subCollection->addPrefix($prefix);
-                if (!$trailingSlashOnRoot) {
-                    $rootPath = (new Route(trim(trim($prefix), '/').'/'))->getPath();
-                    foreach ($subCollection->all() as $route) {
-                        if ($route->getPath() === $rootPath) {
-                            $route->setPath(rtrim($rootPath, '/'));
-                        }
-                    }
-                }
-            } else {
-                foreach ($prefix as $locale => $localePrefix) {
-                    $prefix[$locale] = trim(trim($localePrefix), '/');
-                }
-                foreach ($subCollection->all() as $name => $route) {
-                    if (null === $locale = $route->getDefault('_locale')) {
-                        $subCollection->remove($name);
-                        foreach ($prefix as $locale => $localePrefix) {
-                            $localizedRoute = clone $route;
-                            $localizedRoute->setDefault('_locale', $locale);
-                            $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
-                            $localizedRoute->setDefault('_canonical_route', $name);
-                            $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
-                            $subCollection->add($name.'.'.$locale, $localizedRoute);
-                        }
-                    } elseif (!isset($prefix[$locale])) {
-                        throw new \InvalidArgumentException(sprintf('Route "%s" with locale "%s" is missing a corresponding prefix when imported in "%s".', $name, $locale, $file));
-                    } else {
-                        $route->setPath($prefix[$locale].(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
-                        $subCollection->add($name, $route);
-                    }
-                }
-            }
-
-            if (null !== $host) {
-                $subCollection->setHost($host);
-            }
-            if (null !== $condition) {
-                $subCollection->setCondition($condition);
-            }
-            if (null !== $schemes) {
-                $subCollection->setSchemes($schemes);
-            }
-            if (null !== $methods) {
-                $subCollection->setMethods($methods);
-            }
-            $subCollection->addDefaults($defaults);
-            $subCollection->addRequirements($requirements);
-            $subCollection->addOptions($options);
-
-            if (isset($config['name_prefix'])) {
-                $subCollection->addNamePrefix($config['name_prefix']);
-            }
-
-            $collection->addCollection($subCollection);
-        }
-    }
-
-    /**
-     * Validates the route configuration.
-     *
-     * @param array  $config A resource config
-     * @param string $name   The config key
-     * @param string $path   The loaded file path
-     *
-     * @throws \InvalidArgumentException If one of the provided config keys is not supported,
-     *                                   something is missing or the combination is nonsense
-     */
-    protected function validate($config, $name, $path)
-    {
-        if (!\is_array($config)) {
-            throw new \InvalidArgumentException(sprintf('The definition of "%s" in "%s" must be a YAML array.', $name, $path));
-        }
-        if ($extraKeys = array_diff(array_keys($config), self::$availableKeys)) {
-            throw new \InvalidArgumentException(sprintf('The routing file "%s" contains unsupported keys for "%s": "%s". Expected one of: "%s".', $path, $name, implode('", "', $extraKeys), implode('", "', self::$availableKeys)));
-        }
-        if (isset($config['resource']) && isset($config['path'])) {
-            throw new \InvalidArgumentException(sprintf('The routing file "%s" must not specify both the "resource" key and the "path" key for "%s". Choose between an import and a route definition.', $path, $name));
-        }
-        if (!isset($config['resource']) && isset($config['type'])) {
-            throw new \InvalidArgumentException(sprintf('The "type" key for the route definition "%s" in "%s" is unsupported. It is only available for imports in combination with the "resource" key.', $name, $path));
-        }
-        if (!isset($config['resource']) && !isset($config['path'])) {
-            throw new \InvalidArgumentException(sprintf('You must define a "path" for the route "%s" in file "%s".', $name, $path));
-        }
-        if (isset($config['controller']) && isset($config['defaults']['_controller'])) {
-            throw new \InvalidArgumentException(sprintf('The routing file "%s" must not specify both the "controller" key and the defaults key "_controller" for "%s".', $path, $name));
-        }
-    }
-}
diff --git a/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd b/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd
deleted file mode 100644
index 8e61d03e9a980d6299b0f3ae7450a8e2a391ade5..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<xsd:schema xmlns="http://symfony.com/schema/routing"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    targetNamespace="http://symfony.com/schema/routing"
-    elementFormDefault="qualified">
-
-  <xsd:annotation>
-    <xsd:documentation><![CDATA[
-      Symfony XML Routing Schema, version 1.0
-      Authors: Fabien Potencier, Tobias Schultze
-
-      This scheme defines the elements and attributes that can be used to define
-      routes. A route maps an HTTP request to a set of configuration variables.
-    ]]></xsd:documentation>
-  </xsd:annotation>
-
-  <xsd:element name="routes" type="routes" />
-
-  <xsd:complexType name="routes">
-    <xsd:choice minOccurs="0" maxOccurs="unbounded">
-      <xsd:element name="import" type="import" />
-      <xsd:element name="route" type="route" />
-    </xsd:choice>
-  </xsd:complexType>
-
-  <xsd:complexType name="localized-path">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="locale" type="xsd:string" use="required" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:group name="configs">
-    <xsd:choice>
-      <xsd:element name="default" nillable="true" type="default" />
-      <xsd:element name="requirement" type="element" />
-      <xsd:element name="option" type="element" />
-      <xsd:element name="condition" type="xsd:string" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="route">
-    <xsd:sequence>
-      <xsd:group ref="configs" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="path" type="localized-path" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" use="required" />
-    <xsd:attribute name="path" type="xsd:string" />
-    <xsd:attribute name="host" type="xsd:string" />
-    <xsd:attribute name="schemes" type="xsd:string" />
-    <xsd:attribute name="methods" type="xsd:string" />
-    <xsd:attribute name="controller" type="xsd:string" />
-    <xsd:attribute name="locale" type="xsd:string" />
-    <xsd:attribute name="format" type="xsd:string" />
-    <xsd:attribute name="utf8" type="xsd:boolean" />
-  </xsd:complexType>
-
-  <xsd:complexType name="import">
-    <xsd:sequence maxOccurs="unbounded" minOccurs="0">
-      <xsd:group ref="configs" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="prefix" type="localized-path" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="exclude" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="resource" type="xsd:string" use="required" />
-    <xsd:attribute name="type" type="xsd:string" />
-    <xsd:attribute name="exclude" type="xsd:string" />
-    <xsd:attribute name="prefix" type="xsd:string" />
-    <xsd:attribute name="name-prefix" type="xsd:string" />
-    <xsd:attribute name="host" type="xsd:string" />
-    <xsd:attribute name="schemes" type="xsd:string" />
-    <xsd:attribute name="methods" type="xsd:string" />
-    <xsd:attribute name="controller" type="xsd:string" />
-    <xsd:attribute name="locale" type="xsd:string" />
-    <xsd:attribute name="format" type="xsd:string" />
-    <xsd:attribute name="trailing-slash-on-root" type="xsd:boolean" />
-    <xsd:attribute name="utf8" type="xsd:boolean" />
-  </xsd:complexType>
-
-  <xsd:complexType name="default" mixed="true">
-    <xsd:choice minOccurs="0" maxOccurs="1">
-      <xsd:element name="bool" type="xsd:boolean" />
-      <xsd:element name="int" type="xsd:integer" />
-      <xsd:element name="float" type="xsd:float" />
-      <xsd:element name="string" type="xsd:string" />
-      <xsd:element name="list" type="list" />
-      <xsd:element name="map" type="map" />
-    </xsd:choice>
-    <xsd:attribute name="key" type="xsd:string" use="required" />
-  </xsd:complexType>
-
-  <xsd:complexType name="element">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="key" type="xsd:string" use="required" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="list">
-    <xsd:choice minOccurs="0" maxOccurs="unbounded">
-      <xsd:element name="bool" nillable="true" type="xsd:boolean" />
-      <xsd:element name="int" nillable="true" type="xsd:integer" />
-      <xsd:element name="float" nillable="true" type="xsd:float" />
-      <xsd:element name="string" nillable="true" type="xsd:string" />
-      <xsd:element name="list" nillable="true" type="list" />
-      <xsd:element name="map" nillable="true" type="map" />
-    </xsd:choice>
-  </xsd:complexType>
-
-  <xsd:complexType name="map">
-      <xsd:choice minOccurs="0" maxOccurs="unbounded">
-          <xsd:element name="bool" nillable="true" type="map-bool-entry" />
-          <xsd:element name="int" nillable="true" type="map-int-entry" />
-          <xsd:element name="float" nillable="true" type="map-float-entry" />
-          <xsd:element name="string" nillable="true" type="map-string-entry" />
-          <xsd:element name="list" nillable="true" type="map-list-entry" />
-          <xsd:element name="map" nillable="true" type="map-map-entry" />
-      </xsd:choice>
-  </xsd:complexType>
-
-  <xsd:complexType name="map-bool-entry">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:boolean">
-        <xsd:attribute name="key" type="xsd:string" use="required" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="map-int-entry">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:integer">
-        <xsd:attribute name="key" type="xsd:string" use="required" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="map-float-entry">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:float">
-        <xsd:attribute name="key" type="xsd:string" use="required" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="map-string-entry">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="key" type="xsd:string" use="required" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="map-list-entry">
-    <xsd:complexContent>
-      <xsd:extension base="list">
-        <xsd:attribute name="key" type="xsd:string" use="required" />
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="map-map-entry">
-    <xsd:complexContent>
-      <xsd:extension base="map">
-        <xsd:attribute name="key" type="xsd:string" use="required" />
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-</xsd:schema>
diff --git a/vendor/symfony/routing/Matcher/CompiledUrlMatcher.php b/vendor/symfony/routing/Matcher/CompiledUrlMatcher.php
deleted file mode 100644
index e15cda77865853e360b6da35c8f7c85fde8ffd2f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/CompiledUrlMatcher.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher;
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * Matches URLs based on rules dumped by CompiledUrlMatcherDumper.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class CompiledUrlMatcher extends UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(array $compiledRoutes, RequestContext $context)
-    {
-        $this->context = $context;
-        list($this->matchHost, $this->staticRoutes, $this->regexpList, $this->dynamicRoutes, $this->checkCondition) = $compiledRoutes;
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php
deleted file mode 100644
index 73e2e1e0a06af7b5086793c13f506e797b347712..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php
+++ /dev/null
@@ -1,501 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher\Dumper;
-
-use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
-use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * CompiledUrlMatcherDumper creates PHP arrays to be used with CompiledUrlMatcher.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class CompiledUrlMatcherDumper extends MatcherDumper
-{
-    private $expressionLanguage;
-    private $signalingException;
-
-    /**
-     * @var ExpressionFunctionProviderInterface[]
-     */
-    private $expressionLanguageProviders = [];
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dump(array $options = [])
-    {
-        return <<<EOF
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-{$this->generateCompiledRoutes()}];
-
-EOF;
-    }
-
-    public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider)
-    {
-        $this->expressionLanguageProviders[] = $provider;
-    }
-
-    /**
-     * Generates the arrays for CompiledUrlMatcher's constructor.
-     */
-    public function getCompiledRoutes(bool $forDump = false): array
-    {
-        // Group hosts by same-suffix, re-order when possible
-        $matchHost = false;
-        $routes = new StaticPrefixCollection();
-        foreach ($this->getRoutes()->all() as $name => $route) {
-            if ($host = $route->getHost()) {
-                $matchHost = true;
-                $host = '/'.strtr(strrev($host), '}.{', '(/)');
-            }
-
-            $routes->addRoute($host ?: '/(.*)', [$name, $route]);
-        }
-
-        if ($matchHost) {
-            $compiledRoutes = [true];
-            $routes = $routes->populateCollection(new RouteCollection());
-        } else {
-            $compiledRoutes = [false];
-            $routes = $this->getRoutes();
-        }
-
-        list($staticRoutes, $dynamicRoutes) = $this->groupStaticRoutes($routes);
-
-        $conditions = [null];
-        $compiledRoutes[] = $this->compileStaticRoutes($staticRoutes, $conditions);
-        $chunkLimit = \count($dynamicRoutes);
-
-        while (true) {
-            try {
-                $this->signalingException = new \RuntimeException('Compilation failed: regular expression is too large');
-                $compiledRoutes = array_merge($compiledRoutes, $this->compileDynamicRoutes($dynamicRoutes, $matchHost, $chunkLimit, $conditions));
-
-                break;
-            } catch (\Exception $e) {
-                if (1 < $chunkLimit && $this->signalingException === $e) {
-                    $chunkLimit = 1 + ($chunkLimit >> 1);
-                    continue;
-                }
-                throw $e;
-            }
-        }
-
-        if ($forDump) {
-            $compiledRoutes[2] = $compiledRoutes[4];
-        }
-        unset($conditions[0]);
-
-        if ($conditions) {
-            foreach ($conditions as $expression => $condition) {
-                $conditions[$expression] = "case {$condition}: return {$expression};";
-            }
-
-            $checkConditionCode = <<<EOF
-    static function (\$condition, \$context, \$request) { // \$checkCondition
-        switch (\$condition) {
-{$this->indent(implode("\n", $conditions), 3)}
-        }
-    }
-EOF;
-            $compiledRoutes[4] = $forDump ? $checkConditionCode.",\n" : eval('return '.$checkConditionCode.';');
-        } else {
-            $compiledRoutes[4] = $forDump ? "    null, // \$checkCondition\n" : null;
-        }
-
-        return $compiledRoutes;
-    }
-
-    private function generateCompiledRoutes(): string
-    {
-        list($matchHost, $staticRoutes, $regexpCode, $dynamicRoutes, $checkConditionCode) = $this->getCompiledRoutes(true);
-
-        $code = self::export($matchHost).', // $matchHost'."\n";
-
-        $code .= '[ // $staticRoutes'."\n";
-        foreach ($staticRoutes as $path => $routes) {
-            $code .= sprintf("    %s => [\n", self::export($path));
-            foreach ($routes as $route) {
-                $code .= sprintf("        [%s, %s, %s, %s, %s, %s, %s],\n", ...array_map([__CLASS__, 'export'], $route));
-            }
-            $code .= "    ],\n";
-        }
-        $code .= "],\n";
-
-        $code .= sprintf("[ // \$regexpList%s\n],\n", $regexpCode);
-
-        $code .= '[ // $dynamicRoutes'."\n";
-        foreach ($dynamicRoutes as $path => $routes) {
-            $code .= sprintf("    %s => [\n", self::export($path));
-            foreach ($routes as $route) {
-                $code .= sprintf("        [%s, %s, %s, %s, %s, %s, %s],\n", ...array_map([__CLASS__, 'export'], $route));
-            }
-            $code .= "    ],\n";
-        }
-        $code .= "],\n";
-        $code = preg_replace('/ => \[\n        (\[.+?),\n    \],/', ' => [$1],', $code);
-
-        return $this->indent($code, 1).$checkConditionCode;
-    }
-
-    /**
-     * Splits static routes from dynamic routes, so that they can be matched first, using a simple switch.
-     */
-    private function groupStaticRoutes(RouteCollection $collection): array
-    {
-        $staticRoutes = $dynamicRegex = [];
-        $dynamicRoutes = new RouteCollection();
-
-        foreach ($collection->all() as $name => $route) {
-            $compiledRoute = $route->compile();
-            $staticPrefix = rtrim($compiledRoute->getStaticPrefix(), '/');
-            $hostRegex = $compiledRoute->getHostRegex();
-            $regex = $compiledRoute->getRegex();
-            if ($hasTrailingSlash = '/' !== $route->getPath()) {
-                $pos = strrpos($regex, '$');
-                $hasTrailingSlash = '/' === $regex[$pos - 1];
-                $regex = substr_replace($regex, '/?$', $pos - $hasTrailingSlash, 1 + $hasTrailingSlash);
-            }
-
-            if (!$compiledRoute->getPathVariables()) {
-                $host = !$compiledRoute->getHostVariables() ? $route->getHost() : '';
-                $url = $route->getPath();
-                if ($hasTrailingSlash) {
-                    $url = substr($url, 0, -1);
-                }
-                foreach ($dynamicRegex as list($hostRx, $rx, $prefix)) {
-                    if (('' === $prefix || 0 === strpos($url, $prefix)) && (preg_match($rx, $url) || preg_match($rx, $url.'/')) && (!$host || !$hostRx || preg_match($hostRx, $host))) {
-                        $dynamicRegex[] = [$hostRegex, $regex, $staticPrefix];
-                        $dynamicRoutes->add($name, $route);
-                        continue 2;
-                    }
-                }
-
-                $staticRoutes[$url][$name] = [$route, $hasTrailingSlash];
-            } else {
-                $dynamicRegex[] = [$hostRegex, $regex, $staticPrefix];
-                $dynamicRoutes->add($name, $route);
-            }
-        }
-
-        return [$staticRoutes, $dynamicRoutes];
-    }
-
-    /**
-     * Compiles static routes in a switch statement.
-     *
-     * Condition-less paths are put in a static array in the switch's default, with generic matching logic.
-     * Paths that can match two or more routes, or have user-specified conditions are put in separate switch's cases.
-     *
-     * @throws \LogicException
-     */
-    private function compileStaticRoutes(array $staticRoutes, array &$conditions): array
-    {
-        if (!$staticRoutes) {
-            return [];
-        }
-        $compiledRoutes = [];
-
-        foreach ($staticRoutes as $url => $routes) {
-            $compiledRoutes[$url] = [];
-            foreach ($routes as $name => list($route, $hasTrailingSlash)) {
-                $compiledRoutes[$url][] = $this->compileRoute($route, $name, (!$route->compile()->getHostVariables() ? $route->getHost() : $route->compile()->getHostRegex()) ?: null, $hasTrailingSlash, false, $conditions);
-            }
-        }
-
-        return $compiledRoutes;
-    }
-
-    /**
-     * Compiles a regular expression followed by a switch statement to match dynamic routes.
-     *
-     * The regular expression matches both the host and the pathinfo at the same time. For stellar performance,
-     * it is built as a tree of patterns, with re-ordering logic to group same-prefix routes together when possible.
-     *
-     * Patterns are named so that we know which one matched (https://pcre.org/current/doc/html/pcre2syntax.html#SEC23).
-     * This name is used to "switch" to the additional logic required to match the final route.
-     *
-     * Condition-less paths are put in a static array in the switch's default, with generic matching logic.
-     * Paths that can match two or more routes, or have user-specified conditions are put in separate switch's cases.
-     *
-     * Last but not least:
-     *  - Because it is not possibe to mix unicode/non-unicode patterns in a single regexp, several of them can be generated.
-     *  - The same regexp can be used several times when the logic in the switch rejects the match. When this happens, the
-     *    matching-but-failing subpattern is excluded by replacing its name by "(*F)", which forces a failure-to-match.
-     *    To ease this backlisting operation, the name of subpatterns is also the string offset where the replacement should occur.
-     */
-    private function compileDynamicRoutes(RouteCollection $collection, bool $matchHost, int $chunkLimit, array &$conditions): array
-    {
-        if (!$collection->all()) {
-            return [[], [], ''];
-        }
-        $regexpList = [];
-        $code = '';
-        $state = (object) [
-            'regexMark' => 0,
-            'regex' => [],
-            'routes' => [],
-            'mark' => 0,
-            'markTail' => 0,
-            'hostVars' => [],
-            'vars' => [],
-        ];
-        $state->getVars = static function ($m) use ($state) {
-            if ('_route' === $m[1]) {
-                return '?:';
-            }
-
-            $state->vars[] = $m[1];
-
-            return '';
-        };
-
-        $chunkSize = 0;
-        $prev = null;
-        $perModifiers = [];
-        foreach ($collection->all() as $name => $route) {
-            preg_match('#[a-zA-Z]*$#', $route->compile()->getRegex(), $rx);
-            if ($chunkLimit < ++$chunkSize || $prev !== $rx[0] && $route->compile()->getPathVariables()) {
-                $chunkSize = 1;
-                $routes = new RouteCollection();
-                $perModifiers[] = [$rx[0], $routes];
-                $prev = $rx[0];
-            }
-            $routes->add($name, $route);
-        }
-
-        foreach ($perModifiers as list($modifiers, $routes)) {
-            $prev = false;
-            $perHost = [];
-            foreach ($routes->all() as $name => $route) {
-                $regex = $route->compile()->getHostRegex();
-                if ($prev !== $regex) {
-                    $routes = new RouteCollection();
-                    $perHost[] = [$regex, $routes];
-                    $prev = $regex;
-                }
-                $routes->add($name, $route);
-            }
-            $prev = false;
-            $rx = '{^(?';
-            $code .= "\n    {$state->mark} => ".self::export($rx);
-            $startingMark = $state->mark;
-            $state->mark += \strlen($rx);
-            $state->regex = $rx;
-
-            foreach ($perHost as list($hostRegex, $routes)) {
-                if ($matchHost) {
-                    if ($hostRegex) {
-                        preg_match('#^.\^(.*)\$.[a-zA-Z]*$#', $hostRegex, $rx);
-                        $state->vars = [];
-                        $hostRegex = '(?i:'.preg_replace_callback('#\?P<([^>]++)>#', $state->getVars, $rx[1]).')\.';
-                        $state->hostVars = $state->vars;
-                    } else {
-                        $hostRegex = '(?:(?:[^./]*+\.)++)';
-                        $state->hostVars = [];
-                    }
-                    $state->mark += \strlen($rx = ($prev ? ')' : '')."|{$hostRegex}(?");
-                    $code .= "\n        .".self::export($rx);
-                    $state->regex .= $rx;
-                    $prev = true;
-                }
-
-                $tree = new StaticPrefixCollection();
-                foreach ($routes->all() as $name => $route) {
-                    preg_match('#^.\^(.*)\$.[a-zA-Z]*$#', $route->compile()->getRegex(), $rx);
-
-                    $state->vars = [];
-                    $regex = preg_replace_callback('#\?P<([^>]++)>#', $state->getVars, $rx[1]);
-                    if ($hasTrailingSlash = '/' !== $regex && '/' === $regex[-1]) {
-                        $regex = substr($regex, 0, -1);
-                    }
-                    $hasTrailingVar = (bool) preg_match('#\{\w+\}/?$#', $route->getPath());
-
-                    $tree->addRoute($regex, [$name, $regex, $state->vars, $route, $hasTrailingSlash, $hasTrailingVar]);
-                }
-
-                $code .= $this->compileStaticPrefixCollection($tree, $state, 0, $conditions);
-            }
-            if ($matchHost) {
-                $code .= "\n        .')'";
-                $state->regex .= ')';
-            }
-            $rx = ")/?$}{$modifiers}";
-            $code .= "\n        .'{$rx}',";
-            $state->regex .= $rx;
-            $state->markTail = 0;
-
-            // if the regex is too large, throw a signaling exception to recompute with smaller chunk size
-            set_error_handler(function ($type, $message) { throw false !== strpos($message, $this->signalingException->getMessage()) ? $this->signalingException : new \ErrorException($message); });
-            try {
-                preg_match($state->regex, '');
-            } finally {
-                restore_error_handler();
-            }
-
-            $regexpList[$startingMark] = $state->regex;
-        }
-
-        $state->routes[$state->mark][] = [null, null, null, null, false, false, 0];
-        unset($state->getVars);
-
-        return [$regexpList, $state->routes, $code];
-    }
-
-    /**
-     * Compiles a regexp tree of subpatterns that matches nested same-prefix routes.
-     *
-     * @param \stdClass $state A simple state object that keeps track of the progress of the compilation,
-     *                         and gathers the generated switch's "case" and "default" statements
-     */
-    private function compileStaticPrefixCollection(StaticPrefixCollection $tree, \stdClass $state, int $prefixLen, array &$conditions): string
-    {
-        $code = '';
-        $prevRegex = null;
-        $routes = $tree->getRoutes();
-
-        foreach ($routes as $i => $route) {
-            if ($route instanceof StaticPrefixCollection) {
-                $prevRegex = null;
-                $prefix = substr($route->getPrefix(), $prefixLen);
-                $state->mark += \strlen($rx = "|{$prefix}(?");
-                $code .= "\n            .".self::export($rx);
-                $state->regex .= $rx;
-                $code .= $this->indent($this->compileStaticPrefixCollection($route, $state, $prefixLen + \strlen($prefix), $conditions));
-                $code .= "\n            .')'";
-                $state->regex .= ')';
-                ++$state->markTail;
-                continue;
-            }
-
-            list($name, $regex, $vars, $route, $hasTrailingSlash, $hasTrailingVar) = $route;
-            $compiledRoute = $route->compile();
-            $vars = array_merge($state->hostVars, $vars);
-
-            if ($compiledRoute->getRegex() === $prevRegex) {
-                $state->routes[$state->mark][] = $this->compileRoute($route, $name, $vars, $hasTrailingSlash, $hasTrailingVar, $conditions);
-                continue;
-            }
-
-            $state->mark += 3 + $state->markTail + \strlen($regex) - $prefixLen;
-            $state->markTail = 2 + \strlen($state->mark);
-            $rx = sprintf('|%s(*:%s)', substr($regex, $prefixLen), $state->mark);
-            $code .= "\n            .".self::export($rx);
-            $state->regex .= $rx;
-
-            $prevRegex = $compiledRoute->getRegex();
-            $state->routes[$state->mark] = [$this->compileRoute($route, $name, $vars, $hasTrailingSlash, $hasTrailingVar, $conditions)];
-        }
-
-        return $code;
-    }
-
-    /**
-     * Compiles a single Route to PHP code used to match it against the path info.
-     */
-    private function compileRoute(Route $route, string $name, $vars, bool $hasTrailingSlash, bool $hasTrailingVar, array &$conditions): array
-    {
-        $defaults = $route->getDefaults();
-
-        if (isset($defaults['_canonical_route'])) {
-            $name = $defaults['_canonical_route'];
-            unset($defaults['_canonical_route']);
-        }
-
-        if ($condition = $route->getCondition()) {
-            $condition = $this->getExpressionLanguage()->compile($condition, ['context', 'request']);
-            $condition = $conditions[$condition] ?? $conditions[$condition] = (false !== strpos($condition, '$request') ? 1 : -1) * \count($conditions);
-        } else {
-            $condition = null;
-        }
-
-        return [
-            ['_route' => $name] + $defaults,
-            $vars,
-            array_flip($route->getMethods()) ?: null,
-            array_flip($route->getSchemes()) ?: null,
-            $hasTrailingSlash,
-            $hasTrailingVar,
-            $condition,
-        ];
-    }
-
-    private function getExpressionLanguage(): ExpressionLanguage
-    {
-        if (null === $this->expressionLanguage) {
-            if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
-                throw new \LogicException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.');
-            }
-            $this->expressionLanguage = new ExpressionLanguage(null, $this->expressionLanguageProviders);
-        }
-
-        return $this->expressionLanguage;
-    }
-
-    private function indent(string $code, int $level = 1): string
-    {
-        return preg_replace('/^./m', str_repeat('    ', $level).'$0', $code);
-    }
-
-    /**
-     * @internal
-     */
-    public static function export($value): string
-    {
-        if (null === $value) {
-            return 'null';
-        }
-        if (!\is_array($value)) {
-            if (\is_object($value)) {
-                throw new \InvalidArgumentException('Symfony\Component\Routing\Route cannot contain objects.');
-            }
-
-            return str_replace("\n", '\'."\n".\'', var_export($value, true));
-        }
-        if (!$value) {
-            return '[]';
-        }
-
-        $i = 0;
-        $export = '[';
-
-        foreach ($value as $k => $v) {
-            if ($i === $k) {
-                ++$i;
-            } else {
-                $export .= self::export($k).' => ';
-
-                if (\is_int($k) && $i < $k) {
-                    $i = 1 + $k;
-                }
-            }
-
-            $export .= self::export($v).', ';
-        }
-
-        return substr_replace($export, ']', -2);
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php
deleted file mode 100644
index 8ef76df8f8ccdfa0320221d33f6515a712508279..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher\Dumper;
-
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\Exception\NoConfigurationException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- *
- * @property RequestContext $context
- */
-trait CompiledUrlMatcherTrait
-{
-    private $matchHost = false;
-    private $staticRoutes = [];
-    private $regexpList = [];
-    private $dynamicRoutes = [];
-    private $checkCondition;
-
-    public function match($pathinfo): array
-    {
-        $allow = $allowSchemes = [];
-        if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) {
-            return $ret;
-        }
-        if ($allow) {
-            throw new MethodNotAllowedException(array_keys($allow));
-        }
-        if (!$this instanceof RedirectableUrlMatcherInterface) {
-            throw new ResourceNotFoundException(sprintf('No routes found for "%s".', $pathinfo));
-        }
-        if (!\in_array($this->context->getMethod(), ['HEAD', 'GET'], true)) {
-            // no-op
-        } elseif ($allowSchemes) {
-            redirect_scheme:
-            $scheme = $this->context->getScheme();
-            $this->context->setScheme(key($allowSchemes));
-            try {
-                if ($ret = $this->doMatch($pathinfo)) {
-                    return $this->redirect($pathinfo, $ret['_route'], $this->context->getScheme()) + $ret;
-                }
-            } finally {
-                $this->context->setScheme($scheme);
-            }
-        } elseif ('/' !== $trimmedPathinfo = rtrim($pathinfo, '/') ?: '/') {
-            $pathinfo = $trimmedPathinfo === $pathinfo ? $pathinfo.'/' : $trimmedPathinfo;
-            if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) {
-                return $this->redirect($pathinfo, $ret['_route']) + $ret;
-            }
-            if ($allowSchemes) {
-                goto redirect_scheme;
-            }
-        }
-
-        throw new ResourceNotFoundException(sprintf('No routes found for "%s".', $pathinfo));
-    }
-
-    private function doMatch(string $pathinfo, array &$allow = [], array &$allowSchemes = []): array
-    {
-        $allow = $allowSchemes = [];
-        $pathinfo = rawurldecode($pathinfo) ?: '/';
-        $trimmedPathinfo = rtrim($pathinfo, '/') ?: '/';
-        $context = $this->context;
-        $requestMethod = $canonicalMethod = $context->getMethod();
-
-        if ($this->matchHost) {
-            $host = strtolower($context->getHost());
-        }
-
-        if ('HEAD' === $requestMethod) {
-            $canonicalMethod = 'GET';
-        }
-        $supportsRedirections = 'GET' === $canonicalMethod && $this instanceof RedirectableUrlMatcherInterface;
-
-        foreach ($this->staticRoutes[$trimmedPathinfo] ?? [] as list($ret, $requiredHost, $requiredMethods, $requiredSchemes, $hasTrailingSlash, , $condition)) {
-            if ($condition && !($this->checkCondition)($condition, $context, 0 < $condition ? $request ?? $request = $this->request ?: $this->createRequest($pathinfo) : null)) {
-                continue;
-            }
-
-            if ($requiredHost) {
-                if ('#' !== $requiredHost[0] ? $requiredHost !== $host : !preg_match($requiredHost, $host, $hostMatches)) {
-                    continue;
-                }
-                if ('#' === $requiredHost[0] && $hostMatches) {
-                    $hostMatches['_route'] = $ret['_route'];
-                    $ret = $this->mergeDefaults($hostMatches, $ret);
-                }
-            }
-
-            if ('/' !== $pathinfo && $hasTrailingSlash === ($trimmedPathinfo === $pathinfo)) {
-                if ($supportsRedirections && (!$requiredMethods || isset($requiredMethods['GET']))) {
-                    return $allow = $allowSchemes = [];
-                }
-                continue;
-            }
-
-            $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]);
-            if ($hasRequiredScheme && $requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) {
-                $allow += $requiredMethods;
-                continue;
-            }
-
-            if (!$hasRequiredScheme) {
-                $allowSchemes += $requiredSchemes;
-                continue;
-            }
-
-            return $ret;
-        }
-
-        $matchedPathinfo = $this->matchHost ? $host.'.'.$pathinfo : $pathinfo;
-
-        foreach ($this->regexpList as $offset => $regex) {
-            while (preg_match($regex, $matchedPathinfo, $matches)) {
-                foreach ($this->dynamicRoutes[$m = (int) $matches['MARK']] as list($ret, $vars, $requiredMethods, $requiredSchemes, $hasTrailingSlash, $hasTrailingVar, $condition)) {
-                    if (null !== $condition) {
-                        if (0 === $condition) { // marks the last route in the regexp
-                            continue 3;
-                        }
-                        if (!($this->checkCondition)($condition, $context, 0 < $condition ? $request ?? $request = $this->request ?: $this->createRequest($pathinfo) : null)) {
-                            continue;
-                        }
-                    }
-
-                    $hasTrailingVar = $trimmedPathinfo !== $pathinfo && $hasTrailingVar;
-
-                    if ($hasTrailingVar && ($hasTrailingSlash || (null === $n = $matches[\count($vars)] ?? null) || '/' !== ($n[-1] ?? '/')) && preg_match($regex, $this->matchHost ? $host.'.'.$trimmedPathinfo : $trimmedPathinfo, $n) && $m === (int) $n['MARK']) {
-                        if ($hasTrailingSlash) {
-                            $matches = $n;
-                        } else {
-                            $hasTrailingVar = false;
-                        }
-                    }
-
-                    if ('/' !== $pathinfo && !$hasTrailingVar && $hasTrailingSlash === ($trimmedPathinfo === $pathinfo)) {
-                        if ($supportsRedirections && (!$requiredMethods || isset($requiredMethods['GET']))) {
-                            return $allow = $allowSchemes = [];
-                        }
-                        continue;
-                    }
-
-                    foreach ($vars as $i => $v) {
-                        if (isset($matches[1 + $i])) {
-                            $ret[$v] = $matches[1 + $i];
-                        }
-                    }
-
-                    if ($requiredSchemes && !isset($requiredSchemes[$context->getScheme()])) {
-                        $allowSchemes += $requiredSchemes;
-                        continue;
-                    }
-
-                    if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) {
-                        $allow += $requiredMethods;
-                        continue;
-                    }
-
-                    return $ret;
-                }
-
-                $regex = substr_replace($regex, 'F', $m - $offset, 1 + \strlen($m));
-                $offset += \strlen($m);
-            }
-        }
-
-        if ('/' === $pathinfo && !$allow && !$allowSchemes) {
-            throw new NoConfigurationException();
-        }
-
-        return [];
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/MatcherDumper.php b/vendor/symfony/routing/Matcher/Dumper/MatcherDumper.php
deleted file mode 100644
index ea51ab406304713bd4876b0e88fe365613d87289..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/Dumper/MatcherDumper.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher\Dumper;
-
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * MatcherDumper is the abstract class for all built-in matcher dumpers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class MatcherDumper implements MatcherDumperInterface
-{
-    private $routes;
-
-    public function __construct(RouteCollection $routes)
-    {
-        $this->routes = $routes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRoutes()
-    {
-        return $this->routes;
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php b/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php
deleted file mode 100644
index 34aad927413304d02887f4845d6d6985935248d6..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher\Dumper;
-
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * MatcherDumperInterface is the interface that all matcher dumper classes must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface MatcherDumperInterface
-{
-    /**
-     * Dumps a set of routes to a string representation of executable code
-     * that can then be used to match a request against these routes.
-     *
-     * @return string Executable code
-     */
-    public function dump(array $options = []);
-
-    /**
-     * Gets the routes to dump.
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    public function getRoutes();
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php b/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php
deleted file mode 100644
index 09404efaa391ad93aa975ae09fd9da4b24c19675..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher\Dumper;
-
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlMatcherDumper" instead.', PhpMatcherDumper::class), \E_USER_DEPRECATED);
-
-/**
- * PhpMatcherDumper creates a PHP class able to match URLs for a given set of routes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @deprecated since Symfony 4.3, use CompiledUrlMatcherDumper instead.
- */
-class PhpMatcherDumper extends CompiledUrlMatcherDumper
-{
-    /**
-     * Dumps a set of routes to a PHP class.
-     *
-     * Available options:
-     *
-     *  * class:      The class name
-     *  * base_class: The base class name
-     *
-     * @param array $options An array of options
-     *
-     * @return string A PHP class representing the matcher class
-     */
-    public function dump(array $options = [])
-    {
-        $options = array_replace([
-            'class' => 'ProjectUrlMatcher',
-            'base_class' => 'Symfony\\Component\\Routing\\Matcher\\UrlMatcher',
-        ], $options);
-
-        $code = parent::dump();
-        $code = preg_replace('#\n    ([^ ].*?) // \$(\w++)$#m', "\n    \$this->$2 = $1", $code);
-        $code = str_replace(",\n    $", ";\n    $", $code);
-        $code = substr($code, strpos($code, '$this') - 4, -5).";\n";
-        $code = preg_replace('/^    \$this->\w++ = (?:null|false|\[\n    \]);\n/m', '', $code);
-        $code = str_replace("\n    ", "\n        ", "\n".$code);
-
-        return <<<EOF
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class {$options['class']} extends {$options['base_class']}
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext \$context)
-    {
-        \$this->context = \$context;{$code}    }
-}
-
-EOF;
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php b/vendor/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php
deleted file mode 100644
index 65b6c0718b3161a8da7b637e4d12725452d0f3e8..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher\Dumper;
-
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * Prefix tree of routes preserving routes order.
- *
- * @author Frank de Jonge <info@frankdejonge.nl>
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-class StaticPrefixCollection
-{
-    private $prefix;
-
-    /**
-     * @var string[]
-     */
-    private $staticPrefixes = [];
-
-    /**
-     * @var string[]
-     */
-    private $prefixes = [];
-
-    /**
-     * @var array[]|self[]
-     */
-    private $items = [];
-
-    public function __construct(string $prefix = '/')
-    {
-        $this->prefix = $prefix;
-    }
-
-    public function getPrefix(): string
-    {
-        return $this->prefix;
-    }
-
-    /**
-     * @return array[]|self[]
-     */
-    public function getRoutes(): array
-    {
-        return $this->items;
-    }
-
-    /**
-     * Adds a route to a group.
-     *
-     * @param array|self $route
-     */
-    public function addRoute(string $prefix, $route)
-    {
-        list($prefix, $staticPrefix) = $this->getCommonPrefix($prefix, $prefix);
-
-        for ($i = \count($this->items) - 1; 0 <= $i; --$i) {
-            $item = $this->items[$i];
-
-            list($commonPrefix, $commonStaticPrefix) = $this->getCommonPrefix($prefix, $this->prefixes[$i]);
-
-            if ($this->prefix === $commonPrefix) {
-                // the new route and a previous one have no common prefix, let's see if they are exclusive to each others
-
-                if ($this->prefix !== $staticPrefix && $this->prefix !== $this->staticPrefixes[$i]) {
-                    // the new route and the previous one have exclusive static prefixes
-                    continue;
-                }
-
-                if ($this->prefix === $staticPrefix && $this->prefix === $this->staticPrefixes[$i]) {
-                    // the new route and the previous one have no static prefix
-                    break;
-                }
-
-                if ($this->prefixes[$i] !== $this->staticPrefixes[$i] && $this->prefix === $this->staticPrefixes[$i]) {
-                    // the previous route is non-static and has no static prefix
-                    break;
-                }
-
-                if ($prefix !== $staticPrefix && $this->prefix === $staticPrefix) {
-                    // the new route is non-static and has no static prefix
-                    break;
-                }
-
-                continue;
-            }
-
-            if ($item instanceof self && $this->prefixes[$i] === $commonPrefix) {
-                // the new route is a child of a previous one, let's nest it
-                $item->addRoute($prefix, $route);
-            } else {
-                // the new route and a previous one have a common prefix, let's merge them
-                $child = new self($commonPrefix);
-                list($child->prefixes[0], $child->staticPrefixes[0]) = $child->getCommonPrefix($this->prefixes[$i], $this->prefixes[$i]);
-                list($child->prefixes[1], $child->staticPrefixes[1]) = $child->getCommonPrefix($prefix, $prefix);
-                $child->items = [$this->items[$i], $route];
-
-                $this->staticPrefixes[$i] = $commonStaticPrefix;
-                $this->prefixes[$i] = $commonPrefix;
-                $this->items[$i] = $child;
-            }
-
-            return;
-        }
-
-        // No optimised case was found, in this case we simple add the route for possible
-        // grouping when new routes are added.
-        $this->staticPrefixes[] = $staticPrefix;
-        $this->prefixes[] = $prefix;
-        $this->items[] = $route;
-    }
-
-    /**
-     * Linearizes back a set of nested routes into a collection.
-     */
-    public function populateCollection(RouteCollection $routes): RouteCollection
-    {
-        foreach ($this->items as $route) {
-            if ($route instanceof self) {
-                $route->populateCollection($routes);
-            } else {
-                $routes->add(...$route);
-            }
-        }
-
-        return $routes;
-    }
-
-    /**
-     * Gets the full and static common prefixes between two route patterns.
-     *
-     * The static prefix stops at last at the first opening bracket.
-     */
-    private function getCommonPrefix(string $prefix, string $anotherPrefix): array
-    {
-        $baseLength = \strlen($this->prefix);
-        $end = min(\strlen($prefix), \strlen($anotherPrefix));
-        $staticLength = null;
-        set_error_handler([__CLASS__, 'handleError']);
-
-        for ($i = $baseLength; $i < $end && $prefix[$i] === $anotherPrefix[$i]; ++$i) {
-            if ('(' === $prefix[$i]) {
-                $staticLength = $staticLength ?? $i;
-                for ($j = 1 + $i, $n = 1; $j < $end && 0 < $n; ++$j) {
-                    if ($prefix[$j] !== $anotherPrefix[$j]) {
-                        break 2;
-                    }
-                    if ('(' === $prefix[$j]) {
-                        ++$n;
-                    } elseif (')' === $prefix[$j]) {
-                        --$n;
-                    } elseif ('\\' === $prefix[$j] && (++$j === $end || $prefix[$j] !== $anotherPrefix[$j])) {
-                        --$j;
-                        break;
-                    }
-                }
-                if (0 < $n) {
-                    break;
-                }
-                if (('?' === ($prefix[$j] ?? '') || '?' === ($anotherPrefix[$j] ?? '')) && ($prefix[$j] ?? '') !== ($anotherPrefix[$j] ?? '')) {
-                    break;
-                }
-                $subPattern = substr($prefix, $i, $j - $i);
-                if ($prefix !== $anotherPrefix && !preg_match('/^\(\[[^\]]++\]\+\+\)$/', $subPattern) && !preg_match('{(?<!'.$subPattern.')}', '')) {
-                    // sub-patterns of variable length are not considered as common prefixes because their greediness would break in-order matching
-                    break;
-                }
-                $i = $j - 1;
-            } elseif ('\\' === $prefix[$i] && (++$i === $end || $prefix[$i] !== $anotherPrefix[$i])) {
-                --$i;
-                break;
-            }
-        }
-        restore_error_handler();
-        if ($i < $end && 0b10 === (\ord($prefix[$i]) >> 6) && preg_match('//u', $prefix.' '.$anotherPrefix)) {
-            do {
-                // Prevent cutting in the middle of an UTF-8 characters
-                --$i;
-            } while (0b10 === (\ord($prefix[$i]) >> 6));
-        }
-
-        return [substr($prefix, 0, $i), substr($prefix, 0, $staticLength ?? $i)];
-    }
-
-    public static function handleError($type, $msg)
-    {
-        return false !== strpos($msg, 'Compilation failed: lookbehind assertion is not fixed length');
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php b/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php
deleted file mode 100644
index eb7bec7f344221bc6cd525f92b02ffb088ae746f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher;
-
-use Symfony\Component\Routing\Exception\ExceptionInterface;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class RedirectableUrlMatcher extends UrlMatcher implements RedirectableUrlMatcherInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function match($pathinfo)
-    {
-        try {
-            return parent::match($pathinfo);
-        } catch (ResourceNotFoundException $e) {
-            if (!\in_array($this->context->getMethod(), ['HEAD', 'GET'], true)) {
-                throw $e;
-            }
-
-            if ($this->allowSchemes) {
-                redirect_scheme:
-                $scheme = $this->context->getScheme();
-                $this->context->setScheme(current($this->allowSchemes));
-                try {
-                    $ret = parent::match($pathinfo);
-
-                    return $this->redirect($pathinfo, $ret['_route'] ?? null, $this->context->getScheme()) + $ret;
-                } catch (ExceptionInterface $e2) {
-                    throw $e;
-                } finally {
-                    $this->context->setScheme($scheme);
-                }
-            } elseif ('/' === $trimmedPathinfo = rtrim($pathinfo, '/') ?: '/') {
-                throw $e;
-            } else {
-                try {
-                    $pathinfo = $trimmedPathinfo === $pathinfo ? $pathinfo.'/' : $trimmedPathinfo;
-                    $ret = parent::match($pathinfo);
-
-                    return $this->redirect($pathinfo, $ret['_route'] ?? null) + $ret;
-                } catch (ExceptionInterface $e2) {
-                    if ($this->allowSchemes) {
-                        goto redirect_scheme;
-                    }
-                    throw $e;
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php b/vendor/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php
deleted file mode 100644
index 7c27bc879653d6478c355ac33e6ba2a16d09a113..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher;
-
-/**
- * RedirectableUrlMatcherInterface knows how to redirect the user.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface RedirectableUrlMatcherInterface
-{
-    /**
-     * Redirects the user to another URL.
-     *
-     * @param string      $path   The path info to redirect to
-     * @param string      $route  The route name that matched
-     * @param string|null $scheme The URL scheme (null to keep the current one)
-     *
-     * @return array An array of parameters
-     */
-    public function redirect($path, $route, $scheme = null);
-}
diff --git a/vendor/symfony/routing/Matcher/RequestMatcherInterface.php b/vendor/symfony/routing/Matcher/RequestMatcherInterface.php
deleted file mode 100644
index 0c193ff2d1f067bb6227460eaab8a9e9074b0207..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/RequestMatcherInterface.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\Exception\NoConfigurationException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-
-/**
- * RequestMatcherInterface is the interface that all request matcher classes must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface RequestMatcherInterface
-{
-    /**
-     * Tries to match a request with a set of routes.
-     *
-     * If the matcher can not find information, it must throw one of the exceptions documented
-     * below.
-     *
-     * @return array An array of parameters
-     *
-     * @throws NoConfigurationException  If no routing configuration could be found
-     * @throws ResourceNotFoundException If no matching resource could be found
-     * @throws MethodNotAllowedException If a matching resource was found but the request method is not allowed
-     */
-    public function matchRequest(Request $request);
-}
diff --git a/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php b/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php
deleted file mode 100644
index b687ffb4b1befa74c86533451455944ad4027dd6..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Exception\ExceptionInterface;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * TraceableUrlMatcher helps debug path info matching by tracing the match.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TraceableUrlMatcher extends UrlMatcher
-{
-    const ROUTE_DOES_NOT_MATCH = 0;
-    const ROUTE_ALMOST_MATCHES = 1;
-    const ROUTE_MATCHES = 2;
-
-    protected $traces;
-
-    public function getTraces($pathinfo)
-    {
-        $this->traces = [];
-
-        try {
-            $this->match($pathinfo);
-        } catch (ExceptionInterface $e) {
-        }
-
-        return $this->traces;
-    }
-
-    public function getTracesForRequest(Request $request)
-    {
-        $this->request = $request;
-        $traces = $this->getTraces($request->getPathInfo());
-        $this->request = null;
-
-        return $traces;
-    }
-
-    protected function matchCollection($pathinfo, RouteCollection $routes)
-    {
-        // HEAD and GET are equivalent as per RFC
-        if ('HEAD' === $method = $this->context->getMethod()) {
-            $method = 'GET';
-        }
-        $supportsTrailingSlash = 'GET' === $method && $this instanceof RedirectableUrlMatcherInterface;
-        $trimmedPathinfo = rtrim($pathinfo, '/') ?: '/';
-
-        foreach ($routes as $name => $route) {
-            $compiledRoute = $route->compile();
-            $staticPrefix = rtrim($compiledRoute->getStaticPrefix(), '/');
-            $requiredMethods = $route->getMethods();
-
-            // check the static prefix of the URL first. Only use the more expensive preg_match when it matches
-            if ('' !== $staticPrefix && 0 !== strpos($trimmedPathinfo, $staticPrefix)) {
-                $this->addTrace(sprintf('Path "%s" does not match', $route->getPath()), self::ROUTE_DOES_NOT_MATCH, $name, $route);
-                continue;
-            }
-            $regex = $compiledRoute->getRegex();
-
-            $pos = strrpos($regex, '$');
-            $hasTrailingSlash = '/' === $regex[$pos - 1];
-            $regex = substr_replace($regex, '/?$', $pos - $hasTrailingSlash, 1 + $hasTrailingSlash);
-
-            if (!preg_match($regex, $pathinfo, $matches)) {
-                // does it match without any requirements?
-                $r = new Route($route->getPath(), $route->getDefaults(), [], $route->getOptions());
-                $cr = $r->compile();
-                if (!preg_match($cr->getRegex(), $pathinfo)) {
-                    $this->addTrace(sprintf('Path "%s" does not match', $route->getPath()), self::ROUTE_DOES_NOT_MATCH, $name, $route);
-
-                    continue;
-                }
-
-                foreach ($route->getRequirements() as $n => $regex) {
-                    $r = new Route($route->getPath(), $route->getDefaults(), [$n => $regex], $route->getOptions());
-                    $cr = $r->compile();
-
-                    if (\in_array($n, $cr->getVariables()) && !preg_match($cr->getRegex(), $pathinfo)) {
-                        $this->addTrace(sprintf('Requirement for "%s" does not match (%s)', $n, $regex), self::ROUTE_ALMOST_MATCHES, $name, $route);
-
-                        continue 2;
-                    }
-                }
-
-                continue;
-            }
-
-            $hasTrailingVar = $trimmedPathinfo !== $pathinfo && preg_match('#\{\w+\}/?$#', $route->getPath());
-
-            if ($hasTrailingVar && ($hasTrailingSlash || (null === $m = $matches[\count($compiledRoute->getPathVariables())] ?? null) || '/' !== ($m[-1] ?? '/')) && preg_match($regex, $trimmedPathinfo, $m)) {
-                if ($hasTrailingSlash) {
-                    $matches = $m;
-                } else {
-                    $hasTrailingVar = false;
-                }
-            }
-
-            $hostMatches = [];
-            if ($compiledRoute->getHostRegex() && !preg_match($compiledRoute->getHostRegex(), $this->context->getHost(), $hostMatches)) {
-                $this->addTrace(sprintf('Host "%s" does not match the requirement ("%s")', $this->context->getHost(), $route->getHost()), self::ROUTE_ALMOST_MATCHES, $name, $route);
-                continue;
-            }
-
-            $status = $this->handleRouteRequirements($pathinfo, $name, $route);
-
-            if (self::REQUIREMENT_MISMATCH === $status[0]) {
-                $this->addTrace(sprintf('Condition "%s" does not evaluate to "true"', $route->getCondition()), self::ROUTE_ALMOST_MATCHES, $name, $route);
-                continue;
-            }
-
-            if ('/' !== $pathinfo && !$hasTrailingVar && $hasTrailingSlash === ($trimmedPathinfo === $pathinfo)) {
-                if ($supportsTrailingSlash && (!$requiredMethods || \in_array('GET', $requiredMethods))) {
-                    $this->addTrace('Route matches!', self::ROUTE_MATCHES, $name, $route);
-
-                    return $this->allow = $this->allowSchemes = [];
-                }
-                $this->addTrace(sprintf('Path "%s" does not match', $route->getPath()), self::ROUTE_DOES_NOT_MATCH, $name, $route);
-                continue;
-            }
-
-            if ($route->getSchemes() && !$route->hasScheme($this->context->getScheme())) {
-                $this->allowSchemes = array_merge($this->allowSchemes, $route->getSchemes());
-                $this->addTrace(sprintf('Scheme "%s" does not match any of the required schemes (%s)', $this->context->getScheme(), implode(', ', $route->getSchemes())), self::ROUTE_ALMOST_MATCHES, $name, $route);
-                continue;
-            }
-
-            if ($requiredMethods && !\in_array($method, $requiredMethods)) {
-                $this->allow = array_merge($this->allow, $requiredMethods);
-                $this->addTrace(sprintf('Method "%s" does not match any of the required methods (%s)', $this->context->getMethod(), implode(', ', $requiredMethods)), self::ROUTE_ALMOST_MATCHES, $name, $route);
-                continue;
-            }
-
-            $this->addTrace('Route matches!', self::ROUTE_MATCHES, $name, $route);
-
-            return $this->getAttributes($route, $name, array_replace($matches, $hostMatches, isset($status[1]) ? $status[1] : []));
-        }
-
-        return [];
-    }
-
-    private function addTrace(string $log, int $level = self::ROUTE_DOES_NOT_MATCH, string $name = null, Route $route = null)
-    {
-        $this->traces[] = [
-            'log' => $log,
-            'name' => $name,
-            'level' => $level,
-            'path' => null !== $route ? $route->getPath() : null,
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/UrlMatcher.php b/vendor/symfony/routing/Matcher/UrlMatcher.php
deleted file mode 100644
index b44dfa1b62cfe64c28430c97120162843f9fd8fd..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/UrlMatcher.php
+++ /dev/null
@@ -1,288 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher;
-
-use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
-use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\Exception\NoConfigurationException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * UrlMatcher matches URL based on a set of routes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
-{
-    const REQUIREMENT_MATCH = 0;
-    const REQUIREMENT_MISMATCH = 1;
-    const ROUTE_MATCH = 2;
-
-    /** @var RequestContext */
-    protected $context;
-
-    /**
-     * Collects HTTP methods that would be allowed for the request.
-     */
-    protected $allow = [];
-
-    /**
-     * Collects URI schemes that would be allowed for the request.
-     *
-     * @internal
-     */
-    protected $allowSchemes = [];
-
-    protected $routes;
-    protected $request;
-    protected $expressionLanguage;
-
-    /**
-     * @var ExpressionFunctionProviderInterface[]
-     */
-    protected $expressionLanguageProviders = [];
-
-    public function __construct(RouteCollection $routes, RequestContext $context)
-    {
-        $this->routes = $routes;
-        $this->context = $context;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContext(RequestContext $context)
-    {
-        $this->context = $context;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContext()
-    {
-        return $this->context;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function match($pathinfo)
-    {
-        $this->allow = $this->allowSchemes = [];
-
-        if ($ret = $this->matchCollection(rawurldecode($pathinfo) ?: '/', $this->routes)) {
-            return $ret;
-        }
-
-        if ('/' === $pathinfo && !$this->allow && !$this->allowSchemes) {
-            throw new NoConfigurationException();
-        }
-
-        throw 0 < \count($this->allow) ? new MethodNotAllowedException(array_unique($this->allow)) : new ResourceNotFoundException(sprintf('No routes found for "%s".', $pathinfo));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function matchRequest(Request $request)
-    {
-        $this->request = $request;
-
-        $ret = $this->match($request->getPathInfo());
-
-        $this->request = null;
-
-        return $ret;
-    }
-
-    public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider)
-    {
-        $this->expressionLanguageProviders[] = $provider;
-    }
-
-    /**
-     * Tries to match a URL with a set of routes.
-     *
-     * @param string $pathinfo The path info to be parsed
-     *
-     * @return array An array of parameters
-     *
-     * @throws NoConfigurationException  If no routing configuration could be found
-     * @throws ResourceNotFoundException If the resource could not be found
-     * @throws MethodNotAllowedException If the resource was found but the request method is not allowed
-     */
-    protected function matchCollection($pathinfo, RouteCollection $routes)
-    {
-        // HEAD and GET are equivalent as per RFC
-        if ('HEAD' === $method = $this->context->getMethod()) {
-            $method = 'GET';
-        }
-        $supportsTrailingSlash = 'GET' === $method && $this instanceof RedirectableUrlMatcherInterface;
-        $trimmedPathinfo = rtrim($pathinfo, '/') ?: '/';
-
-        foreach ($routes as $name => $route) {
-            $compiledRoute = $route->compile();
-            $staticPrefix = rtrim($compiledRoute->getStaticPrefix(), '/');
-            $requiredMethods = $route->getMethods();
-
-            // check the static prefix of the URL first. Only use the more expensive preg_match when it matches
-            if ('' !== $staticPrefix && 0 !== strpos($trimmedPathinfo, $staticPrefix)) {
-                continue;
-            }
-            $regex = $compiledRoute->getRegex();
-
-            $pos = strrpos($regex, '$');
-            $hasTrailingSlash = '/' === $regex[$pos - 1];
-            $regex = substr_replace($regex, '/?$', $pos - $hasTrailingSlash, 1 + $hasTrailingSlash);
-
-            if (!preg_match($regex, $pathinfo, $matches)) {
-                continue;
-            }
-
-            $hasTrailingVar = $trimmedPathinfo !== $pathinfo && preg_match('#\{\w+\}/?$#', $route->getPath());
-
-            if ($hasTrailingVar && ($hasTrailingSlash || (null === $m = $matches[\count($compiledRoute->getPathVariables())] ?? null) || '/' !== ($m[-1] ?? '/')) && preg_match($regex, $trimmedPathinfo, $m)) {
-                if ($hasTrailingSlash) {
-                    $matches = $m;
-                } else {
-                    $hasTrailingVar = false;
-                }
-            }
-
-            $hostMatches = [];
-            if ($compiledRoute->getHostRegex() && !preg_match($compiledRoute->getHostRegex(), $this->context->getHost(), $hostMatches)) {
-                continue;
-            }
-
-            $status = $this->handleRouteRequirements($pathinfo, $name, $route);
-
-            if (self::REQUIREMENT_MISMATCH === $status[0]) {
-                continue;
-            }
-
-            if ('/' !== $pathinfo && !$hasTrailingVar && $hasTrailingSlash === ($trimmedPathinfo === $pathinfo)) {
-                if ($supportsTrailingSlash && (!$requiredMethods || \in_array('GET', $requiredMethods))) {
-                    return $this->allow = $this->allowSchemes = [];
-                }
-                continue;
-            }
-
-            if ($route->getSchemes() && !$route->hasScheme($this->context->getScheme())) {
-                $this->allowSchemes = array_merge($this->allowSchemes, $route->getSchemes());
-                continue;
-            }
-
-            if ($requiredMethods && !\in_array($method, $requiredMethods)) {
-                $this->allow = array_merge($this->allow, $requiredMethods);
-                continue;
-            }
-
-            return $this->getAttributes($route, $name, array_replace($matches, $hostMatches, isset($status[1]) ? $status[1] : []));
-        }
-
-        return [];
-    }
-
-    /**
-     * Returns an array of values to use as request attributes.
-     *
-     * As this method requires the Route object, it is not available
-     * in matchers that do not have access to the matched Route instance
-     * (like the PHP and Apache matcher dumpers).
-     *
-     * @param string $name       The name of the route
-     * @param array  $attributes An array of attributes from the matcher
-     *
-     * @return array An array of parameters
-     */
-    protected function getAttributes(Route $route, $name, array $attributes)
-    {
-        $defaults = $route->getDefaults();
-        if (isset($defaults['_canonical_route'])) {
-            $name = $defaults['_canonical_route'];
-            unset($defaults['_canonical_route']);
-        }
-        $attributes['_route'] = $name;
-
-        return $this->mergeDefaults($attributes, $defaults);
-    }
-
-    /**
-     * Handles specific route requirements.
-     *
-     * @param string $pathinfo The path
-     * @param string $name     The route name
-     *
-     * @return array The first element represents the status, the second contains additional information
-     */
-    protected function handleRouteRequirements($pathinfo, $name, Route $route)
-    {
-        // expression condition
-        if ($route->getCondition() && !$this->getExpressionLanguage()->evaluate($route->getCondition(), ['context' => $this->context, 'request' => $this->request ?: $this->createRequest($pathinfo)])) {
-            return [self::REQUIREMENT_MISMATCH, null];
-        }
-
-        return [self::REQUIREMENT_MATCH, null];
-    }
-
-    /**
-     * Get merged default parameters.
-     *
-     * @param array $params   The parameters
-     * @param array $defaults The defaults
-     *
-     * @return array Merged default parameters
-     */
-    protected function mergeDefaults($params, $defaults)
-    {
-        foreach ($params as $key => $value) {
-            if (!\is_int($key) && null !== $value) {
-                $defaults[$key] = $value;
-            }
-        }
-
-        return $defaults;
-    }
-
-    protected function getExpressionLanguage()
-    {
-        if (null === $this->expressionLanguage) {
-            if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
-                throw new \LogicException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.');
-            }
-            $this->expressionLanguage = new ExpressionLanguage(null, $this->expressionLanguageProviders);
-        }
-
-        return $this->expressionLanguage;
-    }
-
-    /**
-     * @internal
-     */
-    protected function createRequest(string $pathinfo): ?Request
-    {
-        if (!class_exists('Symfony\Component\HttpFoundation\Request')) {
-            return null;
-        }
-
-        return Request::create($this->context->getScheme().'://'.$this->context->getHost().$this->context->getBaseUrl().$pathinfo, $this->context->getMethod(), $this->context->getParameters(), [], [], [
-            'SCRIPT_FILENAME' => $this->context->getBaseUrl(),
-            'SCRIPT_NAME' => $this->context->getBaseUrl(),
-        ]);
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/UrlMatcherInterface.php b/vendor/symfony/routing/Matcher/UrlMatcherInterface.php
deleted file mode 100644
index 17f1f97b3b4775d4f1f391edc6df0a3488d3ae35..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Matcher/UrlMatcherInterface.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher;
-
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\Exception\NoConfigurationException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\RequestContextAwareInterface;
-
-/**
- * UrlMatcherInterface is the interface that all URL matcher classes must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface UrlMatcherInterface extends RequestContextAwareInterface
-{
-    /**
-     * Tries to match a URL path with a set of routes.
-     *
-     * If the matcher can not find information, it must throw one of the exceptions documented
-     * below.
-     *
-     * @param string $pathinfo The path info to be parsed (raw format, i.e. not urldecoded)
-     *
-     * @return array An array of parameters
-     *
-     * @throws NoConfigurationException  If no routing configuration could be found
-     * @throws ResourceNotFoundException If the resource could not be found
-     * @throws MethodNotAllowedException If the resource was found but the request method is not allowed
-     */
-    public function match($pathinfo);
-}
diff --git a/vendor/symfony/routing/README.md b/vendor/symfony/routing/README.md
deleted file mode 100644
index 03b258ec8203bdc051699fcab60530420ca30de5..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-Routing Component
-=================
-
-The Routing component maps an HTTP request to a set of configuration variables.
-
-Getting Started
----------------
-
-```
-$ composer require symfony/routing
-```
-
-```php
-use App\Controller\BlogController;
-use Symfony\Component\Routing\Generator\UrlGenerator;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-$route = new Route('/blog/{slug}', ['_controller' => BlogController::class]);
-$routes = new RouteCollection();
-$routes->add('blog_show', $route);
-
-$context = new RequestContext();
-
-// Routing can match routes with incoming requests
-$matcher = new UrlMatcher($routes, $context);
-$parameters = $matcher->match('/blog/lorem-ipsum');
-// $parameters = [
-//     '_controller' => 'App\Controller\BlogController',
-//     'slug' => 'lorem-ipsum',
-//     '_route' => 'blog_show'
-// ]
-
-// Routing can also generate URLs for a given route
-$generator = new UrlGenerator($routes, $context);
-$url = $generator->generate('blog_show', [
-    'slug' => 'my-blog-post',
-]);
-// $url = '/blog/my-blog-post'
-```
-
-Resources
----------
-
-  * [Documentation](https://symfony.com/doc/current/routing.html)
-  * [Contributing](https://symfony.com/doc/current/contributing/index.html)
-  * [Report issues](https://github.com/symfony/symfony/issues) and
-    [send Pull Requests](https://github.com/symfony/symfony/pulls)
-    in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/vendor/symfony/routing/RequestContext.php b/vendor/symfony/routing/RequestContext.php
deleted file mode 100644
index 1d68b17e3932152ee7a565658b11277db5cb5ad2..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/RequestContext.php
+++ /dev/null
@@ -1,326 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Holds information about the current request.
- *
- * This class implements a fluent interface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class RequestContext
-{
-    private $baseUrl;
-    private $pathInfo;
-    private $method;
-    private $host;
-    private $scheme;
-    private $httpPort;
-    private $httpsPort;
-    private $queryString;
-    private $parameters = [];
-
-    public function __construct(string $baseUrl = '', string $method = 'GET', string $host = 'localhost', string $scheme = 'http', int $httpPort = 80, int $httpsPort = 443, string $path = '/', string $queryString = '')
-    {
-        $this->setBaseUrl($baseUrl);
-        $this->setMethod($method);
-        $this->setHost($host);
-        $this->setScheme($scheme);
-        $this->setHttpPort($httpPort);
-        $this->setHttpsPort($httpsPort);
-        $this->setPathInfo($path);
-        $this->setQueryString($queryString);
-    }
-
-    /**
-     * Updates the RequestContext information based on a HttpFoundation Request.
-     *
-     * @return $this
-     */
-    public function fromRequest(Request $request)
-    {
-        $this->setBaseUrl($request->getBaseUrl());
-        $this->setPathInfo($request->getPathInfo());
-        $this->setMethod($request->getMethod());
-        $this->setHost($request->getHost());
-        $this->setScheme($request->getScheme());
-        $this->setHttpPort($request->isSecure() || null === $request->getPort() ? $this->httpPort : $request->getPort());
-        $this->setHttpsPort($request->isSecure() && null !== $request->getPort() ? $request->getPort() : $this->httpsPort);
-        $this->setQueryString($request->server->get('QUERY_STRING', ''));
-
-        return $this;
-    }
-
-    /**
-     * Gets the base URL.
-     *
-     * @return string The base URL
-     */
-    public function getBaseUrl()
-    {
-        return $this->baseUrl;
-    }
-
-    /**
-     * Sets the base URL.
-     *
-     * @param string $baseUrl The base URL
-     *
-     * @return $this
-     */
-    public function setBaseUrl($baseUrl)
-    {
-        $this->baseUrl = $baseUrl;
-
-        return $this;
-    }
-
-    /**
-     * Gets the path info.
-     *
-     * @return string The path info
-     */
-    public function getPathInfo()
-    {
-        return $this->pathInfo;
-    }
-
-    /**
-     * Sets the path info.
-     *
-     * @param string $pathInfo The path info
-     *
-     * @return $this
-     */
-    public function setPathInfo($pathInfo)
-    {
-        $this->pathInfo = $pathInfo;
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTP method.
-     *
-     * The method is always an uppercased string.
-     *
-     * @return string The HTTP method
-     */
-    public function getMethod()
-    {
-        return $this->method;
-    }
-
-    /**
-     * Sets the HTTP method.
-     *
-     * @param string $method The HTTP method
-     *
-     * @return $this
-     */
-    public function setMethod($method)
-    {
-        $this->method = strtoupper($method);
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTP host.
-     *
-     * The host is always lowercased because it must be treated case-insensitive.
-     *
-     * @return string The HTTP host
-     */
-    public function getHost()
-    {
-        return $this->host;
-    }
-
-    /**
-     * Sets the HTTP host.
-     *
-     * @param string $host The HTTP host
-     *
-     * @return $this
-     */
-    public function setHost($host)
-    {
-        $this->host = strtolower($host);
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTP scheme.
-     *
-     * @return string The HTTP scheme
-     */
-    public function getScheme()
-    {
-        return $this->scheme;
-    }
-
-    /**
-     * Sets the HTTP scheme.
-     *
-     * @param string $scheme The HTTP scheme
-     *
-     * @return $this
-     */
-    public function setScheme($scheme)
-    {
-        $this->scheme = strtolower($scheme);
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTP port.
-     *
-     * @return int The HTTP port
-     */
-    public function getHttpPort()
-    {
-        return $this->httpPort;
-    }
-
-    /**
-     * Sets the HTTP port.
-     *
-     * @param int $httpPort The HTTP port
-     *
-     * @return $this
-     */
-    public function setHttpPort($httpPort)
-    {
-        $this->httpPort = (int) $httpPort;
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTPS port.
-     *
-     * @return int The HTTPS port
-     */
-    public function getHttpsPort()
-    {
-        return $this->httpsPort;
-    }
-
-    /**
-     * Sets the HTTPS port.
-     *
-     * @param int $httpsPort The HTTPS port
-     *
-     * @return $this
-     */
-    public function setHttpsPort($httpsPort)
-    {
-        $this->httpsPort = (int) $httpsPort;
-
-        return $this;
-    }
-
-    /**
-     * Gets the query string.
-     *
-     * @return string The query string without the "?"
-     */
-    public function getQueryString()
-    {
-        return $this->queryString;
-    }
-
-    /**
-     * Sets the query string.
-     *
-     * @param string $queryString The query string (after "?")
-     *
-     * @return $this
-     */
-    public function setQueryString($queryString)
-    {
-        // string cast to be fault-tolerant, accepting null
-        $this->queryString = (string) $queryString;
-
-        return $this;
-    }
-
-    /**
-     * Returns the parameters.
-     *
-     * @return array The parameters
-     */
-    public function getParameters()
-    {
-        return $this->parameters;
-    }
-
-    /**
-     * Sets the parameters.
-     *
-     * @param array $parameters The parameters
-     *
-     * @return $this
-     */
-    public function setParameters(array $parameters)
-    {
-        $this->parameters = $parameters;
-
-        return $this;
-    }
-
-    /**
-     * Gets a parameter value.
-     *
-     * @param string $name A parameter name
-     *
-     * @return mixed The parameter value or null if nonexistent
-     */
-    public function getParameter($name)
-    {
-        return isset($this->parameters[$name]) ? $this->parameters[$name] : null;
-    }
-
-    /**
-     * Checks if a parameter value is set for the given parameter.
-     *
-     * @param string $name A parameter name
-     *
-     * @return bool True if the parameter value is set, false otherwise
-     */
-    public function hasParameter($name)
-    {
-        return \array_key_exists($name, $this->parameters);
-    }
-
-    /**
-     * Sets a parameter value.
-     *
-     * @param string $name      A parameter name
-     * @param mixed  $parameter The parameter value
-     *
-     * @return $this
-     */
-    public function setParameter($name, $parameter)
-    {
-        $this->parameters[$name] = $parameter;
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/routing/RequestContextAwareInterface.php b/vendor/symfony/routing/RequestContextAwareInterface.php
deleted file mode 100644
index df5b9fcd4712e716b0da392b741db54c12906c57..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/RequestContextAwareInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing;
-
-interface RequestContextAwareInterface
-{
-    /**
-     * Sets the request context.
-     */
-    public function setContext(RequestContext $context);
-
-    /**
-     * Gets the request context.
-     *
-     * @return RequestContext The context
-     */
-    public function getContext();
-}
diff --git a/vendor/symfony/routing/Route.php b/vendor/symfony/routing/Route.php
deleted file mode 100644
index 7f20c794c9ee05703b3c1e78b8d195d87a95d7f5..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Route.php
+++ /dev/null
@@ -1,601 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing;
-
-/**
- * A Route describes a route and its parameters.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class Route implements \Serializable
-{
-    private $path = '/';
-    private $host = '';
-    private $schemes = [];
-    private $methods = [];
-    private $defaults = [];
-    private $requirements = [];
-    private $options = [];
-    private $condition = '';
-
-    /**
-     * @var CompiledRoute|null
-     */
-    private $compiled;
-
-    /**
-     * Constructor.
-     *
-     * Available options:
-     *
-     *  * compiler_class: A class name able to compile this route instance (RouteCompiler by default)
-     *  * utf8:           Whether UTF-8 matching is enforced ot not
-     *
-     * @param string          $path         The path pattern to match
-     * @param array           $defaults     An array of default parameter values
-     * @param array           $requirements An array of requirements for parameters (regexes)
-     * @param array           $options      An array of options
-     * @param string|null     $host         The host pattern to match
-     * @param string|string[] $schemes      A required URI scheme or an array of restricted schemes
-     * @param string|string[] $methods      A required HTTP method or an array of restricted methods
-     * @param string|null     $condition    A condition that should evaluate to true for the route to match
-     */
-    public function __construct(string $path, array $defaults = [], array $requirements = [], array $options = [], ?string $host = '', $schemes = [], $methods = [], ?string $condition = '')
-    {
-        $this->setPath($path);
-        $this->addDefaults($defaults);
-        $this->addRequirements($requirements);
-        $this->setOptions($options);
-        $this->setHost($host);
-        $this->setSchemes($schemes);
-        $this->setMethods($methods);
-        $this->setCondition($condition);
-    }
-
-    public function __serialize(): array
-    {
-        return [
-            'path' => $this->path,
-            'host' => $this->host,
-            'defaults' => $this->defaults,
-            'requirements' => $this->requirements,
-            'options' => $this->options,
-            'schemes' => $this->schemes,
-            'methods' => $this->methods,
-            'condition' => $this->condition,
-            'compiled' => $this->compiled,
-        ];
-    }
-
-    /**
-     * @return string
-     *
-     * @internal since Symfony 4.3
-     * @final since Symfony 4.3
-     */
-    public function serialize()
-    {
-        return serialize($this->__serialize());
-    }
-
-    public function __unserialize(array $data): void
-    {
-        $this->path = $data['path'];
-        $this->host = $data['host'];
-        $this->defaults = $data['defaults'];
-        $this->requirements = $data['requirements'];
-        $this->options = $data['options'];
-        $this->schemes = $data['schemes'];
-        $this->methods = $data['methods'];
-
-        if (isset($data['condition'])) {
-            $this->condition = $data['condition'];
-        }
-        if (isset($data['compiled'])) {
-            $this->compiled = $data['compiled'];
-        }
-    }
-
-    /**
-     * @internal since Symfony 4.3
-     * @final since Symfony 4.3
-     */
-    public function unserialize($serialized)
-    {
-        $this->__unserialize(unserialize($serialized));
-    }
-
-    /**
-     * Returns the pattern for the path.
-     *
-     * @return string The path pattern
-     */
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    /**
-     * Sets the pattern for the path.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string $pattern The path pattern
-     *
-     * @return $this
-     */
-    public function setPath($pattern)
-    {
-        if (false !== strpbrk($pattern, '?<')) {
-            $pattern = preg_replace_callback('#\{(!?\w++)(<.*?>)?(\?[^\}]*+)?\}#', function ($m) {
-                if (isset($m[3][0])) {
-                    $this->setDefault($m[1], '?' !== $m[3] ? substr($m[3], 1) : null);
-                }
-                if (isset($m[2][0])) {
-                    $this->setRequirement($m[1], substr($m[2], 1, -1));
-                }
-
-                return '{'.$m[1].'}';
-            }, $pattern);
-        }
-
-        // A pattern must start with a slash and must not have multiple slashes at the beginning because the
-        // generated path for this route would be confused with a network path, e.g. '//domain.com/path'.
-        $this->path = '/'.ltrim(trim($pattern), '/');
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the pattern for the host.
-     *
-     * @return string The host pattern
-     */
-    public function getHost()
-    {
-        return $this->host;
-    }
-
-    /**
-     * Sets the pattern for the host.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string $pattern The host pattern
-     *
-     * @return $this
-     */
-    public function setHost($pattern)
-    {
-        $this->host = (string) $pattern;
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the lowercased schemes this route is restricted to.
-     * So an empty array means that any scheme is allowed.
-     *
-     * @return string[] The schemes
-     */
-    public function getSchemes()
-    {
-        return $this->schemes;
-    }
-
-    /**
-     * Sets the schemes (e.g. 'https') this route is restricted to.
-     * So an empty array means that any scheme is allowed.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string|string[] $schemes The scheme or an array of schemes
-     *
-     * @return $this
-     */
-    public function setSchemes($schemes)
-    {
-        $this->schemes = array_map('strtolower', (array) $schemes);
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Checks if a scheme requirement has been set.
-     *
-     * @param string $scheme
-     *
-     * @return bool true if the scheme requirement exists, otherwise false
-     */
-    public function hasScheme($scheme)
-    {
-        return \in_array(strtolower($scheme), $this->schemes, true);
-    }
-
-    /**
-     * Returns the uppercased HTTP methods this route is restricted to.
-     * So an empty array means that any method is allowed.
-     *
-     * @return string[] The methods
-     */
-    public function getMethods()
-    {
-        return $this->methods;
-    }
-
-    /**
-     * Sets the HTTP methods (e.g. 'POST') this route is restricted to.
-     * So an empty array means that any method is allowed.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string|string[] $methods The method or an array of methods
-     *
-     * @return $this
-     */
-    public function setMethods($methods)
-    {
-        $this->methods = array_map('strtoupper', (array) $methods);
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the options.
-     *
-     * @return array The options
-     */
-    public function getOptions()
-    {
-        return $this->options;
-    }
-
-    /**
-     * Sets the options.
-     *
-     * This method implements a fluent interface.
-     *
-     * @return $this
-     */
-    public function setOptions(array $options)
-    {
-        $this->options = [
-            'compiler_class' => 'Symfony\\Component\\Routing\\RouteCompiler',
-        ];
-
-        return $this->addOptions($options);
-    }
-
-    /**
-     * Adds options.
-     *
-     * This method implements a fluent interface.
-     *
-     * @return $this
-     */
-    public function addOptions(array $options)
-    {
-        foreach ($options as $name => $option) {
-            $this->options[$name] = $option;
-        }
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Sets an option value.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string $name  An option name
-     * @param mixed  $value The option value
-     *
-     * @return $this
-     */
-    public function setOption($name, $value)
-    {
-        $this->options[$name] = $value;
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Get an option value.
-     *
-     * @param string $name An option name
-     *
-     * @return mixed The option value or null when not given
-     */
-    public function getOption($name)
-    {
-        return isset($this->options[$name]) ? $this->options[$name] : null;
-    }
-
-    /**
-     * Checks if an option has been set.
-     *
-     * @param string $name An option name
-     *
-     * @return bool true if the option is set, false otherwise
-     */
-    public function hasOption($name)
-    {
-        return \array_key_exists($name, $this->options);
-    }
-
-    /**
-     * Returns the defaults.
-     *
-     * @return array The defaults
-     */
-    public function getDefaults()
-    {
-        return $this->defaults;
-    }
-
-    /**
-     * Sets the defaults.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $defaults The defaults
-     *
-     * @return $this
-     */
-    public function setDefaults(array $defaults)
-    {
-        $this->defaults = [];
-
-        return $this->addDefaults($defaults);
-    }
-
-    /**
-     * Adds defaults.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $defaults The defaults
-     *
-     * @return $this
-     */
-    public function addDefaults(array $defaults)
-    {
-        if (isset($defaults['_locale']) && $this->isLocalized()) {
-            unset($defaults['_locale']);
-        }
-
-        foreach ($defaults as $name => $default) {
-            $this->defaults[$name] = $default;
-        }
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Gets a default value.
-     *
-     * @param string $name A variable name
-     *
-     * @return mixed The default value or null when not given
-     */
-    public function getDefault($name)
-    {
-        return isset($this->defaults[$name]) ? $this->defaults[$name] : null;
-    }
-
-    /**
-     * Checks if a default value is set for the given variable.
-     *
-     * @param string $name A variable name
-     *
-     * @return bool true if the default value is set, false otherwise
-     */
-    public function hasDefault($name)
-    {
-        return \array_key_exists($name, $this->defaults);
-    }
-
-    /**
-     * Sets a default value.
-     *
-     * @param string $name    A variable name
-     * @param mixed  $default The default value
-     *
-     * @return $this
-     */
-    public function setDefault($name, $default)
-    {
-        if ('_locale' === $name && $this->isLocalized()) {
-            return $this;
-        }
-
-        $this->defaults[$name] = $default;
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the requirements.
-     *
-     * @return array The requirements
-     */
-    public function getRequirements()
-    {
-        return $this->requirements;
-    }
-
-    /**
-     * Sets the requirements.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $requirements The requirements
-     *
-     * @return $this
-     */
-    public function setRequirements(array $requirements)
-    {
-        $this->requirements = [];
-
-        return $this->addRequirements($requirements);
-    }
-
-    /**
-     * Adds requirements.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $requirements The requirements
-     *
-     * @return $this
-     */
-    public function addRequirements(array $requirements)
-    {
-        if (isset($requirements['_locale']) && $this->isLocalized()) {
-            unset($requirements['_locale']);
-        }
-
-        foreach ($requirements as $key => $regex) {
-            $this->requirements[$key] = $this->sanitizeRequirement($key, $regex);
-        }
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the requirement for the given key.
-     *
-     * @param string $key The key
-     *
-     * @return string|null The regex or null when not given
-     */
-    public function getRequirement($key)
-    {
-        return isset($this->requirements[$key]) ? $this->requirements[$key] : null;
-    }
-
-    /**
-     * Checks if a requirement is set for the given key.
-     *
-     * @param string $key A variable name
-     *
-     * @return bool true if a requirement is specified, false otherwise
-     */
-    public function hasRequirement($key)
-    {
-        return \array_key_exists($key, $this->requirements);
-    }
-
-    /**
-     * Sets a requirement for the given key.
-     *
-     * @param string $key   The key
-     * @param string $regex The regex
-     *
-     * @return $this
-     */
-    public function setRequirement($key, $regex)
-    {
-        if ('_locale' === $key && $this->isLocalized()) {
-            return $this;
-        }
-
-        $this->requirements[$key] = $this->sanitizeRequirement($key, $regex);
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the condition.
-     *
-     * @return string The condition
-     */
-    public function getCondition()
-    {
-        return $this->condition;
-    }
-
-    /**
-     * Sets the condition.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string $condition The condition
-     *
-     * @return $this
-     */
-    public function setCondition($condition)
-    {
-        $this->condition = (string) $condition;
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Compiles the route.
-     *
-     * @return CompiledRoute A CompiledRoute instance
-     *
-     * @throws \LogicException If the Route cannot be compiled because the
-     *                         path or host pattern is invalid
-     *
-     * @see RouteCompiler which is responsible for the compilation process
-     */
-    public function compile()
-    {
-        if (null !== $this->compiled) {
-            return $this->compiled;
-        }
-
-        $class = $this->getOption('compiler_class');
-
-        return $this->compiled = $class::compile($this);
-    }
-
-    private function sanitizeRequirement(string $key, $regex)
-    {
-        if (!\is_string($regex)) {
-            throw new \InvalidArgumentException(sprintf('Routing requirement for "%s" must be a string.', $key));
-        }
-
-        if ('' !== $regex && '^' === $regex[0]) {
-            $regex = (string) substr($regex, 1); // returns false for a single character
-        }
-
-        if ('$' === substr($regex, -1)) {
-            $regex = substr($regex, 0, -1);
-        }
-
-        if ('' === $regex) {
-            throw new \InvalidArgumentException(sprintf('Routing requirement for "%s" cannot be empty.', $key));
-        }
-
-        return $regex;
-    }
-
-    private function isLocalized(): bool
-    {
-        return isset($this->defaults['_locale']) && isset($this->defaults['_canonical_route']) && ($this->requirements['_locale'] ?? null) === preg_quote($this->defaults['_locale'], RouteCompiler::REGEX_DELIMITER);
-    }
-}
diff --git a/vendor/symfony/routing/RouteCollection.php b/vendor/symfony/routing/RouteCollection.php
deleted file mode 100644
index 6537bbae92cc1867265fc0b6850356b1bd566ec8..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/RouteCollection.php
+++ /dev/null
@@ -1,298 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing;
-
-use Symfony\Component\Config\Resource\ResourceInterface;
-
-/**
- * A RouteCollection represents a set of Route instances.
- *
- * When adding a route at the end of the collection, an existing route
- * with the same name is removed first. So there can only be one route
- * with a given name.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class RouteCollection implements \IteratorAggregate, \Countable
-{
-    /**
-     * @var Route[]
-     */
-    private $routes = [];
-
-    /**
-     * @var array
-     */
-    private $resources = [];
-
-    public function __clone()
-    {
-        foreach ($this->routes as $name => $route) {
-            $this->routes[$name] = clone $route;
-        }
-    }
-
-    /**
-     * Gets the current RouteCollection as an Iterator that includes all routes.
-     *
-     * It implements \IteratorAggregate.
-     *
-     * @see all()
-     *
-     * @return \ArrayIterator|Route[] An \ArrayIterator object for iterating over routes
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->routes);
-    }
-
-    /**
-     * Gets the number of Routes in this collection.
-     *
-     * @return int The number of routes
-     */
-    public function count()
-    {
-        return \count($this->routes);
-    }
-
-    /**
-     * Adds a route.
-     *
-     * @param string $name The route name
-     */
-    public function add($name, Route $route)
-    {
-        unset($this->routes[$name]);
-
-        $this->routes[$name] = $route;
-    }
-
-    /**
-     * Returns all routes in this collection.
-     *
-     * @return Route[] An array of routes
-     */
-    public function all()
-    {
-        return $this->routes;
-    }
-
-    /**
-     * Gets a route by name.
-     *
-     * @param string $name The route name
-     *
-     * @return Route|null A Route instance or null when not found
-     */
-    public function get($name)
-    {
-        return isset($this->routes[$name]) ? $this->routes[$name] : null;
-    }
-
-    /**
-     * Removes a route or an array of routes by name from the collection.
-     *
-     * @param string|string[] $name The route name or an array of route names
-     */
-    public function remove($name)
-    {
-        foreach ((array) $name as $n) {
-            unset($this->routes[$n]);
-        }
-    }
-
-    /**
-     * Adds a route collection at the end of the current set by appending all
-     * routes of the added collection.
-     */
-    public function addCollection(self $collection)
-    {
-        // we need to remove all routes with the same names first because just replacing them
-        // would not place the new route at the end of the merged array
-        foreach ($collection->all() as $name => $route) {
-            unset($this->routes[$name]);
-            $this->routes[$name] = $route;
-        }
-
-        foreach ($collection->getResources() as $resource) {
-            $this->addResource($resource);
-        }
-    }
-
-    /**
-     * Adds a prefix to the path of all child routes.
-     *
-     * @param string $prefix       An optional prefix to add before each pattern of the route collection
-     * @param array  $defaults     An array of default values
-     * @param array  $requirements An array of requirements
-     */
-    public function addPrefix($prefix, array $defaults = [], array $requirements = [])
-    {
-        if (null === $prefix) {
-            @trigger_error(sprintf('Passing null as $prefix to %s is deprecated in Symfony 4.4 and will trigger a TypeError in 5.0.', __METHOD__), \E_USER_DEPRECATED);
-        }
-
-        $prefix = trim(trim($prefix), '/');
-
-        if ('' === $prefix) {
-            return;
-        }
-
-        foreach ($this->routes as $route) {
-            $route->setPath('/'.$prefix.$route->getPath());
-            $route->addDefaults($defaults);
-            $route->addRequirements($requirements);
-        }
-    }
-
-    /**
-     * Adds a prefix to the name of all the routes within in the collection.
-     */
-    public function addNamePrefix(string $prefix)
-    {
-        $prefixedRoutes = [];
-
-        foreach ($this->routes as $name => $route) {
-            $prefixedRoutes[$prefix.$name] = $route;
-            if (null !== $name = $route->getDefault('_canonical_route')) {
-                $route->setDefault('_canonical_route', $prefix.$name);
-            }
-        }
-
-        $this->routes = $prefixedRoutes;
-    }
-
-    /**
-     * Sets the host pattern on all routes.
-     *
-     * @param string $pattern      The pattern
-     * @param array  $defaults     An array of default values
-     * @param array  $requirements An array of requirements
-     */
-    public function setHost($pattern, array $defaults = [], array $requirements = [])
-    {
-        foreach ($this->routes as $route) {
-            $route->setHost($pattern);
-            $route->addDefaults($defaults);
-            $route->addRequirements($requirements);
-        }
-    }
-
-    /**
-     * Sets a condition on all routes.
-     *
-     * Existing conditions will be overridden.
-     *
-     * @param string $condition The condition
-     */
-    public function setCondition($condition)
-    {
-        foreach ($this->routes as $route) {
-            $route->setCondition($condition);
-        }
-    }
-
-    /**
-     * Adds defaults to all routes.
-     *
-     * An existing default value under the same name in a route will be overridden.
-     *
-     * @param array $defaults An array of default values
-     */
-    public function addDefaults(array $defaults)
-    {
-        if ($defaults) {
-            foreach ($this->routes as $route) {
-                $route->addDefaults($defaults);
-            }
-        }
-    }
-
-    /**
-     * Adds requirements to all routes.
-     *
-     * An existing requirement under the same name in a route will be overridden.
-     *
-     * @param array $requirements An array of requirements
-     */
-    public function addRequirements(array $requirements)
-    {
-        if ($requirements) {
-            foreach ($this->routes as $route) {
-                $route->addRequirements($requirements);
-            }
-        }
-    }
-
-    /**
-     * Adds options to all routes.
-     *
-     * An existing option value under the same name in a route will be overridden.
-     */
-    public function addOptions(array $options)
-    {
-        if ($options) {
-            foreach ($this->routes as $route) {
-                $route->addOptions($options);
-            }
-        }
-    }
-
-    /**
-     * Sets the schemes (e.g. 'https') all child routes are restricted to.
-     *
-     * @param string|string[] $schemes The scheme or an array of schemes
-     */
-    public function setSchemes($schemes)
-    {
-        foreach ($this->routes as $route) {
-            $route->setSchemes($schemes);
-        }
-    }
-
-    /**
-     * Sets the HTTP methods (e.g. 'POST') all child routes are restricted to.
-     *
-     * @param string|string[] $methods The method or an array of methods
-     */
-    public function setMethods($methods)
-    {
-        foreach ($this->routes as $route) {
-            $route->setMethods($methods);
-        }
-    }
-
-    /**
-     * Returns an array of resources loaded to build this collection.
-     *
-     * @return ResourceInterface[] An array of resources
-     */
-    public function getResources()
-    {
-        return array_values($this->resources);
-    }
-
-    /**
-     * Adds a resource for this collection. If the resource already exists
-     * it is not added.
-     */
-    public function addResource(ResourceInterface $resource)
-    {
-        $key = (string) $resource;
-
-        if (!isset($this->resources[$key])) {
-            $this->resources[$key] = $resource;
-        }
-    }
-}
diff --git a/vendor/symfony/routing/RouteCollectionBuilder.php b/vendor/symfony/routing/RouteCollectionBuilder.php
deleted file mode 100644
index 92cf7e7938843666aa76f8067469b7cdc942a3b6..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/RouteCollectionBuilder.php
+++ /dev/null
@@ -1,376 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing;
-
-use Symfony\Component\Config\Exception\LoaderLoadException;
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\Config\Resource\ResourceInterface;
-
-/**
- * Helps add and import routes into a RouteCollection.
- *
- * @author Ryan Weaver <ryan@knpuniversity.com>
- */
-class RouteCollectionBuilder
-{
-    /**
-     * @var Route[]|RouteCollectionBuilder[]
-     */
-    private $routes = [];
-
-    private $loader;
-    private $defaults = [];
-    private $prefix;
-    private $host;
-    private $condition;
-    private $requirements = [];
-    private $options = [];
-    private $schemes;
-    private $methods;
-    private $resources = [];
-
-    public function __construct(LoaderInterface $loader = null)
-    {
-        $this->loader = $loader;
-    }
-
-    /**
-     * Import an external routing resource and returns the RouteCollectionBuilder.
-     *
-     *     $routes->import('blog.yml', '/blog');
-     *
-     * @param mixed       $resource
-     * @param string|null $prefix
-     * @param string      $type
-     *
-     * @return self
-     *
-     * @throws LoaderLoadException
-     */
-    public function import($resource, $prefix = '/', $type = null)
-    {
-        /** @var RouteCollection[] $collections */
-        $collections = $this->load($resource, $type);
-
-        // create a builder from the RouteCollection
-        $builder = $this->createBuilder();
-
-        foreach ($collections as $collection) {
-            if (null === $collection) {
-                continue;
-            }
-
-            foreach ($collection->all() as $name => $route) {
-                $builder->addRoute($route, $name);
-            }
-
-            foreach ($collection->getResources() as $resource) {
-                $builder->addResource($resource);
-            }
-        }
-
-        // mount into this builder
-        $this->mount($prefix, $builder);
-
-        return $builder;
-    }
-
-    /**
-     * Adds a route and returns it for future modification.
-     *
-     * @param string      $path       The route path
-     * @param string      $controller The route's controller
-     * @param string|null $name       The name to give this route
-     *
-     * @return Route
-     */
-    public function add($path, $controller, $name = null)
-    {
-        $route = new Route($path);
-        $route->setDefault('_controller', $controller);
-        $this->addRoute($route, $name);
-
-        return $route;
-    }
-
-    /**
-     * Returns a RouteCollectionBuilder that can be configured and then added with mount().
-     *
-     * @return self
-     */
-    public function createBuilder()
-    {
-        return new self($this->loader);
-    }
-
-    /**
-     * Add a RouteCollectionBuilder.
-     *
-     * @param string $prefix
-     */
-    public function mount($prefix, self $builder)
-    {
-        $builder->prefix = trim(trim($prefix), '/');
-        $this->routes[] = $builder;
-    }
-
-    /**
-     * Adds a Route object to the builder.
-     *
-     * @param string|null $name
-     *
-     * @return $this
-     */
-    public function addRoute(Route $route, $name = null)
-    {
-        if (null === $name) {
-            // used as a flag to know which routes will need a name later
-            $name = '_unnamed_route_'.spl_object_hash($route);
-        }
-
-        $this->routes[$name] = $route;
-
-        return $this;
-    }
-
-    /**
-     * Sets the host on all embedded routes (unless already set).
-     *
-     * @param string $pattern
-     *
-     * @return $this
-     */
-    public function setHost($pattern)
-    {
-        $this->host = $pattern;
-
-        return $this;
-    }
-
-    /**
-     * Sets a condition on all embedded routes (unless already set).
-     *
-     * @param string $condition
-     *
-     * @return $this
-     */
-    public function setCondition($condition)
-    {
-        $this->condition = $condition;
-
-        return $this;
-    }
-
-    /**
-     * Sets a default value that will be added to all embedded routes (unless that
-     * default value is already set).
-     *
-     * @param string $key
-     * @param mixed  $value
-     *
-     * @return $this
-     */
-    public function setDefault($key, $value)
-    {
-        $this->defaults[$key] = $value;
-
-        return $this;
-    }
-
-    /**
-     * Sets a requirement that will be added to all embedded routes (unless that
-     * requirement is already set).
-     *
-     * @param string $key
-     * @param mixed  $regex
-     *
-     * @return $this
-     */
-    public function setRequirement($key, $regex)
-    {
-        $this->requirements[$key] = $regex;
-
-        return $this;
-    }
-
-    /**
-     * Sets an option that will be added to all embedded routes (unless that
-     * option is already set).
-     *
-     * @param string $key
-     * @param mixed  $value
-     *
-     * @return $this
-     */
-    public function setOption($key, $value)
-    {
-        $this->options[$key] = $value;
-
-        return $this;
-    }
-
-    /**
-     * Sets the schemes on all embedded routes (unless already set).
-     *
-     * @param array|string $schemes
-     *
-     * @return $this
-     */
-    public function setSchemes($schemes)
-    {
-        $this->schemes = $schemes;
-
-        return $this;
-    }
-
-    /**
-     * Sets the methods on all embedded routes (unless already set).
-     *
-     * @param array|string $methods
-     *
-     * @return $this
-     */
-    public function setMethods($methods)
-    {
-        $this->methods = $methods;
-
-        return $this;
-    }
-
-    /**
-     * Adds a resource for this collection.
-     *
-     * @return $this
-     */
-    private function addResource(ResourceInterface $resource): self
-    {
-        $this->resources[] = $resource;
-
-        return $this;
-    }
-
-    /**
-     * Creates the final RouteCollection and returns it.
-     *
-     * @return RouteCollection
-     */
-    public function build()
-    {
-        $routeCollection = new RouteCollection();
-
-        foreach ($this->routes as $name => $route) {
-            if ($route instanceof Route) {
-                $route->setDefaults(array_merge($this->defaults, $route->getDefaults()));
-                $route->setOptions(array_merge($this->options, $route->getOptions()));
-
-                foreach ($this->requirements as $key => $val) {
-                    if (!$route->hasRequirement($key)) {
-                        $route->setRequirement($key, $val);
-                    }
-                }
-
-                if (null !== $this->prefix) {
-                    $route->setPath('/'.$this->prefix.$route->getPath());
-                }
-
-                if (!$route->getHost()) {
-                    $route->setHost($this->host);
-                }
-
-                if (!$route->getCondition()) {
-                    $route->setCondition($this->condition);
-                }
-
-                if (!$route->getSchemes()) {
-                    $route->setSchemes($this->schemes);
-                }
-
-                if (!$route->getMethods()) {
-                    $route->setMethods($this->methods);
-                }
-
-                // auto-generate the route name if it's been marked
-                if ('_unnamed_route_' === substr($name, 0, 15)) {
-                    $name = $this->generateRouteName($route);
-                }
-
-                $routeCollection->add($name, $route);
-            } else {
-                /* @var self $route */
-                $subCollection = $route->build();
-                if (null !== $this->prefix) {
-                    $subCollection->addPrefix($this->prefix);
-                }
-
-                $routeCollection->addCollection($subCollection);
-            }
-        }
-
-        foreach ($this->resources as $resource) {
-            $routeCollection->addResource($resource);
-        }
-
-        return $routeCollection;
-    }
-
-    /**
-     * Generates a route name based on details of this route.
-     */
-    private function generateRouteName(Route $route): string
-    {
-        $methods = implode('_', $route->getMethods()).'_';
-
-        $routeName = $methods.$route->getPath();
-        $routeName = str_replace(['/', ':', '|', '-'], '_', $routeName);
-        $routeName = preg_replace('/[^a-z0-9A-Z_.]+/', '', $routeName);
-
-        // Collapse consecutive underscores down into a single underscore.
-        $routeName = preg_replace('/_+/', '_', $routeName);
-
-        return $routeName;
-    }
-
-    /**
-     * Finds a loader able to load an imported resource and loads it.
-     *
-     * @param mixed       $resource A resource
-     * @param string|null $type     The resource type or null if unknown
-     *
-     * @return RouteCollection[]
-     *
-     * @throws LoaderLoadException If no loader is found
-     */
-    private function load($resource, string $type = null): array
-    {
-        if (null === $this->loader) {
-            throw new \BadMethodCallException('Cannot import other routing resources: you must pass a LoaderInterface when constructing RouteCollectionBuilder.');
-        }
-
-        if ($this->loader->supports($resource, $type)) {
-            $collections = $this->loader->load($resource, $type);
-
-            return \is_array($collections) ? $collections : [$collections];
-        }
-
-        if (null === $resolver = $this->loader->getResolver()) {
-            throw new LoaderLoadException($resource, null, null, null, $type);
-        }
-
-        if (false === $loader = $resolver->resolve($resource, $type)) {
-            throw new LoaderLoadException($resource, null, null, null, $type);
-        }
-
-        $collections = $loader->load($resource, $type);
-
-        return \is_array($collections) ? $collections : [$collections];
-    }
-}
diff --git a/vendor/symfony/routing/RouteCompiler.php b/vendor/symfony/routing/RouteCompiler.php
deleted file mode 100644
index fa63df4884e74a6dcfdbc316f74fbd015ea38c2e..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/RouteCompiler.php
+++ /dev/null
@@ -1,345 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing;
-
-/**
- * RouteCompiler compiles Route instances to CompiledRoute instances.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class RouteCompiler implements RouteCompilerInterface
-{
-    const REGEX_DELIMITER = '#';
-
-    /**
-     * This string defines the characters that are automatically considered separators in front of
-     * optional placeholders (with default and no static text following). Such a single separator
-     * can be left out together with the optional placeholder from matching and generating URLs.
-     */
-    const SEPARATORS = '/,;.:-_~+*=@|';
-
-    /**
-     * The maximum supported length of a PCRE subpattern name
-     * http://pcre.org/current/doc/html/pcre2pattern.html#SEC16.
-     *
-     * @internal
-     */
-    const VARIABLE_MAXIMUM_LENGTH = 32;
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws \InvalidArgumentException if a path variable is named _fragment
-     * @throws \LogicException           if a variable is referenced more than once
-     * @throws \DomainException          if a variable name starts with a digit or if it is too long to be successfully used as
-     *                                   a PCRE subpattern
-     */
-    public static function compile(Route $route)
-    {
-        $hostVariables = [];
-        $variables = [];
-        $hostRegex = null;
-        $hostTokens = [];
-
-        if ('' !== $host = $route->getHost()) {
-            $result = self::compilePattern($route, $host, true);
-
-            $hostVariables = $result['variables'];
-            $variables = $hostVariables;
-
-            $hostTokens = $result['tokens'];
-            $hostRegex = $result['regex'];
-        }
-
-        $locale = $route->getDefault('_locale');
-        if (null !== $locale && null !== $route->getDefault('_canonical_route') && preg_quote($locale, self::REGEX_DELIMITER) === $route->getRequirement('_locale')) {
-            $requirements = $route->getRequirements();
-            unset($requirements['_locale']);
-            $route->setRequirements($requirements);
-            $route->setPath(str_replace('{_locale}', $locale, $route->getPath()));
-        }
-
-        $path = $route->getPath();
-
-        $result = self::compilePattern($route, $path, false);
-
-        $staticPrefix = $result['staticPrefix'];
-
-        $pathVariables = $result['variables'];
-
-        foreach ($pathVariables as $pathParam) {
-            if ('_fragment' === $pathParam) {
-                throw new \InvalidArgumentException(sprintf('Route pattern "%s" cannot contain "_fragment" as a path parameter.', $route->getPath()));
-            }
-        }
-
-        $variables = array_merge($variables, $pathVariables);
-
-        $tokens = $result['tokens'];
-        $regex = $result['regex'];
-
-        return new CompiledRoute(
-            $staticPrefix,
-            $regex,
-            $tokens,
-            $pathVariables,
-            $hostRegex,
-            $hostTokens,
-            $hostVariables,
-            array_unique($variables)
-        );
-    }
-
-    private static function compilePattern(Route $route, string $pattern, bool $isHost): array
-    {
-        $tokens = [];
-        $variables = [];
-        $matches = [];
-        $pos = 0;
-        $defaultSeparator = $isHost ? '.' : '/';
-        $useUtf8 = preg_match('//u', $pattern);
-        $needsUtf8 = $route->getOption('utf8');
-
-        if (!$needsUtf8 && $useUtf8 && preg_match('/[\x80-\xFF]/', $pattern)) {
-            throw new \LogicException(sprintf('Cannot use UTF-8 route patterns without setting the "utf8" option for route "%s".', $route->getPath()));
-        }
-        if (!$useUtf8 && $needsUtf8) {
-            throw new \LogicException(sprintf('Cannot mix UTF-8 requirements with non-UTF-8 pattern "%s".', $pattern));
-        }
-
-        // Match all variables enclosed in "{}" and iterate over them. But we only want to match the innermost variable
-        // in case of nested "{}", e.g. {foo{bar}}. This in ensured because \w does not match "{" or "}" itself.
-        preg_match_all('#\{(!)?(\w+)\}#', $pattern, $matches, \PREG_OFFSET_CAPTURE | \PREG_SET_ORDER);
-        foreach ($matches as $match) {
-            $important = $match[1][1] >= 0;
-            $varName = $match[2][0];
-            // get all static text preceding the current variable
-            $precedingText = substr($pattern, $pos, $match[0][1] - $pos);
-            $pos = $match[0][1] + \strlen($match[0][0]);
-
-            if (!\strlen($precedingText)) {
-                $precedingChar = '';
-            } elseif ($useUtf8) {
-                preg_match('/.$/u', $precedingText, $precedingChar);
-                $precedingChar = $precedingChar[0];
-            } else {
-                $precedingChar = substr($precedingText, -1);
-            }
-            $isSeparator = '' !== $precedingChar && false !== strpos(static::SEPARATORS, $precedingChar);
-
-            // A PCRE subpattern name must start with a non-digit. Also a PHP variable cannot start with a digit so the
-            // variable would not be usable as a Controller action argument.
-            if (preg_match('/^\d/', $varName)) {
-                throw new \DomainException(sprintf('Variable name "%s" cannot start with a digit in route pattern "%s". Please use a different name.', $varName, $pattern));
-            }
-            if (\in_array($varName, $variables)) {
-                throw new \LogicException(sprintf('Route pattern "%s" cannot reference variable name "%s" more than once.', $pattern, $varName));
-            }
-
-            if (\strlen($varName) > self::VARIABLE_MAXIMUM_LENGTH) {
-                throw new \DomainException(sprintf('Variable name "%s" cannot be longer than %d characters in route pattern "%s". Please use a shorter name.', $varName, self::VARIABLE_MAXIMUM_LENGTH, $pattern));
-            }
-
-            if ($isSeparator && $precedingText !== $precedingChar) {
-                $tokens[] = ['text', substr($precedingText, 0, -\strlen($precedingChar))];
-            } elseif (!$isSeparator && \strlen($precedingText) > 0) {
-                $tokens[] = ['text', $precedingText];
-            }
-
-            $regexp = $route->getRequirement($varName);
-            if (null === $regexp) {
-                $followingPattern = (string) substr($pattern, $pos);
-                // Find the next static character after the variable that functions as a separator. By default, this separator and '/'
-                // are disallowed for the variable. This default requirement makes sure that optional variables can be matched at all
-                // and that the generating-matching-combination of URLs unambiguous, i.e. the params used for generating the URL are
-                // the same that will be matched. Example: new Route('/{page}.{_format}', ['_format' => 'html'])
-                // If {page} would also match the separating dot, {_format} would never match as {page} will eagerly consume everything.
-                // Also even if {_format} was not optional the requirement prevents that {page} matches something that was originally
-                // part of {_format} when generating the URL, e.g. _format = 'mobile.html'.
-                $nextSeparator = self::findNextSeparator($followingPattern, $useUtf8);
-                $regexp = sprintf(
-                    '[^%s%s]+',
-                    preg_quote($defaultSeparator, self::REGEX_DELIMITER),
-                    $defaultSeparator !== $nextSeparator && '' !== $nextSeparator ? preg_quote($nextSeparator, self::REGEX_DELIMITER) : ''
-                );
-                if (('' !== $nextSeparator && !preg_match('#^\{\w+\}#', $followingPattern)) || '' === $followingPattern) {
-                    // When we have a separator, which is disallowed for the variable, we can optimize the regex with a possessive
-                    // quantifier. This prevents useless backtracking of PCRE and improves performance by 20% for matching those patterns.
-                    // Given the above example, there is no point in backtracking into {page} (that forbids the dot) when a dot must follow
-                    // after it. This optimization cannot be applied when the next char is no real separator or when the next variable is
-                    // directly adjacent, e.g. '/{x}{y}'.
-                    $regexp .= '+';
-                }
-            } else {
-                if (!preg_match('//u', $regexp)) {
-                    $useUtf8 = false;
-                } elseif (!$needsUtf8 && preg_match('/[\x80-\xFF]|(?<!\\\\)\\\\(?:\\\\\\\\)*+(?-i:X|[pP][\{CLMNPSZ]|x\{[A-Fa-f0-9]{3})/', $regexp)) {
-                    throw new \LogicException(sprintf('Cannot use UTF-8 route requirements without setting the "utf8" option for variable "%s" in pattern "%s".', $varName, $pattern));
-                }
-                if (!$useUtf8 && $needsUtf8) {
-                    throw new \LogicException(sprintf('Cannot mix UTF-8 requirement with non-UTF-8 charset for variable "%s" in pattern "%s".', $varName, $pattern));
-                }
-                $regexp = self::transformCapturingGroupsToNonCapturings($regexp);
-            }
-
-            if ($important) {
-                $token = ['variable', $isSeparator ? $precedingChar : '', $regexp, $varName, false, true];
-            } else {
-                $token = ['variable', $isSeparator ? $precedingChar : '', $regexp, $varName];
-            }
-
-            $tokens[] = $token;
-            $variables[] = $varName;
-        }
-
-        if ($pos < \strlen($pattern)) {
-            $tokens[] = ['text', substr($pattern, $pos)];
-        }
-
-        // find the first optional token
-        $firstOptional = \PHP_INT_MAX;
-        if (!$isHost) {
-            for ($i = \count($tokens) - 1; $i >= 0; --$i) {
-                $token = $tokens[$i];
-                // variable is optional when it is not important and has a default value
-                if ('variable' === $token[0] && !($token[5] ?? false) && $route->hasDefault($token[3])) {
-                    $firstOptional = $i;
-                } else {
-                    break;
-                }
-            }
-        }
-
-        // compute the matching regexp
-        $regexp = '';
-        for ($i = 0, $nbToken = \count($tokens); $i < $nbToken; ++$i) {
-            $regexp .= self::computeRegexp($tokens, $i, $firstOptional);
-        }
-        $regexp = self::REGEX_DELIMITER.'^'.$regexp.'$'.self::REGEX_DELIMITER.'sD'.($isHost ? 'i' : '');
-
-        // enable Utf8 matching if really required
-        if ($needsUtf8) {
-            $regexp .= 'u';
-            for ($i = 0, $nbToken = \count($tokens); $i < $nbToken; ++$i) {
-                if ('variable' === $tokens[$i][0]) {
-                    $tokens[$i][4] = true;
-                }
-            }
-        }
-
-        return [
-            'staticPrefix' => self::determineStaticPrefix($route, $tokens),
-            'regex' => $regexp,
-            'tokens' => array_reverse($tokens),
-            'variables' => $variables,
-        ];
-    }
-
-    /**
-     * Determines the longest static prefix possible for a route.
-     */
-    private static function determineStaticPrefix(Route $route, array $tokens): string
-    {
-        if ('text' !== $tokens[0][0]) {
-            return ($route->hasDefault($tokens[0][3]) || '/' === $tokens[0][1]) ? '' : $tokens[0][1];
-        }
-
-        $prefix = $tokens[0][1];
-
-        if (isset($tokens[1][1]) && '/' !== $tokens[1][1] && false === $route->hasDefault($tokens[1][3])) {
-            $prefix .= $tokens[1][1];
-        }
-
-        return $prefix;
-    }
-
-    /**
-     * Returns the next static character in the Route pattern that will serve as a separator (or the empty string when none available).
-     */
-    private static function findNextSeparator(string $pattern, bool $useUtf8): string
-    {
-        if ('' == $pattern) {
-            // return empty string if pattern is empty or false (false which can be returned by substr)
-            return '';
-        }
-        // first remove all placeholders from the pattern so we can find the next real static character
-        if ('' === $pattern = preg_replace('#\{\w+\}#', '', $pattern)) {
-            return '';
-        }
-        if ($useUtf8) {
-            preg_match('/^./u', $pattern, $pattern);
-        }
-
-        return false !== strpos(static::SEPARATORS, $pattern[0]) ? $pattern[0] : '';
-    }
-
-    /**
-     * Computes the regexp used to match a specific token. It can be static text or a subpattern.
-     *
-     * @param array $tokens        The route tokens
-     * @param int   $index         The index of the current token
-     * @param int   $firstOptional The index of the first optional token
-     *
-     * @return string The regexp pattern for a single token
-     */
-    private static function computeRegexp(array $tokens, int $index, int $firstOptional): string
-    {
-        $token = $tokens[$index];
-        if ('text' === $token[0]) {
-            // Text tokens
-            return preg_quote($token[1], self::REGEX_DELIMITER);
-        } else {
-            // Variable tokens
-            if (0 === $index && 0 === $firstOptional) {
-                // When the only token is an optional variable token, the separator is required
-                return sprintf('%s(?P<%s>%s)?', preg_quote($token[1], self::REGEX_DELIMITER), $token[3], $token[2]);
-            } else {
-                $regexp = sprintf('%s(?P<%s>%s)', preg_quote($token[1], self::REGEX_DELIMITER), $token[3], $token[2]);
-                if ($index >= $firstOptional) {
-                    // Enclose each optional token in a subpattern to make it optional.
-                    // "?:" means it is non-capturing, i.e. the portion of the subject string that
-                    // matched the optional subpattern is not passed back.
-                    $regexp = "(?:$regexp";
-                    $nbTokens = \count($tokens);
-                    if ($nbTokens - 1 == $index) {
-                        // Close the optional subpatterns
-                        $regexp .= str_repeat(')?', $nbTokens - $firstOptional - (0 === $firstOptional ? 1 : 0));
-                    }
-                }
-
-                return $regexp;
-            }
-        }
-    }
-
-    private static function transformCapturingGroupsToNonCapturings(string $regexp): string
-    {
-        for ($i = 0; $i < \strlen($regexp); ++$i) {
-            if ('\\' === $regexp[$i]) {
-                ++$i;
-                continue;
-            }
-            if ('(' !== $regexp[$i] || !isset($regexp[$i + 2])) {
-                continue;
-            }
-            if ('*' === $regexp[++$i] || '?' === $regexp[$i]) {
-                ++$i;
-                continue;
-            }
-            $regexp = substr_replace($regexp, '?:', $i, 0);
-            ++$i;
-        }
-
-        return $regexp;
-    }
-}
diff --git a/vendor/symfony/routing/RouteCompilerInterface.php b/vendor/symfony/routing/RouteCompilerInterface.php
deleted file mode 100644
index ddfa7ca49244b6ee61cf02276b73a8fbb7a79bf1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/RouteCompilerInterface.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing;
-
-/**
- * RouteCompilerInterface is the interface that all RouteCompiler classes must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface RouteCompilerInterface
-{
-    /**
-     * Compiles the current route instance.
-     *
-     * @return CompiledRoute A CompiledRoute instance
-     *
-     * @throws \LogicException If the Route cannot be compiled because the
-     *                         path or host pattern is invalid
-     */
-    public static function compile(Route $route);
-}
diff --git a/vendor/symfony/routing/Router.php b/vendor/symfony/routing/Router.php
deleted file mode 100644
index 8bc6f21af4ae96ae05f918ef251ec12d455dbd65..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Router.php
+++ /dev/null
@@ -1,456 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher;
-use Symfony\Component\Config\ConfigCacheFactory;
-use Symfony\Component\Config\ConfigCacheFactoryInterface;
-use Symfony\Component\Config\ConfigCacheInterface;
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Generator\CompiledUrlGenerator;
-use Symfony\Component\Routing\Generator\ConfigurableRequirementsInterface;
-use Symfony\Component\Routing\Generator\Dumper\CompiledUrlGeneratorDumper;
-use Symfony\Component\Routing\Generator\Dumper\GeneratorDumperInterface;
-use Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper;
-use Symfony\Component\Routing\Generator\UrlGenerator;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\Matcher\CompiledUrlMatcher;
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
-use Symfony\Component\Routing\Matcher\Dumper\MatcherDumperInterface;
-use Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper;
-use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
-
-/**
- * The Router class is an example of the integration of all pieces of the
- * routing system for easier use.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Router implements RouterInterface, RequestMatcherInterface
-{
-    /**
-     * @var UrlMatcherInterface|null
-     */
-    protected $matcher;
-
-    /**
-     * @var UrlGeneratorInterface|null
-     */
-    protected $generator;
-
-    /**
-     * @var RequestContext
-     */
-    protected $context;
-
-    /**
-     * @var LoaderInterface
-     */
-    protected $loader;
-
-    /**
-     * @var RouteCollection|null
-     */
-    protected $collection;
-
-    /**
-     * @var mixed
-     */
-    protected $resource;
-
-    /**
-     * @var array
-     */
-    protected $options = [];
-
-    /**
-     * @var LoggerInterface|null
-     */
-    protected $logger;
-
-    /**
-     * @var string|null
-     */
-    protected $defaultLocale;
-
-    /**
-     * @var ConfigCacheFactoryInterface|null
-     */
-    private $configCacheFactory;
-
-    /**
-     * @var ExpressionFunctionProviderInterface[]
-     */
-    private $expressionLanguageProviders = [];
-
-    private static $cache = [];
-
-    /**
-     * @param mixed $resource The main resource to load
-     */
-    public function __construct(LoaderInterface $loader, $resource, array $options = [], RequestContext $context = null, LoggerInterface $logger = null, string $defaultLocale = null)
-    {
-        $this->loader = $loader;
-        $this->resource = $resource;
-        $this->logger = $logger;
-        $this->context = $context ?: new RequestContext();
-        $this->setOptions($options);
-        $this->defaultLocale = $defaultLocale;
-    }
-
-    /**
-     * Sets options.
-     *
-     * Available options:
-     *
-     *   * cache_dir:              The cache directory (or null to disable caching)
-     *   * debug:                  Whether to enable debugging or not (false by default)
-     *   * generator_class:        The name of a UrlGeneratorInterface implementation
-     *   * generator_dumper_class: The name of a GeneratorDumperInterface implementation
-     *   * matcher_class:          The name of a UrlMatcherInterface implementation
-     *   * matcher_dumper_class:   The name of a MatcherDumperInterface implementation
-     *   * resource_type:          Type hint for the main resource (optional)
-     *   * strict_requirements:    Configure strict requirement checking for generators
-     *                             implementing ConfigurableRequirementsInterface (default is true)
-     *
-     * @throws \InvalidArgumentException When unsupported option is provided
-     */
-    public function setOptions(array $options)
-    {
-        $this->options = [
-            'cache_dir' => null,
-            'debug' => false,
-            'generator_class' => CompiledUrlGenerator::class,
-            'generator_base_class' => UrlGenerator::class, // deprecated
-            'generator_dumper_class' => CompiledUrlGeneratorDumper::class,
-            'generator_cache_class' => 'UrlGenerator', // deprecated
-            'matcher_class' => CompiledUrlMatcher::class,
-            'matcher_base_class' => UrlMatcher::class, // deprecated
-            'matcher_dumper_class' => CompiledUrlMatcherDumper::class,
-            'matcher_cache_class' => 'UrlMatcher', // deprecated
-            'resource_type' => null,
-            'strict_requirements' => true,
-        ];
-
-        // check option names and live merge, if errors are encountered Exception will be thrown
-        $invalid = [];
-        foreach ($options as $key => $value) {
-            $this->checkDeprecatedOption($key);
-            if (\array_key_exists($key, $this->options)) {
-                $this->options[$key] = $value;
-            } else {
-                $invalid[] = $key;
-            }
-        }
-
-        if ($invalid) {
-            throw new \InvalidArgumentException(sprintf('The Router does not support the following options: "%s".', implode('", "', $invalid)));
-        }
-    }
-
-    /**
-     * Sets an option.
-     *
-     * @param string $key   The key
-     * @param mixed  $value The value
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setOption($key, $value)
-    {
-        if (!\array_key_exists($key, $this->options)) {
-            throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key));
-        }
-
-        $this->checkDeprecatedOption($key);
-
-        $this->options[$key] = $value;
-    }
-
-    /**
-     * Gets an option value.
-     *
-     * @param string $key The key
-     *
-     * @return mixed The value
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function getOption($key)
-    {
-        if (!\array_key_exists($key, $this->options)) {
-            throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key));
-        }
-
-        $this->checkDeprecatedOption($key);
-
-        return $this->options[$key];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRouteCollection()
-    {
-        if (null === $this->collection) {
-            $this->collection = $this->loader->load($this->resource, $this->options['resource_type']);
-        }
-
-        return $this->collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContext(RequestContext $context)
-    {
-        $this->context = $context;
-
-        if (null !== $this->matcher) {
-            $this->getMatcher()->setContext($context);
-        }
-        if (null !== $this->generator) {
-            $this->getGenerator()->setContext($context);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContext()
-    {
-        return $this->context;
-    }
-
-    /**
-     * Sets the ConfigCache factory to use.
-     */
-    public function setConfigCacheFactory(ConfigCacheFactoryInterface $configCacheFactory)
-    {
-        $this->configCacheFactory = $configCacheFactory;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH)
-    {
-        return $this->getGenerator()->generate($name, $parameters, $referenceType);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function match($pathinfo)
-    {
-        return $this->getMatcher()->match($pathinfo);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function matchRequest(Request $request)
-    {
-        $matcher = $this->getMatcher();
-        if (!$matcher instanceof RequestMatcherInterface) {
-            // fallback to the default UrlMatcherInterface
-            return $matcher->match($request->getPathInfo());
-        }
-
-        return $matcher->matchRequest($request);
-    }
-
-    /**
-     * Gets the UrlMatcher or RequestMatcher instance associated with this Router.
-     *
-     * @return UrlMatcherInterface|RequestMatcherInterface
-     */
-    public function getMatcher()
-    {
-        if (null !== $this->matcher) {
-            return $this->matcher;
-        }
-
-        $compiled = is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) && (UrlMatcher::class === $this->options['matcher_base_class'] || RedirectableUrlMatcher::class === $this->options['matcher_base_class']) && is_a($this->options['matcher_dumper_class'], CompiledUrlMatcherDumper::class, true);
-
-        if (null === $this->options['cache_dir'] || null === $this->options['matcher_cache_class']) {
-            $routes = $this->getRouteCollection();
-            if ($compiled) {
-                $routes = (new CompiledUrlMatcherDumper($routes))->getCompiledRoutes();
-            }
-            $this->matcher = new $this->options['matcher_class']($routes, $this->context);
-            if (method_exists($this->matcher, 'addExpressionLanguageProvider')) {
-                foreach ($this->expressionLanguageProviders as $provider) {
-                    $this->matcher->addExpressionLanguageProvider($provider);
-                }
-            }
-
-            return $this->matcher;
-        }
-
-        $cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$this->options['matcher_cache_class'].'.php',
-            function (ConfigCacheInterface $cache) {
-                $dumper = $this->getMatcherDumperInstance();
-                if (method_exists($dumper, 'addExpressionLanguageProvider')) {
-                    foreach ($this->expressionLanguageProviders as $provider) {
-                        $dumper->addExpressionLanguageProvider($provider);
-                    }
-                }
-
-                $options = [
-                    'class' => $this->options['matcher_cache_class'],
-                    'base_class' => $this->options['matcher_base_class'],
-                ];
-
-                $cache->write($dumper->dump($options), $this->getRouteCollection()->getResources());
-            }
-        );
-
-        if ($compiled) {
-            return $this->matcher = new $this->options['matcher_class'](self::getCompiledRoutes($cache->getPath()), $this->context);
-        }
-
-        if (!class_exists($this->options['matcher_cache_class'], false)) {
-            require_once $cache->getPath();
-        }
-
-        return $this->matcher = new $this->options['matcher_cache_class']($this->context);
-    }
-
-    /**
-     * Gets the UrlGenerator instance associated with this Router.
-     *
-     * @return UrlGeneratorInterface A UrlGeneratorInterface instance
-     */
-    public function getGenerator()
-    {
-        if (null !== $this->generator) {
-            return $this->generator;
-        }
-
-        $compiled = is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) && UrlGenerator::class === $this->options['generator_base_class'] && is_a($this->options['generator_dumper_class'], CompiledUrlGeneratorDumper::class, true);
-
-        if (null === $this->options['cache_dir'] || null === $this->options['generator_cache_class']) {
-            $routes = $this->getRouteCollection();
-            if ($compiled) {
-                $routes = (new CompiledUrlGeneratorDumper($routes))->getCompiledRoutes();
-            }
-            $this->generator = new $this->options['generator_class']($routes, $this->context, $this->logger, $this->defaultLocale);
-        } else {
-            $cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$this->options['generator_cache_class'].'.php',
-                function (ConfigCacheInterface $cache) {
-                    $dumper = $this->getGeneratorDumperInstance();
-
-                    $options = [
-                        'class' => $this->options['generator_cache_class'],
-                        'base_class' => $this->options['generator_base_class'],
-                    ];
-
-                    $cache->write($dumper->dump($options), $this->getRouteCollection()->getResources());
-                }
-            );
-
-            if ($compiled) {
-                $this->generator = new $this->options['generator_class'](self::getCompiledRoutes($cache->getPath()), $this->context, $this->logger, $this->defaultLocale);
-            } else {
-                if (!class_exists($this->options['generator_cache_class'], false)) {
-                    require_once $cache->getPath();
-                }
-
-                $this->generator = new $this->options['generator_cache_class']($this->context, $this->logger, $this->defaultLocale);
-            }
-        }
-
-        if ($this->generator instanceof ConfigurableRequirementsInterface) {
-            $this->generator->setStrictRequirements($this->options['strict_requirements']);
-        }
-
-        return $this->generator;
-    }
-
-    public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider)
-    {
-        $this->expressionLanguageProviders[] = $provider;
-    }
-
-    /**
-     * @return GeneratorDumperInterface
-     */
-    protected function getGeneratorDumperInstance()
-    {
-        // For BC, fallback to PhpGeneratorDumper (which is the old default value) if the old UrlGenerator is used with the new default CompiledUrlGeneratorDumper
-        if (!is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) && is_a($this->options['generator_dumper_class'], CompiledUrlGeneratorDumper::class, true)) {
-            return new PhpGeneratorDumper($this->getRouteCollection());
-        }
-
-        return new $this->options['generator_dumper_class']($this->getRouteCollection());
-    }
-
-    /**
-     * @return MatcherDumperInterface
-     */
-    protected function getMatcherDumperInstance()
-    {
-        // For BC, fallback to PhpMatcherDumper (which is the old default value) if the old UrlMatcher is used with the new default CompiledUrlMatcherDumper
-        if (!is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) && is_a($this->options['matcher_dumper_class'], CompiledUrlMatcherDumper::class, true)) {
-            return new PhpMatcherDumper($this->getRouteCollection());
-        }
-
-        return new $this->options['matcher_dumper_class']($this->getRouteCollection());
-    }
-
-    /**
-     * Provides the ConfigCache factory implementation, falling back to a
-     * default implementation if necessary.
-     */
-    private function getConfigCacheFactory(): ConfigCacheFactoryInterface
-    {
-        if (null === $this->configCacheFactory) {
-            $this->configCacheFactory = new ConfigCacheFactory($this->options['debug']);
-        }
-
-        return $this->configCacheFactory;
-    }
-
-    private function checkDeprecatedOption(string $key)
-    {
-        switch ($key) {
-            case 'generator_base_class':
-            case 'generator_cache_class':
-            case 'matcher_base_class':
-            case 'matcher_cache_class':
-                @trigger_error(sprintf('Option "%s" given to router %s is deprecated since Symfony 4.3.', $key, static::class), \E_USER_DEPRECATED);
-        }
-    }
-
-    private static function getCompiledRoutes(string $path): array
-    {
-        if ([] === self::$cache && \function_exists('opcache_invalidate') && filter_var(ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN) && (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) || filter_var(ini_get('opcache.enable_cli'), \FILTER_VALIDATE_BOOLEAN))) {
-            self::$cache = null;
-        }
-
-        if (null === self::$cache) {
-            return require $path;
-        }
-
-        if (isset(self::$cache[$path])) {
-            return self::$cache[$path];
-        }
-
-        return self::$cache[$path] = require $path;
-    }
-}
diff --git a/vendor/symfony/routing/RouterInterface.php b/vendor/symfony/routing/RouterInterface.php
deleted file mode 100644
index 8a3e33dc22436b1810742853d907f8b821f29fb4..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/RouterInterface.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing;
-
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
-
-/**
- * RouterInterface is the interface that all Router classes must implement.
- *
- * This interface is the concatenation of UrlMatcherInterface and UrlGeneratorInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface RouterInterface extends UrlMatcherInterface, UrlGeneratorInterface
-{
-    /**
-     * Gets the RouteCollection instance associated with this Router.
-     *
-     * WARNING: This method should never be used at runtime as it is SLOW.
-     *          You might use it in a cache warmer though.
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    public function getRouteCollection();
-}
diff --git a/vendor/symfony/routing/composer.json b/vendor/symfony/routing/composer.json
deleted file mode 100644
index 79173b09b1f344f1fdef5690277efe6b58f1401b..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/composer.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-    "name": "symfony/routing",
-    "type": "library",
-    "description": "Symfony Routing Component",
-    "keywords": ["routing", "router", "URL", "URI"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1.3"
-    },
-    "require-dev": {
-        "symfony/config": "^4.2|^5.0",
-        "symfony/http-foundation": "^3.4|^4.0|^5.0",
-        "symfony/yaml": "^3.4|^4.0|^5.0",
-        "symfony/expression-language": "^3.4|^4.0|^5.0",
-        "symfony/dependency-injection": "^3.4|^4.0|^5.0",
-        "doctrine/annotations": "~1.2",
-        "psr/log": "~1.0"
-    },
-    "conflict": {
-        "symfony/config": "<4.2",
-        "symfony/dependency-injection": "<3.4",
-        "symfony/yaml": "<3.4"
-    },
-    "suggest": {
-        "symfony/http-foundation": "For using a Symfony Request object",
-        "symfony/config": "For using the all-in-one router or any loader",
-        "symfony/yaml": "For using the YAML loader",
-        "symfony/expression-language": "For using expression matching",
-        "doctrine/annotations": "For using the annotation loader"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\Routing\\": "" },
-        "exclude-from-classmap": [
-            "/Tests/"
-        ]
-    },
-    "minimum-stability": "dev"
-}
diff --git a/vendor/symfony/twig-bridge/.gitignore b/vendor/symfony/twig-bridge/.gitignore
deleted file mode 100644
index c49a5d8df5c6548379f00c77fe572a7217bce218..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/twig-bridge/AppVariable.php b/vendor/symfony/twig-bridge/AppVariable.php
deleted file mode 100644
index eb9cec6dd9101da18cb8be6a02e70b6d52b0a1fc..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/AppVariable.php
+++ /dev/null
@@ -1,180 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
-use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
-
-/**
- * Exposes some Symfony parameters and services as an "app" global variable.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AppVariable
-{
-    private $tokenStorage;
-    private $requestStack;
-    private $environment;
-    private $debug;
-
-    public function setTokenStorage(TokenStorageInterface $tokenStorage)
-    {
-        $this->tokenStorage = $tokenStorage;
-    }
-
-    public function setRequestStack(RequestStack $requestStack)
-    {
-        $this->requestStack = $requestStack;
-    }
-
-    public function setEnvironment($environment)
-    {
-        $this->environment = $environment;
-    }
-
-    public function setDebug($debug)
-    {
-        $this->debug = (bool) $debug;
-    }
-
-    /**
-     * Returns the current token.
-     *
-     * @return TokenInterface|null
-     *
-     * @throws \RuntimeException When the TokenStorage is not available
-     */
-    public function getToken()
-    {
-        if (null === $tokenStorage = $this->tokenStorage) {
-            throw new \RuntimeException('The "app.token" variable is not available.');
-        }
-
-        return $tokenStorage->getToken();
-    }
-
-    /**
-     * Returns the current user.
-     *
-     * @return object|null
-     *
-     * @see TokenInterface::getUser()
-     */
-    public function getUser()
-    {
-        if (null === $tokenStorage = $this->tokenStorage) {
-            throw new \RuntimeException('The "app.user" variable is not available.');
-        }
-
-        if (!$token = $tokenStorage->getToken()) {
-            return null;
-        }
-
-        $user = $token->getUser();
-
-        return \is_object($user) ? $user : null;
-    }
-
-    /**
-     * Returns the current request.
-     *
-     * @return Request|null The HTTP request object
-     */
-    public function getRequest()
-    {
-        if (null === $this->requestStack) {
-            throw new \RuntimeException('The "app.request" variable is not available.');
-        }
-
-        return $this->requestStack->getCurrentRequest();
-    }
-
-    /**
-     * Returns the current session.
-     *
-     * @return Session|null The session
-     */
-    public function getSession()
-    {
-        if (null === $this->requestStack) {
-            throw new \RuntimeException('The "app.session" variable is not available.');
-        }
-
-        return ($request = $this->getRequest()) ? $request->getSession() : null;
-    }
-
-    /**
-     * Returns the current app environment.
-     *
-     * @return string The current environment string (e.g 'dev')
-     */
-    public function getEnvironment()
-    {
-        if (null === $this->environment) {
-            throw new \RuntimeException('The "app.environment" variable is not available.');
-        }
-
-        return $this->environment;
-    }
-
-    /**
-     * Returns the current app debug mode.
-     *
-     * @return bool The current debug mode
-     */
-    public function getDebug()
-    {
-        if (null === $this->debug) {
-            throw new \RuntimeException('The "app.debug" variable is not available.');
-        }
-
-        return $this->debug;
-    }
-
-    /**
-     * Returns some or all the existing flash messages:
-     *  * getFlashes() returns all the flash messages
-     *  * getFlashes('notice') returns a simple array with flash messages of that type
-     *  * getFlashes(['notice', 'error']) returns a nested array of type => messages.
-     *
-     * @return array
-     */
-    public function getFlashes($types = null)
-    {
-        try {
-            $session = $this->getSession();
-            if (null === $session) {
-                return [];
-            }
-        } catch (\RuntimeException $e) {
-            return [];
-        }
-
-        if (null === $types || '' === $types || [] === $types) {
-            return $session->getFlashBag()->all();
-        }
-
-        if (\is_string($types)) {
-            return $session->getFlashBag()->get($types);
-        }
-
-        $result = [];
-        foreach ($types as $type) {
-            $result[$type] = $session->getFlashBag()->get($type);
-        }
-
-        return $result;
-    }
-}
diff --git a/vendor/symfony/twig-bridge/CHANGELOG.md b/vendor/symfony/twig-bridge/CHANGELOG.md
deleted file mode 100644
index 4ccde3894715d5d3e8291d7a736cf8cd29eb5196..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/CHANGELOG.md
+++ /dev/null
@@ -1,100 +0,0 @@
-CHANGELOG
-=========
-
-3.4.0
------
-
- * added an `only` keyword to `form_theme` tag to disable usage of default themes when rendering a form
- * deprecated `Symfony\Bridge\Twig\Form\TwigRenderer`
- * deprecated `DebugCommand::set/getTwigEnvironment`. Pass an instance of
-   `Twig\Environment` as first argument  of the constructor instead
- * deprecated `LintCommand::set/getTwigEnvironment`. Pass an instance of
-   `Twig\Environment` as first argument of the constructor instead
-
-3.3.0
------
-
- * added a `workflow_has_marked_place` function
- * added a `workflow_marked_places` function
-
-3.2.0
------
-
- * added `AppVariable::getToken()`
- * Deprecated the possibility to inject the Form `TwigRenderer` into the `FormExtension`.
- * [BC BREAK] Registering the `FormExtension` without configuring a runtime loader for the `TwigRenderer`
-   doesn't work anymore.
-
-   Before:
-
-   ```php
-   use Symfony\Bridge\Twig\Extension\FormExtension;
-   use Symfony\Bridge\Twig\Form\TwigRenderer;
-   use Symfony\Bridge\Twig\Form\TwigRendererEngine;
-
-   // ...
-   $rendererEngine = new TwigRendererEngine(['form_div_layout.html.twig']);
-   $rendererEngine->setEnvironment($twig);
-   $twig->addExtension(new FormExtension(new TwigRenderer($rendererEngine, $csrfTokenManager)));
-   ```
-
-   After:
-
-   ```php
-   // ...
-   $rendererEngine = new TwigRendererEngine(['form_div_layout.html.twig'], $twig);
-   // require Twig 1.30+
-   $twig->addRuntimeLoader(new \Twig\RuntimeLoader\FactoryRuntimeLoader([
-       TwigRenderer::class => function () use ($rendererEngine, $csrfTokenManager) {
-           return new TwigRenderer($rendererEngine, $csrfTokenManager);
-       },
-   ]));
-   $twig->addExtension(new FormExtension());
-   ```
- * Deprecated the `TwigRendererEngineInterface` interface.
- * added WorkflowExtension (provides `workflow_can` and `workflow_transitions`)
-
-2.7.0
------
-
- * added LogoutUrlExtension (provides `logout_url` and `logout_path`)
- * added an HttpFoundation extension (provides the `absolute_url` and the `relative_path` functions)
- * added AssetExtension (provides the `asset` and `asset_version` functions)
- * Added possibility to extract translation messages from a file or files besides extracting from a directory
-
-2.5.0
------
-
- * moved command `twig:lint` from `TwigBundle`
-
-2.4.0
------
-
- * added stopwatch tag to time templates with the WebProfilerBundle
-
-2.3.0
------
-
- * added helpers form(), form_start() and form_end()
- * deprecated form_enctype() in favor of form_start()
-
-2.2.0
------
-
- * added a `controller` function to help generating controller references
- * added a `render_esi` and a `render_hinclude` function
- * [BC BREAK] restricted the `render` tag to only accept URIs or ControllerReference instances (the signature changed)
- * added a `render` function to render a request
- * The `app` global variable is now injected even when using the twig service directly.
- * Added an optional parameter to the `path` and `url` function which allows to generate
-   relative paths (e.g. "../parent-file") and scheme-relative URLs (e.g. "//example.com/dir/file").
-
-2.1.0
------
-
- * added global variables access in a form theme
- * added TwigEngine
- * added TwigExtractor
- * added a csrf_token function
- * added a way to specify a default domain for a Twig template (via the
-   'trans_default_domain' tag)
diff --git a/vendor/symfony/twig-bridge/Command/DebugCommand.php b/vendor/symfony/twig-bridge/Command/DebugCommand.php
deleted file mode 100644
index e196f1b82d7eb3f910aedf4b90ecc8afd1b19597..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Command/DebugCommand.php
+++ /dev/null
@@ -1,310 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Command;
-
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Formatter\OutputFormatter;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Style\SymfonyStyle;
-use Twig\Environment;
-use Twig\Loader\FilesystemLoader;
-
-/**
- * Lists twig functions, filters, globals and tests present in the current project.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class DebugCommand extends Command
-{
-    protected static $defaultName = 'debug:twig';
-
-    private $twig;
-    private $projectDir;
-
-    /**
-     * @param Environment $twig
-     * @param string|null $projectDir
-     */
-    public function __construct($twig = null, $projectDir = null)
-    {
-        if (!$twig instanceof Environment) {
-            @trigger_error(sprintf('Passing a command name as the first argument of "%s()" is deprecated since Symfony 3.4 and support for it will be removed in 4.0. If the command was registered by convention, make it a service instead.', __METHOD__), \E_USER_DEPRECATED);
-
-            parent::__construct($twig);
-
-            return;
-        }
-
-        parent::__construct();
-
-        $this->twig = $twig;
-        $this->projectDir = $projectDir;
-    }
-
-    public function setTwigEnvironment(Environment $twig)
-    {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
-
-        $this->twig = $twig;
-    }
-
-    /**
-     * @return Environment $twig
-     */
-    protected function getTwigEnvironment()
-    {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
-
-        return $this->twig;
-    }
-
-    protected function configure()
-    {
-        $this
-            ->setDefinition([
-                new InputArgument('filter', InputArgument::OPTIONAL, 'Show details for all entries matching this filter'),
-                new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (text or json)', 'text'),
-            ])
-            ->setDescription('Shows a list of twig functions, filters, globals and tests')
-            ->setHelp(<<<'EOF'
-The <info>%command.name%</info> command outputs a list of twig functions,
-filters, globals and tests. Output can be filtered with an optional argument.
-
-  <info>php %command.full_name%</info>
-
-The command lists all functions, filters, etc.
-
-  <info>php %command.full_name% date</info>
-
-The command lists everything that contains the word date.
-
-  <info>php %command.full_name% --format=json</info>
-
-The command lists everything in a machine readable json format.
-EOF
-            )
-        ;
-    }
-
-    protected function execute(InputInterface $input, OutputInterface $output)
-    {
-        $io = new SymfonyStyle($input, $output);
-        $decorated = $io->isDecorated();
-
-        // BC to be removed in 4.0
-        if (__CLASS__ !== static::class) {
-            $r = new \ReflectionMethod($this, 'getTwigEnvironment');
-            if (__CLASS__ !== $r->getDeclaringClass()->getName()) {
-                @trigger_error(sprintf('Usage of method "%s" is deprecated since Symfony 3.4 and will no longer be supported in 4.0. Construct the command with its required arguments instead.', static::class.'::getTwigEnvironment'), \E_USER_DEPRECATED);
-
-                $this->twig = $this->getTwigEnvironment();
-            }
-        }
-        if (null === $this->twig) {
-            throw new \RuntimeException('The Twig environment needs to be set.');
-        }
-
-        $filter = $input->getArgument('filter');
-        $types = ['functions', 'filters', 'tests', 'globals'];
-
-        if ('json' === $input->getOption('format')) {
-            $data = [];
-            foreach ($types as $type) {
-                foreach ($this->twig->{'get'.ucfirst($type)}() as $name => $entity) {
-                    if (!$filter || false !== strpos($name, $filter)) {
-                        $data[$type][$name] = $this->getMetadata($type, $entity);
-                    }
-                }
-            }
-
-            if (isset($data['tests'])) {
-                $data['tests'] = array_keys($data['tests']);
-            }
-
-            $data['loader_paths'] = $this->getLoaderPaths();
-            $data = json_encode($data, \JSON_PRETTY_PRINT);
-            $io->writeln($decorated ? OutputFormatter::escape($data) : $data);
-
-            return 0;
-        }
-
-        foreach ($types as $index => $type) {
-            $items = [];
-            foreach ($this->twig->{'get'.ucfirst($type)}() as $name => $entity) {
-                if (!$filter || false !== strpos($name, $filter)) {
-                    $items[$name] = $name.$this->getPrettyMetadata($type, $entity, $decorated);
-                }
-            }
-
-            if (!$items) {
-                continue;
-            }
-
-            $io->section(ucfirst($type));
-
-            ksort($items);
-            $io->listing($items);
-        }
-
-        $rows = [];
-        $firstNamespace = true;
-        $prevHasSeparator = false;
-        foreach ($this->getLoaderPaths() as $namespace => $paths) {
-            if (!$firstNamespace && !$prevHasSeparator && \count($paths) > 1) {
-                $rows[] = ['', ''];
-            }
-            $firstNamespace = false;
-            foreach ($paths as $path) {
-                $rows[] = [$namespace, $path.\DIRECTORY_SEPARATOR];
-                $namespace = '';
-            }
-            if (\count($paths) > 1) {
-                $rows[] = ['', ''];
-                $prevHasSeparator = true;
-            } else {
-                $prevHasSeparator = false;
-            }
-        }
-        if ($prevHasSeparator) {
-            array_pop($rows);
-        }
-        $io->section('Loader Paths');
-        $io->table(['Namespace', 'Paths'], $rows);
-
-        return 0;
-    }
-
-    private function getLoaderPaths()
-    {
-        if (!($loader = $this->twig->getLoader()) instanceof FilesystemLoader) {
-            return [];
-        }
-
-        $loaderPaths = [];
-        foreach ($loader->getNamespaces() as $namespace) {
-            $paths = array_map(function ($path) {
-                if (null !== $this->projectDir && 0 === strpos($path, $this->projectDir)) {
-                    $path = ltrim(substr($path, \strlen($this->projectDir)), \DIRECTORY_SEPARATOR);
-                }
-
-                return $path;
-            }, $loader->getPaths($namespace));
-
-            if (FilesystemLoader::MAIN_NAMESPACE === $namespace) {
-                $namespace = '(None)';
-            } else {
-                $namespace = '@'.$namespace;
-            }
-
-            $loaderPaths[$namespace] = $paths;
-        }
-
-        return $loaderPaths;
-    }
-
-    private function getMetadata($type, $entity)
-    {
-        if ('globals' === $type) {
-            return $entity;
-        }
-        if ('tests' === $type) {
-            return null;
-        }
-        if ('functions' === $type || 'filters' === $type) {
-            $cb = $entity->getCallable();
-            if (null === $cb) {
-                return null;
-            }
-            if (\is_array($cb)) {
-                if (!method_exists($cb[0], $cb[1])) {
-                    return null;
-                }
-                $refl = new \ReflectionMethod($cb[0], $cb[1]);
-            } elseif (\is_object($cb) && method_exists($cb, '__invoke')) {
-                $refl = new \ReflectionMethod($cb, '__invoke');
-            } elseif (\function_exists($cb)) {
-                $refl = new \ReflectionFunction($cb);
-            } elseif (\is_string($cb) && preg_match('{^(.+)::(.+)$}', $cb, $m) && method_exists($m[1], $m[2])) {
-                $refl = new \ReflectionMethod($m[1], $m[2]);
-            } else {
-                throw new \UnexpectedValueException('Unsupported callback type.');
-            }
-
-            $args = $refl->getParameters();
-
-            // filter out context/environment args
-            if ($entity->needsEnvironment()) {
-                array_shift($args);
-            }
-            if ($entity->needsContext()) {
-                array_shift($args);
-            }
-
-            if ('filters' === $type) {
-                // remove the value the filter is applied on
-                array_shift($args);
-            }
-
-            // format args
-            $args = array_map(function ($param) {
-                if ($param->isDefaultValueAvailable()) {
-                    return $param->getName().' = '.json_encode($param->getDefaultValue());
-                }
-
-                return $param->getName();
-            }, $args);
-
-            return $args;
-        }
-
-        return null;
-    }
-
-    private function getPrettyMetadata($type, $entity, $decorated)
-    {
-        if ('tests' === $type) {
-            return '';
-        }
-
-        try {
-            $meta = $this->getMetadata($type, $entity);
-            if (null === $meta) {
-                return '(unknown?)';
-            }
-        } catch (\UnexpectedValueException $e) {
-            return sprintf(' <error>%s</error>', $decorated ? OutputFormatter::escape($e->getMessage()) : $e->getMessage());
-        }
-
-        if ('globals' === $type) {
-            if (\is_object($meta)) {
-                return ' = object('.\get_class($meta).')';
-            }
-
-            $description = substr(@json_encode($meta), 0, 50);
-
-            return sprintf(' = %s', $decorated ? OutputFormatter::escape($description) : $description);
-        }
-
-        if ('functions' === $type) {
-            return '('.implode(', ', $meta).')';
-        }
-
-        if ('filters' === $type) {
-            return $meta ? '('.implode(', ', $meta).')' : '';
-        }
-
-        return null;
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Command/LintCommand.php b/vendor/symfony/twig-bridge/Command/LintCommand.php
deleted file mode 100644
index c23c27b37cb2bbc82a02a3d64fc3d7a83e36ce93..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Command/LintCommand.php
+++ /dev/null
@@ -1,272 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Command;
-
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Exception\InvalidArgumentException;
-use Symfony\Component\Console\Exception\RuntimeException;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Style\SymfonyStyle;
-use Symfony\Component\Finder\Finder;
-use Twig\Environment;
-use Twig\Error\Error;
-use Twig\Loader\ArrayLoader;
-use Twig\Source;
-
-/**
- * Command that will validate your template syntax and output encountered errors.
- *
- * @author Marc Weistroff <marc.weistroff@sensiolabs.com>
- * @author Jérôme Tamarelle <jerome@tamarelle.net>
- */
-class LintCommand extends Command
-{
-    protected static $defaultName = 'lint:twig';
-
-    private $twig;
-
-    /**
-     * @param Environment $twig
-     */
-    public function __construct($twig = null)
-    {
-        if (!$twig instanceof Environment) {
-            @trigger_error(sprintf('Passing a command name as the first argument of "%s()" is deprecated since Symfony 3.4 and support for it will be removed in 4.0. If the command was registered by convention, make it a service instead.', __METHOD__), \E_USER_DEPRECATED);
-
-            parent::__construct($twig);
-
-            return;
-        }
-
-        parent::__construct();
-
-        $this->twig = $twig;
-    }
-
-    public function setTwigEnvironment(Environment $twig)
-    {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
-
-        $this->twig = $twig;
-    }
-
-    /**
-     * @return Environment $twig
-     */
-    protected function getTwigEnvironment()
-    {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
-
-        return $this->twig;
-    }
-
-    protected function configure()
-    {
-        $this
-            ->setDescription('Lints a template and outputs encountered errors')
-            ->addOption('format', null, InputOption::VALUE_REQUIRED, 'The output format', 'txt')
-            ->addArgument('filename', InputArgument::IS_ARRAY)
-            ->setHelp(<<<'EOF'
-The <info>%command.name%</info> command lints a template and outputs to STDOUT
-the first encountered syntax error.
-
-You can validate the syntax of contents passed from STDIN:
-
-  <info>cat filename | php %command.full_name%</info>
-
-Or the syntax of a file:
-
-  <info>php %command.full_name% filename</info>
-
-Or of a whole directory:
-
-  <info>php %command.full_name% dirname</info>
-  <info>php %command.full_name% dirname --format=json</info>
-
-EOF
-            )
-        ;
-    }
-
-    protected function execute(InputInterface $input, OutputInterface $output)
-    {
-        $io = new SymfonyStyle($input, $output);
-
-        // BC to be removed in 4.0
-        if (__CLASS__ !== static::class) {
-            $r = new \ReflectionMethod($this, 'getTwigEnvironment');
-            if (__CLASS__ !== $r->getDeclaringClass()->getName()) {
-                @trigger_error(sprintf('Usage of method "%s" is deprecated since Symfony 3.4 and will no longer be supported in 4.0. Construct the command with its required arguments instead.', static::class.'::getTwigEnvironment'), \E_USER_DEPRECATED);
-
-                $this->twig = $this->getTwigEnvironment();
-            }
-        }
-        if (null === $this->twig) {
-            throw new \RuntimeException('The Twig environment needs to be set.');
-        }
-
-        $filenames = $input->getArgument('filename');
-
-        if (0 === \count($filenames)) {
-            if (0 !== ftell(\STDIN)) {
-                throw new RuntimeException('Please provide a filename or pipe template content to STDIN.');
-            }
-
-            $template = '';
-            while (!feof(\STDIN)) {
-                $template .= fread(\STDIN, 1024);
-            }
-
-            return $this->display($input, $output, $io, [$this->validate($template, uniqid('sf_', true))]);
-        }
-
-        $filesInfo = $this->getFilesInfo($filenames);
-
-        return $this->display($input, $output, $io, $filesInfo);
-    }
-
-    private function getFilesInfo(array $filenames)
-    {
-        $filesInfo = [];
-        foreach ($filenames as $filename) {
-            foreach ($this->findFiles($filename) as $file) {
-                $filesInfo[] = $this->validate(file_get_contents($file), $file);
-            }
-        }
-
-        return $filesInfo;
-    }
-
-    protected function findFiles($filename)
-    {
-        if (is_file($filename)) {
-            return [$filename];
-        } elseif (is_dir($filename)) {
-            return Finder::create()->files()->in($filename)->name('*.twig');
-        }
-
-        throw new RuntimeException(sprintf('File or directory "%s" is not readable.', $filename));
-    }
-
-    private function validate($template, $file)
-    {
-        $realLoader = $this->twig->getLoader();
-        try {
-            $temporaryLoader = new ArrayLoader([(string) $file => $template]);
-            $this->twig->setLoader($temporaryLoader);
-            $nodeTree = $this->twig->parse($this->twig->tokenize(new Source($template, (string) $file)));
-            $this->twig->compile($nodeTree);
-            $this->twig->setLoader($realLoader);
-        } catch (Error $e) {
-            $this->twig->setLoader($realLoader);
-
-            return ['template' => $template, 'file' => $file, 'line' => $e->getTemplateLine(), 'valid' => false, 'exception' => $e];
-        }
-
-        return ['template' => $template, 'file' => $file, 'valid' => true];
-    }
-
-    private function display(InputInterface $input, OutputInterface $output, SymfonyStyle $io, $files)
-    {
-        switch ($input->getOption('format')) {
-            case 'txt':
-                return $this->displayTxt($output, $io, $files);
-            case 'json':
-                return $this->displayJson($output, $files);
-            default:
-                throw new InvalidArgumentException(sprintf('The format "%s" is not supported.', $input->getOption('format')));
-        }
-    }
-
-    private function displayTxt(OutputInterface $output, SymfonyStyle $io, $filesInfo)
-    {
-        $errors = 0;
-
-        foreach ($filesInfo as $info) {
-            if ($info['valid'] && $output->isVerbose()) {
-                $io->comment('<info>OK</info>'.($info['file'] ? sprintf(' in %s', $info['file']) : ''));
-            } elseif (!$info['valid']) {
-                ++$errors;
-                $this->renderException($io, $info['template'], $info['exception'], $info['file']);
-            }
-        }
-
-        if (0 === $errors) {
-            $io->success(sprintf('All %d Twig files contain valid syntax.', \count($filesInfo)));
-        } else {
-            $io->warning(sprintf('%d Twig files have valid syntax and %d contain errors.', \count($filesInfo) - $errors, $errors));
-        }
-
-        return min($errors, 1);
-    }
-
-    private function displayJson(OutputInterface $output, $filesInfo)
-    {
-        $errors = 0;
-
-        array_walk($filesInfo, function (&$v) use (&$errors) {
-            $v['file'] = (string) $v['file'];
-            unset($v['template']);
-            if (!$v['valid']) {
-                $v['message'] = $v['exception']->getMessage();
-                unset($v['exception']);
-                ++$errors;
-            }
-        });
-
-        $output->writeln(json_encode($filesInfo, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES));
-
-        return min($errors, 1);
-    }
-
-    private function renderException(OutputInterface $output, $template, Error $exception, $file = null)
-    {
-        $line = $exception->getTemplateLine();
-
-        if ($file) {
-            $output->text(sprintf('<error> ERROR </error> in %s (line %s)', $file, $line));
-        } else {
-            $output->text(sprintf('<error> ERROR </error> (line %s)', $line));
-        }
-
-        foreach ($this->getContext($template, $line) as $lineNumber => $code) {
-            $output->text(sprintf(
-                '%s %-6s %s',
-                $lineNumber === $line ? '<error> >> </error>' : '    ',
-                $lineNumber,
-                $code
-            ));
-            if ($lineNumber === $line) {
-                $output->text(sprintf('<error> >> %s</error> ', $exception->getRawMessage()));
-            }
-        }
-    }
-
-    private function getContext($template, $line, $context = 3)
-    {
-        $lines = explode("\n", $template);
-
-        $position = max(0, $line - $context);
-        $max = min(\count($lines), $line - 1 + $context);
-
-        $result = [];
-        while ($position < $max) {
-            $result[$position + 1] = $lines[$position];
-            ++$position;
-        }
-
-        return $result;
-    }
-}
diff --git a/vendor/symfony/twig-bridge/DataCollector/TwigDataCollector.php b/vendor/symfony/twig-bridge/DataCollector/TwigDataCollector.php
deleted file mode 100644
index 80e36e0491efce60303ce5065d36307c75f2e103..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/DataCollector/TwigDataCollector.php
+++ /dev/null
@@ -1,205 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\DataCollector;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\DataCollector;
-use Symfony\Component\HttpKernel\DataCollector\LateDataCollectorInterface;
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Markup;
-use Twig\Profiler\Dumper\HtmlDumper;
-use Twig\Profiler\Profile;
-
-/**
- * TwigDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TwigDataCollector extends DataCollector implements LateDataCollectorInterface
-{
-    private $profile;
-    private $twig;
-    private $computed;
-
-    public function __construct(Profile $profile, Environment $twig = null)
-    {
-        $this->profile = $profile;
-        $this->twig = $twig;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reset()
-    {
-        $this->profile->reset();
-        $this->computed = null;
-        $this->data = [];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function lateCollect()
-    {
-        $this->data['profile'] = serialize($this->profile);
-        $this->data['template_paths'] = [];
-
-        if (null === $this->twig) {
-            return;
-        }
-
-        $templateFinder = function (Profile $profile) use (&$templateFinder) {
-            if ($profile->isTemplate()) {
-                try {
-                    $template = $this->twig->load($name = $profile->getName());
-                } catch (LoaderError $e) {
-                    $template = null;
-                }
-
-                if (null !== $template && '' !== $path = $template->getSourceContext()->getPath()) {
-                    $this->data['template_paths'][$name] = $path;
-                }
-            }
-
-            foreach ($profile as $p) {
-                $templateFinder($p);
-            }
-        };
-        $templateFinder($this->profile);
-    }
-
-    public function getTime()
-    {
-        return $this->getProfile()->getDuration() * 1000;
-    }
-
-    public function getTemplateCount()
-    {
-        return $this->getComputedData('template_count');
-    }
-
-    public function getTemplatePaths()
-    {
-        return $this->data['template_paths'];
-    }
-
-    public function getTemplates()
-    {
-        return $this->getComputedData('templates');
-    }
-
-    public function getBlockCount()
-    {
-        return $this->getComputedData('block_count');
-    }
-
-    public function getMacroCount()
-    {
-        return $this->getComputedData('macro_count');
-    }
-
-    public function getHtmlCallGraph()
-    {
-        $dumper = new HtmlDumper();
-        $dump = $dumper->dump($this->getProfile());
-
-        // needed to remove the hardcoded CSS styles
-        $dump = str_replace([
-            '<span style="background-color: #ffd">',
-            '<span style="color: #d44">',
-            '<span style="background-color: #dfd">',
-        ], [
-            '<span class="status-warning">',
-            '<span class="status-error">',
-            '<span class="status-success">',
-        ], $dump);
-
-        return new Markup($dump, 'UTF-8');
-    }
-
-    public function getProfile()
-    {
-        if (null === $this->profile) {
-            if (\PHP_VERSION_ID >= 70000) {
-                $this->profile = unserialize($this->data['profile'], ['allowed_classes' => ['Twig_Profiler_Profile', 'Twig\Profiler\Profile']]);
-            } else {
-                $this->profile = unserialize($this->data['profile']);
-            }
-        }
-
-        return $this->profile;
-    }
-
-    private function getComputedData($index)
-    {
-        if (null === $this->computed) {
-            $this->computed = $this->computeData($this->getProfile());
-        }
-
-        return $this->computed[$index];
-    }
-
-    private function computeData(Profile $profile)
-    {
-        $data = [
-            'template_count' => 0,
-            'block_count' => 0,
-            'macro_count' => 0,
-        ];
-
-        $templates = [];
-        foreach ($profile as $p) {
-            $d = $this->computeData($p);
-
-            $data['template_count'] += ($p->isTemplate() ? 1 : 0) + $d['template_count'];
-            $data['block_count'] += ($p->isBlock() ? 1 : 0) + $d['block_count'];
-            $data['macro_count'] += ($p->isMacro() ? 1 : 0) + $d['macro_count'];
-
-            if ($p->isTemplate()) {
-                if (!isset($templates[$p->getTemplate()])) {
-                    $templates[$p->getTemplate()] = 1;
-                } else {
-                    ++$templates[$p->getTemplate()];
-                }
-            }
-
-            foreach ($d['templates'] as $template => $count) {
-                if (!isset($templates[$template])) {
-                    $templates[$template] = $count;
-                } else {
-                    $templates[$template] += $count;
-                }
-            }
-        }
-        $data['templates'] = $templates;
-
-        return $data;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'twig';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/AssetExtension.php b/vendor/symfony/twig-bridge/Extension/AssetExtension.php
deleted file mode 100644
index cc2cdb268e5b5c614219b141a450039b1d9c0347..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/AssetExtension.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\Asset\Packages;
-use Twig\Extension\AbstractExtension;
-use Twig\TwigFunction;
-
-/**
- * Twig extension for the Symfony Asset component.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AssetExtension extends AbstractExtension
-{
-    private $packages;
-
-    public function __construct(Packages $packages)
-    {
-        $this->packages = $packages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('asset', [$this, 'getAssetUrl']),
-            new TwigFunction('asset_version', [$this, 'getAssetVersion']),
-        ];
-    }
-
-    /**
-     * Returns the public url/path of an asset.
-     *
-     * If the package used to generate the path is an instance of
-     * UrlPackage, you will always get a URL and not a path.
-     *
-     * @param string $path        A public path
-     * @param string $packageName The name of the asset package to use
-     *
-     * @return string The public path of the asset
-     */
-    public function getAssetUrl($path, $packageName = null)
-    {
-        return $this->packages->getUrl($path, $packageName);
-    }
-
-    /**
-     * Returns the version of an asset.
-     *
-     * @param string $path        A public path
-     * @param string $packageName The name of the asset package to use
-     *
-     * @return string The asset version
-     */
-    public function getAssetVersion($path, $packageName = null)
-    {
-        return $this->packages->getVersion($path, $packageName);
-    }
-
-    /**
-     * Returns the name of the extension.
-     *
-     * @return string The extension name
-     */
-    public function getName()
-    {
-        return 'asset';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/CodeExtension.php b/vendor/symfony/twig-bridge/Extension/CodeExtension.php
deleted file mode 100644
index dec4b61212e5a7881ba4b29ff9942f9ba941ed2d..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/CodeExtension.php
+++ /dev/null
@@ -1,268 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
-use Twig\Extension\AbstractExtension;
-use Twig\TwigFilter;
-
-/**
- * Twig extension relate to PHP code and used by the profiler and the default exception templates.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class CodeExtension extends AbstractExtension
-{
-    private $fileLinkFormat;
-    private $rootDir;
-    private $charset;
-
-    /**
-     * @param string|FileLinkFormatter $fileLinkFormat The format for links to source files
-     * @param string                   $rootDir        The project root directory
-     * @param string                   $charset        The charset
-     */
-    public function __construct($fileLinkFormat, $rootDir, $charset)
-    {
-        $this->fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
-        $this->rootDir = str_replace('/', \DIRECTORY_SEPARATOR, \dirname($rootDir)).\DIRECTORY_SEPARATOR;
-        $this->charset = $charset;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFilters()
-    {
-        return [
-            new TwigFilter('abbr_class', [$this, 'abbrClass'], ['is_safe' => ['html']]),
-            new TwigFilter('abbr_method', [$this, 'abbrMethod'], ['is_safe' => ['html']]),
-            new TwigFilter('format_args', [$this, 'formatArgs'], ['is_safe' => ['html']]),
-            new TwigFilter('format_args_as_text', [$this, 'formatArgsAsText']),
-            new TwigFilter('file_excerpt', [$this, 'fileExcerpt'], ['is_safe' => ['html']]),
-            new TwigFilter('format_file', [$this, 'formatFile'], ['is_safe' => ['html']]),
-            new TwigFilter('format_file_from_text', [$this, 'formatFileFromText'], ['is_safe' => ['html']]),
-            new TwigFilter('format_log_message', [$this, 'formatLogMessage'], ['is_safe' => ['html']]),
-            new TwigFilter('file_link', [$this, 'getFileLink']),
-        ];
-    }
-
-    public function abbrClass($class)
-    {
-        $parts = explode('\\', $class);
-        $short = array_pop($parts);
-
-        return sprintf('<abbr title="%s">%s</abbr>', $class, $short);
-    }
-
-    public function abbrMethod($method)
-    {
-        if (false !== strpos($method, '::')) {
-            list($class, $method) = explode('::', $method, 2);
-            $result = sprintf('%s::%s()', $this->abbrClass($class), $method);
-        } elseif ('Closure' === $method) {
-            $result = sprintf('<abbr title="%s">%1$s</abbr>', $method);
-        } else {
-            $result = sprintf('<abbr title="%s">%1$s</abbr>()', $method);
-        }
-
-        return $result;
-    }
-
-    /**
-     * Formats an array as a string.
-     *
-     * @param array $args The argument array
-     *
-     * @return string
-     */
-    public function formatArgs($args)
-    {
-        $result = [];
-        foreach ($args as $key => $item) {
-            if ('object' === $item[0]) {
-                $parts = explode('\\', $item[1]);
-                $short = array_pop($parts);
-                $formattedValue = sprintf('<em>object</em>(<abbr title="%s">%s</abbr>)', $item[1], $short);
-            } elseif ('array' === $item[0]) {
-                $formattedValue = sprintf('<em>array</em>(%s)', \is_array($item[1]) ? $this->formatArgs($item[1]) : $item[1]);
-            } elseif ('null' === $item[0]) {
-                $formattedValue = '<em>null</em>';
-            } elseif ('boolean' === $item[0]) {
-                $formattedValue = '<em>'.strtolower(var_export($item[1], true)).'</em>';
-            } elseif ('resource' === $item[0]) {
-                $formattedValue = '<em>resource</em>';
-            } else {
-                $formattedValue = str_replace("\n", '', htmlspecialchars(var_export($item[1], true), \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset));
-            }
-
-            $result[] = \is_int($key) ? $formattedValue : sprintf("'%s' => %s", $key, $formattedValue);
-        }
-
-        return implode(', ', $result);
-    }
-
-    /**
-     * Formats an array as a string.
-     *
-     * @param array $args The argument array
-     *
-     * @return string
-     */
-    public function formatArgsAsText($args)
-    {
-        return strip_tags($this->formatArgs($args));
-    }
-
-    /**
-     * Returns an excerpt of a code file around the given line number.
-     *
-     * @param string $file       A file path
-     * @param int    $line       The selected line number
-     * @param int    $srcContext The number of displayed lines around or -1 for the whole file
-     *
-     * @return string An HTML string
-     */
-    public function fileExcerpt($file, $line, $srcContext = 3)
-    {
-        if (is_file($file) && is_readable($file)) {
-            // highlight_file could throw warnings
-            // see https://bugs.php.net/25725
-            $code = @highlight_file($file, true);
-            // remove main code/span tags
-            $code = preg_replace('#^<code.*?>\s*<span.*?>(.*)</span>\s*</code>#s', '\\1', $code);
-            // split multiline spans
-            $code = preg_replace_callback('#<span ([^>]++)>((?:[^<]*+<br \/>)++[^<]*+)</span>#', function ($m) {
-                return "<span $m[1]>".str_replace('<br />', "</span><br /><span $m[1]>", $m[2]).'</span>';
-            }, $code);
-            $content = explode('<br />', $code);
-
-            $lines = [];
-            if (0 > $srcContext) {
-                $srcContext = \count($content);
-            }
-
-            for ($i = max($line - $srcContext, 1), $max = min($line + $srcContext, \count($content)); $i <= $max; ++$i) {
-                $lines[] = '<li'.($i == $line ? ' class="selected"' : '').'><a class="anchor" name="line'.$i.'"></a><code>'.self::fixCodeMarkup($content[$i - 1]).'</code></li>';
-            }
-
-            return '<ol start="'.max($line - $srcContext, 1).'">'.implode("\n", $lines).'</ol>';
-        }
-
-        return null;
-    }
-
-    /**
-     * Formats a file path.
-     *
-     * @param string $file An absolute file path
-     * @param int    $line The line number
-     * @param string $text Use this text for the link rather than the file path
-     *
-     * @return string
-     */
-    public function formatFile($file, $line, $text = null)
-    {
-        $file = trim($file);
-
-        if (null === $text) {
-            $text = str_replace('/', \DIRECTORY_SEPARATOR, $file);
-            if (0 === strpos($text, $this->rootDir)) {
-                $text = substr($text, \strlen($this->rootDir));
-                $text = explode(\DIRECTORY_SEPARATOR, $text, 2);
-                $text = sprintf('<abbr title="%s%2$s">%s</abbr>%s', $this->rootDir, $text[0], isset($text[1]) ? \DIRECTORY_SEPARATOR.$text[1] : '');
-            }
-        }
-
-        if (0 < $line) {
-            $text .= ' at line '.$line;
-        }
-
-        if (false !== $link = $this->getFileLink($file, $line)) {
-            return sprintf('<a href="%s" title="Click to open this file" class="file_link">%s</a>', htmlspecialchars($link, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset), $text);
-        }
-
-        return $text;
-    }
-
-    /**
-     * Returns the link for a given file/line pair.
-     *
-     * @param string $file An absolute file path
-     * @param int    $line The line number
-     *
-     * @return string|false A link or false
-     */
-    public function getFileLink($file, $line)
-    {
-        if ($fmt = $this->fileLinkFormat) {
-            return \is_string($fmt) ? strtr($fmt, ['%f' => $file, '%l' => $line]) : $fmt->format($file, $line);
-        }
-
-        return false;
-    }
-
-    public function formatFileFromText($text)
-    {
-        return preg_replace_callback('/in ("|&quot;)?(.+?)\1(?: +(?:on|at))? +line (\d+)/s', function ($match) {
-            return 'in '.$this->formatFile($match[2], $match[3]);
-        }, $text);
-    }
-
-    /**
-     * @internal
-     */
-    public function formatLogMessage($message, array $context)
-    {
-        if ($context && false !== strpos($message, '{')) {
-            $replacements = [];
-            foreach ($context as $key => $val) {
-                if (is_scalar($val)) {
-                    $replacements['{'.$key.'}'] = $val;
-                }
-            }
-
-            if ($replacements) {
-                $message = strtr($message, $replacements);
-            }
-        }
-
-        return htmlspecialchars($message, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'code';
-    }
-
-    protected static function fixCodeMarkup($line)
-    {
-        // </span> ending tag from previous line
-        $opening = strpos($line, '<span');
-        $closing = strpos($line, '</span>');
-        if (false !== $closing && (false === $opening || $closing < $opening)) {
-            $line = substr_replace($line, '', $closing, 7);
-        }
-
-        // missing </span> tag at the end of line
-        $opening = strpos($line, '<span');
-        $closing = strpos($line, '</span>');
-        if (false !== $opening && (false === $closing || $closing > $opening)) {
-            $line .= '</span>';
-        }
-
-        return trim($line);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/DumpExtension.php b/vendor/symfony/twig-bridge/Extension/DumpExtension.php
deleted file mode 100644
index 2be1056234d5f2d63ddf06ee19e336d336e4ba05..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/DumpExtension.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Bridge\Twig\TokenParser\DumpTokenParser;
-use Symfony\Component\VarDumper\Cloner\ClonerInterface;
-use Symfony\Component\VarDumper\Dumper\HtmlDumper;
-use Twig\Environment;
-use Twig\Extension\AbstractExtension;
-use Twig\Template;
-use Twig\TwigFunction;
-
-/**
- * Provides integration of the dump() function with Twig.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DumpExtension extends AbstractExtension
-{
-    private $cloner;
-    private $dumper;
-
-    public function __construct(ClonerInterface $cloner, HtmlDumper $dumper = null)
-    {
-        $this->cloner = $cloner;
-        $this->dumper = $dumper;
-    }
-
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('dump', [$this, 'dump'], ['is_safe' => ['html'], 'needs_context' => true, 'needs_environment' => true]),
-        ];
-    }
-
-    public function getTokenParsers()
-    {
-        return [new DumpTokenParser()];
-    }
-
-    public function getName()
-    {
-        return 'dump';
-    }
-
-    public function dump(Environment $env, $context)
-    {
-        if (!$env->isDebug()) {
-            return null;
-        }
-
-        if (2 === \func_num_args()) {
-            $vars = [];
-            foreach ($context as $key => $value) {
-                if (!$value instanceof Template) {
-                    $vars[$key] = $value;
-                }
-            }
-
-            $vars = [$vars];
-        } else {
-            $vars = \func_get_args();
-            unset($vars[0], $vars[1]);
-        }
-
-        $dump = fopen('php://memory', 'r+b');
-        $this->dumper = $this->dumper ?: new HtmlDumper();
-        $this->dumper->setCharset($env->getCharset());
-
-        foreach ($vars as $value) {
-            $this->dumper->dump($this->cloner->cloneVar($value), $dump);
-        }
-
-        return stream_get_contents($dump, -1, 0);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/ExpressionExtension.php b/vendor/symfony/twig-bridge/Extension/ExpressionExtension.php
deleted file mode 100644
index 21f6be4d6ec6d45940077800a8952cb06ddb0283..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/ExpressionExtension.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\ExpressionLanguage\Expression;
-use Twig\Extension\AbstractExtension;
-use Twig\TwigFunction;
-
-/**
- * ExpressionExtension gives a way to create Expressions from a template.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ExpressionExtension extends AbstractExtension
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('expression', [$this, 'createExpression']),
-        ];
-    }
-
-    public function createExpression($expression)
-    {
-        return new Expression($expression);
-    }
-
-    /**
-     * Returns the name of the extension.
-     *
-     * @return string The extension name
-     */
-    public function getName()
-    {
-        return 'expression';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/FormExtension.php b/vendor/symfony/twig-bridge/Extension/FormExtension.php
deleted file mode 100644
index 84626c22c5250300ff0a68ce0aebe41116b49b31..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/FormExtension.php
+++ /dev/null
@@ -1,204 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Bridge\Twig\Form\TwigRendererInterface;
-use Symfony\Bridge\Twig\TokenParser\FormThemeTokenParser;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\Form\ChoiceList\View\ChoiceView;
-use Symfony\Component\Form\FormView;
-use Twig\Environment;
-use Twig\Extension\AbstractExtension;
-use Twig\TwigFilter;
-use Twig\TwigFunction;
-use Twig\TwigTest;
-
-/**
- * FormExtension extends Twig with form capabilities.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FormExtension extends AbstractExtension implements InitRuntimeInterface
-{
-    /**
-     * @deprecated since version 3.2, to be removed in 4.0 alongside with magic methods below
-     */
-    private $renderer;
-
-    public function __construct($renderer = null)
-    {
-        if ($renderer instanceof TwigRendererInterface) {
-            @trigger_error(sprintf('Passing a Twig Form Renderer to the "%s" constructor is deprecated since Symfony 3.2 and won\'t be possible in 4.0. Pass the Twig\Environment to the TwigRendererEngine constructor instead.', static::class), \E_USER_DEPRECATED);
-        } elseif (null !== $renderer && !(\is_array($renderer) && isset($renderer[0], $renderer[1]) && $renderer[0] instanceof ContainerInterface)) {
-            throw new \InvalidArgumentException(sprintf('Passing any arguments to the constructor of "%s" is reserved for internal use.', __CLASS__));
-        }
-        $this->renderer = $renderer;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * To be removed in 4.0
-     */
-    public function initRuntime(Environment $environment)
-    {
-        if ($this->renderer instanceof TwigRendererInterface) {
-            $this->renderer->setEnvironment($environment);
-        } elseif (\is_array($this->renderer)) {
-            $this->renderer[2] = $environment;
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTokenParsers()
-    {
-        return [
-            // {% form_theme form "SomeBundle::widgets.twig" %}
-            new FormThemeTokenParser(),
-        ];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('form_widget', null, ['node_class' => 'Symfony\Bridge\Twig\Node\SearchAndRenderBlockNode', 'is_safe' => ['html']]),
-            new TwigFunction('form_errors', null, ['node_class' => 'Symfony\Bridge\Twig\Node\SearchAndRenderBlockNode', 'is_safe' => ['html']]),
-            new TwigFunction('form_label', null, ['node_class' => 'Symfony\Bridge\Twig\Node\SearchAndRenderBlockNode', 'is_safe' => ['html']]),
-            new TwigFunction('form_row', null, ['node_class' => 'Symfony\Bridge\Twig\Node\SearchAndRenderBlockNode', 'is_safe' => ['html']]),
-            new TwigFunction('form_rest', null, ['node_class' => 'Symfony\Bridge\Twig\Node\SearchAndRenderBlockNode', 'is_safe' => ['html']]),
-            new TwigFunction('form', null, ['node_class' => 'Symfony\Bridge\Twig\Node\RenderBlockNode', 'is_safe' => ['html']]),
-            new TwigFunction('form_start', null, ['node_class' => 'Symfony\Bridge\Twig\Node\RenderBlockNode', 'is_safe' => ['html']]),
-            new TwigFunction('form_end', null, ['node_class' => 'Symfony\Bridge\Twig\Node\RenderBlockNode', 'is_safe' => ['html']]),
-            new TwigFunction('csrf_token', ['Symfony\Component\Form\FormRenderer', 'renderCsrfToken']),
-        ];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFilters()
-    {
-        return [
-            new TwigFilter('humanize', ['Symfony\Component\Form\FormRenderer', 'humanize']),
-            new TwigFilter('form_encode_currency', ['Symfony\Component\Form\FormRenderer', 'encodeCurrency'], ['is_safe' => ['html'], 'needs_environment' => true]),
-        ];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTests()
-    {
-        return [
-            new TwigTest('selectedchoice', 'Symfony\Bridge\Twig\Extension\twig_is_selected_choice'),
-            new TwigTest('rootform', 'Symfony\Bridge\Twig\Extension\twig_is_root_form'),
-        ];
-    }
-
-    /**
-     * @internal
-     */
-    public function __get($name)
-    {
-        if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
-
-            if (\is_array($this->renderer)) {
-                $renderer = $this->renderer[0]->get($this->renderer[1]);
-                if (isset($this->renderer[2]) && $renderer instanceof TwigRendererInterface) {
-                    $renderer->setEnvironment($this->renderer[2]);
-                }
-                $this->renderer = $renderer;
-            }
-        }
-
-        return $this->$name;
-    }
-
-    /**
-     * @internal
-     */
-    public function __set($name, $value)
-    {
-        if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
-        }
-
-        $this->$name = $value;
-    }
-
-    /**
-     * @internal
-     */
-    public function __isset($name)
-    {
-        if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
-        }
-
-        return isset($this->$name);
-    }
-
-    /**
-     * @internal
-     */
-    public function __unset($name)
-    {
-        if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
-        }
-
-        unset($this->$name);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'form';
-    }
-}
-
-/**
- * Returns whether a choice is selected for a given form value.
- *
- * This is a function and not callable due to performance reasons.
- *
- * @param string|array $selectedValue The selected value to compare
- *
- * @return bool Whether the choice is selected
- *
- * @see ChoiceView::isSelected()
- */
-function twig_is_selected_choice(ChoiceView $choice, $selectedValue)
-{
-    if (\is_array($selectedValue)) {
-        return \in_array($choice->value, $selectedValue, true);
-    }
-
-    return $choice->value === $selectedValue;
-}
-
-/**
- * @internal
- */
-function twig_is_root_form(FormView $formView)
-{
-    return null === $formView->parent;
-}
diff --git a/vendor/symfony/twig-bridge/Extension/HttpFoundationExtension.php b/vendor/symfony/twig-bridge/Extension/HttpFoundationExtension.php
deleted file mode 100644
index 82b9a92f7516c4173a826b8cbca41d363d8bb45a..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/HttpFoundationExtension.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\Routing\RequestContext;
-use Twig\Extension\AbstractExtension;
-use Twig\TwigFunction;
-
-/**
- * Twig extension for the Symfony HttpFoundation component.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HttpFoundationExtension extends AbstractExtension
-{
-    private $requestStack;
-    private $requestContext;
-
-    public function __construct(RequestStack $requestStack, RequestContext $requestContext = null)
-    {
-        $this->requestStack = $requestStack;
-        $this->requestContext = $requestContext;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('absolute_url', [$this, 'generateAbsoluteUrl']),
-            new TwigFunction('relative_path', [$this, 'generateRelativePath']),
-        ];
-    }
-
-    /**
-     * Returns the absolute URL for the given absolute or relative path.
-     *
-     * This method returns the path unchanged if no request is available.
-     *
-     * @param string $path The path
-     *
-     * @return string The absolute URL
-     *
-     * @see Request::getUriForPath()
-     */
-    public function generateAbsoluteUrl($path)
-    {
-        if (false !== strpos($path, '://') || '//' === substr($path, 0, 2)) {
-            return $path;
-        }
-
-        if (!$request = $this->requestStack->getMasterRequest()) {
-            if (null !== $this->requestContext && '' !== $host = $this->requestContext->getHost()) {
-                $scheme = $this->requestContext->getScheme();
-                $port = '';
-
-                if ('http' === $scheme && 80 != $this->requestContext->getHttpPort()) {
-                    $port = ':'.$this->requestContext->getHttpPort();
-                } elseif ('https' === $scheme && 443 != $this->requestContext->getHttpsPort()) {
-                    $port = ':'.$this->requestContext->getHttpsPort();
-                }
-
-                if ('#' === $path[0]) {
-                    $queryString = $this->requestContext->getQueryString();
-                    $path = $this->requestContext->getPathInfo().($queryString ? '?'.$queryString : '').$path;
-                } elseif ('?' === $path[0]) {
-                    $path = $this->requestContext->getPathInfo().$path;
-                }
-
-                if ('/' !== $path[0]) {
-                    $path = rtrim($this->requestContext->getBaseUrl(), '/').'/'.$path;
-                }
-
-                return $scheme.'://'.$host.$port.$path;
-            }
-
-            return $path;
-        }
-
-        if ('#' === $path[0]) {
-            $path = $request->getRequestUri().$path;
-        } elseif ('?' === $path[0]) {
-            $path = $request->getPathInfo().$path;
-        }
-
-        if (!$path || '/' !== $path[0]) {
-            $prefix = $request->getPathInfo();
-            $last = \strlen($prefix) - 1;
-            if ($last !== $pos = strrpos($prefix, '/')) {
-                $prefix = substr($prefix, 0, $pos).'/';
-            }
-
-            return $request->getUriForPath($prefix.$path);
-        }
-
-        return $request->getSchemeAndHttpHost().$path;
-    }
-
-    /**
-     * Returns a relative path based on the current Request.
-     *
-     * This method returns the path unchanged if no request is available.
-     *
-     * @param string $path The path
-     *
-     * @return string The relative path
-     *
-     * @see Request::getRelativeUriForPath()
-     */
-    public function generateRelativePath($path)
-    {
-        if (false !== strpos($path, '://') || '//' === substr($path, 0, 2)) {
-            return $path;
-        }
-
-        if (!$request = $this->requestStack->getMasterRequest()) {
-            return $path;
-        }
-
-        return $request->getRelativeUriForPath($path);
-    }
-
-    /**
-     * Returns the name of the extension.
-     *
-     * @return string The extension name
-     */
-    public function getName()
-    {
-        return 'request';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/HttpKernelExtension.php b/vendor/symfony/twig-bridge/Extension/HttpKernelExtension.php
deleted file mode 100644
index f8b93ada15475ea75e22c08b505ed7352b1b9c70..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/HttpKernelExtension.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Twig\Extension\AbstractExtension;
-use Twig\TwigFunction;
-
-/**
- * Provides integration with the HttpKernel component.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HttpKernelExtension extends AbstractExtension
-{
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('render', [HttpKernelRuntime::class, 'renderFragment'], ['is_safe' => ['html']]),
-            new TwigFunction('render_*', [HttpKernelRuntime::class, 'renderFragmentStrategy'], ['is_safe' => ['html']]),
-            new TwigFunction('controller', static::class.'::controller'),
-        ];
-    }
-
-    public static function controller($controller, $attributes = [], $query = [])
-    {
-        return new ControllerReference($controller, $attributes, $query);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'http_kernel';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/HttpKernelRuntime.php b/vendor/symfony/twig-bridge/Extension/HttpKernelRuntime.php
deleted file mode 100644
index fcd7c24416fbe5e28fc670b3446d9b298a95edaf..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/HttpKernelRuntime.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\Fragment\FragmentHandler;
-
-/**
- * Provides integration with the HttpKernel component.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HttpKernelRuntime
-{
-    private $handler;
-
-    public function __construct(FragmentHandler $handler)
-    {
-        $this->handler = $handler;
-    }
-
-    /**
-     * Renders a fragment.
-     *
-     * @param string|ControllerReference $uri     A URI as a string or a ControllerReference instance
-     * @param array                      $options An array of options
-     *
-     * @return string The fragment content
-     *
-     * @see FragmentHandler::render()
-     */
-    public function renderFragment($uri, $options = [])
-    {
-        $strategy = isset($options['strategy']) ? $options['strategy'] : 'inline';
-        unset($options['strategy']);
-
-        return $this->handler->render($uri, $strategy, $options);
-    }
-
-    /**
-     * Renders a fragment.
-     *
-     * @param string                     $strategy A strategy name
-     * @param string|ControllerReference $uri      A URI as a string or a ControllerReference instance
-     * @param array                      $options  An array of options
-     *
-     * @return string The fragment content
-     *
-     * @see FragmentHandler::render()
-     */
-    public function renderFragmentStrategy($strategy, $uri, $options = [])
-    {
-        return $this->handler->render($uri, $strategy, $options);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/InitRuntimeInterface.php b/vendor/symfony/twig-bridge/Extension/InitRuntimeInterface.php
deleted file mode 100644
index 5ba5e5570259347b9168a50fe3b9374dc545c919..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/InitRuntimeInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Twig\Extension\InitRuntimeInterface as TwigInitRuntimeInterface;
-
-/**
- * @deprecated to be removed in 4.x
- *
- * @internal to be removed in 4.x
- */
-interface InitRuntimeInterface extends TwigInitRuntimeInterface
-{
-}
diff --git a/vendor/symfony/twig-bridge/Extension/LogoutUrlExtension.php b/vendor/symfony/twig-bridge/Extension/LogoutUrlExtension.php
deleted file mode 100644
index e8bc6190cd65ae5dfc8a820bedccceb3f6a282e5..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/LogoutUrlExtension.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\Security\Http\Logout\LogoutUrlGenerator;
-use Twig\Extension\AbstractExtension;
-use Twig\TwigFunction;
-
-/**
- * LogoutUrlHelper provides generator functions for the logout URL to Twig.
- *
- * @author Jeremy Mikola <jmikola@gmail.com>
- */
-class LogoutUrlExtension extends AbstractExtension
-{
-    private $generator;
-
-    public function __construct(LogoutUrlGenerator $generator)
-    {
-        $this->generator = $generator;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('logout_url', [$this, 'getLogoutUrl']),
-            new TwigFunction('logout_path', [$this, 'getLogoutPath']),
-        ];
-    }
-
-    /**
-     * Generates the relative logout URL for the firewall.
-     *
-     * @param string|null $key The firewall key or null to use the current firewall key
-     *
-     * @return string The relative logout URL
-     */
-    public function getLogoutPath($key = null)
-    {
-        return $this->generator->getLogoutPath($key);
-    }
-
-    /**
-     * Generates the absolute logout URL for the firewall.
-     *
-     * @param string|null $key The firewall key or null to use the current firewall key
-     *
-     * @return string The absolute logout URL
-     */
-    public function getLogoutUrl($key = null)
-    {
-        return $this->generator->getLogoutUrl($key);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'logout_url';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/ProfilerExtension.php b/vendor/symfony/twig-bridge/Extension/ProfilerExtension.php
deleted file mode 100644
index 21214f81196ad2cb579e14b568c3a810e45d50d7..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/ProfilerExtension.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\Stopwatch\Stopwatch;
-use Twig\Extension\ProfilerExtension as BaseProfilerExtension;
-use Twig\Profiler\Profile;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ProfilerExtension extends BaseProfilerExtension
-{
-    private $stopwatch;
-    private $events;
-
-    public function __construct(Profile $profile, Stopwatch $stopwatch = null)
-    {
-        parent::__construct($profile);
-
-        $this->stopwatch = $stopwatch;
-        $this->events = new \SplObjectStorage();
-    }
-
-    public function enter(Profile $profile)
-    {
-        if ($this->stopwatch && $profile->isTemplate()) {
-            $this->events[$profile] = $this->stopwatch->start($profile->getName(), 'template');
-        }
-
-        parent::enter($profile);
-    }
-
-    public function leave(Profile $profile)
-    {
-        parent::leave($profile);
-
-        if ($this->stopwatch && $profile->isTemplate()) {
-            $this->events[$profile]->stop();
-            unset($this->events[$profile]);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'native_profiler';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/RoutingExtension.php b/vendor/symfony/twig-bridge/Extension/RoutingExtension.php
deleted file mode 100644
index 936c2d9985b66f89156ec056f8b88bc06510c03d..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/RoutingExtension.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Twig\Extension\AbstractExtension;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Node;
-use Twig\TwigFunction;
-
-/**
- * Provides integration of the Routing component with Twig.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RoutingExtension extends AbstractExtension
-{
-    private $generator;
-
-    public function __construct(UrlGeneratorInterface $generator)
-    {
-        $this->generator = $generator;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('url', [$this, 'getUrl'], ['is_safe_callback' => [$this, 'isUrlGenerationSafe']]),
-            new TwigFunction('path', [$this, 'getPath'], ['is_safe_callback' => [$this, 'isUrlGenerationSafe']]),
-        ];
-    }
-
-    /**
-     * @param string $name
-     * @param array  $parameters
-     * @param bool   $relative
-     *
-     * @return string
-     */
-    public function getPath($name, $parameters = [], $relative = false)
-    {
-        return $this->generator->generate($name, $parameters, $relative ? UrlGeneratorInterface::RELATIVE_PATH : UrlGeneratorInterface::ABSOLUTE_PATH);
-    }
-
-    /**
-     * @param string $name
-     * @param array  $parameters
-     * @param bool   $schemeRelative
-     *
-     * @return string
-     */
-    public function getUrl($name, $parameters = [], $schemeRelative = false)
-    {
-        return $this->generator->generate($name, $parameters, $schemeRelative ? UrlGeneratorInterface::NETWORK_PATH : UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    /**
-     * Determines at compile time whether the generated URL will be safe and thus
-     * saving the unneeded automatic escaping for performance reasons.
-     *
-     * The URL generation process percent encodes non-alphanumeric characters. So there is no risk
-     * that malicious/invalid characters are part of the URL. The only character within an URL that
-     * must be escaped in html is the ampersand ("&") which separates query params. So we cannot mark
-     * the URL generation as always safe, but only when we are sure there won't be multiple query
-     * params. This is the case when there are none or only one constant parameter given.
-     * E.g. we know beforehand this will be safe:
-     * - path('route')
-     * - path('route', {'param': 'value'})
-     * But the following may not:
-     * - path('route', var)
-     * - path('route', {'param': ['val1', 'val2'] }) // a sub-array
-     * - path('route', {'param1': 'value1', 'param2': 'value2'})
-     * If param1 and param2 reference placeholder in the route, it would still be safe. But we don't know.
-     *
-     * @param Node $argsNode The arguments of the path/url function
-     *
-     * @return array An array with the contexts the URL is safe
-     *
-     * @final since version 3.4, type-hint to be changed to "\Twig\Node\Node" in 4.0
-     */
-    public function isUrlGenerationSafe(\Twig_Node $argsNode)
-    {
-        // support named arguments
-        $paramsNode = $argsNode->hasNode('parameters') ? $argsNode->getNode('parameters') : (
-            $argsNode->hasNode(1) ? $argsNode->getNode(1) : null
-        );
-
-        if (null === $paramsNode || $paramsNode instanceof ArrayExpression && \count($paramsNode) <= 2 &&
-            (!$paramsNode->hasNode(1) || $paramsNode->getNode(1) instanceof ConstantExpression)
-        ) {
-            return ['html'];
-        }
-
-        return [];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'routing';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/SecurityExtension.php b/vendor/symfony/twig-bridge/Extension/SecurityExtension.php
deleted file mode 100644
index 439c31aad3df26a5e3f29f18629213b523dcc549..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/SecurityExtension.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\Security\Acl\Voter\FieldVote;
-use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
-use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException;
-use Twig\Extension\AbstractExtension;
-use Twig\TwigFunction;
-
-/**
- * SecurityExtension exposes security context features.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SecurityExtension extends AbstractExtension
-{
-    private $securityChecker;
-
-    public function __construct(AuthorizationCheckerInterface $securityChecker = null)
-    {
-        $this->securityChecker = $securityChecker;
-    }
-
-    public function isGranted($role, $object = null, $field = null)
-    {
-        if (null === $this->securityChecker) {
-            return false;
-        }
-
-        if (null !== $field) {
-            $object = new FieldVote($object, $field);
-        }
-
-        try {
-            return $this->securityChecker->isGranted($role, $object);
-        } catch (AuthenticationCredentialsNotFoundException $e) {
-            return false;
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('is_granted', [$this, 'isGranted']),
-        ];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'security';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/StopwatchExtension.php b/vendor/symfony/twig-bridge/Extension/StopwatchExtension.php
deleted file mode 100644
index 45b65d4e64d66cbaef2ba3c01e59a8866c6a57b3..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/StopwatchExtension.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Bridge\Twig\TokenParser\StopwatchTokenParser;
-use Symfony\Component\Stopwatch\Stopwatch;
-use Twig\Extension\AbstractExtension;
-
-/**
- * Twig extension for the stopwatch helper.
- *
- * @author Wouter J <wouter@wouterj.nl>
- */
-class StopwatchExtension extends AbstractExtension
-{
-    private $stopwatch;
-    private $enabled;
-
-    public function __construct(Stopwatch $stopwatch = null, $enabled = true)
-    {
-        $this->stopwatch = $stopwatch;
-        $this->enabled = $enabled;
-    }
-
-    public function getStopwatch()
-    {
-        return $this->stopwatch;
-    }
-
-    public function getTokenParsers()
-    {
-        return [
-            /*
-             * {% stopwatch foo %}
-             * Some stuff which will be recorded on the timeline
-             * {% endstopwatch %}
-             */
-            new StopwatchTokenParser(null !== $this->stopwatch && $this->enabled),
-        ];
-    }
-
-    public function getName()
-    {
-        return 'stopwatch';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/TranslationExtension.php b/vendor/symfony/twig-bridge/Extension/TranslationExtension.php
deleted file mode 100644
index 4538f771981e775b7e97fb9c9657e948fd8e5c70..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/TranslationExtension.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Bridge\Twig\NodeVisitor\TranslationDefaultDomainNodeVisitor;
-use Symfony\Bridge\Twig\NodeVisitor\TranslationNodeVisitor;
-use Symfony\Bridge\Twig\TokenParser\TransChoiceTokenParser;
-use Symfony\Bridge\Twig\TokenParser\TransDefaultDomainTokenParser;
-use Symfony\Bridge\Twig\TokenParser\TransTokenParser;
-use Symfony\Component\Translation\TranslatorInterface;
-use Twig\Extension\AbstractExtension;
-use Twig\NodeVisitor\NodeVisitorInterface;
-use Twig\TokenParser\AbstractTokenParser;
-use Twig\TwigFilter;
-
-/**
- * Provides integration of the Translation component with Twig.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TranslationExtension extends AbstractExtension
-{
-    private $translator;
-    private $translationNodeVisitor;
-
-    public function __construct(TranslatorInterface $translator = null, NodeVisitorInterface $translationNodeVisitor = null)
-    {
-        $this->translator = $translator;
-        $this->translationNodeVisitor = $translationNodeVisitor;
-    }
-
-    public function getTranslator()
-    {
-        return $this->translator;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFilters()
-    {
-        return [
-            new TwigFilter('trans', [$this, 'trans']),
-            new TwigFilter('transchoice', [$this, 'transchoice']),
-        ];
-    }
-
-    /**
-     * Returns the token parser instance to add to the existing list.
-     *
-     * @return AbstractTokenParser[]
-     */
-    public function getTokenParsers()
-    {
-        return [
-            // {% trans %}Symfony is great!{% endtrans %}
-            new TransTokenParser(),
-
-            // {% transchoice count %}
-            //     {0} There is no apples|{1} There is one apple|]1,Inf] There is {{ count }} apples
-            // {% endtranschoice %}
-            new TransChoiceTokenParser(),
-
-            // {% trans_default_domain "foobar" %}
-            new TransDefaultDomainTokenParser(),
-        ];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getNodeVisitors()
-    {
-        return [$this->getTranslationNodeVisitor(), new TranslationDefaultDomainNodeVisitor()];
-    }
-
-    public function getTranslationNodeVisitor()
-    {
-        return $this->translationNodeVisitor ?: $this->translationNodeVisitor = new TranslationNodeVisitor();
-    }
-
-    public function trans($message, array $arguments = [], $domain = null, $locale = null)
-    {
-        if (null === $this->translator) {
-            return strtr($message, $arguments);
-        }
-
-        return $this->translator->trans($message, $arguments, $domain, $locale);
-    }
-
-    public function transchoice($message, $count, array $arguments = [], $domain = null, $locale = null)
-    {
-        if (null === $this->translator) {
-            return strtr($message, $arguments);
-        }
-
-        return $this->translator->transChoice($message, $count, array_merge(['%count%' => $count], $arguments), $domain, $locale);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'translator';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/WebLinkExtension.php b/vendor/symfony/twig-bridge/Extension/WebLinkExtension.php
deleted file mode 100644
index 0ca519ee72423ecb7970a3c2b558443967317eb2..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/WebLinkExtension.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Fig\Link\GenericLinkProvider;
-use Fig\Link\Link;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Twig\Extension\AbstractExtension;
-use Twig\TwigFunction;
-
-/**
- * Twig extension for the Symfony WebLink component.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class WebLinkExtension extends AbstractExtension
-{
-    private $requestStack;
-
-    public function __construct(RequestStack $requestStack)
-    {
-        $this->requestStack = $requestStack;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('link', [$this, 'link']),
-            new TwigFunction('preload', [$this, 'preload']),
-            new TwigFunction('dns_prefetch', [$this, 'dnsPrefetch']),
-            new TwigFunction('preconnect', [$this, 'preconnect']),
-            new TwigFunction('prefetch', [$this, 'prefetch']),
-            new TwigFunction('prerender', [$this, 'prerender']),
-        ];
-    }
-
-    /**
-     * Adds a "Link" HTTP header.
-     *
-     * @param string $uri        The relation URI
-     * @param string $rel        The relation type (e.g. "preload", "prefetch", "prerender" or "dns-prefetch")
-     * @param array  $attributes The attributes of this link (e.g. "['as' => true]", "['pr' => 0.5]")
-     *
-     * @return string The relation URI
-     */
-    public function link($uri, $rel, array $attributes = [])
-    {
-        if (!$request = $this->requestStack->getMasterRequest()) {
-            return $uri;
-        }
-
-        $link = new Link($rel, $uri);
-        foreach ($attributes as $key => $value) {
-            $link = $link->withAttribute($key, $value);
-        }
-
-        $linkProvider = $request->attributes->get('_links', new GenericLinkProvider());
-        $request->attributes->set('_links', $linkProvider->withLink($link));
-
-        return $uri;
-    }
-
-    /**
-     * Preloads a resource.
-     *
-     * @param string $uri        A public path
-     * @param array  $attributes The attributes of this link (e.g. "['as' => true]", "['crossorigin' => 'use-credentials']")
-     *
-     * @return string The path of the asset
-     */
-    public function preload($uri, array $attributes = [])
-    {
-        return $this->link($uri, 'preload', $attributes);
-    }
-
-    /**
-     * Resolves a resource origin as early as possible.
-     *
-     * @param string $uri        A public path
-     * @param array  $attributes The attributes of this link (e.g. "['as' => true]", "['pr' => 0.5]")
-     *
-     * @return string The path of the asset
-     */
-    public function dnsPrefetch($uri, array $attributes = [])
-    {
-        return $this->link($uri, 'dns-prefetch', $attributes);
-    }
-
-    /**
-     * Initiates a early connection to a resource (DNS resolution, TCP handshake, TLS negotiation).
-     *
-     * @param string $uri        A public path
-     * @param array  $attributes The attributes of this link (e.g. "['as' => true]", "['pr' => 0.5]")
-     *
-     * @return string The path of the asset
-     */
-    public function preconnect($uri, array $attributes = [])
-    {
-        return $this->link($uri, 'preconnect', $attributes);
-    }
-
-    /**
-     * Indicates to the client that it should prefetch this resource.
-     *
-     * @param string $uri        A public path
-     * @param array  $attributes The attributes of this link (e.g. "['as' => true]", "['pr' => 0.5]")
-     *
-     * @return string The path of the asset
-     */
-    public function prefetch($uri, array $attributes = [])
-    {
-        return $this->link($uri, 'prefetch', $attributes);
-    }
-
-    /**
-     * Indicates to the client that it should prerender this resource .
-     *
-     * @param string $uri        A public path
-     * @param array  $attributes The attributes of this link (e.g. "['as' => true]", "['pr' => 0.5]")
-     *
-     * @return string The path of the asset
-     */
-    public function prerender($uri, array $attributes = [])
-    {
-        return $this->link($uri, 'prerender', $attributes);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/WorkflowExtension.php b/vendor/symfony/twig-bridge/Extension/WorkflowExtension.php
deleted file mode 100644
index 6ff5fad9c0313b67757d75953887d473c13dbe79..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/WorkflowExtension.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\Workflow\Registry;
-use Symfony\Component\Workflow\Transition;
-use Twig\Extension\AbstractExtension;
-use Twig\TwigFunction;
-
-/**
- * WorkflowExtension.
- *
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- */
-class WorkflowExtension extends AbstractExtension
-{
-    private $workflowRegistry;
-
-    public function __construct(Registry $workflowRegistry)
-    {
-        $this->workflowRegistry = $workflowRegistry;
-    }
-
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('workflow_can', [$this, 'canTransition']),
-            new TwigFunction('workflow_transitions', [$this, 'getEnabledTransitions']),
-            new TwigFunction('workflow_has_marked_place', [$this, 'hasMarkedPlace']),
-            new TwigFunction('workflow_marked_places', [$this, 'getMarkedPlaces']),
-        ];
-    }
-
-    /**
-     * Returns true if the transition is enabled.
-     *
-     * @param object $subject        A subject
-     * @param string $transitionName A transition
-     * @param string $name           A workflow name
-     *
-     * @return bool true if the transition is enabled
-     */
-    public function canTransition($subject, $transitionName, $name = null)
-    {
-        return $this->workflowRegistry->get($subject, $name)->can($subject, $transitionName);
-    }
-
-    /**
-     * Returns all enabled transitions.
-     *
-     * @param object $subject A subject
-     * @param string $name    A workflow name
-     *
-     * @return Transition[] All enabled transitions
-     */
-    public function getEnabledTransitions($subject, $name = null)
-    {
-        return $this->workflowRegistry->get($subject, $name)->getEnabledTransitions($subject);
-    }
-
-    /**
-     * Returns true if the place is marked.
-     *
-     * @param object $subject   A subject
-     * @param string $placeName A place name
-     * @param string $name      A workflow name
-     *
-     * @return bool true if the transition is enabled
-     */
-    public function hasMarkedPlace($subject, $placeName, $name = null)
-    {
-        return $this->workflowRegistry->get($subject, $name)->getMarking($subject)->has($placeName);
-    }
-
-    /**
-     * Returns marked places.
-     *
-     * @param object $subject        A subject
-     * @param bool   $placesNameOnly If true, returns only places name. If false returns the raw representation
-     * @param string $name           A workflow name
-     *
-     * @return string[]|int[]
-     */
-    public function getMarkedPlaces($subject, $placesNameOnly = true, $name = null)
-    {
-        $places = $this->workflowRegistry->get($subject, $name)->getMarking($subject)->getPlaces();
-
-        if ($placesNameOnly) {
-            return array_keys($places);
-        }
-
-        return $places;
-    }
-
-    public function getName()
-    {
-        return 'workflow';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Extension/YamlExtension.php b/vendor/symfony/twig-bridge/Extension/YamlExtension.php
deleted file mode 100644
index fb364346df93a51229c85f82327767ee876bfdf6..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Extension/YamlExtension.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Extension;
-
-use Symfony\Component\Yaml\Dumper as YamlDumper;
-use Symfony\Component\Yaml\Yaml;
-use Twig\Extension\AbstractExtension;
-use Twig\TwigFilter;
-
-/**
- * Provides integration of the Yaml component with Twig.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class YamlExtension extends AbstractExtension
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getFilters()
-    {
-        return [
-            new TwigFilter('yaml_encode', [$this, 'encode']),
-            new TwigFilter('yaml_dump', [$this, 'dump']),
-        ];
-    }
-
-    public function encode($input, $inline = 0, $dumpObjects = 0)
-    {
-        static $dumper;
-
-        if (null === $dumper) {
-            $dumper = new YamlDumper();
-        }
-
-        if (\defined('Symfony\Component\Yaml\Yaml::DUMP_OBJECT')) {
-            if (\is_bool($dumpObjects)) {
-                @trigger_error('Passing a boolean flag to toggle object support is deprecated since Symfony 3.1 and will be removed in 4.0. Use the Yaml::DUMP_OBJECT flag instead.', \E_USER_DEPRECATED);
-
-                $flags = $dumpObjects ? Yaml::DUMP_OBJECT : 0;
-            } else {
-                $flags = $dumpObjects;
-            }
-
-            return $dumper->dump($input, $inline, 0, $flags);
-        }
-
-        return $dumper->dump($input, $inline, 0, false, $dumpObjects);
-    }
-
-    public function dump($value, $inline = 0, $dumpObjects = false)
-    {
-        if (\is_resource($value)) {
-            return '%Resource%';
-        }
-
-        if (\is_array($value) || \is_object($value)) {
-            return '%'.\gettype($value).'% '.$this->encode($value, $inline, $dumpObjects);
-        }
-
-        return $this->encode($value, $inline, $dumpObjects);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'yaml';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Form/TwigRenderer.php b/vendor/symfony/twig-bridge/Form/TwigRenderer.php
deleted file mode 100644
index 34407d088c0fb6c96ac023c86b2e308df992aa4b..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Form/TwigRenderer.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Form;
-
-use Symfony\Component\Form\FormRenderer;
-use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
-use Twig\Environment;
-
-@trigger_error(sprintf('The %s class is deprecated since Symfony 3.4 and will be removed in 4.0. Use %s instead.', TwigRenderer::class, FormRenderer::class), \E_USER_DEPRECATED);
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 3.4, to be removed in 4.0. Use Symfony\Component\Form\FormRenderer instead.
- */
-class TwigRenderer extends FormRenderer implements TwigRendererInterface
-{
-    public function __construct(TwigRendererEngineInterface $engine, CsrfTokenManagerInterface $csrfTokenManager = null)
-    {
-        parent::__construct($engine, $csrfTokenManager);
-    }
-
-    /**
-     * Returns the engine used by this renderer.
-     *
-     * @return TwigRendererEngineInterface The renderer engine
-     */
-    public function getEngine()
-    {
-        return parent::getEngine();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setEnvironment(Environment $environment)
-    {
-        $this->getEngine()->setEnvironment($environment);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Form/TwigRendererEngine.php b/vendor/symfony/twig-bridge/Form/TwigRendererEngine.php
deleted file mode 100644
index f5097be45434ff4c534f85229757ac4937f6bb98..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Form/TwigRendererEngine.php
+++ /dev/null
@@ -1,205 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Form;
-
-use Symfony\Component\Form\AbstractRendererEngine;
-use Symfony\Component\Form\FormView;
-use Twig\Environment;
-use Twig\Template;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class TwigRendererEngine extends AbstractRendererEngine implements TwigRendererEngineInterface
-{
-    /**
-     * @var Environment
-     */
-    private $environment;
-
-    /**
-     * @var Template
-     */
-    private $template;
-
-    public function __construct(array $defaultThemes = [], Environment $environment = null)
-    {
-        if (null === $environment) {
-            @trigger_error(sprintf('Not passing a Twig Environment as the second argument for "%s" constructor is deprecated since Symfony 3.2 and won\'t be possible in 4.0.', static::class), \E_USER_DEPRECATED);
-        }
-
-        parent::__construct($defaultThemes);
-        $this->environment = $environment;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since version 3.3, to be removed in 4.0
-     */
-    public function setEnvironment(Environment $environment)
-    {
-        if ($this->environment) {
-            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.3 and will be removed in 4.0. Pass the Twig Environment as second argument of the constructor instead.', __METHOD__), \E_USER_DEPRECATED);
-        }
-
-        $this->environment = $environment;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function renderBlock(FormView $view, $resource, $blockName, array $variables = [])
-    {
-        $cacheKey = $view->vars[self::CACHE_KEY_VAR];
-
-        $context = $this->environment->mergeGlobals($variables);
-
-        ob_start();
-
-        // By contract,This method can only be called after getting the resource
-        // (which is passed to the method). Getting a resource for the first time
-        // (with an empty cache) is guaranteed to invoke loadResourcesFromTheme(),
-        // where the property $template is initialized.
-
-        // We do not call renderBlock here to avoid too many nested level calls
-        // (XDebug limits the level to 100 by default)
-        $this->template->displayBlock($blockName, $context, $this->resources[$cacheKey]);
-
-        return ob_get_clean();
-    }
-
-    /**
-     * Loads the cache with the resource for a given block name.
-     *
-     * This implementation eagerly loads all blocks of the themes assigned to the given view
-     * and all of its ancestors views. This is necessary, because Twig receives the
-     * list of blocks later. At that point, all blocks must already be loaded, for the
-     * case that the function "block()" is used in the Twig template.
-     *
-     * @see getResourceForBlock()
-     *
-     * @param string   $cacheKey  The cache key of the form view
-     * @param FormView $view      The form view for finding the applying themes
-     * @param string   $blockName The name of the block to load
-     *
-     * @return bool True if the resource could be loaded, false otherwise
-     */
-    protected function loadResourceForBlockName($cacheKey, FormView $view, $blockName)
-    {
-        // The caller guarantees that $this->resources[$cacheKey][$block] is
-        // not set, but it doesn't have to check whether $this->resources[$cacheKey]
-        // is set. If $this->resources[$cacheKey] is set, all themes for this
-        // $cacheKey are already loaded (due to the eager population, see doc comment).
-        if (isset($this->resources[$cacheKey])) {
-            // As said in the previous, the caller guarantees that
-            // $this->resources[$cacheKey][$block] is not set. Since the themes are
-            // already loaded, it can only be a non-existing block.
-            $this->resources[$cacheKey][$blockName] = false;
-
-            return false;
-        }
-
-        // Recursively try to find the block in the themes assigned to $view,
-        // then of its parent view, then of the parent view of the parent and so on.
-        // When the root view is reached in this recursion, also the default
-        // themes are taken into account.
-
-        // Check each theme whether it contains the searched block
-        if (isset($this->themes[$cacheKey])) {
-            for ($i = \count($this->themes[$cacheKey]) - 1; $i >= 0; --$i) {
-                $this->loadResourcesFromTheme($cacheKey, $this->themes[$cacheKey][$i]);
-                // CONTINUE LOADING (see doc comment)
-            }
-        }
-
-        // Check the default themes once we reach the root view without success
-        if (!$view->parent) {
-            if (!isset($this->useDefaultThemes[$cacheKey]) || $this->useDefaultThemes[$cacheKey]) {
-                for ($i = \count($this->defaultThemes) - 1; $i >= 0; --$i) {
-                    $this->loadResourcesFromTheme($cacheKey, $this->defaultThemes[$i]);
-                    // CONTINUE LOADING (see doc comment)
-                }
-            }
-        }
-
-        // Proceed with the themes of the parent view
-        if ($view->parent) {
-            $parentCacheKey = $view->parent->vars[self::CACHE_KEY_VAR];
-
-            if (!isset($this->resources[$parentCacheKey])) {
-                $this->loadResourceForBlockName($parentCacheKey, $view->parent, $blockName);
-            }
-
-            // EAGER CACHE POPULATION (see doc comment)
-            foreach ($this->resources[$parentCacheKey] as $nestedBlockName => $resource) {
-                if (!isset($this->resources[$cacheKey][$nestedBlockName])) {
-                    $this->resources[$cacheKey][$nestedBlockName] = $resource;
-                }
-            }
-        }
-
-        // Even though we loaded the themes, it can happen that none of them
-        // contains the searched block
-        if (!isset($this->resources[$cacheKey][$blockName])) {
-            // Cache that we didn't find anything to speed up further accesses
-            $this->resources[$cacheKey][$blockName] = false;
-        }
-
-        return false !== $this->resources[$cacheKey][$blockName];
-    }
-
-    /**
-     * Loads the resources for all blocks in a theme.
-     *
-     * @param string $cacheKey The cache key for storing the resource
-     * @param mixed  $theme    The theme to load the block from. This parameter
-     *                         is passed by reference, because it might be necessary
-     *                         to initialize the theme first. Any changes made to
-     *                         this variable will be kept and be available upon
-     *                         further calls to this method using the same theme.
-     */
-    protected function loadResourcesFromTheme($cacheKey, &$theme)
-    {
-        if (!$theme instanceof Template) {
-            /* @var Template $theme */
-            $theme = $this->environment->loadTemplate($theme);
-        }
-
-        if (null === $this->template) {
-            // Store the first Template instance that we find so that
-            // we can call displayBlock() later on. It doesn't matter *which*
-            // template we use for that, since we pass the used blocks manually
-            // anyway.
-            $this->template = $theme;
-        }
-
-        // Use a separate variable for the inheritance traversal, because
-        // theme is a reference and we don't want to change it.
-        $currentTheme = $theme;
-
-        $context = $this->environment->mergeGlobals([]);
-
-        // The do loop takes care of template inheritance.
-        // Add blocks from all templates in the inheritance tree, but avoid
-        // overriding blocks already set.
-        do {
-            foreach ($currentTheme->getBlocks() as $block => $blockData) {
-                if (!isset($this->resources[$cacheKey][$block])) {
-                    // The resource given back is the key to the bucket that
-                    // contains this block.
-                    $this->resources[$cacheKey][$block] = $blockData;
-                }
-            }
-        } while (false !== $currentTheme = $currentTheme->getParent($context));
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Form/TwigRendererEngineInterface.php b/vendor/symfony/twig-bridge/Form/TwigRendererEngineInterface.php
deleted file mode 100644
index a58f491f1c8a007454e5aebea92358a31ecfec17..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Form/TwigRendererEngineInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Form;
-
-use Symfony\Component\Form\FormRendererEngineInterface;
-use Twig\Environment;
-
-// BC/FC with namespaced Twig
-class_exists('Twig\Environment');
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 3.2, to be removed in 4.0.
- */
-interface TwigRendererEngineInterface extends FormRendererEngineInterface
-{
-    public function setEnvironment(Environment $environment);
-}
diff --git a/vendor/symfony/twig-bridge/Form/TwigRendererInterface.php b/vendor/symfony/twig-bridge/Form/TwigRendererInterface.php
deleted file mode 100644
index 3bcbf5992d76fd2dc2479e7c3c979bc789f63a50..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Form/TwigRendererInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Form;
-
-use Symfony\Component\Form\FormRendererInterface;
-use Twig\Environment;
-
-// BC/FC with namespaced Twig
-class_exists('Twig\Environment');
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 3.2, to be removed in 4.0.
- */
-interface TwigRendererInterface extends FormRendererInterface
-{
-    public function setEnvironment(Environment $environment);
-}
diff --git a/vendor/symfony/twig-bridge/LICENSE b/vendor/symfony/twig-bridge/LICENSE
deleted file mode 100644
index 9e936ec0448b8549e5edf08e5ac5f01491a8bfc8..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/twig-bridge/Node/DumpNode.php b/vendor/symfony/twig-bridge/Node/DumpNode.php
deleted file mode 100644
index 387f826434f2db4debd400f32ac72adf306339dd..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Node/DumpNode.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Node;
-
-/**
- * @author Julien Galenski <julien.galenski@gmail.com>
- */
-class DumpNode extends Node
-{
-    private $varPrefix;
-
-    public function __construct($varPrefix, Node $values = null, $lineno, $tag = null)
-    {
-        $nodes = [];
-        if (null !== $values) {
-            $nodes['values'] = $values;
-        }
-
-        parent::__construct($nodes, [], $lineno, $tag);
-        $this->varPrefix = $varPrefix;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->write("if (\$this->env->isDebug()) {\n")
-            ->indent();
-
-        if (!$this->hasNode('values')) {
-            // remove embedded templates (macros) from the context
-            $compiler
-                ->write(sprintf('$%svars = [];'."\n", $this->varPrefix))
-                ->write(sprintf('foreach ($context as $%1$skey => $%1$sval) {'."\n", $this->varPrefix))
-                ->indent()
-                ->write(sprintf('if (!$%sval instanceof \Twig\Template) {'."\n", $this->varPrefix))
-                ->indent()
-                ->write(sprintf('$%1$svars[$%1$skey] = $%1$sval;'."\n", $this->varPrefix))
-                ->outdent()
-                ->write("}\n")
-                ->outdent()
-                ->write("}\n")
-                ->addDebugInfo($this)
-                ->write(sprintf('\Symfony\Component\VarDumper\VarDumper::dump($%svars);'."\n", $this->varPrefix));
-        } elseif (($values = $this->getNode('values')) && 1 === $values->count()) {
-            $compiler
-                ->addDebugInfo($this)
-                ->write('\Symfony\Component\VarDumper\VarDumper::dump(')
-                ->subcompile($values->getNode(0))
-                ->raw(");\n");
-        } else {
-            $compiler
-                ->addDebugInfo($this)
-                ->write('\Symfony\Component\VarDumper\VarDumper::dump(['."\n")
-                ->indent();
-            foreach ($values as $node) {
-                $compiler->write('');
-                if ($node->hasAttribute('name')) {
-                    $compiler
-                        ->string($node->getAttribute('name'))
-                        ->raw(' => ');
-                }
-                $compiler
-                    ->subcompile($node)
-                    ->raw(",\n");
-            }
-            $compiler
-                ->outdent()
-                ->write("]);\n");
-        }
-
-        $compiler
-            ->outdent()
-            ->write("}\n");
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Node/FormThemeNode.php b/vendor/symfony/twig-bridge/Node/FormThemeNode.php
deleted file mode 100644
index 2ab4c35a3fb153664e44253f7031c13d54ffacda..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Node/FormThemeNode.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Node;
-
-use Symfony\Bridge\Twig\Form\TwigRenderer;
-use Symfony\Component\Form\FormRenderer;
-use Twig\Compiler;
-use Twig\Error\RuntimeError;
-use Twig\Node\Node;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FormThemeNode extends Node
-{
-    public function __construct(Node $form, Node $resources, $lineno, $tag = null, $only = false)
-    {
-        parent::__construct(['form' => $form, 'resources' => $resources], ['only' => (bool) $only], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        try {
-            $compiler->getEnvironment()->getRuntime(FormRenderer::class);
-            $renderer = FormRenderer::class;
-        } catch (RuntimeError $e) {
-            $renderer = TwigRenderer::class;
-        }
-
-        $compiler
-            ->addDebugInfo($this)
-            ->write('$this->env->getRuntime(')
-            ->string($renderer)
-            ->raw(')->setTheme(')
-            ->subcompile($this->getNode('form'))
-            ->raw(', ')
-            ->subcompile($this->getNode('resources'))
-            ->raw(', ')
-            ->raw(false === $this->getAttribute('only') ? 'true' : 'false')
-            ->raw(");\n");
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Node/RenderBlockNode.php b/vendor/symfony/twig-bridge/Node/RenderBlockNode.php
deleted file mode 100644
index dc7d860793f481410c8e7269b12cb8114be75de8..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Node/RenderBlockNode.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\FunctionExpression;
-
-/**
- * Compiles a call to {@link \Symfony\Component\Form\FormRendererInterface::renderBlock()}.
- *
- * The function name is used as block name. For example, if the function name
- * is "foo", the block "foo" will be rendered.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class RenderBlockNode extends FunctionExpression
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler->addDebugInfo($this);
-        $arguments = iterator_to_array($this->getNode('arguments'));
-        $compiler->write('$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->renderBlock(');
-
-        if (isset($arguments[0])) {
-            $compiler->subcompile($arguments[0]);
-            $compiler->raw(', \''.$this->getAttribute('name').'\'');
-
-            if (isset($arguments[1])) {
-                $compiler->raw(', ');
-                $compiler->subcompile($arguments[1]);
-            }
-        }
-
-        $compiler->raw(')');
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Node/SearchAndRenderBlockNode.php b/vendor/symfony/twig-bridge/Node/SearchAndRenderBlockNode.php
deleted file mode 100644
index 8925d588772a83fe6235e61a6fbfba1333208bd4..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Node/SearchAndRenderBlockNode.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FunctionExpression;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class SearchAndRenderBlockNode extends FunctionExpression
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler->addDebugInfo($this);
-        $compiler->raw('$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->searchAndRenderBlock(');
-
-        preg_match('/_([^_]+)$/', $this->getAttribute('name'), $matches);
-
-        $arguments = iterator_to_array($this->getNode('arguments'));
-        $blockNameSuffix = $matches[1];
-
-        if (isset($arguments[0])) {
-            $compiler->subcompile($arguments[0]);
-            $compiler->raw(', \''.$blockNameSuffix.'\'');
-
-            if (isset($arguments[1])) {
-                if ('label' === $blockNameSuffix) {
-                    // The "label" function expects the label in the second and
-                    // the variables in the third argument
-                    $label = $arguments[1];
-                    $variables = isset($arguments[2]) ? $arguments[2] : null;
-                    $lineno = $label->getTemplateLine();
-
-                    if ($label instanceof ConstantExpression) {
-                        // If the label argument is given as a constant, we can either
-                        // strip it away if it is empty, or integrate it into the array
-                        // of variables at compile time.
-                        $labelIsExpression = false;
-
-                        // Only insert the label into the array if it is not empty
-                        if (!twig_test_empty($label->getAttribute('value'))) {
-                            $originalVariables = $variables;
-                            $variables = new ArrayExpression([], $lineno);
-                            $labelKey = new ConstantExpression('label', $lineno);
-
-                            if (null !== $originalVariables) {
-                                foreach ($originalVariables->getKeyValuePairs() as $pair) {
-                                    // Don't copy the original label attribute over if it exists
-                                    if ((string) $labelKey !== (string) $pair['key']) {
-                                        $variables->addElement($pair['value'], $pair['key']);
-                                    }
-                                }
-                            }
-
-                            // Insert the label argument into the array
-                            $variables->addElement($label, $labelKey);
-                        }
-                    } else {
-                        // The label argument is not a constant, but some kind of
-                        // expression. This expression needs to be evaluated at runtime.
-                        // Depending on the result (whether it is null or not), the
-                        // label in the arguments should take precedence over the label
-                        // in the attributes or not.
-                        $labelIsExpression = true;
-                    }
-                } else {
-                    // All other functions than "label" expect the variables
-                    // in the second argument
-                    $label = null;
-                    $variables = $arguments[1];
-                    $labelIsExpression = false;
-                }
-
-                if (null !== $variables || $labelIsExpression) {
-                    $compiler->raw(', ');
-
-                    if (null !== $variables) {
-                        $compiler->subcompile($variables);
-                    }
-
-                    if ($labelIsExpression) {
-                        if (null !== $variables) {
-                            $compiler->raw(' + ');
-                        }
-
-                        // Check at runtime whether the label is empty.
-                        // If not, add it to the array at runtime.
-                        $compiler->raw('(twig_test_empty($_label_ = ');
-                        $compiler->subcompile($label);
-                        $compiler->raw(') ? [] : ["label" => $_label_])');
-                    }
-                }
-            }
-        }
-
-        $compiler->raw(')');
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Node/StopwatchNode.php b/vendor/symfony/twig-bridge/Node/StopwatchNode.php
deleted file mode 100644
index 538c22bb792389d04445ad2b107a2efd6b61cdfb..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Node/StopwatchNode.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Node;
-
-/**
- * Represents a stopwatch node.
- *
- * @author Wouter J <wouter@wouterj.nl>
- */
-class StopwatchNode extends Node
-{
-    public function __construct(Node $name, Node $body, AssignNameExpression $var, $lineno = 0, $tag = null)
-    {
-        parent::__construct(['body' => $body, 'name' => $name, 'var' => $var], [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write('')
-            ->subcompile($this->getNode('var'))
-            ->raw(' = ')
-            ->subcompile($this->getNode('name'))
-            ->write(";\n")
-            ->write("\$this->env->getExtension('Symfony\Bridge\Twig\Extension\StopwatchExtension')->getStopwatch()->start(")
-            ->subcompile($this->getNode('var'))
-            ->raw(", 'template');\n")
-            ->subcompile($this->getNode('body'))
-            ->write("\$this->env->getExtension('Symfony\Bridge\Twig\Extension\StopwatchExtension')->getStopwatch()->stop(")
-            ->subcompile($this->getNode('var'))
-            ->raw(");\n")
-        ;
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Node/TransDefaultDomainNode.php b/vendor/symfony/twig-bridge/Node/TransDefaultDomainNode.php
deleted file mode 100644
index 294718ba1f1faead4b842af275de6ce6b4aa3477..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Node/TransDefaultDomainNode.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\Node;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TransDefaultDomainNode extends Node
-{
-    public function __construct(AbstractExpression $expr, $lineno = 0, $tag = null)
-    {
-        parent::__construct(['expr' => $expr], [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        // noop as this node is just a marker for TranslationDefaultDomainNodeVisitor
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Node/TransNode.php b/vendor/symfony/twig-bridge/Node/TransNode.php
deleted file mode 100644
index 1b02b9c3d7da1b6e8bbdce6dd84d5d62960b6d2e..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Node/TransNode.php
+++ /dev/null
@@ -1,132 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Node;
-use Twig\Node\TextNode;
-
-// BC/FC with namespaced Twig
-class_exists('Twig\Node\Expression\ArrayExpression');
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TransNode extends Node
-{
-    public function __construct(Node $body, Node $domain = null, AbstractExpression $count = null, AbstractExpression $vars = null, AbstractExpression $locale = null, $lineno = 0, $tag = null)
-    {
-        $nodes = ['body' => $body];
-        if (null !== $domain) {
-            $nodes['domain'] = $domain;
-        }
-        if (null !== $count) {
-            $nodes['count'] = $count;
-        }
-        if (null !== $vars) {
-            $nodes['vars'] = $vars;
-        }
-        if (null !== $locale) {
-            $nodes['locale'] = $locale;
-        }
-
-        parent::__construct($nodes, [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->addDebugInfo($this);
-
-        $defaults = new ArrayExpression([], -1);
-        if ($this->hasNode('vars') && ($vars = $this->getNode('vars')) instanceof ArrayExpression) {
-            $defaults = $this->getNode('vars');
-            $vars = null;
-        }
-        list($msg, $defaults) = $this->compileString($this->getNode('body'), $defaults, (bool) $vars);
-
-        $method = !$this->hasNode('count') ? 'trans' : 'transChoice';
-
-        $compiler
-            ->write('echo $this->env->getExtension(\'Symfony\Bridge\Twig\Extension\TranslationExtension\')->getTranslator()->'.$method.'(')
-            ->subcompile($msg)
-        ;
-
-        $compiler->raw(', ');
-
-        if ($this->hasNode('count')) {
-            $compiler
-                ->subcompile($this->getNode('count'))
-                ->raw(', ')
-            ;
-        }
-
-        if (null !== $vars) {
-            $compiler
-                ->raw('array_merge(')
-                ->subcompile($defaults)
-                ->raw(', ')
-                ->subcompile($this->getNode('vars'))
-                ->raw(')')
-            ;
-        } else {
-            $compiler->subcompile($defaults);
-        }
-
-        $compiler->raw(', ');
-
-        if (!$this->hasNode('domain')) {
-            $compiler->repr('messages');
-        } else {
-            $compiler->subcompile($this->getNode('domain'));
-        }
-
-        if ($this->hasNode('locale')) {
-            $compiler
-                ->raw(', ')
-                ->subcompile($this->getNode('locale'))
-            ;
-        }
-        $compiler->raw(");\n");
-    }
-
-    protected function compileString(Node $body, ArrayExpression $vars, $ignoreStrictCheck = false)
-    {
-        if ($body instanceof ConstantExpression) {
-            $msg = $body->getAttribute('value');
-        } elseif ($body instanceof TextNode) {
-            $msg = $body->getAttribute('data');
-        } else {
-            return [$body, $vars];
-        }
-
-        preg_match_all('/(?<!%)%([^%]+)%/', $msg, $matches);
-
-        foreach ($matches[1] as $var) {
-            $key = new ConstantExpression('%'.$var.'%', $body->getTemplateLine());
-            if (!$vars->hasElement($key)) {
-                if ('count' === $var && $this->hasNode('count')) {
-                    $vars->addElement($this->getNode('count'), $key);
-                } else {
-                    $varExpr = new NameExpression($var, $body->getTemplateLine());
-                    $varExpr->setAttribute('ignore_strict_check', $ignoreStrictCheck);
-                    $vars->addElement($varExpr, $key);
-                }
-            }
-        }
-
-        return [new ConstantExpression(str_replace('%%', '%', trim($msg)), $body->getTemplateLine()), $vars];
-    }
-}
diff --git a/vendor/symfony/twig-bridge/NodeVisitor/Scope.php b/vendor/symfony/twig-bridge/NodeVisitor/Scope.php
deleted file mode 100644
index 642623f2a693ce900e7a5ea20b8592ece828330e..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/NodeVisitor/Scope.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\NodeVisitor;
-
-/**
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class Scope
-{
-    private $parent;
-    private $data = [];
-    private $left = false;
-
-    public function __construct(self $parent = null)
-    {
-        $this->parent = $parent;
-    }
-
-    /**
-     * Opens a new child scope.
-     *
-     * @return self
-     */
-    public function enter()
-    {
-        return new self($this);
-    }
-
-    /**
-     * Closes current scope and returns parent one.
-     *
-     * @return self|null
-     */
-    public function leave()
-    {
-        $this->left = true;
-
-        return $this->parent;
-    }
-
-    /**
-     * Stores data into current scope.
-     *
-     * @param string $key
-     * @param mixed  $value
-     *
-     * @return $this
-     *
-     * @throws \LogicException
-     */
-    public function set($key, $value)
-    {
-        if ($this->left) {
-            throw new \LogicException('Left scope is not mutable.');
-        }
-
-        $this->data[$key] = $value;
-
-        return $this;
-    }
-
-    /**
-     * Tests if a data is visible from current scope.
-     *
-     * @param string $key
-     *
-     * @return bool
-     */
-    public function has($key)
-    {
-        if (\array_key_exists($key, $this->data)) {
-            return true;
-        }
-
-        if (null === $this->parent) {
-            return false;
-        }
-
-        return $this->parent->has($key);
-    }
-
-    /**
-     * Returns data visible from current scope.
-     *
-     * @param string $key
-     * @param mixed  $default
-     *
-     * @return mixed
-     */
-    public function get($key, $default = null)
-    {
-        if (\array_key_exists($key, $this->data)) {
-            return $this->data[$key];
-        }
-
-        if (null === $this->parent) {
-            return $default;
-        }
-
-        return $this->parent->get($key, $default);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/NodeVisitor/TranslationDefaultDomainNodeVisitor.php b/vendor/symfony/twig-bridge/NodeVisitor/TranslationDefaultDomainNodeVisitor.php
deleted file mode 100644
index be08d0d1d13041e2495bce2f03bcb6da1fb04e53..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/NodeVisitor/TranslationDefaultDomainNodeVisitor.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\NodeVisitor;
-
-use Symfony\Bridge\Twig\Node\TransDefaultDomainNode;
-use Symfony\Bridge\Twig\Node\TransNode;
-use Twig\Environment;
-use Twig\Node\BlockNode;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\ModuleNode;
-use Twig\Node\Node;
-use Twig\Node\SetNode;
-use Twig\NodeVisitor\AbstractNodeVisitor;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TranslationDefaultDomainNodeVisitor extends AbstractNodeVisitor
-{
-    private $scope;
-
-    public function __construct()
-    {
-        $this->scope = new Scope();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doEnterNode(Node $node, Environment $env)
-    {
-        if ($node instanceof BlockNode || $node instanceof ModuleNode) {
-            $this->scope = $this->scope->enter();
-        }
-
-        if ($node instanceof TransDefaultDomainNode) {
-            if ($node->getNode('expr') instanceof ConstantExpression) {
-                $this->scope->set('domain', $node->getNode('expr'));
-
-                return $node;
-            } else {
-                $var = $this->getVarName();
-                $name = new AssignNameExpression($var, $node->getTemplateLine());
-                $this->scope->set('domain', new NameExpression($var, $node->getTemplateLine()));
-
-                return new SetNode(false, new Node([$name]), new Node([$node->getNode('expr')]), $node->getTemplateLine());
-            }
-        }
-
-        if (!$this->scope->has('domain')) {
-            return $node;
-        }
-
-        if ($node instanceof FilterExpression && \in_array($node->getNode('filter')->getAttribute('value'), ['trans', 'transchoice'])) {
-            $arguments = $node->getNode('arguments');
-            $ind = 'trans' === $node->getNode('filter')->getAttribute('value') ? 1 : 2;
-            if ($this->isNamedArguments($arguments)) {
-                if (!$arguments->hasNode('domain') && !$arguments->hasNode($ind)) {
-                    $arguments->setNode('domain', $this->scope->get('domain'));
-                }
-            } else {
-                if (!$arguments->hasNode($ind)) {
-                    if (!$arguments->hasNode($ind - 1)) {
-                        $arguments->setNode($ind - 1, new ArrayExpression([], $node->getTemplateLine()));
-                    }
-
-                    $arguments->setNode($ind, $this->scope->get('domain'));
-                }
-            }
-        } elseif ($node instanceof TransNode) {
-            if (!$node->hasNode('domain')) {
-                $node->setNode('domain', $this->scope->get('domain'));
-            }
-        }
-
-        return $node;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doLeaveNode(Node $node, Environment $env)
-    {
-        if ($node instanceof TransDefaultDomainNode) {
-            return null;
-        }
-
-        if ($node instanceof BlockNode || $node instanceof ModuleNode) {
-            $this->scope = $this->scope->leave();
-        }
-
-        return $node;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @return int
-     */
-    public function getPriority()
-    {
-        return -10;
-    }
-
-    /**
-     * @return bool
-     */
-    private function isNamedArguments($arguments)
-    {
-        foreach ($arguments as $name => $node) {
-            if (!\is_int($name)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    private function getVarName()
-    {
-        return sprintf('__internal_%s', hash('sha256', uniqid(mt_rand(), true), false));
-    }
-}
diff --git a/vendor/symfony/twig-bridge/NodeVisitor/TranslationNodeVisitor.php b/vendor/symfony/twig-bridge/NodeVisitor/TranslationNodeVisitor.php
deleted file mode 100644
index 1a399ce8ba3d413afebd4c7018c4c6fa47837bee..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/NodeVisitor/TranslationNodeVisitor.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\NodeVisitor;
-
-use Symfony\Bridge\Twig\Node\TransNode;
-use Twig\Environment;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Node\Node;
-use Twig\NodeVisitor\AbstractNodeVisitor;
-
-/**
- * TranslationNodeVisitor extracts translation messages.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TranslationNodeVisitor extends AbstractNodeVisitor
-{
-    const UNDEFINED_DOMAIN = '_undefined';
-
-    private $enabled = false;
-    private $messages = [];
-
-    public function enable()
-    {
-        $this->enabled = true;
-        $this->messages = [];
-    }
-
-    public function disable()
-    {
-        $this->enabled = false;
-        $this->messages = [];
-    }
-
-    public function getMessages()
-    {
-        return $this->messages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doEnterNode(Node $node, Environment $env)
-    {
-        if (!$this->enabled) {
-            return $node;
-        }
-
-        if (
-            $node instanceof FilterExpression &&
-            'trans' === $node->getNode('filter')->getAttribute('value') &&
-            $node->getNode('node') instanceof ConstantExpression
-        ) {
-            // extract constant nodes with a trans filter
-            $this->messages[] = [
-                $node->getNode('node')->getAttribute('value'),
-                $this->getReadDomainFromArguments($node->getNode('arguments'), 1),
-            ];
-        } elseif (
-            $node instanceof FilterExpression &&
-            'transchoice' === $node->getNode('filter')->getAttribute('value') &&
-            $node->getNode('node') instanceof ConstantExpression
-        ) {
-            // extract constant nodes with a trans filter
-            $this->messages[] = [
-                $node->getNode('node')->getAttribute('value'),
-                $this->getReadDomainFromArguments($node->getNode('arguments'), 2),
-            ];
-        } elseif ($node instanceof TransNode) {
-            // extract trans nodes
-            $this->messages[] = [
-                $node->getNode('body')->getAttribute('data'),
-                $node->hasNode('domain') ? $this->getReadDomainFromNode($node->getNode('domain')) : null,
-            ];
-        }
-
-        return $node;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doLeaveNode(Node $node, Environment $env)
-    {
-        return $node;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @return int
-     */
-    public function getPriority()
-    {
-        return 0;
-    }
-
-    /**
-     * @param int $index
-     *
-     * @return string|null
-     */
-    private function getReadDomainFromArguments(Node $arguments, $index)
-    {
-        if ($arguments->hasNode('domain')) {
-            $argument = $arguments->getNode('domain');
-        } elseif ($arguments->hasNode($index)) {
-            $argument = $arguments->getNode($index);
-        } else {
-            return null;
-        }
-
-        return $this->getReadDomainFromNode($argument);
-    }
-
-    /**
-     * @return string|null
-     */
-    private function getReadDomainFromNode(Node $node)
-    {
-        if ($node instanceof ConstantExpression) {
-            return $node->getAttribute('value');
-        }
-
-        return self::UNDEFINED_DOMAIN;
-    }
-}
diff --git a/vendor/symfony/twig-bridge/README.md b/vendor/symfony/twig-bridge/README.md
deleted file mode 100644
index 602f5a54c3dd608568a56e13257887cba558c745..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-Twig Bridge
-===========
-
-Provides integration for [Twig](https://twig.symfony.com/) with various
-Symfony components.
-
-Resources
----------
-
-  * [Contributing](https://symfony.com/doc/current/contributing/index.html)
-  * [Report issues](https://github.com/symfony/symfony/issues) and
-    [send Pull Requests](https://github.com/symfony/symfony/pulls)
-    in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_3_horizontal_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_3_horizontal_layout.html.twig
deleted file mode 100644
index d6b08f76375c48dcfca25bf4620c82c7eac4bf78..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_3_horizontal_layout.html.twig
+++ /dev/null
@@ -1,65 +0,0 @@
-{% use "bootstrap_3_layout.html.twig" %}
-
-{% block form_start -%}
-    {% set attr = attr|merge({class: (attr.class|default('') ~ ' form-horizontal')|trim}) %}
-    {{- parent() -}}
-{%- endblock form_start %}
-
-{# Labels #}
-
-{% block form_label -%}
-    {%- if label is same as(false) -%}
-        <div class="{{ block('form_label_class') }}"></div>
-    {%- else -%}
-        {%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' ' ~ block('form_label_class'))|trim}) -%}
-        {{- parent() -}}
-    {%- endif -%}
-{%- endblock form_label %}
-
-{% block form_label_class -%}
-col-sm-2
-{%- endblock form_label_class %}
-
-{# Rows #}
-
-{% block form_row -%}
-    <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
-        {{- form_label(form) -}}
-        <div class="{{ block('form_group_class') }}">
-            {{- form_widget(form) -}}
-            {{- form_errors(form) -}}
-        </div>
-{##}</div>
-{%- endblock form_row %}
-
-{% block submit_row -%}
-    <div class="form-group">{#--#}
-        <div class="{{ block('form_label_class') }}"></div>{#--#}
-        <div class="{{ block('form_group_class') }}">
-            {{- form_widget(form) -}}
-        </div>{#--#}
-    </div>
-{%- endblock submit_row %}
-
-{% block reset_row -%}
-    <div class="form-group">{#--#}
-        <div class="{{ block('form_label_class') }}"></div>{#--#}
-        <div class="{{ block('form_group_class') }}">
-            {{- form_widget(form) -}}
-        </div>{#--#}
-    </div>
-{%- endblock reset_row %}
-
-{% block form_group_class -%}
-col-sm-10
-{%- endblock form_group_class %}
-
-{% block checkbox_row -%}
-    <div class="form-group{% if not valid %} has-error{% endif %}">{#--#}
-        <div class="{{ block('form_label_class') }}"></div>{#--#}
-        <div class="{{ block('form_group_class') }}">
-            {{- form_widget(form) -}}
-            {{- form_errors(form) -}}
-        </div>{#--#}
-    </div>
-{%- endblock checkbox_row %}
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_3_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_3_layout.html.twig
deleted file mode 100644
index 708e149bce82be433b7900993f49312715a9912c..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_3_layout.html.twig
+++ /dev/null
@@ -1,169 +0,0 @@
-{% use "bootstrap_base_layout.html.twig" %}
-
-{# Widgets #}
-
-{% block form_widget_simple -%}
-    {% if type is not defined or type not in ['file', 'hidden'] %}
-        {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-control')|trim}) -%}
-    {% endif %}
-    {{- parent() -}}
-{%- endblock form_widget_simple %}
-
-{% block button_widget -%}
-    {%- set attr = attr|merge({class: (attr.class|default('btn-default') ~ ' btn')|trim}) -%}
-    {{- parent() -}}
-{%- endblock button_widget %}
-
-{% block money_widget -%}
-    {% set prepend = not (money_pattern starts with '{{') %}
-    {% set append = not (money_pattern ends with '}}') %}
-    {% if prepend or append %}
-        <div class="input-group">
-            {% if prepend %}
-                <span class="input-group-addon">{{ money_pattern|form_encode_currency }}</span>
-            {% endif %}
-            {{- block('form_widget_simple') -}}
-            {% if append %}
-                <span class="input-group-addon">{{ money_pattern|form_encode_currency }}</span>
-            {% endif %}
-        </div>
-    {% else %}
-        {{- block('form_widget_simple') -}}
-    {% endif %}
-{%- endblock money_widget %}
-
-{% block checkbox_widget -%}
-    {%- set parent_label_class = parent_label_class|default(label_attr.class|default('')) -%}
-    {% if 'checkbox-inline' in parent_label_class %}
-        {{- form_label(form, null, { widget: parent() }) -}}
-    {% else -%}
-        <div class="checkbox">
-            {{- form_label(form, null, { widget: parent() }) -}}
-        </div>
-    {%- endif -%}
-{%- endblock checkbox_widget %}
-
-{% block radio_widget -%}
-    {%- set parent_label_class = parent_label_class|default(label_attr.class|default('')) -%}
-    {%- if 'radio-inline' in parent_label_class -%}
-        {{- form_label(form, null, { widget: parent() }) -}}
-    {%- else -%}
-        <div class="radio">
-            {{- form_label(form, null, { widget: parent() }) -}}
-        </div>
-    {%- endif -%}
-{%- endblock radio_widget %}
-
-{# Labels #}
-
-{% block form_label -%}
-    {%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' control-label')|trim}) -%}
-    {{- parent() -}}
-{%- endblock form_label %}
-
-{% block choice_label -%}
-    {# remove the checkbox-inline and radio-inline class, it's only useful for embed labels #}
-    {%- set label_attr = label_attr|merge({class: label_attr.class|default('')|replace({'checkbox-inline': '', 'radio-inline': ''})|trim}) -%}
-    {{- block('form_label') -}}
-{% endblock %}
-
-{% block checkbox_label -%}
-    {%- set label_attr = label_attr|merge({'for': id}) -%}
-
-    {{- block('checkbox_radio_label') -}}
-{%- endblock checkbox_label %}
-
-{% block radio_label -%}
-    {%- set label_attr = label_attr|merge({'for': id}) -%}
-
-    {{- block('checkbox_radio_label') -}}
-{%- endblock radio_label %}
-
-{% block checkbox_radio_label -%}
-    {# Do not display the label if widget is not defined in order to prevent double label rendering #}
-    {%- if widget is defined -%}
-        {%- if required -%}
-            {%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' required')|trim}) -%}
-        {%- endif -%}
-        {%- if parent_label_class is defined -%}
-            {%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' ' ~ parent_label_class)|trim}) -%}
-        {%- endif -%}
-        {%- if label is not same as(false) and label is empty -%}
-            {%- if label_format is not empty -%}
-                {%- set label = label_format|replace({
-                    '%name%': name,
-                    '%id%': id,
-                }) -%}
-            {%- else -%}
-                {% set label = name|humanize %}
-            {%- endif -%}
-        {%- endif -%}
-        <label{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}>
-            {{- widget|raw }} {{ label is not same as(false) ? (translation_domain is same as(false) ? label : label|trans({}, translation_domain)) -}}
-        </label>
-    {%- endif -%}
-{%- endblock checkbox_radio_label %}
-
-{# Rows #}
-
-{% block form_row -%}
-    <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
-        {{- form_label(form) }} {# -#}
-        {{ form_widget(form) }} {# -#}
-        {{ form_errors(form) }} {# -#}
-    </div> {# -#}
-{%- endblock form_row %}
-
-{% block button_row -%}
-    <div class="form-group">
-        {{- form_widget(form) -}}
-    </div>
-{%- endblock button_row %}
-
-{% block choice_row -%}
-    {% set force_error = true %}
-    {{- block('form_row') }}
-{%- endblock choice_row %}
-
-{% block date_row -%}
-    {% set force_error = true %}
-    {{- block('form_row') }}
-{%- endblock date_row %}
-
-{% block time_row -%}
-    {% set force_error = true %}
-    {{- block('form_row') }}
-{%- endblock time_row %}
-
-{% block datetime_row -%}
-    {% set force_error = true %}
-    {{- block('form_row') }}
-{%- endblock datetime_row %}
-
-{% block checkbox_row -%}
-    <div class="form-group{% if not valid %} has-error{% endif %}">
-        {{- form_widget(form) -}}
-        {{- form_errors(form) -}}
-    </div>
-{%- endblock checkbox_row %}
-
-{% block radio_row -%}
-    <div class="form-group{% if not valid %} has-error{% endif %}">
-        {{- form_widget(form) -}}
-        {{- form_errors(form) -}}
-    </div>
-{%- endblock radio_row %}
-
-{# Errors #}
-
-{% block form_errors -%}
-    {% if errors|length > 0 -%}
-    {% if form is not rootform %}<span class="help-block">{% else %}<div class="alert alert-danger">{% endif %}
-    <ul class="list-unstyled">
-        {%- for error in errors -%}
-            <li><span class="glyphicon glyphicon-exclamation-sign"></span> {{ error.message }}</li>
-        {%- endfor -%}
-    </ul>
-    {% if form is not rootform %}</span>{% else %}</div>{% endif %}
-    {%- endif %}
-{%- endblock form_errors %}
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig
deleted file mode 100644
index 5673cf212730cbf37846703f5182802f49400fda..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig
+++ /dev/null
@@ -1,76 +0,0 @@
-{% use "bootstrap_4_layout.html.twig" %}
-
-{# Labels #}
-
-{% block form_label -%}
-    {%- if label is same as(false) -%}
-        <div class="{{ block('form_label_class') }}"></div>
-    {%- else -%}
-        {%- if expanded is not defined or not expanded -%}
-            {%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' col-form-label')|trim}) -%}
-        {%- endif -%}
-        {%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' ' ~ block('form_label_class'))|trim}) -%}
-        {{- parent() -}}
-    {%- endif -%}
-{%- endblock form_label %}
-
-{% block form_label_class -%}
-col-sm-2
-{%- endblock form_label_class %}
-
-{# Rows #}
-
-{% block form_row -%}
-    {%- if expanded is defined and expanded -%}
-        {{ block('fieldset_form_row') }}
-    {%- else -%}
-        <div class="form-group row{% if (not compound or force_error|default(false)) and not valid %} is-invalid{% endif %}">
-            {{- form_label(form) -}}
-            <div class="{{ block('form_group_class') }}">
-                {{- form_widget(form) -}}
-            </div>
-    {##}</div>
-    {%- endif -%}
-{%- endblock form_row %}
-
-{% block fieldset_form_row -%}
-    <fieldset class="form-group">
-        <div class="row{% if (not compound or force_error|default(false)) and not valid %} is-invalid{% endif %}">
-            {{- form_label(form) -}}
-            <div class="{{ block('form_group_class') }}">
-                {{- form_widget(form) -}}
-            </div>
-        </div>
-{##}</fieldset>
-{%- endblock fieldset_form_row %}
-
-{% block submit_row -%}
-    <div class="form-group row">{#--#}
-        <div class="{{ block('form_label_class') }}"></div>{#--#}
-        <div class="{{ block('form_group_class') }}">
-            {{- form_widget(form) -}}
-        </div>{#--#}
-    </div>
-{%- endblock submit_row %}
-
-{% block reset_row -%}
-    <div class="form-group row">{#--#}
-        <div class="{{ block('form_label_class') }}"></div>{#--#}
-        <div class="{{ block('form_group_class') }}">
-            {{- form_widget(form) -}}
-        </div>{#--#}
-    </div>
-{%- endblock reset_row %}
-
-{% block form_group_class -%}
-col-sm-10
-{%- endblock form_group_class %}
-
-{% block checkbox_row -%}
-    <div class="form-group row">{#--#}
-        <div class="{{ block('form_label_class') }}"></div>{#--#}
-        <div class="{{ block('form_group_class') }}">
-            {{- form_widget(form) -}}
-        </div>{#--#}
-    </div>
-{%- endblock checkbox_row %}
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_layout.html.twig
deleted file mode 100644
index b13d7ed9cacdf47b469e3f73d4f6712bf6b38838..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_layout.html.twig
+++ /dev/null
@@ -1,282 +0,0 @@
-{% use "bootstrap_base_layout.html.twig" %}
-
-{# Widgets #}
-
-{% block money_widget -%}
-    {%- set prepend = not (money_pattern starts with '{{') -%}
-    {%- set append = not (money_pattern ends with '}}') -%}
-    {%- if prepend or append -%}
-        <div class="input-group{{ group_class|default('') }}">
-            {%- if prepend -%}
-                <div class="input-group-prepend">
-                    <span class="input-group-text">{{ money_pattern|form_encode_currency }}</span>
-                </div>
-            {%- endif -%}
-            {{- block('form_widget_simple') -}}
-            {%- if append -%}
-                <div class="input-group-append">
-                    <span class="input-group-text">{{ money_pattern|form_encode_currency }}</span>
-                </div>
-            {%- endif -%}
-        </div>
-    {%- else -%}
-        {{- block('form_widget_simple') -}}
-    {%- endif -%}
-{%- endblock money_widget %}
-
-{% block datetime_widget -%}
-    {%- if widget != 'single_text' and not valid -%}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' form-control is-invalid')|trim}) -%}
-        {% set valid = true %}
-    {%- endif -%}
-    {{- parent() -}}
-{%- endblock datetime_widget %}
-
-{% block date_widget -%}
-    {%- if widget != 'single_text' and not valid -%}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' form-control is-invalid')|trim}) -%}
-        {% set valid = true %}
-    {%- endif -%}
-    {{- parent() -}}
-{%- endblock date_widget %}
-
-{% block time_widget -%}
-    {%- if widget != 'single_text' and not valid -%}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' form-control is-invalid')|trim}) -%}
-        {% set valid = true %}
-    {%- endif -%}
-    {{- parent() -}}
-{%- endblock time_widget %}
-
-{% block dateinterval_widget -%}
-    {%- if widget != 'single_text' and not valid -%}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' form-control is-invalid')|trim}) -%}
-        {% set valid = true %}
-    {%- endif -%}
-    {%- if widget == 'single_text' -%}
-        {{- block('form_widget_simple') -}}
-    {%- else -%}
-        {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) -%}
-        <div {{ block('widget_container_attributes') }}>
-            {%- if with_years -%}
-            <div class="col-auto">
-                {{ form_label(form.years) }}
-                {{ form_widget(form.years) }}
-            </div>
-            {%- endif -%}
-            {%- if with_months -%}
-            <div class="col-auto">
-                {{ form_label(form.months) }}
-                {{ form_widget(form.months) }}
-            </div>
-            {%- endif -%}
-            {%- if with_weeks -%}
-            <div class="col-auto">
-                {{ form_label(form.weeks) }}
-                {{ form_widget(form.weeks) }}
-            </div>
-            {%- endif -%}
-            {%- if with_days -%}
-            <div class="col-auto">
-                {{ form_label(form.days) }}
-                {{ form_widget(form.days) }}
-            </div>
-            {%- endif -%}
-            {%- if with_hours -%}
-            <div class="col-auto">
-                {{ form_label(form.hours) }}
-                {{ form_widget(form.hours) }}
-            </div>
-            {%- endif -%}
-            {%- if with_minutes -%}
-            <div class="col-auto">
-                {{ form_label(form.minutes) }}
-                {{ form_widget(form.minutes) }}
-            </div>
-            {%- endif -%}
-            {%- if with_seconds -%}
-            <div class="col-auto">
-                {{ form_label(form.seconds) }}
-                {{ form_widget(form.seconds) }}
-            </div>
-            {%- endif -%}
-            {%- if with_invert %}{{ form_widget(form.invert) }}{% endif -%}
-        </div>
-    {%- endif -%}
-{%- endblock dateinterval_widget %}
-
-{% block percent_widget -%}
-    <div class="input-group">
-        {{- block('form_widget_simple') -}}
-        <div class="input-group-append">
-            <span class="input-group-text">%</span>
-        </div>
-    </div>
-{%- endblock percent_widget %}
-
-{% block form_widget_simple -%}
-    {% if type is not defined or type != 'hidden' %}
-        {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-control' ~ (type|default('') == 'file' ? '-file' : ''))|trim}) -%}
-    {% endif %}
-    {%- if type is defined and (type == 'range' or type == 'color') %}
-        {# Attribute "required" is not supported #}
-        {%- set required = false -%}
-    {% endif %}
-    {{- parent() -}}
-{%- endblock form_widget_simple %}
-
-{%- block widget_attributes -%}
-    {%- if not valid %}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' is-invalid')|trim}) %}
-    {% endif -%}
-    {{ parent() }}
-{%- endblock widget_attributes -%}
-
-{% block button_widget -%}
-    {%- set attr = attr|merge({class: (attr.class|default('btn-secondary') ~ ' btn')|trim}) -%}
-    {{- parent() -}}
-{%- endblock button_widget %}
-
-{% block submit_widget -%}
-    {%- set attr = attr|merge({class: (attr.class|default('btn-primary'))|trim}) -%}
-    {{- parent() -}}
-{%- endblock submit_widget %}
-
-{% block checkbox_widget -%}
-    {%- set parent_label_class = parent_label_class|default(label_attr.class|default('')) -%}
-    {%- if 'checkbox-custom' in parent_label_class -%}
-        {%- set attr = attr|merge({class: (attr.class|default('') ~ ' custom-control-input')|trim}) -%}
-        <div class="custom-control custom-checkbox{{ 'checkbox-inline' in parent_label_class ? ' custom-control-inline' }}">
-            {{- form_label(form, null, { widget: parent() }) -}}
-        </div>
-    {%- else -%}
-        {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-check-input')|trim}) -%}
-        <div class="form-check{{ 'checkbox-inline' in parent_label_class ? ' form-check-inline' }}">
-            {{- form_label(form, null, { widget: parent() }) -}}
-        </div>
-    {%- endif -%}
-{%- endblock checkbox_widget %}
-
-{% block radio_widget -%}
-    {%- set parent_label_class = parent_label_class|default(label_attr.class|default('')) -%}
-    {%- if 'radio-custom' in parent_label_class -%}
-        {%- set attr = attr|merge({class: (attr.class|default('') ~ ' custom-control-input')|trim}) -%}
-        <div class="custom-control custom-radio{{ 'radio-inline' in parent_label_class ? ' custom-control-inline' }}">
-            {{- form_label(form, null, { widget: parent() }) -}}
-        </div>
-    {%- else -%}
-        {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-check-input')|trim}) -%}
-        <div class="form-check{{ 'radio-inline' in parent_label_class ? ' form-check-inline' }}">
-            {{- form_label(form, null, { widget: parent() }) -}}
-        </div>
-    {%- endif -%}
-{%- endblock radio_widget %}
-
-{% block choice_widget_expanded -%}
-    <div {{ block('widget_container_attributes') }}>
-        {%- for child in form %}
-            {{- form_widget(child, {
-                parent_label_class: label_attr.class|default(''),
-                translation_domain: choice_translation_domain,
-                valid: valid,
-            }) -}}
-        {% endfor -%}
-    </div>
-{%- endblock choice_widget_expanded %}
-
-{# Labels #}
-
-{% block form_label -%}
-    {% if label is not same as(false) -%}
-        {%- if compound is defined and compound -%}
-            {%- set element = 'legend' -%}
-            {%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' col-form-label')|trim}) -%}
-        {%- else -%}
-            {%- set label_attr = label_attr|merge({for: id}) -%}
-        {%- endif -%}
-        {% if required -%}
-            {% set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' required')|trim}) %}
-        {%- endif -%}
-        {% if label is empty -%}
-            {%- if label_format is not empty -%}
-                {% set label = label_format|replace({
-                    '%name%': name,
-                    '%id%': id,
-                }) %}
-            {%- else -%}
-                {% set label = name|humanize %}
-            {%- endif -%}
-        {%- endif -%}
-        <{{ element|default('label') }}{% if label_attr %}{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}{% endif %}>{{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}{% block form_label_errors %}{{- form_errors(form) -}}{% endblock form_label_errors %}</{{ element|default('label') }}>
-    {%- else -%}
-        {%- if errors|length > 0 -%}
-        <div id="{{ id }}_errors" class="mb-2">
-            {{- form_errors(form) -}}
-        </div>
-        {%- endif -%}
-    {%- endif -%}
-{%- endblock form_label %}
-
-{% block checkbox_radio_label -%}
-    {#- Do not display the label if widget is not defined in order to prevent double label rendering -#}
-    {%- if widget is defined -%}
-        {% set is_parent_custom = parent_label_class is defined and ('checkbox-custom' in parent_label_class or 'radio-custom' in parent_label_class) %}
-        {% set is_custom = label_attr.class is defined and ('checkbox-custom' in label_attr.class or 'radio-custom' in label_attr.class) %}
-        {%- if is_parent_custom or is_custom -%}
-            {%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' custom-control-label')|trim}) -%}
-        {%- else %}
-            {%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' form-check-label')|trim}) -%}
-        {%- endif %}
-        {%- if not compound -%}
-            {% set label_attr = label_attr|merge({'for': id}) %}
-        {%- endif -%}
-        {%- if required -%}
-            {%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' required')|trim}) -%}
-        {%- endif -%}
-        {%- if parent_label_class is defined -%}
-            {%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' ' ~ parent_label_class)|replace({'checkbox-inline': '', 'radio-inline': '', 'checkbox-custom': '', 'radio-custom': ''})|trim}) -%}
-        {%- endif -%}
-        {%- if label is not same as(false) and label is empty -%}
-            {%- if label_format is not empty -%}
-                {%- set label = label_format|replace({
-                    '%name%': name,
-                    '%id%': id,
-                }) -%}
-            {%- else -%}
-                {%- set label = name|humanize -%}
-            {%- endif -%}
-        {%- endif -%}
-
-        {{ widget|raw }}
-        <label{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}>
-            {{- label is not same as(false) ? (translation_domain is same as(false) ? label : label|trans({}, translation_domain)) -}}
-            {{- form_errors(form) -}}
-        </label>
-    {%- endif -%}
-{%- endblock checkbox_radio_label %}
-
-{# Rows #}
-
-{% block form_row -%}
-    {%- if compound is defined and compound -%}
-        {%- set element = 'fieldset' -%}
-    {%- endif -%}
-    <{{ element|default('div') }} class="form-group">
-        {{- form_label(form) -}}
-        {{- form_widget(form) -}}
-    </{{ element|default('div') }}>
-{%- endblock form_row %}
-
-{# Errors #}
-
-{% block form_errors -%}
-    {%- if errors|length > 0 -%}
-        <span class="{% if form is not rootform %}invalid-feedback{% else %}alert alert-danger{% endif %} d-block">
-            {%- for error in errors -%}
-                <span class="d-block">
-                    <span class="form-error-icon badge badge-danger text-uppercase">{{ 'Error'|trans({}, 'validators') }}</span> <span class="form-error-message">{{ error.message }}</span>
-                </span>
-            {%- endfor -%}
-        </span>
-    {%- endif %}
-{%- endblock form_errors %}
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_base_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_base_layout.html.twig
deleted file mode 100644
index 2630803573ec73dca44135cf639ba04222c253f8..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_base_layout.html.twig
+++ /dev/null
@@ -1,207 +0,0 @@
-{% use "form_div_layout.html.twig" %}
-
-{# Widgets #}
-
-{% block textarea_widget -%}
-    {% set attr = attr|merge({class: (attr.class|default('') ~ ' form-control')|trim}) %}
-    {{- parent() -}}
-{%- endblock textarea_widget %}
-
-{% block money_widget -%}
-    {% set prepend = not (money_pattern starts with '{{') %}
-    {% set append = not (money_pattern ends with '}}') %}
-    {% if prepend or append %}
-        <div class="input-group{{ group_class|default('') }}">
-            {% if prepend %}
-                <span class="input-group-addon">{{ money_pattern|form_encode_currency }}</span>
-            {% endif %}
-            {{- block('form_widget_simple') -}}
-            {% if append %}
-                <span class="input-group-addon">{{ money_pattern|form_encode_currency }}</span>
-            {% endif %}
-        </div>
-    {% else %}
-        {{- block('form_widget_simple') -}}
-    {% endif %}
-{%- endblock money_widget %}
-
-{% block percent_widget -%}
-    <div class="input-group">
-        {{- block('form_widget_simple') -}}
-        <span class="input-group-addon">%</span>
-    </div>
-{%- endblock percent_widget %}
-
-{% block datetime_widget -%}
-    {%- if widget == 'single_text' -%}
-        {{- block('form_widget_simple') -}}
-    {%- else -%}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) -%}
-        <div {{ block('widget_container_attributes') }}>
-            {{- form_errors(form.date) -}}
-            {{- form_errors(form.time) -}}
-
-            <div class="sr-only">
-                {%- if form.date.year is defined %}{{ form_label(form.date.year) }}{% endif -%}
-                {%- if form.date.month is defined %}{{ form_label(form.date.month) }}{% endif -%}
-                {%- if form.date.day is defined %}{{ form_label(form.date.day) }}{% endif -%}
-                {%- if form.time.hour is defined %}{{ form_label(form.time.hour) }}{% endif -%}
-                {%- if form.time.minute is defined %}{{ form_label(form.time.minute) }}{% endif -%}
-                {%- if form.time.second is defined %}{{ form_label(form.time.second) }}{% endif -%}
-            </div>
-
-            {{- form_widget(form.date, { datetime: true } ) -}}
-            {{- form_widget(form.time, { datetime: true } ) -}}
-        </div>
-    {%- endif -%}
-{%- endblock datetime_widget %}
-
-{% block date_widget -%}
-    {%- if widget == 'single_text' -%}
-        {{- block('form_widget_simple') -}}
-    {%- else -%}
-        {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) -%}
-        {%- if datetime is not defined or not datetime -%}
-            <div {{ block('widget_container_attributes') -}}>
-        {%- endif %}
-            <div class="sr-only">
-                {{ form_label(form.year) }}
-                {{ form_label(form.month) }}
-                {{ form_label(form.day) }}
-            </div>
-
-            {{- date_pattern|replace({
-                '{{ year }}': form_widget(form.year),
-                '{{ month }}': form_widget(form.month),
-                '{{ day }}': form_widget(form.day),
-            })|raw -}}
-        {%- if datetime is not defined or not datetime -%}
-            </div>
-        {%- endif -%}
-    {%- endif -%}
-{%- endblock date_widget %}
-
-{% block time_widget -%}
-    {%- if widget == 'single_text' -%}
-        {{- block('form_widget_simple') -}}
-    {%- else -%}
-        {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) -%}
-        {%- if datetime is not defined or false == datetime -%}
-            <div {{ block('widget_container_attributes') -}}>
-        {%- endif -%}
-        <div class="sr-only">{{ form_label(form.hour) }}</div>
-        {{- form_widget(form.hour) -}}
-        {%- if with_minutes -%}:<div class="sr-only">{{ form_label(form.minute) }}</div>{{ form_widget(form.minute) }}{%- endif -%}
-        {%- if with_seconds -%}:<div class="sr-only">{{ form_label(form.second) }}</div>{{ form_widget(form.second) }}{%- endif -%}
-        {%- if datetime is not defined or false == datetime -%}
-            </div>
-        {%- endif -%}
-    {%- endif -%}
-{%- endblock time_widget %}
-
-{%- block dateinterval_widget -%}
-    {%- if widget == 'single_text' -%}
-        {{- block('form_widget_simple') -}}
-    {%- else -%}
-        {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) -%}
-        <div {{ block('widget_container_attributes') }}>
-            {{- form_errors(form) -}}
-            <div class="table-responsive">
-                <table class="table {{ table_class|default('table-bordered table-condensed table-striped') }}" role="presentation">
-                    <thead>
-                    <tr>
-                        {%- if with_years %}<th>{{ form_label(form.years) }}</th>{% endif -%}
-                        {%- if with_months %}<th>{{ form_label(form.months) }}</th>{% endif -%}
-                        {%- if with_weeks %}<th>{{ form_label(form.weeks) }}</th>{% endif -%}
-                        {%- if with_days %}<th>{{ form_label(form.days) }}</th>{% endif -%}
-                        {%- if with_hours %}<th>{{ form_label(form.hours) }}</th>{% endif -%}
-                        {%- if with_minutes %}<th>{{ form_label(form.minutes) }}</th>{% endif -%}
-                        {%- if with_seconds %}<th>{{ form_label(form.seconds) }}</th>{% endif -%}
-                    </tr>
-                    </thead>
-                    <tbody>
-                    <tr>
-                        {%- if with_years %}<td>{{ form_widget(form.years) }}</td>{% endif -%}
-                        {%- if with_months %}<td>{{ form_widget(form.months) }}</td>{% endif -%}
-                        {%- if with_weeks %}<td>{{ form_widget(form.weeks) }}</td>{% endif -%}
-                        {%- if with_days %}<td>{{ form_widget(form.days) }}</td>{% endif -%}
-                        {%- if with_hours %}<td>{{ form_widget(form.hours) }}</td>{% endif -%}
-                        {%- if with_minutes %}<td>{{ form_widget(form.minutes) }}</td>{% endif -%}
-                        {%- if with_seconds %}<td>{{ form_widget(form.seconds) }}</td>{% endif -%}
-                    </tr>
-                    </tbody>
-                </table>
-            </div>
-            {%- if with_invert %}{{ form_widget(form.invert) }}{% endif -%}
-        </div>
-    {%- endif -%}
-{%- endblock dateinterval_widget -%}
-
-{% block choice_widget_collapsed -%}
-    {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-control')|trim}) -%}
-    {{- parent() -}}
-{%- endblock choice_widget_collapsed %}
-
-{% block choice_widget_expanded -%}
-    {%- if '-inline' in label_attr.class|default('') -%}
-        {%- for child in form %}
-            {{- form_widget(child, {
-                parent_label_class: label_attr.class|default(''),
-                translation_domain: choice_translation_domain,
-            }) -}}
-        {% endfor -%}
-    {%- else -%}
-        <div {{ block('widget_container_attributes') }}>
-            {%- for child in form %}
-                {{- form_widget(child, {
-                    parent_label_class: label_attr.class|default(''),
-                    translation_domain: choice_translation_domain,
-                }) -}}
-            {%- endfor -%}
-        </div>
-    {%- endif -%}
-{%- endblock choice_widget_expanded %}
-
-{# Labels #}
-
-{% block choice_label -%}
-    {# remove the checkbox-inline and radio-inline class, it's only useful for embed labels #}
-    {%- set label_attr = label_attr|merge({class: label_attr.class|default('')|replace({'checkbox-inline': '', 'radio-inline': '', 'checkbox-custom': '', 'radio-custom': ''})|trim}) -%}
-    {{- block('form_label') -}}
-{% endblock choice_label %}
-
-{% block checkbox_label -%}
-    {{- block('checkbox_radio_label') -}}
-{%- endblock checkbox_label %}
-
-{% block radio_label -%}
-    {{- block('checkbox_radio_label') -}}
-{%- endblock radio_label %}
-
-{# Rows #}
-
-{% block button_row -%}
-    <div class="form-group">
-        {{- form_widget(form) -}}
-    </div>
-{%- endblock button_row %}
-
-{% block choice_row -%}
-    {%- set force_error = true -%}
-    {{- block('form_row') -}}
-{%- endblock choice_row %}
-
-{% block date_row -%}
-    {%- set force_error = true -%}
-    {{- block('form_row') -}}
-{%- endblock date_row %}
-
-{% block time_row -%}
-    {%- set force_error = true -%}
-    {{- block('form_row') -}}
-{%- endblock time_row %}
-
-{% block datetime_row -%}
-    {%- set force_error = true -%}
-    {{- block('form_row') -}}
-{%- endblock datetime_row %}
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig
deleted file mode 100644
index 362e27ce954ed0eecc743185e83a50bc0dc3324c..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig
+++ /dev/null
@@ -1,409 +0,0 @@
-{# Widgets #}
-
-{%- block form_widget -%}
-    {% if compound %}
-        {{- block('form_widget_compound') -}}
-    {% else %}
-        {{- block('form_widget_simple') -}}
-    {% endif %}
-{%- endblock form_widget -%}
-
-{%- block form_widget_simple -%}
-    {%- set type = type|default('text') -%}
-    <input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>
-{%- endblock form_widget_simple -%}
-
-{%- block form_widget_compound -%}
-    <div {{ block('widget_container_attributes') }}>
-        {%- if form is rootform -%}
-            {{ form_errors(form) }}
-        {%- endif -%}
-        {{- block('form_rows') -}}
-        {{- form_rest(form) -}}
-    </div>
-{%- endblock form_widget_compound -%}
-
-{%- block collection_widget -%}
-    {% if prototype is defined and not prototype.rendered %}
-        {%- set attr = attr|merge({'data-prototype': form_row(prototype) }) -%}
-    {% endif %}
-    {{- block('form_widget') -}}
-{%- endblock collection_widget -%}
-
-{%- block textarea_widget -%}
-    <textarea {{ block('widget_attributes') }}>{{ value }}</textarea>
-{%- endblock textarea_widget -%}
-
-{%- block choice_widget -%}
-    {% if expanded %}
-        {{- block('choice_widget_expanded') -}}
-    {% else %}
-        {{- block('choice_widget_collapsed') -}}
-    {% endif %}
-{%- endblock choice_widget -%}
-
-{%- block choice_widget_expanded -%}
-    <div {{ block('widget_container_attributes') }}>
-    {%- for child in form %}
-        {{- form_widget(child) -}}
-        {{- form_label(child, null, {translation_domain: choice_translation_domain}) -}}
-    {% endfor -%}
-    </div>
-{%- endblock choice_widget_expanded -%}
-
-{%- block choice_widget_collapsed -%}
-    {%- if required and placeholder is none and not placeholder_in_choices and not multiple and (attr.size is not defined or attr.size <= 1) -%}
-        {% set required = false %}
-    {%- endif -%}
-    <select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %}>
-        {%- if placeholder is not none -%}
-            <option value=""{% if required and value is empty %} selected="selected"{% endif %}>{{ placeholder != '' ? (translation_domain is same as(false) ? placeholder : placeholder|trans({}, translation_domain)) }}</option>
-        {%- endif -%}
-        {%- if preferred_choices|length > 0 -%}
-            {% set options = preferred_choices %}
-            {{- block('choice_widget_options') -}}
-            {%- if choices|length > 0 and separator is not none -%}
-                <option disabled="disabled">{{ separator }}</option>
-            {%- endif -%}
-        {%- endif -%}
-        {%- set options = choices -%}
-        {{- block('choice_widget_options') -}}
-    </select>
-{%- endblock choice_widget_collapsed -%}
-
-{%- block choice_widget_options -%}
-    {% for group_label, choice in options %}
-        {%- if choice is iterable -%}
-            <optgroup label="{{ choice_translation_domain is same as(false) ? group_label : group_label|trans({}, choice_translation_domain) }}">
-                {% set options = choice %}
-                {{- block('choice_widget_options') -}}
-            </optgroup>
-        {%- else -%}
-            <option value="{{ choice.value }}"{% if choice.attr %}{% with { attr: choice.attr } %}{{ block('attributes') }}{% endwith %}{% endif %}{% if choice is selectedchoice(value) %} selected="selected"{% endif %}>{{ choice_translation_domain is same as(false) ? choice.label : choice.label|trans({}, choice_translation_domain) }}</option>
-        {%- endif -%}
-    {% endfor %}
-{%- endblock choice_widget_options -%}
-
-{%- block checkbox_widget -%}
-    <input type="checkbox" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
-{%- endblock checkbox_widget -%}
-
-{%- block radio_widget -%}
-    <input type="radio" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
-{%- endblock radio_widget -%}
-
-{%- block datetime_widget -%}
-    {% if widget == 'single_text' %}
-        {{- block('form_widget_simple') -}}
-    {%- else -%}
-        <div {{ block('widget_container_attributes') }}>
-            {{- form_errors(form.date) -}}
-            {{- form_errors(form.time) -}}
-            {{- form_widget(form.date) -}}
-            {{- form_widget(form.time) -}}
-        </div>
-    {%- endif -%}
-{%- endblock datetime_widget -%}
-
-{%- block date_widget -%}
-    {%- if widget == 'single_text' -%}
-        {{ block('form_widget_simple') }}
-    {%- else -%}
-        <div {{ block('widget_container_attributes') }}>
-            {{- date_pattern|replace({
-                '{{ year }}':  form_widget(form.year),
-                '{{ month }}': form_widget(form.month),
-                '{{ day }}':   form_widget(form.day),
-            })|raw -}}
-        </div>
-    {%- endif -%}
-{%- endblock date_widget -%}
-
-{%- block time_widget -%}
-    {%- if widget == 'single_text' -%}
-        {{ block('form_widget_simple') }}
-    {%- else -%}
-        {%- set vars = widget == 'text' ? { 'attr': { 'size': 1 }} : {} -%}
-        <div {{ block('widget_container_attributes') }}>
-            {{ form_widget(form.hour, vars) }}{% if with_minutes %}:{{ form_widget(form.minute, vars) }}{% endif %}{% if with_seconds %}:{{ form_widget(form.second, vars) }}{% endif %}
-        </div>
-    {%- endif -%}
-{%- endblock time_widget -%}
-
-{%- block dateinterval_widget -%}
-    {%- if widget == 'single_text' -%}
-        {{- block('form_widget_simple') -}}
-    {%- else -%}
-        <div {{ block('widget_container_attributes') }}>
-            {{- form_errors(form) -}}
-            <table class="{{ table_class|default('') }}" role="presentation">
-                <thead>
-                    <tr>
-                        {%- if with_years %}<th>{{ form_label(form.years) }}</th>{% endif -%}
-                        {%- if with_months %}<th>{{ form_label(form.months) }}</th>{% endif -%}
-                        {%- if with_weeks %}<th>{{ form_label(form.weeks) }}</th>{% endif -%}
-                        {%- if with_days %}<th>{{ form_label(form.days) }}</th>{% endif -%}
-                        {%- if with_hours %}<th>{{ form_label(form.hours) }}</th>{% endif -%}
-                        {%- if with_minutes %}<th>{{ form_label(form.minutes) }}</th>{% endif -%}
-                        {%- if with_seconds %}<th>{{ form_label(form.seconds) }}</th>{% endif -%}
-                    </tr>
-                </thead>
-                <tbody>
-                    <tr>
-                        {%- if with_years %}<td>{{ form_widget(form.years) }}</td>{% endif -%}
-                        {%- if with_months %}<td>{{ form_widget(form.months) }}</td>{% endif -%}
-                        {%- if with_weeks %}<td>{{ form_widget(form.weeks) }}</td>{% endif -%}
-                        {%- if with_days %}<td>{{ form_widget(form.days) }}</td>{% endif -%}
-                        {%- if with_hours %}<td>{{ form_widget(form.hours) }}</td>{% endif -%}
-                        {%- if with_minutes %}<td>{{ form_widget(form.minutes) }}</td>{% endif -%}
-                        {%- if with_seconds %}<td>{{ form_widget(form.seconds) }}</td>{% endif -%}
-                    </tr>
-                </tbody>
-            </table>
-            {%- if with_invert %}{{ form_widget(form.invert) }}{% endif -%}
-        </div>
-    {%- endif -%}
-{%- endblock dateinterval_widget -%}
-
-{%- block number_widget -%}
-    {# type="number" doesn't work with floats #}
-    {%- set type = type|default('text') -%}
-    {{ block('form_widget_simple') }}
-{%- endblock number_widget -%}
-
-{%- block integer_widget -%}
-    {%- set type = type|default('number') -%}
-    {{ block('form_widget_simple') }}
-{%- endblock integer_widget -%}
-
-{%- block money_widget -%}
-    {{ money_pattern|form_encode_currency(block('form_widget_simple')) }}
-{%- endblock money_widget -%}
-
-{%- block url_widget -%}
-    {%- set type = type|default('url') -%}
-    {{ block('form_widget_simple') }}
-{%- endblock url_widget -%}
-
-{%- block search_widget -%}
-    {%- set type = type|default('search') -%}
-    {{ block('form_widget_simple') }}
-{%- endblock search_widget -%}
-
-{%- block percent_widget -%}
-    {%- set type = type|default('text') -%}
-    {{ block('form_widget_simple') }} %
-{%- endblock percent_widget -%}
-
-{%- block password_widget -%}
-    {%- set type = type|default('password') -%}
-    {{ block('form_widget_simple') }}
-{%- endblock password_widget -%}
-
-{%- block hidden_widget -%}
-    {%- set type = type|default('hidden') -%}
-    {{ block('form_widget_simple') }}
-{%- endblock hidden_widget -%}
-
-{%- block email_widget -%}
-    {%- set type = type|default('email') -%}
-    {{ block('form_widget_simple') }}
-{%- endblock email_widget -%}
-
-{%- block range_widget -%}
-    {% set type = type|default('range') %}
-    {{- block('form_widget_simple') -}}
-{%- endblock range_widget %}
-
-{%- block button_widget -%}
-    {%- if label is empty -%}
-        {%- if label_format is not empty -%}
-            {% set label = label_format|replace({
-                '%name%': name,
-                '%id%': id,
-            }) %}
-        {%- elseif label is not same as(false) -%}
-            {% set label = name|humanize %}
-        {%- endif -%}
-    {%- endif -%}
-    <button type="{{ type|default('button') }}" {{ block('button_attributes') }}>{{ translation_domain is same as(false) or label is same as(false) ? label : label|trans({}, translation_domain) }}</button>
-{%- endblock button_widget -%}
-
-{%- block submit_widget -%}
-    {%- set type = type|default('submit') -%}
-    {{ block('button_widget') }}
-{%- endblock submit_widget -%}
-
-{%- block reset_widget -%}
-    {%- set type = type|default('reset') -%}
-    {{ block('button_widget') }}
-{%- endblock reset_widget -%}
-
-{%- block tel_widget -%}
-    {%- set type = type|default('tel') -%}
-    {{ block('form_widget_simple') }}
-{%- endblock tel_widget -%}
-
-{%- block color_widget -%}
-    {%- set type = type|default('color') -%}
-    {{ block('form_widget_simple') }}
-{%- endblock color_widget -%}
-
-{# Labels #}
-
-{%- block form_label -%}
-    {% if label is not same as(false) -%}
-        {% if not compound -%}
-            {% set label_attr = label_attr|merge({'for': id}) %}
-        {%- endif -%}
-        {% if required -%}
-            {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}
-        {%- endif -%}
-        {% if label is empty -%}
-            {%- if label_format is not empty -%}
-                {% set label = label_format|replace({
-                    '%name%': name,
-                    '%id%': id,
-                }) %}
-            {%- else -%}
-                {% set label = name|humanize %}
-            {%- endif -%}
-        {%- endif -%}
-        <{{ element|default('label') }}{% if label_attr %}{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}{% endif %}>
-            {%- if translation_domain is same as(false) -%}
-                {{- label -}}
-            {%- else -%}
-                {{- label|trans({}, translation_domain) -}}
-            {%- endif -%}
-        </{{ element|default('label') }}>
-    {%- endif -%}
-{%- endblock form_label -%}
-
-{%- block button_label -%}{%- endblock -%}
-
-{# Rows #}
-
-{%- block repeated_row -%}
-    {#
-    No need to render the errors here, as all errors are mapped
-    to the first child (see RepeatedTypeValidatorExtension).
-    #}
-    {{- block('form_rows') -}}
-{%- endblock repeated_row -%}
-
-{%- block form_row -%}
-    <div>
-        {{- form_label(form) -}}
-        {{- form_errors(form) -}}
-        {{- form_widget(form) -}}
-    </div>
-{%- endblock form_row -%}
-
-{%- block button_row -%}
-    <div>
-        {{- form_widget(form) -}}
-    </div>
-{%- endblock button_row -%}
-
-{%- block hidden_row -%}
-    {{ form_widget(form) }}
-{%- endblock hidden_row -%}
-
-{# Misc #}
-
-{%- block form -%}
-    {{ form_start(form) }}
-        {{- form_widget(form) -}}
-    {{ form_end(form) }}
-{%- endblock form -%}
-
-{%- block form_start -%}
-    {%- do form.setMethodRendered() -%}
-    {% set method = method|upper %}
-    {%- if method in ["GET", "POST"] -%}
-        {% set form_method = method %}
-    {%- else -%}
-        {% set form_method = "POST" %}
-    {%- endif -%}
-    <form{% if name != '' %} name="{{ name }}"{% endif %} method="{{ form_method|lower }}"{% if action != '' %} action="{{ action }}"{% endif %}{{ block('attributes') }}{% if multipart %} enctype="multipart/form-data"{% endif %}>
-    {%- if form_method != method -%}
-        <input type="hidden" name="_method" value="{{ method }}" />
-    {%- endif -%}
-{%- endblock form_start -%}
-
-{%- block form_end -%}
-    {%- if not render_rest is defined or render_rest -%}
-        {{ form_rest(form) }}
-    {%- endif -%}
-    </form>
-{%- endblock form_end -%}
-
-{%- block form_errors -%}
-    {%- if errors|length > 0 -%}
-    <ul>
-        {%- for error in errors -%}
-            <li>{{ error.message }}</li>
-        {%- endfor -%}
-    </ul>
-    {%- endif -%}
-{%- endblock form_errors -%}
-
-{%- block form_rest -%}
-    {% for child in form -%}
-        {% if not child.rendered %}
-            {{- form_row(child) -}}
-        {% endif %}
-    {%- endfor -%}
-
-    {% if not form.methodRendered and form is rootform %}
-        {%- do form.setMethodRendered() -%}
-        {% set method = method|upper %}
-        {%- if method in ["GET", "POST"] -%}
-            {% set form_method = method %}
-        {%- else -%}
-            {% set form_method = "POST" %}
-        {%- endif -%}
-
-        {%- if form_method != method -%}
-            <input type="hidden" name="_method" value="{{ method }}" />
-        {%- endif -%}
-    {% endif -%}
-{% endblock form_rest %}
-
-{# Support #}
-
-{%- block form_rows -%}
-    {% for child in form %}
-        {{- form_row(child) -}}
-    {% endfor %}
-{%- endblock form_rows -%}
-
-{%- block widget_attributes -%}
-    id="{{ id }}" name="{{ full_name }}"
-    {%- if disabled %} disabled="disabled"{% endif -%}
-    {%- if required %} required="required"{% endif -%}
-    {{ block('attributes') }}
-{%- endblock widget_attributes -%}
-
-{%- block widget_container_attributes -%}
-    {%- if id is not empty %}id="{{ id }}"{% endif -%}
-    {{ block('attributes') }}
-{%- endblock widget_container_attributes -%}
-
-{%- block button_attributes -%}
-    id="{{ id }}" name="{{ full_name }}"{% if disabled %} disabled="disabled"{% endif -%}
-    {{ block('attributes') }}
-{%- endblock button_attributes -%}
-
-{% block attributes -%}
-    {%- for attrname, attrvalue in attr -%}
-        {{- " " -}}
-        {%- if attrname in ['placeholder', 'title'] -%}
-            {{- attrname }}="{{ translation_domain is same as(false) or attrvalue is null ? attrvalue : attrvalue|trans({}, translation_domain) }}"
-        {%- elseif attrvalue is same as(true) -%}
-            {{- attrname }}="{{ attrname }}"
-        {%- elseif attrvalue is not same as(false) -%}
-            {{- attrname }}="{{ attrvalue }}"
-        {%- endif -%}
-    {%- endfor -%}
-{%- endblock attributes -%}
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/form_table_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/form_table_layout.html.twig
deleted file mode 100644
index 39274c6c8d058a2d38a56f985d027797f7267e65..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Resources/views/Form/form_table_layout.html.twig
+++ /dev/null
@@ -1,44 +0,0 @@
-{% use "form_div_layout.html.twig" %}
-
-{%- block form_row -%}
-    <tr>
-        <td>
-            {{- form_label(form) -}}
-        </td>
-        <td>
-            {{- form_errors(form) -}}
-            {{- form_widget(form) -}}
-        </td>
-    </tr>
-{%- endblock form_row -%}
-
-{%- block button_row -%}
-    <tr>
-        <td></td>
-        <td>
-            {{- form_widget(form) -}}
-        </td>
-    </tr>
-{%- endblock button_row -%}
-
-{%- block hidden_row -%}
-    <tr style="display: none">
-        <td colspan="2">
-            {{- form_widget(form) -}}
-        </td>
-    </tr>
-{%- endblock hidden_row -%}
-
-{%- block form_widget_compound -%}
-    <table {{ block('widget_container_attributes') }}>
-        {%- if form is rootform and errors|length > 0 -%}
-        <tr>
-            <td colspan="2">
-                {{- form_errors(form) -}}
-            </td>
-        </tr>
-        {%- endif -%}
-        {{- block('form_rows') -}}
-        {{- form_rest(form) -}}
-    </table>
-{%- endblock form_widget_compound -%}
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/foundation_5_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/foundation_5_layout.html.twig
deleted file mode 100644
index 7876be3e43391425524f75ace0f94d44ceda19ee..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Resources/views/Form/foundation_5_layout.html.twig
+++ /dev/null
@@ -1,328 +0,0 @@
-{% extends "form_div_layout.html.twig" %}
-
-{# Based on Foundation 5 Doc #}
-{# Widgets #}
-
-{% block form_widget_simple -%}
-    {% if errors|length > 0 -%}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' error')|trim}) %}
-    {% endif %}
-    {{- parent() -}}
-{%- endblock form_widget_simple %}
-
-{% block textarea_widget -%}
-    {% if errors|length > 0 -%}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' error')|trim}) %}
-    {% endif %}
-    {{- parent() -}}
-{%- endblock textarea_widget %}
-
-{% block button_widget -%}
-    {% set attr = attr|merge({class: (attr.class|default('') ~ ' button')|trim}) %}
-    {{- parent() -}}
-{%- endblock button_widget %}
-
-{% block money_widget -%}
-    <div class="row collapse">
-        {% set prepend = '{{' == money_pattern[0:2] %}
-        {% if not prepend %}
-            <div class="small-3 large-2 columns">
-                <span class="prefix">{{ money_pattern|form_encode_currency }}</span>
-            </div>
-        {% endif %}
-        <div class="small-9 large-10 columns">
-            {{- block('form_widget_simple') -}}
-        </div>
-        {% if prepend %}
-            <div class="small-3 large-2 columns">
-                <span class="postfix">{{ money_pattern|form_encode_currency }}</span>
-            </div>
-        {% endif %}
-    </div>
-{%- endblock money_widget %}
-
-{% block percent_widget -%}
-    <div class="row collapse">
-        <div class="small-9 large-10 columns">
-            {{- block('form_widget_simple') -}}
-        </div>
-        <div class="small-3 large-2 columns">
-            <span class="postfix">%</span>
-        </div>
-    </div>
-{%- endblock percent_widget %}
-
-{% block datetime_widget -%}
-    {% if widget == 'single_text' %}
-        {{- block('form_widget_simple') -}}
-    {% else %}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' row')|trim}) %}
-        <div class="row">
-            <div class="large-7 columns">{{ form_errors(form.date) }}</div>
-            <div class="large-5 columns">{{ form_errors(form.time) }}</div>
-        </div>
-        <div {{ block('widget_container_attributes') }}>
-            <div class="large-7 columns">{{ form_widget(form.date, { datetime: true } ) }}</div>
-            <div class="large-5 columns">{{ form_widget(form.time, { datetime: true } ) }}</div>
-        </div>
-    {% endif %}
-{%- endblock datetime_widget %}
-
-{% block date_widget -%}
-    {% if widget == 'single_text' %}
-        {{- block('form_widget_simple') -}}
-    {% else %}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' row')|trim}) %}
-        {% if datetime is not defined or not datetime %}
-            <div {{ block('widget_container_attributes') }}>
-        {% endif %}
-        {{- date_pattern|replace({
-            '{{ year }}': '<div class="large-4 columns">' ~ form_widget(form.year) ~ '</div>',
-            '{{ month }}': '<div class="large-4 columns">' ~ form_widget(form.month) ~ '</div>',
-            '{{ day }}': '<div class="large-4 columns">' ~ form_widget(form.day) ~ '</div>',
-        })|raw -}}
-        {% if datetime is not defined or not datetime %}
-            </div>
-        {% endif %}
-    {% endif %}
-{%- endblock date_widget %}
-
-{% block time_widget -%}
-    {% if widget == 'single_text' %}
-        {{- block('form_widget_simple') -}}
-    {% else %}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' row')|trim}) %}
-        {% if datetime is not defined or false == datetime %}
-            <div {{ block('widget_container_attributes') -}}>
-        {% endif %}
-        {% if with_seconds %}
-            <div class="large-4 columns">{{ form_widget(form.hour) }}</div>
-            <div class="large-4 columns">
-                <div class="row collapse">
-                    <div class="small-3 large-2 columns">
-                        <span class="prefix">:</span>
-                    </div>
-                    <div class="small-9 large-10 columns">
-                        {{ form_widget(form.minute) }}
-                    </div>
-                </div>
-            </div>
-            <div class="large-4 columns">
-                <div class="row collapse">
-                    <div class="small-3 large-2 columns">
-                        <span class="prefix">:</span>
-                    </div>
-                    <div class="small-9 large-10 columns">
-                        {{ form_widget(form.second) }}
-                    </div>
-                </div>
-            </div>
-        {% else %}
-            <div class="large-6 columns">{{ form_widget(form.hour) }}</div>
-            <div class="large-6 columns">
-                <div class="row collapse">
-                    <div class="small-3 large-2 columns">
-                        <span class="prefix">:</span>
-                    </div>
-                    <div class="small-9 large-10 columns">
-                        {{ form_widget(form.minute) }}
-                    </div>
-                </div>
-            </div>
-        {% endif %}
-        {% if datetime is not defined or false == datetime %}
-            </div>
-        {% endif %}
-    {% endif %}
-{%- endblock time_widget %}
-
-{% block choice_widget_collapsed -%}
-    {% if errors|length > 0 -%}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' error')|trim}) %}
-    {% endif %}
-
-    {% if multiple -%}
-        {% set attr = attr|merge({style: (attr.style|default('') ~ ' height: auto; background-image: none;')|trim}) %}
-    {% endif %}
-
-    {% if required and placeholder is none and not placeholder_in_choices and not multiple -%}
-        {% set required = false %}
-    {%- endif -%}
-    <select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple" data-customforms="disabled"{% endif %}>
-        {% if placeholder is not none -%}
-            <option value=""{% if required and value is empty %} selected="selected"{% endif %}>{{ translation_domain is same as(false) ? placeholder : placeholder|trans({}, translation_domain) }}</option>
-        {%- endif %}
-        {%- if preferred_choices|length > 0 -%}
-            {% set options = preferred_choices %}
-            {{- block('choice_widget_options') -}}
-            {% if choices|length > 0 and separator is not none -%}
-                <option disabled="disabled">{{ separator }}</option>
-            {%- endif %}
-        {%- endif -%}
-        {% set options = choices -%}
-        {{- block('choice_widget_options') -}}
-    </select>
-{%- endblock choice_widget_collapsed %}
-
-{% block choice_widget_expanded -%}
-    {% if '-inline' in label_attr.class|default('') %}
-        <ul class="inline-list">
-            {% for child in form %}
-                <li>{{ form_widget(child, {
-                        parent_label_class: label_attr.class|default(''),
-                    }) }}</li>
-            {% endfor %}
-        </ul>
-    {% else %}
-        <div {{ block('widget_container_attributes') }}>
-            {% for child in form %}
-                {{ form_widget(child, {
-                    parent_label_class: label_attr.class|default(''),
-                }) }}
-            {% endfor %}
-        </div>
-    {% endif %}
-{%- endblock choice_widget_expanded %}
-
-{% block checkbox_widget -%}
-    {% set parent_label_class = parent_label_class|default('') %}
-    {% if errors|length > 0 -%}
-        {% set attr = attr|merge({class: (attr.class|default('') ~ ' error')|trim}) %}
-    {% endif %}
-    {% if 'checkbox-inline' in parent_label_class %}
-        {{ form_label(form, null, { widget: parent() }) }}
-    {% else %}
-        <div class="checkbox">
-            {{ form_label(form, null, { widget: parent() }) }}
-        </div>
-    {% endif %}
-{%- endblock checkbox_widget %}
-
-{% block radio_widget -%}
-    {% set parent_label_class = parent_label_class|default('') %}
-    {% if 'radio-inline' in parent_label_class %}
-        {{ form_label(form, null, { widget: parent() }) }}
-    {% else %}
-        {% if errors|length > 0 -%}
-            {% set attr = attr|merge({class: (attr.class|default('') ~ ' error')|trim}) %}
-        {% endif %}
-        <div class="radio">
-            {{ form_label(form, null, { widget: parent() }) }}
-        </div>
-    {% endif %}
-{%- endblock radio_widget %}
-
-{# Labels #}
-
-{% block form_label -%}
-    {% if errors|length > 0 -%}
-        {% set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' error')|trim}) %}
-    {% endif %}
-    {{- parent() -}}
-{%- endblock form_label %}
-
-{% block choice_label -%}
-    {% if errors|length > 0 -%}
-        {% set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' error')|trim}) %}
-    {% endif %}
-    {# remove the checkbox-inline and radio-inline class, it's only useful for embed labels #}
-    {% set label_attr = label_attr|merge({class: label_attr.class|default('')|replace({'checkbox-inline': '', 'radio-inline': ''})|trim}) %}
-    {{- block('form_label') -}}
-{%- endblock choice_label %}
-
-{% block checkbox_label -%}
-    {{- block('checkbox_radio_label') -}}
-{%- endblock checkbox_label %}
-
-{% block radio_label -%}
-    {{- block('checkbox_radio_label') -}}
-{%- endblock radio_label %}
-
-{% block checkbox_radio_label -%}
-    {% if required %}
-        {% set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' required')|trim}) %}
-    {% endif %}
-    {% if errors|length > 0 -%}
-        {% set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' error')|trim}) %}
-    {% endif %}
-    {% if parent_label_class is defined %}
-        {% set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ parent_label_class)|trim}) %}
-    {% endif %}
-    {% if label is empty %}
-        {%- if label_format is not empty -%}
-            {% set label = label_format|replace({
-                '%name%': name,
-                '%id%': id,
-            }) %}
-        {%- else -%}
-            {% set label = name|humanize %}
-        {%- endif -%}
-    {% endif %}
-    <label{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}>
-        {{ widget|raw }}
-        {{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}
-    </label>
-{%- endblock checkbox_radio_label %}
-
-{# Rows #}
-
-{% block form_row -%}
-    <div class="row">
-        <div class="large-12 columns{% if (not compound or force_error|default(false)) and not valid %} error{% endif %}">
-            {{ form_label(form) }}
-            {{ form_widget(form) }}
-            {{ form_errors(form) }}
-        </div>
-    </div>
-{%- endblock form_row %}
-
-{% block choice_row -%}
-    {% set force_error = true %}
-    {{ block('form_row') }}
-{%- endblock choice_row %}
-
-{% block date_row -%}
-    {% set force_error = true %}
-    {{ block('form_row') }}
-{%- endblock date_row %}
-
-{% block time_row -%}
-    {% set force_error = true %}
-    {{ block('form_row') }}
-{%- endblock time_row %}
-
-{% block datetime_row -%}
-    {% set force_error = true %}
-    {{ block('form_row') }}
-{%- endblock datetime_row %}
-
-{% block checkbox_row -%}
-    <div class="row">
-        <div class="large-12 columns{% if not valid %} error{% endif %}">
-            {{ form_widget(form) }}
-            {{ form_errors(form) }}
-        </div>
-    </div>
-{%- endblock checkbox_row %}
-
-{% block radio_row -%}
-    <div class="row">
-        <div class="large-12 columns{% if not valid %} error{% endif %}">
-            {{ form_widget(form) }}
-            {{ form_errors(form) }}
-        </div>
-    </div>
-{%- endblock radio_row %}
-
-{# Errors #}
-
-{% block form_errors -%}
-    {% if errors|length > 0 -%}
-        {% if form is not rootform %}<small class="error">{% else %}<div data-alert class="alert-box alert">{% endif %}
-        {%- for error in errors -%}
-            {{ error.message }}
-            {% if not loop.last %}, {% endif %}
-        {%- endfor -%}
-        {% if form is not rootform %}</small>{% else %}</div>{% endif %}
-    {%- endif %}
-{%- endblock form_errors %}
diff --git a/vendor/symfony/twig-bridge/Tests/AppVariableTest.php b/vendor/symfony/twig-bridge/Tests/AppVariableTest.php
deleted file mode 100644
index eb132e72022ba9192f73cc5e0ea9d32473ddb330..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/AppVariableTest.php
+++ /dev/null
@@ -1,264 +0,0 @@
-<?php
-
-namespace Symfony\Bridge\Twig\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\AppVariable;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Session;
-
-class AppVariableTest extends TestCase
-{
-    /**
-     * @var AppVariable
-     */
-    protected $appVariable;
-
-    protected function setUp()
-    {
-        $this->appVariable = new AppVariable();
-    }
-
-    /**
-     * @dataProvider debugDataProvider
-     */
-    public function testDebug($debugFlag)
-    {
-        $this->appVariable->setDebug($debugFlag);
-
-        $this->assertEquals($debugFlag, $this->appVariable->getDebug());
-    }
-
-    public function debugDataProvider()
-    {
-        return [
-            'debug on' => [true],
-            'debug off' => [false],
-        ];
-    }
-
-    public function testEnvironment()
-    {
-        $this->appVariable->setEnvironment('dev');
-
-        $this->assertEquals('dev', $this->appVariable->getEnvironment());
-    }
-
-    /**
-     * @runInSeparateProcess
-     */
-    public function testGetSession()
-    {
-        $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
-        $request = $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')->getMock();
-        $request->method('getSession')->willReturn($session);
-
-        $this->setRequestStack($request);
-
-        $this->assertEquals($session, $this->appVariable->getSession());
-    }
-
-    public function testGetSessionWithNoRequest()
-    {
-        $this->setRequestStack(null);
-
-        $this->assertNull($this->appVariable->getSession());
-    }
-
-    public function testGetRequest()
-    {
-        $this->setRequestStack($request = new Request());
-
-        $this->assertEquals($request, $this->appVariable->getRequest());
-    }
-
-    public function testGetToken()
-    {
-        $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock();
-        $this->appVariable->setTokenStorage($tokenStorage);
-
-        $token = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\TokenInterface')->getMock();
-        $tokenStorage->method('getToken')->willReturn($token);
-
-        $this->assertEquals($token, $this->appVariable->getToken());
-    }
-
-    public function testGetUser()
-    {
-        $this->setTokenStorage($user = $this->getMockBuilder('Symfony\Component\Security\Core\User\UserInterface')->getMock());
-
-        $this->assertEquals($user, $this->appVariable->getUser());
-    }
-
-    public function testGetUserWithUsernameAsTokenUser()
-    {
-        $this->setTokenStorage($user = 'username');
-
-        $this->assertNull($this->appVariable->getUser());
-    }
-
-    public function testGetTokenWithNoToken()
-    {
-        $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock();
-        $this->appVariable->setTokenStorage($tokenStorage);
-
-        $this->assertNull($this->appVariable->getToken());
-    }
-
-    public function testGetUserWithNoToken()
-    {
-        $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock();
-        $this->appVariable->setTokenStorage($tokenStorage);
-
-        $this->assertNull($this->appVariable->getUser());
-    }
-
-    public function testEnvironmentNotSet()
-    {
-        $this->expectException('RuntimeException');
-        $this->appVariable->getEnvironment();
-    }
-
-    public function testDebugNotSet()
-    {
-        $this->expectException('RuntimeException');
-        $this->appVariable->getDebug();
-    }
-
-    public function testGetTokenWithTokenStorageNotSet()
-    {
-        $this->expectException('RuntimeException');
-        $this->appVariable->getToken();
-    }
-
-    public function testGetUserWithTokenStorageNotSet()
-    {
-        $this->expectException('RuntimeException');
-        $this->appVariable->getUser();
-    }
-
-    public function testGetRequestWithRequestStackNotSet()
-    {
-        $this->expectException('RuntimeException');
-        $this->appVariable->getRequest();
-    }
-
-    public function testGetSessionWithRequestStackNotSet()
-    {
-        $this->expectException('RuntimeException');
-        $this->appVariable->getSession();
-    }
-
-    public function testGetFlashesWithNoRequest()
-    {
-        $this->setRequestStack(null);
-
-        $this->assertEquals([], $this->appVariable->getFlashes());
-    }
-
-    /**
-     * @runInSeparateProcess
-     */
-    public function testGetFlashesWithNoSessionStarted()
-    {
-        $flashMessages = $this->setFlashMessages(false);
-        $this->assertEquals($flashMessages, $this->appVariable->getFlashes());
-    }
-
-    /**
-     * @runInSeparateProcess
-     */
-    public function testGetFlashes()
-    {
-        $flashMessages = $this->setFlashMessages();
-        $this->assertEquals($flashMessages, $this->appVariable->getFlashes(null));
-
-        $flashMessages = $this->setFlashMessages();
-        $this->assertEquals($flashMessages, $this->appVariable->getFlashes(''));
-
-        $flashMessages = $this->setFlashMessages();
-        $this->assertEquals($flashMessages, $this->appVariable->getFlashes([]));
-
-        $this->setFlashMessages();
-        $this->assertEquals([], $this->appVariable->getFlashes('this-does-not-exist'));
-
-        $this->setFlashMessages();
-        $this->assertEquals(
-            ['this-does-not-exist' => []],
-            $this->appVariable->getFlashes(['this-does-not-exist'])
-        );
-
-        $flashMessages = $this->setFlashMessages();
-        $this->assertEquals($flashMessages['notice'], $this->appVariable->getFlashes('notice'));
-
-        $flashMessages = $this->setFlashMessages();
-        $this->assertEquals(
-            ['notice' => $flashMessages['notice']],
-            $this->appVariable->getFlashes(['notice'])
-        );
-
-        $flashMessages = $this->setFlashMessages();
-        $this->assertEquals(
-            ['notice' => $flashMessages['notice'], 'this-does-not-exist' => []],
-            $this->appVariable->getFlashes(['notice', 'this-does-not-exist'])
-        );
-
-        $flashMessages = $this->setFlashMessages();
-        $this->assertEquals(
-            ['notice' => $flashMessages['notice'], 'error' => $flashMessages['error']],
-            $this->appVariable->getFlashes(['notice', 'error'])
-        );
-
-        $this->assertEquals(
-            ['warning' => $flashMessages['warning']],
-            $this->appVariable->getFlashes(['warning']),
-            'After getting some flash types (e.g. "notice" and "error"), the rest of flash messages must remain (e.g. "warning").'
-        );
-
-        $this->assertEquals(
-            ['this-does-not-exist' => []],
-            $this->appVariable->getFlashes(['this-does-not-exist'])
-        );
-    }
-
-    protected function setRequestStack($request)
-    {
-        $requestStackMock = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->getMock();
-        $requestStackMock->method('getCurrentRequest')->willReturn($request);
-
-        $this->appVariable->setRequestStack($requestStackMock);
-    }
-
-    protected function setTokenStorage($user)
-    {
-        $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock();
-        $this->appVariable->setTokenStorage($tokenStorage);
-
-        $token = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\TokenInterface')->getMock();
-        $tokenStorage->method('getToken')->willReturn($token);
-
-        $token->method('getUser')->willReturn($user);
-    }
-
-    private function setFlashMessages($sessionHasStarted = true)
-    {
-        $flashMessages = [
-            'notice' => ['Notice #1 message'],
-            'warning' => ['Warning #1 message'],
-            'error' => ['Error #1 message', 'Error #2 message'],
-        ];
-        $flashBag = new FlashBag();
-        $flashBag->initialize($flashMessages);
-
-        $session = $this->getMockBuilder('Symfony\Component\HttpFoundation\Session\Session')->disableOriginalConstructor()->getMock();
-        $session->method('isStarted')->willReturn($sessionHasStarted);
-        $session->method('getFlashBag')->willReturn($flashBag);
-
-        $request = $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')->getMock();
-        $request->method('getSession')->willReturn($session);
-        $this->setRequestStack($request);
-
-        return $flashMessages;
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Command/DebugCommandTest.php b/vendor/symfony/twig-bridge/Tests/Command/DebugCommandTest.php
deleted file mode 100644
index 7eb96018a355bded2f6bc083b468d934b7d5da02..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Command/DebugCommandTest.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Command;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Command\DebugCommand;
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Tester\CommandTester;
-use Twig\Environment;
-use Twig\Loader\FilesystemLoader;
-
-class DebugCommandTest extends TestCase
-{
-    public function testDebugCommand()
-    {
-        $tester = $this->createCommandTester();
-        $ret = $tester->execute([], ['decorated' => false]);
-
-        $this->assertEquals(0, $ret, 'Returns 0 in case of success');
-        $this->assertStringContainsString('Functions', trim($tester->getDisplay()));
-    }
-
-    public function testLineSeparatorInLoaderPaths()
-    {
-        // these paths aren't realistic,
-        // they're configured to force the line separator
-        $tester = $this->createCommandTester([
-            'Acme' => ['extractor', 'extractor'],
-            '!Acme' => ['extractor', 'extractor'],
-            FilesystemLoader::MAIN_NAMESPACE => ['extractor', 'extractor'],
-        ]);
-        $ret = $tester->execute([], ['decorated' => false]);
-        $ds = \DIRECTORY_SEPARATOR;
-        $loaderPaths = <<<TXT
-Loader Paths
-------------
-
- ----------- ------------ 
-  Namespace   Paths       
- ----------- ------------ 
-  @Acme       extractor$ds  
-              extractor$ds  
-                          
-  @!Acme      extractor$ds  
-              extractor$ds  
-                          
-  (None)      extractor$ds  
-              extractor$ds  
- ----------- ------------
-TXT;
-
-        $this->assertEquals(0, $ret, 'Returns 0 in case of success');
-        $this->assertStringContainsString($loaderPaths, trim($tester->getDisplay(true)));
-    }
-
-    public function testWithGlobals()
-    {
-        $message = '<error>foo</error>';
-        $tester = $this->createCommandTester([], ['message' => $message]);
-        $tester->execute([], ['decorated' => true]);
-
-        $display = $tester->getDisplay();
-
-        $this->assertStringContainsString(json_encode($message), $display);
-    }
-
-    public function testWithGlobalsJson()
-    {
-        $globals = ['message' => '<error>foo</error>'];
-
-        $tester = $this->createCommandTester([], $globals);
-        $tester->execute(['--format' => 'json'], ['decorated' => true]);
-
-        $display = $tester->getDisplay();
-        $display = json_decode($display, true);
-
-        $this->assertSame($globals, $display['globals']);
-    }
-
-    public function testWithFilter()
-    {
-        $tester = $this->createCommandTester([]);
-        $tester->execute(['--format' => 'json'], ['decorated' => false]);
-        $display = $tester->getDisplay();
-        $display1 = json_decode($display, true);
-
-        $tester->execute(['filter' => 'date', '--format' => 'json'], ['decorated' => false]);
-        $display = $tester->getDisplay();
-        $display2 = json_decode($display, true);
-
-        $this->assertNotSame($display1, $display2);
-    }
-
-    private function createCommandTester(array $paths = [], array $globals = [])
-    {
-        $filesystemLoader = new FilesystemLoader([], \dirname(__DIR__).'/Fixtures');
-        foreach ($paths as $namespace => $relDirs) {
-            foreach ($relDirs as $relDir) {
-                $filesystemLoader->addPath($relDir, $namespace);
-            }
-        }
-
-        $environment = new Environment($filesystemLoader);
-        foreach ($globals as $name => $value) {
-            $environment->addGlobal($name, $value);
-        }
-
-        $command = new DebugCommand($environment);
-
-        $application = new Application();
-        $application->add($command);
-        $command = $application->find('debug:twig');
-
-        return new CommandTester($command);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Command/LintCommandTest.php b/vendor/symfony/twig-bridge/Tests/Command/LintCommandTest.php
deleted file mode 100644
index f03e87a4a8100c7b9bf4c973546ad207ddee3bee..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Command/LintCommandTest.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Command;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Command\LintCommand;
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Tester\CommandTester;
-use Twig\Environment;
-use Twig\Loader\FilesystemLoader;
-
-class LintCommandTest extends TestCase
-{
-    private $files;
-
-    public function testLintCorrectFile()
-    {
-        $tester = $this->createCommandTester();
-        $filename = $this->createFile('{{ foo }}');
-
-        $ret = $tester->execute(['filename' => [$filename]], ['verbosity' => OutputInterface::VERBOSITY_VERBOSE, 'decorated' => false]);
-
-        $this->assertEquals(0, $ret, 'Returns 0 in case of success');
-        $this->assertStringContainsString('OK in', trim($tester->getDisplay()));
-    }
-
-    public function testLintIncorrectFile()
-    {
-        $tester = $this->createCommandTester();
-        $filename = $this->createFile('{{ foo');
-
-        $ret = $tester->execute(['filename' => [$filename]], ['decorated' => false]);
-
-        $this->assertEquals(1, $ret, 'Returns 1 in case of error');
-        $this->assertMatchesRegularExpression('/ERROR  in \S+ \(line /', trim($tester->getDisplay()));
-    }
-
-    public function testLintFileNotReadable()
-    {
-        $this->expectException('RuntimeException');
-        $tester = $this->createCommandTester();
-        $filename = $this->createFile('');
-        unlink($filename);
-
-        $tester->execute(['filename' => [$filename]], ['decorated' => false]);
-    }
-
-    public function testLintFileCompileTimeException()
-    {
-        $tester = $this->createCommandTester();
-        $filename = $this->createFile("{{ 2|number_format(2, decimal_point='.', ',') }}");
-
-        $ret = $tester->execute(['filename' => [$filename]], ['decorated' => false]);
-
-        $this->assertEquals(1, $ret, 'Returns 1 in case of error');
-        $this->assertMatchesRegularExpression('/ERROR  in \S+ \(line /', trim($tester->getDisplay()));
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Passing a command name as the first argument of "Symfony\Bridge\Twig\Command\LintCommand::__construct()" is deprecated since Symfony 3.4 and support for it will be removed in 4.0. If the command was registered by convention, make it a service instead.
-     */
-    public function testLegacyLintCommand()
-    {
-        $this->expectException('RuntimeException');
-        $this->expectExceptionMessage('The Twig environment needs to be set.');
-        $command = new LintCommand();
-
-        $application = new Application();
-        $application->add($command);
-        $command = $application->find('lint:twig');
-
-        $tester = new CommandTester($command);
-        $tester->execute([]);
-    }
-
-    /**
-     * @return CommandTester
-     */
-    private function createCommandTester()
-    {
-        $command = new LintCommand(new Environment(new FilesystemLoader()));
-
-        $application = new Application();
-        $application->add($command);
-        $command = $application->find('lint:twig');
-
-        return new CommandTester($command);
-    }
-
-    /**
-     * @return string Path to the new file
-     */
-    private function createFile($content)
-    {
-        $filename = tempnam(sys_get_temp_dir(), 'sf-');
-        file_put_contents($filename, $content);
-
-        $this->files[] = $filename;
-
-        return $filename;
-    }
-
-    protected function setUp()
-    {
-        $this->files = [];
-    }
-
-    protected function tearDown()
-    {
-        foreach ($this->files as $file) {
-            if (file_exists($file)) {
-                @unlink($file);
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap3HorizontalLayoutTest.php b/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap3HorizontalLayoutTest.php
deleted file mode 100644
index 9131216182a3d964963c34a454165ceb87ad93c3..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap3HorizontalLayoutTest.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-abstract class AbstractBootstrap3HorizontalLayoutTest extends AbstractBootstrap3LayoutTest
-{
-    public function testLabelOnForm()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateType');
-        $view = $form->createView();
-        $this->renderWidget($view, ['label' => 'foo']);
-        $html = $this->renderLabel($view);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@class="col-sm-2 control-label required"]
-    [.="[trans]Name[/trans]"]
-'
-        );
-    }
-
-    public function testLabelDoesNotRenderFieldAttributes()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $html = $this->renderLabel($form->createView(), null, [
-            'attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="col-sm-2 control-label required"]
-'
-        );
-    }
-
-    public function testLabelWithCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $html = $this->renderLabel($form->createView(), null, [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class col-sm-2 control-label required"]
-'
-        );
-    }
-
-    public function testLabelWithCustomTextAndCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $html = $this->renderLabel($form->createView(), 'Custom label', [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class col-sm-2 control-label required"]
-    [.="[trans]Custom label[/trans]"]
-'
-        );
-    }
-
-    public function testLabelWithCustomTextAsOptionAndCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType', null, [
-            'label' => 'Custom label',
-        ]);
-        $html = $this->renderLabel($form->createView(), null, [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class col-sm-2 control-label required"]
-    [.="[trans]Custom label[/trans]"]
-'
-        );
-    }
-
-    public function testStartTag()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => 'http://example.com/directory',
-        ]);
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get" action="http://example.com/directory" class="form-horizontal">', $html);
-    }
-
-    public function testStartTagWithOverriddenVars()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'put',
-            'action' => 'http://example.com/directory',
-        ]);
-
-        $html = $this->renderStart($form->createView(), [
-            'method' => 'post',
-            'action' => 'http://foo.com/directory',
-        ]);
-
-        $this->assertSame('<form name="form" method="post" action="http://foo.com/directory" class="form-horizontal">', $html);
-    }
-
-    public function testStartTagForMultipartForm()
-    {
-        $form = $this->factory->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-                'method' => 'get',
-                'action' => 'http://example.com/directory',
-            ])
-            ->add('file', 'Symfony\Component\Form\Extension\Core\Type\FileType')
-            ->getForm();
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get" action="http://example.com/directory" class="form-horizontal" enctype="multipart/form-data">', $html);
-    }
-
-    public function testStartTagWithExtraAttributes()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => 'http://example.com/directory',
-        ]);
-
-        $html = $this->renderStart($form->createView(), [
-            'attr' => ['class' => 'foobar'],
-        ]);
-
-        $this->assertSame('<form name="form" method="get" action="http://example.com/directory" class="foobar form-horizontal">', $html);
-    }
-
-    public function testCheckboxRow()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\CheckboxType');
-        $view = $form->createView();
-        $html = $this->renderRow($view, ['label' => 'foo']);
-
-        $this->assertMatchesXpath($html, '/div[@class="form-group"]/div[@class="col-sm-2" or @class="col-sm-10"]', 2);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap3LayoutTest.php b/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap3LayoutTest.php
deleted file mode 100644
index f04372c5423b0babf66c6e6555cd78f9504d08f8..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap3LayoutTest.php
+++ /dev/null
@@ -1,2546 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use Symfony\Component\Form\FormError;
-use Symfony\Component\Form\Tests\AbstractLayoutTest;
-
-abstract class AbstractBootstrap3LayoutTest extends AbstractLayoutTest
-{
-    protected static $supportedFeatureSetVersion = 304;
-
-    public function testLabelOnForm()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateType');
-        $view = $form->createView();
-        $this->renderWidget($view, ['label' => 'foo']);
-        $html = $this->renderLabel($view);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@class="control-label required"]
-    [.="[trans]Name[/trans]"]
-'
-        );
-    }
-
-    public function testLabelDoesNotRenderFieldAttributes()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $html = $this->renderLabel($form->createView(), null, [
-            'attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="control-label required"]
-'
-        );
-    }
-
-    public function testLabelWithCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $html = $this->renderLabel($form->createView(), null, [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class control-label required"]
-'
-        );
-    }
-
-    public function testLabelWithCustomTextAndCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $html = $this->renderLabel($form->createView(), 'Custom label', [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class control-label required"]
-    [.="[trans]Custom label[/trans]"]
-'
-        );
-    }
-
-    public function testLabelWithCustomTextAsOptionAndCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType', null, [
-            'label' => 'Custom label',
-        ]);
-        $html = $this->renderLabel($form->createView(), null, [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class control-label required"]
-    [.="[trans]Custom label[/trans]"]
-'
-        );
-    }
-
-    public function testErrors()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $form->addError(new FormError('[trans]Error 1[/trans]'));
-        $form->addError(new FormError('[trans]Error 2[/trans]'));
-        $view = $form->createView();
-        $html = $this->renderErrors($view);
-
-        $this->assertMatchesXpath($html,
-'/div
-    [@class="alert alert-danger"]
-    [
-        ./ul
-            [@class="list-unstyled"]
-            [
-                ./li
-                    [.=" [trans]Error 1[/trans]"]
-                    [
-                        ./span[@class="glyphicon glyphicon-exclamation-sign"]
-                    ]
-                /following-sibling::li
-                    [.=" [trans]Error 2[/trans]"]
-                    [
-                        ./span[@class="glyphicon glyphicon-exclamation-sign"]
-                    ]
-            ]
-            [count(./li)=2]
-    ]
-'
-        );
-    }
-
-    public function testOverrideWidgetBlock()
-    {
-        // see custom_widgets.html.twig
-        $form = $this->factory->createNamed('text_id', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $html = $this->renderWidget($form->createView());
-
-        $this->assertMatchesXpath($html,
-'/div
-    [
-        ./input
-        [@type="text"]
-        [@id="text_id"]
-        [@class="form-control"]
-    ]
-    [@id="container"]
-'
-        );
-    }
-
-    public function testCheckedCheckbox()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\CheckboxType', true);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="checkbox"]
-    [
-        ./label
-            [.=" [trans]Name[/trans]"]
-            [
-                ./input[@type="checkbox"][@name="name"][@id="my&id"][@class="my&class"][@checked="checked"][@value="1"]
-            ]
-    ]
-'
-        );
-    }
-
-    public function testUncheckedCheckbox()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\CheckboxType', false);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="checkbox"]
-    [
-        ./label
-            [.=" [trans]Name[/trans]"]
-            [
-                ./input[@type="checkbox"][@name="name"][@id="my&id"][@class="my&class"][not(@checked)]
-            ]
-    ]
-'
-        );
-    }
-
-    public function testCheckboxWithValue()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\CheckboxType', false, [
-            'value' => 'foo&bar',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="checkbox"]
-    [
-        ./label
-            [.=" [trans]Name[/trans]"]
-            [
-                ./input[@type="checkbox"][@name="name"][@id="my&id"][@class="my&class"][@value="foo&bar"]
-            ]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoice()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [not(@required)]
-    [
-        ./option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=2]
-'
-        );
-    }
-
-    public function testSingleChoiceAttributesWithMainAttributes()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => false,
-            'attr' => ['class' => 'bar&baz'],
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'bar&baz']],
-'/select
-    [@name="name"]
-    [@class="bar&baz form-control"]
-    [not(@required)]
-    [
-        ./option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=2]
-'
-        );
-    }
-
-    public function testSingleExpandedChoiceAttributesWithMainAttributes()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => true,
-            'attr' => ['class' => 'bar&baz'],
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'bar&baz']],
-'/div
-    [@class="bar&baz"]
-    [
-        ./div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]Choice&A[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]Choice&B[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSelectWithSizeBiggerThanOneCanBeRequired()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', null, [
-            'choices' => ['a', 'b'],
-            'multiple' => false,
-            'expanded' => false,
-            'attr' => ['size' => 2],
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => '']],
-'/select
-    [@name="name"]
-    [@required="required"]
-    [@size="2"]
-    [count(./option)=2]
-'
-        );
-    }
-
-    public function testSingleChoiceWithoutTranslation()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => false,
-            'choice_translation_domain' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [not(@required)]
-    [
-        ./option[@value="&a"][@selected="selected"][.="Choice&A"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="Choice&B"]
-    ]
-    [count(./option)=2]
-'
-        );
-    }
-
-    public function testSingleChoiceWithPlaceholderWithoutTranslation()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => false,
-            'required' => false,
-            'translation_domain' => false,
-            'placeholder' => 'Placeholder&Not&Translated',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [not(@required)]
-    [
-        ./option[@value=""][not(@selected)][not(@disabled)][.="Placeholder&Not&Translated"]
-        /following-sibling::option[@value="&a"][@selected="selected"][.="Choice&A"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="Choice&B"]
-    ]
-    [count(./option)=3]
-'
-        );
-    }
-
-    public function testSingleChoiceAttributes()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_attr' => ['Choice&B' => ['class' => 'foo&bar']],
-            'multiple' => false,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [not(@required)]
-    [
-        ./option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][@class="foo&bar"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=2]
-'
-        );
-    }
-
-    public function testSingleChoiceWithPreferred()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'preferred_choices' => ['&b'],
-            'multiple' => false,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['separator' => '-- sep --', 'attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [not(@required)]
-    [
-        ./option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-        /following-sibling::option[@disabled="disabled"][not(@selected)][.="-- sep --"]
-        /following-sibling::option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceWithPreferredAndNoSeparator()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'preferred_choices' => ['&b'],
-            'multiple' => false,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['separator' => null, 'attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [not(@required)]
-    [
-        ./option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-        /following-sibling::option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceWithPreferredAndBlankSeparator()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'preferred_choices' => ['&b'],
-            'multiple' => false,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['separator' => '', 'attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [not(@required)]
-    [
-        ./option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-        /following-sibling::option[@disabled="disabled"][not(@selected)][.=""]
-        /following-sibling::option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-    ]
-'
-        );
-    }
-
-    public function testChoiceWithOnlyPreferred()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'preferred_choices' => ['&a', '&b'],
-            'multiple' => false,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@class="my&class form-control"]
-'
-        );
-    }
-
-    public function testSingleChoiceNonRequired()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'required' => false,
-            'multiple' => false,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [not(@required)]
-    [
-        ./option[@value=""][.=""]
-        /following-sibling::option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=3]
-'
-        );
-    }
-
-    public function testSingleChoiceNonRequiredNoneSelected()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', null, [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'required' => false,
-            'multiple' => false,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [not(@required)]
-    [
-        ./option[@value=""][.=""]
-        /following-sibling::option[@value="&a"][not(@selected)][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=3]
-'
-        );
-    }
-
-    public function testSingleChoiceNonRequiredWithPlaceholder()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => false,
-            'required' => false,
-            'placeholder' => 'Select&Anything&Not&Me',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [not(@required)]
-    [
-        ./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Select&Anything&Not&Me[/trans]"]
-        /following-sibling::option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=3]
-'
-        );
-    }
-
-    public function testSingleChoiceRequiredWithPlaceholder()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'required' => true,
-            'multiple' => false,
-            'expanded' => false,
-            'placeholder' => 'Test&Me',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@required="required"]
-    [
-        ./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Test&Me[/trans]"]
-        /following-sibling::option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=3]
-'
-        );
-    }
-
-    public function testSingleChoiceRequiredWithPlaceholderViaView()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'required' => true,
-            'multiple' => false,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['placeholder' => '', 'attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@required="required"]
-    [
-        ./option[@value=""][not(@selected)][not(@disabled)][.=""]
-        /following-sibling::option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=3]
-'
-        );
-    }
-
-    public function testSingleChoiceGrouped()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => [
-                'Group&1' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-                'Group&2' => ['Choice&C' => '&c'],
-            ],
-            'multiple' => false,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [./optgroup[@label="[trans]Group&1[/trans]"]
-        [
-            ./option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-            /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-        ]
-        [count(./option)=2]
-    ]
-    [./optgroup[@label="[trans]Group&2[/trans]"]
-        [./option[@value="&c"][not(@selected)][.="[trans]Choice&C[/trans]"]]
-        [count(./option)=1]
-    ]
-    [count(./optgroup)=2]
-'
-        );
-    }
-
-    public function testMultipleChoice()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', ['&a'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'required' => true,
-            'multiple' => true,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name[]"]
-    [@class="my&class form-control"]
-    [@required="required"]
-    [@multiple="multiple"]
-    [
-        ./option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=2]
-'
-        );
-    }
-
-    public function testMultipleChoiceAttributes()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', ['&a'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_attr' => ['Choice&B' => ['class' => 'foo&bar']],
-            'required' => true,
-            'multiple' => true,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name[]"]
-    [@class="my&class form-control"]
-    [@required="required"]
-    [@multiple="multiple"]
-    [
-        ./option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][@class="foo&bar"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=2]
-'
-        );
-    }
-
-    public function testMultipleChoiceSkipsPlaceholder()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', ['&a'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => true,
-            'expanded' => false,
-            'placeholder' => 'Test&Me',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name[]"]
-    [@class="my&class form-control"]
-    [@multiple="multiple"]
-    [
-        ./option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=2]
-'
-        );
-    }
-
-    public function testMultipleChoiceNonRequired()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', ['&a'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'required' => false,
-            'multiple' => true,
-            'expanded' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name[]"]
-    [@class="my&class form-control"]
-    [@multiple="multiple"]
-    [
-        ./option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=2]
-'
-        );
-    }
-
-    public function testSingleChoiceExpanded()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]Choice&A[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]Choice&B[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithLabelsAsFalse()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_label' => false,
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="radio"]
-            [
-                ./label
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithLabelsSetByCallable()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c'],
-            'choice_label' => function ($choice, $label, $value) {
-                if ('&b' === $choice) {
-                    return false;
-                }
-
-                return 'label.'.$value;
-            },
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]label.&a[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]label.&c[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_2"][@value="&c"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithLabelsSetFalseByCallable()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_label' => function () {
-                return false;
-            },
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="radio"]
-            [
-                ./label
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithoutTranslation()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => true,
-            'choice_translation_domain' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" Choice&A"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" Choice&B"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedAttributes()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_attr' => ['Choice&B' => ['class' => 'foo&bar']],
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]Choice&A[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]Choice&B[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)][@class="foo&bar"]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithPlaceholder()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => true,
-            'placeholder' => 'Test&Me',
-            'required' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]Test&Me[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_placeholder"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]Choice&A[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_0"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]Choice&B[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_1"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithPlaceholderWithoutTranslation()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => true,
-            'required' => false,
-            'choice_translation_domain' => false,
-            'placeholder' => 'Placeholder&Not&Translated',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" Placeholder&Not&Translated"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_placeholder"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" Choice&A"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_0"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" Choice&B"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_1"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithBooleanValue()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', true, [
-            'choices' => ['Choice&A' => '1', 'Choice&B' => '0'],
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]Choice&A[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_0"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="radio"]
-            [
-                ./label
-                    [.=" [trans]Choice&B[/trans]"]
-                    [
-                        ./input[@type="radio"][@name="name"][@id="name_1"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpanded()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', ['&a', '&c'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c'],
-            'multiple' => true,
-            'expanded' => true,
-            'required' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="checkbox"]
-            [
-                ./label
-                    [.=" [trans]Choice&A[/trans]"]
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@checked][not(@required)]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="checkbox"]
-            [
-                ./label
-                    [.=" [trans]Choice&B[/trans]"]
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_1"][not(@checked)][not(@required)]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="checkbox"]
-            [
-                ./label
-                    [.=" [trans]Choice&C[/trans]"]
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_2"][@checked][not(@required)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpandedWithLabelsAsFalse()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', ['&a'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_label' => false,
-            'multiple' => true,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="checkbox"]
-            [
-                ./label
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@value="&a"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="checkbox"]
-            [
-                ./label
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_1"][@value="&b"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpandedWithLabelsSetByCallable()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', ['&a'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c'],
-            'choice_label' => function ($choice, $label, $value) {
-                if ('&b' === $choice) {
-                    return false;
-                }
-
-                return 'label.'.$value;
-            },
-            'multiple' => true,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-            '/div
-    [
-        ./div
-            [@class="checkbox"]
-            [
-                ./label
-                    [.=" [trans]label.&a[/trans]"]
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@value="&a"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="checkbox"]
-            [
-                ./label
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_1"][@value="&b"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="checkbox"]
-            [
-                ./label
-                    [.=" [trans]label.&c[/trans]"]
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_2"][@value="&c"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpandedWithLabelsSetFalseByCallable()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', ['&a'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_label' => function () {
-                return false;
-            },
-            'multiple' => true,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="checkbox"]
-            [
-                ./label
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@value="&a"][@checked]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="checkbox"]
-            [
-                ./label
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_1"][@value="&b"][not(@checked)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpandedWithoutTranslation()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', ['&a', '&c'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c'],
-            'multiple' => true,
-            'expanded' => true,
-            'required' => true,
-            'choice_translation_domain' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="checkbox"]
-            [
-                ./label
-                    [.=" Choice&A"]
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@checked][not(@required)]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="checkbox"]
-            [
-                ./label
-                    [.=" Choice&B"]
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_1"][not(@checked)][not(@required)]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="checkbox"]
-            [
-                ./label
-                    [.=" Choice&C"]
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_2"][@checked][not(@required)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpandedAttributes()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', ['&a', '&c'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c'],
-            'choice_attr' => ['Choice&B' => ['class' => 'foo&bar']],
-            'multiple' => true,
-            'expanded' => true,
-            'required' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="checkbox"]
-            [
-                ./label
-                    [.=" [trans]Choice&A[/trans]"]
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@checked][not(@required)]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="checkbox"]
-            [
-                ./label
-                    [.=" [trans]Choice&B[/trans]"]
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_1"][not(@checked)][not(@required)][@class="foo&bar"]
-                    ]
-            ]
-        /following-sibling::div
-            [@class="checkbox"]
-            [
-                ./label
-                    [.=" [trans]Choice&C[/trans]"]
-                    [
-                        ./input[@type="checkbox"][@name="name[]"][@id="name_2"][@checked][not(@required)]
-                    ]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testCountry()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\CountryType', 'AT');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [./option[@value="AT"][@selected="selected"][.="Austria"]]
-    [count(./option)>200]
-'
-        );
-    }
-
-    public function testCountryWithPlaceholder()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\CountryType', 'AT', [
-            'placeholder' => 'Select&Country',
-            'required' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Select&Country[/trans]"]]
-    [./option[@value="AT"][@selected="selected"][.="Austria"]]
-    [count(./option)>201]
-'
-        );
-    }
-
-    public function testDateTime()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateTimeType', date('Y').'-02-03 04:05:06', [
-            'input' => 'string',
-            'with_seconds' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [
-        ./select
-            [@id="name_date_month"]
-            [@class="form-control"]
-            [./option[@value="2"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_date_day"]
-            [@class="form-control"]
-            [./option[@value="3"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_date_year"]
-            [@class="form-control"]
-            [./option[@value="'.date('Y').'"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_time_hour"]
-            [@class="form-control"]
-            [./option[@value="4"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_time_minute"]
-            [@class="form-control"]
-            [./option[@value="5"][@selected="selected"]]
-    ]
-    [count(.//select)=5]
-'
-        );
-    }
-
-    public function testDateTimeWithPlaceholderGlobal()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateTimeType', null, [
-            'input' => 'string',
-            'placeholder' => 'Change&Me',
-            'required' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_date_month"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Change&Me[/trans]"]]
-        /following-sibling::select
-            [@id="name_date_day"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Change&Me[/trans]"]]
-        /following-sibling::select
-            [@id="name_date_year"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Change&Me[/trans]"]]
-        /following-sibling::select
-            [@id="name_time_hour"]
-            [@class="form-control"]
-            [./option[@value=""][.="[trans]Change&Me[/trans]"]]
-        /following-sibling::select
-            [@id="name_time_minute"]
-            [@class="form-control"]
-            [./option[@value=""][.="[trans]Change&Me[/trans]"]]
-    ]
-    [count(.//select)=5]
-'
-        );
-    }
-
-    public function testDateTimeWithHourAndMinute()
-    {
-        $data = ['year' => date('Y'), 'month' => '2', 'day' => '3', 'hour' => '4', 'minute' => '5'];
-
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateTimeType', $data, [
-            'input' => 'array',
-            'required' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_date_month"]
-            [@class="form-control"]
-            [./option[@value="2"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_date_day"]
-            [@class="form-control"]
-            [./option[@value="3"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_date_year"]
-            [@class="form-control"]
-            [./option[@value="'.date('Y').'"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_time_hour"]
-            [@class="form-control"]
-            [./option[@value="4"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_time_minute"]
-            [@class="form-control"]
-            [./option[@value="5"][@selected="selected"]]
-    ]
-    [count(.//select)=5]
-'
-        );
-    }
-
-    public function testDateTimeWithSeconds()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateTimeType', date('Y').'-02-03 04:05:06', [
-            'input' => 'string',
-            'with_seconds' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_date_month"]
-            [@class="form-control"]
-            [./option[@value="2"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_date_day"]
-            [@class="form-control"]
-            [./option[@value="3"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_date_year"]
-            [@class="form-control"]
-            [./option[@value="'.date('Y').'"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_time_hour"]
-            [@class="form-control"]
-            [./option[@value="4"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_time_minute"]
-            [@class="form-control"]
-            [./option[@value="5"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_time_second"]
-            [@class="form-control"]
-            [./option[@value="6"][@selected="selected"]]
-    ]
-    [count(.//select)=6]
-'
-        );
-    }
-
-    public function testDateTimeSingleText()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateTimeType', '2011-02-03 04:05:06', [
-            'input' => 'string',
-            'date_widget' => 'single_text',
-            'time_widget' => 'single_text',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./input
-            [@type="date"]
-            [@id="name_date"]
-            [@name="name[date]"]
-            [@class="form-control"]
-            [@value="2011-02-03"]
-        /following-sibling::input
-            [@type="time"]
-            [@id="name_time"]
-            [@name="name[time]"]
-            [@class="form-control"]
-            [@value="04:05"]
-    ]
-'
-        );
-    }
-
-    public function testDateTimeWithWidgetSingleText()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateTimeType', '2011-02-03 04:05:06', [
-            'input' => 'string',
-            'widget' => 'single_text',
-            'model_timezone' => 'UTC',
-            'view_timezone' => 'UTC',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="datetime-local"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="2011-02-03T04:05:06"]
-'
-        );
-    }
-
-    public function testDateTimeWithWidgetSingleTextIgnoreDateAndTimeWidgets()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateTimeType', '2011-02-03 04:05:06', [
-            'input' => 'string',
-            'date_widget' => 'choice',
-            'time_widget' => 'choice',
-            'widget' => 'single_text',
-            'model_timezone' => 'UTC',
-            'view_timezone' => 'UTC',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="datetime-local"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="2011-02-03T04:05:06"]
-'
-        );
-    }
-
-    public function testDateChoice()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateType', date('Y').'-02-03', [
-            'input' => 'string',
-            'widget' => 'choice',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_month"]
-            [@class="form-control"]
-            [./option[@value="2"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_day"]
-            [@class="form-control"]
-            [./option[@value="3"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_year"]
-            [@class="form-control"]
-            [./option[@value="'.date('Y').'"][@selected="selected"]]
-    ]
-    [count(./select)=3]
-'
-        );
-    }
-
-    public function testDateChoiceWithPlaceholderGlobal()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateType', null, [
-            'input' => 'string',
-            'widget' => 'choice',
-            'placeholder' => 'Change&Me',
-            'required' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_month"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Change&Me[/trans]"]]
-        /following-sibling::select
-            [@id="name_day"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Change&Me[/trans]"]]
-        /following-sibling::select
-            [@id="name_year"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Change&Me[/trans]"]]
-    ]
-    [count(./select)=3]
-'
-        );
-    }
-
-    public function testDateChoiceWithPlaceholderOnYear()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateType', null, [
-            'input' => 'string',
-            'widget' => 'choice',
-            'required' => false,
-            'placeholder' => ['year' => 'Change&Me'],
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_month"]
-            [@class="form-control"]
-            [./option[@value="1"]]
-        /following-sibling::select
-            [@id="name_day"]
-            [@class="form-control"]
-            [./option[@value="1"]]
-        /following-sibling::select
-            [@id="name_year"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Change&Me[/trans]"]]
-    ]
-    [count(./select)=3]
-'
-        );
-    }
-
-    public function testDateText()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateType', '2011-02-03', [
-            'input' => 'string',
-            'widget' => 'text',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./input
-            [@id="name_month"]
-            [@type="text"]
-            [@class="form-control"]
-            [@value="2"]
-        /following-sibling::input
-            [@id="name_day"]
-            [@type="text"]
-            [@class="form-control"]
-            [@value="3"]
-        /following-sibling::input
-            [@id="name_year"]
-            [@type="text"]
-            [@class="form-control"]
-            [@value="2011"]
-    ]
-    [count(./input)=3]
-'
-        );
-    }
-
-    public function testDateSingleText()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateType', '2011-02-03', [
-            'input' => 'string',
-            'widget' => 'single_text',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="date"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="2011-02-03"]
-'
-        );
-    }
-
-    public function testBirthDay()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\BirthdayType', '2000-02-03', [
-            'input' => 'string',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_month"]
-            [@class="form-control"]
-            [./option[@value="2"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_day"]
-            [@class="form-control"]
-            [./option[@value="3"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_year"]
-            [@class="form-control"]
-            [./option[@value="2000"][@selected="selected"]]
-    ]
-    [count(./select)=3]
-'
-        );
-    }
-
-    public function testBirthDayWithPlaceholder()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\BirthdayType', '1950-01-01', [
-            'input' => 'string',
-            'placeholder' => '',
-            'required' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_month"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.=""]]
-            [./option[@value="1"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_day"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.=""]]
-            [./option[@value="1"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_year"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.=""]]
-            [./option[@value="1950"][@selected="selected"]]
-    ]
-    [count(./select)=3]
-'
-        );
-    }
-
-    public function testEmail()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\EmailType', 'foo&bar');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="email"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="foo&bar"]
-    [not(@maxlength)]
-'
-        );
-    }
-
-    public function testEmailWithMaxLength()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\EmailType', 'foo&bar', [
-            'attr' => ['maxlength' => 123],
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="email"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="foo&bar"]
-    [@maxlength="123"]
-'
-        );
-    }
-
-    public function testHidden()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\HiddenType', 'foo&bar');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="hidden"]
-    [@name="name"]
-    [@class="my&class"]
-    [@value="foo&bar"]
-'
-        );
-    }
-
-    public function testDisabled()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType', null, [
-            'disabled' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="text"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@disabled="disabled"]
-'
-        );
-    }
-
-    public function testInteger()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\IntegerType', 123);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="number"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="123"]
-'
-        );
-    }
-
-    public function testIntegerTypeWithGroupingRendersAsTextInput()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\IntegerType', 123, [
-            'grouping' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="text"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="123"]
-'
-        );
-    }
-
-    public function testLanguage()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\LanguageType', 'de');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [./option[@value="de"][@selected="selected"][.="German"]]
-    [count(./option)>200]
-'
-        );
-    }
-
-    public function testLocale()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\LocaleType', 'de_AT');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [./option[@value="de_AT"][@selected="selected"][.="German (Austria)"]]
-    [count(./option)>200]
-'
-        );
-    }
-
-    public function testMoney()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\MoneyType', 1234.56, [
-            'currency' => 'EUR',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="input-group"]
-    [
-        ./span
-            [@class="input-group-addon"]
-            [contains(.., "€")]
-        /following-sibling::input
-            [@id="my&id"]
-            [@type="text"]
-            [@name="name"]
-            [@class="my&class form-control"]
-            [@value="1234.56"]
-    ]
-'
-        );
-    }
-
-    public function testMoneyWithoutCurrency()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\MoneyType', 1234.56, [
-            'currency' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/input
-    [@id="my&id"]
-    [@type="text"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="1234.56"]
-    [not(preceding-sibling::*)]
-    [not(following-sibling::*)]
-'
-        );
-    }
-
-    public function testNumber()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\NumberType', 1234.56);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="text"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="1234.56"]
-'
-        );
-    }
-
-    public function testPassword()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\PasswordType', 'foo&bar');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="password"]
-    [@name="name"]
-    [@class="my&class form-control"]
-'
-        );
-    }
-
-    public function testPasswordSubmittedWithNotAlwaysEmpty()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\PasswordType', null, [
-            'always_empty' => false,
-        ]);
-        $form->submit('foo&bar');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="password"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="foo&bar"]
-'
-        );
-    }
-
-    public function testPasswordWithMaxLength()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\PasswordType', 'foo&bar', [
-            'attr' => ['maxlength' => 123],
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="password"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@maxlength="123"]
-'
-        );
-    }
-
-    public function testPercent()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\PercentType', 0.1);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="input-group"]
-    [
-        ./input
-            [@id="my&id"]
-            [@type="text"]
-            [@name="name"]
-            [@class="my&class form-control"]
-            [@value="10"]
-        /following-sibling::span
-            [@class="input-group-addon"]
-            [contains(.., "%")]
-    ]
-'
-        );
-    }
-
-    public function testCheckedRadio()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\RadioType', true);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="radio"]
-    [
-        ./label
-            [@class="required"]
-            [
-                ./input
-                    [@id="my&id"]
-                    [@type="radio"]
-                    [@name="name"]
-                    [@class="my&class"]
-                    [@checked="checked"]
-                    [@value="1"]
-            ]
-    ]
-'
-        );
-    }
-
-    public function testUncheckedRadio()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\RadioType', false);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="radio"]
-    [
-        ./label
-            [@class="required"]
-            [
-                ./input
-                    [@id="my&id"]
-                    [@type="radio"]
-                    [@name="name"]
-                    [@class="my&class"]
-                    [not(@checked)]
-            ]
-    ]
-'
-        );
-    }
-
-    public function testRadioWithValue()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\RadioType', false, [
-            'value' => 'foo&bar',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="radio"]
-    [
-        ./label
-            [@class="required"]
-            [
-                ./input
-                    [@id="my&id"]
-                    [@type="radio"]
-                    [@name="name"]
-                    [@class="my&class"]
-                    [@value="foo&bar"]
-            ]
-    ]
-'
-        );
-    }
-
-    public function testRange()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\RangeType', 42, ['attr' => ['min' => 5]]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="range"]
-    [@name="name"]
-    [@value="42"]
-    [@min="5"]
-    [@class="my&class form-control"]
-'
-        );
-    }
-
-    public function testRangeWithMinMaxValues()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\RangeType', 42, ['attr' => ['min' => 5, 'max' => 57]]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="range"]
-    [@name="name"]
-    [@value="42"]
-    [@min="5"]
-    [@max="57"]
-    [@class="my&class form-control"]
-'
-        );
-    }
-
-    public function testTextarea()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextareaType', 'foo&bar', [
-            'attr' => ['pattern' => 'foo'],
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/textarea
-    [@name="name"]
-    [@pattern="foo"]
-    [@class="my&class form-control"]
-    [.="foo&bar"]
-'
-        );
-    }
-
-    public function testText()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType', 'foo&bar');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="text"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="foo&bar"]
-    [not(@maxlength)]
-'
-        );
-    }
-
-    public function testTextWithMaxLength()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType', 'foo&bar', [
-            'attr' => ['maxlength' => 123],
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="text"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="foo&bar"]
-    [@maxlength="123"]
-'
-        );
-    }
-
-    public function testSearch()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\SearchType', 'foo&bar');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="search"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="foo&bar"]
-    [not(@maxlength)]
-'
-        );
-    }
-
-    public function testTime()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TimeType', '04:05:06', [
-            'input' => 'string',
-            'with_seconds' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_hour"]
-            [@class="form-control"]
-            [not(@size)]
-            [./option[@value="4"][@selected="selected"]]
-        /following-sibling::select
-            [@id="name_minute"]
-            [@class="form-control"]
-            [not(@size)]
-            [./option[@value="5"][@selected="selected"]]
-    ]
-    [count(./select)=2]
-'
-        );
-    }
-
-    public function testTimeWithSeconds()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TimeType', '04:05:06', [
-            'input' => 'string',
-            'with_seconds' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_hour"]
-            [@class="form-control"]
-            [not(@size)]
-            [./option[@value="4"][@selected="selected"]]
-            [count(./option)>23]
-        /following-sibling::select
-            [@id="name_minute"]
-            [@class="form-control"]
-            [not(@size)]
-            [./option[@value="5"][@selected="selected"]]
-            [count(./option)>59]
-        /following-sibling::select
-            [@id="name_second"]
-            [@class="form-control"]
-            [not(@size)]
-            [./option[@value="6"][@selected="selected"]]
-            [count(./option)>59]
-    ]
-    [count(./select)=3]
-'
-        );
-    }
-
-    public function testTimeText()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TimeType', '04:05:06', [
-            'input' => 'string',
-            'widget' => 'text',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./input
-            [@type="text"]
-            [@id="name_hour"]
-            [@name="name[hour]"]
-            [@class="form-control"]
-            [@value="04"]
-            [@required="required"]
-            [not(@size)]
-        /following-sibling::input
-            [@type="text"]
-            [@id="name_minute"]
-            [@name="name[minute]"]
-            [@class="form-control"]
-            [@value="05"]
-            [@required="required"]
-            [not(@size)]
-    ]
-    [count(./input)=2]
-'
-        );
-    }
-
-    public function testTimeSingleText()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TimeType', '04:05:06', [
-            'input' => 'string',
-            'widget' => 'single_text',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="time"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="04:05"]
-    [not(@size)]
-'
-        );
-    }
-
-    public function testTimeWithPlaceholderGlobal()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TimeType', null, [
-            'input' => 'string',
-            'placeholder' => 'Change&Me',
-            'required' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_hour"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Change&Me[/trans]"]]
-            [count(./option)>24]
-        /following-sibling::select
-            [@id="name_minute"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Change&Me[/trans]"]]
-            [count(./option)>60]
-    ]
-    [count(./select)=2]
-'
-        );
-    }
-
-    public function testTimeWithPlaceholderOnYear()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TimeType', null, [
-            'input' => 'string',
-            'required' => false,
-            'placeholder' => ['hour' => 'Change&Me'],
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/div
-    [@class="my&class form-inline"]
-    [
-        ./select
-            [@id="name_hour"]
-            [@class="form-control"]
-            [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Change&Me[/trans]"]]
-            [count(./option)>24]
-        /following-sibling::select
-            [@id="name_minute"]
-            [./option[@value="1"]]
-            [count(./option)>59]
-    ]
-    [count(./select)=2]
-'
-        );
-    }
-
-    public function testTimezone()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TimezoneType', 'Europe/Vienna');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@name="name"]
-    [@class="my&class form-control"]
-    [not(@required)]
-    [.//option[@value="Europe/Vienna"][@selected="selected"]]
-    [count(.//option)>200]
-'
-        );
-    }
-
-    public function testTimezoneWithPlaceholder()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TimezoneType', null, [
-            'placeholder' => 'Select&Timezone',
-            'required' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/select
-    [@class="my&class form-control"]
-    [./option[@value=""][not(@selected)][not(@disabled)][.="[trans]Select&Timezone[/trans]"]]
-    [count(.//option)>201]
-'
-        );
-    }
-
-    public function testUrlWithDefaultProtocol()
-    {
-        $url = 'http://www.example.com?foo1=bar1&foo2=bar2';
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\UrlType', $url, ['default_protocol' => 'http']);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-'/input
-    [@type="text"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="http://www.example.com?foo1=bar1&foo2=bar2"]
-    [@inputmode="url"]
-'
-        );
-    }
-
-    public function testUrlWithoutDefaultProtocol()
-    {
-        $url = 'http://www.example.com?foo1=bar1&foo2=bar2';
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\UrlType', $url, ['default_protocol' => null]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-            '/input
-    [@type="url"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="http://www.example.com?foo1=bar1&foo2=bar2"]
-'
-        );
-    }
-
-    public function testButton()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ButtonType');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-            '/button[@type="button"][@name="name"][.="[trans]Name[/trans]"][@class="my&class btn"]'
-        );
-    }
-
-    public function testButtonlabelWithoutTranslation()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ButtonType', null, [
-            'translation_domain' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-            '/button[@type="button"][@name="name"][.="Name"][@class="my&class btn"]'
-        );
-    }
-
-    public function testSubmit()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\SubmitType');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-            '/button[@type="submit"][@name="name"][@class="my&class btn"]'
-        );
-    }
-
-    public function testReset()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ResetType');
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-            '/button[@type="reset"][@name="name"][@class="my&class btn"]'
-        );
-    }
-
-    public function testWidgetAttributes()
-    {
-        $form = $this->factory->createNamed('text', 'Symfony\Component\Form\Extension\Core\Type\TextType', 'value', [
-            'required' => true,
-            'disabled' => true,
-            'attr' => ['readonly' => true, 'maxlength' => 10, 'pattern' => '\d+', 'class' => 'foobar', 'data-foo' => 'bar'],
-        ]);
-
-        $html = $this->renderWidget($form->createView());
-
-        // compare plain HTML to check the whitespace
-        $this->assertSame('<input type="text" id="text" name="text" disabled="disabled" required="required" readonly="readonly" maxlength="10" pattern="\d+" class="foobar form-control" data-foo="bar" value="value" />', $html);
-    }
-
-    public function testWidgetAttributeNameRepeatedIfTrue()
-    {
-        $form = $this->factory->createNamed('text', 'Symfony\Component\Form\Extension\Core\Type\TextType', 'value', [
-            'attr' => ['foo' => true],
-        ]);
-
-        $html = $this->renderWidget($form->createView());
-
-        // foo="foo"
-        $this->assertSame('<input type="text" id="text" name="text" required="required" foo="foo" class="form-control" value="value" />', $html);
-    }
-
-    public function testButtonAttributes()
-    {
-        $form = $this->factory->createNamed('button', 'Symfony\Component\Form\Extension\Core\Type\ButtonType', null, [
-            'disabled' => true,
-            'attr' => ['class' => 'foobar', 'data-foo' => 'bar'],
-        ]);
-
-        $html = $this->renderWidget($form->createView());
-
-        // compare plain HTML to check the whitespace
-        $this->assertSame('<button type="button" id="button" name="button" disabled="disabled" class="foobar btn" data-foo="bar">[trans]Button[/trans]</button>', $html);
-    }
-
-    public function testButtonAttributeNameRepeatedIfTrue()
-    {
-        $form = $this->factory->createNamed('button', 'Symfony\Component\Form\Extension\Core\Type\ButtonType', null, [
-            'attr' => ['foo' => true],
-        ]);
-
-        $html = $this->renderWidget($form->createView());
-
-        // foo="foo"
-        $this->assertSame('<button type="button" id="button" name="button" foo="foo" class="btn-default btn">[trans]Button[/trans]</button>', $html);
-    }
-
-    public function testTel()
-    {
-        $tel = '0102030405';
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TelType', $tel);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-            '/input
-    [@type="tel"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="0102030405"]
-'
-        );
-    }
-
-    public function testColor()
-    {
-        $color = '#0000ff';
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ColorType', $color);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class']],
-            '/input
-    [@type="color"]
-    [@name="name"]
-    [@class="my&class form-control"]
-    [@value="#0000ff"]
-'
-        );
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap4HorizontalLayoutTest.php b/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap4HorizontalLayoutTest.php
deleted file mode 100644
index 51a1360f63f4dfba6b7426c0ceb20156abf51f65..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap4HorizontalLayoutTest.php
+++ /dev/null
@@ -1,217 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use Symfony\Component\Form\FormError;
-
-/**
- * Abstract class providing test cases for the Bootstrap 4 horizontal Twig form theme.
- *
- * @author Hidde Wieringa <hidde@hiddewieringa.nl>
- */
-abstract class AbstractBootstrap4HorizontalLayoutTest extends AbstractBootstrap4LayoutTest
-{
-    public function testRow()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $form->addError(new FormError('[trans]Error![/trans]'));
-        $view = $form->createView();
-        $html = $this->renderRow($view);
-
-        $this->assertMatchesXpath($html,
-            '/div
-    [
-        ./label[@for="name"]
-        [
-            ./span[@class="alert alert-danger d-block"]
-                [./span[@class="d-block"]
-                    [./span[.="[trans]Error[/trans]"]]
-                    [./span[.="[trans]Error![/trans]"]]
-                ]
-                [count(./span)=1]
-        ]
-        /following-sibling::div[./input[@id="name"]]
-    ]
-'
-        );
-    }
-
-    public function testLabelOnForm()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\DateType');
-        $view = $form->createView();
-        $this->renderWidget($view, ['label' => 'foo']);
-        $html = $this->renderLabel($view);
-
-        $this->assertMatchesXpath($html,
-'/legend
-    [@class="col-form-label col-sm-2 col-form-label required"]
-    [.="[trans]Name[/trans]"]
-'
-        );
-    }
-
-    public function testLabelDoesNotRenderFieldAttributes()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $html = $this->renderLabel($form->createView(), null, [
-            'attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="col-form-label col-sm-2 required"]
-'
-        );
-    }
-
-    public function testLabelWithCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $html = $this->renderLabel($form->createView(), null, [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class col-form-label col-sm-2 required"]
-'
-        );
-    }
-
-    public function testLabelWithCustomTextAndCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
-        $html = $this->renderLabel($form->createView(), 'Custom label', [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class col-form-label col-sm-2 required"]
-    [.="[trans]Custom label[/trans]"]
-'
-        );
-    }
-
-    public function testLabelWithCustomTextAsOptionAndCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType', null, [
-            'label' => 'Custom label',
-        ]);
-        $html = $this->renderLabel($form->createView(), null, [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class col-form-label col-sm-2 required"]
-    [.="[trans]Custom label[/trans]"]
-'
-        );
-    }
-
-    public function testLegendOnExpandedType()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', null, [
-            'label' => 'Custom label',
-            'expanded' => true,
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-        ]);
-        $view = $form->createView();
-        $this->renderWidget($view);
-        $html = $this->renderLabel($view);
-
-        $this->assertMatchesXpath($html,
-'/legend
-    [@class="col-sm-2 col-form-label required"]
-    [.="[trans]Custom label[/trans]"]
-'
-        );
-    }
-
-    public function testStartTag()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => 'http://example.com/directory',
-        ]);
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get" action="http://example.com/directory">', $html);
-    }
-
-    public function testStartTagWithOverriddenVars()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'put',
-            'action' => 'http://example.com/directory',
-        ]);
-
-        $html = $this->renderStart($form->createView(), [
-            'method' => 'post',
-            'action' => 'http://foo.com/directory',
-        ]);
-
-        $this->assertSame('<form name="form" method="post" action="http://foo.com/directory">', $html);
-    }
-
-    public function testStartTagForMultipartForm()
-    {
-        $form = $this->factory->createBuilder('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-                'method' => 'get',
-                'action' => 'http://example.com/directory',
-            ])
-            ->add('file', 'Symfony\Component\Form\Extension\Core\Type\FileType')
-            ->getForm();
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get" action="http://example.com/directory" enctype="multipart/form-data">', $html);
-    }
-
-    public function testStartTagWithExtraAttributes()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => 'http://example.com/directory',
-        ]);
-
-        $html = $this->renderStart($form->createView(), [
-            'attr' => ['class' => 'foobar'],
-        ]);
-
-        $this->assertSame('<form name="form" method="get" action="http://example.com/directory" class="foobar">', $html);
-    }
-
-    public function testCheckboxRow()
-    {
-        $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\CheckboxType');
-        $view = $form->createView();
-        $html = $this->renderRow($view, ['label' => 'foo']);
-
-        $this->assertMatchesXpath($html, '/div[@class="form-group row"]/div[@class="col-sm-2" or @class="col-sm-10"]', 2);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap4LayoutTest.php b/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap4LayoutTest.php
deleted file mode 100644
index 30b5ea10e571c770efffe4a2a70094a903ae58ac..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/AbstractBootstrap4LayoutTest.php
+++ /dev/null
@@ -1,986 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use Symfony\Component\Form\Extension\Core\Type\ButtonType;
-use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
-use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
-use Symfony\Component\Form\Extension\Core\Type\DateType;
-use Symfony\Component\Form\Extension\Core\Type\FileType;
-use Symfony\Component\Form\Extension\Core\Type\MoneyType;
-use Symfony\Component\Form\Extension\Core\Type\PercentType;
-use Symfony\Component\Form\Extension\Core\Type\RadioType;
-use Symfony\Component\Form\Extension\Core\Type\TextType;
-use Symfony\Component\Form\FormError;
-
-/**
- * Abstract class providing test cases for the Bootstrap 4 Twig form theme.
- *
- * @author Hidde Wieringa <hidde@hiddewieringa.nl>
- */
-abstract class AbstractBootstrap4LayoutTest extends AbstractBootstrap3LayoutTest
-{
-    public function testRow()
-    {
-        $form = $this->factory->createNamed('name', TextType::class);
-        $form->addError(new FormError('[trans]Error![/trans]'));
-        $view = $form->createView();
-        $html = $this->renderRow($view);
-
-        $this->assertMatchesXpath($html,
-            '/div
-    [
-        ./label[@for="name"]
-        [
-            ./span[@class="alert alert-danger d-block"]
-                [./span[@class="d-block"]
-                    [./span[.="[trans]Error[/trans]"]]
-                    [./span[.="[trans]Error![/trans]"]]
-                ]
-                [count(./span)=1]
-        ]
-        /following-sibling::input[@id="name"]
-    ]
-'
-        );
-    }
-
-    public function testLabelOnForm()
-    {
-        $form = $this->factory->createNamed('name', DateType::class);
-        $view = $form->createView();
-        $this->renderWidget($view, ['label' => 'foo']);
-        $html = $this->renderLabel($view);
-
-        $this->assertMatchesXpath($html,
-'/legend
-    [@class="col-form-label required"]
-    [.="[trans]Name[/trans]"]
-'
-        );
-    }
-
-    public function testLabelDoesNotRenderFieldAttributes()
-    {
-        $form = $this->factory->createNamed('name', TextType::class);
-        $html = $this->renderLabel($form->createView(), null, [
-            'attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="required"]
-'
-        );
-    }
-
-    public function testLabelWithCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', TextType::class);
-        $html = $this->renderLabel($form->createView(), null, [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class required"]
-'
-        );
-    }
-
-    public function testLabelWithCustomTextAndCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', TextType::class);
-        $html = $this->renderLabel($form->createView(), 'Custom label', [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class required"]
-    [.="[trans]Custom label[/trans]"]
-'
-        );
-    }
-
-    public function testLabelWithCustomTextAsOptionAndCustomAttributesPassedDirectly()
-    {
-        $form = $this->factory->createNamed('name', TextType::class, null, [
-            'label' => 'Custom label',
-        ]);
-        $html = $this->renderLabel($form->createView(), null, [
-            'label_attr' => [
-                'class' => 'my&class',
-            ],
-        ]);
-
-        $this->assertMatchesXpath($html,
-'/label
-    [@for="name"]
-    [@class="my&class required"]
-    [.="[trans]Custom label[/trans]"]
-'
-        );
-    }
-
-    public function testLegendOnExpandedType()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, null, [
-            'label' => 'Custom label',
-            'expanded' => true,
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-        ]);
-        $view = $form->createView();
-        $this->renderWidget($view);
-        $html = $this->renderLabel($view);
-
-        $this->assertMatchesXpath($html,
-'/legend
-    [@class="col-form-label required"]
-    [.="[trans]Custom label[/trans]"]
-'
-        );
-    }
-
-    public function testErrors()
-    {
-        $form = $this->factory->createNamed('name', TextType::class);
-        $form->addError(new FormError('[trans]Error 1[/trans]'));
-        $form->addError(new FormError('[trans]Error 2[/trans]'));
-        $view = $form->createView();
-        $html = $this->renderErrors($view);
-
-        $this->assertMatchesXpath($html,
-'/span
-    [@class="alert alert-danger d-block"]
-    [
-        ./span[@class="d-block"]
-            [./span[.="[trans]Error[/trans]"]]
-            [./span[.="[trans]Error 1[/trans]"]]
-
-        /following-sibling::span[@class="d-block"]
-            [./span[.="[trans]Error[/trans]"]]
-            [./span[.="[trans]Error 2[/trans]"]]
-    ]
-    [count(./span)=2]
-'
-        );
-    }
-
-    public function testErrorWithNoLabel()
-    {
-        $form = $this->factory->createNamed('name', TextType::class, ['label' => false]);
-        $form->addError(new FormError('[trans]Error 1[/trans]'));
-        $view = $form->createView();
-        $html = $this->renderLabel($view);
-
-        $this->assertMatchesXpath($html, '//span[.="[trans]Error[/trans]"]');
-    }
-
-    public function testCheckedCheckbox()
-    {
-        $form = $this->factory->createNamed('name', CheckboxType::class, true);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="form-check"]
-    [
-        ./input[@type="checkbox"][@name="name"][@id="my&id"][@class="my&class form-check-input"][@checked="checked"][@value="1"]
-        /following-sibling::label
-            [.="[trans]Name[/trans]"]
-            [@class="form-check-label required"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceAttributesWithMainAttributes()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => false,
-            'attr' => ['class' => 'bar&baz'],
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'bar&baz']],
-'/select
-    [@name="name"]
-    [@class="bar&baz form-control"]
-    [not(@required)]
-    [
-        ./option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
-        /following-sibling::option[@value="&b"][not(@selected)][.="[trans]Choice&B[/trans]"]
-    ]
-    [count(./option)=2]
-'
-        );
-    }
-
-    public function testSingleExpandedChoiceAttributesWithMainAttributes()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => true,
-            'attr' => ['class' => 'bar&baz'],
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'bar&baz']],
-'/div
-    [@class="bar&baz"]
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                /following-sibling::label
-                    [.="[trans]Choice&A[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                /following-sibling::label
-                    [.="[trans]Choice&B[/trans]"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testUncheckedCheckbox()
-    {
-        $form = $this->factory->createNamed('name', CheckboxType::class, false);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="form-check"]
-    [
-        ./input[@type="checkbox"][@name="name"][@id="my&id"][@class="my&class form-check-input"][not(@checked)]
-        /following-sibling::label
-            [.="[trans]Name[/trans]"]
-    ]
-'
-        );
-    }
-
-    public function testCheckboxWithValue()
-    {
-        $form = $this->factory->createNamed('name', CheckboxType::class, false, [
-            'value' => 'foo&bar',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="form-check"]
-    [
-        ./input[@type="checkbox"][@name="name"][@id="my&id"][@class="my&class form-check-input"][@value="foo&bar"]
-        /following-sibling::label
-            [.="[trans]Name[/trans]"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpanded()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                /following-sibling::label
-                    [.="[trans]Choice&A[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                /following-sibling::label
-                    [.="[trans]Choice&B[/trans]"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithLabelsAsFalse()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_label' => false,
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                /following-sibling::label
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                /following-sibling::label
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithLabelsSetByCallable()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c'],
-            'choice_label' => function ($choice, $label, $value) {
-                if ('&b' === $choice) {
-                    return false;
-                }
-
-                return 'label.'.$value;
-            },
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                /following-sibling::label
-                    [.="[trans]label.&a[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                /following-sibling::label
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_2"][@value="&c"][not(@checked)]
-                /following-sibling::label
-                    [.="[trans]label.&c[/trans]"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithLabelsSetFalseByCallable()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_label' => function () {
-                return false;
-            },
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                /following-sibling::label
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                /following-sibling::label
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithoutTranslation()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => true,
-            'choice_translation_domain' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                /following-sibling::label
-                    [.="Choice&A"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)]
-                /following-sibling::label
-                    [.="Choice&B"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedAttributes()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_attr' => ['Choice&B' => ['class' => 'foo&bar']],
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_0"][@value="&a"][@checked]
-                /following-sibling::label
-                    [.="[trans]Choice&A[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_1"][@value="&b"][not(@checked)][@class="foo&bar form-check-input"]
-                /following-sibling::label
-                    [.="[trans]Choice&B[/trans]"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithPlaceholder()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => true,
-            'placeholder' => 'Test&Me',
-            'required' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_placeholder"][not(@checked)]
-                /following-sibling::label
-                    [.="[trans]Test&Me[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_0"][@checked]
-                /following-sibling::label
-                    [.="[trans]Choice&A[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_1"][not(@checked)]
-                /following-sibling::label
-                    [.="[trans]Choice&B[/trans]"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithPlaceholderWithoutTranslation()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, '&a', [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'multiple' => false,
-            'expanded' => true,
-            'required' => false,
-            'choice_translation_domain' => false,
-            'placeholder' => 'Placeholder&Not&Translated',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_placeholder"][not(@checked)]
-                /following-sibling::label
-                    [.="Placeholder&Not&Translated"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_0"][@checked]
-                /following-sibling::label
-                    [.="Choice&A"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_1"][not(@checked)]
-                /following-sibling::label
-                    [.="Choice&B"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testSingleChoiceExpandedWithBooleanValue()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, true, [
-            'choices' => ['Choice&A' => '1', 'Choice&B' => '0'],
-            'multiple' => false,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_0"][@checked]
-                /following-sibling::label
-                    [.="[trans]Choice&A[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="radio"][@name="name"][@id="name_1"][not(@checked)]
-                /following-sibling::label
-                    [.="[trans]Choice&B[/trans]"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpanded()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, ['&a', '&c'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c'],
-            'multiple' => true,
-            'expanded' => true,
-            'required' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@checked][not(@required)]
-                /following-sibling::label
-                    [.="[trans]Choice&A[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_1"][not(@checked)][not(@required)]
-                /following-sibling::label
-                    [.="[trans]Choice&B[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_2"][@checked][not(@required)]
-                /following-sibling::label
-                    [.="[trans]Choice&C[/trans]"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpandedWithLabelsAsFalse()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, ['&a'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_label' => false,
-            'multiple' => true,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@value="&a"][@checked]
-                /following-sibling::label
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_1"][@value="&b"][not(@checked)]
-                /following-sibling::label
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpandedWithLabelsSetByCallable()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, ['&a'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c'],
-            'choice_label' => function ($choice, $label, $value) {
-                if ('&b' === $choice) {
-                    return false;
-                }
-
-                return 'label.'.$value;
-            },
-            'multiple' => true,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-            '/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@value="&a"][@checked]
-                /following-sibling::label
-                    [.="[trans]label.&a[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_1"][@value="&b"][not(@checked)]
-                /following-sibling::label
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_2"][@value="&c"][not(@checked)]
-                /following-sibling::label
-                    [.="[trans]label.&c[/trans]"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpandedWithLabelsSetFalseByCallable()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, ['&a'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
-            'choice_label' => function () {
-                return false;
-            },
-            'multiple' => true,
-            'expanded' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@value="&a"][@checked]
-                /following-sibling::label
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_1"][@value="&b"][not(@checked)]
-                /following-sibling::label
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpandedWithoutTranslation()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, ['&a', '&c'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c'],
-            'multiple' => true,
-            'expanded' => true,
-            'required' => true,
-            'choice_translation_domain' => false,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@checked][not(@required)]
-                /following-sibling::label
-                    [.="Choice&A"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_1"][not(@checked)][not(@required)]
-                /following-sibling::label
-                    [.="Choice&B"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_2"][@checked][not(@required)]
-                /following-sibling::label
-                    [.="Choice&C"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testMultipleChoiceExpandedAttributes()
-    {
-        $form = $this->factory->createNamed('name', ChoiceType::class, ['&a', '&c'], [
-            'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c'],
-            'choice_attr' => ['Choice&B' => ['class' => 'foo&bar']],
-            'multiple' => true,
-            'expanded' => true,
-            'required' => true,
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), [],
-'/div
-    [
-        ./div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_0"][@checked][not(@required)]
-                /following-sibling::label
-                    [.="[trans]Choice&A[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_1"][not(@checked)][not(@required)][@class="foo&bar form-check-input"]
-                /following-sibling::label
-                    [.="[trans]Choice&B[/trans]"]
-            ]
-        /following-sibling::div
-            [@class="form-check"]
-            [
-                ./input[@type="checkbox"][@name="name[]"][@id="name_2"][@checked][not(@required)]
-                /following-sibling::label
-                    [.="[trans]Choice&C[/trans]"]
-            ]
-        /following-sibling::input[@type="hidden"][@id="name__token"]
-    ]
-'
-        );
-    }
-
-    public function testCheckedRadio()
-    {
-        $form = $this->factory->createNamed('name', RadioType::class, true);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="form-check"]
-    [
-        ./input
-            [@id="my&id"]
-            [@type="radio"]
-            [@name="name"]
-            [@class="my&class form-check-input"]
-            [@checked="checked"]
-            [@value="1"]
-        /following-sibling::label
-            [@class="form-check-label required"]
-    ]
-'
-        );
-    }
-
-    public function testUncheckedRadio()
-    {
-        $form = $this->factory->createNamed('name', RadioType::class, false);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="form-check"]
-    [
-        ./input
-            [@id="my&id"]
-            [@type="radio"]
-            [@name="name"]
-            [@class="my&class form-check-input"]
-            [not(@checked)]
-        /following-sibling::label
-            [@class="form-check-label required"]
-    ]
-'
-        );
-    }
-
-    public function testRadioWithValue()
-    {
-        $form = $this->factory->createNamed('name', RadioType::class, false, [
-            'value' => 'foo&bar',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-'/div
-    [@class="form-check"]
-    [
-        ./input
-            [@id="my&id"]
-            [@type="radio"]
-            [@name="name"]
-            [@class="my&class form-check-input"]
-            [@value="foo&bar"]
-        /following-sibling::label
-            [@class="form-check-label required"]
-            [@for="my&id"]
-    ]
-'
-        );
-    }
-
-    public function testButtonAttributeNameRepeatedIfTrue()
-    {
-        $form = $this->factory->createNamed('button', ButtonType::class, null, [
-            'attr' => ['foo' => true],
-        ]);
-
-        $html = $this->renderWidget($form->createView());
-
-        // foo="foo"
-        $this->assertSame('<button type="button" id="button" name="button" foo="foo" class="btn-secondary btn">[trans]Button[/trans]</button>', $html);
-    }
-
-    public function testFile()
-    {
-        $form = $this->factory->createNamed('name', FileType::class);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['attr' => ['class' => 'my&class form-control-file']],
-'/input
-    [@type="file"]
-'
-        );
-    }
-
-    public function testMoney()
-    {
-        $form = $this->factory->createNamed('name', MoneyType::class, 1234.56, [
-            'currency' => 'EUR',
-        ]);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-            '/div
-    [@class="input-group"]
-    [
-        ./div
-            [@class="input-group-prepend"]
-            [
-                ./span
-                    [@class="input-group-text"]
-                    [contains(.., "€")]
-            ]
-        /following-sibling::input
-            [@id="my&id"]
-            [@type="text"]
-            [@name="name"]
-            [@class="my&class form-control"]
-            [@value="1234.56"]
-    ]
-'
-        );
-    }
-
-    public function testPercent()
-    {
-        $form = $this->factory->createNamed('name', PercentType::class, 0.1);
-
-        $this->assertWidgetMatchesXpath($form->createView(), ['id' => 'my&id', 'attr' => ['class' => 'my&class']],
-            '/div
-    [@class="input-group"]
-    [
-        ./input
-            [@id="my&id"]
-            [@type="text"]
-            [@name="name"]
-            [@class="my&class form-control"]
-            [@value="10"]
-            /following-sibling::div
-                [@class="input-group-append"]
-                [
-                    ./span
-                    [@class="input-group-text"]
-                    [contains(.., "%")]
-                ]
-    ]
-'
-        );
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/CodeExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/CodeExtensionTest.php
deleted file mode 100644
index a637117f0933f1cadde118d7a03e6f73b1698b41..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/CodeExtensionTest.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\CodeExtension;
-use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
-
-class CodeExtensionTest extends TestCase
-{
-    public function testFormatFile()
-    {
-        $expected = sprintf('<a href="proto://foobar%s#&amp;line=25" title="Click to open this file" class="file_link">%s at line 25</a>', substr(__FILE__, 5), __FILE__);
-        $this->assertEquals($expected, $this->getExtension()->formatFile(__FILE__, 25));
-    }
-
-    /**
-     * @dataProvider getClassNameProvider
-     */
-    public function testGettingClassAbbreviation($class, $abbr)
-    {
-        $this->assertEquals($this->getExtension()->abbrClass($class), $abbr);
-    }
-
-    /**
-     * @dataProvider getMethodNameProvider
-     */
-    public function testGettingMethodAbbreviation($method, $abbr)
-    {
-        $this->assertEquals($this->getExtension()->abbrMethod($method), $abbr);
-    }
-
-    public function getClassNameProvider()
-    {
-        return [
-            ['F\Q\N\Foo', '<abbr title="F\Q\N\Foo">Foo</abbr>'],
-            ['Bare', '<abbr title="Bare">Bare</abbr>'],
-        ];
-    }
-
-    public function getMethodNameProvider()
-    {
-        return [
-            ['F\Q\N\Foo::Method', '<abbr title="F\Q\N\Foo">Foo</abbr>::Method()'],
-            ['Bare::Method', '<abbr title="Bare">Bare</abbr>::Method()'],
-            ['Closure', '<abbr title="Closure">Closure</abbr>'],
-            ['Method', '<abbr title="Method">Method</abbr>()'],
-        ];
-    }
-
-    public function testGetName()
-    {
-        $this->assertEquals('code', $this->getExtension()->getName());
-    }
-
-    protected function getExtension()
-    {
-        return new CodeExtension(new FileLinkFormatter('proto://%f#&line=%l&'.substr(__FILE__, 0, 5).'>foobar'), '/root', 'UTF-8');
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/DumpExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/DumpExtensionTest.php
deleted file mode 100644
index 3125b88aad7fdb748d00fb7530cf255a5d265fbc..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/DumpExtensionTest.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\DumpExtension;
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-use Symfony\Component\VarDumper\Dumper\HtmlDumper;
-use Symfony\Component\VarDumper\VarDumper;
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class DumpExtensionTest extends TestCase
-{
-    /**
-     * @dataProvider getDumpTags
-     */
-    public function testDumpTag($template, $debug, $expectedOutput, $expectedDumped)
-    {
-        $extension = new DumpExtension(new VarCloner());
-        $twig = new Environment(new ArrayLoader(['template' => $template]), [
-            'debug' => $debug,
-            'cache' => false,
-            'optimizations' => 0,
-        ]);
-        $twig->addExtension($extension);
-
-        $dumped = null;
-        $exception = null;
-        $prevDumper = VarDumper::setHandler(function ($var) use (&$dumped) { $dumped = $var; });
-
-        try {
-            $this->assertEquals($expectedOutput, $twig->render('template'));
-        } catch (\Exception $exception) {
-        }
-
-        VarDumper::setHandler($prevDumper);
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-
-        $this->assertSame($expectedDumped, $dumped);
-    }
-
-    public function getDumpTags()
-    {
-        return [
-            ['A{% dump %}B', true, 'AB', []],
-            ['A{% set foo="bar"%}B{% dump %}C', true, 'ABC', ['foo' => 'bar']],
-            ['A{% dump %}B', false, 'AB', null],
-        ];
-    }
-
-    /**
-     * @dataProvider getDumpArgs
-     */
-    public function testDump($context, $args, $expectedOutput, $debug = true)
-    {
-        $extension = new DumpExtension(new VarCloner());
-        $twig = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock(), [
-            'debug' => $debug,
-            'cache' => false,
-            'optimizations' => 0,
-        ]);
-
-        array_unshift($args, $context);
-        array_unshift($args, $twig);
-
-        $dump = \call_user_func_array([$extension, 'dump'], $args);
-
-        if ($debug) {
-            $this->assertStringStartsWith('<script>', $dump);
-            $dump = preg_replace('/^.*?<pre/', '<pre', $dump);
-            $dump = preg_replace('/sf-dump-\d+/', 'sf-dump', $dump);
-            $dump = preg_replace('/<samp [^>]++>/', '<samp>', $dump);
-        }
-        $this->assertEquals($expectedOutput, $dump);
-    }
-
-    public function getDumpArgs()
-    {
-        return [
-            [[], [], '', false],
-            [[], [], "<pre class=sf-dump id=sf-dump data-indent-pad=\"  \">[]\n</pre><script>Sfdump(\"sf-dump\")</script>\n"],
-            [
-                [],
-                [123, 456],
-                "<pre class=sf-dump id=sf-dump data-indent-pad=\"  \"><span class=sf-dump-num>123</span>\n</pre><script>Sfdump(\"sf-dump\")</script>\n"
-                ."<pre class=sf-dump id=sf-dump data-indent-pad=\"  \"><span class=sf-dump-num>456</span>\n</pre><script>Sfdump(\"sf-dump\")</script>\n",
-            ],
-            [
-                ['foo' => 'bar'],
-                [],
-                "<pre class=sf-dump id=sf-dump data-indent-pad=\"  \"><span class=sf-dump-note>array:1</span> [<samp>\n"
-                ."  \"<span class=sf-dump-key>foo</span>\" => \"<span class=sf-dump-str title=\"3 characters\">bar</span>\"\n"
-                ."</samp>]\n"
-                ."</pre><script>Sfdump(\"sf-dump\")</script>\n",
-            ],
-        ];
-    }
-
-    public function testCustomDumper()
-    {
-        $output = '';
-        $lineDumper = function ($line) use (&$output) {
-            $output .= $line;
-        };
-
-        $dumper = new HtmlDumper($lineDumper);
-
-        $dumper->setDumpHeader('');
-        $dumper->setDumpBoundaries(
-            '<pre class=sf-dump-test id=%s data-indent-pad="%s">',
-            '</pre><script>Sfdump("%s")</script>'
-        );
-        $extension = new DumpExtension(new VarCloner(), $dumper);
-        $twig = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock(), [
-            'debug' => true,
-            'cache' => false,
-            'optimizations' => 0,
-        ]);
-
-        $dump = $extension->dump($twig, [], 'foo');
-        $dump = preg_replace('/sf-dump-\d+/', 'sf-dump', $dump);
-
-        $this->assertEquals(
-            '<pre class=sf-dump-test id=sf-dump data-indent-pad="  ">"'.
-            "<span class=sf-dump-str title=\"3 characters\">foo</span>\"\n".
-            "</pre><script>Sfdump(\"sf-dump\")</script>\n",
-            $dump,
-            'Custom dumper should be used to dump data.'
-        );
-
-        $this->assertEmpty($output, 'Dumper output should be ignored.');
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/ExpressionExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/ExpressionExtensionTest.php
deleted file mode 100644
index bfb9c578bbc958da71ae8d1c503a1afffd3b6b24..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/ExpressionExtensionTest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\ExpressionExtension;
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class ExpressionExtensionTest extends TestCase
-{
-    public function testExpressionCreation()
-    {
-        $template = "{{ expression('1 == 1') }}";
-        $twig = new Environment(new ArrayLoader(['template' => $template]), ['debug' => true, 'cache' => false, 'autoescape' => 'html', 'optimizations' => 0]);
-        $twig->addExtension(new ExpressionExtension());
-
-        $output = $twig->render('template');
-        $this->assertEquals('1 == 1', $output);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/StubFilesystemLoader.php b/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/StubFilesystemLoader.php
deleted file mode 100644
index 4cbc55b46a66ca0ee192623cd2593b42af7d5852..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/StubFilesystemLoader.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension\Fixtures;
-
-use Twig\Loader\FilesystemLoader;
-
-class StubFilesystemLoader extends FilesystemLoader
-{
-    protected function findTemplate($name, $throw = true)
-    {
-        // strip away bundle name
-        $parts = explode(':', $name);
-
-        return parent::findTemplate(end($parts), $throw);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/StubTranslator.php b/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/StubTranslator.php
deleted file mode 100644
index 5ef9e61b60ec31912712d1121bce47383cc330fc..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/StubTranslator.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension\Fixtures;
-
-use Symfony\Component\Translation\TranslatorInterface;
-
-class StubTranslator implements TranslatorInterface
-{
-    public function trans($id, array $parameters = [], $domain = null, $locale = null)
-    {
-        return '[trans]'.$id.'[/trans]';
-    }
-
-    public function transChoice($id, $number, array $parameters = [], $domain = null, $locale = null)
-    {
-        return '[trans]'.$id.'[/trans]';
-    }
-
-    public function setLocale($locale)
-    {
-    }
-
-    public function getLocale()
-    {
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/child_label.html.twig b/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/child_label.html.twig
deleted file mode 100644
index 8c7c2489901db5f517eb4a52cf68d31f49588b09..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/child_label.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% block form_label %}
-    <label>{{ global }}child</label>
-{% endblock form_label %}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/custom_widgets.html.twig b/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/custom_widgets.html.twig
deleted file mode 100644
index 36e9c702a94cdfc5e6238faa5a0b61e04522dcf1..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/custom_widgets.html.twig
+++ /dev/null
@@ -1,19 +0,0 @@
-{% block _text_id_widget -%}
-    <div id="container">
-        {{- form_widget(form) -}}
-    </div>
-{%- endblock _text_id_widget %}
-
-{% block _names_entry_label -%}
-    {% if label is empty %}
-        {%- set label = name|humanize -%}
-    {% endif -%}
-    <label>Custom label: {{ label|trans({}, translation_domain) }}</label>
-{%- endblock _names_entry_label %}
-
-{% block _name_c_entry_label -%}
-    {% if label is empty %}
-        {%- set label = name|humanize -%}
-    {% endif -%}
-    <label>Custom name label: {{ label|trans({}, translation_domain) }}</label>
-{%- endblock _name_c_entry_label %}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/page_dynamic_extends.html.twig b/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/page_dynamic_extends.html.twig
deleted file mode 100644
index ac166b7b600eec61590c22d14900eb220d63ebc0..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/page_dynamic_extends.html.twig
+++ /dev/null
@@ -1 +0,0 @@
-{% extends dynamic_template_name ~ '.html.twig' %}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/parent_label.html.twig b/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/parent_label.html.twig
deleted file mode 100644
index e96278b8f6266625a4b07bfa3e16a9c3f587b039..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/parent_label.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% block form_label %}
-    <label>parent</label>
-{% endblock form_label %}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/theme.html.twig b/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/theme.html.twig
deleted file mode 100644
index e8816be96e54ea86b74612767db1c7f398be5c77..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/theme.html.twig
+++ /dev/null
@@ -1,4 +0,0 @@
-{% block form_widget_simple %}
-    {%- set type = type|default('text') -%}
-    <input type="{{ type }}" {{ block('widget_attributes') }} value="{{ value }}" rel="theme" />
-{%- endblock form_widget_simple %}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/theme_extends.html.twig b/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/theme_extends.html.twig
deleted file mode 100644
index 501b555efc59f51b84e9cc88d04edc9994ee8d44..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/theme_extends.html.twig
+++ /dev/null
@@ -1,6 +0,0 @@
-{% extends 'form_div_layout.html.twig' %}
-
-{% block form_widget_simple %}
-    {%- set type = type|default('text') -%}
-    <input type="{{ type }}" {{ block('widget_attributes') }} value="{{ value }}" rel="theme" />
-{%- endblock form_widget_simple %}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/theme_use.html.twig b/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/theme_use.html.twig
deleted file mode 100644
index 37150734a4698f5bccd1aed0645cb28efa8a02d4..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/Fixtures/templates/form/theme_use.html.twig
+++ /dev/null
@@ -1,6 +0,0 @@
-{% use 'form_div_layout.html.twig' %}
-
-{% block form_widget_simple %}
-    {%- set type = type|default('text') -%}
-    <input type="{{ type }}" {{ block('widget_attributes') }} value="{{ value }}" rel="theme" />
-{%- endblock form_widget_simple %}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap3HorizontalLayoutTest.php b/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap3HorizontalLayoutTest.php
deleted file mode 100644
index b11d1720be0ba8869d8a795ae3fec041c117c82e..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap3HorizontalLayoutTest.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use Symfony\Bridge\Twig\Extension\FormExtension;
-use Symfony\Bridge\Twig\Extension\TranslationExtension;
-use Symfony\Bridge\Twig\Form\TwigRendererEngine;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubFilesystemLoader;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator;
-use Symfony\Component\Form\FormRenderer;
-use Symfony\Component\Form\FormView;
-use Twig\Environment;
-
-class FormExtensionBootstrap3HorizontalLayoutTest extends AbstractBootstrap3HorizontalLayoutTest
-{
-    use RuntimeLoaderProvider;
-
-    protected $testableFeatures = [
-        'choice_attr',
-    ];
-
-    /**
-     * @var FormRenderer
-     */
-    private $renderer;
-
-    /**
-     * @before
-     */
-    public function doSetUp()
-    {
-        $loader = new StubFilesystemLoader([
-            __DIR__.'/../../Resources/views/Form',
-            __DIR__.'/Fixtures/templates/form',
-        ]);
-
-        $environment = new Environment($loader, ['strict_variables' => true]);
-        $environment->addExtension(new TranslationExtension(new StubTranslator()));
-        $environment->addExtension(new FormExtension());
-
-        $rendererEngine = new TwigRendererEngine([
-            'bootstrap_3_horizontal_layout.html.twig',
-            'custom_widgets.html.twig',
-        ], $environment);
-        $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface')->getMock());
-        $this->registerTwigRuntimeLoader($environment, $this->renderer);
-    }
-
-    protected function renderForm(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form', $vars);
-    }
-
-    protected function renderLabel(FormView $view, $label = null, array $vars = [])
-    {
-        if (null !== $label) {
-            $vars += ['label' => $label];
-        }
-
-        return (string) $this->renderer->searchAndRenderBlock($view, 'label', $vars);
-    }
-
-    protected function renderErrors(FormView $view)
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'errors');
-    }
-
-    protected function renderWidget(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'widget', $vars);
-    }
-
-    protected function renderRow(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'row', $vars);
-    }
-
-    protected function renderRest(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'rest', $vars);
-    }
-
-    protected function renderStart(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_start', $vars);
-    }
-
-    protected function renderEnd(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
-    }
-
-    protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
-    {
-        $this->renderer->setTheme($view, $themes, $useDefaultThemes);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap3LayoutTest.php b/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap3LayoutTest.php
deleted file mode 100644
index 0bb5a7b6ce6bc412eb0bbc5076287348579a5d74..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap3LayoutTest.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use Symfony\Bridge\Twig\Extension\FormExtension;
-use Symfony\Bridge\Twig\Extension\TranslationExtension;
-use Symfony\Bridge\Twig\Form\TwigRendererEngine;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubFilesystemLoader;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator;
-use Symfony\Component\Form\FormRenderer;
-use Symfony\Component\Form\FormView;
-use Twig\Environment;
-
-class FormExtensionBootstrap3LayoutTest extends AbstractBootstrap3LayoutTest
-{
-    use RuntimeLoaderProvider;
-
-    /**
-     * @var FormRenderer
-     */
-    private $renderer;
-
-    /**
-     * @before
-     */
-    public function doSetUp()
-    {
-        $loader = new StubFilesystemLoader([
-            __DIR__.'/../../Resources/views/Form',
-            __DIR__.'/Fixtures/templates/form',
-        ]);
-
-        $environment = new Environment($loader, ['strict_variables' => true]);
-        $environment->addExtension(new TranslationExtension(new StubTranslator()));
-        $environment->addExtension(new FormExtension());
-
-        $rendererEngine = new TwigRendererEngine([
-            'bootstrap_3_layout.html.twig',
-            'custom_widgets.html.twig',
-        ], $environment);
-        $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface')->getMock());
-        $this->registerTwigRuntimeLoader($environment, $this->renderer);
-    }
-
-    public function testStartTagHasNoActionAttributeWhenActionIsEmpty()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => '',
-        ]);
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get">', $html);
-    }
-
-    public function testStartTagHasActionAttributeWhenActionIsZero()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => '0',
-        ]);
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get" action="0">', $html);
-    }
-
-    public function testMoneyWidgetInIso()
-    {
-        $environment = new Environment(new StubFilesystemLoader([
-            __DIR__.'/../../Resources/views/Form',
-            __DIR__.'/Fixtures/templates/form',
-        ]), ['strict_variables' => true]);
-        $environment->addExtension(new TranslationExtension(new StubTranslator()));
-        $environment->addExtension(new FormExtension());
-        $environment->setCharset('ISO-8859-1');
-
-        $rendererEngine = new TwigRendererEngine([
-            'bootstrap_3_layout.html.twig',
-            'custom_widgets.html.twig',
-        ], $environment);
-        $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface')->getMock());
-        $this->registerTwigRuntimeLoader($environment, $this->renderer);
-
-        $view = $this->factory
-            ->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\MoneyType')
-            ->createView()
-        ;
-
-        $this->assertSame(<<<'HTML'
-<div class="input-group">
-                            <span class="input-group-addon">&euro; </span>
-            <input type="text" id="name" name="name" required="required" class="form-control" />        </div>
-HTML
-        , trim($this->renderWidget($view)));
-    }
-
-    protected function renderForm(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form', $vars);
-    }
-
-    protected function renderLabel(FormView $view, $label = null, array $vars = [])
-    {
-        if (null !== $label) {
-            $vars += ['label' => $label];
-        }
-
-        return (string) $this->renderer->searchAndRenderBlock($view, 'label', $vars);
-    }
-
-    protected function renderErrors(FormView $view)
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'errors');
-    }
-
-    protected function renderWidget(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'widget', $vars);
-    }
-
-    protected function renderRow(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'row', $vars);
-    }
-
-    protected function renderRest(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'rest', $vars);
-    }
-
-    protected function renderStart(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_start', $vars);
-    }
-
-    protected function renderEnd(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
-    }
-
-    protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
-    {
-        $this->renderer->setTheme($view, $themes, $useDefaultThemes);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap4HorizontalLayoutTest.php b/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap4HorizontalLayoutTest.php
deleted file mode 100644
index 02ab01fc573af35c950d48ea92beef6ae0fe143b..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap4HorizontalLayoutTest.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use Symfony\Bridge\Twig\Extension\FormExtension;
-use Symfony\Bridge\Twig\Extension\TranslationExtension;
-use Symfony\Bridge\Twig\Form\TwigRendererEngine;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubFilesystemLoader;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator;
-use Symfony\Component\Form\FormRenderer;
-use Symfony\Component\Form\FormView;
-use Twig\Environment;
-
-/**
- * Class providing test cases for the Bootstrap 4 Twig form theme.
- *
- * @author Hidde Wieringa <hidde@hiddewieringa.nl>
- */
-class FormExtensionBootstrap4HorizontalLayoutTest extends AbstractBootstrap4HorizontalLayoutTest
-{
-    use RuntimeLoaderProvider;
-
-    protected $testableFeatures = [
-        'choice_attr',
-    ];
-
-    private $renderer;
-
-    /**
-     * @before
-     */
-    public function doSetUp()
-    {
-        $loader = new StubFilesystemLoader([
-            __DIR__.'/../../Resources/views/Form',
-            __DIR__.'/Fixtures/templates/form',
-        ]);
-
-        $environment = new Environment($loader, ['strict_variables' => true]);
-        $environment->addExtension(new TranslationExtension(new StubTranslator()));
-        $environment->addExtension(new FormExtension());
-
-        $rendererEngine = new TwigRendererEngine([
-            'bootstrap_4_horizontal_layout.html.twig',
-            'custom_widgets.html.twig',
-        ], $environment);
-        $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface')->getMock());
-        $this->registerTwigRuntimeLoader($environment, $this->renderer);
-    }
-
-    protected function renderForm(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form', $vars);
-    }
-
-    protected function renderLabel(FormView $view, $label = null, array $vars = [])
-    {
-        if (null !== $label) {
-            $vars += ['label' => $label];
-        }
-
-        return (string) $this->renderer->searchAndRenderBlock($view, 'label', $vars);
-    }
-
-    protected function renderErrors(FormView $view)
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'errors');
-    }
-
-    protected function renderWidget(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'widget', $vars);
-    }
-
-    protected function renderRow(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'row', $vars);
-    }
-
-    protected function renderRest(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'rest', $vars);
-    }
-
-    protected function renderStart(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_start', $vars);
-    }
-
-    protected function renderEnd(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
-    }
-
-    protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
-    {
-        $this->renderer->setTheme($view, $themes, $useDefaultThemes);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap4LayoutTest.php b/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap4LayoutTest.php
deleted file mode 100644
index cb2328b51fd45e49c8a12e26bc14b70d5de34aa6..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionBootstrap4LayoutTest.php
+++ /dev/null
@@ -1,160 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use Symfony\Bridge\Twig\Extension\FormExtension;
-use Symfony\Bridge\Twig\Extension\TranslationExtension;
-use Symfony\Bridge\Twig\Form\TwigRendererEngine;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubFilesystemLoader;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator;
-use Symfony\Component\Form\FormRenderer;
-use Symfony\Component\Form\FormView;
-use Twig\Environment;
-
-/**
- * Class providing test cases for the Bootstrap 4 horizontal Twig form theme.
- *
- * @author Hidde Wieringa <hidde@hiddewieringa.nl>
- */
-class FormExtensionBootstrap4LayoutTest extends AbstractBootstrap4LayoutTest
-{
-    use RuntimeLoaderProvider;
-    /**
-     * @var FormRenderer
-     */
-    private $renderer;
-
-    /**
-     * @before
-     */
-    public function doSetUp()
-    {
-        $loader = new StubFilesystemLoader([
-            __DIR__.'/../../Resources/views/Form',
-            __DIR__.'/Fixtures/templates/form',
-        ]);
-
-        $environment = new Environment($loader, ['strict_variables' => true]);
-        $environment->addExtension(new TranslationExtension(new StubTranslator()));
-        $environment->addExtension(new FormExtension());
-
-        $rendererEngine = new TwigRendererEngine([
-            'bootstrap_4_layout.html.twig',
-            'custom_widgets.html.twig',
-        ], $environment);
-        $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface')->getMock());
-        $this->registerTwigRuntimeLoader($environment, $this->renderer);
-    }
-
-    public function testStartTagHasNoActionAttributeWhenActionIsEmpty()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => '',
-        ]);
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get">', $html);
-    }
-
-    public function testStartTagHasActionAttributeWhenActionIsZero()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => '0',
-        ]);
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get" action="0">', $html);
-    }
-
-    public function testMoneyWidgetInIso()
-    {
-        $environment = new Environment(new StubFilesystemLoader([
-            __DIR__.'/../../Resources/views/Form',
-            __DIR__.'/Fixtures/templates/form',
-        ]), ['strict_variables' => true]);
-        $environment->addExtension(new TranslationExtension(new StubTranslator()));
-        $environment->addExtension(new FormExtension());
-        $environment->setCharset('ISO-8859-1');
-
-        $rendererEngine = new TwigRendererEngine([
-            'bootstrap_4_layout.html.twig',
-            'custom_widgets.html.twig',
-        ], $environment);
-        $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface')->getMock());
-        $this->registerTwigRuntimeLoader($environment, $this->renderer);
-
-        $view = $this->factory
-            ->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\MoneyType')
-            ->createView()
-        ;
-
-        $this->assertSame(<<<'HTML'
-<div class="input-group"><div class="input-group-prepend">
-                    <span class="input-group-text">&euro; </span>
-                </div><input type="text" id="name" name="name" required="required" class="form-control" /></div>
-HTML
-        , trim($this->renderWidget($view)));
-    }
-
-    protected function renderForm(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form', $vars);
-    }
-
-    protected function renderLabel(FormView $view, $label = null, array $vars = [])
-    {
-        if (null !== $label) {
-            $vars += ['label' => $label];
-        }
-
-        return (string) $this->renderer->searchAndRenderBlock($view, 'label', $vars);
-    }
-
-    protected function renderErrors(FormView $view)
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'errors');
-    }
-
-    protected function renderWidget(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'widget', $vars);
-    }
-
-    protected function renderRow(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'row', $vars);
-    }
-
-    protected function renderRest(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'rest', $vars);
-    }
-
-    protected function renderStart(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_start', $vars);
-    }
-
-    protected function renderEnd(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
-    }
-
-    protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
-    {
-        $this->renderer->setTheme($view, $themes, $useDefaultThemes);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionDivLayoutTest.php b/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionDivLayoutTest.php
deleted file mode 100644
index 51e587411869f50679f0a67d355124367a65a00a..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionDivLayoutTest.php
+++ /dev/null
@@ -1,258 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use Symfony\Bridge\Twig\Extension\FormExtension;
-use Symfony\Bridge\Twig\Extension\TranslationExtension;
-use Symfony\Bridge\Twig\Form\TwigRendererEngine;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubFilesystemLoader;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator;
-use Symfony\Component\Form\ChoiceList\View\ChoiceView;
-use Symfony\Component\Form\FormRenderer;
-use Symfony\Component\Form\FormView;
-use Symfony\Component\Form\Tests\AbstractDivLayoutTest;
-use Twig\Environment;
-
-class FormExtensionDivLayoutTest extends AbstractDivLayoutTest
-{
-    use RuntimeLoaderProvider;
-
-    /**
-     * @var FormRenderer
-     */
-    private $renderer;
-
-    protected static $supportedFeatureSetVersion = 304;
-
-    /**
-     * @before
-     */
-    public function doSetUp()
-    {
-        $loader = new StubFilesystemLoader([
-            __DIR__.'/../../Resources/views/Form',
-            __DIR__.'/Fixtures/templates/form',
-        ]);
-
-        $environment = new Environment($loader, ['strict_variables' => true]);
-        $environment->addExtension(new TranslationExtension(new StubTranslator()));
-        $environment->addGlobal('global', '');
-        // the value can be any template that exists
-        $environment->addGlobal('dynamic_template_name', 'child_label');
-        $environment->addExtension(new FormExtension());
-
-        $rendererEngine = new TwigRendererEngine([
-            'form_div_layout.html.twig',
-            'custom_widgets.html.twig',
-        ], $environment);
-        $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface')->getMock());
-        $this->registerTwigRuntimeLoader($environment, $this->renderer);
-    }
-
-    public function testThemeBlockInheritanceUsingUse()
-    {
-        $view = $this->factory
-            ->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\EmailType')
-            ->createView()
-        ;
-
-        $this->setTheme($view, ['theme_use.html.twig']);
-
-        $this->assertMatchesXpath(
-            $this->renderWidget($view),
-            '/input[@type="email"][@rel="theme"]'
-        );
-    }
-
-    public function testThemeBlockInheritanceUsingExtend()
-    {
-        $view = $this->factory
-            ->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\EmailType')
-            ->createView()
-        ;
-
-        $this->setTheme($view, ['theme_extends.html.twig']);
-
-        $this->assertMatchesXpath(
-            $this->renderWidget($view),
-            '/input[@type="email"][@rel="theme"]'
-        );
-    }
-
-    public function testThemeBlockInheritanceUsingDynamicExtend()
-    {
-        $view = $this->factory
-            ->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\EmailType')
-            ->createView()
-        ;
-
-        $this->renderer->setTheme($view, ['page_dynamic_extends.html.twig']);
-        $this->assertMatchesXpath(
-            $this->renderer->searchAndRenderBlock($view, 'row'),
-            '/div/label[text()="child"]'
-        );
-    }
-
-    public function isSelectedChoiceProvider()
-    {
-        return [
-            [true, '0', '0'],
-            [true, '1', '1'],
-            [true, '', ''],
-            [true, '1.23', '1.23'],
-            [true, 'foo', 'foo'],
-            [true, 'foo10', 'foo10'],
-            [true, 'foo', [1, 'foo', 'foo10']],
-
-            [false, 10, [1, 'foo', 'foo10']],
-            [false, 0, [1, 'foo', 'foo10']],
-        ];
-    }
-
-    /**
-     * @dataProvider isSelectedChoiceProvider
-     */
-    public function testIsChoiceSelected($expected, $choice, $value)
-    {
-        $choice = new ChoiceView($choice, $choice, $choice.' label');
-
-        $this->assertSame($expected, \Symfony\Bridge\Twig\Extension\twig_is_selected_choice($choice, $value));
-    }
-
-    public function testStartTagHasNoActionAttributeWhenActionIsEmpty()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => '',
-        ]);
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get">', $html);
-    }
-
-    public function testStartTagHasActionAttributeWhenActionIsZero()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => '0',
-        ]);
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get" action="0">', $html);
-    }
-
-    public function isRootFormProvider()
-    {
-        return [
-            [true, new FormView()],
-            [false, new FormView(new FormView())],
-        ];
-    }
-
-    /**
-     * @dataProvider isRootFormProvider
-     */
-    public function testIsRootForm($expected, FormView $formView)
-    {
-        $this->assertSame($expected, \Symfony\Bridge\Twig\Extension\twig_is_root_form($formView));
-    }
-
-    public function testMoneyWidgetInIso()
-    {
-        $environment = new Environment(new StubFilesystemLoader([
-            __DIR__.'/../../Resources/views/Form',
-            __DIR__.'/Fixtures/templates/form',
-        ]), ['strict_variables' => true]);
-        $environment->addExtension(new TranslationExtension(new StubTranslator()));
-        $environment->addExtension(new FormExtension());
-        $environment->setCharset('ISO-8859-1');
-
-        $rendererEngine = new TwigRendererEngine([
-            'form_div_layout.html.twig',
-            'custom_widgets.html.twig',
-        ], $environment);
-        $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface')->getMock());
-        $this->registerTwigRuntimeLoader($environment, $this->renderer);
-
-        $view = $this->factory
-            ->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\MoneyType')
-            ->createView()
-        ;
-
-        $this->assertSame('&euro; <input type="text" id="name" name="name" required="required" />', $this->renderWidget($view));
-    }
-
-    protected function renderForm(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form', $vars);
-    }
-
-    protected function renderLabel(FormView $view, $label = null, array $vars = [])
-    {
-        if (null !== $label) {
-            $vars += ['label' => $label];
-        }
-
-        return (string) $this->renderer->searchAndRenderBlock($view, 'label', $vars);
-    }
-
-    protected function renderErrors(FormView $view)
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'errors');
-    }
-
-    protected function renderWidget(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'widget', $vars);
-    }
-
-    protected function renderRow(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'row', $vars);
-    }
-
-    protected function renderRest(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'rest', $vars);
-    }
-
-    protected function renderStart(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_start', $vars);
-    }
-
-    protected function renderEnd(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
-    }
-
-    protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
-    {
-        $this->renderer->setTheme($view, $themes, $useDefaultThemes);
-    }
-
-    public static function themeBlockInheritanceProvider()
-    {
-        return [
-            [['theme.html.twig']],
-        ];
-    }
-
-    public static function themeInheritanceProvider()
-    {
-        return [
-            [['parent_label.html.twig'], ['child_label.html.twig']],
-        ];
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionTableLayoutTest.php b/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionTableLayoutTest.php
deleted file mode 100644
index 0676dffd5734178360247e94c471ddb65a4aeaa2..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionTableLayoutTest.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use Symfony\Bridge\Twig\Extension\FormExtension;
-use Symfony\Bridge\Twig\Extension\TranslationExtension;
-use Symfony\Bridge\Twig\Form\TwigRendererEngine;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubFilesystemLoader;
-use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator;
-use Symfony\Component\Form\FormRenderer;
-use Symfony\Component\Form\FormView;
-use Symfony\Component\Form\Tests\AbstractTableLayoutTest;
-use Twig\Environment;
-
-class FormExtensionTableLayoutTest extends AbstractTableLayoutTest
-{
-    use RuntimeLoaderProvider;
-
-    /**
-     * @var FormRenderer
-     */
-    private $renderer;
-
-    protected static $supportedFeatureSetVersion = 304;
-
-    /**
-     * @before
-     */
-    public function doSetUp()
-    {
-        $loader = new StubFilesystemLoader([
-            __DIR__.'/../../Resources/views/Form',
-            __DIR__.'/Fixtures/templates/form',
-        ]);
-
-        $environment = new Environment($loader, ['strict_variables' => true]);
-        $environment->addExtension(new TranslationExtension(new StubTranslator()));
-        $environment->addGlobal('global', '');
-        $environment->addExtension(new FormExtension());
-
-        $rendererEngine = new TwigRendererEngine([
-            'form_table_layout.html.twig',
-            'custom_widgets.html.twig',
-        ], $environment);
-        $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface')->getMock());
-        $this->registerTwigRuntimeLoader($environment, $this->renderer);
-    }
-
-    public function testStartTagHasNoActionAttributeWhenActionIsEmpty()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => '',
-        ]);
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get">', $html);
-    }
-
-    public function testStartTagHasActionAttributeWhenActionIsZero()
-    {
-        $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [
-            'method' => 'get',
-            'action' => '0',
-        ]);
-
-        $html = $this->renderStart($form->createView());
-
-        $this->assertSame('<form name="form" method="get" action="0">', $html);
-    }
-
-    protected function renderForm(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form', $vars);
-    }
-
-    protected function renderLabel(FormView $view, $label = null, array $vars = [])
-    {
-        if (null !== $label) {
-            $vars += ['label' => $label];
-        }
-
-        return (string) $this->renderer->searchAndRenderBlock($view, 'label', $vars);
-    }
-
-    protected function renderErrors(FormView $view)
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'errors');
-    }
-
-    protected function renderWidget(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'widget', $vars);
-    }
-
-    protected function renderRow(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'row', $vars);
-    }
-
-    protected function renderRest(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->searchAndRenderBlock($view, 'rest', $vars);
-    }
-
-    protected function renderStart(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_start', $vars);
-    }
-
-    protected function renderEnd(FormView $view, array $vars = [])
-    {
-        return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
-    }
-
-    protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
-    {
-        $this->renderer->setTheme($view, $themes, $useDefaultThemes);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionTest.php
deleted file mode 100644
index 4bdf7877556427b4a25ae71b68644669f024ac47..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/FormExtensionTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\FormExtension;
-use Symfony\Bridge\Twig\Form\TwigRendererInterface;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\Form\FormRendererInterface;
-use Twig\Environment;
-
-/**
- * @group legacy
- */
-class FormExtensionTest extends TestCase
-{
-    /**
-     * @dataProvider rendererDataProvider
-     */
-    public function testInitRuntimeAndAccessRenderer($rendererConstructor, $expectedAccessedRenderer)
-    {
-        $extension = new FormExtension($rendererConstructor);
-        $extension->initRuntime($this->getMockBuilder(Environment::class)->disableOriginalConstructor()->getMock());
-        $this->assertSame($expectedAccessedRenderer, $extension->renderer);
-    }
-
-    /**
-     * @dataProvider rendererDataProvider
-     */
-    public function testAccessRendererAndInitRuntime($rendererConstructor, $expectedAccessedRenderer)
-    {
-        $extension = new FormExtension($rendererConstructor);
-        $this->assertSame($expectedAccessedRenderer, $extension->renderer);
-        $extension->initRuntime($this->getMockBuilder(Environment::class)->disableOriginalConstructor()->getMock());
-    }
-
-    public function rendererDataProvider()
-    {
-        $twigRenderer = $this->getMockBuilder(TwigRendererInterface::class)->getMock();
-        $twigRenderer->expects($this->once())
-            ->method('setEnvironment');
-
-        yield [$twigRenderer, $twigRenderer];
-
-        $twigRenderer = $this->getMockBuilder(TwigRendererInterface::class)->getMock();
-        $twigRenderer->expects($this->once())
-            ->method('setEnvironment');
-
-        $container = $this->getMockBuilder(ContainerInterface::class)->getMock();
-        $container->expects($this->once())
-            ->method('get')
-            ->with('service_id')
-            ->willReturn($twigRenderer);
-
-        yield [[$container, 'service_id'], $twigRenderer];
-
-        $formRenderer = $this->getMockBuilder(FormRendererInterface::class)->getMock();
-
-        $container = $this->getMockBuilder(ContainerInterface::class)->getMock();
-        $container->expects($this->once())
-            ->method('get')
-            ->with('service_id')
-            ->willReturn($formRenderer);
-
-        yield [[$container, 'service_id'], $formRenderer];
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/HttpFoundationExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/HttpFoundationExtensionTest.php
deleted file mode 100644
index 38ee375b94b137c4a533ed4c3294d25027803e34..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/HttpFoundationExtensionTest.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\HttpFoundationExtension;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\Routing\RequestContext;
-
-class HttpFoundationExtensionTest extends TestCase
-{
-    /**
-     * @dataProvider getGenerateAbsoluteUrlData()
-     */
-    public function testGenerateAbsoluteUrl($expected, $path, $pathinfo)
-    {
-        $stack = new RequestStack();
-        $stack->push(Request::create($pathinfo));
-        $extension = new HttpFoundationExtension($stack);
-
-        $this->assertEquals($expected, $extension->generateAbsoluteUrl($path));
-    }
-
-    public function getGenerateAbsoluteUrlData()
-    {
-        return [
-            ['http://localhost/foo.png', '/foo.png', '/foo/bar.html'],
-            ['http://localhost/foo/foo.png', 'foo.png', '/foo/bar.html'],
-            ['http://localhost/foo/foo.png', 'foo.png', '/foo/bar'],
-            ['http://localhost/foo/bar/foo.png', 'foo.png', '/foo/bar/'],
-
-            ['http://example.com/baz', 'http://example.com/baz', '/'],
-            ['https://example.com/baz', 'https://example.com/baz', '/'],
-            ['//example.com/baz', '//example.com/baz', '/'],
-
-            ['http://localhost/foo/bar?baz', '?baz', '/foo/bar'],
-            ['http://localhost/foo/bar?baz=1', '?baz=1', '/foo/bar?foo=1'],
-            ['http://localhost/foo/baz?baz=1', 'baz?baz=1', '/foo/bar?foo=1'],
-
-            ['http://localhost/foo/bar#baz', '#baz', '/foo/bar'],
-            ['http://localhost/foo/bar?0#baz', '#baz', '/foo/bar?0'],
-            ['http://localhost/foo/bar?baz=1#baz', '?baz=1#baz', '/foo/bar?foo=1'],
-            ['http://localhost/foo/baz?baz=1#baz', 'baz?baz=1#baz', '/foo/bar?foo=1'],
-        ];
-    }
-
-    /**
-     * @dataProvider getGenerateAbsoluteUrlRequestContextData
-     */
-    public function testGenerateAbsoluteUrlWithRequestContext($path, $baseUrl, $host, $scheme, $httpPort, $httpsPort, $expected)
-    {
-        if (!class_exists('Symfony\Component\Routing\RequestContext')) {
-            $this->markTestSkipped('The Routing component is needed to run tests that depend on its request context.');
-        }
-
-        $requestContext = new RequestContext($baseUrl, 'GET', $host, $scheme, $httpPort, $httpsPort, $path);
-        $extension = new HttpFoundationExtension(new RequestStack(), $requestContext);
-
-        $this->assertEquals($expected, $extension->generateAbsoluteUrl($path));
-    }
-
-    /**
-     * @dataProvider getGenerateAbsoluteUrlRequestContextData
-     */
-    public function testGenerateAbsoluteUrlWithoutRequestAndRequestContext($path)
-    {
-        if (!class_exists('Symfony\Component\Routing\RequestContext')) {
-            $this->markTestSkipped('The Routing component is needed to run tests that depend on its request context.');
-        }
-
-        $extension = new HttpFoundationExtension(new RequestStack());
-
-        $this->assertEquals($path, $extension->generateAbsoluteUrl($path));
-    }
-
-    public function getGenerateAbsoluteUrlRequestContextData()
-    {
-        return [
-            ['/foo.png', '/foo', 'localhost', 'http', 80, 443, 'http://localhost/foo.png'],
-            ['foo.png', '/foo', 'localhost', 'http', 80, 443, 'http://localhost/foo/foo.png'],
-            ['foo.png', '/foo/bar/', 'localhost', 'http', 80, 443, 'http://localhost/foo/bar/foo.png'],
-            ['/foo.png', '/foo', 'localhost', 'https', 80, 443, 'https://localhost/foo.png'],
-            ['foo.png', '/foo', 'localhost', 'https', 80, 443, 'https://localhost/foo/foo.png'],
-            ['foo.png', '/foo/bar/', 'localhost', 'https', 80, 443, 'https://localhost/foo/bar/foo.png'],
-            ['/foo.png', '/foo', 'localhost', 'http', 443, 80, 'http://localhost:443/foo.png'],
-            ['/foo.png', '/foo', 'localhost', 'https', 443, 80, 'https://localhost:80/foo.png'],
-        ];
-    }
-
-    public function testGenerateAbsoluteUrlWithScriptFileName()
-    {
-        $request = Request::create('http://localhost/app/web/app_dev.php');
-        $request->server->set('SCRIPT_FILENAME', '/var/www/app/web/app_dev.php');
-
-        $stack = new RequestStack();
-        $stack->push($request);
-        $extension = new HttpFoundationExtension($stack);
-
-        $this->assertEquals(
-            'http://localhost/app/web/bundles/framework/css/structure.css',
-            $extension->generateAbsoluteUrl('/app/web/bundles/framework/css/structure.css')
-        );
-    }
-
-    /**
-     * @dataProvider getGenerateRelativePathData()
-     */
-    public function testGenerateRelativePath($expected, $path, $pathinfo)
-    {
-        if (!method_exists('Symfony\Component\HttpFoundation\Request', 'getRelativeUriForPath')) {
-            $this->markTestSkipped('Your version of Symfony HttpFoundation is too old.');
-        }
-
-        $stack = new RequestStack();
-        $stack->push(Request::create($pathinfo));
-        $extension = new HttpFoundationExtension($stack);
-
-        $this->assertEquals($expected, $extension->generateRelativePath($path));
-    }
-
-    public function getGenerateRelativePathData()
-    {
-        return [
-            ['../foo.png', '/foo.png', '/foo/bar.html'],
-            ['../baz/foo.png', '/baz/foo.png', '/foo/bar.html'],
-            ['baz/foo.png', 'baz/foo.png', '/foo/bar.html'],
-
-            ['http://example.com/baz', 'http://example.com/baz', '/'],
-            ['https://example.com/baz', 'https://example.com/baz', '/'],
-            ['//example.com/baz', '//example.com/baz', '/'],
-        ];
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/HttpKernelExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/HttpKernelExtensionTest.php
deleted file mode 100644
index c635935f3e7ae9dc33e82e297cd072993db4f238..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/HttpKernelExtensionTest.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\HttpKernelExtension;
-use Symfony\Bridge\Twig\Extension\HttpKernelRuntime;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Fragment\FragmentHandler;
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class HttpKernelExtensionTest extends TestCase
-{
-    public function testFragmentWithError()
-    {
-        $this->expectException('Twig\Error\RuntimeError');
-        $renderer = $this->getFragmentHandler($this->throwException(new \Exception('foo')));
-
-        $this->renderTemplate($renderer);
-    }
-
-    public function testRenderFragment()
-    {
-        $renderer = $this->getFragmentHandler($this->returnValue(new Response('html')));
-
-        $response = $this->renderTemplate($renderer);
-
-        $this->assertEquals('html', $response);
-    }
-
-    public function testUnknownFragmentRenderer()
-    {
-        $context = $this->getMockBuilder('Symfony\\Component\\HttpFoundation\\RequestStack')
-            ->disableOriginalConstructor()
-            ->getMock()
-        ;
-        $renderer = new FragmentHandler($context);
-
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The "inline" renderer does not exist.');
-
-        $renderer->render('/foo');
-    }
-
-    protected function getFragmentHandler($return)
-    {
-        $strategy = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Fragment\\FragmentRendererInterface')->getMock();
-        $strategy->expects($this->once())->method('getName')->willReturn('inline');
-        $strategy->expects($this->once())->method('render')->will($return);
-
-        $context = $this->getMockBuilder('Symfony\\Component\\HttpFoundation\\RequestStack')
-            ->disableOriginalConstructor()
-            ->getMock()
-        ;
-
-        $context->expects($this->any())->method('getCurrentRequest')->willReturn(Request::create('/'));
-
-        return new FragmentHandler($context, [$strategy], false);
-    }
-
-    protected function renderTemplate(FragmentHandler $renderer, $template = '{{ render("foo") }}')
-    {
-        $loader = new ArrayLoader(['index' => $template]);
-        $twig = new Environment($loader, ['debug' => true, 'cache' => false]);
-        $twig->addExtension(new HttpKernelExtension());
-
-        $loader = $this->getMockBuilder('Twig\RuntimeLoader\RuntimeLoaderInterface')->getMock();
-        $loader->expects($this->any())->method('load')->willReturnMap([
-            ['Symfony\Bridge\Twig\Extension\HttpKernelRuntime', new HttpKernelRuntime($renderer)],
-        ]);
-        $twig->addRuntimeLoader($loader);
-
-        return $twig->render('index');
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/RoutingExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/RoutingExtensionTest.php
deleted file mode 100644
index 05f7ad741c7eaee435fda2a5aa49b3f7edf04f1f..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/RoutingExtensionTest.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\RoutingExtension;
-use Twig\Environment;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Source;
-
-class RoutingExtensionTest extends TestCase
-{
-    /**
-     * @dataProvider getEscapingTemplates
-     */
-    public function testEscaping($template, $mustBeEscaped)
-    {
-        $twig = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock(), ['debug' => true, 'cache' => false, 'autoescape' => 'html', 'optimizations' => 0]);
-        $twig->addExtension(new RoutingExtension($this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGeneratorInterface')->getMock()));
-
-        $nodes = $twig->parse($twig->tokenize(new Source($template, '')));
-
-        $this->assertSame($mustBeEscaped, $nodes->getNode('body')->getNode(0)->getNode('expr') instanceof FilterExpression);
-    }
-
-    public function getEscapingTemplates()
-    {
-        return [
-            ['{{ path("foo") }}', false],
-            ['{{ path("foo", {}) }}', false],
-            ['{{ path("foo", { foo: "foo" }) }}', false],
-            ['{{ path("foo", foo) }}', true],
-            ['{{ path("foo", { foo: foo }) }}', true],
-            ['{{ path("foo", { foo: ["foo", "bar"] }) }}', true],
-            ['{{ path("foo", { foo: "foo", bar: "bar" }) }}', true],
-
-            ['{{ path(name = "foo", parameters = {}) }}', false],
-            ['{{ path(name = "foo", parameters = { foo: "foo" }) }}', false],
-            ['{{ path(name = "foo", parameters = foo) }}', true],
-            ['{{ path(name = "foo", parameters = { foo: ["foo", "bar"] }) }}', true],
-            ['{{ path(name = "foo", parameters = { foo: foo }) }}', true],
-            ['{{ path(name = "foo", parameters = { foo: "foo", bar: "bar" }) }}', true],
-        ];
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/RuntimeLoaderProvider.php b/vendor/symfony/twig-bridge/Tests/Extension/RuntimeLoaderProvider.php
deleted file mode 100644
index 0bec8ec6f1aabe94aca0fd60b48720743fa6f623..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/RuntimeLoaderProvider.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use Symfony\Component\Form\FormRenderer;
-use Twig\Environment;
-
-trait RuntimeLoaderProvider
-{
-    protected function registerTwigRuntimeLoader(Environment $environment, FormRenderer $renderer)
-    {
-        $loader = $this->getMockBuilder('Twig\RuntimeLoader\RuntimeLoaderInterface')->getMock();
-        $loader->expects($this->any())->method('load')->will($this->returnValueMap([
-            ['Symfony\Component\Form\FormRenderer', $renderer],
-        ]));
-        $environment->addRuntimeLoader($loader);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/StopwatchExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/StopwatchExtensionTest.php
deleted file mode 100644
index 8e100deae10a64d36fa5fc6d1eb28d1d2d1fb7a5..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/StopwatchExtensionTest.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\StopwatchExtension;
-use Twig\Environment;
-use Twig\Error\RuntimeError;
-use Twig\Loader\ArrayLoader;
-
-class StopwatchExtensionTest extends TestCase
-{
-    public function testFailIfStoppingWrongEvent()
-    {
-        $this->expectException('Twig\Error\SyntaxError');
-        $this->testTiming('{% stopwatch "foo" %}{% endstopwatch "bar" %}', []);
-    }
-
-    /**
-     * @dataProvider getTimingTemplates
-     */
-    public function testTiming($template, $events)
-    {
-        $twig = new Environment(new ArrayLoader(['template' => $template]), ['debug' => true, 'cache' => false, 'autoescape' => 'html', 'optimizations' => 0]);
-        $twig->addExtension(new StopwatchExtension($this->getStopwatch($events)));
-
-        try {
-            $twig->render('template');
-        } catch (RuntimeError $e) {
-            throw $e->getPrevious();
-        }
-    }
-
-    public function getTimingTemplates()
-    {
-        return [
-            ['{% stopwatch "foo" %}something{% endstopwatch %}', 'foo'],
-            ['{% stopwatch "foo" %}symfony is fun{% endstopwatch %}{% stopwatch "bar" %}something{% endstopwatch %}', ['foo', 'bar']],
-            ['{% set foo = "foo" %}{% stopwatch foo %}something{% endstopwatch %}', 'foo'],
-            ['{% set foo = "foo" %}{% stopwatch foo %}something {% set foo = "bar" %}{% endstopwatch %}', 'foo'],
-            ['{% stopwatch "foo.bar" %}something{% endstopwatch %}', 'foo.bar'],
-            ['{% stopwatch "foo" %}something{% endstopwatch %}{% stopwatch "foo" %}something else{% endstopwatch %}', ['foo', 'foo']],
-        ];
-    }
-
-    protected function getStopwatch($events = [])
-    {
-        $events = \is_array($events) ? $events : [$events];
-        $stopwatch = $this->getMockBuilder('Symfony\Component\Stopwatch\Stopwatch')->getMock();
-
-        $expectedCalls = 0;
-        $expectedStartCalls = [];
-        $expectedStopCalls = [];
-        foreach ($events as $eventName) {
-            ++$expectedCalls;
-            $expectedStartCalls[] = [$this->equalTo($eventName), 'template'];
-            $expectedStopCalls[] = [$this->equalTo($eventName)];
-        }
-
-        $startInvocationMocker = $stopwatch->expects($this->exactly($expectedCalls))
-            ->method('start');
-        \call_user_func_array([$startInvocationMocker, 'withConsecutive'], $expectedStartCalls);
-        $stopInvocationMocker = $stopwatch->expects($this->exactly($expectedCalls))
-            ->method('stop');
-        \call_user_func_array([$stopInvocationMocker, 'withConsecutive'], $expectedStopCalls);
-
-        return $stopwatch;
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/TranslationExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/TranslationExtensionTest.php
deleted file mode 100644
index 206cda6783d3d3b4db89fc6c594d410b55510204..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/TranslationExtensionTest.php
+++ /dev/null
@@ -1,213 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\TranslationExtension;
-use Symfony\Component\Translation\Loader\ArrayLoader;
-use Symfony\Component\Translation\Translator;
-use Twig\Environment;
-use Twig\Loader\ArrayLoader as TwigArrayLoader;
-
-class TranslationExtensionTest extends TestCase
-{
-    public function testEscaping()
-    {
-        $output = $this->getTemplate('{% trans %}Percent: %value%%% (%msg%){% endtrans %}')->render(['value' => 12, 'msg' => 'approx.']);
-
-        $this->assertEquals('Percent: 12% (approx.)', $output);
-    }
-
-    /**
-     * @dataProvider getTransTests
-     */
-    public function testTrans($template, $expected, array $variables = [])
-    {
-        if ($expected != $this->getTemplate($template)->render($variables)) {
-            echo $template."\n";
-            $loader = new TwigArrayLoader(['index' => $template]);
-            $twig = new Environment($loader, ['debug' => true, 'cache' => false]);
-            $twig->addExtension(new TranslationExtension(new Translator('en')));
-
-            echo $twig->compile($twig->parse($twig->tokenize($twig->getLoader()->getSourceContext('index'))))."\n\n";
-            $this->assertEquals($expected, $this->getTemplate($template)->render($variables));
-        }
-
-        $this->assertEquals($expected, $this->getTemplate($template)->render($variables));
-    }
-
-    public function testTransUnknownKeyword()
-    {
-        $this->expectException('Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unexpected token. Twig was looking for the "with", "from", or "into" keyword in "index" at line 3.');
-        $this->getTemplate("{% trans \n\nfoo %}{% endtrans %}")->render();
-    }
-
-    public function testTransComplexBody()
-    {
-        $this->expectException('Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('A message inside a trans tag must be a simple text in "index" at line 2.');
-        $this->getTemplate("{% trans %}\n{{ 1 + 2 }}{% endtrans %}")->render();
-    }
-
-    public function testTransChoiceComplexBody()
-    {
-        $this->expectException('Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('A message inside a transchoice tag must be a simple text in "index" at line 2.');
-        $this->getTemplate("{% transchoice count %}\n{{ 1 + 2 }}{% endtranschoice %}")->render();
-    }
-
-    public function getTransTests()
-    {
-        return [
-            // trans tag
-            ['{% trans %}Hello{% endtrans %}', 'Hello'],
-            ['{% trans %}%name%{% endtrans %}', 'Symfony', ['name' => 'Symfony']],
-
-            ['{% trans from elsewhere %}Hello{% endtrans %}', 'Hello'],
-
-            ['{% trans %}Hello %name%{% endtrans %}', 'Hello Symfony', ['name' => 'Symfony']],
-            ['{% trans with { \'%name%\': \'Symfony\' } %}Hello %name%{% endtrans %}', 'Hello Symfony'],
-            ['{% set vars = { \'%name%\': \'Symfony\' } %}{% trans with vars %}Hello %name%{% endtrans %}', 'Hello Symfony'],
-
-            ['{% trans into "fr"%}Hello{% endtrans %}', 'Hello'],
-
-            // transchoice
-            [
-                '{% transchoice count from "messages" %}{0} There is no apples|{1} There is one apple|]1,Inf] There is %count% apples{% endtranschoice %}',
-                'There is no apples',
-                ['count' => 0],
-            ],
-            [
-                '{% transchoice count %}{0} There is no apples|{1} There is one apple|]1,Inf] There is %count% apples{% endtranschoice %}',
-                'There is 5 apples',
-                ['count' => 5],
-            ],
-            [
-                '{% transchoice count %}{0} There is no apples|{1} There is one apple|]1,Inf] There is %count% apples (%name%){% endtranschoice %}',
-                'There is 5 apples (Symfony)',
-                ['count' => 5, 'name' => 'Symfony'],
-            ],
-            [
-                '{% transchoice count with { \'%name%\': \'Symfony\' } %}{0} There is no apples|{1} There is one apple|]1,Inf] There is %count% apples (%name%){% endtranschoice %}',
-                'There is 5 apples (Symfony)',
-                ['count' => 5],
-            ],
-            [
-                '{% transchoice count into "fr"%}{0} There is no apples|{1} There is one apple|]1,Inf] There is %count% apples{% endtranschoice %}',
-                'There is no apples',
-                ['count' => 0],
-            ],
-            [
-                '{% transchoice 5 into "fr"%}{0} There is no apples|{1} There is one apple|]1,Inf] There is %count% apples{% endtranschoice %}',
-                'There is 5 apples',
-            ],
-
-            // trans filter
-            ['{{ "Hello"|trans }}', 'Hello'],
-            ['{{ name|trans }}', 'Symfony', ['name' => 'Symfony']],
-            ['{{ hello|trans({ \'%name%\': \'Symfony\' }) }}', 'Hello Symfony', ['hello' => 'Hello %name%']],
-            ['{% set vars = { \'%name%\': \'Symfony\' } %}{{ hello|trans(vars) }}', 'Hello Symfony', ['hello' => 'Hello %name%']],
-            ['{{ "Hello"|trans({}, "messages", "fr") }}', 'Hello'],
-
-            // transchoice filter
-            ['{{ "{0} There is no apples|{1} There is one apple|]1,Inf] There is %count% apples"|transchoice(count) }}', 'There is 5 apples', ['count' => 5]],
-            ['{{ text|transchoice(5, {\'%name%\': \'Symfony\'}) }}', 'There is 5 apples (Symfony)', ['text' => '{0} There is no apples|{1} There is one apple|]1,Inf] There is %count% apples (%name%)']],
-            ['{{ "{0} There is no apples|{1} There is one apple|]1,Inf] There is %count% apples"|transchoice(count, {}, "messages", "fr") }}', 'There is 5 apples', ['count' => 5]],
-        ];
-    }
-
-    public function testDefaultTranslationDomain()
-    {
-        $templates = [
-            'index' => '
-                {%- extends "base" %}
-
-                {%- trans_default_domain "foo" %}
-
-                {%- block content %}
-                    {%- trans %}foo{% endtrans %}
-                    {%- trans from "custom" %}foo{% endtrans %}
-                    {{- "foo"|trans }}
-                    {{- "foo"|trans({}, "custom") }}
-                    {{- "foo"|transchoice(1) }}
-                    {{- "foo"|transchoice(1, {}, "custom") }}
-                {% endblock %}
-            ',
-
-            'base' => '
-                {%- block content "" %}
-            ',
-        ];
-
-        $translator = new Translator('en');
-        $translator->addLoader('array', new ArrayLoader());
-        $translator->addResource('array', ['foo' => 'foo (messages)'], 'en');
-        $translator->addResource('array', ['foo' => 'foo (custom)'], 'en', 'custom');
-        $translator->addResource('array', ['foo' => 'foo (foo)'], 'en', 'foo');
-
-        $template = $this->getTemplate($templates, $translator);
-
-        $this->assertEquals('foo (foo)foo (custom)foo (foo)foo (custom)foo (foo)foo (custom)', trim($template->render([])));
-    }
-
-    public function testDefaultTranslationDomainWithNamedArguments()
-    {
-        $templates = [
-            'index' => '
-                {%- trans_default_domain "foo" %}
-
-                {%- block content %}
-                    {{- "foo"|trans(arguments = {}, domain = "custom") }}
-                    {{- "foo"|transchoice(count = 1) }}
-                    {{- "foo"|transchoice(count = 1, arguments = {}, domain = "custom") }}
-                    {{- "foo"|trans({}, domain = "custom") }}
-                    {{- "foo"|trans({}, "custom", locale = "fr") }}
-                    {{- "foo"|transchoice(1, arguments = {}, domain = "custom") }}
-                    {{- "foo"|transchoice(1, {}, "custom", locale = "fr") }}
-                {% endblock %}
-            ',
-
-            'base' => '
-                {%- block content "" %}
-            ',
-        ];
-
-        $translator = new Translator('en');
-        $translator->addLoader('array', new ArrayLoader());
-        $translator->addResource('array', ['foo' => 'foo (messages)'], 'en');
-        $translator->addResource('array', ['foo' => 'foo (custom)'], 'en', 'custom');
-        $translator->addResource('array', ['foo' => 'foo (foo)'], 'en', 'foo');
-        $translator->addResource('array', ['foo' => 'foo (fr)'], 'fr', 'custom');
-
-        $template = $this->getTemplate($templates, $translator);
-
-        $this->assertEquals('foo (custom)foo (foo)foo (custom)foo (custom)foo (fr)foo (custom)foo (fr)', trim($template->render([])));
-    }
-
-    protected function getTemplate($template, $translator = null)
-    {
-        if (null === $translator) {
-            $translator = new Translator('en');
-        }
-
-        if (\is_array($template)) {
-            $loader = new TwigArrayLoader($template);
-        } else {
-            $loader = new TwigArrayLoader(['index' => $template]);
-        }
-        $twig = new Environment($loader, ['debug' => true, 'cache' => false]);
-        $twig->addExtension(new TranslationExtension($translator));
-
-        return $twig->loadTemplate('index');
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/WebLinkExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/WebLinkExtensionTest.php
deleted file mode 100644
index f49eea396d0d8842ebd4419a304cc0b895653930..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/WebLinkExtensionTest.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use Fig\Link\Link;
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\WebLinkExtension;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-
-/**
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class WebLinkExtensionTest extends TestCase
-{
-    /**
-     * @var Request
-     */
-    private $request;
-
-    /**
-     * @var WebLinkExtension
-     */
-    private $extension;
-
-    protected function setUp()
-    {
-        $this->request = new Request();
-
-        $requestStack = new RequestStack();
-        $requestStack->push($this->request);
-
-        $this->extension = new WebLinkExtension($requestStack);
-    }
-
-    public function testLink()
-    {
-        $this->assertEquals('/foo.css', $this->extension->link('/foo.css', 'preload', ['as' => 'style', 'nopush' => true]));
-
-        $link = (new Link('preload', '/foo.css'))->withAttribute('as', 'style')->withAttribute('nopush', true);
-        $this->assertEquals([$link], array_values($this->request->attributes->get('_links')->getLinks()));
-    }
-
-    public function testPreload()
-    {
-        $this->assertEquals('/foo.css', $this->extension->preload('/foo.css', ['as' => 'style', 'crossorigin' => true]));
-
-        $link = (new Link('preload', '/foo.css'))->withAttribute('as', 'style')->withAttribute('crossorigin', true);
-        $this->assertEquals([$link], array_values($this->request->attributes->get('_links')->getLinks()));
-    }
-
-    public function testDnsPrefetch()
-    {
-        $this->assertEquals('/foo.css', $this->extension->dnsPrefetch('/foo.css', ['as' => 'style', 'crossorigin' => true]));
-
-        $link = (new Link('dns-prefetch', '/foo.css'))->withAttribute('as', 'style')->withAttribute('crossorigin', true);
-        $this->assertEquals([$link], array_values($this->request->attributes->get('_links')->getLinks()));
-    }
-
-    public function testPreconnect()
-    {
-        $this->assertEquals('/foo.css', $this->extension->preconnect('/foo.css', ['as' => 'style', 'crossorigin' => true]));
-
-        $link = (new Link('preconnect', '/foo.css'))->withAttribute('as', 'style')->withAttribute('crossorigin', true);
-        $this->assertEquals([$link], array_values($this->request->attributes->get('_links')->getLinks()));
-    }
-
-    public function testPrefetch()
-    {
-        $this->assertEquals('/foo.css', $this->extension->prefetch('/foo.css', ['as' => 'style', 'crossorigin' => true]));
-
-        $link = (new Link('prefetch', '/foo.css'))->withAttribute('as', 'style')->withAttribute('crossorigin', true);
-        $this->assertEquals([$link], array_values($this->request->attributes->get('_links')->getLinks()));
-    }
-
-    public function testPrerender()
-    {
-        $this->assertEquals('/foo.css', $this->extension->prerender('/foo.css', ['as' => 'style', 'crossorigin' => true]));
-
-        $link = (new Link('prerender', '/foo.css'))->withAttribute('as', 'style')->withAttribute('crossorigin', true);
-        $this->assertEquals([$link], array_values($this->request->attributes->get('_links')->getLinks()));
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/WorkflowExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/WorkflowExtensionTest.php
deleted file mode 100644
index 20d78bfe3986cd7001fb2b8535172e585b333855..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Extension/WorkflowExtensionTest.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Extension;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\WorkflowExtension;
-use Symfony\Component\Workflow\Definition;
-use Symfony\Component\Workflow\Registry;
-use Symfony\Component\Workflow\SupportStrategy\ClassInstanceSupportStrategy;
-use Symfony\Component\Workflow\Transition;
-use Symfony\Component\Workflow\Workflow;
-
-class WorkflowExtensionTest extends TestCase
-{
-    private $extension;
-
-    protected function setUp()
-    {
-        $places = ['ordered', 'waiting_for_payment', 'processed'];
-        $transitions = [
-            new Transition('t1', 'ordered', 'waiting_for_payment'),
-            new Transition('t2', 'waiting_for_payment', 'processed'),
-        ];
-        $definition = new Definition($places, $transitions);
-        $workflow = new Workflow($definition);
-
-        $registry = new Registry();
-        $registry->add($workflow, new ClassInstanceSupportStrategy(\stdClass::class));
-
-        $this->extension = new WorkflowExtension($registry);
-    }
-
-    public function testCanTransition()
-    {
-        $subject = new \stdClass();
-        $subject->marking = [];
-
-        $this->assertTrue($this->extension->canTransition($subject, 't1'));
-        $this->assertFalse($this->extension->canTransition($subject, 't2'));
-    }
-
-    public function testGetEnabledTransitions()
-    {
-        $subject = new \stdClass();
-        $subject->marking = [];
-
-        $transitions = $this->extension->getEnabledTransitions($subject);
-
-        $this->assertCount(1, $transitions);
-        $this->assertInstanceOf(Transition::class, $transitions[0]);
-        $this->assertSame('t1', $transitions[0]->getName());
-    }
-
-    public function testHasMarkedPlace()
-    {
-        $subject = new \stdClass();
-        $subject->marking = [];
-        $subject->marking = ['ordered' => 1, 'waiting_for_payment' => 1];
-
-        $this->assertTrue($this->extension->hasMarkedPlace($subject, 'ordered'));
-        $this->assertTrue($this->extension->hasMarkedPlace($subject, 'waiting_for_payment'));
-        $this->assertFalse($this->extension->hasMarkedPlace($subject, 'processed'));
-    }
-
-    public function testGetMarkedPlaces()
-    {
-        $subject = new \stdClass();
-        $subject->marking = [];
-        $subject->marking = ['ordered' => 1, 'waiting_for_payment' => 1];
-
-        $this->assertSame(['ordered', 'waiting_for_payment'], $this->extension->getMarkedPlaces($subject));
-        $this->assertSame($subject->marking, $this->extension->getMarkedPlaces($subject, false));
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Fixtures/extractor/syntax_error.twig b/vendor/symfony/twig-bridge/Tests/Fixtures/extractor/syntax_error.twig
deleted file mode 100644
index b3e069870bdab2b0a91cf57d08b5ebe422c6beec..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Fixtures/extractor/syntax_error.twig
+++ /dev/null
@@ -1 +0,0 @@
-{% syntax error
diff --git a/vendor/symfony/twig-bridge/Tests/Fixtures/extractor/with_translations.html.twig b/vendor/symfony/twig-bridge/Tests/Fixtures/extractor/with_translations.html.twig
deleted file mode 100644
index 8cdb42d293c2d68a5a18499aafe103808842670b..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Fixtures/extractor/with_translations.html.twig
+++ /dev/null
@@ -1 +0,0 @@
-<h1>{{ 'Hi!'|trans }}</h1>
diff --git a/vendor/symfony/twig-bridge/Tests/Node/DumpNodeTest.php b/vendor/symfony/twig-bridge/Tests/Node/DumpNodeTest.php
deleted file mode 100644
index befc8341dde2033e04e7396d1bbbbb37bb18fe97..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Node/DumpNodeTest.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Node;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Node\DumpNode;
-use Twig\Compiler;
-use Twig\Environment;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Node;
-
-class DumpNodeTest extends TestCase
-{
-    public function testNoVar()
-    {
-        $node = new DumpNode('bar', null, 7);
-
-        $env = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock());
-        $compiler = new Compiler($env);
-
-        $expected = <<<'EOTXT'
-if ($this->env->isDebug()) {
-    $barvars = [];
-    foreach ($context as $barkey => $barval) {
-        if (!$barval instanceof \Twig\Template) {
-            $barvars[$barkey] = $barval;
-        }
-    }
-    // line 7
-    \Symfony\Component\VarDumper\VarDumper::dump($barvars);
-}
-
-EOTXT;
-
-        $this->assertSame($expected, $compiler->compile($node)->getSource());
-    }
-
-    public function testIndented()
-    {
-        $node = new DumpNode('bar', null, 7);
-
-        $env = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock());
-        $compiler = new Compiler($env);
-
-        $expected = <<<'EOTXT'
-    if ($this->env->isDebug()) {
-        $barvars = [];
-        foreach ($context as $barkey => $barval) {
-            if (!$barval instanceof \Twig\Template) {
-                $barvars[$barkey] = $barval;
-            }
-        }
-        // line 7
-        \Symfony\Component\VarDumper\VarDumper::dump($barvars);
-    }
-
-EOTXT;
-
-        $this->assertSame($expected, $compiler->compile($node, 1)->getSource());
-    }
-
-    public function testOneVar()
-    {
-        $vars = new Node([
-            new NameExpression('foo', 7),
-        ]);
-        $node = new DumpNode('bar', $vars, 7);
-
-        $env = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock());
-        $compiler = new Compiler($env);
-
-        $expected = <<<'EOTXT'
-if ($this->env->isDebug()) {
-    // line 7
-    \Symfony\Component\VarDumper\VarDumper::dump(%foo%);
-}
-
-EOTXT;
-
-        if (\PHP_VERSION_ID >= 70000) {
-            $expected = preg_replace('/%(.*?)%/', '($context["$1"] ?? null)', $expected);
-        } else {
-            $expected = preg_replace('/%(.*?)%/', '(isset($context["$1"]) ? $context["$1"] : null)', $expected);
-        }
-
-        $this->assertSame($expected, $compiler->compile($node)->getSource());
-    }
-
-    public function testMultiVars()
-    {
-        $vars = new Node([
-            new NameExpression('foo', 7),
-            new NameExpression('bar', 7),
-        ]);
-        $node = new DumpNode('bar', $vars, 7);
-
-        $env = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock());
-        $compiler = new Compiler($env);
-
-        $expected = <<<'EOTXT'
-if ($this->env->isDebug()) {
-    // line 7
-    \Symfony\Component\VarDumper\VarDumper::dump([
-        "foo" => %foo%,
-        "bar" => %bar%,
-    ]);
-}
-
-EOTXT;
-
-        if (\PHP_VERSION_ID >= 70000) {
-            $expected = preg_replace('/%(.*?)%/', '($context["$1"] ?? null)', $expected);
-        } else {
-            $expected = preg_replace('/%(.*?)%/', '(isset($context["$1"]) ? $context["$1"] : null)', $expected);
-        }
-
-        $this->assertSame($expected, $compiler->compile($node)->getSource());
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Node/FormThemeTest.php b/vendor/symfony/twig-bridge/Tests/Node/FormThemeTest.php
deleted file mode 100644
index 39d9f44be8c790baefe418ee507984b37212eb8f..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Node/FormThemeTest.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Node;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Node\FormThemeNode;
-use Symfony\Bridge\Twig\Tests\Extension\RuntimeLoaderProvider;
-use Symfony\Component\Form\FormRenderer;
-use Symfony\Component\Form\FormRendererEngineInterface;
-use Twig\Compiler;
-use Twig\Environment;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Node;
-
-class FormThemeTest extends TestCase
-{
-    use RuntimeLoaderProvider;
-
-    public function testConstructor()
-    {
-        $form = new NameExpression('form', 0);
-        $resources = new Node([
-            new ConstantExpression('tpl1', 0),
-            new ConstantExpression('tpl2', 0),
-        ]);
-
-        $node = new FormThemeNode($form, $resources, 0);
-
-        $this->assertEquals($form, $node->getNode('form'));
-        $this->assertEquals($resources, $node->getNode('resources'));
-        $this->assertFalse($node->getAttribute('only'));
-    }
-
-    public function testCompile()
-    {
-        $form = new NameExpression('form', 0);
-        $resources = new ArrayExpression([
-            new ConstantExpression(0, 0),
-            new ConstantExpression('tpl1', 0),
-            new ConstantExpression(1, 0),
-            new ConstantExpression('tpl2', 0),
-        ], 0);
-
-        $node = new FormThemeNode($form, $resources, 0);
-
-        $environment = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock());
-        $formRenderer = new FormRenderer($this->getMockBuilder(FormRendererEngineInterface::class)->getMock());
-        $this->registerTwigRuntimeLoader($environment, $formRenderer);
-        $compiler = new Compiler($environment);
-
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, [0 => "tpl1", 1 => "tpl2"], true);',
-                $this->getVariableGetter('form')
-             ),
-            trim($compiler->compile($node)->getSource())
-        );
-
-        $node = new FormThemeNode($form, $resources, 0, null, true);
-
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, [0 => "tpl1", 1 => "tpl2"], false);',
-                $this->getVariableGetter('form')
-             ),
-            trim($compiler->compile($node)->getSource())
-        );
-
-        $resources = new ConstantExpression('tpl1', 0);
-
-        $node = new FormThemeNode($form, $resources, 0);
-
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, "tpl1", true);',
-                $this->getVariableGetter('form')
-             ),
-            trim($compiler->compile($node)->getSource())
-        );
-
-        $node = new FormThemeNode($form, $resources, 0, null, true);
-
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, "tpl1", false);',
-                $this->getVariableGetter('form')
-             ),
-            trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    protected function getVariableGetter($name)
-    {
-        if (\PHP_VERSION_ID >= 70000) {
-            return sprintf('($context["%s"] ?? null)', $name);
-        }
-
-        return sprintf('(isset($context["%s"]) ? $context["%1$s"] : null)', $name);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Node/SearchAndRenderBlockNodeTest.php b/vendor/symfony/twig-bridge/Tests/Node/SearchAndRenderBlockNodeTest.php
deleted file mode 100644
index db160b7c8a089abf879ba04b8eb8730ae387bbc5..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Node/SearchAndRenderBlockNodeTest.php
+++ /dev/null
@@ -1,280 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Node;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Node\SearchAndRenderBlockNode;
-use Twig\Compiler;
-use Twig\Environment;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConditionalExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Node;
-
-class SearchAndRenderBlockNodeTest extends TestCase
-{
-    public function testCompileWidget()
-    {
-        $arguments = new Node([
-            new NameExpression('form', 0),
-        ]);
-
-        $node = new SearchAndRenderBlockNode('form_widget', $arguments, 0);
-
-        $compiler = new Compiler(new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock()));
-
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->searchAndRenderBlock(%s, \'widget\')',
-                $this->getVariableGetter('form')
-             ),
-            trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    public function testCompileWidgetWithVariables()
-    {
-        $arguments = new Node([
-            new NameExpression('form', 0),
-            new ArrayExpression([
-                new ConstantExpression('foo', 0),
-                new ConstantExpression('bar', 0),
-            ], 0),
-        ]);
-
-        $node = new SearchAndRenderBlockNode('form_widget', $arguments, 0);
-
-        $compiler = new Compiler(new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock()));
-
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->searchAndRenderBlock(%s, \'widget\', ["foo" => "bar"])',
-                $this->getVariableGetter('form')
-            ),
-            trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    public function testCompileLabelWithLabel()
-    {
-        $arguments = new Node([
-            new NameExpression('form', 0),
-            new ConstantExpression('my label', 0),
-        ]);
-
-        $node = new SearchAndRenderBlockNode('form_label', $arguments, 0);
-
-        $compiler = new Compiler(new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock()));
-
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->searchAndRenderBlock(%s, \'label\', ["label" => "my label"])',
-                $this->getVariableGetter('form')
-            ),
-            trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    public function testCompileLabelWithNullLabel()
-    {
-        $arguments = new Node([
-            new NameExpression('form', 0),
-            new ConstantExpression(null, 0),
-        ]);
-
-        $node = new SearchAndRenderBlockNode('form_label', $arguments, 0);
-
-        $compiler = new Compiler(new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock()));
-
-        // "label" => null must not be included in the output!
-        // Otherwise the default label is overwritten with null.
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->searchAndRenderBlock(%s, \'label\')',
-                $this->getVariableGetter('form')
-            ),
-            trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    public function testCompileLabelWithEmptyStringLabel()
-    {
-        $arguments = new Node([
-            new NameExpression('form', 0),
-            new ConstantExpression('', 0),
-        ]);
-
-        $node = new SearchAndRenderBlockNode('form_label', $arguments, 0);
-
-        $compiler = new Compiler(new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock()));
-
-        // "label" => null must not be included in the output!
-        // Otherwise the default label is overwritten with null.
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->searchAndRenderBlock(%s, \'label\')',
-                $this->getVariableGetter('form')
-            ),
-            trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    public function testCompileLabelWithDefaultLabel()
-    {
-        $arguments = new Node([
-            new NameExpression('form', 0),
-        ]);
-
-        $node = new SearchAndRenderBlockNode('form_label', $arguments, 0);
-
-        $compiler = new Compiler(new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock()));
-
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->searchAndRenderBlock(%s, \'label\')',
-                $this->getVariableGetter('form')
-            ),
-            trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    public function testCompileLabelWithAttributes()
-    {
-        $arguments = new Node([
-            new NameExpression('form', 0),
-            new ConstantExpression(null, 0),
-            new ArrayExpression([
-                new ConstantExpression('foo', 0),
-                new ConstantExpression('bar', 0),
-            ], 0),
-        ]);
-
-        $node = new SearchAndRenderBlockNode('form_label', $arguments, 0);
-
-        $compiler = new Compiler(new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock()));
-
-        // "label" => null must not be included in the output!
-        // Otherwise the default label is overwritten with null.
-        // https://github.com/symfony/symfony/issues/5029
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->searchAndRenderBlock(%s, \'label\', ["foo" => "bar"])',
-                $this->getVariableGetter('form')
-            ),
-            trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    public function testCompileLabelWithLabelAndAttributes()
-    {
-        $arguments = new Node([
-            new NameExpression('form', 0),
-            new ConstantExpression('value in argument', 0),
-            new ArrayExpression([
-                new ConstantExpression('foo', 0),
-                new ConstantExpression('bar', 0),
-                new ConstantExpression('label', 0),
-                new ConstantExpression('value in attributes', 0),
-            ], 0),
-        ]);
-
-        $node = new SearchAndRenderBlockNode('form_label', $arguments, 0);
-
-        $compiler = new Compiler(new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock()));
-
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->searchAndRenderBlock(%s, \'label\', ["foo" => "bar", "label" => "value in argument"])',
-                $this->getVariableGetter('form')
-            ),
-            trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    public function testCompileLabelWithLabelThatEvaluatesToNull()
-    {
-        $arguments = new Node([
-            new NameExpression('form', 0),
-            new ConditionalExpression(
-                // if
-                new ConstantExpression(true, 0),
-                // then
-                new ConstantExpression(null, 0),
-                // else
-                new ConstantExpression(null, 0),
-                0
-            ),
-        ]);
-
-        $node = new SearchAndRenderBlockNode('form_label', $arguments, 0);
-
-        $compiler = new Compiler(new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock()));
-
-        // "label" => null must not be included in the output!
-        // Otherwise the default label is overwritten with null.
-        // https://github.com/symfony/symfony/issues/5029
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->searchAndRenderBlock(%s, \'label\', (twig_test_empty($_label_ = ((true) ? (null) : (null))) ? [] : ["label" => $_label_]))',
-                $this->getVariableGetter('form')
-            ),
-            trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    public function testCompileLabelWithLabelThatEvaluatesToNullAndAttributes()
-    {
-        $arguments = new Node([
-            new NameExpression('form', 0),
-            new ConditionalExpression(
-                // if
-                new ConstantExpression(true, 0),
-                // then
-                new ConstantExpression(null, 0),
-                // else
-                new ConstantExpression(null, 0),
-                0
-            ),
-            new ArrayExpression([
-                new ConstantExpression('foo', 0),
-                new ConstantExpression('bar', 0),
-                new ConstantExpression('label', 0),
-                new ConstantExpression('value in attributes', 0),
-            ], 0),
-        ]);
-
-        $node = new SearchAndRenderBlockNode('form_label', $arguments, 0);
-
-        $compiler = new Compiler(new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock()));
-
-        // "label" => null must not be included in the output!
-        // Otherwise the default label is overwritten with null.
-        // https://github.com/symfony/symfony/issues/5029
-        $this->assertEquals(
-            sprintf(
-                '$this->env->getRuntime(\'Symfony\Component\Form\FormRenderer\')->searchAndRenderBlock(%s, \'label\', ["foo" => "bar", "label" => "value in attributes"] + (twig_test_empty($_label_ = ((true) ? (null) : (null))) ? [] : ["label" => $_label_]))',
-                $this->getVariableGetter('form')
-            ),
-            trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    protected function getVariableGetter($name)
-    {
-        if (\PHP_VERSION_ID >= 70000) {
-            return sprintf('($context["%s"] ?? null)', $name);
-        }
-
-        return sprintf('(isset($context["%s"]) ? $context["%1$s"] : null)', $name);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Node/TransNodeTest.php b/vendor/symfony/twig-bridge/Tests/Node/TransNodeTest.php
deleted file mode 100644
index 3008f43f6f4bc97b798c3c698aaf08cdf4fb69eb..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Node/TransNodeTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Node;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Node\TransNode;
-use Twig\Compiler;
-use Twig\Environment;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\TextNode;
-
-/**
- * @author Asmir Mustafic <goetas@gmail.com>
- */
-class TransNodeTest extends TestCase
-{
-    public function testCompileStrict()
-    {
-        $body = new TextNode('trans %var%', 0);
-        $vars = new NameExpression('foo', 0);
-        $node = new TransNode($body, null, null, $vars);
-
-        $env = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock(), ['strict_variables' => true]);
-        $compiler = new Compiler($env);
-
-        $this->assertEquals(
-            sprintf(
-                'echo $this->env->getExtension(\'Symfony\Bridge\Twig\Extension\TranslationExtension\')->getTranslator()->trans("trans %%var%%", array_merge(["%%var%%" => %s], %s), "messages");',
-                $this->getVariableGetterWithoutStrictCheck('var'),
-                $this->getVariableGetterWithStrictCheck('foo')
-             ),
-             trim($compiler->compile($node)->getSource())
-        );
-    }
-
-    protected function getVariableGetterWithoutStrictCheck($name)
-    {
-        if (\PHP_VERSION_ID >= 70000) {
-            return sprintf('($context["%s"] ?? null)', $name);
-        }
-
-        return sprintf('(isset($context["%s"]) ? $context["%1$s"] : null)', $name);
-    }
-
-    protected function getVariableGetterWithStrictCheck($name)
-    {
-        if (Environment::MAJOR_VERSION >= 2) {
-            return sprintf('(isset($context["%1$s"]) || array_key_exists("%1$s", $context) ? $context["%1$s"] : (function () { throw new %2$s(\'Variable "%1$s" does not exist.\', 0, $this->source); })())', $name, Environment::VERSION_ID >= 20700 ? 'RuntimeError' : 'Twig_Error_Runtime');
-        }
-
-        if (\PHP_VERSION_ID >= 70000) {
-            return sprintf('($context["%s"] ?? $this->getContext($context, "%1$s"))', $name);
-        }
-
-        return sprintf('(isset($context["%s"]) ? $context["%1$s"] : $this->getContext($context, "%1$s"))', $name);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/NodeVisitor/ScopeTest.php b/vendor/symfony/twig-bridge/Tests/NodeVisitor/ScopeTest.php
deleted file mode 100644
index fad0e1f82976304451a9f69fcff679fc5db31566..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/NodeVisitor/ScopeTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\NodeVisitor;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\NodeVisitor\Scope;
-
-class ScopeTest extends TestCase
-{
-    public function testScopeInitiation()
-    {
-        $scope = new Scope();
-        $scope->enter();
-        $this->assertNull($scope->get('test'));
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/NodeVisitor/TranslationDefaultDomainNodeVisitorTest.php b/vendor/symfony/twig-bridge/Tests/NodeVisitor/TranslationDefaultDomainNodeVisitorTest.php
deleted file mode 100644
index 5abfe1e92a6caaccc188a4375b7c08f2517ab548..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/NodeVisitor/TranslationDefaultDomainNodeVisitorTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\NodeVisitor;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\NodeVisitor\TranslationDefaultDomainNodeVisitor;
-use Symfony\Bridge\Twig\NodeVisitor\TranslationNodeVisitor;
-use Twig\Environment;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Node;
-
-class TranslationDefaultDomainNodeVisitorTest extends TestCase
-{
-    private static $message = 'message';
-    private static $domain = 'domain';
-
-    /** @dataProvider getDefaultDomainAssignmentTestData */
-    public function testDefaultDomainAssignment(Node $node)
-    {
-        $env = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock(), ['cache' => false, 'autoescape' => false, 'optimizations' => 0]);
-        $visitor = new TranslationDefaultDomainNodeVisitor();
-
-        // visit trans_default_domain tag
-        $defaultDomain = TwigNodeProvider::getTransDefaultDomainTag(self::$domain);
-        $visitor->enterNode($defaultDomain, $env);
-        $visitor->leaveNode($defaultDomain, $env);
-
-        // visit tested node
-        $enteredNode = $visitor->enterNode($node, $env);
-        $leavedNode = $visitor->leaveNode($node, $env);
-        $this->assertSame($node, $enteredNode);
-        $this->assertSame($node, $leavedNode);
-
-        // extracting tested node messages
-        $visitor = new TranslationNodeVisitor();
-        $visitor->enable();
-        $visitor->enterNode($node, $env);
-        $visitor->leaveNode($node, $env);
-
-        $this->assertEquals([[self::$message, self::$domain]], $visitor->getMessages());
-    }
-
-    /** @dataProvider getDefaultDomainAssignmentTestData */
-    public function testNewModuleWithoutDefaultDomainTag(Node $node)
-    {
-        $env = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock(), ['cache' => false, 'autoescape' => false, 'optimizations' => 0]);
-        $visitor = new TranslationDefaultDomainNodeVisitor();
-
-        // visit trans_default_domain tag
-        $newModule = TwigNodeProvider::getModule('test');
-        $visitor->enterNode($newModule, $env);
-        $visitor->leaveNode($newModule, $env);
-
-        // visit tested node
-        $enteredNode = $visitor->enterNode($node, $env);
-        $leavedNode = $visitor->leaveNode($node, $env);
-        $this->assertSame($node, $enteredNode);
-        $this->assertSame($node, $leavedNode);
-
-        // extracting tested node messages
-        $visitor = new TranslationNodeVisitor();
-        $visitor->enable();
-        $visitor->enterNode($node, $env);
-        $visitor->leaveNode($node, $env);
-
-        $this->assertEquals([[self::$message, null]], $visitor->getMessages());
-    }
-
-    public function getDefaultDomainAssignmentTestData()
-    {
-        return [
-            [TwigNodeProvider::getTransFilter(self::$message)],
-            [TwigNodeProvider::getTransChoiceFilter(self::$message)],
-            [TwigNodeProvider::getTransTag(self::$message)],
-            // with named arguments
-            [TwigNodeProvider::getTransFilter(self::$message, null, [
-                'arguments' => new ArrayExpression([], 0),
-            ])],
-            [TwigNodeProvider::getTransChoiceFilter(self::$message), null, [
-                'arguments' => new ArrayExpression([], 0),
-            ]],
-        ];
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/NodeVisitor/TranslationNodeVisitorTest.php b/vendor/symfony/twig-bridge/Tests/NodeVisitor/TranslationNodeVisitorTest.php
deleted file mode 100644
index 11d16e4cd674461704330928d60e8d8a7d07b26c..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/NodeVisitor/TranslationNodeVisitorTest.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\NodeVisitor;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\NodeVisitor\TranslationNodeVisitor;
-use Twig\Environment;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Node;
-
-class TranslationNodeVisitorTest extends TestCase
-{
-    /** @dataProvider getMessagesExtractionTestData */
-    public function testMessagesExtraction(Node $node, array $expectedMessages)
-    {
-        $env = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock(), ['cache' => false, 'autoescape' => false, 'optimizations' => 0]);
-        $visitor = new TranslationNodeVisitor();
-        $visitor->enable();
-        $visitor->enterNode($node, $env);
-        $visitor->leaveNode($node, $env);
-        $this->assertEquals($expectedMessages, $visitor->getMessages());
-    }
-
-    public function testMessageExtractionWithInvalidDomainNode()
-    {
-        $message = 'new key';
-
-        $node = new FilterExpression(
-            new ConstantExpression($message, 0),
-            new ConstantExpression('trans', 0),
-            new Node([
-                new ArrayExpression([], 0),
-                new NameExpression('variable', 0),
-            ]),
-            0
-        );
-
-        $this->testMessagesExtraction($node, [[$message, TranslationNodeVisitor::UNDEFINED_DOMAIN]]);
-    }
-
-    public function getMessagesExtractionTestData()
-    {
-        $message = 'new key';
-        $domain = 'domain';
-
-        return [
-            [TwigNodeProvider::getTransFilter($message), [[$message, null]]],
-            [TwigNodeProvider::getTransChoiceFilter($message), [[$message, null]]],
-            [TwigNodeProvider::getTransTag($message), [[$message, null]]],
-            [TwigNodeProvider::getTransFilter($message, $domain), [[$message, $domain]]],
-            [TwigNodeProvider::getTransChoiceFilter($message, $domain), [[$message, $domain]]],
-            [TwigNodeProvider::getTransTag($message, $domain), [[$message, $domain]]],
-        ];
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/NodeVisitor/TwigNodeProvider.php b/vendor/symfony/twig-bridge/Tests/NodeVisitor/TwigNodeProvider.php
deleted file mode 100644
index 5147724675817f2f626a12974b96b050375b8f82..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/NodeVisitor/TwigNodeProvider.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\NodeVisitor;
-
-use Symfony\Bridge\Twig\Node\TransDefaultDomainNode;
-use Symfony\Bridge\Twig\Node\TransNode;
-use Twig\Node\BodyNode;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Node\ModuleNode;
-use Twig\Node\Node;
-use Twig\Source;
-
-class TwigNodeProvider
-{
-    public static function getModule($content)
-    {
-        return new ModuleNode(
-            new ConstantExpression($content, 0),
-            null,
-            new ArrayExpression([], 0),
-            new ArrayExpression([], 0),
-            new ArrayExpression([], 0),
-            null,
-            new Source('', '')
-        );
-    }
-
-    public static function getTransFilter($message, $domain = null, $arguments = null)
-    {
-        if (!$arguments) {
-            $arguments = $domain ? [
-                new ArrayExpression([], 0),
-                new ConstantExpression($domain, 0),
-            ] : [];
-        }
-
-        return new FilterExpression(
-            new ConstantExpression($message, 0),
-            new ConstantExpression('trans', 0),
-            new Node($arguments),
-            0
-        );
-    }
-
-    public static function getTransChoiceFilter($message, $domain = null, $arguments = null)
-    {
-        if (!$arguments) {
-            $arguments = $domain ? [
-                new ConstantExpression(0, 0),
-                new ArrayExpression([], 0),
-                new ConstantExpression($domain, 0),
-            ] : [];
-        }
-
-        return new FilterExpression(
-            new ConstantExpression($message, 0),
-            new ConstantExpression('transchoice', 0),
-            new Node($arguments),
-            0
-        );
-    }
-
-    public static function getTransTag($message, $domain = null)
-    {
-        return new TransNode(
-            new BodyNode([], ['data' => $message]),
-            $domain ? new ConstantExpression($domain, 0) : null
-        );
-    }
-
-    public static function getTransDefaultDomainTag($domain)
-    {
-        return new TransDefaultDomainNode(
-            new ConstantExpression($domain, 0)
-        );
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/TokenParser/FormThemeTokenParserTest.php b/vendor/symfony/twig-bridge/Tests/TokenParser/FormThemeTokenParserTest.php
deleted file mode 100644
index ce1980eb16403b407ca33eda96bd617692e6446f..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/TokenParser/FormThemeTokenParserTest.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\TokenParser;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Node\FormThemeNode;
-use Symfony\Bridge\Twig\TokenParser\FormThemeTokenParser;
-use Twig\Environment;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Parser;
-use Twig\Source;
-
-class FormThemeTokenParserTest extends TestCase
-{
-    /**
-     * @dataProvider getTestsForFormTheme
-     */
-    public function testCompile($source, $expected)
-    {
-        $env = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock(), ['cache' => false, 'autoescape' => false, 'optimizations' => 0]);
-        $env->addTokenParser(new FormThemeTokenParser());
-        $source = new Source($source, '');
-        $stream = $env->tokenize($source);
-        $parser = new Parser($env);
-
-        $expected->setSourceContext($source);
-
-        $this->assertEquals($expected, $parser->parse($stream)->getNode('body')->getNode(0));
-    }
-
-    public function getTestsForFormTheme()
-    {
-        return [
-            [
-                '{% form_theme form "tpl1" %}',
-                new FormThemeNode(
-                    new NameExpression('form', 1),
-                    new ArrayExpression([
-                        new ConstantExpression(0, 1),
-                        new ConstantExpression('tpl1', 1),
-                    ], 1),
-                    1,
-                    'form_theme'
-                ),
-            ],
-            [
-                '{% form_theme form "tpl1" "tpl2" %}',
-                new FormThemeNode(
-                    new NameExpression('form', 1),
-                    new ArrayExpression([
-                        new ConstantExpression(0, 1),
-                        new ConstantExpression('tpl1', 1),
-                        new ConstantExpression(1, 1),
-                        new ConstantExpression('tpl2', 1),
-                    ], 1),
-                    1,
-                    'form_theme'
-                ),
-            ],
-            [
-                '{% form_theme form with "tpl1" %}',
-                new FormThemeNode(
-                    new NameExpression('form', 1),
-                    new ConstantExpression('tpl1', 1),
-                    1,
-                    'form_theme'
-                ),
-            ],
-            [
-                '{% form_theme form with ["tpl1"] %}',
-                new FormThemeNode(
-                    new NameExpression('form', 1),
-                    new ArrayExpression([
-                        new ConstantExpression(0, 1),
-                        new ConstantExpression('tpl1', 1),
-                    ], 1),
-                    1,
-                    'form_theme'
-                ),
-            ],
-            [
-                '{% form_theme form with ["tpl1", "tpl2"] %}',
-                new FormThemeNode(
-                    new NameExpression('form', 1),
-                    new ArrayExpression([
-                        new ConstantExpression(0, 1),
-                        new ConstantExpression('tpl1', 1),
-                        new ConstantExpression(1, 1),
-                        new ConstantExpression('tpl2', 1),
-                    ], 1),
-                    1,
-                    'form_theme'
-                ),
-            ],
-            [
-                '{% form_theme form with ["tpl1", "tpl2"] only %}',
-                new FormThemeNode(
-                    new NameExpression('form', 1),
-                    new ArrayExpression([
-                        new ConstantExpression(0, 1),
-                        new ConstantExpression('tpl1', 1),
-                        new ConstantExpression(1, 1),
-                        new ConstantExpression('tpl2', 1),
-                    ], 1),
-                    1,
-                    'form_theme',
-                    true
-                ),
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/Translation/TwigExtractorTest.php b/vendor/symfony/twig-bridge/Tests/Translation/TwigExtractorTest.php
deleted file mode 100644
index 28932d9449d6ae9b5e82b064f3ec4425205b20ac..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/Translation/TwigExtractorTest.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests\Translation;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\Extension\TranslationExtension;
-use Symfony\Bridge\Twig\Translation\TwigExtractor;
-use Symfony\Component\Translation\MessageCatalogue;
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class TwigExtractorTest extends TestCase
-{
-    /**
-     * @dataProvider getExtractData
-     */
-    public function testExtract($template, $messages)
-    {
-        $loader = $this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock();
-        $twig = new Environment($loader, [
-            'strict_variables' => true,
-            'debug' => true,
-            'cache' => false,
-            'autoescape' => false,
-        ]);
-        $twig->addExtension(new TranslationExtension($this->getMockBuilder('Symfony\Component\Translation\TranslatorInterface')->getMock()));
-
-        $extractor = new TwigExtractor($twig);
-        $extractor->setPrefix('prefix');
-        $catalogue = new MessageCatalogue('en');
-
-        $m = new \ReflectionMethod($extractor, 'extractTemplate');
-        $m->setAccessible(true);
-        $m->invoke($extractor, $template, $catalogue);
-
-        foreach ($messages as $key => $domain) {
-            $this->assertTrue($catalogue->has($key, $domain));
-            $this->assertEquals('prefix'.$key, $catalogue->get($key, $domain));
-        }
-    }
-
-    public function getExtractData()
-    {
-        return [
-            ['{{ "new key" | trans() }}', ['new key' => 'messages']],
-            ['{{ "new key" | trans() | upper }}', ['new key' => 'messages']],
-            ['{{ "new key" | trans({}, "domain") }}', ['new key' => 'domain']],
-            ['{{ "new key" | transchoice(1) }}', ['new key' => 'messages']],
-            ['{{ "new key" | transchoice(1) | upper }}', ['new key' => 'messages']],
-            ['{{ "new key" | transchoice(1, {}, "domain") }}', ['new key' => 'domain']],
-            ['{% trans %}new key{% endtrans %}', ['new key' => 'messages']],
-            ['{% trans %}  new key  {% endtrans %}', ['new key' => 'messages']],
-            ['{% trans from "domain" %}new key{% endtrans %}', ['new key' => 'domain']],
-            ['{% set foo = "new key" | trans %}', ['new key' => 'messages']],
-            ['{{ 1 ? "new key" | trans : "another key" | trans }}', ['new key' => 'messages', 'another key' => 'messages']],
-
-            // make sure 'trans_default_domain' tag is supported
-            ['{% trans_default_domain "domain" %}{{ "new key"|trans }}', ['new key' => 'domain']],
-            ['{% trans_default_domain "domain" %}{{ "new key"|transchoice }}', ['new key' => 'domain']],
-            ['{% trans_default_domain "domain" %}{% trans %}new key{% endtrans %}', ['new key' => 'domain']],
-
-            // make sure this works with twig's named arguments
-            ['{{ "new key" | trans(domain="domain") }}', ['new key' => 'domain']],
-            ['{{ "new key" | transchoice(domain="domain", count=1) }}', ['new key' => 'domain']],
-        ];
-    }
-
-    /**
-     * @dataProvider resourcesWithSyntaxErrorsProvider
-     */
-    public function testExtractSyntaxError($resources, array $messages)
-    {
-        $twig = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock());
-        $twig->addExtension(new TranslationExtension($this->getMockBuilder('Symfony\Component\Translation\TranslatorInterface')->getMock()));
-
-        $extractor = new TwigExtractor($twig);
-        $catalogue = new MessageCatalogue('en');
-        $extractor->extract($resources, $catalogue);
-        $this->assertSame($messages, $catalogue->all());
-    }
-
-    /**
-     * @return array
-     */
-    public function resourcesWithSyntaxErrorsProvider()
-    {
-        return [
-            [__DIR__.'/../Fixtures', ['messages' => ['Hi!' => 'Hi!']]],
-            [__DIR__.'/../Fixtures/extractor/syntax_error.twig', []],
-            [new \SplFileInfo(__DIR__.'/../Fixtures/extractor/syntax_error.twig'), []],
-        ];
-    }
-
-    /**
-     * @dataProvider resourceProvider
-     */
-    public function testExtractWithFiles($resource)
-    {
-        $loader = new ArrayLoader([]);
-        $twig = new Environment($loader, [
-            'strict_variables' => true,
-            'debug' => true,
-            'cache' => false,
-            'autoescape' => false,
-        ]);
-        $twig->addExtension(new TranslationExtension($this->getMockBuilder('Symfony\Component\Translation\TranslatorInterface')->getMock()));
-
-        $extractor = new TwigExtractor($twig);
-        $catalogue = new MessageCatalogue('en');
-        $extractor->extract($resource, $catalogue);
-
-        $this->assertTrue($catalogue->has('Hi!', 'messages'));
-        $this->assertEquals('Hi!', $catalogue->get('Hi!', 'messages'));
-    }
-
-    /**
-     * @return array
-     */
-    public function resourceProvider()
-    {
-        $directory = __DIR__.'/../Fixtures/extractor/';
-
-        return [
-            [$directory.'with_translations.html.twig'],
-            [[$directory.'with_translations.html.twig']],
-            [[new \SplFileInfo($directory.'with_translations.html.twig')]],
-            [new \ArrayObject([$directory.'with_translations.html.twig'])],
-            [new \ArrayObject([new \SplFileInfo($directory.'with_translations.html.twig')])],
-        ];
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Tests/TwigEngineTest.php b/vendor/symfony/twig-bridge/Tests/TwigEngineTest.php
deleted file mode 100644
index e136d0c763c6609c02931fcf697d6e9c14ac5d22..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Tests/TwigEngineTest.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Bridge\Twig\TwigEngine;
-use Symfony\Component\Templating\TemplateReference;
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class TwigEngineTest extends TestCase
-{
-    public function testExistsWithTemplateInstances()
-    {
-        $engine = $this->getTwig();
-
-        $this->assertTrue($engine->exists($this->getMockForAbstractClass('Twig\Template', [], '', false)));
-    }
-
-    public function testExistsWithNonExistentTemplates()
-    {
-        $engine = $this->getTwig();
-
-        $this->assertFalse($engine->exists('foobar'));
-        $this->assertFalse($engine->exists(new TemplateReference('foorbar')));
-    }
-
-    public function testExistsWithTemplateWithSyntaxErrors()
-    {
-        $engine = $this->getTwig();
-
-        $this->assertTrue($engine->exists('error'));
-        $this->assertTrue($engine->exists(new TemplateReference('error')));
-    }
-
-    public function testExists()
-    {
-        $engine = $this->getTwig();
-
-        $this->assertTrue($engine->exists('index'));
-        $this->assertTrue($engine->exists(new TemplateReference('index')));
-    }
-
-    public function testRender()
-    {
-        $engine = $this->getTwig();
-
-        $this->assertSame('foo', $engine->render('index'));
-        $this->assertSame('foo', $engine->render(new TemplateReference('index')));
-    }
-
-    public function testRenderWithError()
-    {
-        $this->expectException('Twig\Error\SyntaxError');
-        $engine = $this->getTwig();
-
-        $engine->render(new TemplateReference('error'));
-    }
-
-    protected function getTwig()
-    {
-        $twig = new Environment(new ArrayLoader([
-            'index' => 'foo',
-            'error' => '{{ foo }',
-        ]));
-        $parser = $this->getMockBuilder('Symfony\Component\Templating\TemplateNameParserInterface')->getMock();
-
-        return new TwigEngine($twig, $parser);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/TokenParser/DumpTokenParser.php b/vendor/symfony/twig-bridge/TokenParser/DumpTokenParser.php
deleted file mode 100644
index a4d7d6f6900781e6168ad1a404b5c80954f6b9b5..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/TokenParser/DumpTokenParser.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\TokenParser;
-
-use Symfony\Bridge\Twig\Node\DumpNode;
-use Twig\Token;
-use Twig\TokenParser\AbstractTokenParser;
-
-/**
- * Token Parser for the 'dump' tag.
- *
- * Dump variables with:
- *
- *     {% dump %}
- *     {% dump foo %}
- *     {% dump foo, bar %}
- *
- * @author Julien Galenski <julien.galenski@gmail.com>
- */
-class DumpTokenParser extends AbstractTokenParser
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function parse(Token $token)
-    {
-        $values = null;
-        if (!$this->parser->getStream()->test(Token::BLOCK_END_TYPE)) {
-            $values = $this->parser->getExpressionParser()->parseMultitargetExpression();
-        }
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        return new DumpNode($this->parser->getVarName(), $values, $token->getLine(), $this->getTag());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTag()
-    {
-        return 'dump';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/TokenParser/FormThemeTokenParser.php b/vendor/symfony/twig-bridge/TokenParser/FormThemeTokenParser.php
deleted file mode 100644
index ffef9e9859277f1da09e14bbba09444f8433bb34..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/TokenParser/FormThemeTokenParser.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\TokenParser;
-
-use Symfony\Bridge\Twig\Node\FormThemeNode;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Node;
-use Twig\Token;
-use Twig\TokenParser\AbstractTokenParser;
-
-/**
- * Token Parser for the 'form_theme' tag.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FormThemeTokenParser extends AbstractTokenParser
-{
-    /**
-     * Parses a token and returns a node.
-     *
-     * @return Node
-     */
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-
-        $form = $this->parser->getExpressionParser()->parseExpression();
-        $only = false;
-
-        if ($this->parser->getStream()->test(Token::NAME_TYPE, 'with')) {
-            $this->parser->getStream()->next();
-            $resources = $this->parser->getExpressionParser()->parseExpression();
-
-            if ($this->parser->getStream()->nextIf(Token::NAME_TYPE, 'only')) {
-                $only = true;
-            }
-        } else {
-            $resources = new ArrayExpression([], $stream->getCurrent()->getLine());
-            do {
-                $resources->addElement($this->parser->getExpressionParser()->parseExpression());
-            } while (!$stream->test(Token::BLOCK_END_TYPE));
-        }
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        return new FormThemeNode($form, $resources, $lineno, $this->getTag(), $only);
-    }
-
-    /**
-     * Gets the tag name associated with this token parser.
-     *
-     * @return string The tag name
-     */
-    public function getTag()
-    {
-        return 'form_theme';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/TokenParser/StopwatchTokenParser.php b/vendor/symfony/twig-bridge/TokenParser/StopwatchTokenParser.php
deleted file mode 100644
index 4cf4ffcd7e9c56a7e6221817126769d1b8188041..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/TokenParser/StopwatchTokenParser.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\TokenParser;
-
-use Symfony\Bridge\Twig\Node\StopwatchNode;
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Token;
-use Twig\TokenParser\AbstractTokenParser;
-
-/**
- * Token Parser for the stopwatch tag.
- *
- * @author Wouter J <wouter@wouterj.nl>
- */
-class StopwatchTokenParser extends AbstractTokenParser
-{
-    protected $stopwatchIsAvailable;
-
-    public function __construct($stopwatchIsAvailable)
-    {
-        $this->stopwatchIsAvailable = $stopwatchIsAvailable;
-    }
-
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-
-        // {% stopwatch 'bar' %}
-        $name = $this->parser->getExpressionParser()->parseExpression();
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        // {% endstopwatch %}
-        $body = $this->parser->subparse([$this, 'decideStopwatchEnd'], true);
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        if ($this->stopwatchIsAvailable) {
-            return new StopwatchNode($name, $body, new AssignNameExpression($this->parser->getVarName(), $token->getLine()), $lineno, $this->getTag());
-        }
-
-        return $body;
-    }
-
-    public function decideStopwatchEnd(Token $token)
-    {
-        return $token->test('endstopwatch');
-    }
-
-    public function getTag()
-    {
-        return 'stopwatch';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/TokenParser/TransChoiceTokenParser.php b/vendor/symfony/twig-bridge/TokenParser/TransChoiceTokenParser.php
deleted file mode 100644
index b1c8a39b3a7ea9754b0eec0eb3393ab3fec4ef9b..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/TokenParser/TransChoiceTokenParser.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\TokenParser;
-
-use Symfony\Bridge\Twig\Node\TransNode;
-use Twig\Error\SyntaxError;
-use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\TextNode;
-use Twig\Token;
-
-/**
- * Token Parser for the 'transchoice' tag.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TransChoiceTokenParser extends TransTokenParser
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-
-        $vars = new ArrayExpression([], $lineno);
-
-        $count = $this->parser->getExpressionParser()->parseExpression();
-
-        $domain = null;
-        $locale = null;
-
-        if ($stream->test('with')) {
-            // {% transchoice count with vars %}
-            $stream->next();
-            $vars = $this->parser->getExpressionParser()->parseExpression();
-        }
-
-        if ($stream->test('from')) {
-            // {% transchoice count from "messages" %}
-            $stream->next();
-            $domain = $this->parser->getExpressionParser()->parseExpression();
-        }
-
-        if ($stream->test('into')) {
-            // {% transchoice count into "fr" %}
-            $stream->next();
-            $locale = $this->parser->getExpressionParser()->parseExpression();
-        }
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        $body = $this->parser->subparse([$this, 'decideTransChoiceFork'], true);
-
-        if (!$body instanceof TextNode && !$body instanceof AbstractExpression) {
-            throw new SyntaxError('A message inside a transchoice tag must be a simple text.', $body->getTemplateLine(), $stream->getSourceContext());
-        }
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        return new TransNode($body, $domain, $count, $vars, $locale, $lineno, $this->getTag());
-    }
-
-    public function decideTransChoiceFork($token)
-    {
-        return $token->test(['endtranschoice']);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTag()
-    {
-        return 'transchoice';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/TokenParser/TransDefaultDomainTokenParser.php b/vendor/symfony/twig-bridge/TokenParser/TransDefaultDomainTokenParser.php
deleted file mode 100644
index 72fbda77b8e485a2d28ee8c5dc9ae7f68b1cafbf..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/TokenParser/TransDefaultDomainTokenParser.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\TokenParser;
-
-use Symfony\Bridge\Twig\Node\TransDefaultDomainNode;
-use Twig\Token;
-use Twig\TokenParser\AbstractTokenParser;
-
-/**
- * Token Parser for the 'trans_default_domain' tag.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TransDefaultDomainTokenParser extends AbstractTokenParser
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function parse(Token $token)
-    {
-        $expr = $this->parser->getExpressionParser()->parseExpression();
-
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        return new TransDefaultDomainNode($expr, $token->getLine(), $this->getTag());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTag()
-    {
-        return 'trans_default_domain';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/TokenParser/TransTokenParser.php b/vendor/symfony/twig-bridge/TokenParser/TransTokenParser.php
deleted file mode 100644
index 5f1e19acb9bddd32a4fb567d6f0ee144604a4919..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/TokenParser/TransTokenParser.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\TokenParser;
-
-use Symfony\Bridge\Twig\Node\TransNode;
-use Twig\Error\SyntaxError;
-use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\TextNode;
-use Twig\Token;
-use Twig\TokenParser\AbstractTokenParser;
-
-/**
- * Token Parser for the 'trans' tag.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TransTokenParser extends AbstractTokenParser
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-
-        $vars = new ArrayExpression([], $lineno);
-        $domain = null;
-        $locale = null;
-        if (!$stream->test(Token::BLOCK_END_TYPE)) {
-            if ($stream->test('with')) {
-                // {% trans with vars %}
-                $stream->next();
-                $vars = $this->parser->getExpressionParser()->parseExpression();
-            }
-
-            if ($stream->test('from')) {
-                // {% trans from "messages" %}
-                $stream->next();
-                $domain = $this->parser->getExpressionParser()->parseExpression();
-            }
-
-            if ($stream->test('into')) {
-                // {% trans into "fr" %}
-                $stream->next();
-                $locale = $this->parser->getExpressionParser()->parseExpression();
-            } elseif (!$stream->test(Token::BLOCK_END_TYPE)) {
-                throw new SyntaxError('Unexpected token. Twig was looking for the "with", "from", or "into" keyword.', $stream->getCurrent()->getLine(), $stream->getSourceContext());
-            }
-        }
-
-        // {% trans %}message{% endtrans %}
-        $stream->expect(Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse([$this, 'decideTransFork'], true);
-
-        if (!$body instanceof TextNode && !$body instanceof AbstractExpression) {
-            throw new SyntaxError('A message inside a trans tag must be a simple text.', $body->getTemplateLine(), $stream->getSourceContext());
-        }
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        return new TransNode($body, $domain, null, $vars, $locale, $lineno, $this->getTag());
-    }
-
-    public function decideTransFork($token)
-    {
-        return $token->test(['endtrans']);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTag()
-    {
-        return 'trans';
-    }
-}
diff --git a/vendor/symfony/twig-bridge/Translation/TwigExtractor.php b/vendor/symfony/twig-bridge/Translation/TwigExtractor.php
deleted file mode 100644
index 3d01ca57c71580bc4704b24ed2fd345f622fa24c..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/Translation/TwigExtractor.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig\Translation;
-
-use Symfony\Component\Finder\Finder;
-use Symfony\Component\Translation\Extractor\AbstractFileExtractor;
-use Symfony\Component\Translation\Extractor\ExtractorInterface;
-use Symfony\Component\Translation\MessageCatalogue;
-use Twig\Environment;
-use Twig\Error\Error;
-use Twig\Source;
-
-/**
- * TwigExtractor extracts translation messages from a twig template.
- *
- * @author Michel Salib <michelsalib@hotmail.com>
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TwigExtractor extends AbstractFileExtractor implements ExtractorInterface
-{
-    /**
-     * Default domain for found messages.
-     *
-     * @var string
-     */
-    private $defaultDomain = 'messages';
-
-    /**
-     * Prefix for found message.
-     *
-     * @var string
-     */
-    private $prefix = '';
-
-    private $twig;
-
-    public function __construct(Environment $twig)
-    {
-        $this->twig = $twig;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function extract($resource, MessageCatalogue $catalogue)
-    {
-        foreach ($this->extractFiles($resource) as $file) {
-            try {
-                $this->extractTemplate(file_get_contents($file->getPathname()), $catalogue);
-            } catch (Error $e) {
-                // ignore errors, these should be fixed by using the linter
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setPrefix($prefix)
-    {
-        $this->prefix = $prefix;
-    }
-
-    protected function extractTemplate($template, MessageCatalogue $catalogue)
-    {
-        $visitor = $this->twig->getExtension('Symfony\Bridge\Twig\Extension\TranslationExtension')->getTranslationNodeVisitor();
-        $visitor->enable();
-
-        $this->twig->parse($this->twig->tokenize(new Source($template, '')));
-
-        foreach ($visitor->getMessages() as $message) {
-            $catalogue->set(trim($message[0]), $this->prefix.trim($message[0]), $message[1] ?: $this->defaultDomain);
-        }
-
-        $visitor->disable();
-    }
-
-    /**
-     * @param string $file
-     *
-     * @return bool
-     */
-    protected function canBeExtracted($file)
-    {
-        return $this->isFile($file) && 'twig' === pathinfo($file, \PATHINFO_EXTENSION);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function extractFromDirectory($directory)
-    {
-        $finder = new Finder();
-
-        return $finder->files()->name('*.twig')->in($directory);
-    }
-}
diff --git a/vendor/symfony/twig-bridge/TwigEngine.php b/vendor/symfony/twig-bridge/TwigEngine.php
deleted file mode 100644
index cfbb5d8f4e440200288d44faf504c5e1200fac73..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/TwigEngine.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig;
-
-use Symfony\Component\Templating\EngineInterface;
-use Symfony\Component\Templating\StreamingEngineInterface;
-use Symfony\Component\Templating\TemplateNameParserInterface;
-use Symfony\Component\Templating\TemplateReferenceInterface;
-use Twig\Environment;
-use Twig\Error\Error;
-use Twig\Error\LoaderError;
-use Twig\Loader\ExistsLoaderInterface;
-use Twig\Loader\SourceContextLoaderInterface;
-use Twig\Template;
-
-/**
- * This engine knows how to render Twig templates.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TwigEngine implements EngineInterface, StreamingEngineInterface
-{
-    protected $environment;
-    protected $parser;
-
-    public function __construct(Environment $environment, TemplateNameParserInterface $parser)
-    {
-        $this->environment = $environment;
-        $this->parser = $parser;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * It also supports Template as name parameter.
-     *
-     * @throws Error if something went wrong like a thrown exception while rendering the template
-     */
-    public function render($name, array $parameters = [])
-    {
-        return $this->load($name)->render($parameters);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * It also supports Template as name parameter.
-     *
-     * @throws Error if something went wrong like a thrown exception while rendering the template
-     */
-    public function stream($name, array $parameters = [])
-    {
-        $this->load($name)->display($parameters);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * It also supports Template as name parameter.
-     */
-    public function exists($name)
-    {
-        if ($name instanceof Template) {
-            return true;
-        }
-
-        $loader = $this->environment->getLoader();
-
-        if (1 === Environment::MAJOR_VERSION && !$loader instanceof ExistsLoaderInterface) {
-            try {
-                // cast possible TemplateReferenceInterface to string because the
-                // EngineInterface supports them but LoaderInterface does not
-                if ($loader instanceof SourceContextLoaderInterface) {
-                    $loader->getSourceContext((string) $name);
-                } else {
-                    $loader->getSource((string) $name);
-                }
-
-                return true;
-            } catch (LoaderError $e) {
-            }
-
-            return false;
-        }
-
-        return $loader->exists((string) $name);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * It also supports Template as name parameter.
-     */
-    public function supports($name)
-    {
-        if ($name instanceof Template) {
-            return true;
-        }
-
-        $template = $this->parser->parse($name);
-
-        return 'twig' === $template->get('engine');
-    }
-
-    /**
-     * Loads the given template.
-     *
-     * @param string|TemplateReferenceInterface|Template $name A template name or an instance of
-     *                                                         TemplateReferenceInterface or Template
-     *
-     * @return Template
-     *
-     * @throws \InvalidArgumentException if the template does not exist
-     */
-    protected function load($name)
-    {
-        if ($name instanceof Template) {
-            return $name;
-        }
-
-        try {
-            return $this->environment->loadTemplate((string) $name);
-        } catch (LoaderError $e) {
-            throw new \InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
-        }
-    }
-}
diff --git a/vendor/symfony/twig-bridge/UndefinedCallableHandler.php b/vendor/symfony/twig-bridge/UndefinedCallableHandler.php
deleted file mode 100644
index 43cac82bcbca5c8c518703662d11aaa0a5bde984..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/UndefinedCallableHandler.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\Twig;
-
-use Symfony\Bundle\FullStack;
-use Twig\Error\SyntaxError;
-
-/**
- * @internal
- */
-class UndefinedCallableHandler
-{
-    private static $filterComponents = [
-        'humanize' => 'form',
-        'trans' => 'translation',
-        'transchoice' => 'translation',
-        'yaml_encode' => 'yaml',
-        'yaml_dump' => 'yaml',
-    ];
-
-    private static $functionComponents = [
-        'asset' => 'asset',
-        'asset_version' => 'asset',
-        'dump' => 'debug-bundle',
-        'expression' => 'expression-language',
-        'form_widget' => 'form',
-        'form_errors' => 'form',
-        'form_label' => 'form',
-        'form_row' => 'form',
-        'form_rest' => 'form',
-        'form' => 'form',
-        'form_start' => 'form',
-        'form_end' => 'form',
-        'csrf_token' => 'form',
-        'logout_url' => 'security-http',
-        'logout_path' => 'security-http',
-        'is_granted' => 'security-core',
-        'link' => 'web-link',
-        'preload' => 'web-link',
-        'dns_prefetch' => 'web-link',
-        'preconnect' => 'web-link',
-        'prefetch' => 'web-link',
-        'prerender' => 'web-link',
-        'workflow_can' => 'workflow',
-        'workflow_transitions' => 'workflow',
-        'workflow_has_marked_place' => 'workflow',
-        'workflow_marked_places' => 'workflow',
-    ];
-
-    private static $fullStackEnable = [
-        'form' => 'enable "framework.form"',
-        'security-core' => 'add the "SecurityBundle"',
-        'security-http' => 'add the "SecurityBundle"',
-        'web-link' => 'enable "framework.web_link"',
-        'workflow' => 'enable "framework.workflows"',
-    ];
-
-    public static function onUndefinedFilter($name)
-    {
-        if (!isset(self::$filterComponents[$name])) {
-            return false;
-        }
-
-        self::onUndefined($name, 'filter', self::$filterComponents[$name]);
-
-        return true;
-    }
-
-    public static function onUndefinedFunction($name)
-    {
-        if (!isset(self::$functionComponents[$name])) {
-            return false;
-        }
-
-        self::onUndefined($name, 'function', self::$functionComponents[$name]);
-
-        return true;
-    }
-
-    private static function onUndefined($name, $type, $component)
-    {
-        if (class_exists(FullStack::class) && isset(self::$fullStackEnable[$component])) {
-            throw new SyntaxError(sprintf('Did you forget to %s? Unknown %s "%s".', self::$fullStackEnable[$component], $type, $name));
-        }
-
-        throw new SyntaxError(sprintf('Did you forget to run "composer require symfony/%s"? Unknown %s "%s".', $component, $type, $name));
-    }
-}
diff --git a/vendor/symfony/twig-bridge/composer.json b/vendor/symfony/twig-bridge/composer.json
deleted file mode 100644
index f61e4018eb9a8afec88484c95d0b3fad07103be2..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/composer.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
-    "name": "symfony/twig-bridge",
-    "type": "symfony-bridge",
-    "description": "Symfony Twig Bridge",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": "^5.5.9|>=7.0.8",
-        "twig/twig": "^1.41|^2.10"
-    },
-    "require-dev": {
-        "fig/link-util": "^1.0",
-        "symfony/asset": "~2.8|~3.0|~4.0",
-        "symfony/dependency-injection": "~2.8|~3.0|~4.0",
-        "symfony/finder": "~2.8|~3.0|~4.0",
-        "symfony/form": "^3.4.31|^4.3.4",
-        "symfony/http-foundation": "^3.3.11|~4.0",
-        "symfony/http-kernel": "~3.2|~4.0",
-        "symfony/polyfill-intl-icu": "~1.0",
-        "symfony/routing": "~2.8|~3.0|~4.0",
-        "symfony/templating": "~2.8|~3.0|~4.0",
-        "symfony/translation": "~2.8|~3.0|~4.0",
-        "symfony/yaml": "~2.8|~3.0|~4.0",
-        "symfony/security": "^2.8.31|^3.3.13|~4.0",
-        "symfony/security-acl": "~2.8|~3.0",
-        "symfony/stopwatch": "~2.8|~3.0|~4.0",
-        "symfony/console": "~3.4|~4.0",
-        "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2|~4.0",
-        "symfony/expression-language": "~2.8|~3.0|~4.0",
-        "symfony/web-link": "~3.3|~4.0",
-        "symfony/workflow": "~3.3|~4.0"
-    },
-    "conflict": {
-        "symfony/form": "<3.4.31|>=4.0,<4.3.4",
-        "symfony/console": "<3.4"
-    },
-    "suggest": {
-        "symfony/finder": "",
-        "symfony/asset": "For using the AssetExtension",
-        "symfony/form": "For using the FormExtension",
-        "symfony/http-kernel": "For using the HttpKernelExtension",
-        "symfony/routing": "For using the RoutingExtension",
-        "symfony/templating": "For using the TwigEngine",
-        "symfony/translation": "For using the TranslationExtension",
-        "symfony/yaml": "For using the YamlExtension",
-        "symfony/security": "For using the SecurityExtension",
-        "symfony/stopwatch": "For using the StopwatchExtension",
-        "symfony/var-dumper": "For using the DumpExtension",
-        "symfony/expression-language": "For using the ExpressionExtension",
-        "symfony/web-link": "For using the WebLinkExtension"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Bridge\\Twig\\": "" },
-        "exclude-from-classmap": [
-            "/Tests/"
-        ]
-    },
-    "minimum-stability": "dev"
-}
diff --git a/vendor/symfony/twig-bridge/phpunit.xml.dist b/vendor/symfony/twig-bridge/phpunit.xml.dist
deleted file mode 100644
index 6e1ada1b3981a8eb59420a4aef7b34a15fabe364..0000000000000000000000000000000000000000
--- a/vendor/symfony/twig-bridge/phpunit.xml.dist
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Twig Bridge Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/var-dumper/CHANGELOG.md b/vendor/symfony/var-dumper/CHANGELOG.md
deleted file mode 100644
index b1638017caafb28d8877735127e21235fdbe821d..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/CHANGELOG.md
+++ /dev/null
@@ -1,58 +0,0 @@
-CHANGELOG
-=========
-
-5.1.0
------
-
- * added `RdKafka` support
-
-4.4.0
------
-
- * added `VarDumperTestTrait::setUpVarDumper()` and `VarDumperTestTrait::tearDownVarDumper()`
-   to configure casters & flags to use in tests
- * added `ImagineCaster` and infrastructure to dump images
- * added the stamps of a message after it is dispatched in `TraceableMessageBus` and `MessengerDataCollector` collected data
- * added `UuidCaster`
- * made all casters final
- * added support for the `NO_COLOR` env var (https://no-color.org/)
-
-4.3.0
------
-
- * added `DsCaster` to support dumping the contents of data structures from the Ds extension
-
-4.2.0
------
-
- * support selecting the format to use by setting the environment variable `VAR_DUMPER_FORMAT` to `html` or `cli`
-
-4.1.0
------
-
- * added a `ServerDumper` to send serialized Data clones to a server
- * added a `ServerDumpCommand` and `DumpServer` to run a server collecting
-   and displaying dumps on a single place with multiple formats support
- * added `CliDescriptor` and `HtmlDescriptor` descriptors for `server:dump` CLI and HTML formats support
-
-4.0.0
------
-
- * support for passing `\ReflectionClass` instances to the `Caster::castObject()`
-   method has been dropped, pass class names as strings instead
- * the `Data::getRawData()` method has been removed
- * the `VarDumperTestTrait::assertDumpEquals()` method expects a 3rd `$filter = 0`
-   argument and moves `$message = ''` argument at 4th position.
- * the `VarDumperTestTrait::assertDumpMatchesFormat()` method expects a 3rd `$filter = 0`
-   argument and moves `$message = ''` argument at 4th position.
-
-3.4.0
------
-
- * added `AbstractCloner::setMinDepth()` function to ensure minimum tree depth
- * deprecated `MongoCaster`
-
-2.7.0
------
-
- * deprecated `Cloner\Data::getLimitedClone()`. Use `withMaxDepth`, `withMaxItemsPerDepth` or `withRefHandles` instead.
diff --git a/vendor/symfony/var-dumper/Caster/AmqpCaster.php b/vendor/symfony/var-dumper/Caster/AmqpCaster.php
deleted file mode 100644
index daa0d4f798b8757f932743717e996709ac76b532..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/AmqpCaster.php
+++ /dev/null
@@ -1,212 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts Amqp related classes to array representation.
- *
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- *
- * @final
- */
-class AmqpCaster
-{
-    private static $flags = [
-        \AMQP_DURABLE => 'AMQP_DURABLE',
-        \AMQP_PASSIVE => 'AMQP_PASSIVE',
-        \AMQP_EXCLUSIVE => 'AMQP_EXCLUSIVE',
-        \AMQP_AUTODELETE => 'AMQP_AUTODELETE',
-        \AMQP_INTERNAL => 'AMQP_INTERNAL',
-        \AMQP_NOLOCAL => 'AMQP_NOLOCAL',
-        \AMQP_AUTOACK => 'AMQP_AUTOACK',
-        \AMQP_IFEMPTY => 'AMQP_IFEMPTY',
-        \AMQP_IFUNUSED => 'AMQP_IFUNUSED',
-        \AMQP_MANDATORY => 'AMQP_MANDATORY',
-        \AMQP_IMMEDIATE => 'AMQP_IMMEDIATE',
-        \AMQP_MULTIPLE => 'AMQP_MULTIPLE',
-        \AMQP_NOWAIT => 'AMQP_NOWAIT',
-        \AMQP_REQUEUE => 'AMQP_REQUEUE',
-    ];
-
-    private static $exchangeTypes = [
-        \AMQP_EX_TYPE_DIRECT => 'AMQP_EX_TYPE_DIRECT',
-        \AMQP_EX_TYPE_FANOUT => 'AMQP_EX_TYPE_FANOUT',
-        \AMQP_EX_TYPE_TOPIC => 'AMQP_EX_TYPE_TOPIC',
-        \AMQP_EX_TYPE_HEADERS => 'AMQP_EX_TYPE_HEADERS',
-    ];
-
-    public static function castConnection(\AMQPConnection $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'is_connected' => $c->isConnected(),
-        ];
-
-        // Recent version of the extension already expose private properties
-        if (isset($a["\x00AMQPConnection\x00login"])) {
-            return $a;
-        }
-
-        // BC layer in the amqp lib
-        if (method_exists($c, 'getReadTimeout')) {
-            $timeout = $c->getReadTimeout();
-        } else {
-            $timeout = $c->getTimeout();
-        }
-
-        $a += [
-            $prefix.'is_connected' => $c->isConnected(),
-            $prefix.'login' => $c->getLogin(),
-            $prefix.'password' => $c->getPassword(),
-            $prefix.'host' => $c->getHost(),
-            $prefix.'vhost' => $c->getVhost(),
-            $prefix.'port' => $c->getPort(),
-            $prefix.'read_timeout' => $timeout,
-        ];
-
-        return $a;
-    }
-
-    public static function castChannel(\AMQPChannel $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'is_connected' => $c->isConnected(),
-            $prefix.'channel_id' => $c->getChannelId(),
-        ];
-
-        // Recent version of the extension already expose private properties
-        if (isset($a["\x00AMQPChannel\x00connection"])) {
-            return $a;
-        }
-
-        $a += [
-            $prefix.'connection' => $c->getConnection(),
-            $prefix.'prefetch_size' => $c->getPrefetchSize(),
-            $prefix.'prefetch_count' => $c->getPrefetchCount(),
-        ];
-
-        return $a;
-    }
-
-    public static function castQueue(\AMQPQueue $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'flags' => self::extractFlags($c->getFlags()),
-        ];
-
-        // Recent version of the extension already expose private properties
-        if (isset($a["\x00AMQPQueue\x00name"])) {
-            return $a;
-        }
-
-        $a += [
-            $prefix.'connection' => $c->getConnection(),
-            $prefix.'channel' => $c->getChannel(),
-            $prefix.'name' => $c->getName(),
-            $prefix.'arguments' => $c->getArguments(),
-        ];
-
-        return $a;
-    }
-
-    public static function castExchange(\AMQPExchange $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'flags' => self::extractFlags($c->getFlags()),
-        ];
-
-        $type = isset(self::$exchangeTypes[$c->getType()]) ? new ConstStub(self::$exchangeTypes[$c->getType()], $c->getType()) : $c->getType();
-
-        // Recent version of the extension already expose private properties
-        if (isset($a["\x00AMQPExchange\x00name"])) {
-            $a["\x00AMQPExchange\x00type"] = $type;
-
-            return $a;
-        }
-
-        $a += [
-            $prefix.'connection' => $c->getConnection(),
-            $prefix.'channel' => $c->getChannel(),
-            $prefix.'name' => $c->getName(),
-            $prefix.'type' => $type,
-            $prefix.'arguments' => $c->getArguments(),
-        ];
-
-        return $a;
-    }
-
-    public static function castEnvelope(\AMQPEnvelope $c, array $a, Stub $stub, bool $isNested, int $filter = 0)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $deliveryMode = new ConstStub($c->getDeliveryMode().(2 === $c->getDeliveryMode() ? ' (persistent)' : ' (non-persistent)'), $c->getDeliveryMode());
-
-        // Recent version of the extension already expose private properties
-        if (isset($a["\x00AMQPEnvelope\x00body"])) {
-            $a["\0AMQPEnvelope\0delivery_mode"] = $deliveryMode;
-
-            return $a;
-        }
-
-        if (!($filter & Caster::EXCLUDE_VERBOSE)) {
-            $a += [$prefix.'body' => $c->getBody()];
-        }
-
-        $a += [
-            $prefix.'delivery_tag' => $c->getDeliveryTag(),
-            $prefix.'is_redelivery' => $c->isRedelivery(),
-            $prefix.'exchange_name' => $c->getExchangeName(),
-            $prefix.'routing_key' => $c->getRoutingKey(),
-            $prefix.'content_type' => $c->getContentType(),
-            $prefix.'content_encoding' => $c->getContentEncoding(),
-            $prefix.'headers' => $c->getHeaders(),
-            $prefix.'delivery_mode' => $deliveryMode,
-            $prefix.'priority' => $c->getPriority(),
-            $prefix.'correlation_id' => $c->getCorrelationId(),
-            $prefix.'reply_to' => $c->getReplyTo(),
-            $prefix.'expiration' => $c->getExpiration(),
-            $prefix.'message_id' => $c->getMessageId(),
-            $prefix.'timestamp' => $c->getTimeStamp(),
-            $prefix.'type' => $c->getType(),
-            $prefix.'user_id' => $c->getUserId(),
-            $prefix.'app_id' => $c->getAppId(),
-        ];
-
-        return $a;
-    }
-
-    private static function extractFlags(int $flags): ConstStub
-    {
-        $flagsArray = [];
-
-        foreach (self::$flags as $value => $name) {
-            if ($flags & $value) {
-                $flagsArray[] = $name;
-            }
-        }
-
-        if (!$flagsArray) {
-            $flagsArray = ['AMQP_NOPARAM'];
-        }
-
-        return new ConstStub(implode('|', $flagsArray), $flags);
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/ArgsStub.php b/vendor/symfony/var-dumper/Caster/ArgsStub.php
deleted file mode 100644
index 591c7e2a844a0139e39916c58fa7ba82ab0764c4..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/ArgsStub.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Represents a list of function arguments.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class ArgsStub extends EnumStub
-{
-    private static $parameters = [];
-
-    public function __construct(array $args, string $function, ?string $class)
-    {
-        list($variadic, $params) = self::getParameters($function, $class);
-
-        $values = [];
-        foreach ($args as $k => $v) {
-            $values[$k] = !is_scalar($v) && !$v instanceof Stub ? new CutStub($v) : $v;
-        }
-        if (null === $params) {
-            parent::__construct($values, false);
-
-            return;
-        }
-        if (\count($values) < \count($params)) {
-            $params = \array_slice($params, 0, \count($values));
-        } elseif (\count($values) > \count($params)) {
-            $values[] = new EnumStub(array_splice($values, \count($params)), false);
-            $params[] = $variadic;
-        }
-        if (['...'] === $params) {
-            $this->dumpKeys = false;
-            $this->value = $values[0]->value;
-        } else {
-            $this->value = array_combine($params, $values);
-        }
-    }
-
-    private static function getParameters(string $function, ?string $class): array
-    {
-        if (isset(self::$parameters[$k = $class.'::'.$function])) {
-            return self::$parameters[$k];
-        }
-
-        try {
-            $r = null !== $class ? new \ReflectionMethod($class, $function) : new \ReflectionFunction($function);
-        } catch (\ReflectionException $e) {
-            return [null, null];
-        }
-
-        $variadic = '...';
-        $params = [];
-        foreach ($r->getParameters() as $v) {
-            $k = '$'.$v->name;
-            if ($v->isPassedByReference()) {
-                $k = '&'.$k;
-            }
-            if ($v->isVariadic()) {
-                $variadic .= $k;
-            } else {
-                $params[] = $k;
-            }
-        }
-
-        return self::$parameters[$k] = [$variadic, $params];
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/Caster.php b/vendor/symfony/var-dumper/Caster/Caster.php
deleted file mode 100644
index 0a8e9367699d30e10155e35b8f82da562c50d5b3..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/Caster.php
+++ /dev/null
@@ -1,174 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Helper for filtering out properties in casters.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class Caster
-{
-    const EXCLUDE_VERBOSE = 1;
-    const EXCLUDE_VIRTUAL = 2;
-    const EXCLUDE_DYNAMIC = 4;
-    const EXCLUDE_PUBLIC = 8;
-    const EXCLUDE_PROTECTED = 16;
-    const EXCLUDE_PRIVATE = 32;
-    const EXCLUDE_NULL = 64;
-    const EXCLUDE_EMPTY = 128;
-    const EXCLUDE_NOT_IMPORTANT = 256;
-    const EXCLUDE_STRICT = 512;
-
-    const PREFIX_VIRTUAL = "\0~\0";
-    const PREFIX_DYNAMIC = "\0+\0";
-    const PREFIX_PROTECTED = "\0*\0";
-
-    /**
-     * Casts objects to arrays and adds the dynamic property prefix.
-     *
-     * @param bool $hasDebugInfo Whether the __debugInfo method exists on $obj or not
-     *
-     * @return array The array-cast of the object, with prefixed dynamic properties
-     */
-    public static function castObject(object $obj, string $class, bool $hasDebugInfo = false, string $debugClass = null): array
-    {
-        if ($hasDebugInfo) {
-            try {
-                $debugInfo = $obj->__debugInfo();
-            } catch (\Exception $e) {
-                // ignore failing __debugInfo()
-                $hasDebugInfo = false;
-            }
-        }
-
-        $a = $obj instanceof \Closure ? [] : (array) $obj;
-
-        if ($obj instanceof \__PHP_Incomplete_Class) {
-            return $a;
-        }
-
-        if ($a) {
-            static $publicProperties = [];
-            $debugClass = $debugClass ?? get_debug_type($obj);
-
-            $i = 0;
-            $prefixedKeys = [];
-            foreach ($a as $k => $v) {
-                if ("\0" !== ($k[0] ?? '')) {
-                    if (!isset($publicProperties[$class])) {
-                        foreach ((new \ReflectionClass($class))->getProperties(\ReflectionProperty::IS_PUBLIC) as $prop) {
-                            $publicProperties[$class][$prop->name] = true;
-                        }
-                    }
-                    if (!isset($publicProperties[$class][$k])) {
-                        $prefixedKeys[$i] = self::PREFIX_DYNAMIC.$k;
-                    }
-                } elseif ($debugClass !== $class && 1 === strpos($k, $class)) {
-                    $prefixedKeys[$i] = "\0".$debugClass.strrchr($k, "\0");
-                }
-                ++$i;
-            }
-            if ($prefixedKeys) {
-                $keys = array_keys($a);
-                foreach ($prefixedKeys as $i => $k) {
-                    $keys[$i] = $k;
-                }
-                $a = array_combine($keys, $a);
-            }
-        }
-
-        if ($hasDebugInfo && \is_array($debugInfo)) {
-            foreach ($debugInfo as $k => $v) {
-                if (!isset($k[0]) || "\0" !== $k[0]) {
-                    if (\array_key_exists(self::PREFIX_DYNAMIC.$k, $a)) {
-                        continue;
-                    }
-                    $k = self::PREFIX_VIRTUAL.$k;
-                }
-
-                unset($a[$k]);
-                $a[$k] = $v;
-            }
-        }
-
-        return $a;
-    }
-
-    /**
-     * Filters out the specified properties.
-     *
-     * By default, a single match in the $filter bit field filters properties out, following an "or" logic.
-     * When EXCLUDE_STRICT is set, an "and" logic is applied: all bits must match for a property to be removed.
-     *
-     * @param array    $a                The array containing the properties to filter
-     * @param int      $filter           A bit field of Caster::EXCLUDE_* constants specifying which properties to filter out
-     * @param string[] $listedProperties List of properties to exclude when Caster::EXCLUDE_VERBOSE is set, and to preserve when Caster::EXCLUDE_NOT_IMPORTANT is set
-     * @param int      &$count           Set to the number of removed properties
-     *
-     * @return array The filtered array
-     */
-    public static function filter(array $a, int $filter, array $listedProperties = [], ?int &$count = 0): array
-    {
-        $count = 0;
-
-        foreach ($a as $k => $v) {
-            $type = self::EXCLUDE_STRICT & $filter;
-
-            if (null === $v) {
-                $type |= self::EXCLUDE_NULL & $filter;
-                $type |= self::EXCLUDE_EMPTY & $filter;
-            } elseif (false === $v || '' === $v || '0' === $v || 0 === $v || 0.0 === $v || [] === $v) {
-                $type |= self::EXCLUDE_EMPTY & $filter;
-            }
-            if ((self::EXCLUDE_NOT_IMPORTANT & $filter) && !\in_array($k, $listedProperties, true)) {
-                $type |= self::EXCLUDE_NOT_IMPORTANT;
-            }
-            if ((self::EXCLUDE_VERBOSE & $filter) && \in_array($k, $listedProperties, true)) {
-                $type |= self::EXCLUDE_VERBOSE;
-            }
-
-            if (!isset($k[1]) || "\0" !== $k[0]) {
-                $type |= self::EXCLUDE_PUBLIC & $filter;
-            } elseif ('~' === $k[1]) {
-                $type |= self::EXCLUDE_VIRTUAL & $filter;
-            } elseif ('+' === $k[1]) {
-                $type |= self::EXCLUDE_DYNAMIC & $filter;
-            } elseif ('*' === $k[1]) {
-                $type |= self::EXCLUDE_PROTECTED & $filter;
-            } else {
-                $type |= self::EXCLUDE_PRIVATE & $filter;
-            }
-
-            if ((self::EXCLUDE_STRICT & $filter) ? $type === $filter : $type) {
-                unset($a[$k]);
-                ++$count;
-            }
-        }
-
-        return $a;
-    }
-
-    public static function castPhpIncompleteClass(\__PHP_Incomplete_Class $c, array $a, Stub $stub, bool $isNested): array
-    {
-        if (isset($a['__PHP_Incomplete_Class_Name'])) {
-            $stub->class .= '('.$a['__PHP_Incomplete_Class_Name'].')';
-            unset($a['__PHP_Incomplete_Class_Name']);
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/ClassStub.php b/vendor/symfony/var-dumper/Caster/ClassStub.php
deleted file mode 100644
index 612a7ca2d9933fb7e2c3bd24323eeb66a1065100..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/ClassStub.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Represents a PHP class identifier.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class ClassStub extends ConstStub
-{
-    /**
-     * @param string   $identifier A PHP identifier, e.g. a class, method, interface, etc. name
-     * @param callable $callable   The callable targeted by the identifier when it is ambiguous or not a real PHP identifier
-     */
-    public function __construct(string $identifier, $callable = null)
-    {
-        $this->value = $identifier;
-
-        try {
-            if (null !== $callable) {
-                if ($callable instanceof \Closure) {
-                    $r = new \ReflectionFunction($callable);
-                } elseif (\is_object($callable)) {
-                    $r = [$callable, '__invoke'];
-                } elseif (\is_array($callable)) {
-                    $r = $callable;
-                } elseif (false !== $i = strpos($callable, '::')) {
-                    $r = [substr($callable, 0, $i), substr($callable, 2 + $i)];
-                } else {
-                    $r = new \ReflectionFunction($callable);
-                }
-            } elseif (0 < $i = strpos($identifier, '::') ?: strpos($identifier, '->')) {
-                $r = [substr($identifier, 0, $i), substr($identifier, 2 + $i)];
-            } else {
-                $r = new \ReflectionClass($identifier);
-            }
-
-            if (\is_array($r)) {
-                try {
-                    $r = new \ReflectionMethod($r[0], $r[1]);
-                } catch (\ReflectionException $e) {
-                    $r = new \ReflectionClass($r[0]);
-                }
-            }
-
-            if (false !== strpos($identifier, "@anonymous\0")) {
-                $this->value = $identifier = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) {
-                    return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0];
-                }, $identifier);
-            }
-
-            if (null !== $callable && $r instanceof \ReflectionFunctionAbstract) {
-                $s = ReflectionCaster::castFunctionAbstract($r, [], new Stub(), true, Caster::EXCLUDE_VERBOSE);
-                $s = ReflectionCaster::getSignature($s);
-
-                if ('()' === substr($identifier, -2)) {
-                    $this->value = substr_replace($identifier, $s, -2);
-                } else {
-                    $this->value .= $s;
-                }
-            }
-        } catch (\ReflectionException $e) {
-            return;
-        } finally {
-            if (0 < $i = strrpos($this->value, '\\')) {
-                $this->attr['ellipsis'] = \strlen($this->value) - $i;
-                $this->attr['ellipsis-type'] = 'class';
-                $this->attr['ellipsis-tail'] = 1;
-            }
-        }
-
-        if ($f = $r->getFileName()) {
-            $this->attr['file'] = $f;
-            $this->attr['line'] = $r->getStartLine();
-        }
-    }
-
-    public static function wrapCallable($callable)
-    {
-        if (\is_object($callable) || !\is_callable($callable)) {
-            return $callable;
-        }
-
-        if (!\is_array($callable)) {
-            $callable = new static($callable, $callable);
-        } elseif (\is_string($callable[0])) {
-            $callable[0] = new static($callable[0], $callable);
-        } else {
-            $callable[1] = new static($callable[1], $callable);
-        }
-
-        return $callable;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/ConstStub.php b/vendor/symfony/var-dumper/Caster/ConstStub.php
deleted file mode 100644
index 8b0179745f346479282aaeb0ee6ffcb4391c9b94..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/ConstStub.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Represents a PHP constant and its value.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class ConstStub extends Stub
-{
-    public function __construct(string $name, $value = null)
-    {
-        $this->class = $name;
-        $this->value = 1 < \func_num_args() ? $value : $name;
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        return (string) $this->value;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/CutArrayStub.php b/vendor/symfony/var-dumper/Caster/CutArrayStub.php
deleted file mode 100644
index 0e4fb363d2d41a45267d011d6c92b5da3dbb10be..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/CutArrayStub.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-/**
- * Represents a cut array.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class CutArrayStub extends CutStub
-{
-    public $preservedSubset;
-
-    public function __construct(array $value, array $preservedKeys)
-    {
-        parent::__construct($value);
-
-        $this->preservedSubset = array_intersect_key($value, array_flip($preservedKeys));
-        $this->cut -= \count($this->preservedSubset);
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/CutStub.php b/vendor/symfony/var-dumper/Caster/CutStub.php
deleted file mode 100644
index 464c6dbd1905d620e7b6052886f478bd326f3f0e..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/CutStub.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Represents the main properties of a PHP variable, pre-casted by a caster.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class CutStub extends Stub
-{
-    public function __construct($value)
-    {
-        $this->value = $value;
-
-        switch (\gettype($value)) {
-            case 'object':
-                $this->type = self::TYPE_OBJECT;
-                $this->class = \get_class($value);
-
-                if ($value instanceof \Closure) {
-                    ReflectionCaster::castClosure($value, [], $this, true, Caster::EXCLUDE_VERBOSE);
-                }
-
-                $this->cut = -1;
-                break;
-
-            case 'array':
-                $this->type = self::TYPE_ARRAY;
-                $this->class = self::ARRAY_ASSOC;
-                $this->cut = $this->value = \count($value);
-                break;
-
-            case 'resource':
-            case 'unknown type':
-            case 'resource (closed)':
-                $this->type = self::TYPE_RESOURCE;
-                $this->handle = (int) $value;
-                if ('Unknown' === $this->class = @get_resource_type($value)) {
-                    $this->class = 'Closed';
-                }
-                $this->cut = -1;
-                break;
-
-            case 'string':
-                $this->type = self::TYPE_STRING;
-                $this->class = preg_match('//u', $value) ? self::STRING_UTF8 : self::STRING_BINARY;
-                $this->cut = self::STRING_BINARY === $this->class ? \strlen($value) : mb_strlen($value, 'UTF-8');
-                $this->value = '';
-                break;
-        }
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/DOMCaster.php b/vendor/symfony/var-dumper/Caster/DOMCaster.php
deleted file mode 100644
index 499aca1f56c793f4ee03c76304e7898b8bd1d100..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/DOMCaster.php
+++ /dev/null
@@ -1,304 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts DOM related classes to array representation.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class DOMCaster
-{
-    private static $errorCodes = [
-        \DOM_PHP_ERR => 'DOM_PHP_ERR',
-        \DOM_INDEX_SIZE_ERR => 'DOM_INDEX_SIZE_ERR',
-        \DOMSTRING_SIZE_ERR => 'DOMSTRING_SIZE_ERR',
-        \DOM_HIERARCHY_REQUEST_ERR => 'DOM_HIERARCHY_REQUEST_ERR',
-        \DOM_WRONG_DOCUMENT_ERR => 'DOM_WRONG_DOCUMENT_ERR',
-        \DOM_INVALID_CHARACTER_ERR => 'DOM_INVALID_CHARACTER_ERR',
-        \DOM_NO_DATA_ALLOWED_ERR => 'DOM_NO_DATA_ALLOWED_ERR',
-        \DOM_NO_MODIFICATION_ALLOWED_ERR => 'DOM_NO_MODIFICATION_ALLOWED_ERR',
-        \DOM_NOT_FOUND_ERR => 'DOM_NOT_FOUND_ERR',
-        \DOM_NOT_SUPPORTED_ERR => 'DOM_NOT_SUPPORTED_ERR',
-        \DOM_INUSE_ATTRIBUTE_ERR => 'DOM_INUSE_ATTRIBUTE_ERR',
-        \DOM_INVALID_STATE_ERR => 'DOM_INVALID_STATE_ERR',
-        \DOM_SYNTAX_ERR => 'DOM_SYNTAX_ERR',
-        \DOM_INVALID_MODIFICATION_ERR => 'DOM_INVALID_MODIFICATION_ERR',
-        \DOM_NAMESPACE_ERR => 'DOM_NAMESPACE_ERR',
-        \DOM_INVALID_ACCESS_ERR => 'DOM_INVALID_ACCESS_ERR',
-        \DOM_VALIDATION_ERR => 'DOM_VALIDATION_ERR',
-    ];
-
-    private static $nodeTypes = [
-        \XML_ELEMENT_NODE => 'XML_ELEMENT_NODE',
-        \XML_ATTRIBUTE_NODE => 'XML_ATTRIBUTE_NODE',
-        \XML_TEXT_NODE => 'XML_TEXT_NODE',
-        \XML_CDATA_SECTION_NODE => 'XML_CDATA_SECTION_NODE',
-        \XML_ENTITY_REF_NODE => 'XML_ENTITY_REF_NODE',
-        \XML_ENTITY_NODE => 'XML_ENTITY_NODE',
-        \XML_PI_NODE => 'XML_PI_NODE',
-        \XML_COMMENT_NODE => 'XML_COMMENT_NODE',
-        \XML_DOCUMENT_NODE => 'XML_DOCUMENT_NODE',
-        \XML_DOCUMENT_TYPE_NODE => 'XML_DOCUMENT_TYPE_NODE',
-        \XML_DOCUMENT_FRAG_NODE => 'XML_DOCUMENT_FRAG_NODE',
-        \XML_NOTATION_NODE => 'XML_NOTATION_NODE',
-        \XML_HTML_DOCUMENT_NODE => 'XML_HTML_DOCUMENT_NODE',
-        \XML_DTD_NODE => 'XML_DTD_NODE',
-        \XML_ELEMENT_DECL_NODE => 'XML_ELEMENT_DECL_NODE',
-        \XML_ATTRIBUTE_DECL_NODE => 'XML_ATTRIBUTE_DECL_NODE',
-        \XML_ENTITY_DECL_NODE => 'XML_ENTITY_DECL_NODE',
-        \XML_NAMESPACE_DECL_NODE => 'XML_NAMESPACE_DECL_NODE',
-    ];
-
-    public static function castException(\DOMException $e, array $a, Stub $stub, bool $isNested)
-    {
-        $k = Caster::PREFIX_PROTECTED.'code';
-        if (isset($a[$k], self::$errorCodes[$a[$k]])) {
-            $a[$k] = new ConstStub(self::$errorCodes[$a[$k]], $a[$k]);
-        }
-
-        return $a;
-    }
-
-    public static function castLength($dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'length' => $dom->length,
-        ];
-
-        return $a;
-    }
-
-    public static function castImplementation($dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            Caster::PREFIX_VIRTUAL.'Core' => '1.0',
-            Caster::PREFIX_VIRTUAL.'XML' => '2.0',
-        ];
-
-        return $a;
-    }
-
-    public static function castNode(\DOMNode $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'nodeName' => $dom->nodeName,
-            'nodeValue' => new CutStub($dom->nodeValue),
-            'nodeType' => new ConstStub(self::$nodeTypes[$dom->nodeType], $dom->nodeType),
-            'parentNode' => new CutStub($dom->parentNode),
-            'childNodes' => $dom->childNodes,
-            'firstChild' => new CutStub($dom->firstChild),
-            'lastChild' => new CutStub($dom->lastChild),
-            'previousSibling' => new CutStub($dom->previousSibling),
-            'nextSibling' => new CutStub($dom->nextSibling),
-            'attributes' => $dom->attributes,
-            'ownerDocument' => new CutStub($dom->ownerDocument),
-            'namespaceURI' => $dom->namespaceURI,
-            'prefix' => $dom->prefix,
-            'localName' => $dom->localName,
-            'baseURI' => $dom->baseURI ? new LinkStub($dom->baseURI) : $dom->baseURI,
-            'textContent' => new CutStub($dom->textContent),
-        ];
-
-        return $a;
-    }
-
-    public static function castNameSpaceNode(\DOMNameSpaceNode $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'nodeName' => $dom->nodeName,
-            'nodeValue' => new CutStub($dom->nodeValue),
-            'nodeType' => new ConstStub(self::$nodeTypes[$dom->nodeType], $dom->nodeType),
-            'prefix' => $dom->prefix,
-            'localName' => $dom->localName,
-            'namespaceURI' => $dom->namespaceURI,
-            'ownerDocument' => new CutStub($dom->ownerDocument),
-            'parentNode' => new CutStub($dom->parentNode),
-        ];
-
-        return $a;
-    }
-
-    public static function castDocument(\DOMDocument $dom, array $a, Stub $stub, bool $isNested, int $filter = 0)
-    {
-        $a += [
-            'doctype' => $dom->doctype,
-            'implementation' => $dom->implementation,
-            'documentElement' => new CutStub($dom->documentElement),
-            'actualEncoding' => $dom->actualEncoding,
-            'encoding' => $dom->encoding,
-            'xmlEncoding' => $dom->xmlEncoding,
-            'standalone' => $dom->standalone,
-            'xmlStandalone' => $dom->xmlStandalone,
-            'version' => $dom->version,
-            'xmlVersion' => $dom->xmlVersion,
-            'strictErrorChecking' => $dom->strictErrorChecking,
-            'documentURI' => $dom->documentURI ? new LinkStub($dom->documentURI) : $dom->documentURI,
-            'config' => $dom->config,
-            'formatOutput' => $dom->formatOutput,
-            'validateOnParse' => $dom->validateOnParse,
-            'resolveExternals' => $dom->resolveExternals,
-            'preserveWhiteSpace' => $dom->preserveWhiteSpace,
-            'recover' => $dom->recover,
-            'substituteEntities' => $dom->substituteEntities,
-        ];
-
-        if (!($filter & Caster::EXCLUDE_VERBOSE)) {
-            $formatOutput = $dom->formatOutput;
-            $dom->formatOutput = true;
-            $a += [Caster::PREFIX_VIRTUAL.'xml' => $dom->saveXML()];
-            $dom->formatOutput = $formatOutput;
-        }
-
-        return $a;
-    }
-
-    public static function castCharacterData(\DOMCharacterData $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'data' => $dom->data,
-            'length' => $dom->length,
-        ];
-
-        return $a;
-    }
-
-    public static function castAttr(\DOMAttr $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'name' => $dom->name,
-            'specified' => $dom->specified,
-            'value' => $dom->value,
-            'ownerElement' => $dom->ownerElement,
-            'schemaTypeInfo' => $dom->schemaTypeInfo,
-        ];
-
-        return $a;
-    }
-
-    public static function castElement(\DOMElement $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'tagName' => $dom->tagName,
-            'schemaTypeInfo' => $dom->schemaTypeInfo,
-        ];
-
-        return $a;
-    }
-
-    public static function castText(\DOMText $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'wholeText' => $dom->wholeText,
-        ];
-
-        return $a;
-    }
-
-    public static function castTypeinfo(\DOMTypeinfo $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'typeName' => $dom->typeName,
-            'typeNamespace' => $dom->typeNamespace,
-        ];
-
-        return $a;
-    }
-
-    public static function castDomError(\DOMDomError $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'severity' => $dom->severity,
-            'message' => $dom->message,
-            'type' => $dom->type,
-            'relatedException' => $dom->relatedException,
-            'related_data' => $dom->related_data,
-            'location' => $dom->location,
-        ];
-
-        return $a;
-    }
-
-    public static function castLocator(\DOMLocator $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'lineNumber' => $dom->lineNumber,
-            'columnNumber' => $dom->columnNumber,
-            'offset' => $dom->offset,
-            'relatedNode' => $dom->relatedNode,
-            'uri' => $dom->uri ? new LinkStub($dom->uri, $dom->lineNumber) : $dom->uri,
-        ];
-
-        return $a;
-    }
-
-    public static function castDocumentType(\DOMDocumentType $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'name' => $dom->name,
-            'entities' => $dom->entities,
-            'notations' => $dom->notations,
-            'publicId' => $dom->publicId,
-            'systemId' => $dom->systemId,
-            'internalSubset' => $dom->internalSubset,
-        ];
-
-        return $a;
-    }
-
-    public static function castNotation(\DOMNotation $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'publicId' => $dom->publicId,
-            'systemId' => $dom->systemId,
-        ];
-
-        return $a;
-    }
-
-    public static function castEntity(\DOMEntity $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'publicId' => $dom->publicId,
-            'systemId' => $dom->systemId,
-            'notationName' => $dom->notationName,
-            'actualEncoding' => $dom->actualEncoding,
-            'encoding' => $dom->encoding,
-            'version' => $dom->version,
-        ];
-
-        return $a;
-    }
-
-    public static function castProcessingInstruction(\DOMProcessingInstruction $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'target' => $dom->target,
-            'data' => $dom->data,
-        ];
-
-        return $a;
-    }
-
-    public static function castXPath(\DOMXPath $dom, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            'document' => $dom->document,
-        ];
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/DateCaster.php b/vendor/symfony/var-dumper/Caster/DateCaster.php
deleted file mode 100644
index e3708b7fb3276548d49f20a4ee1dc44da6fbf08e..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/DateCaster.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts DateTimeInterface related classes to array representation.
- *
- * @author Dany Maillard <danymaillard93b@gmail.com>
- *
- * @final
- */
-class DateCaster
-{
-    private const PERIOD_LIMIT = 3;
-
-    public static function castDateTime(\DateTimeInterface $d, array $a, Stub $stub, bool $isNested, int $filter)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-        $location = $d->getTimezone()->getLocation();
-        $fromNow = (new \DateTime())->diff($d);
-
-        $title = $d->format('l, F j, Y')
-            ."\n".self::formatInterval($fromNow).' from now'
-            .($location ? ($d->format('I') ? "\nDST On" : "\nDST Off") : '')
-        ;
-
-        unset(
-            $a[Caster::PREFIX_DYNAMIC.'date'],
-            $a[Caster::PREFIX_DYNAMIC.'timezone'],
-            $a[Caster::PREFIX_DYNAMIC.'timezone_type']
-        );
-        $a[$prefix.'date'] = new ConstStub(self::formatDateTime($d, $location ? ' e (P)' : ' P'), $title);
-
-        $stub->class .= $d->format(' @U');
-
-        return $a;
-    }
-
-    public static function castInterval(\DateInterval $interval, array $a, Stub $stub, bool $isNested, int $filter)
-    {
-        $now = new \DateTimeImmutable();
-        $numberOfSeconds = $now->add($interval)->getTimestamp() - $now->getTimestamp();
-        $title = number_format($numberOfSeconds, 0, '.', ' ').'s';
-
-        $i = [Caster::PREFIX_VIRTUAL.'interval' => new ConstStub(self::formatInterval($interval), $title)];
-
-        return $filter & Caster::EXCLUDE_VERBOSE ? $i : $i + $a;
-    }
-
-    private static function formatInterval(\DateInterval $i): string
-    {
-        $format = '%R ';
-
-        if (0 === $i->y && 0 === $i->m && ($i->h >= 24 || $i->i >= 60 || $i->s >= 60)) {
-            $i = date_diff($d = new \DateTime(), date_add(clone $d, $i)); // recalculate carry over points
-            $format .= 0 < $i->days ? '%ad ' : '';
-        } else {
-            $format .= ($i->y ? '%yy ' : '').($i->m ? '%mm ' : '').($i->d ? '%dd ' : '');
-        }
-
-        $format .= $i->h || $i->i || $i->s || $i->f ? '%H:%I:'.self::formatSeconds($i->s, substr($i->f, 2)) : '';
-        $format = '%R ' === $format ? '0s' : $format;
-
-        return $i->format(rtrim($format));
-    }
-
-    public static function castTimeZone(\DateTimeZone $timeZone, array $a, Stub $stub, bool $isNested, int $filter)
-    {
-        $location = $timeZone->getLocation();
-        $formatted = (new \DateTime('now', $timeZone))->format($location ? 'e (P)' : 'P');
-        $title = $location && \extension_loaded('intl') ? \Locale::getDisplayRegion('-'.$location['country_code']) : '';
-
-        $z = [Caster::PREFIX_VIRTUAL.'timezone' => new ConstStub($formatted, $title)];
-
-        return $filter & Caster::EXCLUDE_VERBOSE ? $z : $z + $a;
-    }
-
-    public static function castPeriod(\DatePeriod $p, array $a, Stub $stub, bool $isNested, int $filter)
-    {
-        $dates = [];
-        foreach (clone $p as $i => $d) {
-            if (self::PERIOD_LIMIT === $i) {
-                $now = new \DateTimeImmutable();
-                $dates[] = sprintf('%s more', ($end = $p->getEndDate())
-                    ? ceil(($end->format('U.u') - $d->format('U.u')) / ((int) $now->add($p->getDateInterval())->format('U.u') - (int) $now->format('U.u')))
-                    : $p->recurrences - $i
-                );
-                break;
-            }
-            $dates[] = sprintf('%s) %s', $i + 1, self::formatDateTime($d));
-        }
-
-        $period = sprintf(
-            'every %s, from %s (%s) %s',
-            self::formatInterval($p->getDateInterval()),
-            self::formatDateTime($p->getStartDate()),
-            $p->include_start_date ? 'included' : 'excluded',
-            ($end = $p->getEndDate()) ? 'to '.self::formatDateTime($end) : 'recurring '.$p->recurrences.' time/s'
-        );
-
-        $p = [Caster::PREFIX_VIRTUAL.'period' => new ConstStub($period, implode("\n", $dates))];
-
-        return $filter & Caster::EXCLUDE_VERBOSE ? $p : $p + $a;
-    }
-
-    private static function formatDateTime(\DateTimeInterface $d, string $extra = ''): string
-    {
-        return $d->format('Y-m-d H:i:'.self::formatSeconds($d->format('s'), $d->format('u')).$extra);
-    }
-
-    private static function formatSeconds(string $s, string $us): string
-    {
-        return sprintf('%02d.%s', $s, 0 === ($len = \strlen($t = rtrim($us, '0'))) ? '0' : ($len <= 3 ? str_pad($t, 3, '0') : $us));
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/DoctrineCaster.php b/vendor/symfony/var-dumper/Caster/DoctrineCaster.php
deleted file mode 100644
index 129b2cb47b989c62ea147306dfa7cbabbe1921a9..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/DoctrineCaster.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Doctrine\Common\Proxy\Proxy as CommonProxy;
-use Doctrine\ORM\PersistentCollection;
-use Doctrine\ORM\Proxy\Proxy as OrmProxy;
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts Doctrine related classes to array representation.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class DoctrineCaster
-{
-    public static function castCommonProxy(CommonProxy $proxy, array $a, Stub $stub, bool $isNested)
-    {
-        foreach (['__cloner__', '__initializer__'] as $k) {
-            if (\array_key_exists($k, $a)) {
-                unset($a[$k]);
-                ++$stub->cut;
-            }
-        }
-
-        return $a;
-    }
-
-    public static function castOrmProxy(OrmProxy $proxy, array $a, Stub $stub, bool $isNested)
-    {
-        foreach (['_entityPersister', '_identifier'] as $k) {
-            if (\array_key_exists($k = "\0Doctrine\\ORM\\Proxy\\Proxy\0".$k, $a)) {
-                unset($a[$k]);
-                ++$stub->cut;
-            }
-        }
-
-        return $a;
-    }
-
-    public static function castPersistentCollection(PersistentCollection $coll, array $a, Stub $stub, bool $isNested)
-    {
-        foreach (['snapshot', 'association', 'typeClass'] as $k) {
-            if (\array_key_exists($k = "\0Doctrine\\ORM\\PersistentCollection\0".$k, $a)) {
-                $a[$k] = new CutStub($a[$k]);
-            }
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/DsCaster.php b/vendor/symfony/var-dumper/Caster/DsCaster.php
deleted file mode 100644
index b34b67004bb5da3328ad491374dcb87684925c98..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/DsCaster.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Ds\Collection;
-use Ds\Map;
-use Ds\Pair;
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts Ds extension classes to array representation.
- *
- * @author Jáchym Toušek <enumag@gmail.com>
- *
- * @final
- */
-class DsCaster
-{
-    public static function castCollection(Collection $c, array $a, Stub $stub, bool $isNested): array
-    {
-        $a[Caster::PREFIX_VIRTUAL.'count'] = $c->count();
-        $a[Caster::PREFIX_VIRTUAL.'capacity'] = $c->capacity();
-
-        if (!$c instanceof Map) {
-            $a += $c->toArray();
-        }
-
-        return $a;
-    }
-
-    public static function castMap(Map $c, array $a, Stub $stub, bool $isNested): array
-    {
-        foreach ($c as $k => $v) {
-            $a[] = new DsPairStub($k, $v);
-        }
-
-        return $a;
-    }
-
-    public static function castPair(Pair $c, array $a, Stub $stub, bool $isNested): array
-    {
-        foreach ($c->toArray() as $k => $v) {
-            $a[Caster::PREFIX_VIRTUAL.$k] = $v;
-        }
-
-        return $a;
-    }
-
-    public static function castPairStub(DsPairStub $c, array $a, Stub $stub, bool $isNested): array
-    {
-        if ($isNested) {
-            $stub->class = Pair::class;
-            $stub->value = null;
-            $stub->handle = 0;
-
-            $a = $c->value;
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/DsPairStub.php b/vendor/symfony/var-dumper/Caster/DsPairStub.php
deleted file mode 100644
index a1dcc156183e92edc38c3a0830519cfacb3363da..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/DsPairStub.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DsPairStub extends Stub
-{
-    public function __construct($key, $value)
-    {
-        $this->value = [
-            Caster::PREFIX_VIRTUAL.'key' => $key,
-            Caster::PREFIX_VIRTUAL.'value' => $value,
-        ];
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/EnumStub.php b/vendor/symfony/var-dumper/Caster/EnumStub.php
deleted file mode 100644
index 7a4e98a21b4d1b52b561d2464c78a8081e001709..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/EnumStub.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Represents an enumeration of values.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class EnumStub extends Stub
-{
-    public $dumpKeys = true;
-
-    public function __construct(array $values, bool $dumpKeys = true)
-    {
-        $this->value = $values;
-        $this->dumpKeys = $dumpKeys;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php b/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
deleted file mode 100644
index 8f7227682462abdb685a09939c6230f7b32e4f6c..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
+++ /dev/null
@@ -1,382 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext;
-use Symfony\Component\VarDumper\Cloner\Stub;
-use Symfony\Component\VarDumper\Exception\ThrowingCasterException;
-
-/**
- * Casts common Exception classes to array representation.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class ExceptionCaster
-{
-    public static $srcContext = 1;
-    public static $traceArgs = true;
-    public static $errorTypes = [
-        \E_DEPRECATED => 'E_DEPRECATED',
-        \E_USER_DEPRECATED => 'E_USER_DEPRECATED',
-        \E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR',
-        \E_ERROR => 'E_ERROR',
-        \E_WARNING => 'E_WARNING',
-        \E_PARSE => 'E_PARSE',
-        \E_NOTICE => 'E_NOTICE',
-        \E_CORE_ERROR => 'E_CORE_ERROR',
-        \E_CORE_WARNING => 'E_CORE_WARNING',
-        \E_COMPILE_ERROR => 'E_COMPILE_ERROR',
-        \E_COMPILE_WARNING => 'E_COMPILE_WARNING',
-        \E_USER_ERROR => 'E_USER_ERROR',
-        \E_USER_WARNING => 'E_USER_WARNING',
-        \E_USER_NOTICE => 'E_USER_NOTICE',
-        \E_STRICT => 'E_STRICT',
-    ];
-
-    private static $framesCache = [];
-
-    public static function castError(\Error $e, array $a, Stub $stub, bool $isNested, int $filter = 0)
-    {
-        return self::filterExceptionArray($stub->class, $a, "\0Error\0", $filter);
-    }
-
-    public static function castException(\Exception $e, array $a, Stub $stub, bool $isNested, int $filter = 0)
-    {
-        return self::filterExceptionArray($stub->class, $a, "\0Exception\0", $filter);
-    }
-
-    public static function castErrorException(\ErrorException $e, array $a, Stub $stub, bool $isNested)
-    {
-        if (isset($a[$s = Caster::PREFIX_PROTECTED.'severity'], self::$errorTypes[$a[$s]])) {
-            $a[$s] = new ConstStub(self::$errorTypes[$a[$s]], $a[$s]);
-        }
-
-        return $a;
-    }
-
-    public static function castThrowingCasterException(ThrowingCasterException $e, array $a, Stub $stub, bool $isNested)
-    {
-        $trace = Caster::PREFIX_VIRTUAL.'trace';
-        $prefix = Caster::PREFIX_PROTECTED;
-        $xPrefix = "\0Exception\0";
-
-        if (isset($a[$xPrefix.'previous'], $a[$trace]) && $a[$xPrefix.'previous'] instanceof \Exception) {
-            $b = (array) $a[$xPrefix.'previous'];
-            $class = get_debug_type($a[$xPrefix.'previous']);
-            self::traceUnshift($b[$xPrefix.'trace'], $class, $b[$prefix.'file'], $b[$prefix.'line']);
-            $a[$trace] = new TraceStub($b[$xPrefix.'trace'], false, 0, -\count($a[$trace]->value));
-        }
-
-        unset($a[$xPrefix.'previous'], $a[$prefix.'code'], $a[$prefix.'file'], $a[$prefix.'line']);
-
-        return $a;
-    }
-
-    public static function castSilencedErrorContext(SilencedErrorContext $e, array $a, Stub $stub, bool $isNested)
-    {
-        $sPrefix = "\0".SilencedErrorContext::class."\0";
-
-        if (!isset($a[$s = $sPrefix.'severity'])) {
-            return $a;
-        }
-
-        if (isset(self::$errorTypes[$a[$s]])) {
-            $a[$s] = new ConstStub(self::$errorTypes[$a[$s]], $a[$s]);
-        }
-
-        $trace = [[
-            'file' => $a[$sPrefix.'file'],
-            'line' => $a[$sPrefix.'line'],
-        ]];
-
-        if (isset($a[$sPrefix.'trace'])) {
-            $trace = array_merge($trace, $a[$sPrefix.'trace']);
-        }
-
-        unset($a[$sPrefix.'file'], $a[$sPrefix.'line'], $a[$sPrefix.'trace']);
-        $a[Caster::PREFIX_VIRTUAL.'trace'] = new TraceStub($trace, self::$traceArgs);
-
-        return $a;
-    }
-
-    public static function castTraceStub(TraceStub $trace, array $a, Stub $stub, bool $isNested)
-    {
-        if (!$isNested) {
-            return $a;
-        }
-        $stub->class = '';
-        $stub->handle = 0;
-        $frames = $trace->value;
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a = [];
-        $j = \count($frames);
-        if (0 > $i = $trace->sliceOffset) {
-            $i = max(0, $j + $i);
-        }
-        if (!isset($trace->value[$i])) {
-            return [];
-        }
-        $lastCall = isset($frames[$i]['function']) ? (isset($frames[$i]['class']) ? $frames[0]['class'].$frames[$i]['type'] : '').$frames[$i]['function'].'()' : '';
-        $frames[] = ['function' => ''];
-        $collapse = false;
-
-        for ($j += $trace->numberingOffset - $i++; isset($frames[$i]); ++$i, --$j) {
-            $f = $frames[$i];
-            $call = isset($f['function']) ? (isset($f['class']) ? $f['class'].$f['type'] : '').$f['function'] : '???';
-
-            $frame = new FrameStub(
-                [
-                    'object' => isset($f['object']) ? $f['object'] : null,
-                    'class' => isset($f['class']) ? $f['class'] : null,
-                    'type' => isset($f['type']) ? $f['type'] : null,
-                    'function' => isset($f['function']) ? $f['function'] : null,
-                ] + $frames[$i - 1],
-                false,
-                true
-            );
-            $f = self::castFrameStub($frame, [], $frame, true);
-            if (isset($f[$prefix.'src'])) {
-                foreach ($f[$prefix.'src']->value as $label => $frame) {
-                    if (0 === strpos($label, "\0~collapse=0")) {
-                        if ($collapse) {
-                            $label = substr_replace($label, '1', 11, 1);
-                        } else {
-                            $collapse = true;
-                        }
-                    }
-                    $label = substr_replace($label, "title=Stack level $j.&", 2, 0);
-                }
-                $f = $frames[$i - 1];
-                if ($trace->keepArgs && !empty($f['args']) && $frame instanceof EnumStub) {
-                    $frame->value['arguments'] = new ArgsStub($f['args'], isset($f['function']) ? $f['function'] : null, isset($f['class']) ? $f['class'] : null);
-                }
-            } elseif ('???' !== $lastCall) {
-                $label = new ClassStub($lastCall);
-                if (isset($label->attr['ellipsis'])) {
-                    $label->attr['ellipsis'] += 2;
-                    $label = substr_replace($prefix, "ellipsis-type=class&ellipsis={$label->attr['ellipsis']}&ellipsis-tail=1&title=Stack level $j.", 2, 0).$label->value.'()';
-                } else {
-                    $label = substr_replace($prefix, "title=Stack level $j.", 2, 0).$label->value.'()';
-                }
-            } else {
-                $label = substr_replace($prefix, "title=Stack level $j.", 2, 0).$lastCall;
-            }
-            $a[substr_replace($label, sprintf('separator=%s&', $frame instanceof EnumStub ? ' ' : ':'), 2, 0)] = $frame;
-
-            $lastCall = $call;
-        }
-        if (null !== $trace->sliceLength) {
-            $a = \array_slice($a, 0, $trace->sliceLength, true);
-        }
-
-        return $a;
-    }
-
-    public static function castFrameStub(FrameStub $frame, array $a, Stub $stub, bool $isNested)
-    {
-        if (!$isNested) {
-            return $a;
-        }
-        $f = $frame->value;
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        if (isset($f['file'], $f['line'])) {
-            $cacheKey = $f;
-            unset($cacheKey['object'], $cacheKey['args']);
-            $cacheKey[] = self::$srcContext;
-            $cacheKey = implode('-', $cacheKey);
-
-            if (isset(self::$framesCache[$cacheKey])) {
-                $a[$prefix.'src'] = self::$framesCache[$cacheKey];
-            } else {
-                if (preg_match('/\((\d+)\)(?:\([\da-f]{32}\))? : (?:eval\(\)\'d code|runtime-created function)$/', $f['file'], $match)) {
-                    $f['file'] = substr($f['file'], 0, -\strlen($match[0]));
-                    $f['line'] = (int) $match[1];
-                }
-                $src = $f['line'];
-                $srcKey = $f['file'];
-                $ellipsis = new LinkStub($srcKey, 0);
-                $srcAttr = 'collapse='.(int) $ellipsis->inVendor;
-                $ellipsisTail = isset($ellipsis->attr['ellipsis-tail']) ? $ellipsis->attr['ellipsis-tail'] : 0;
-                $ellipsis = isset($ellipsis->attr['ellipsis']) ? $ellipsis->attr['ellipsis'] : 0;
-
-                if (is_file($f['file']) && 0 <= self::$srcContext) {
-                    if (!empty($f['class']) && (is_subclass_of($f['class'], 'Twig\Template') || is_subclass_of($f['class'], 'Twig_Template')) && method_exists($f['class'], 'getDebugInfo')) {
-                        $template = isset($f['object']) ? $f['object'] : unserialize(sprintf('O:%d:"%s":0:{}', \strlen($f['class']), $f['class']));
-
-                        $ellipsis = 0;
-                        $templateSrc = method_exists($template, 'getSourceContext') ? $template->getSourceContext()->getCode() : (method_exists($template, 'getSource') ? $template->getSource() : '');
-                        $templateInfo = $template->getDebugInfo();
-                        if (isset($templateInfo[$f['line']])) {
-                            if (!method_exists($template, 'getSourceContext') || !is_file($templatePath = $template->getSourceContext()->getPath())) {
-                                $templatePath = null;
-                            }
-                            if ($templateSrc) {
-                                $src = self::extractSource($templateSrc, $templateInfo[$f['line']], self::$srcContext, 'twig', $templatePath, $f);
-                                $srcKey = ($templatePath ?: $template->getTemplateName()).':'.$templateInfo[$f['line']];
-                            }
-                        }
-                    }
-                    if ($srcKey == $f['file']) {
-                        $src = self::extractSource(file_get_contents($f['file']), $f['line'], self::$srcContext, 'php', $f['file'], $f);
-                        $srcKey .= ':'.$f['line'];
-                        if ($ellipsis) {
-                            $ellipsis += 1 + \strlen($f['line']);
-                        }
-                    }
-                    $srcAttr .= sprintf('&separator= &file=%s&line=%d', rawurlencode($f['file']), $f['line']);
-                } else {
-                    $srcAttr .= '&separator=:';
-                }
-                $srcAttr .= $ellipsis ? '&ellipsis-type=path&ellipsis='.$ellipsis.'&ellipsis-tail='.$ellipsisTail : '';
-                self::$framesCache[$cacheKey] = $a[$prefix.'src'] = new EnumStub(["\0~$srcAttr\0$srcKey" => $src]);
-            }
-        }
-
-        unset($a[$prefix.'args'], $a[$prefix.'line'], $a[$prefix.'file']);
-        if ($frame->inTraceStub) {
-            unset($a[$prefix.'class'], $a[$prefix.'type'], $a[$prefix.'function']);
-        }
-        foreach ($a as $k => $v) {
-            if (!$v) {
-                unset($a[$k]);
-            }
-        }
-        if ($frame->keepArgs && !empty($f['args'])) {
-            $a[$prefix.'arguments'] = new ArgsStub($f['args'], $f['function'], $f['class']);
-        }
-
-        return $a;
-    }
-
-    private static function filterExceptionArray(string $xClass, array $a, string $xPrefix, int $filter): array
-    {
-        if (isset($a[$xPrefix.'trace'])) {
-            $trace = $a[$xPrefix.'trace'];
-            unset($a[$xPrefix.'trace']); // Ensures the trace is always last
-        } else {
-            $trace = [];
-        }
-
-        if (!($filter & Caster::EXCLUDE_VERBOSE) && $trace) {
-            if (isset($a[Caster::PREFIX_PROTECTED.'file'], $a[Caster::PREFIX_PROTECTED.'line'])) {
-                self::traceUnshift($trace, $xClass, $a[Caster::PREFIX_PROTECTED.'file'], $a[Caster::PREFIX_PROTECTED.'line']);
-            }
-            $a[Caster::PREFIX_VIRTUAL.'trace'] = new TraceStub($trace, self::$traceArgs);
-        }
-        if (empty($a[$xPrefix.'previous'])) {
-            unset($a[$xPrefix.'previous']);
-        }
-        unset($a[$xPrefix.'string'], $a[Caster::PREFIX_DYNAMIC.'xdebug_message'], $a[Caster::PREFIX_DYNAMIC.'__destructorException']);
-
-        if (isset($a[Caster::PREFIX_PROTECTED.'message']) && false !== strpos($a[Caster::PREFIX_PROTECTED.'message'], "@anonymous\0")) {
-            $a[Caster::PREFIX_PROTECTED.'message'] = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) {
-                return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0];
-            }, $a[Caster::PREFIX_PROTECTED.'message']);
-        }
-
-        if (isset($a[Caster::PREFIX_PROTECTED.'file'], $a[Caster::PREFIX_PROTECTED.'line'])) {
-            $a[Caster::PREFIX_PROTECTED.'file'] = new LinkStub($a[Caster::PREFIX_PROTECTED.'file'], $a[Caster::PREFIX_PROTECTED.'line']);
-        }
-
-        return $a;
-    }
-
-    private static function traceUnshift(array &$trace, ?string $class, string $file, int $line): void
-    {
-        if (isset($trace[0]['file'], $trace[0]['line']) && $trace[0]['file'] === $file && $trace[0]['line'] === $line) {
-            return;
-        }
-        array_unshift($trace, [
-            'function' => $class ? 'new '.$class : null,
-            'file' => $file,
-            'line' => $line,
-        ]);
-    }
-
-    private static function extractSource(string $srcLines, int $line, int $srcContext, string $lang, ?string $file, array $frame): EnumStub
-    {
-        $srcLines = explode("\n", $srcLines);
-        $src = [];
-
-        for ($i = $line - 1 - $srcContext; $i <= $line - 1 + $srcContext; ++$i) {
-            $src[] = (isset($srcLines[$i]) ? $srcLines[$i] : '')."\n";
-        }
-
-        if ($frame['function'] ?? false) {
-            $stub = new CutStub(new \stdClass());
-            $stub->class = (isset($frame['class']) ? $frame['class'].$frame['type'] : '').$frame['function'];
-            $stub->type = Stub::TYPE_OBJECT;
-            $stub->attr['cut_hash'] = true;
-            $stub->attr['file'] = $frame['file'];
-            $stub->attr['line'] = $frame['line'];
-
-            try {
-                $caller = isset($frame['class']) ? new \ReflectionMethod($frame['class'], $frame['function']) : new \ReflectionFunction($frame['function']);
-                $stub->class .= ReflectionCaster::getSignature(ReflectionCaster::castFunctionAbstract($caller, [], $stub, true, Caster::EXCLUDE_VERBOSE));
-
-                if ($f = $caller->getFileName()) {
-                    $stub->attr['file'] = $f;
-                    $stub->attr['line'] = $caller->getStartLine();
-                }
-            } catch (\ReflectionException $e) {
-                // ignore fake class/function
-            }
-
-            $srcLines = ["\0~separator=\0" => $stub];
-        } else {
-            $stub = null;
-            $srcLines = [];
-        }
-
-        $ltrim = 0;
-        do {
-            $pad = null;
-            for ($i = $srcContext << 1; $i >= 0; --$i) {
-                if (isset($src[$i][$ltrim]) && "\r" !== ($c = $src[$i][$ltrim]) && "\n" !== $c) {
-                    if (null === $pad) {
-                        $pad = $c;
-                    }
-                    if ((' ' !== $c && "\t" !== $c) || $pad !== $c) {
-                        break;
-                    }
-                }
-            }
-            ++$ltrim;
-        } while (0 > $i && null !== $pad);
-
-        --$ltrim;
-
-        foreach ($src as $i => $c) {
-            if ($ltrim) {
-                $c = isset($c[$ltrim]) && "\r" !== $c[$ltrim] ? substr($c, $ltrim) : ltrim($c, " \t");
-            }
-            $c = substr($c, 0, -1);
-            if ($i !== $srcContext) {
-                $c = new ConstStub('default', $c);
-            } else {
-                $c = new ConstStub($c, $stub ? 'in '.$stub->class : '');
-                if (null !== $file) {
-                    $c->attr['file'] = $file;
-                    $c->attr['line'] = $line;
-                }
-            }
-            $c->attr['lang'] = $lang;
-            $srcLines[sprintf("\0~separator=› &%d\0", $i + $line - $srcContext)] = $c;
-        }
-
-        return new EnumStub($srcLines);
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/FrameStub.php b/vendor/symfony/var-dumper/Caster/FrameStub.php
deleted file mode 100644
index 878675528f7e76c1cfd2863da512297fcda592bf..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/FrameStub.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-/**
- * Represents a single backtrace frame as returned by debug_backtrace() or Exception->getTrace().
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class FrameStub extends EnumStub
-{
-    public $keepArgs;
-    public $inTraceStub;
-
-    public function __construct(array $frame, bool $keepArgs = true, bool $inTraceStub = false)
-    {
-        $this->value = $frame;
-        $this->keepArgs = $keepArgs;
-        $this->inTraceStub = $inTraceStub;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/GmpCaster.php b/vendor/symfony/var-dumper/Caster/GmpCaster.php
deleted file mode 100644
index b018cc7f87f2ef4d7f41960ce3f95f9312ce08df..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/GmpCaster.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts GMP objects to array representation.
- *
- * @author Hamza Amrouche <hamza.simperfit@gmail.com>
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class GmpCaster
-{
-    public static function castGmp(\GMP $gmp, array $a, Stub $stub, bool $isNested, int $filter): array
-    {
-        $a[Caster::PREFIX_VIRTUAL.'value'] = new ConstStub(gmp_strval($gmp), gmp_strval($gmp));
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/ImagineCaster.php b/vendor/symfony/var-dumper/Caster/ImagineCaster.php
deleted file mode 100644
index d1289da3370f3875cd9b9bb5d0fdb931d6a89616..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/ImagineCaster.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Imagine\Image\ImageInterface;
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- */
-final class ImagineCaster
-{
-    public static function castImage(ImageInterface $c, array $a, Stub $stub, bool $isNested): array
-    {
-        $imgData = $c->get('png');
-        if (\strlen($imgData) > 1 * 1000 * 1000) {
-            $a += [
-                Caster::PREFIX_VIRTUAL.'image' => new ConstStub($c->getSize()),
-            ];
-        } else {
-            $a += [
-                Caster::PREFIX_VIRTUAL.'image' => new ImgStub($imgData, 'image/png', $c->getSize()),
-            ];
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/ImgStub.php b/vendor/symfony/var-dumper/Caster/ImgStub.php
deleted file mode 100644
index a16681f7363e49a78f99ee393792341ccff0f55f..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/ImgStub.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-/**
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- */
-class ImgStub extends ConstStub
-{
-    public function __construct(string $data, string $contentType, string $size = '')
-    {
-        $this->value = '';
-        $this->attr['img-data'] = $data;
-        $this->attr['img-size'] = $size;
-        $this->attr['content-type'] = $contentType;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/IntlCaster.php b/vendor/symfony/var-dumper/Caster/IntlCaster.php
deleted file mode 100644
index 23b9d5da32e7ec11256765f7a3fad39cf0e8737f..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/IntlCaster.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- * @author Jan Schädlich <jan.schaedlich@sensiolabs.de>
- *
- * @final
- */
-class IntlCaster
-{
-    public static function castMessageFormatter(\MessageFormatter $c, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            Caster::PREFIX_VIRTUAL.'locale' => $c->getLocale(),
-            Caster::PREFIX_VIRTUAL.'pattern' => $c->getPattern(),
-        ];
-
-        return self::castError($c, $a);
-    }
-
-    public static function castNumberFormatter(\NumberFormatter $c, array $a, Stub $stub, bool $isNested, int $filter = 0)
-    {
-        $a += [
-            Caster::PREFIX_VIRTUAL.'locale' => $c->getLocale(),
-            Caster::PREFIX_VIRTUAL.'pattern' => $c->getPattern(),
-        ];
-
-        if ($filter & Caster::EXCLUDE_VERBOSE) {
-            $stub->cut += 3;
-
-            return self::castError($c, $a);
-        }
-
-        $a += [
-            Caster::PREFIX_VIRTUAL.'attributes' => new EnumStub(
-                [
-                    'PARSE_INT_ONLY' => $c->getAttribute(\NumberFormatter::PARSE_INT_ONLY),
-                    'GROUPING_USED' => $c->getAttribute(\NumberFormatter::GROUPING_USED),
-                    'DECIMAL_ALWAYS_SHOWN' => $c->getAttribute(\NumberFormatter::DECIMAL_ALWAYS_SHOWN),
-                    'MAX_INTEGER_DIGITS' => $c->getAttribute(\NumberFormatter::MAX_INTEGER_DIGITS),
-                    'MIN_INTEGER_DIGITS' => $c->getAttribute(\NumberFormatter::MIN_INTEGER_DIGITS),
-                    'INTEGER_DIGITS' => $c->getAttribute(\NumberFormatter::INTEGER_DIGITS),
-                    'MAX_FRACTION_DIGITS' => $c->getAttribute(\NumberFormatter::MAX_FRACTION_DIGITS),
-                    'MIN_FRACTION_DIGITS' => $c->getAttribute(\NumberFormatter::MIN_FRACTION_DIGITS),
-                    'FRACTION_DIGITS' => $c->getAttribute(\NumberFormatter::FRACTION_DIGITS),
-                    'MULTIPLIER' => $c->getAttribute(\NumberFormatter::MULTIPLIER),
-                    'GROUPING_SIZE' => $c->getAttribute(\NumberFormatter::GROUPING_SIZE),
-                    'ROUNDING_MODE' => $c->getAttribute(\NumberFormatter::ROUNDING_MODE),
-                    'ROUNDING_INCREMENT' => $c->getAttribute(\NumberFormatter::ROUNDING_INCREMENT),
-                    'FORMAT_WIDTH' => $c->getAttribute(\NumberFormatter::FORMAT_WIDTH),
-                    'PADDING_POSITION' => $c->getAttribute(\NumberFormatter::PADDING_POSITION),
-                    'SECONDARY_GROUPING_SIZE' => $c->getAttribute(\NumberFormatter::SECONDARY_GROUPING_SIZE),
-                    'SIGNIFICANT_DIGITS_USED' => $c->getAttribute(\NumberFormatter::SIGNIFICANT_DIGITS_USED),
-                    'MIN_SIGNIFICANT_DIGITS' => $c->getAttribute(\NumberFormatter::MIN_SIGNIFICANT_DIGITS),
-                    'MAX_SIGNIFICANT_DIGITS' => $c->getAttribute(\NumberFormatter::MAX_SIGNIFICANT_DIGITS),
-                    'LENIENT_PARSE' => $c->getAttribute(\NumberFormatter::LENIENT_PARSE),
-                ]
-            ),
-            Caster::PREFIX_VIRTUAL.'text_attributes' => new EnumStub(
-                [
-                    'POSITIVE_PREFIX' => $c->getTextAttribute(\NumberFormatter::POSITIVE_PREFIX),
-                    'POSITIVE_SUFFIX' => $c->getTextAttribute(\NumberFormatter::POSITIVE_SUFFIX),
-                    'NEGATIVE_PREFIX' => $c->getTextAttribute(\NumberFormatter::NEGATIVE_PREFIX),
-                    'NEGATIVE_SUFFIX' => $c->getTextAttribute(\NumberFormatter::NEGATIVE_SUFFIX),
-                    'PADDING_CHARACTER' => $c->getTextAttribute(\NumberFormatter::PADDING_CHARACTER),
-                    'CURRENCY_CODE' => $c->getTextAttribute(\NumberFormatter::CURRENCY_CODE),
-                    'DEFAULT_RULESET' => $c->getTextAttribute(\NumberFormatter::DEFAULT_RULESET),
-                    'PUBLIC_RULESETS' => $c->getTextAttribute(\NumberFormatter::PUBLIC_RULESETS),
-                ]
-            ),
-            Caster::PREFIX_VIRTUAL.'symbols' => new EnumStub(
-                [
-                    'DECIMAL_SEPARATOR_SYMBOL' => $c->getSymbol(\NumberFormatter::DECIMAL_SEPARATOR_SYMBOL),
-                    'GROUPING_SEPARATOR_SYMBOL' => $c->getSymbol(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL),
-                    'PATTERN_SEPARATOR_SYMBOL' => $c->getSymbol(\NumberFormatter::PATTERN_SEPARATOR_SYMBOL),
-                    'PERCENT_SYMBOL' => $c->getSymbol(\NumberFormatter::PERCENT_SYMBOL),
-                    'ZERO_DIGIT_SYMBOL' => $c->getSymbol(\NumberFormatter::ZERO_DIGIT_SYMBOL),
-                    'DIGIT_SYMBOL' => $c->getSymbol(\NumberFormatter::DIGIT_SYMBOL),
-                    'MINUS_SIGN_SYMBOL' => $c->getSymbol(\NumberFormatter::MINUS_SIGN_SYMBOL),
-                    'PLUS_SIGN_SYMBOL' => $c->getSymbol(\NumberFormatter::PLUS_SIGN_SYMBOL),
-                    'CURRENCY_SYMBOL' => $c->getSymbol(\NumberFormatter::CURRENCY_SYMBOL),
-                    'INTL_CURRENCY_SYMBOL' => $c->getSymbol(\NumberFormatter::INTL_CURRENCY_SYMBOL),
-                    'MONETARY_SEPARATOR_SYMBOL' => $c->getSymbol(\NumberFormatter::MONETARY_SEPARATOR_SYMBOL),
-                    'EXPONENTIAL_SYMBOL' => $c->getSymbol(\NumberFormatter::EXPONENTIAL_SYMBOL),
-                    'PERMILL_SYMBOL' => $c->getSymbol(\NumberFormatter::PERMILL_SYMBOL),
-                    'PAD_ESCAPE_SYMBOL' => $c->getSymbol(\NumberFormatter::PAD_ESCAPE_SYMBOL),
-                    'INFINITY_SYMBOL' => $c->getSymbol(\NumberFormatter::INFINITY_SYMBOL),
-                    'NAN_SYMBOL' => $c->getSymbol(\NumberFormatter::NAN_SYMBOL),
-                    'SIGNIFICANT_DIGIT_SYMBOL' => $c->getSymbol(\NumberFormatter::SIGNIFICANT_DIGIT_SYMBOL),
-                    'MONETARY_GROUPING_SEPARATOR_SYMBOL' => $c->getSymbol(\NumberFormatter::MONETARY_GROUPING_SEPARATOR_SYMBOL),
-                ]
-             ),
-        ];
-
-        return self::castError($c, $a);
-    }
-
-    public static function castIntlTimeZone(\IntlTimeZone $c, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            Caster::PREFIX_VIRTUAL.'display_name' => $c->getDisplayName(),
-            Caster::PREFIX_VIRTUAL.'id' => $c->getID(),
-            Caster::PREFIX_VIRTUAL.'raw_offset' => $c->getRawOffset(),
-        ];
-
-        if ($c->useDaylightTime()) {
-            $a += [
-                Caster::PREFIX_VIRTUAL.'dst_savings' => $c->getDSTSavings(),
-            ];
-        }
-
-        return self::castError($c, $a);
-    }
-
-    public static function castIntlCalendar(\IntlCalendar $c, array $a, Stub $stub, bool $isNested, int $filter = 0)
-    {
-        $a += [
-            Caster::PREFIX_VIRTUAL.'type' => $c->getType(),
-            Caster::PREFIX_VIRTUAL.'first_day_of_week' => $c->getFirstDayOfWeek(),
-            Caster::PREFIX_VIRTUAL.'minimal_days_in_first_week' => $c->getMinimalDaysInFirstWeek(),
-            Caster::PREFIX_VIRTUAL.'repeated_wall_time_option' => $c->getRepeatedWallTimeOption(),
-            Caster::PREFIX_VIRTUAL.'skipped_wall_time_option' => $c->getSkippedWallTimeOption(),
-            Caster::PREFIX_VIRTUAL.'time' => $c->getTime(),
-            Caster::PREFIX_VIRTUAL.'in_daylight_time' => $c->inDaylightTime(),
-            Caster::PREFIX_VIRTUAL.'is_lenient' => $c->isLenient(),
-            Caster::PREFIX_VIRTUAL.'time_zone' => ($filter & Caster::EXCLUDE_VERBOSE) ? new CutStub($c->getTimeZone()) : $c->getTimeZone(),
-        ];
-
-        return self::castError($c, $a);
-    }
-
-    public static function castIntlDateFormatter(\IntlDateFormatter $c, array $a, Stub $stub, bool $isNested, int $filter = 0)
-    {
-        $a += [
-            Caster::PREFIX_VIRTUAL.'locale' => $c->getLocale(),
-            Caster::PREFIX_VIRTUAL.'pattern' => $c->getPattern(),
-            Caster::PREFIX_VIRTUAL.'calendar' => $c->getCalendar(),
-            Caster::PREFIX_VIRTUAL.'time_zone_id' => $c->getTimeZoneId(),
-            Caster::PREFIX_VIRTUAL.'time_type' => $c->getTimeType(),
-            Caster::PREFIX_VIRTUAL.'date_type' => $c->getDateType(),
-            Caster::PREFIX_VIRTUAL.'calendar_object' => ($filter & Caster::EXCLUDE_VERBOSE) ? new CutStub($c->getCalendarObject()) : $c->getCalendarObject(),
-            Caster::PREFIX_VIRTUAL.'time_zone' => ($filter & Caster::EXCLUDE_VERBOSE) ? new CutStub($c->getTimeZone()) : $c->getTimeZone(),
-        ];
-
-        return self::castError($c, $a);
-    }
-
-    private static function castError(object $c, array $a): array
-    {
-        if ($errorCode = $c->getErrorCode()) {
-            $a += [
-                Caster::PREFIX_VIRTUAL.'error_code' => $errorCode,
-                Caster::PREFIX_VIRTUAL.'error_message' => $c->getErrorMessage(),
-            ];
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/LinkStub.php b/vendor/symfony/var-dumper/Caster/LinkStub.php
deleted file mode 100644
index 0aa076a2658468474b69f9321d969534d399fa65..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/LinkStub.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-/**
- * Represents a file or a URL.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class LinkStub extends ConstStub
-{
-    public $inVendor = false;
-
-    private static $vendorRoots;
-    private static $composerRoots;
-
-    public function __construct($label, int $line = 0, $href = null)
-    {
-        $this->value = $label;
-
-        if (null === $href) {
-            $href = $label;
-        }
-        if (!\is_string($href)) {
-            return;
-        }
-        if (0 === strpos($href, 'file://')) {
-            if ($href === $label) {
-                $label = substr($label, 7);
-            }
-            $href = substr($href, 7);
-        } elseif (false !== strpos($href, '://')) {
-            $this->attr['href'] = $href;
-
-            return;
-        }
-        if (!is_file($href)) {
-            return;
-        }
-        if ($line) {
-            $this->attr['line'] = $line;
-        }
-        if ($label !== $this->attr['file'] = realpath($href) ?: $href) {
-            return;
-        }
-        if ($composerRoot = $this->getComposerRoot($href, $this->inVendor)) {
-            $this->attr['ellipsis'] = \strlen($href) - \strlen($composerRoot) + 1;
-            $this->attr['ellipsis-type'] = 'path';
-            $this->attr['ellipsis-tail'] = 1 + ($this->inVendor ? 2 + \strlen(implode('', \array_slice(explode(\DIRECTORY_SEPARATOR, substr($href, 1 - $this->attr['ellipsis'])), 0, 2))) : 0);
-        } elseif (3 < \count($ellipsis = explode(\DIRECTORY_SEPARATOR, $href))) {
-            $this->attr['ellipsis'] = 2 + \strlen(implode('', \array_slice($ellipsis, -2)));
-            $this->attr['ellipsis-type'] = 'path';
-            $this->attr['ellipsis-tail'] = 1;
-        }
-    }
-
-    private function getComposerRoot(string $file, bool &$inVendor)
-    {
-        if (null === self::$vendorRoots) {
-            self::$vendorRoots = [];
-
-            foreach (get_declared_classes() as $class) {
-                if ('C' === $class[0] && 0 === strpos($class, 'ComposerAutoloaderInit')) {
-                    $r = new \ReflectionClass($class);
-                    $v = \dirname($r->getFileName(), 2);
-                    if (is_file($v.'/composer/installed.json')) {
-                        self::$vendorRoots[] = $v.\DIRECTORY_SEPARATOR;
-                    }
-                }
-            }
-        }
-        $inVendor = false;
-
-        if (isset(self::$composerRoots[$dir = \dirname($file)])) {
-            return self::$composerRoots[$dir];
-        }
-
-        foreach (self::$vendorRoots as $root) {
-            if ($inVendor = 0 === strpos($file, $root)) {
-                return $root;
-            }
-        }
-
-        $parent = $dir;
-        while (!@is_file($parent.'/composer.json')) {
-            if (!@file_exists($parent)) {
-                // open_basedir restriction in effect
-                break;
-            }
-            if ($parent === \dirname($parent)) {
-                return self::$composerRoots[$dir] = false;
-            }
-
-            $parent = \dirname($parent);
-        }
-
-        return self::$composerRoots[$dir] = $parent.\DIRECTORY_SEPARATOR;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/MemcachedCaster.php b/vendor/symfony/var-dumper/Caster/MemcachedCaster.php
deleted file mode 100644
index 111b0607e9356d9f9bd3d707513e277dfcde5454..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/MemcachedCaster.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * @author Jan Schädlich <jan.schaedlich@sensiolabs.de>
- *
- * @final
- */
-class MemcachedCaster
-{
-    private static $optionConstants;
-    private static $defaultOptions;
-
-    public static function castMemcached(\Memcached $c, array $a, Stub $stub, bool $isNested)
-    {
-        $a += [
-            Caster::PREFIX_VIRTUAL.'servers' => $c->getServerList(),
-            Caster::PREFIX_VIRTUAL.'options' => new EnumStub(
-                self::getNonDefaultOptions($c)
-            ),
-        ];
-
-        return $a;
-    }
-
-    private static function getNonDefaultOptions(\Memcached $c): array
-    {
-        self::$defaultOptions = self::$defaultOptions ?? self::discoverDefaultOptions();
-        self::$optionConstants = self::$optionConstants ?? self::getOptionConstants();
-
-        $nonDefaultOptions = [];
-        foreach (self::$optionConstants as $constantKey => $value) {
-            if (self::$defaultOptions[$constantKey] !== $option = $c->getOption($value)) {
-                $nonDefaultOptions[$constantKey] = $option;
-            }
-        }
-
-        return $nonDefaultOptions;
-    }
-
-    private static function discoverDefaultOptions(): array
-    {
-        $defaultMemcached = new \Memcached();
-        $defaultMemcached->addServer('127.0.0.1', 11211);
-
-        $defaultOptions = [];
-        self::$optionConstants = self::$optionConstants ?? self::getOptionConstants();
-
-        foreach (self::$optionConstants as $constantKey => $value) {
-            $defaultOptions[$constantKey] = $defaultMemcached->getOption($value);
-        }
-
-        return $defaultOptions;
-    }
-
-    private static function getOptionConstants(): array
-    {
-        $reflectedMemcached = new \ReflectionClass(\Memcached::class);
-
-        $optionConstants = [];
-        foreach ($reflectedMemcached->getConstants() as $constantKey => $value) {
-            if (0 === strpos($constantKey, 'OPT_')) {
-                $optionConstants[$constantKey] = $value;
-            }
-        }
-
-        return $optionConstants;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/PdoCaster.php b/vendor/symfony/var-dumper/Caster/PdoCaster.php
deleted file mode 100644
index 4ba302b3893a8a919c0bfae381d56e928e7e7ccc..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/PdoCaster.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts PDO related classes to array representation.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class PdoCaster
-{
-    private static $pdoAttributes = [
-        'CASE' => [
-            \PDO::CASE_LOWER => 'LOWER',
-            \PDO::CASE_NATURAL => 'NATURAL',
-            \PDO::CASE_UPPER => 'UPPER',
-        ],
-        'ERRMODE' => [
-            \PDO::ERRMODE_SILENT => 'SILENT',
-            \PDO::ERRMODE_WARNING => 'WARNING',
-            \PDO::ERRMODE_EXCEPTION => 'EXCEPTION',
-        ],
-        'TIMEOUT',
-        'PREFETCH',
-        'AUTOCOMMIT',
-        'PERSISTENT',
-        'DRIVER_NAME',
-        'SERVER_INFO',
-        'ORACLE_NULLS' => [
-            \PDO::NULL_NATURAL => 'NATURAL',
-            \PDO::NULL_EMPTY_STRING => 'EMPTY_STRING',
-            \PDO::NULL_TO_STRING => 'TO_STRING',
-        ],
-        'CLIENT_VERSION',
-        'SERVER_VERSION',
-        'STATEMENT_CLASS',
-        'EMULATE_PREPARES',
-        'CONNECTION_STATUS',
-        'STRINGIFY_FETCHES',
-        'DEFAULT_FETCH_MODE' => [
-            \PDO::FETCH_ASSOC => 'ASSOC',
-            \PDO::FETCH_BOTH => 'BOTH',
-            \PDO::FETCH_LAZY => 'LAZY',
-            \PDO::FETCH_NUM => 'NUM',
-            \PDO::FETCH_OBJ => 'OBJ',
-        ],
-    ];
-
-    public static function castPdo(\PDO $c, array $a, Stub $stub, bool $isNested)
-    {
-        $attr = [];
-        $errmode = $c->getAttribute(\PDO::ATTR_ERRMODE);
-        $c->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
-
-        foreach (self::$pdoAttributes as $k => $v) {
-            if (!isset($k[0])) {
-                $k = $v;
-                $v = [];
-            }
-
-            try {
-                $attr[$k] = 'ERRMODE' === $k ? $errmode : $c->getAttribute(\constant('PDO::ATTR_'.$k));
-                if ($v && isset($v[$attr[$k]])) {
-                    $attr[$k] = new ConstStub($v[$attr[$k]], $attr[$k]);
-                }
-            } catch (\Exception $e) {
-            }
-        }
-        if (isset($attr[$k = 'STATEMENT_CLASS'][1])) {
-            if ($attr[$k][1]) {
-                $attr[$k][1] = new ArgsStub($attr[$k][1], '__construct', $attr[$k][0]);
-            }
-            $attr[$k][0] = new ClassStub($attr[$k][0]);
-        }
-
-        $prefix = Caster::PREFIX_VIRTUAL;
-        $a += [
-            $prefix.'inTransaction' => method_exists($c, 'inTransaction'),
-            $prefix.'errorInfo' => $c->errorInfo(),
-            $prefix.'attributes' => new EnumStub($attr),
-        ];
-
-        if ($a[$prefix.'inTransaction']) {
-            $a[$prefix.'inTransaction'] = $c->inTransaction();
-        } else {
-            unset($a[$prefix.'inTransaction']);
-        }
-
-        if (!isset($a[$prefix.'errorInfo'][1], $a[$prefix.'errorInfo'][2])) {
-            unset($a[$prefix.'errorInfo']);
-        }
-
-        $c->setAttribute(\PDO::ATTR_ERRMODE, $errmode);
-
-        return $a;
-    }
-
-    public static function castPdoStatement(\PDOStatement $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-        $a[$prefix.'errorInfo'] = $c->errorInfo();
-
-        if (!isset($a[$prefix.'errorInfo'][1], $a[$prefix.'errorInfo'][2])) {
-            unset($a[$prefix.'errorInfo']);
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/PgSqlCaster.php b/vendor/symfony/var-dumper/Caster/PgSqlCaster.php
deleted file mode 100644
index c153cf9fd6a4bd25ffad88781819f0c303a78a78..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/PgSqlCaster.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts pqsql resources to array representation.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class PgSqlCaster
-{
-    private static $paramCodes = [
-        'server_encoding',
-        'client_encoding',
-        'is_superuser',
-        'session_authorization',
-        'DateStyle',
-        'TimeZone',
-        'IntervalStyle',
-        'integer_datetimes',
-        'application_name',
-        'standard_conforming_strings',
-    ];
-
-    private static $transactionStatus = [
-        \PGSQL_TRANSACTION_IDLE => 'PGSQL_TRANSACTION_IDLE',
-        \PGSQL_TRANSACTION_ACTIVE => 'PGSQL_TRANSACTION_ACTIVE',
-        \PGSQL_TRANSACTION_INTRANS => 'PGSQL_TRANSACTION_INTRANS',
-        \PGSQL_TRANSACTION_INERROR => 'PGSQL_TRANSACTION_INERROR',
-        \PGSQL_TRANSACTION_UNKNOWN => 'PGSQL_TRANSACTION_UNKNOWN',
-    ];
-
-    private static $resultStatus = [
-        \PGSQL_EMPTY_QUERY => 'PGSQL_EMPTY_QUERY',
-        \PGSQL_COMMAND_OK => 'PGSQL_COMMAND_OK',
-        \PGSQL_TUPLES_OK => 'PGSQL_TUPLES_OK',
-        \PGSQL_COPY_OUT => 'PGSQL_COPY_OUT',
-        \PGSQL_COPY_IN => 'PGSQL_COPY_IN',
-        \PGSQL_BAD_RESPONSE => 'PGSQL_BAD_RESPONSE',
-        \PGSQL_NONFATAL_ERROR => 'PGSQL_NONFATAL_ERROR',
-        \PGSQL_FATAL_ERROR => 'PGSQL_FATAL_ERROR',
-    ];
-
-    private static $diagCodes = [
-        'severity' => \PGSQL_DIAG_SEVERITY,
-        'sqlstate' => \PGSQL_DIAG_SQLSTATE,
-        'message' => \PGSQL_DIAG_MESSAGE_PRIMARY,
-        'detail' => \PGSQL_DIAG_MESSAGE_DETAIL,
-        'hint' => \PGSQL_DIAG_MESSAGE_HINT,
-        'statement position' => \PGSQL_DIAG_STATEMENT_POSITION,
-        'internal position' => \PGSQL_DIAG_INTERNAL_POSITION,
-        'internal query' => \PGSQL_DIAG_INTERNAL_QUERY,
-        'context' => \PGSQL_DIAG_CONTEXT,
-        'file' => \PGSQL_DIAG_SOURCE_FILE,
-        'line' => \PGSQL_DIAG_SOURCE_LINE,
-        'function' => \PGSQL_DIAG_SOURCE_FUNCTION,
-    ];
-
-    public static function castLargeObject($lo, array $a, Stub $stub, bool $isNested)
-    {
-        $a['seek position'] = pg_lo_tell($lo);
-
-        return $a;
-    }
-
-    public static function castLink($link, array $a, Stub $stub, bool $isNested)
-    {
-        $a['status'] = pg_connection_status($link);
-        $a['status'] = new ConstStub(\PGSQL_CONNECTION_OK === $a['status'] ? 'PGSQL_CONNECTION_OK' : 'PGSQL_CONNECTION_BAD', $a['status']);
-        $a['busy'] = pg_connection_busy($link);
-
-        $a['transaction'] = pg_transaction_status($link);
-        if (isset(self::$transactionStatus[$a['transaction']])) {
-            $a['transaction'] = new ConstStub(self::$transactionStatus[$a['transaction']], $a['transaction']);
-        }
-
-        $a['pid'] = pg_get_pid($link);
-        $a['last error'] = pg_last_error($link);
-        $a['last notice'] = pg_last_notice($link);
-        $a['host'] = pg_host($link);
-        $a['port'] = pg_port($link);
-        $a['dbname'] = pg_dbname($link);
-        $a['options'] = pg_options($link);
-        $a['version'] = pg_version($link);
-
-        foreach (self::$paramCodes as $v) {
-            if (false !== $s = pg_parameter_status($link, $v)) {
-                $a['param'][$v] = $s;
-            }
-        }
-
-        $a['param']['client_encoding'] = pg_client_encoding($link);
-        $a['param'] = new EnumStub($a['param']);
-
-        return $a;
-    }
-
-    public static function castResult($result, array $a, Stub $stub, bool $isNested)
-    {
-        $a['num rows'] = pg_num_rows($result);
-        $a['status'] = pg_result_status($result);
-        if (isset(self::$resultStatus[$a['status']])) {
-            $a['status'] = new ConstStub(self::$resultStatus[$a['status']], $a['status']);
-        }
-        $a['command-completion tag'] = pg_result_status($result, \PGSQL_STATUS_STRING);
-
-        if (-1 === $a['num rows']) {
-            foreach (self::$diagCodes as $k => $v) {
-                $a['error'][$k] = pg_result_error_field($result, $v);
-            }
-        }
-
-        $a['affected rows'] = pg_affected_rows($result);
-        $a['last OID'] = pg_last_oid($result);
-
-        $fields = pg_num_fields($result);
-
-        for ($i = 0; $i < $fields; ++$i) {
-            $field = [
-                'name' => pg_field_name($result, $i),
-                'table' => sprintf('%s (OID: %s)', pg_field_table($result, $i), pg_field_table($result, $i, true)),
-                'type' => sprintf('%s (OID: %s)', pg_field_type($result, $i), pg_field_type_oid($result, $i)),
-                'nullable' => (bool) pg_field_is_null($result, $i),
-                'storage' => pg_field_size($result, $i).' bytes',
-                'display' => pg_field_prtlen($result, $i).' chars',
-            ];
-            if (' (OID: )' === $field['table']) {
-                $field['table'] = null;
-            }
-            if ('-1 bytes' === $field['storage']) {
-                $field['storage'] = 'variable size';
-            } elseif ('1 bytes' === $field['storage']) {
-                $field['storage'] = '1 byte';
-            }
-            if ('1 chars' === $field['display']) {
-                $field['display'] = '1 char';
-            }
-            $a['fields'][] = new EnumStub($field);
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php b/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php
deleted file mode 100644
index e7120191fec108ecbaeabe32a402da0b43d0a0eb..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use ProxyManager\Proxy\ProxyInterface;
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class ProxyManagerCaster
-{
-    public static function castProxy(ProxyInterface $c, array $a, Stub $stub, bool $isNested)
-    {
-        if ($parent = get_parent_class($c)) {
-            $stub->class .= ' - '.$parent;
-        }
-        $stub->class .= '@proxy';
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/RdKafkaCaster.php b/vendor/symfony/var-dumper/Caster/RdKafkaCaster.php
deleted file mode 100644
index c3e4eb9f341c6930b61d9d730a858f806694ce45..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/RdKafkaCaster.php
+++ /dev/null
@@ -1,186 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use RdKafka\Conf;
-use RdKafka\Exception as RdKafkaException;
-use RdKafka\KafkaConsumer;
-use RdKafka\Message;
-use RdKafka\Metadata\Broker as BrokerMetadata;
-use RdKafka\Metadata\Collection as CollectionMetadata;
-use RdKafka\Metadata\Partition as PartitionMetadata;
-use RdKafka\Metadata\Topic as TopicMetadata;
-use RdKafka\Topic;
-use RdKafka\TopicConf;
-use RdKafka\TopicPartition;
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts RdKafka related classes to array representation.
- *
- * @author Romain Neutron <imprec@gmail.com>
- */
-class RdKafkaCaster
-{
-    public static function castKafkaConsumer(KafkaConsumer $c, array $a, Stub $stub, $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        try {
-            $assignment = $c->getAssignment();
-        } catch (RdKafkaException $e) {
-            $assignment = [];
-        }
-
-        $a += [
-            $prefix.'subscription' => $c->getSubscription(),
-            $prefix.'assignment' => $assignment,
-        ];
-
-        $a += self::extractMetadata($c);
-
-        return $a;
-    }
-
-    public static function castTopic(Topic $c, array $a, Stub $stub, $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'name' => $c->getName(),
-        ];
-
-        return $a;
-    }
-
-    public static function castTopicPartition(TopicPartition $c, array $a)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'offset' => $c->getOffset(),
-            $prefix.'partition' => $c->getPartition(),
-            $prefix.'topic' => $c->getTopic(),
-        ];
-
-        return $a;
-    }
-
-    public static function castMessage(Message $c, array $a, Stub $stub, $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'errstr' => $c->errstr(),
-        ];
-
-        return $a;
-    }
-
-    public static function castConf(Conf $c, array $a, Stub $stub, $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        foreach ($c->dump() as $key => $value) {
-            $a[$prefix.$key] = $value;
-        }
-
-        return $a;
-    }
-
-    public static function castTopicConf(TopicConf $c, array $a, Stub $stub, $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        foreach ($c->dump() as $key => $value) {
-            $a[$prefix.$key] = $value;
-        }
-
-        return $a;
-    }
-
-    public static function castRdKafka(\RdKafka $c, array $a, Stub $stub, $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'out_q_len' => $c->getOutQLen(),
-        ];
-
-        $a += self::extractMetadata($c);
-
-        return $a;
-    }
-
-    public static function castCollectionMetadata(CollectionMetadata $c, array $a, Stub $stub, $isNested)
-    {
-        $a += iterator_to_array($c);
-
-        return $a;
-    }
-
-    public static function castTopicMetadata(TopicMetadata $c, array $a, Stub $stub, $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'name' => $c->getTopic(),
-            $prefix.'partitions' => $c->getPartitions(),
-        ];
-
-        return $a;
-    }
-
-    public static function castPartitionMetadata(PartitionMetadata $c, array $a, Stub $stub, $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'id' => $c->getId(),
-            $prefix.'err' => $c->getErr(),
-            $prefix.'leader' => $c->getLeader(),
-        ];
-
-        return $a;
-    }
-
-    public static function castBrokerMetadata(BrokerMetadata $c, array $a, Stub $stub, $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'id' => $c->getId(),
-            $prefix.'host' => $c->getHost(),
-            $prefix.'port' => $c->getPort(),
-        ];
-
-        return $a;
-    }
-
-    private static function extractMetadata($c)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        try {
-            $m = $c->getMetadata(true, null, 500);
-        } catch (RdKafkaException $e) {
-            return [];
-        }
-
-        return [
-            $prefix.'orig_broker_id' => $m->getOrigBrokerId(),
-            $prefix.'orig_broker_name' => $m->getOrigBrokerName(),
-            $prefix.'brokers' => $m->getBrokers(),
-            $prefix.'topics' => $m->getTopics(),
-        ];
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/RedisCaster.php b/vendor/symfony/var-dumper/Caster/RedisCaster.php
deleted file mode 100644
index a7ca8ec656cb64aa7b83c65035a91ebf956d1d35..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/RedisCaster.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts Redis class from ext-redis to array representation.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class RedisCaster
-{
-    private static $serializer = [
-        \Redis::SERIALIZER_NONE => 'NONE',
-        \Redis::SERIALIZER_PHP => 'PHP',
-        2 => 'IGBINARY', // Optional Redis::SERIALIZER_IGBINARY
-    ];
-
-    private static $mode = [
-        \Redis::ATOMIC => 'ATOMIC',
-        \Redis::MULTI => 'MULTI',
-        \Redis::PIPELINE => 'PIPELINE',
-    ];
-
-    private static $compression = [
-        0 => 'NONE', // Redis::COMPRESSION_NONE
-        1 => 'LZF',  // Redis::COMPRESSION_LZF
-    ];
-
-    private static $failover = [
-        \RedisCluster::FAILOVER_NONE => 'NONE',
-        \RedisCluster::FAILOVER_ERROR => 'ERROR',
-        \RedisCluster::FAILOVER_DISTRIBUTE => 'DISTRIBUTE',
-        \RedisCluster::FAILOVER_DISTRIBUTE_SLAVES => 'DISTRIBUTE_SLAVES',
-    ];
-
-    public static function castRedis(\Redis $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        if (!$connected = $c->isConnected()) {
-            return $a + [
-                $prefix.'isConnected' => $connected,
-            ];
-        }
-
-        $mode = $c->getMode();
-
-        return $a + [
-            $prefix.'isConnected' => $connected,
-            $prefix.'host' => $c->getHost(),
-            $prefix.'port' => $c->getPort(),
-            $prefix.'auth' => $c->getAuth(),
-            $prefix.'mode' => isset(self::$mode[$mode]) ? new ConstStub(self::$mode[$mode], $mode) : $mode,
-            $prefix.'dbNum' => $c->getDbNum(),
-            $prefix.'timeout' => $c->getTimeout(),
-            $prefix.'lastError' => $c->getLastError(),
-            $prefix.'persistentId' => $c->getPersistentID(),
-            $prefix.'options' => self::getRedisOptions($c),
-        ];
-    }
-
-    public static function castRedisArray(\RedisArray $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        return $a + [
-            $prefix.'hosts' => $c->_hosts(),
-            $prefix.'function' => ClassStub::wrapCallable($c->_function()),
-            $prefix.'lastError' => $c->getLastError(),
-            $prefix.'options' => self::getRedisOptions($c),
-        ];
-    }
-
-    public static function castRedisCluster(\RedisCluster $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-        $failover = $c->getOption(\RedisCluster::OPT_SLAVE_FAILOVER);
-
-        $a += [
-            $prefix.'_masters' => $c->_masters(),
-            $prefix.'_redir' => $c->_redir(),
-            $prefix.'mode' => new ConstStub($c->getMode() ? 'MULTI' : 'ATOMIC', $c->getMode()),
-            $prefix.'lastError' => $c->getLastError(),
-            $prefix.'options' => self::getRedisOptions($c, [
-                'SLAVE_FAILOVER' => isset(self::$failover[$failover]) ? new ConstStub(self::$failover[$failover], $failover) : $failover,
-            ]),
-        ];
-
-        return $a;
-    }
-
-    /**
-     * @param \Redis|\RedisArray|\RedisCluster $redis
-     */
-    private static function getRedisOptions($redis, array $options = []): EnumStub
-    {
-        $serializer = $redis->getOption(\Redis::OPT_SERIALIZER);
-        if (\is_array($serializer)) {
-            foreach ($serializer as &$v) {
-                if (isset(self::$serializer[$v])) {
-                    $v = new ConstStub(self::$serializer[$v], $v);
-                }
-            }
-        } elseif (isset(self::$serializer[$serializer])) {
-            $serializer = new ConstStub(self::$serializer[$serializer], $serializer);
-        }
-
-        $compression = \defined('Redis::OPT_COMPRESSION') ? $redis->getOption(\Redis::OPT_COMPRESSION) : 0;
-        if (\is_array($compression)) {
-            foreach ($compression as &$v) {
-                if (isset(self::$compression[$v])) {
-                    $v = new ConstStub(self::$compression[$v], $v);
-                }
-            }
-        } elseif (isset(self::$compression[$compression])) {
-            $compression = new ConstStub(self::$compression[$compression], $compression);
-        }
-
-        $retry = \defined('Redis::OPT_SCAN') ? $redis->getOption(\Redis::OPT_SCAN) : 0;
-        if (\is_array($retry)) {
-            foreach ($retry as &$v) {
-                $v = new ConstStub($v ? 'RETRY' : 'NORETRY', $v);
-            }
-        } else {
-            $retry = new ConstStub($retry ? 'RETRY' : 'NORETRY', $retry);
-        }
-
-        $options += [
-            'TCP_KEEPALIVE' => \defined('Redis::OPT_TCP_KEEPALIVE') ? $redis->getOption(\Redis::OPT_TCP_KEEPALIVE) : 0,
-            'READ_TIMEOUT' => $redis->getOption(\Redis::OPT_READ_TIMEOUT),
-            'COMPRESSION' => $compression,
-            'SERIALIZER' => $serializer,
-            'PREFIX' => $redis->getOption(\Redis::OPT_PREFIX),
-            'SCAN' => $retry,
-        ];
-
-        return new EnumStub($options);
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php
deleted file mode 100644
index d9b43ae730dc11b63719aec7199522cee75049f5..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php
+++ /dev/null
@@ -1,392 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts Reflector related classes to array representation.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class ReflectionCaster
-{
-    const UNSET_CLOSURE_FILE_INFO = ['Closure' => __CLASS__.'::unsetClosureFileInfo'];
-
-    private static $extraMap = [
-        'docComment' => 'getDocComment',
-        'extension' => 'getExtensionName',
-        'isDisabled' => 'isDisabled',
-        'isDeprecated' => 'isDeprecated',
-        'isInternal' => 'isInternal',
-        'isUserDefined' => 'isUserDefined',
-        'isGenerator' => 'isGenerator',
-        'isVariadic' => 'isVariadic',
-    ];
-
-    public static function castClosure(\Closure $c, array $a, Stub $stub, bool $isNested, int $filter = 0)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-        $c = new \ReflectionFunction($c);
-
-        $a = static::castFunctionAbstract($c, $a, $stub, $isNested, $filter);
-
-        if (false === strpos($c->name, '{closure}')) {
-            $stub->class = isset($a[$prefix.'class']) ? $a[$prefix.'class']->value.'::'.$c->name : $c->name;
-            unset($a[$prefix.'class']);
-        }
-        unset($a[$prefix.'extra']);
-
-        $stub->class .= self::getSignature($a);
-
-        if ($f = $c->getFileName()) {
-            $stub->attr['file'] = $f;
-            $stub->attr['line'] = $c->getStartLine();
-        }
-
-        unset($a[$prefix.'parameters']);
-
-        if ($filter & Caster::EXCLUDE_VERBOSE) {
-            $stub->cut += ($c->getFileName() ? 2 : 0) + \count($a);
-
-            return [];
-        }
-
-        if ($f) {
-            $a[$prefix.'file'] = new LinkStub($f, $c->getStartLine());
-            $a[$prefix.'line'] = $c->getStartLine().' to '.$c->getEndLine();
-        }
-
-        return $a;
-    }
-
-    public static function unsetClosureFileInfo(\Closure $c, array $a)
-    {
-        unset($a[Caster::PREFIX_VIRTUAL.'file'], $a[Caster::PREFIX_VIRTUAL.'line']);
-
-        return $a;
-    }
-
-    public static function castGenerator(\Generator $c, array $a, Stub $stub, bool $isNested)
-    {
-        // Cannot create ReflectionGenerator based on a terminated Generator
-        try {
-            $reflectionGenerator = new \ReflectionGenerator($c);
-        } catch (\Exception $e) {
-            $a[Caster::PREFIX_VIRTUAL.'closed'] = true;
-
-            return $a;
-        }
-
-        return self::castReflectionGenerator($reflectionGenerator, $a, $stub, $isNested);
-    }
-
-    public static function castType(\ReflectionType $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        $a += [
-            $prefix.'name' => $c instanceof \ReflectionNamedType ? $c->getName() : (string) $c,
-            $prefix.'allowsNull' => $c->allowsNull(),
-            $prefix.'isBuiltin' => $c->isBuiltin(),
-        ];
-
-        return $a;
-    }
-
-    public static function castReflectionGenerator(\ReflectionGenerator $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        if ($c->getThis()) {
-            $a[$prefix.'this'] = new CutStub($c->getThis());
-        }
-        $function = $c->getFunction();
-        $frame = [
-            'class' => isset($function->class) ? $function->class : null,
-            'type' => isset($function->class) ? ($function->isStatic() ? '::' : '->') : null,
-            'function' => $function->name,
-            'file' => $c->getExecutingFile(),
-            'line' => $c->getExecutingLine(),
-        ];
-        if ($trace = $c->getTrace(\DEBUG_BACKTRACE_IGNORE_ARGS)) {
-            $function = new \ReflectionGenerator($c->getExecutingGenerator());
-            array_unshift($trace, [
-                'function' => 'yield',
-                'file' => $function->getExecutingFile(),
-                'line' => $function->getExecutingLine() - 1,
-            ]);
-            $trace[] = $frame;
-            $a[$prefix.'trace'] = new TraceStub($trace, false, 0, -1, -1);
-        } else {
-            $function = new FrameStub($frame, false, true);
-            $function = ExceptionCaster::castFrameStub($function, [], $function, true);
-            $a[$prefix.'executing'] = $function[$prefix.'src'];
-        }
-
-        $a[Caster::PREFIX_VIRTUAL.'closed'] = false;
-
-        return $a;
-    }
-
-    public static function castClass(\ReflectionClass $c, array $a, Stub $stub, bool $isNested, int $filter = 0)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        if ($n = \Reflection::getModifierNames($c->getModifiers())) {
-            $a[$prefix.'modifiers'] = implode(' ', $n);
-        }
-
-        self::addMap($a, $c, [
-            'extends' => 'getParentClass',
-            'implements' => 'getInterfaceNames',
-            'constants' => 'getConstants',
-        ]);
-
-        foreach ($c->getProperties() as $n) {
-            $a[$prefix.'properties'][$n->name] = $n;
-        }
-
-        foreach ($c->getMethods() as $n) {
-            $a[$prefix.'methods'][$n->name] = $n;
-        }
-
-        if (!($filter & Caster::EXCLUDE_VERBOSE) && !$isNested) {
-            self::addExtra($a, $c);
-        }
-
-        return $a;
-    }
-
-    public static function castFunctionAbstract(\ReflectionFunctionAbstract $c, array $a, Stub $stub, bool $isNested, int $filter = 0)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        self::addMap($a, $c, [
-            'returnsReference' => 'returnsReference',
-            'returnType' => 'getReturnType',
-            'class' => 'getClosureScopeClass',
-            'this' => 'getClosureThis',
-        ]);
-
-        if (isset($a[$prefix.'returnType'])) {
-            $v = $a[$prefix.'returnType'];
-            $v = $v instanceof \ReflectionNamedType ? $v->getName() : (string) $v;
-            $a[$prefix.'returnType'] = new ClassStub($a[$prefix.'returnType']->allowsNull() ? '?'.$v : $v, [class_exists($v, false) || interface_exists($v, false) || trait_exists($v, false) ? $v : '', '']);
-        }
-        if (isset($a[$prefix.'class'])) {
-            $a[$prefix.'class'] = new ClassStub($a[$prefix.'class']);
-        }
-        if (isset($a[$prefix.'this'])) {
-            $a[$prefix.'this'] = new CutStub($a[$prefix.'this']);
-        }
-
-        foreach ($c->getParameters() as $v) {
-            $k = '$'.$v->name;
-            if ($v->isVariadic()) {
-                $k = '...'.$k;
-            }
-            if ($v->isPassedByReference()) {
-                $k = '&'.$k;
-            }
-            $a[$prefix.'parameters'][$k] = $v;
-        }
-        if (isset($a[$prefix.'parameters'])) {
-            $a[$prefix.'parameters'] = new EnumStub($a[$prefix.'parameters']);
-        }
-
-        if (!($filter & Caster::EXCLUDE_VERBOSE) && $v = $c->getStaticVariables()) {
-            foreach ($v as $k => &$v) {
-                if (\is_object($v)) {
-                    $a[$prefix.'use']['$'.$k] = new CutStub($v);
-                } else {
-                    $a[$prefix.'use']['$'.$k] = &$v;
-                }
-            }
-            unset($v);
-            $a[$prefix.'use'] = new EnumStub($a[$prefix.'use']);
-        }
-
-        if (!($filter & Caster::EXCLUDE_VERBOSE) && !$isNested) {
-            self::addExtra($a, $c);
-        }
-
-        return $a;
-    }
-
-    public static function castMethod(\ReflectionMethod $c, array $a, Stub $stub, bool $isNested)
-    {
-        $a[Caster::PREFIX_VIRTUAL.'modifiers'] = implode(' ', \Reflection::getModifierNames($c->getModifiers()));
-
-        return $a;
-    }
-
-    public static function castParameter(\ReflectionParameter $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        self::addMap($a, $c, [
-            'position' => 'getPosition',
-            'isVariadic' => 'isVariadic',
-            'byReference' => 'isPassedByReference',
-            'allowsNull' => 'allowsNull',
-        ]);
-
-        if ($v = $c->getType()) {
-            $a[$prefix.'typeHint'] = $v instanceof \ReflectionNamedType ? $v->getName() : (string) $v;
-        }
-
-        if (isset($a[$prefix.'typeHint'])) {
-            $v = $a[$prefix.'typeHint'];
-            $a[$prefix.'typeHint'] = new ClassStub($v, [class_exists($v, false) || interface_exists($v, false) || trait_exists($v, false) ? $v : '', '']);
-        } else {
-            unset($a[$prefix.'allowsNull']);
-        }
-
-        try {
-            $a[$prefix.'default'] = $v = $c->getDefaultValue();
-            if ($c->isDefaultValueConstant()) {
-                $a[$prefix.'default'] = new ConstStub($c->getDefaultValueConstantName(), $v);
-            }
-            if (null === $v) {
-                unset($a[$prefix.'allowsNull']);
-            }
-        } catch (\ReflectionException $e) {
-        }
-
-        return $a;
-    }
-
-    public static function castProperty(\ReflectionProperty $c, array $a, Stub $stub, bool $isNested)
-    {
-        $a[Caster::PREFIX_VIRTUAL.'modifiers'] = implode(' ', \Reflection::getModifierNames($c->getModifiers()));
-        self::addExtra($a, $c);
-
-        return $a;
-    }
-
-    public static function castReference(\ReflectionReference $c, array $a, Stub $stub, bool $isNested)
-    {
-        $a[Caster::PREFIX_VIRTUAL.'id'] = $c->getId();
-
-        return $a;
-    }
-
-    public static function castExtension(\ReflectionExtension $c, array $a, Stub $stub, bool $isNested)
-    {
-        self::addMap($a, $c, [
-            'version' => 'getVersion',
-            'dependencies' => 'getDependencies',
-            'iniEntries' => 'getIniEntries',
-            'isPersistent' => 'isPersistent',
-            'isTemporary' => 'isTemporary',
-            'constants' => 'getConstants',
-            'functions' => 'getFunctions',
-            'classes' => 'getClasses',
-        ]);
-
-        return $a;
-    }
-
-    public static function castZendExtension(\ReflectionZendExtension $c, array $a, Stub $stub, bool $isNested)
-    {
-        self::addMap($a, $c, [
-            'version' => 'getVersion',
-            'author' => 'getAuthor',
-            'copyright' => 'getCopyright',
-            'url' => 'getURL',
-        ]);
-
-        return $a;
-    }
-
-    public static function getSignature(array $a)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-        $signature = '';
-
-        if (isset($a[$prefix.'parameters'])) {
-            foreach ($a[$prefix.'parameters']->value as $k => $param) {
-                $signature .= ', ';
-                if ($type = $param->getType()) {
-                    if (!$type instanceof \ReflectionNamedType) {
-                        $signature .= $type.' ';
-                    } else {
-                        if (!$param->isOptional() && $param->allowsNull()) {
-                            $signature .= '?';
-                        }
-                        $signature .= substr(strrchr('\\'.$type->getName(), '\\'), 1).' ';
-                    }
-                }
-                $signature .= $k;
-
-                if (!$param->isDefaultValueAvailable()) {
-                    continue;
-                }
-                $v = $param->getDefaultValue();
-                $signature .= ' = ';
-
-                if ($param->isDefaultValueConstant()) {
-                    $signature .= substr(strrchr('\\'.$param->getDefaultValueConstantName(), '\\'), 1);
-                } elseif (null === $v) {
-                    $signature .= 'null';
-                } elseif (\is_array($v)) {
-                    $signature .= $v ? '[…'.\count($v).']' : '[]';
-                } elseif (\is_string($v)) {
-                    $signature .= 10 > \strlen($v) && false === strpos($v, '\\') ? "'{$v}'" : "'…".\strlen($v)."'";
-                } elseif (\is_bool($v)) {
-                    $signature .= $v ? 'true' : 'false';
-                } else {
-                    $signature .= $v;
-                }
-            }
-        }
-        $signature = (empty($a[$prefix.'returnsReference']) ? '' : '&').'('.substr($signature, 2).')';
-
-        if (isset($a[$prefix.'returnType'])) {
-            $signature .= ': '.substr(strrchr('\\'.$a[$prefix.'returnType'], '\\'), 1);
-        }
-
-        return $signature;
-    }
-
-    private static function addExtra(array &$a, \Reflector $c)
-    {
-        $x = isset($a[Caster::PREFIX_VIRTUAL.'extra']) ? $a[Caster::PREFIX_VIRTUAL.'extra']->value : [];
-
-        if (method_exists($c, 'getFileName') && $m = $c->getFileName()) {
-            $x['file'] = new LinkStub($m, $c->getStartLine());
-            $x['line'] = $c->getStartLine().' to '.$c->getEndLine();
-        }
-
-        self::addMap($x, $c, self::$extraMap, '');
-
-        if ($x) {
-            $a[Caster::PREFIX_VIRTUAL.'extra'] = new EnumStub($x);
-        }
-    }
-
-    private static function addMap(array &$a, \Reflector $c, array $map, string $prefix = Caster::PREFIX_VIRTUAL)
-    {
-        foreach ($map as $k => $m) {
-            if (\PHP_VERSION_ID >= 80000 && 'isDisabled' === $k) {
-                continue;
-            }
-
-            if (method_exists($c, $m) && false !== ($m = $c->$m()) && null !== $m) {
-                $a[$prefix.$k] = $m instanceof \Reflector ? $m->name : $m;
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/ResourceCaster.php b/vendor/symfony/var-dumper/Caster/ResourceCaster.php
deleted file mode 100644
index 6b2ed522364e7c4ffe8e864505f7df01cc532b0f..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/ResourceCaster.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts common resource types to array representation.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class ResourceCaster
-{
-    /**
-     * @param \CurlHandle|resource $h
-     *
-     * @return array
-     */
-    public static function castCurl($h, array $a, Stub $stub, bool $isNested)
-    {
-        return curl_getinfo($h);
-    }
-
-    public static function castDba($dba, array $a, Stub $stub, bool $isNested)
-    {
-        $list = dba_list();
-        $a['file'] = $list[(int) $dba];
-
-        return $a;
-    }
-
-    public static function castProcess($process, array $a, Stub $stub, bool $isNested)
-    {
-        return proc_get_status($process);
-    }
-
-    public static function castStream($stream, array $a, Stub $stub, bool $isNested)
-    {
-        $a = stream_get_meta_data($stream) + static::castStreamContext($stream, $a, $stub, $isNested);
-        if (isset($a['uri'])) {
-            $a['uri'] = new LinkStub($a['uri']);
-        }
-
-        return $a;
-    }
-
-    public static function castStreamContext($stream, array $a, Stub $stub, bool $isNested)
-    {
-        return @stream_context_get_params($stream) ?: $a;
-    }
-
-    public static function castGd($gd, array $a, Stub $stub, $isNested)
-    {
-        $a['size'] = imagesx($gd).'x'.imagesy($gd);
-        $a['trueColor'] = imageistruecolor($gd);
-
-        return $a;
-    }
-
-    public static function castMysqlLink($h, array $a, Stub $stub, bool $isNested)
-    {
-        $a['host'] = mysql_get_host_info($h);
-        $a['protocol'] = mysql_get_proto_info($h);
-        $a['server'] = mysql_get_server_info($h);
-
-        return $a;
-    }
-
-    public static function castOpensslX509($h, array $a, Stub $stub, bool $isNested)
-    {
-        $stub->cut = -1;
-        $info = openssl_x509_parse($h, false);
-
-        $pin = openssl_pkey_get_public($h);
-        $pin = openssl_pkey_get_details($pin)['key'];
-        $pin = \array_slice(explode("\n", $pin), 1, -2);
-        $pin = base64_decode(implode('', $pin));
-        $pin = base64_encode(hash('sha256', $pin, true));
-
-        $a += [
-            'subject' => new EnumStub(array_intersect_key($info['subject'], ['organizationName' => true, 'commonName' => true])),
-            'issuer' => new EnumStub(array_intersect_key($info['issuer'], ['organizationName' => true, 'commonName' => true])),
-            'expiry' => new ConstStub(date(\DateTime::ISO8601, $info['validTo_time_t']), $info['validTo_time_t']),
-            'fingerprint' => new EnumStub([
-                'md5' => new ConstStub(wordwrap(strtoupper(openssl_x509_fingerprint($h, 'md5')), 2, ':', true)),
-                'sha1' => new ConstStub(wordwrap(strtoupper(openssl_x509_fingerprint($h, 'sha1')), 2, ':', true)),
-                'sha256' => new ConstStub(wordwrap(strtoupper(openssl_x509_fingerprint($h, 'sha256')), 2, ':', true)),
-                'pin-sha256' => new ConstStub($pin),
-            ]),
-        ];
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/SplCaster.php b/vendor/symfony/var-dumper/Caster/SplCaster.php
deleted file mode 100644
index 49cca4fd0c058908fa40c90b7356d659dd1e5a6f..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/SplCaster.php
+++ /dev/null
@@ -1,245 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts SPL related classes to array representation.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class SplCaster
-{
-    private static $splFileObjectFlags = [
-        \SplFileObject::DROP_NEW_LINE => 'DROP_NEW_LINE',
-        \SplFileObject::READ_AHEAD => 'READ_AHEAD',
-        \SplFileObject::SKIP_EMPTY => 'SKIP_EMPTY',
-        \SplFileObject::READ_CSV => 'READ_CSV',
-    ];
-
-    public static function castArrayObject(\ArrayObject $c, array $a, Stub $stub, bool $isNested)
-    {
-        return self::castSplArray($c, $a, $stub, $isNested);
-    }
-
-    public static function castArrayIterator(\ArrayIterator $c, array $a, Stub $stub, bool $isNested)
-    {
-        return self::castSplArray($c, $a, $stub, $isNested);
-    }
-
-    public static function castHeap(\Iterator $c, array $a, Stub $stub, $isNested)
-    {
-        $a += [
-            Caster::PREFIX_VIRTUAL.'heap' => iterator_to_array(clone $c),
-        ];
-
-        return $a;
-    }
-
-    public static function castDoublyLinkedList(\SplDoublyLinkedList $c, array $a, Stub $stub, bool $isNested)
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-        $mode = $c->getIteratorMode();
-        $c->setIteratorMode(\SplDoublyLinkedList::IT_MODE_KEEP | $mode & ~\SplDoublyLinkedList::IT_MODE_DELETE);
-
-        $a += [
-            $prefix.'mode' => new ConstStub((($mode & \SplDoublyLinkedList::IT_MODE_LIFO) ? 'IT_MODE_LIFO' : 'IT_MODE_FIFO').' | '.(($mode & \SplDoublyLinkedList::IT_MODE_DELETE) ? 'IT_MODE_DELETE' : 'IT_MODE_KEEP'), $mode),
-            $prefix.'dllist' => iterator_to_array($c),
-        ];
-        $c->setIteratorMode($mode);
-
-        return $a;
-    }
-
-    public static function castFileInfo(\SplFileInfo $c, array $a, Stub $stub, bool $isNested)
-    {
-        static $map = [
-            'path' => 'getPath',
-            'filename' => 'getFilename',
-            'basename' => 'getBasename',
-            'pathname' => 'getPathname',
-            'extension' => 'getExtension',
-            'realPath' => 'getRealPath',
-            'aTime' => 'getATime',
-            'mTime' => 'getMTime',
-            'cTime' => 'getCTime',
-            'inode' => 'getInode',
-            'size' => 'getSize',
-            'perms' => 'getPerms',
-            'owner' => 'getOwner',
-            'group' => 'getGroup',
-            'type' => 'getType',
-            'writable' => 'isWritable',
-            'readable' => 'isReadable',
-            'executable' => 'isExecutable',
-            'file' => 'isFile',
-            'dir' => 'isDir',
-            'link' => 'isLink',
-            'linkTarget' => 'getLinkTarget',
-        ];
-
-        $prefix = Caster::PREFIX_VIRTUAL;
-        unset($a["\0SplFileInfo\0fileName"]);
-        unset($a["\0SplFileInfo\0pathName"]);
-
-        if (\PHP_VERSION_ID < 80000) {
-            if (false === $c->getPathname()) {
-                $a[$prefix.'âš '] = 'The parent constructor was not called: the object is in an invalid state';
-
-                return $a;
-            }
-        } else {
-            try {
-                $c->isReadable();
-            } catch (\RuntimeException $e) {
-                if ('Object not initialized' !== $e->getMessage()) {
-                    throw $e;
-                }
-
-                $a[$prefix.'âš '] = 'The parent constructor was not called: the object is in an invalid state';
-
-                return $a;
-            } catch (\Error $e) {
-                if ('Object not initialized' !== $e->getMessage()) {
-                    throw $e;
-                }
-
-                $a[$prefix.'âš '] = 'The parent constructor was not called: the object is in an invalid state';
-
-                return $a;
-            }
-        }
-
-        foreach ($map as $key => $accessor) {
-            try {
-                $a[$prefix.$key] = $c->$accessor();
-            } catch (\Exception $e) {
-            }
-        }
-
-        if (isset($a[$prefix.'realPath'])) {
-            $a[$prefix.'realPath'] = new LinkStub($a[$prefix.'realPath']);
-        }
-
-        if (isset($a[$prefix.'perms'])) {
-            $a[$prefix.'perms'] = new ConstStub(sprintf('0%o', $a[$prefix.'perms']), $a[$prefix.'perms']);
-        }
-
-        static $mapDate = ['aTime', 'mTime', 'cTime'];
-        foreach ($mapDate as $key) {
-            if (isset($a[$prefix.$key])) {
-                $a[$prefix.$key] = new ConstStub(date('Y-m-d H:i:s', $a[$prefix.$key]), $a[$prefix.$key]);
-            }
-        }
-
-        return $a;
-    }
-
-    public static function castFileObject(\SplFileObject $c, array $a, Stub $stub, bool $isNested)
-    {
-        static $map = [
-            'csvControl' => 'getCsvControl',
-            'flags' => 'getFlags',
-            'maxLineLen' => 'getMaxLineLen',
-            'fstat' => 'fstat',
-            'eof' => 'eof',
-            'key' => 'key',
-        ];
-
-        $prefix = Caster::PREFIX_VIRTUAL;
-
-        foreach ($map as $key => $accessor) {
-            try {
-                $a[$prefix.$key] = $c->$accessor();
-            } catch (\Exception $e) {
-            }
-        }
-
-        if (isset($a[$prefix.'flags'])) {
-            $flagsArray = [];
-            foreach (self::$splFileObjectFlags as $value => $name) {
-                if ($a[$prefix.'flags'] & $value) {
-                    $flagsArray[] = $name;
-                }
-            }
-            $a[$prefix.'flags'] = new ConstStub(implode('|', $flagsArray), $a[$prefix.'flags']);
-        }
-
-        if (isset($a[$prefix.'fstat'])) {
-            $a[$prefix.'fstat'] = new CutArrayStub($a[$prefix.'fstat'], ['dev', 'ino', 'nlink', 'rdev', 'blksize', 'blocks']);
-        }
-
-        return $a;
-    }
-
-    public static function castObjectStorage(\SplObjectStorage $c, array $a, Stub $stub, bool $isNested)
-    {
-        $storage = [];
-        unset($a[Caster::PREFIX_DYNAMIC."\0gcdata"]); // Don't hit https://bugs.php.net/65967
-        unset($a["\0SplObjectStorage\0storage"]);
-
-        $clone = clone $c;
-        foreach ($clone as $obj) {
-            $storage[] = [
-                'object' => $obj,
-                'info' => $clone->getInfo(),
-             ];
-        }
-
-        $a += [
-            Caster::PREFIX_VIRTUAL.'storage' => $storage,
-        ];
-
-        return $a;
-    }
-
-    public static function castOuterIterator(\OuterIterator $c, array $a, Stub $stub, bool $isNested)
-    {
-        $a[Caster::PREFIX_VIRTUAL.'innerIterator'] = $c->getInnerIterator();
-
-        return $a;
-    }
-
-    public static function castWeakReference(\WeakReference $c, array $a, Stub $stub, bool $isNested)
-    {
-        $a[Caster::PREFIX_VIRTUAL.'object'] = $c->get();
-
-        return $a;
-    }
-
-    private static function castSplArray($c, array $a, Stub $stub, bool $isNested): array
-    {
-        $prefix = Caster::PREFIX_VIRTUAL;
-        $flags = $c->getFlags();
-
-        if (!($flags & \ArrayObject::STD_PROP_LIST)) {
-            $c->setFlags(\ArrayObject::STD_PROP_LIST);
-            $a = Caster::castObject($c, \get_class($c), method_exists($c, '__debugInfo'), $stub->class);
-            $c->setFlags($flags);
-        }
-        if (\PHP_VERSION_ID < 70400) {
-            $a[$prefix.'storage'] = $c->getArrayCopy();
-        }
-        $a += [
-            $prefix.'flag::STD_PROP_LIST' => (bool) ($flags & \ArrayObject::STD_PROP_LIST),
-            $prefix.'flag::ARRAY_AS_PROPS' => (bool) ($flags & \ArrayObject::ARRAY_AS_PROPS),
-        ];
-        if ($c instanceof \ArrayObject) {
-            $a[$prefix.'iteratorClass'] = new ClassStub($c->getIteratorClass());
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/StubCaster.php b/vendor/symfony/var-dumper/Caster/StubCaster.php
deleted file mode 100644
index 32ead7c277722d1c6ad1f4bb6547426378577846..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/StubCaster.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts a caster's Stub.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class StubCaster
-{
-    public static function castStub(Stub $c, array $a, Stub $stub, bool $isNested)
-    {
-        if ($isNested) {
-            $stub->type = $c->type;
-            $stub->class = $c->class;
-            $stub->value = $c->value;
-            $stub->handle = $c->handle;
-            $stub->cut = $c->cut;
-            $stub->attr = $c->attr;
-
-            if (Stub::TYPE_REF === $c->type && !$c->class && \is_string($c->value) && !preg_match('//u', $c->value)) {
-                $stub->type = Stub::TYPE_STRING;
-                $stub->class = Stub::STRING_BINARY;
-            }
-
-            $a = [];
-        }
-
-        return $a;
-    }
-
-    public static function castCutArray(CutArrayStub $c, array $a, Stub $stub, bool $isNested)
-    {
-        return $isNested ? $c->preservedSubset : $a;
-    }
-
-    public static function cutInternals($obj, array $a, Stub $stub, bool $isNested)
-    {
-        if ($isNested) {
-            $stub->cut += \count($a);
-
-            return [];
-        }
-
-        return $a;
-    }
-
-    public static function castEnum(EnumStub $c, array $a, Stub $stub, bool $isNested)
-    {
-        if ($isNested) {
-            $stub->class = $c->dumpKeys ? '' : null;
-            $stub->handle = 0;
-            $stub->value = null;
-            $stub->cut = $c->cut;
-            $stub->attr = $c->attr;
-
-            $a = [];
-
-            if ($c->value) {
-                foreach (array_keys($c->value) as $k) {
-                    $keys[] = !isset($k[0]) || "\0" !== $k[0] ? Caster::PREFIX_VIRTUAL.$k : $k;
-                }
-                // Preserve references with array_combine()
-                $a = array_combine($keys, $c->value);
-            }
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/SymfonyCaster.php b/vendor/symfony/var-dumper/Caster/SymfonyCaster.php
deleted file mode 100644
index 6b87bde112f4ff7db883fc05fd6bc5f449f235c5..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/SymfonyCaster.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * @final
- */
-class SymfonyCaster
-{
-    private static $requestGetters = [
-        'pathInfo' => 'getPathInfo',
-        'requestUri' => 'getRequestUri',
-        'baseUrl' => 'getBaseUrl',
-        'basePath' => 'getBasePath',
-        'method' => 'getMethod',
-        'format' => 'getRequestFormat',
-    ];
-
-    public static function castRequest(Request $request, array $a, Stub $stub, bool $isNested)
-    {
-        $clone = null;
-
-        foreach (self::$requestGetters as $prop => $getter) {
-            $key = Caster::PREFIX_PROTECTED.$prop;
-            if (\array_key_exists($key, $a) && null === $a[$key]) {
-                if (null === $clone) {
-                    $clone = clone $request;
-                }
-                $a[Caster::PREFIX_VIRTUAL.$prop] = $clone->{$getter}();
-            }
-        }
-
-        return $a;
-    }
-
-    public static function castHttpClient($client, array $a, Stub $stub, bool $isNested)
-    {
-        $multiKey = sprintf("\0%s\0multi", \get_class($client));
-        if (isset($a[$multiKey])) {
-            $a[$multiKey] = new CutStub($a[$multiKey]);
-        }
-
-        return $a;
-    }
-
-    public static function castHttpClientResponse($response, array $a, Stub $stub, bool $isNested)
-    {
-        $stub->cut += \count($a);
-        $a = [];
-
-        foreach ($response->getInfo() as $k => $v) {
-            $a[Caster::PREFIX_VIRTUAL.$k] = $v;
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/TraceStub.php b/vendor/symfony/var-dumper/Caster/TraceStub.php
deleted file mode 100644
index 5eea1c876680f3e8751be231c7d4b27fde4b3e9e..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/TraceStub.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Represents a backtrace as returned by debug_backtrace() or Exception->getTrace().
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class TraceStub extends Stub
-{
-    public $keepArgs;
-    public $sliceOffset;
-    public $sliceLength;
-    public $numberingOffset;
-
-    public function __construct(array $trace, bool $keepArgs = true, int $sliceOffset = 0, int $sliceLength = null, int $numberingOffset = 0)
-    {
-        $this->value = $trace;
-        $this->keepArgs = $keepArgs;
-        $this->sliceOffset = $sliceOffset;
-        $this->sliceLength = $sliceLength;
-        $this->numberingOffset = $numberingOffset;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/UuidCaster.php b/vendor/symfony/var-dumper/Caster/UuidCaster.php
deleted file mode 100644
index b102774571f3491a485e14ce36f6399c15927e77..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/UuidCaster.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Ramsey\Uuid\UuidInterface;
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- */
-final class UuidCaster
-{
-    public static function castRamseyUuid(UuidInterface $c, array $a, Stub $stub, bool $isNested): array
-    {
-        $a += [
-            Caster::PREFIX_VIRTUAL.'uuid' => (string) $c,
-        ];
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php b/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php
deleted file mode 100644
index 1bca35796476695109e92aedf0803d8e64aabc32..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts XmlReader class to array representation.
- *
- * @author Baptiste Clavié <clavie.b@gmail.com>
- *
- * @final
- */
-class XmlReaderCaster
-{
-    private static $nodeTypes = [
-        \XMLReader::NONE => 'NONE',
-        \XMLReader::ELEMENT => 'ELEMENT',
-        \XMLReader::ATTRIBUTE => 'ATTRIBUTE',
-        \XMLReader::TEXT => 'TEXT',
-        \XMLReader::CDATA => 'CDATA',
-        \XMLReader::ENTITY_REF => 'ENTITY_REF',
-        \XMLReader::ENTITY => 'ENTITY',
-        \XMLReader::PI => 'PI (Processing Instruction)',
-        \XMLReader::COMMENT => 'COMMENT',
-        \XMLReader::DOC => 'DOC',
-        \XMLReader::DOC_TYPE => 'DOC_TYPE',
-        \XMLReader::DOC_FRAGMENT => 'DOC_FRAGMENT',
-        \XMLReader::NOTATION => 'NOTATION',
-        \XMLReader::WHITESPACE => 'WHITESPACE',
-        \XMLReader::SIGNIFICANT_WHITESPACE => 'SIGNIFICANT_WHITESPACE',
-        \XMLReader::END_ELEMENT => 'END_ELEMENT',
-        \XMLReader::END_ENTITY => 'END_ENTITY',
-        \XMLReader::XML_DECLARATION => 'XML_DECLARATION',
-    ];
-
-    public static function castXmlReader(\XMLReader $reader, array $a, Stub $stub, bool $isNested)
-    {
-        $props = Caster::PREFIX_VIRTUAL.'parserProperties';
-        $info = [
-            'localName' => $reader->localName,
-            'prefix' => $reader->prefix,
-            'nodeType' => new ConstStub(self::$nodeTypes[$reader->nodeType], $reader->nodeType),
-            'depth' => $reader->depth,
-            'isDefault' => $reader->isDefault,
-            'isEmptyElement' => \XMLReader::NONE === $reader->nodeType ? null : $reader->isEmptyElement,
-            'xmlLang' => $reader->xmlLang,
-            'attributeCount' => $reader->attributeCount,
-            'value' => $reader->value,
-            'namespaceURI' => $reader->namespaceURI,
-            'baseURI' => $reader->baseURI ? new LinkStub($reader->baseURI) : $reader->baseURI,
-            $props => [
-                'LOADDTD' => $reader->getParserProperty(\XMLReader::LOADDTD),
-                'DEFAULTATTRS' => $reader->getParserProperty(\XMLReader::DEFAULTATTRS),
-                'VALIDATE' => $reader->getParserProperty(\XMLReader::VALIDATE),
-                'SUBST_ENTITIES' => $reader->getParserProperty(\XMLReader::SUBST_ENTITIES),
-            ],
-        ];
-
-        if ($info[$props] = Caster::filter($info[$props], Caster::EXCLUDE_EMPTY, [], $count)) {
-            $info[$props] = new EnumStub($info[$props]);
-            $info[$props]->cut = $count;
-        }
-
-        $info = Caster::filter($info, Caster::EXCLUDE_EMPTY, [], $count);
-        // +2 because hasValue and hasAttributes are always filtered
-        $stub->cut += $count + 2;
-
-        return $a + $info;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php b/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php
deleted file mode 100644
index 42b25696fe49c655672c97b475f3bc58c09cba3a..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Caster;
-
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * Casts XML resources to array representation.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @final
- */
-class XmlResourceCaster
-{
-    private static $xmlErrors = [
-        \XML_ERROR_NONE => 'XML_ERROR_NONE',
-        \XML_ERROR_NO_MEMORY => 'XML_ERROR_NO_MEMORY',
-        \XML_ERROR_SYNTAX => 'XML_ERROR_SYNTAX',
-        \XML_ERROR_NO_ELEMENTS => 'XML_ERROR_NO_ELEMENTS',
-        \XML_ERROR_INVALID_TOKEN => 'XML_ERROR_INVALID_TOKEN',
-        \XML_ERROR_UNCLOSED_TOKEN => 'XML_ERROR_UNCLOSED_TOKEN',
-        \XML_ERROR_PARTIAL_CHAR => 'XML_ERROR_PARTIAL_CHAR',
-        \XML_ERROR_TAG_MISMATCH => 'XML_ERROR_TAG_MISMATCH',
-        \XML_ERROR_DUPLICATE_ATTRIBUTE => 'XML_ERROR_DUPLICATE_ATTRIBUTE',
-        \XML_ERROR_JUNK_AFTER_DOC_ELEMENT => 'XML_ERROR_JUNK_AFTER_DOC_ELEMENT',
-        \XML_ERROR_PARAM_ENTITY_REF => 'XML_ERROR_PARAM_ENTITY_REF',
-        \XML_ERROR_UNDEFINED_ENTITY => 'XML_ERROR_UNDEFINED_ENTITY',
-        \XML_ERROR_RECURSIVE_ENTITY_REF => 'XML_ERROR_RECURSIVE_ENTITY_REF',
-        \XML_ERROR_ASYNC_ENTITY => 'XML_ERROR_ASYNC_ENTITY',
-        \XML_ERROR_BAD_CHAR_REF => 'XML_ERROR_BAD_CHAR_REF',
-        \XML_ERROR_BINARY_ENTITY_REF => 'XML_ERROR_BINARY_ENTITY_REF',
-        \XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF => 'XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF',
-        \XML_ERROR_MISPLACED_XML_PI => 'XML_ERROR_MISPLACED_XML_PI',
-        \XML_ERROR_UNKNOWN_ENCODING => 'XML_ERROR_UNKNOWN_ENCODING',
-        \XML_ERROR_INCORRECT_ENCODING => 'XML_ERROR_INCORRECT_ENCODING',
-        \XML_ERROR_UNCLOSED_CDATA_SECTION => 'XML_ERROR_UNCLOSED_CDATA_SECTION',
-        \XML_ERROR_EXTERNAL_ENTITY_HANDLING => 'XML_ERROR_EXTERNAL_ENTITY_HANDLING',
-    ];
-
-    public static function castXml($h, array $a, Stub $stub, bool $isNested)
-    {
-        $a['current_byte_index'] = xml_get_current_byte_index($h);
-        $a['current_column_number'] = xml_get_current_column_number($h);
-        $a['current_line_number'] = xml_get_current_line_number($h);
-        $a['error_code'] = xml_get_error_code($h);
-
-        if (isset(self::$xmlErrors[$a['error_code']])) {
-            $a['error_code'] = new ConstStub(self::$xmlErrors[$a['error_code']], $a['error_code']);
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Cloner/AbstractCloner.php b/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
deleted file mode 100644
index 938bd03856227842608e61d7f6612feb44b77459..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
+++ /dev/null
@@ -1,374 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Cloner;
-
-use Symfony\Component\VarDumper\Caster\Caster;
-use Symfony\Component\VarDumper\Exception\ThrowingCasterException;
-
-/**
- * AbstractCloner implements a generic caster mechanism for objects and resources.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-abstract class AbstractCloner implements ClonerInterface
-{
-    public static $defaultCasters = [
-        '__PHP_Incomplete_Class' => ['Symfony\Component\VarDumper\Caster\Caster', 'castPhpIncompleteClass'],
-
-        'Symfony\Component\VarDumper\Caster\CutStub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'castStub'],
-        'Symfony\Component\VarDumper\Caster\CutArrayStub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'castCutArray'],
-        'Symfony\Component\VarDumper\Caster\ConstStub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'castStub'],
-        'Symfony\Component\VarDumper\Caster\EnumStub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'castEnum'],
-
-        'Closure' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castClosure'],
-        'Generator' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castGenerator'],
-        'ReflectionType' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castType'],
-        'ReflectionGenerator' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castReflectionGenerator'],
-        'ReflectionClass' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castClass'],
-        'ReflectionFunctionAbstract' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castFunctionAbstract'],
-        'ReflectionMethod' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castMethod'],
-        'ReflectionParameter' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castParameter'],
-        'ReflectionProperty' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castProperty'],
-        'ReflectionReference' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castReference'],
-        'ReflectionExtension' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castExtension'],
-        'ReflectionZendExtension' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castZendExtension'],
-
-        'Doctrine\Common\Persistence\ObjectManager' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
-        'Doctrine\Common\Proxy\Proxy' => ['Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castCommonProxy'],
-        'Doctrine\ORM\Proxy\Proxy' => ['Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castOrmProxy'],
-        'Doctrine\ORM\PersistentCollection' => ['Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castPersistentCollection'],
-        'Doctrine\Persistence\ObjectManager' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
-
-        'DOMException' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castException'],
-        'DOMStringList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
-        'DOMNameList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
-        'DOMImplementation' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castImplementation'],
-        'DOMImplementationList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
-        'DOMNode' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castNode'],
-        'DOMNameSpaceNode' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castNameSpaceNode'],
-        'DOMDocument' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castDocument'],
-        'DOMNodeList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
-        'DOMNamedNodeMap' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
-        'DOMCharacterData' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castCharacterData'],
-        'DOMAttr' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castAttr'],
-        'DOMElement' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castElement'],
-        'DOMText' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castText'],
-        'DOMTypeinfo' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castTypeinfo'],
-        'DOMDomError' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castDomError'],
-        'DOMLocator' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLocator'],
-        'DOMDocumentType' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castDocumentType'],
-        'DOMNotation' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castNotation'],
-        'DOMEntity' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castEntity'],
-        'DOMProcessingInstruction' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castProcessingInstruction'],
-        'DOMXPath' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castXPath'],
-
-        'XMLReader' => ['Symfony\Component\VarDumper\Caster\XmlReaderCaster', 'castXmlReader'],
-
-        'ErrorException' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castErrorException'],
-        'Exception' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castException'],
-        'Error' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castError'],
-        'Symfony\Bridge\Monolog\Logger' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
-        'Symfony\Component\DependencyInjection\ContainerInterface' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
-        'Symfony\Component\EventDispatcher\EventDispatcherInterface' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
-        'Symfony\Component\HttpClient\CurlHttpClient' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castHttpClient'],
-        'Symfony\Component\HttpClient\NativeHttpClient' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castHttpClient'],
-        'Symfony\Component\HttpClient\Response\CurlResponse' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castHttpClientResponse'],
-        'Symfony\Component\HttpClient\Response\NativeResponse' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castHttpClientResponse'],
-        'Symfony\Component\HttpFoundation\Request' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castRequest'],
-        'Symfony\Component\VarDumper\Exception\ThrowingCasterException' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castThrowingCasterException'],
-        'Symfony\Component\VarDumper\Caster\TraceStub' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castTraceStub'],
-        'Symfony\Component\VarDumper\Caster\FrameStub' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castFrameStub'],
-        'Symfony\Component\VarDumper\Cloner\AbstractCloner' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
-        'Symfony\Component\ErrorHandler\Exception\SilencedErrorContext' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castSilencedErrorContext'],
-
-        'Imagine\Image\ImageInterface' => ['Symfony\Component\VarDumper\Caster\ImagineCaster', 'castImage'],
-
-        'Ramsey\Uuid\UuidInterface' => ['Symfony\Component\VarDumper\Caster\UuidCaster', 'castRamseyUuid'],
-
-        'ProxyManager\Proxy\ProxyInterface' => ['Symfony\Component\VarDumper\Caster\ProxyManagerCaster', 'castProxy'],
-        'PHPUnit_Framework_MockObject_MockObject' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
-        'PHPUnit\Framework\MockObject\MockObject' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
-        'PHPUnit\Framework\MockObject\Stub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
-        'Prophecy\Prophecy\ProphecySubjectInterface' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
-        'Mockery\MockInterface' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
-
-        'PDO' => ['Symfony\Component\VarDumper\Caster\PdoCaster', 'castPdo'],
-        'PDOStatement' => ['Symfony\Component\VarDumper\Caster\PdoCaster', 'castPdoStatement'],
-
-        'AMQPConnection' => ['Symfony\Component\VarDumper\Caster\AmqpCaster', 'castConnection'],
-        'AMQPChannel' => ['Symfony\Component\VarDumper\Caster\AmqpCaster', 'castChannel'],
-        'AMQPQueue' => ['Symfony\Component\VarDumper\Caster\AmqpCaster', 'castQueue'],
-        'AMQPExchange' => ['Symfony\Component\VarDumper\Caster\AmqpCaster', 'castExchange'],
-        'AMQPEnvelope' => ['Symfony\Component\VarDumper\Caster\AmqpCaster', 'castEnvelope'],
-
-        'ArrayObject' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castArrayObject'],
-        'ArrayIterator' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castArrayIterator'],
-        'SplDoublyLinkedList' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castDoublyLinkedList'],
-        'SplFileInfo' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castFileInfo'],
-        'SplFileObject' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castFileObject'],
-        'SplHeap' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castHeap'],
-        'SplObjectStorage' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castObjectStorage'],
-        'SplPriorityQueue' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castHeap'],
-        'OuterIterator' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castOuterIterator'],
-        'WeakReference' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castWeakReference'],
-
-        'Redis' => ['Symfony\Component\VarDumper\Caster\RedisCaster', 'castRedis'],
-        'RedisArray' => ['Symfony\Component\VarDumper\Caster\RedisCaster', 'castRedisArray'],
-        'RedisCluster' => ['Symfony\Component\VarDumper\Caster\RedisCaster', 'castRedisCluster'],
-
-        'DateTimeInterface' => ['Symfony\Component\VarDumper\Caster\DateCaster', 'castDateTime'],
-        'DateInterval' => ['Symfony\Component\VarDumper\Caster\DateCaster', 'castInterval'],
-        'DateTimeZone' => ['Symfony\Component\VarDumper\Caster\DateCaster', 'castTimeZone'],
-        'DatePeriod' => ['Symfony\Component\VarDumper\Caster\DateCaster', 'castPeriod'],
-
-        'GMP' => ['Symfony\Component\VarDumper\Caster\GmpCaster', 'castGmp'],
-
-        'MessageFormatter' => ['Symfony\Component\VarDumper\Caster\IntlCaster', 'castMessageFormatter'],
-        'NumberFormatter' => ['Symfony\Component\VarDumper\Caster\IntlCaster', 'castNumberFormatter'],
-        'IntlTimeZone' => ['Symfony\Component\VarDumper\Caster\IntlCaster', 'castIntlTimeZone'],
-        'IntlCalendar' => ['Symfony\Component\VarDumper\Caster\IntlCaster', 'castIntlCalendar'],
-        'IntlDateFormatter' => ['Symfony\Component\VarDumper\Caster\IntlCaster', 'castIntlDateFormatter'],
-
-        'Memcached' => ['Symfony\Component\VarDumper\Caster\MemcachedCaster', 'castMemcached'],
-
-        'Ds\Collection' => ['Symfony\Component\VarDumper\Caster\DsCaster', 'castCollection'],
-        'Ds\Map' => ['Symfony\Component\VarDumper\Caster\DsCaster', 'castMap'],
-        'Ds\Pair' => ['Symfony\Component\VarDumper\Caster\DsCaster', 'castPair'],
-        'Symfony\Component\VarDumper\Caster\DsPairStub' => ['Symfony\Component\VarDumper\Caster\DsCaster', 'castPairStub'],
-
-        'CurlHandle' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castCurl'],
-        ':curl' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castCurl'],
-
-        ':dba' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castDba'],
-        ':dba persistent' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castDba'],
-        ':gd' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castGd'],
-        ':mysql link' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castMysqlLink'],
-        ':pgsql large object' => ['Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castLargeObject'],
-        ':pgsql link' => ['Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castLink'],
-        ':pgsql link persistent' => ['Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castLink'],
-        ':pgsql result' => ['Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castResult'],
-        ':process' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castProcess'],
-        ':stream' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castStream'],
-        ':OpenSSL X.509' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castOpensslX509'],
-        ':persistent stream' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castStream'],
-        ':stream-context' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castStreamContext'],
-        ':xml' => ['Symfony\Component\VarDumper\Caster\XmlResourceCaster', 'castXml'],
-
-        'RdKafka' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castRdKafka'],
-        'RdKafka\Conf' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castConf'],
-        'RdKafka\KafkaConsumer' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castKafkaConsumer'],
-        'RdKafka\Metadata\Broker' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castBrokerMetadata'],
-        'RdKafka\Metadata\Collection' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castCollectionMetadata'],
-        'RdKafka\Metadata\Partition' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castPartitionMetadata'],
-        'RdKafka\Metadata\Topic' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castTopicMetadata'],
-        'RdKafka\Message' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castMessage'],
-        'RdKafka\Topic' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castTopic'],
-        'RdKafka\TopicPartition' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castTopicPartition'],
-        'RdKafka\TopicConf' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castTopicConf'],
-    ];
-
-    protected $maxItems = 2500;
-    protected $maxString = -1;
-    protected $minDepth = 1;
-
-    private $casters = [];
-    private $prevErrorHandler;
-    private $classInfo = [];
-    private $filter = 0;
-
-    /**
-     * @param callable[]|null $casters A map of casters
-     *
-     * @see addCasters
-     */
-    public function __construct(array $casters = null)
-    {
-        if (null === $casters) {
-            $casters = static::$defaultCasters;
-        }
-        $this->addCasters($casters);
-    }
-
-    /**
-     * Adds casters for resources and objects.
-     *
-     * Maps resources or objects types to a callback.
-     * Types are in the key, with a callable caster for value.
-     * Resource types are to be prefixed with a `:`,
-     * see e.g. static::$defaultCasters.
-     *
-     * @param callable[] $casters A map of casters
-     */
-    public function addCasters(array $casters)
-    {
-        foreach ($casters as $type => $callback) {
-            $this->casters[$type][] = $callback;
-        }
-    }
-
-    /**
-     * Sets the maximum number of items to clone past the minimum depth in nested structures.
-     */
-    public function setMaxItems(int $maxItems)
-    {
-        $this->maxItems = $maxItems;
-    }
-
-    /**
-     * Sets the maximum cloned length for strings.
-     */
-    public function setMaxString(int $maxString)
-    {
-        $this->maxString = $maxString;
-    }
-
-    /**
-     * Sets the minimum tree depth where we are guaranteed to clone all the items.  After this
-     * depth is reached, only setMaxItems items will be cloned.
-     */
-    public function setMinDepth(int $minDepth)
-    {
-        $this->minDepth = $minDepth;
-    }
-
-    /**
-     * Clones a PHP variable.
-     *
-     * @param mixed $var    Any PHP variable
-     * @param int   $filter A bit field of Caster::EXCLUDE_* constants
-     *
-     * @return Data The cloned variable represented by a Data object
-     */
-    public function cloneVar($var, int $filter = 0)
-    {
-        $this->prevErrorHandler = set_error_handler(function ($type, $msg, $file, $line, $context = []) {
-            if (\E_RECOVERABLE_ERROR === $type || \E_USER_ERROR === $type) {
-                // Cloner never dies
-                throw new \ErrorException($msg, 0, $type, $file, $line);
-            }
-
-            if ($this->prevErrorHandler) {
-                return ($this->prevErrorHandler)($type, $msg, $file, $line, $context);
-            }
-
-            return false;
-        });
-        $this->filter = $filter;
-
-        if ($gc = gc_enabled()) {
-            gc_disable();
-        }
-        try {
-            return new Data($this->doClone($var));
-        } finally {
-            if ($gc) {
-                gc_enable();
-            }
-            restore_error_handler();
-            $this->prevErrorHandler = null;
-        }
-    }
-
-    /**
-     * Effectively clones the PHP variable.
-     *
-     * @param mixed $var Any PHP variable
-     *
-     * @return array The cloned variable represented in an array
-     */
-    abstract protected function doClone($var);
-
-    /**
-     * Casts an object to an array representation.
-     *
-     * @param bool $isNested True if the object is nested in the dumped structure
-     *
-     * @return array The object casted as array
-     */
-    protected function castObject(Stub $stub, bool $isNested)
-    {
-        $obj = $stub->value;
-        $class = $stub->class;
-
-        if (\PHP_VERSION_ID < 80000 ? "\0" === ($class[15] ?? null) : false !== strpos($class, "@anonymous\0")) {
-            $stub->class = get_debug_type($obj);
-        }
-        if (isset($this->classInfo[$class])) {
-            list($i, $parents, $hasDebugInfo, $fileInfo) = $this->classInfo[$class];
-        } else {
-            $i = 2;
-            $parents = [$class];
-            $hasDebugInfo = method_exists($class, '__debugInfo');
-
-            foreach (class_parents($class) as $p) {
-                $parents[] = $p;
-                ++$i;
-            }
-            foreach (class_implements($class) as $p) {
-                $parents[] = $p;
-                ++$i;
-            }
-            $parents[] = '*';
-
-            $r = new \ReflectionClass($class);
-            $fileInfo = $r->isInternal() || $r->isSubclassOf(Stub::class) ? [] : [
-                'file' => $r->getFileName(),
-                'line' => $r->getStartLine(),
-            ];
-
-            $this->classInfo[$class] = [$i, $parents, $hasDebugInfo, $fileInfo];
-        }
-
-        $stub->attr += $fileInfo;
-        $a = Caster::castObject($obj, $class, $hasDebugInfo, $stub->class);
-
-        try {
-            while ($i--) {
-                if (!empty($this->casters[$p = $parents[$i]])) {
-                    foreach ($this->casters[$p] as $callback) {
-                        $a = $callback($obj, $a, $stub, $isNested, $this->filter);
-                    }
-                }
-            }
-        } catch (\Exception $e) {
-            $a = [(Stub::TYPE_OBJECT === $stub->type ? Caster::PREFIX_VIRTUAL : '').'âš ' => new ThrowingCasterException($e)] + $a;
-        }
-
-        return $a;
-    }
-
-    /**
-     * Casts a resource to an array representation.
-     *
-     * @param bool $isNested True if the object is nested in the dumped structure
-     *
-     * @return array The resource casted as array
-     */
-    protected function castResource(Stub $stub, bool $isNested)
-    {
-        $a = [];
-        $res = $stub->value;
-        $type = $stub->class;
-
-        try {
-            if (!empty($this->casters[':'.$type])) {
-                foreach ($this->casters[':'.$type] as $callback) {
-                    $a = $callback($res, $a, $stub, $isNested, $this->filter);
-                }
-            }
-        } catch (\Exception $e) {
-            $a = [(Stub::TYPE_OBJECT === $stub->type ? Caster::PREFIX_VIRTUAL : '').'âš ' => new ThrowingCasterException($e)] + $a;
-        }
-
-        return $a;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Cloner/ClonerInterface.php b/vendor/symfony/var-dumper/Cloner/ClonerInterface.php
deleted file mode 100644
index 7ed287a2ddf0da20615c4f2c6d3bdaf4a6873b98..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Cloner/ClonerInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Cloner;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface ClonerInterface
-{
-    /**
-     * Clones a PHP variable.
-     *
-     * @param mixed $var Any PHP variable
-     *
-     * @return Data The cloned variable represented by a Data object
-     */
-    public function cloneVar($var);
-}
diff --git a/vendor/symfony/var-dumper/Cloner/Cursor.php b/vendor/symfony/var-dumper/Cloner/Cursor.php
deleted file mode 100644
index 5b0542f6c20cefdad75c7a93f483bce546a85819..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Cloner/Cursor.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Cloner;
-
-/**
- * Represents the current state of a dumper while dumping.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class Cursor
-{
-    const HASH_INDEXED = Stub::ARRAY_INDEXED;
-    const HASH_ASSOC = Stub::ARRAY_ASSOC;
-    const HASH_OBJECT = Stub::TYPE_OBJECT;
-    const HASH_RESOURCE = Stub::TYPE_RESOURCE;
-
-    public $depth = 0;
-    public $refIndex = 0;
-    public $softRefTo = 0;
-    public $softRefCount = 0;
-    public $softRefHandle = 0;
-    public $hardRefTo = 0;
-    public $hardRefCount = 0;
-    public $hardRefHandle = 0;
-    public $hashType;
-    public $hashKey;
-    public $hashKeyIsBinary;
-    public $hashIndex = 0;
-    public $hashLength = 0;
-    public $hashCut = 0;
-    public $stop = false;
-    public $attr = [];
-    public $skipChildren = false;
-}
diff --git a/vendor/symfony/var-dumper/Cloner/Data.php b/vendor/symfony/var-dumper/Cloner/Data.php
deleted file mode 100644
index 74f8f945dbe66cef7189845ac2296ceaefd19c26..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Cloner/Data.php
+++ /dev/null
@@ -1,451 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Cloner;
-
-use Symfony\Component\VarDumper\Caster\Caster;
-use Symfony\Component\VarDumper\Dumper\ContextProvider\SourceContextProvider;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class Data implements \ArrayAccess, \Countable, \IteratorAggregate
-{
-    private $data;
-    private $position = 0;
-    private $key = 0;
-    private $maxDepth = 20;
-    private $maxItemsPerDepth = -1;
-    private $useRefHandles = -1;
-    private $context = [];
-
-    /**
-     * @param array $data An array as returned by ClonerInterface::cloneVar()
-     */
-    public function __construct(array $data)
-    {
-        $this->data = $data;
-    }
-
-    /**
-     * @return string|null The type of the value
-     */
-    public function getType()
-    {
-        $item = $this->data[$this->position][$this->key];
-
-        if ($item instanceof Stub && Stub::TYPE_REF === $item->type && !$item->position) {
-            $item = $item->value;
-        }
-        if (!$item instanceof Stub) {
-            return \gettype($item);
-        }
-        if (Stub::TYPE_STRING === $item->type) {
-            return 'string';
-        }
-        if (Stub::TYPE_ARRAY === $item->type) {
-            return 'array';
-        }
-        if (Stub::TYPE_OBJECT === $item->type) {
-            return $item->class;
-        }
-        if (Stub::TYPE_RESOURCE === $item->type) {
-            return $item->class.' resource';
-        }
-
-        return null;
-    }
-
-    /**
-     * @param array|bool $recursive Whether values should be resolved recursively or not
-     *
-     * @return string|int|float|bool|array|Data[]|null A native representation of the original value
-     */
-    public function getValue($recursive = false)
-    {
-        $item = $this->data[$this->position][$this->key];
-
-        if ($item instanceof Stub && Stub::TYPE_REF === $item->type && !$item->position) {
-            $item = $item->value;
-        }
-        if (!($item = $this->getStub($item)) instanceof Stub) {
-            return $item;
-        }
-        if (Stub::TYPE_STRING === $item->type) {
-            return $item->value;
-        }
-
-        $children = $item->position ? $this->data[$item->position] : [];
-
-        foreach ($children as $k => $v) {
-            if ($recursive && !($v = $this->getStub($v)) instanceof Stub) {
-                continue;
-            }
-            $children[$k] = clone $this;
-            $children[$k]->key = $k;
-            $children[$k]->position = $item->position;
-
-            if ($recursive) {
-                if (Stub::TYPE_REF === $v->type && ($v = $this->getStub($v->value)) instanceof Stub) {
-                    $recursive = (array) $recursive;
-                    if (isset($recursive[$v->position])) {
-                        continue;
-                    }
-                    $recursive[$v->position] = true;
-                }
-                $children[$k] = $children[$k]->getValue($recursive);
-            }
-        }
-
-        return $children;
-    }
-
-    /**
-     * @return int
-     */
-    public function count()
-    {
-        return \count($this->getValue());
-    }
-
-    /**
-     * @return \Traversable
-     */
-    public function getIterator()
-    {
-        if (!\is_array($value = $this->getValue())) {
-            throw new \LogicException(sprintf('"%s" object holds non-iterable type "%s".', self::class, get_debug_type($value)));
-        }
-
-        yield from $value;
-    }
-
-    public function __get(string $key)
-    {
-        if (null !== $data = $this->seek($key)) {
-            $item = $this->getStub($data->data[$data->position][$data->key]);
-
-            return $item instanceof Stub || [] === $item ? $data : $item;
-        }
-
-        return null;
-    }
-
-    /**
-     * @return bool
-     */
-    public function __isset(string $key)
-    {
-        return null !== $this->seek($key);
-    }
-
-    /**
-     * @return bool
-     */
-    public function offsetExists($key)
-    {
-        return $this->__isset($key);
-    }
-
-    public function offsetGet($key)
-    {
-        return $this->__get($key);
-    }
-
-    public function offsetSet($key, $value)
-    {
-        throw new \BadMethodCallException(self::class.' objects are immutable.');
-    }
-
-    public function offsetUnset($key)
-    {
-        throw new \BadMethodCallException(self::class.' objects are immutable.');
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        $value = $this->getValue();
-
-        if (!\is_array($value)) {
-            return (string) $value;
-        }
-
-        return sprintf('%s (count=%d)', $this->getType(), \count($value));
-    }
-
-    /**
-     * Returns a depth limited clone of $this.
-     *
-     * @return static
-     */
-    public function withMaxDepth(int $maxDepth)
-    {
-        $data = clone $this;
-        $data->maxDepth = (int) $maxDepth;
-
-        return $data;
-    }
-
-    /**
-     * Limits the number of elements per depth level.
-     *
-     * @return static
-     */
-    public function withMaxItemsPerDepth(int $maxItemsPerDepth)
-    {
-        $data = clone $this;
-        $data->maxItemsPerDepth = (int) $maxItemsPerDepth;
-
-        return $data;
-    }
-
-    /**
-     * Enables/disables objects' identifiers tracking.
-     *
-     * @param bool $useRefHandles False to hide global ref. handles
-     *
-     * @return static
-     */
-    public function withRefHandles(bool $useRefHandles)
-    {
-        $data = clone $this;
-        $data->useRefHandles = $useRefHandles ? -1 : 0;
-
-        return $data;
-    }
-
-    /**
-     * @return static
-     */
-    public function withContext(array $context)
-    {
-        $data = clone $this;
-        $data->context = $context;
-
-        return $data;
-    }
-
-    /**
-     * Seeks to a specific key in nested data structures.
-     *
-     * @param string|int $key The key to seek to
-     *
-     * @return static|null Null if the key is not set
-     */
-    public function seek($key)
-    {
-        $item = $this->data[$this->position][$this->key];
-
-        if ($item instanceof Stub && Stub::TYPE_REF === $item->type && !$item->position) {
-            $item = $item->value;
-        }
-        if (!($item = $this->getStub($item)) instanceof Stub || !$item->position) {
-            return null;
-        }
-        $keys = [$key];
-
-        switch ($item->type) {
-            case Stub::TYPE_OBJECT:
-                $keys[] = Caster::PREFIX_DYNAMIC.$key;
-                $keys[] = Caster::PREFIX_PROTECTED.$key;
-                $keys[] = Caster::PREFIX_VIRTUAL.$key;
-                $keys[] = "\0$item->class\0$key";
-                // no break
-            case Stub::TYPE_ARRAY:
-            case Stub::TYPE_RESOURCE:
-                break;
-            default:
-                return null;
-        }
-
-        $data = null;
-        $children = $this->data[$item->position];
-
-        foreach ($keys as $key) {
-            if (isset($children[$key]) || \array_key_exists($key, $children)) {
-                $data = clone $this;
-                $data->key = $key;
-                $data->position = $item->position;
-                break;
-            }
-        }
-
-        return $data;
-    }
-
-    /**
-     * Dumps data with a DumperInterface dumper.
-     */
-    public function dump(DumperInterface $dumper)
-    {
-        $refs = [0];
-        $cursor = new Cursor();
-
-        if ($cursor->attr = $this->context[SourceContextProvider::class] ?? []) {
-            $cursor->attr['if_links'] = true;
-            $cursor->hashType = -1;
-            $dumper->dumpScalar($cursor, 'default', '^');
-            $cursor->attr = ['if_links' => true];
-            $dumper->dumpScalar($cursor, 'default', ' ');
-            $cursor->hashType = 0;
-        }
-
-        $this->dumpItem($dumper, $cursor, $refs, $this->data[$this->position][$this->key]);
-    }
-
-    /**
-     * Depth-first dumping of items.
-     *
-     * @param mixed $item A Stub object or the original value being dumped
-     */
-    private function dumpItem(DumperInterface $dumper, Cursor $cursor, array &$refs, $item)
-    {
-        $cursor->refIndex = 0;
-        $cursor->softRefTo = $cursor->softRefHandle = $cursor->softRefCount = 0;
-        $cursor->hardRefTo = $cursor->hardRefHandle = $cursor->hardRefCount = 0;
-        $firstSeen = true;
-
-        if (!$item instanceof Stub) {
-            $cursor->attr = [];
-            $type = \gettype($item);
-            if ($item && 'array' === $type) {
-                $item = $this->getStub($item);
-            }
-        } elseif (Stub::TYPE_REF === $item->type) {
-            if ($item->handle) {
-                if (!isset($refs[$r = $item->handle - (\PHP_INT_MAX >> 1)])) {
-                    $cursor->refIndex = $refs[$r] = $cursor->refIndex ?: ++$refs[0];
-                } else {
-                    $firstSeen = false;
-                }
-                $cursor->hardRefTo = $refs[$r];
-                $cursor->hardRefHandle = $this->useRefHandles & $item->handle;
-                $cursor->hardRefCount = $item->refCount;
-            }
-            $cursor->attr = $item->attr;
-            $type = $item->class ?: \gettype($item->value);
-            $item = $this->getStub($item->value);
-        }
-        if ($item instanceof Stub) {
-            if ($item->refCount) {
-                if (!isset($refs[$r = $item->handle])) {
-                    $cursor->refIndex = $refs[$r] = $cursor->refIndex ?: ++$refs[0];
-                } else {
-                    $firstSeen = false;
-                }
-                $cursor->softRefTo = $refs[$r];
-            }
-            $cursor->softRefHandle = $this->useRefHandles & $item->handle;
-            $cursor->softRefCount = $item->refCount;
-            $cursor->attr = $item->attr;
-            $cut = $item->cut;
-
-            if ($item->position && $firstSeen) {
-                $children = $this->data[$item->position];
-
-                if ($cursor->stop) {
-                    if ($cut >= 0) {
-                        $cut += \count($children);
-                    }
-                    $children = [];
-                }
-            } else {
-                $children = [];
-            }
-            switch ($item->type) {
-                case Stub::TYPE_STRING:
-                    $dumper->dumpString($cursor, $item->value, Stub::STRING_BINARY === $item->class, $cut);
-                    break;
-
-                case Stub::TYPE_ARRAY:
-                    $item = clone $item;
-                    $item->type = $item->class;
-                    $item->class = $item->value;
-                    // no break
-                case Stub::TYPE_OBJECT:
-                case Stub::TYPE_RESOURCE:
-                    $withChildren = $children && $cursor->depth !== $this->maxDepth && $this->maxItemsPerDepth;
-                    $dumper->enterHash($cursor, $item->type, $item->class, $withChildren);
-                    if ($withChildren) {
-                        if ($cursor->skipChildren) {
-                            $withChildren = false;
-                            $cut = -1;
-                        } else {
-                            $cut = $this->dumpChildren($dumper, $cursor, $refs, $children, $cut, $item->type, null !== $item->class);
-                        }
-                    } elseif ($children && 0 <= $cut) {
-                        $cut += \count($children);
-                    }
-                    $cursor->skipChildren = false;
-                    $dumper->leaveHash($cursor, $item->type, $item->class, $withChildren, $cut);
-                    break;
-
-                default:
-                    throw new \RuntimeException(sprintf('Unexpected Stub type: "%s".', $item->type));
-            }
-        } elseif ('array' === $type) {
-            $dumper->enterHash($cursor, Cursor::HASH_INDEXED, 0, false);
-            $dumper->leaveHash($cursor, Cursor::HASH_INDEXED, 0, false, 0);
-        } elseif ('string' === $type) {
-            $dumper->dumpString($cursor, $item, false, 0);
-        } else {
-            $dumper->dumpScalar($cursor, $type, $item);
-        }
-    }
-
-    /**
-     * Dumps children of hash structures.
-     *
-     * @return int The final number of removed items
-     */
-    private function dumpChildren(DumperInterface $dumper, Cursor $parentCursor, array &$refs, array $children, int $hashCut, int $hashType, bool $dumpKeys): int
-    {
-        $cursor = clone $parentCursor;
-        ++$cursor->depth;
-        $cursor->hashType = $hashType;
-        $cursor->hashIndex = 0;
-        $cursor->hashLength = \count($children);
-        $cursor->hashCut = $hashCut;
-        foreach ($children as $key => $child) {
-            $cursor->hashKeyIsBinary = isset($key[0]) && !preg_match('//u', $key);
-            $cursor->hashKey = $dumpKeys ? $key : null;
-            $this->dumpItem($dumper, $cursor, $refs, $child);
-            if (++$cursor->hashIndex === $this->maxItemsPerDepth || $cursor->stop) {
-                $parentCursor->stop = true;
-
-                return $hashCut >= 0 ? $hashCut + $cursor->hashLength - $cursor->hashIndex : $hashCut;
-            }
-        }
-
-        return $hashCut;
-    }
-
-    private function getStub($item)
-    {
-        if (!$item || !\is_array($item)) {
-            return $item;
-        }
-
-        $stub = new Stub();
-        $stub->type = Stub::TYPE_ARRAY;
-        foreach ($item as $stub->class => $stub->position) {
-        }
-        if (isset($item[0])) {
-            $stub->cut = $item[0];
-        }
-        $stub->value = $stub->cut + ($stub->position ? \count($this->data[$stub->position]) : 0);
-
-        return $stub;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Cloner/DumperInterface.php b/vendor/symfony/var-dumper/Cloner/DumperInterface.php
deleted file mode 100644
index 6d60b723c7f7931941542c80561146676c872305..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Cloner/DumperInterface.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Cloner;
-
-/**
- * DumperInterface used by Data objects.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface DumperInterface
-{
-    /**
-     * Dumps a scalar value.
-     *
-     * @param string                $type  The PHP type of the value being dumped
-     * @param string|int|float|bool $value The scalar value being dumped
-     */
-    public function dumpScalar(Cursor $cursor, string $type, $value);
-
-    /**
-     * Dumps a string.
-     *
-     * @param string $str The string being dumped
-     * @param bool   $bin Whether $str is UTF-8 or binary encoded
-     * @param int    $cut The number of characters $str has been cut by
-     */
-    public function dumpString(Cursor $cursor, string $str, bool $bin, int $cut);
-
-    /**
-     * Dumps while entering an hash.
-     *
-     * @param int        $type     A Cursor::HASH_* const for the type of hash
-     * @param string|int $class    The object class, resource type or array count
-     * @param bool       $hasChild When the dump of the hash has child item
-     */
-    public function enterHash(Cursor $cursor, int $type, $class, bool $hasChild);
-
-    /**
-     * Dumps while leaving an hash.
-     *
-     * @param int        $type     A Cursor::HASH_* const for the type of hash
-     * @param string|int $class    The object class, resource type or array count
-     * @param bool       $hasChild When the dump of the hash has child item
-     * @param int        $cut      The number of items the hash has been cut by
-     */
-    public function leaveHash(Cursor $cursor, int $type, $class, bool $hasChild, int $cut);
-}
diff --git a/vendor/symfony/var-dumper/Cloner/Stub.php b/vendor/symfony/var-dumper/Cloner/Stub.php
deleted file mode 100644
index 7f6d05d33dbda095f0c71adae9d3c05344be4dba..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Cloner/Stub.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Cloner;
-
-/**
- * Represents the main properties of a PHP variable.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class Stub
-{
-    const TYPE_REF = 1;
-    const TYPE_STRING = 2;
-    const TYPE_ARRAY = 3;
-    const TYPE_OBJECT = 4;
-    const TYPE_RESOURCE = 5;
-
-    const STRING_BINARY = 1;
-    const STRING_UTF8 = 2;
-
-    const ARRAY_ASSOC = 1;
-    const ARRAY_INDEXED = 2;
-
-    public $type = self::TYPE_REF;
-    public $class = '';
-    public $value;
-    public $cut = 0;
-    public $handle = 0;
-    public $refCount = 0;
-    public $position = 0;
-    public $attr = [];
-
-    private static $defaultProperties = [];
-
-    /**
-     * @internal
-     */
-    public function __sleep(): array
-    {
-        $properties = [];
-
-        if (!isset(self::$defaultProperties[$c = static::class])) {
-            self::$defaultProperties[$c] = get_class_vars($c);
-
-            foreach ((new \ReflectionClass($c))->getStaticProperties() as $k => $v) {
-                unset(self::$defaultProperties[$c][$k]);
-            }
-        }
-
-        foreach (self::$defaultProperties[$c] as $k => $v) {
-            if ($this->$k !== $v) {
-                $properties[] = $k;
-            }
-        }
-
-        return $properties;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Cloner/VarCloner.php b/vendor/symfony/var-dumper/Cloner/VarCloner.php
deleted file mode 100644
index 08588fc339f924fef4b3b209a71f3182774ec07e..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Cloner/VarCloner.php
+++ /dev/null
@@ -1,283 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Cloner;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class VarCloner extends AbstractCloner
-{
-    private static $gid;
-    private static $arrayCache = [];
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doClone($var)
-    {
-        $len = 1;                       // Length of $queue
-        $pos = 0;                       // Number of cloned items past the minimum depth
-        $refsCounter = 0;               // Hard references counter
-        $queue = [[$var]];    // This breadth-first queue is the return value
-        $hardRefs = [];            // Map of original zval ids to stub objects
-        $objRefs = [];             // Map of original object handles to their stub object counterpart
-        $objects = [];             // Keep a ref to objects to ensure their handle cannot be reused while cloning
-        $resRefs = [];             // Map of original resource handles to their stub object counterpart
-        $values = [];              // Map of stub objects' ids to original values
-        $maxItems = $this->maxItems;
-        $maxString = $this->maxString;
-        $minDepth = $this->minDepth;
-        $currentDepth = 0;              // Current tree depth
-        $currentDepthFinalIndex = 0;    // Final $queue index for current tree depth
-        $minimumDepthReached = 0 === $minDepth; // Becomes true when minimum tree depth has been reached
-        $cookie = (object) [];          // Unique object used to detect hard references
-        $a = null;                      // Array cast for nested structures
-        $stub = null;                   // Stub capturing the main properties of an original item value
-                                        // or null if the original value is used directly
-
-        if (!$gid = self::$gid) {
-            $gid = self::$gid = md5(random_bytes(6)); // Unique string used to detect the special $GLOBALS variable
-        }
-        $arrayStub = new Stub();
-        $arrayStub->type = Stub::TYPE_ARRAY;
-        $fromObjCast = false;
-
-        for ($i = 0; $i < $len; ++$i) {
-            // Detect when we move on to the next tree depth
-            if ($i > $currentDepthFinalIndex) {
-                ++$currentDepth;
-                $currentDepthFinalIndex = $len - 1;
-                if ($currentDepth >= $minDepth) {
-                    $minimumDepthReached = true;
-                }
-            }
-
-            $refs = $vals = $queue[$i];
-            foreach ($vals as $k => $v) {
-                // $v is the original value or a stub object in case of hard references
-
-                if (\PHP_VERSION_ID >= 70400) {
-                    $zvalIsRef = null !== \ReflectionReference::fromArrayElement($vals, $k);
-                } else {
-                    $refs[$k] = $cookie;
-                    $zvalIsRef = $vals[$k] === $cookie;
-                }
-
-                if ($zvalIsRef) {
-                    $vals[$k] = &$stub;         // Break hard references to make $queue completely
-                    unset($stub);               // independent from the original structure
-                    if ($v instanceof Stub && isset($hardRefs[spl_object_id($v)])) {
-                        $vals[$k] = $refs[$k] = $v;
-                        if ($v->value instanceof Stub && (Stub::TYPE_OBJECT === $v->value->type || Stub::TYPE_RESOURCE === $v->value->type)) {
-                            ++$v->value->refCount;
-                        }
-                        ++$v->refCount;
-                        continue;
-                    }
-                    $refs[$k] = $vals[$k] = new Stub();
-                    $refs[$k]->value = $v;
-                    $h = spl_object_id($refs[$k]);
-                    $hardRefs[$h] = &$refs[$k];
-                    $values[$h] = $v;
-                    $vals[$k]->handle = ++$refsCounter;
-                }
-                // Create $stub when the original value $v can not be used directly
-                // If $v is a nested structure, put that structure in array $a
-                switch (true) {
-                    case null === $v:
-                    case \is_bool($v):
-                    case \is_int($v):
-                    case \is_float($v):
-                        continue 2;
-                    case \is_string($v):
-                        if ('' === $v) {
-                            continue 2;
-                        }
-                        if (!preg_match('//u', $v)) {
-                            $stub = new Stub();
-                            $stub->type = Stub::TYPE_STRING;
-                            $stub->class = Stub::STRING_BINARY;
-                            if (0 <= $maxString && 0 < $cut = \strlen($v) - $maxString) {
-                                $stub->cut = $cut;
-                                $stub->value = substr($v, 0, -$cut);
-                            } else {
-                                $stub->value = $v;
-                            }
-                        } elseif (0 <= $maxString && isset($v[1 + ($maxString >> 2)]) && 0 < $cut = mb_strlen($v, 'UTF-8') - $maxString) {
-                            $stub = new Stub();
-                            $stub->type = Stub::TYPE_STRING;
-                            $stub->class = Stub::STRING_UTF8;
-                            $stub->cut = $cut;
-                            $stub->value = mb_substr($v, 0, $maxString, 'UTF-8');
-                        } else {
-                            continue 2;
-                        }
-                        $a = null;
-                        break;
-
-                    case \is_array($v):
-                        if (!$v) {
-                            continue 2;
-                        }
-                        $stub = $arrayStub;
-                        $stub->class = Stub::ARRAY_INDEXED;
-
-                        $j = -1;
-                        foreach ($v as $gk => $gv) {
-                            if ($gk !== ++$j) {
-                                $stub->class = Stub::ARRAY_ASSOC;
-                                break;
-                            }
-                        }
-                        $a = $v;
-
-                        if (Stub::ARRAY_ASSOC === $stub->class) {
-                            // Copies of $GLOBALS have very strange behavior,
-                            // let's detect them with some black magic
-                            $a[$gid] = true;
-
-                            // Happens with copies of $GLOBALS
-                            if (isset($v[$gid])) {
-                                unset($v[$gid]);
-                                $a = [];
-                                foreach ($v as $gk => &$gv) {
-                                    $a[$gk] = &$gv;
-                                }
-                                unset($gv);
-                            } else {
-                                $a = $v;
-                            }
-                        }
-                        break;
-
-                    case \is_object($v):
-                    case $v instanceof \__PHP_Incomplete_Class:
-                        if (empty($objRefs[$h = spl_object_id($v)])) {
-                            $stub = new Stub();
-                            $stub->type = Stub::TYPE_OBJECT;
-                            $stub->class = \get_class($v);
-                            $stub->value = $v;
-                            $stub->handle = $h;
-                            $a = $this->castObject($stub, 0 < $i);
-                            if ($v !== $stub->value) {
-                                if (Stub::TYPE_OBJECT !== $stub->type || null === $stub->value) {
-                                    break;
-                                }
-                                $stub->handle = $h = spl_object_id($stub->value);
-                            }
-                            $stub->value = null;
-                            if (0 <= $maxItems && $maxItems <= $pos && $minimumDepthReached) {
-                                $stub->cut = \count($a);
-                                $a = null;
-                            }
-                        }
-                        if (empty($objRefs[$h])) {
-                            $objRefs[$h] = $stub;
-                            $objects[] = $v;
-                        } else {
-                            $stub = $objRefs[$h];
-                            ++$stub->refCount;
-                            $a = null;
-                        }
-                        break;
-
-                    default: // resource
-                        if (empty($resRefs[$h = (int) $v])) {
-                            $stub = new Stub();
-                            $stub->type = Stub::TYPE_RESOURCE;
-                            if ('Unknown' === $stub->class = @get_resource_type($v)) {
-                                $stub->class = 'Closed';
-                            }
-                            $stub->value = $v;
-                            $stub->handle = $h;
-                            $a = $this->castResource($stub, 0 < $i);
-                            $stub->value = null;
-                            if (0 <= $maxItems && $maxItems <= $pos && $minimumDepthReached) {
-                                $stub->cut = \count($a);
-                                $a = null;
-                            }
-                        }
-                        if (empty($resRefs[$h])) {
-                            $resRefs[$h] = $stub;
-                        } else {
-                            $stub = $resRefs[$h];
-                            ++$stub->refCount;
-                            $a = null;
-                        }
-                        break;
-                }
-
-                if ($a) {
-                    if (!$minimumDepthReached || 0 > $maxItems) {
-                        $queue[$len] = $a;
-                        $stub->position = $len++;
-                    } elseif ($pos < $maxItems) {
-                        if ($maxItems < $pos += \count($a)) {
-                            $a = \array_slice($a, 0, $maxItems - $pos, true);
-                            if ($stub->cut >= 0) {
-                                $stub->cut += $pos - $maxItems;
-                            }
-                        }
-                        $queue[$len] = $a;
-                        $stub->position = $len++;
-                    } elseif ($stub->cut >= 0) {
-                        $stub->cut += \count($a);
-                        $stub->position = 0;
-                    }
-                }
-
-                if ($arrayStub === $stub) {
-                    if ($arrayStub->cut) {
-                        $stub = [$arrayStub->cut, $arrayStub->class => $arrayStub->position];
-                        $arrayStub->cut = 0;
-                    } elseif (isset(self::$arrayCache[$arrayStub->class][$arrayStub->position])) {
-                        $stub = self::$arrayCache[$arrayStub->class][$arrayStub->position];
-                    } else {
-                        self::$arrayCache[$arrayStub->class][$arrayStub->position] = $stub = [$arrayStub->class => $arrayStub->position];
-                    }
-                }
-
-                if ($zvalIsRef) {
-                    $refs[$k]->value = $stub;
-                } else {
-                    $vals[$k] = $stub;
-                }
-            }
-
-            if ($fromObjCast) {
-                $fromObjCast = false;
-                $refs = $vals;
-                $vals = [];
-                $j = -1;
-                foreach ($queue[$i] as $k => $v) {
-                    foreach ([$k => true] as $gk => $gv) {
-                    }
-                    if ($gk !== $k) {
-                        $vals = (object) $vals;
-                        $vals->{$k} = $refs[++$j];
-                        $vals = (array) $vals;
-                    } else {
-                        $vals[$k] = $refs[++$j];
-                    }
-                }
-            }
-
-            $queue[$i] = $vals;
-        }
-
-        foreach ($values as $h => $v) {
-            $hardRefs[$h] = $v;
-        }
-
-        return $queue;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php b/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php
deleted file mode 100644
index dc77d03ecd80caa09e981a2ef34d1b89b4092977..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Command\Descriptor;
-
-use Symfony\Component\Console\Formatter\OutputFormatterStyle;
-use Symfony\Component\Console\Input\ArrayInput;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Style\SymfonyStyle;
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Dumper\CliDumper;
-
-/**
- * Describe collected data clones for cli output.
- *
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- *
- * @final
- */
-class CliDescriptor implements DumpDescriptorInterface
-{
-    private $dumper;
-    private $lastIdentifier;
-    private $supportsHref;
-
-    public function __construct(CliDumper $dumper)
-    {
-        $this->dumper = $dumper;
-        $this->supportsHref = method_exists(OutputFormatterStyle::class, 'setHref');
-    }
-
-    public function describe(OutputInterface $output, Data $data, array $context, int $clientId): void
-    {
-        $io = $output instanceof SymfonyStyle ? $output : new SymfonyStyle(new ArrayInput([]), $output);
-        $this->dumper->setColors($output->isDecorated());
-
-        $rows = [['date', date('r', $context['timestamp'])]];
-        $lastIdentifier = $this->lastIdentifier;
-        $this->lastIdentifier = $clientId;
-
-        $section = "Received from client #$clientId";
-        if (isset($context['request'])) {
-            $request = $context['request'];
-            $this->lastIdentifier = $request['identifier'];
-            $section = sprintf('%s %s', $request['method'], $request['uri']);
-            if ($controller = $request['controller']) {
-                $rows[] = ['controller', rtrim($this->dumper->dump($controller, true), "\n")];
-            }
-        } elseif (isset($context['cli'])) {
-            $this->lastIdentifier = $context['cli']['identifier'];
-            $section = '$ '.$context['cli']['command_line'];
-        }
-
-        if ($this->lastIdentifier !== $lastIdentifier) {
-            $io->section($section);
-        }
-
-        if (isset($context['source'])) {
-            $source = $context['source'];
-            $sourceInfo = sprintf('%s on line %d', $source['name'], $source['line']);
-            $fileLink = $source['file_link'] ?? null;
-            if ($this->supportsHref && $fileLink) {
-                $sourceInfo = sprintf('<href=%s>%s</>', $fileLink, $sourceInfo);
-            }
-            $rows[] = ['source', $sourceInfo];
-            $file = $source['file_relative'] ?? $source['file'];
-            $rows[] = ['file', $file];
-        }
-
-        $io->table([], $rows);
-
-        if (!$this->supportsHref && isset($fileLink)) {
-            $io->writeln(['<info>Open source in your IDE/browser:</info>', $fileLink]);
-            $io->newLine();
-        }
-
-        $this->dumper->dump($data);
-        $io->newLine();
-    }
-}
diff --git a/vendor/symfony/var-dumper/Command/Descriptor/DumpDescriptorInterface.php b/vendor/symfony/var-dumper/Command/Descriptor/DumpDescriptorInterface.php
deleted file mode 100644
index 267d27bfaccf8de6ee717aa4edd596e93ae3677c..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Command/Descriptor/DumpDescriptorInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Command\Descriptor;
-
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\VarDumper\Cloner\Data;
-
-/**
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- */
-interface DumpDescriptorInterface
-{
-    public function describe(OutputInterface $output, Data $data, array $context, int $clientId): void;
-}
diff --git a/vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php b/vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php
deleted file mode 100644
index 35a203b0000a59de122ec835c9dba845013fc3f0..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Command\Descriptor;
-
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Dumper\HtmlDumper;
-
-/**
- * Describe collected data clones for html output.
- *
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- *
- * @final
- */
-class HtmlDescriptor implements DumpDescriptorInterface
-{
-    private $dumper;
-    private $initialized = false;
-
-    public function __construct(HtmlDumper $dumper)
-    {
-        $this->dumper = $dumper;
-    }
-
-    public function describe(OutputInterface $output, Data $data, array $context, int $clientId): void
-    {
-        if (!$this->initialized) {
-            $styles = file_get_contents(__DIR__.'/../../Resources/css/htmlDescriptor.css');
-            $scripts = file_get_contents(__DIR__.'/../../Resources/js/htmlDescriptor.js');
-            $output->writeln("<style>$styles</style><script>$scripts</script>");
-            $this->initialized = true;
-        }
-
-        $title = '-';
-        if (isset($context['request'])) {
-            $request = $context['request'];
-            $controller = "<span class='dumped-tag'>{$this->dumper->dump($request['controller'], true, ['maxDepth' => 0])}</span>";
-            $title = sprintf('<code>%s</code> <a href="%s">%s</a>', $request['method'], $uri = $request['uri'], $uri);
-            $dedupIdentifier = $request['identifier'];
-        } elseif (isset($context['cli'])) {
-            $title = '<code>$ </code>'.$context['cli']['command_line'];
-            $dedupIdentifier = $context['cli']['identifier'];
-        } else {
-            $dedupIdentifier = uniqid('', true);
-        }
-
-        $sourceDescription = '';
-        if (isset($context['source'])) {
-            $source = $context['source'];
-            $projectDir = $source['project_dir'] ?? null;
-            $sourceDescription = sprintf('%s on line %d', $source['name'], $source['line']);
-            if (isset($source['file_link'])) {
-                $sourceDescription = sprintf('<a href="%s">%s</a>', $source['file_link'], $sourceDescription);
-            }
-        }
-
-        $isoDate = $this->extractDate($context, 'c');
-        $tags = array_filter([
-            'controller' => $controller ?? null,
-            'project dir' => $projectDir ?? null,
-        ]);
-
-        $output->writeln(<<<HTML
-<article data-dedup-id="$dedupIdentifier">
-    <header>
-        <div class="row">
-            <h2 class="col">$title</h2>
-            <time class="col text-small" title="$isoDate" datetime="$isoDate">
-                {$this->extractDate($context)}
-            </time>
-        </div>
-        {$this->renderTags($tags)}
-    </header>
-    <section class="body">
-        <p class="text-small">
-            $sourceDescription
-        </p>
-        {$this->dumper->dump($data, true)}
-    </section>
-</article>
-HTML
-        );
-    }
-
-    private function extractDate(array $context, string $format = 'r'): string
-    {
-        return date($format, $context['timestamp']);
-    }
-
-    private function renderTags(array $tags): string
-    {
-        if (!$tags) {
-            return '';
-        }
-
-        $renderedTags = '';
-        foreach ($tags as $key => $value) {
-            $renderedTags .= sprintf('<li><span class="badge">%s</span>%s</li>', $key, $value);
-        }
-
-        return <<<HTML
-<div class="row">
-    <ul class="tags">
-        $renderedTags
-    </ul>
-</div>
-HTML;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Command/ServerDumpCommand.php b/vendor/symfony/var-dumper/Command/ServerDumpCommand.php
deleted file mode 100644
index c8a61da98c5b628e4864a801a9b2e7d110cebc6c..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Command/ServerDumpCommand.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Command;
-
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Exception\InvalidArgumentException;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Style\SymfonyStyle;
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Command\Descriptor\CliDescriptor;
-use Symfony\Component\VarDumper\Command\Descriptor\DumpDescriptorInterface;
-use Symfony\Component\VarDumper\Command\Descriptor\HtmlDescriptor;
-use Symfony\Component\VarDumper\Dumper\CliDumper;
-use Symfony\Component\VarDumper\Dumper\HtmlDumper;
-use Symfony\Component\VarDumper\Server\DumpServer;
-
-/**
- * Starts a dump server to collect and output dumps on a single place with multiple formats support.
- *
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- *
- * @final
- */
-class ServerDumpCommand extends Command
-{
-    protected static $defaultName = 'server:dump';
-
-    private $server;
-
-    /** @var DumpDescriptorInterface[] */
-    private $descriptors;
-
-    public function __construct(DumpServer $server, array $descriptors = [])
-    {
-        $this->server = $server;
-        $this->descriptors = $descriptors + [
-            'cli' => new CliDescriptor(new CliDumper()),
-            'html' => new HtmlDescriptor(new HtmlDumper()),
-        ];
-
-        parent::__construct();
-    }
-
-    protected function configure()
-    {
-        $availableFormats = implode(', ', array_keys($this->descriptors));
-
-        $this
-            ->addOption('format', null, InputOption::VALUE_REQUIRED, sprintf('The output format (%s)', $availableFormats), 'cli')
-            ->setDescription('Starts a dump server that collects and displays dumps in a single place')
-            ->setHelp(<<<'EOF'
-<info>%command.name%</info> starts a dump server that collects and displays
-dumps in a single place for debugging you application:
-
-  <info>php %command.full_name%</info>
-
-You can consult dumped data in HTML format in your browser by providing the <comment>--format=html</comment> option
-and redirecting the output to a file:
-
-  <info>php %command.full_name% --format="html" > dump.html</info>
-
-EOF
-            )
-        ;
-    }
-
-    protected function execute(InputInterface $input, OutputInterface $output): int
-    {
-        $io = new SymfonyStyle($input, $output);
-        $format = $input->getOption('format');
-
-        if (!$descriptor = $this->descriptors[$format] ?? null) {
-            throw new InvalidArgumentException(sprintf('Unsupported format "%s".', $format));
-        }
-
-        $errorIo = $io->getErrorStyle();
-        $errorIo->title('Symfony Var Dumper Server');
-
-        $this->server->start();
-
-        $errorIo->success(sprintf('Server listening on %s', $this->server->getHost()));
-        $errorIo->comment('Quit the server with CONTROL-C.');
-
-        $this->server->listen(function (Data $data, array $context, int $clientId) use ($descriptor, $io) {
-            $descriptor->describe($io, $data, $context, $clientId);
-        });
-    }
-}
diff --git a/vendor/symfony/var-dumper/Dumper/AbstractDumper.php b/vendor/symfony/var-dumper/Dumper/AbstractDumper.php
deleted file mode 100644
index c3497e32a1ea3cbcf8530dba3b75aaefd76e1d33..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Dumper/AbstractDumper.php
+++ /dev/null
@@ -1,204 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Dumper;
-
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Cloner\DumperInterface;
-
-/**
- * Abstract mechanism for dumping a Data object.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-abstract class AbstractDumper implements DataDumperInterface, DumperInterface
-{
-    const DUMP_LIGHT_ARRAY = 1;
-    const DUMP_STRING_LENGTH = 2;
-    const DUMP_COMMA_SEPARATOR = 4;
-    const DUMP_TRAILING_COMMA = 8;
-
-    public static $defaultOutput = 'php://output';
-
-    protected $line = '';
-    protected $lineDumper;
-    protected $outputStream;
-    protected $decimalPoint; // This is locale dependent
-    protected $indentPad = '  ';
-    protected $flags;
-
-    private $charset = '';
-
-    /**
-     * @param callable|resource|string|null $output  A line dumper callable, an opened stream or an output path, defaults to static::$defaultOutput
-     * @param string|null                   $charset The default character encoding to use for non-UTF8 strings
-     * @param int                           $flags   A bit field of static::DUMP_* constants to fine tune dumps representation
-     */
-    public function __construct($output = null, string $charset = null, int $flags = 0)
-    {
-        $this->flags = $flags;
-        $this->setCharset($charset ?: ini_get('php.output_encoding') ?: ini_get('default_charset') ?: 'UTF-8');
-        $this->decimalPoint = localeconv();
-        $this->decimalPoint = $this->decimalPoint['decimal_point'];
-        $this->setOutput($output ?: static::$defaultOutput);
-        if (!$output && \is_string(static::$defaultOutput)) {
-            static::$defaultOutput = $this->outputStream;
-        }
-    }
-
-    /**
-     * Sets the output destination of the dumps.
-     *
-     * @param callable|resource|string $output A line dumper callable, an opened stream or an output path
-     *
-     * @return callable|resource|string The previous output destination
-     */
-    public function setOutput($output)
-    {
-        $prev = null !== $this->outputStream ? $this->outputStream : $this->lineDumper;
-
-        if (\is_callable($output)) {
-            $this->outputStream = null;
-            $this->lineDumper = $output;
-        } else {
-            if (\is_string($output)) {
-                $output = fopen($output, 'wb');
-            }
-            $this->outputStream = $output;
-            $this->lineDumper = [$this, 'echoLine'];
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Sets the default character encoding to use for non-UTF8 strings.
-     *
-     * @return string The previous charset
-     */
-    public function setCharset(string $charset)
-    {
-        $prev = $this->charset;
-
-        $charset = strtoupper($charset);
-        $charset = null === $charset || 'UTF-8' === $charset || 'UTF8' === $charset ? 'CP1252' : $charset;
-
-        $this->charset = $charset;
-
-        return $prev;
-    }
-
-    /**
-     * Sets the indentation pad string.
-     *
-     * @param string $pad A string that will be prepended to dumped lines, repeated by nesting level
-     *
-     * @return string The previous indent pad
-     */
-    public function setIndentPad(string $pad)
-    {
-        $prev = $this->indentPad;
-        $this->indentPad = $pad;
-
-        return $prev;
-    }
-
-    /**
-     * Dumps a Data object.
-     *
-     * @param callable|resource|string|true|null $output A line dumper callable, an opened stream, an output path or true to return the dump
-     *
-     * @return string|null The dump as string when $output is true
-     */
-    public function dump(Data $data, $output = null)
-    {
-        $this->decimalPoint = localeconv();
-        $this->decimalPoint = $this->decimalPoint['decimal_point'];
-
-        if ($locale = $this->flags & (self::DUMP_COMMA_SEPARATOR | self::DUMP_TRAILING_COMMA) ? setlocale(\LC_NUMERIC, 0) : null) {
-            setlocale(\LC_NUMERIC, 'C');
-        }
-
-        if ($returnDump = true === $output) {
-            $output = fopen('php://memory', 'r+b');
-        }
-        if ($output) {
-            $prevOutput = $this->setOutput($output);
-        }
-        try {
-            $data->dump($this);
-            $this->dumpLine(-1);
-
-            if ($returnDump) {
-                $result = stream_get_contents($output, -1, 0);
-                fclose($output);
-
-                return $result;
-            }
-        } finally {
-            if ($output) {
-                $this->setOutput($prevOutput);
-            }
-            if ($locale) {
-                setlocale(\LC_NUMERIC, $locale);
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Dumps the current line.
-     *
-     * @param int $depth The recursive depth in the dumped structure for the line being dumped,
-     *                   or -1 to signal the end-of-dump to the line dumper callable
-     */
-    protected function dumpLine(int $depth)
-    {
-        ($this->lineDumper)($this->line, $depth, $this->indentPad);
-        $this->line = '';
-    }
-
-    /**
-     * Generic line dumper callback.
-     */
-    protected function echoLine(string $line, int $depth, string $indentPad)
-    {
-        if (-1 !== $depth) {
-            fwrite($this->outputStream, str_repeat($indentPad, $depth).$line."\n");
-        }
-    }
-
-    /**
-     * Converts a non-UTF-8 string to UTF-8.
-     *
-     * @return string|null The string converted to UTF-8
-     */
-    protected function utf8Encode(?string $s)
-    {
-        if (null === $s || preg_match('//u', $s)) {
-            return $s;
-        }
-
-        if (!\function_exists('iconv')) {
-            throw new \RuntimeException('Unable to convert a non-UTF-8 string to UTF-8: required function iconv() does not exist. You should install ext-iconv or symfony/polyfill-iconv.');
-        }
-
-        if (false !== $c = @iconv($this->charset, 'UTF-8', $s)) {
-            return $c;
-        }
-        if ('CP1252' !== $this->charset && false !== $c = @iconv('CP1252', 'UTF-8', $s)) {
-            return $c;
-        }
-
-        return iconv('CP850', 'UTF-8', $s);
-    }
-}
diff --git a/vendor/symfony/var-dumper/Dumper/CliDumper.php b/vendor/symfony/var-dumper/Dumper/CliDumper.php
deleted file mode 100644
index 5bb8a0d8987f658998ab0c256b14062f1ebaa5f9..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Dumper/CliDumper.php
+++ /dev/null
@@ -1,640 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Dumper;
-
-use Symfony\Component\VarDumper\Cloner\Cursor;
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * CliDumper dumps variables for command line output.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class CliDumper extends AbstractDumper
-{
-    public static $defaultColors;
-    public static $defaultOutput = 'php://stdout';
-
-    protected $colors;
-    protected $maxStringWidth = 0;
-    protected $styles = [
-        // See http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
-        'default' => '0;38;5;208',
-        'num' => '1;38;5;38',
-        'const' => '1;38;5;208',
-        'str' => '1;38;5;113',
-        'note' => '38;5;38',
-        'ref' => '38;5;247',
-        'public' => '',
-        'protected' => '',
-        'private' => '',
-        'meta' => '38;5;170',
-        'key' => '38;5;113',
-        'index' => '38;5;38',
-    ];
-
-    protected static $controlCharsRx = '/[\x00-\x1F\x7F]+/';
-    protected static $controlCharsMap = [
-        "\t" => '\t',
-        "\n" => '\n',
-        "\v" => '\v',
-        "\f" => '\f',
-        "\r" => '\r',
-        "\033" => '\e',
-    ];
-
-    protected $collapseNextHash = false;
-    protected $expandNextHash = false;
-
-    private $displayOptions = [
-        'fileLinkFormat' => null,
-    ];
-
-    private $handlesHrefGracefully;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct($output = null, string $charset = null, int $flags = 0)
-    {
-        parent::__construct($output, $charset, $flags);
-
-        if ('\\' === \DIRECTORY_SEPARATOR && !$this->isWindowsTrueColor()) {
-            // Use only the base 16 xterm colors when using ANSICON or standard Windows 10 CLI
-            $this->setStyles([
-                'default' => '31',
-                'num' => '1;34',
-                'const' => '1;31',
-                'str' => '1;32',
-                'note' => '34',
-                'ref' => '1;30',
-                'meta' => '35',
-                'key' => '32',
-                'index' => '34',
-            ]);
-        }
-
-        $this->displayOptions['fileLinkFormat'] = ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format') ?: 'file://%f#L%l';
-    }
-
-    /**
-     * Enables/disables colored output.
-     */
-    public function setColors(bool $colors)
-    {
-        $this->colors = $colors;
-    }
-
-    /**
-     * Sets the maximum number of characters per line for dumped strings.
-     */
-    public function setMaxStringWidth(int $maxStringWidth)
-    {
-        $this->maxStringWidth = $maxStringWidth;
-    }
-
-    /**
-     * Configures styles.
-     *
-     * @param array $styles A map of style names to style definitions
-     */
-    public function setStyles(array $styles)
-    {
-        $this->styles = $styles + $this->styles;
-    }
-
-    /**
-     * Configures display options.
-     *
-     * @param array $displayOptions A map of display options to customize the behavior
-     */
-    public function setDisplayOptions(array $displayOptions)
-    {
-        $this->displayOptions = $displayOptions + $this->displayOptions;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dumpScalar(Cursor $cursor, string $type, $value)
-    {
-        $this->dumpKey($cursor);
-
-        $style = 'const';
-        $attr = $cursor->attr;
-
-        switch ($type) {
-            case 'default':
-                $style = 'default';
-                break;
-
-            case 'integer':
-                $style = 'num';
-                break;
-
-            case 'double':
-                $style = 'num';
-
-                switch (true) {
-                    case \INF === $value:  $value = 'INF'; break;
-                    case -\INF === $value: $value = '-INF'; break;
-                    case is_nan($value):  $value = 'NAN'; break;
-                    default:
-                        $value = (string) $value;
-                        if (false === strpos($value, $this->decimalPoint)) {
-                            $value .= $this->decimalPoint.'0';
-                        }
-                        break;
-                }
-                break;
-
-            case 'NULL':
-                $value = 'null';
-                break;
-
-            case 'boolean':
-                $value = $value ? 'true' : 'false';
-                break;
-
-            default:
-                $attr += ['value' => $this->utf8Encode($value)];
-                $value = $this->utf8Encode($type);
-                break;
-        }
-
-        $this->line .= $this->style($style, $value, $attr);
-
-        $this->endValue($cursor);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dumpString(Cursor $cursor, string $str, bool $bin, int $cut)
-    {
-        $this->dumpKey($cursor);
-        $attr = $cursor->attr;
-
-        if ($bin) {
-            $str = $this->utf8Encode($str);
-        }
-        if ('' === $str) {
-            $this->line .= '""';
-            $this->endValue($cursor);
-        } else {
-            $attr += [
-                'length' => 0 <= $cut ? mb_strlen($str, 'UTF-8') + $cut : 0,
-                'binary' => $bin,
-            ];
-            $str = $bin && false !== strpos($str, "\0") ? [$str] : explode("\n", $str);
-            if (isset($str[1]) && !isset($str[2]) && !isset($str[1][0])) {
-                unset($str[1]);
-                $str[0] .= "\n";
-            }
-            $m = \count($str) - 1;
-            $i = $lineCut = 0;
-
-            if (self::DUMP_STRING_LENGTH & $this->flags) {
-                $this->line .= '('.$attr['length'].') ';
-            }
-            if ($bin) {
-                $this->line .= 'b';
-            }
-
-            if ($m) {
-                $this->line .= '"""';
-                $this->dumpLine($cursor->depth);
-            } else {
-                $this->line .= '"';
-            }
-
-            foreach ($str as $str) {
-                if ($i < $m) {
-                    $str .= "\n";
-                }
-                if (0 < $this->maxStringWidth && $this->maxStringWidth < $len = mb_strlen($str, 'UTF-8')) {
-                    $str = mb_substr($str, 0, $this->maxStringWidth, 'UTF-8');
-                    $lineCut = $len - $this->maxStringWidth;
-                }
-                if ($m && 0 < $cursor->depth) {
-                    $this->line .= $this->indentPad;
-                }
-                if ('' !== $str) {
-                    $this->line .= $this->style('str', $str, $attr);
-                }
-                if ($i++ == $m) {
-                    if ($m) {
-                        if ('' !== $str) {
-                            $this->dumpLine($cursor->depth);
-                            if (0 < $cursor->depth) {
-                                $this->line .= $this->indentPad;
-                            }
-                        }
-                        $this->line .= '"""';
-                    } else {
-                        $this->line .= '"';
-                    }
-                    if ($cut < 0) {
-                        $this->line .= '…';
-                        $lineCut = 0;
-                    } elseif ($cut) {
-                        $lineCut += $cut;
-                    }
-                }
-                if ($lineCut) {
-                    $this->line .= '…'.$lineCut;
-                    $lineCut = 0;
-                }
-
-                if ($i > $m) {
-                    $this->endValue($cursor);
-                } else {
-                    $this->dumpLine($cursor->depth);
-                }
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function enterHash(Cursor $cursor, int $type, $class, bool $hasChild)
-    {
-        if (null === $this->colors) {
-            $this->colors = $this->supportsColors();
-        }
-
-        $this->dumpKey($cursor);
-        $attr = $cursor->attr;
-
-        if ($this->collapseNextHash) {
-            $cursor->skipChildren = true;
-            $this->collapseNextHash = $hasChild = false;
-        }
-
-        $class = $this->utf8Encode($class);
-        if (Cursor::HASH_OBJECT === $type) {
-            $prefix = $class && 'stdClass' !== $class ? $this->style('note', $class, $attr).(empty($attr['cut_hash']) ? ' {' : '') : '{';
-        } elseif (Cursor::HASH_RESOURCE === $type) {
-            $prefix = $this->style('note', $class.' resource', $attr).($hasChild ? ' {' : ' ');
-        } else {
-            $prefix = $class && !(self::DUMP_LIGHT_ARRAY & $this->flags) ? $this->style('note', 'array:'.$class).' [' : '[';
-        }
-
-        if (($cursor->softRefCount || 0 < $cursor->softRefHandle) && empty($attr['cut_hash'])) {
-            $prefix .= $this->style('ref', (Cursor::HASH_RESOURCE === $type ? '@' : '#').(0 < $cursor->softRefHandle ? $cursor->softRefHandle : $cursor->softRefTo), ['count' => $cursor->softRefCount]);
-        } elseif ($cursor->hardRefTo && !$cursor->refIndex && $class) {
-            $prefix .= $this->style('ref', '&'.$cursor->hardRefTo, ['count' => $cursor->hardRefCount]);
-        } elseif (!$hasChild && Cursor::HASH_RESOURCE === $type) {
-            $prefix = substr($prefix, 0, -1);
-        }
-
-        $this->line .= $prefix;
-
-        if ($hasChild) {
-            $this->dumpLine($cursor->depth);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function leaveHash(Cursor $cursor, int $type, $class, bool $hasChild, int $cut)
-    {
-        if (empty($cursor->attr['cut_hash'])) {
-            $this->dumpEllipsis($cursor, $hasChild, $cut);
-            $this->line .= Cursor::HASH_OBJECT === $type ? '}' : (Cursor::HASH_RESOURCE !== $type ? ']' : ($hasChild ? '}' : ''));
-        }
-
-        $this->endValue($cursor);
-    }
-
-    /**
-     * Dumps an ellipsis for cut children.
-     *
-     * @param bool $hasChild When the dump of the hash has child item
-     * @param int  $cut      The number of items the hash has been cut by
-     */
-    protected function dumpEllipsis(Cursor $cursor, $hasChild, $cut)
-    {
-        if ($cut) {
-            $this->line .= ' …';
-            if (0 < $cut) {
-                $this->line .= $cut;
-            }
-            if ($hasChild) {
-                $this->dumpLine($cursor->depth + 1);
-            }
-        }
-    }
-
-    /**
-     * Dumps a key in a hash structure.
-     */
-    protected function dumpKey(Cursor $cursor)
-    {
-        if (null !== $key = $cursor->hashKey) {
-            if ($cursor->hashKeyIsBinary) {
-                $key = $this->utf8Encode($key);
-            }
-            $attr = ['binary' => $cursor->hashKeyIsBinary];
-            $bin = $cursor->hashKeyIsBinary ? 'b' : '';
-            $style = 'key';
-            switch ($cursor->hashType) {
-                default:
-                case Cursor::HASH_INDEXED:
-                    if (self::DUMP_LIGHT_ARRAY & $this->flags) {
-                        break;
-                    }
-                    $style = 'index';
-                    // no break
-                case Cursor::HASH_ASSOC:
-                    if (\is_int($key)) {
-                        $this->line .= $this->style($style, $key).' => ';
-                    } else {
-                        $this->line .= $bin.'"'.$this->style($style, $key).'" => ';
-                    }
-                    break;
-
-                case Cursor::HASH_RESOURCE:
-                    $key = "\0~\0".$key;
-                    // no break
-                case Cursor::HASH_OBJECT:
-                    if (!isset($key[0]) || "\0" !== $key[0]) {
-                        $this->line .= '+'.$bin.$this->style('public', $key).': ';
-                    } elseif (0 < strpos($key, "\0", 1)) {
-                        $key = explode("\0", substr($key, 1), 2);
-
-                        switch ($key[0][0]) {
-                            case '+': // User inserted keys
-                                $attr['dynamic'] = true;
-                                $this->line .= '+'.$bin.'"'.$this->style('public', $key[1], $attr).'": ';
-                                break 2;
-                            case '~':
-                                $style = 'meta';
-                                if (isset($key[0][1])) {
-                                    parse_str(substr($key[0], 1), $attr);
-                                    $attr += ['binary' => $cursor->hashKeyIsBinary];
-                                }
-                                break;
-                            case '*':
-                                $style = 'protected';
-                                $bin = '#'.$bin;
-                                break;
-                            default:
-                                $attr['class'] = $key[0];
-                                $style = 'private';
-                                $bin = '-'.$bin;
-                                break;
-                        }
-
-                        if (isset($attr['collapse'])) {
-                            if ($attr['collapse']) {
-                                $this->collapseNextHash = true;
-                            } else {
-                                $this->expandNextHash = true;
-                            }
-                        }
-
-                        $this->line .= $bin.$this->style($style, $key[1], $attr).(isset($attr['separator']) ? $attr['separator'] : ': ');
-                    } else {
-                        // This case should not happen
-                        $this->line .= '-'.$bin.'"'.$this->style('private', $key, ['class' => '']).'": ';
-                    }
-                    break;
-            }
-
-            if ($cursor->hardRefTo) {
-                $this->line .= $this->style('ref', '&'.($cursor->hardRefCount ? $cursor->hardRefTo : ''), ['count' => $cursor->hardRefCount]).' ';
-            }
-        }
-    }
-
-    /**
-     * Decorates a value with some style.
-     *
-     * @param string $style The type of style being applied
-     * @param string $value The value being styled
-     * @param array  $attr  Optional context information
-     *
-     * @return string The value with style decoration
-     */
-    protected function style($style, $value, $attr = [])
-    {
-        if (null === $this->colors) {
-            $this->colors = $this->supportsColors();
-        }
-
-        if (null === $this->handlesHrefGracefully) {
-            $this->handlesHrefGracefully = 'JetBrains-JediTerm' !== getenv('TERMINAL_EMULATOR') && !getenv('KONSOLE_VERSION');
-        }
-
-        if (isset($attr['ellipsis'], $attr['ellipsis-type'])) {
-            $prefix = substr($value, 0, -$attr['ellipsis']);
-            if ('cli' === \PHP_SAPI && 'path' === $attr['ellipsis-type'] && isset($_SERVER[$pwd = '\\' === \DIRECTORY_SEPARATOR ? 'CD' : 'PWD']) && 0 === strpos($prefix, $_SERVER[$pwd])) {
-                $prefix = '.'.substr($prefix, \strlen($_SERVER[$pwd]));
-            }
-            if (!empty($attr['ellipsis-tail'])) {
-                $prefix .= substr($value, -$attr['ellipsis'], $attr['ellipsis-tail']);
-                $value = substr($value, -$attr['ellipsis'] + $attr['ellipsis-tail']);
-            } else {
-                $value = substr($value, -$attr['ellipsis']);
-            }
-
-            $value = $this->style('default', $prefix).$this->style($style, $value);
-
-            goto href;
-        }
-
-        $map = static::$controlCharsMap;
-        $startCchr = $this->colors ? "\033[m\033[{$this->styles['default']}m" : '';
-        $endCchr = $this->colors ? "\033[m\033[{$this->styles[$style]}m" : '';
-        $value = preg_replace_callback(static::$controlCharsRx, function ($c) use ($map, $startCchr, $endCchr) {
-            $s = $startCchr;
-            $c = $c[$i = 0];
-            do {
-                $s .= isset($map[$c[$i]]) ? $map[$c[$i]] : sprintf('\x%02X', \ord($c[$i]));
-            } while (isset($c[++$i]));
-
-            return $s.$endCchr;
-        }, $value, -1, $cchrCount);
-
-        if ($this->colors) {
-            if ($cchrCount && "\033" === $value[0]) {
-                $value = substr($value, \strlen($startCchr));
-            } else {
-                $value = "\033[{$this->styles[$style]}m".$value;
-            }
-            if ($cchrCount && $endCchr === substr($value, -\strlen($endCchr))) {
-                $value = substr($value, 0, -\strlen($endCchr));
-            } else {
-                $value .= "\033[{$this->styles['default']}m";
-            }
-        }
-
-        href:
-        if ($this->colors && $this->handlesHrefGracefully) {
-            if (isset($attr['file']) && $href = $this->getSourceLink($attr['file'], isset($attr['line']) ? $attr['line'] : 0)) {
-                if ('note' === $style) {
-                    $value .= "\033]8;;{$href}\033\\^\033]8;;\033\\";
-                } else {
-                    $attr['href'] = $href;
-                }
-            }
-            if (isset($attr['href'])) {
-                $value = "\033]8;;{$attr['href']}\033\\{$value}\033]8;;\033\\";
-            }
-        } elseif ($attr['if_links'] ?? false) {
-            return '';
-        }
-
-        return $value;
-    }
-
-    /**
-     * @return bool Tells if the current output stream supports ANSI colors or not
-     */
-    protected function supportsColors()
-    {
-        if ($this->outputStream !== static::$defaultOutput) {
-            return $this->hasColorSupport($this->outputStream);
-        }
-        if (null !== static::$defaultColors) {
-            return static::$defaultColors;
-        }
-        if (isset($_SERVER['argv'][1])) {
-            $colors = $_SERVER['argv'];
-            $i = \count($colors);
-            while (--$i > 0) {
-                if (isset($colors[$i][5])) {
-                    switch ($colors[$i]) {
-                        case '--ansi':
-                        case '--color':
-                        case '--color=yes':
-                        case '--color=force':
-                        case '--color=always':
-                            return static::$defaultColors = true;
-
-                        case '--no-ansi':
-                        case '--color=no':
-                        case '--color=none':
-                        case '--color=never':
-                            return static::$defaultColors = false;
-                    }
-                }
-            }
-        }
-
-        $h = stream_get_meta_data($this->outputStream) + ['wrapper_type' => null];
-        $h = 'Output' === $h['stream_type'] && 'PHP' === $h['wrapper_type'] ? fopen('php://stdout', 'wb') : $this->outputStream;
-
-        return static::$defaultColors = $this->hasColorSupport($h);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function dumpLine(int $depth, bool $endOfValue = false)
-    {
-        if ($this->colors) {
-            $this->line = sprintf("\033[%sm%s\033[m", $this->styles['default'], $this->line);
-        }
-        parent::dumpLine($depth);
-    }
-
-    protected function endValue(Cursor $cursor)
-    {
-        if (-1 === $cursor->hashType) {
-            return;
-        }
-
-        if (Stub::ARRAY_INDEXED === $cursor->hashType || Stub::ARRAY_ASSOC === $cursor->hashType) {
-            if (self::DUMP_TRAILING_COMMA & $this->flags && 0 < $cursor->depth) {
-                $this->line .= ',';
-            } elseif (self::DUMP_COMMA_SEPARATOR & $this->flags && 1 < $cursor->hashLength - $cursor->hashIndex) {
-                $this->line .= ',';
-            }
-        }
-
-        $this->dumpLine($cursor->depth, true);
-    }
-
-    /**
-     * Returns true if the stream supports colorization.
-     *
-     * Reference: Composer\XdebugHandler\Process::supportsColor
-     * https://github.com/composer/xdebug-handler
-     *
-     * @param mixed $stream A CLI output stream
-     */
-    private function hasColorSupport($stream): bool
-    {
-        if (!\is_resource($stream) || 'stream' !== get_resource_type($stream)) {
-            return false;
-        }
-
-        // Follow https://no-color.org/
-        if (isset($_SERVER['NO_COLOR']) || false !== getenv('NO_COLOR')) {
-            return false;
-        }
-
-        if ('Hyper' === getenv('TERM_PROGRAM')) {
-            return true;
-        }
-
-        if (\DIRECTORY_SEPARATOR === '\\') {
-            return (\function_exists('sapi_windows_vt100_support')
-                && @sapi_windows_vt100_support($stream))
-                || false !== getenv('ANSICON')
-                || 'ON' === getenv('ConEmuANSI')
-                || 'xterm' === getenv('TERM');
-        }
-
-        return stream_isatty($stream);
-    }
-
-    /**
-     * Returns true if the Windows terminal supports true color.
-     *
-     * Note that this does not check an output stream, but relies on environment
-     * variables from known implementations, or a PHP and Windows version that
-     * supports true color.
-     */
-    private function isWindowsTrueColor(): bool
-    {
-        $result = 183 <= getenv('ANSICON_VER')
-            || 'ON' === getenv('ConEmuANSI')
-            || 'xterm' === getenv('TERM')
-            || 'Hyper' === getenv('TERM_PROGRAM');
-
-        if (!$result) {
-            $version = sprintf(
-                '%s.%s.%s',
-                PHP_WINDOWS_VERSION_MAJOR,
-                PHP_WINDOWS_VERSION_MINOR,
-                PHP_WINDOWS_VERSION_BUILD
-            );
-            $result = $version >= '10.0.15063';
-        }
-
-        return $result;
-    }
-
-    private function getSourceLink(string $file, int $line)
-    {
-        if ($fmt = $this->displayOptions['fileLinkFormat']) {
-            return \is_string($fmt) ? strtr($fmt, ['%f' => $file, '%l' => $line]) : ($fmt->format($file, $line) ?: 'file://'.$file.'#L'.$line);
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php b/vendor/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php
deleted file mode 100644
index 38f878971c53faa168086d7284861cfc2d1785a6..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Dumper\ContextProvider;
-
-/**
- * Tries to provide context on CLI.
- *
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- */
-final class CliContextProvider implements ContextProviderInterface
-{
-    public function getContext(): ?array
-    {
-        if ('cli' !== \PHP_SAPI) {
-            return null;
-        }
-
-        return [
-            'command_line' => $commandLine = implode(' ', $_SERVER['argv'] ?? []),
-            'identifier' => hash('crc32b', $commandLine.$_SERVER['REQUEST_TIME_FLOAT']),
-        ];
-    }
-}
diff --git a/vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php b/vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php
deleted file mode 100644
index 38ef3b0f18530d938154e5e5cc56cd05b192edd5..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Dumper\ContextProvider;
-
-/**
- * Interface to provide contextual data about dump data clones sent to a server.
- *
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- */
-interface ContextProviderInterface
-{
-    /**
-     * @return array|null Context data or null if unable to provide any context
-     */
-    public function getContext(): ?array;
-}
diff --git a/vendor/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php b/vendor/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php
deleted file mode 100644
index 3684a47535cfc982e95eb866e6ee20a6818c12b9..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Dumper\ContextProvider;
-
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\VarDumper\Caster\ReflectionCaster;
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-
-/**
- * Tries to provide context from a request.
- *
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- */
-final class RequestContextProvider implements ContextProviderInterface
-{
-    private $requestStack;
-    private $cloner;
-
-    public function __construct(RequestStack $requestStack)
-    {
-        $this->requestStack = $requestStack;
-        $this->cloner = new VarCloner();
-        $this->cloner->setMaxItems(0);
-        $this->cloner->addCasters(ReflectionCaster::UNSET_CLOSURE_FILE_INFO);
-    }
-
-    public function getContext(): ?array
-    {
-        if (null === $request = $this->requestStack->getCurrentRequest()) {
-            return null;
-        }
-
-        $controller = $request->attributes->get('_controller');
-
-        return [
-            'uri' => $request->getUri(),
-            'method' => $request->getMethod(),
-            'controller' => $controller ? $this->cloner->cloneVar($controller) : $controller,
-            'identifier' => spl_object_hash($request),
-        ];
-    }
-}
diff --git a/vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php b/vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php
deleted file mode 100644
index c3cd3221a8007c54e3df97b15a96c251411f9b23..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Dumper\ContextProvider;
-
-use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-use Symfony\Component\VarDumper\Dumper\HtmlDumper;
-use Symfony\Component\VarDumper\VarDumper;
-use Twig\Template;
-
-/**
- * Tries to provide context from sources (class name, file, line, code excerpt, ...).
- *
- * @author Nicolas Grekas <p@tchwork.com>
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- */
-final class SourceContextProvider implements ContextProviderInterface
-{
-    private $limit;
-    private $charset;
-    private $projectDir;
-    private $fileLinkFormatter;
-
-    public function __construct(string $charset = null, string $projectDir = null, FileLinkFormatter $fileLinkFormatter = null, int $limit = 9)
-    {
-        $this->charset = $charset;
-        $this->projectDir = $projectDir;
-        $this->fileLinkFormatter = $fileLinkFormatter;
-        $this->limit = $limit;
-    }
-
-    public function getContext(): ?array
-    {
-        $trace = debug_backtrace(\DEBUG_BACKTRACE_PROVIDE_OBJECT | \DEBUG_BACKTRACE_IGNORE_ARGS, $this->limit);
-
-        $file = $trace[1]['file'];
-        $line = $trace[1]['line'];
-        $name = false;
-        $fileExcerpt = false;
-
-        for ($i = 2; $i < $this->limit; ++$i) {
-            if (isset($trace[$i]['class'], $trace[$i]['function'])
-                && 'dump' === $trace[$i]['function']
-                && VarDumper::class === $trace[$i]['class']
-            ) {
-                $file = $trace[$i]['file'] ?? $file;
-                $line = $trace[$i]['line'] ?? $line;
-
-                while (++$i < $this->limit) {
-                    if (isset($trace[$i]['function'], $trace[$i]['file']) && empty($trace[$i]['class']) && 0 !== strpos($trace[$i]['function'], 'call_user_func')) {
-                        $file = $trace[$i]['file'];
-                        $line = $trace[$i]['line'];
-
-                        break;
-                    } elseif (isset($trace[$i]['object']) && $trace[$i]['object'] instanceof Template) {
-                        $template = $trace[$i]['object'];
-                        $name = $template->getTemplateName();
-                        $src = method_exists($template, 'getSourceContext') ? $template->getSourceContext()->getCode() : (method_exists($template, 'getSource') ? $template->getSource() : false);
-                        $info = $template->getDebugInfo();
-                        if (isset($info[$trace[$i - 1]['line']])) {
-                            $line = $info[$trace[$i - 1]['line']];
-                            $file = method_exists($template, 'getSourceContext') ? $template->getSourceContext()->getPath() : null;
-
-                            if ($src) {
-                                $src = explode("\n", $src);
-                                $fileExcerpt = [];
-
-                                for ($i = max($line - 3, 1), $max = min($line + 3, \count($src)); $i <= $max; ++$i) {
-                                    $fileExcerpt[] = '<li'.($i === $line ? ' class="selected"' : '').'><code>'.$this->htmlEncode($src[$i - 1]).'</code></li>';
-                                }
-
-                                $fileExcerpt = '<ol start="'.max($line - 3, 1).'">'.implode("\n", $fileExcerpt).'</ol>';
-                            }
-                        }
-                        break;
-                    }
-                }
-                break;
-            }
-        }
-
-        if (false === $name) {
-            $name = str_replace('\\', '/', $file);
-            $name = substr($name, strrpos($name, '/') + 1);
-        }
-
-        $context = ['name' => $name, 'file' => $file, 'line' => $line];
-        $context['file_excerpt'] = $fileExcerpt;
-
-        if (null !== $this->projectDir) {
-            $context['project_dir'] = $this->projectDir;
-            if (0 === strpos($file, $this->projectDir)) {
-                $context['file_relative'] = ltrim(substr($file, \strlen($this->projectDir)), \DIRECTORY_SEPARATOR);
-            }
-        }
-
-        if ($this->fileLinkFormatter && $fileLink = $this->fileLinkFormatter->format($context['file'], $context['line'])) {
-            $context['file_link'] = $fileLink;
-        }
-
-        return $context;
-    }
-
-    private function htmlEncode(string $s): string
-    {
-        $html = '';
-
-        $dumper = new HtmlDumper(function ($line) use (&$html) { $html .= $line; }, $this->charset);
-        $dumper->setDumpHeader('');
-        $dumper->setDumpBoundaries('', '');
-
-        $cloner = new VarCloner();
-        $dumper->dump($cloner->cloneVar($s));
-
-        return substr(strip_tags($html), 1, -1);
-    }
-}
diff --git a/vendor/symfony/var-dumper/Dumper/ContextualizedDumper.php b/vendor/symfony/var-dumper/Dumper/ContextualizedDumper.php
deleted file mode 100644
index 76384176ef026ae81c0c6c1378724ea456763716..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Dumper/ContextualizedDumper.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Dumper;
-
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Dumper\ContextProvider\ContextProviderInterface;
-
-/**
- * @author Kévin Thérage <therage.kevin@gmail.com>
- */
-class ContextualizedDumper implements DataDumperInterface
-{
-    private $wrappedDumper;
-    private $contextProviders;
-
-    /**
-     * @param ContextProviderInterface[] $contextProviders
-     */
-    public function __construct(DataDumperInterface $wrappedDumper, array $contextProviders)
-    {
-        $this->wrappedDumper = $wrappedDumper;
-        $this->contextProviders = $contextProviders;
-    }
-
-    public function dump(Data $data)
-    {
-        $context = [];
-        foreach ($this->contextProviders as $contextProvider) {
-            $context[\get_class($contextProvider)] = $contextProvider->getContext();
-        }
-
-        $this->wrappedDumper->dump($data->withContext($context));
-    }
-}
diff --git a/vendor/symfony/var-dumper/Dumper/DataDumperInterface.php b/vendor/symfony/var-dumper/Dumper/DataDumperInterface.php
deleted file mode 100644
index b173bccf389160b7b3898367303dfe8045dad1d5..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Dumper/DataDumperInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Dumper;
-
-use Symfony\Component\VarDumper\Cloner\Data;
-
-/**
- * DataDumperInterface for dumping Data objects.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-interface DataDumperInterface
-{
-    public function dump(Data $data);
-}
diff --git a/vendor/symfony/var-dumper/Dumper/HtmlDumper.php b/vendor/symfony/var-dumper/Dumper/HtmlDumper.php
deleted file mode 100644
index a45624247a81ff57293530a8acf205710dfbb283..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Dumper/HtmlDumper.php
+++ /dev/null
@@ -1,1004 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Dumper;
-
-use Symfony\Component\VarDumper\Cloner\Cursor;
-use Symfony\Component\VarDumper\Cloner\Data;
-
-/**
- * HtmlDumper dumps variables as HTML.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class HtmlDumper extends CliDumper
-{
-    public static $defaultOutput = 'php://output';
-
-    protected static $themes = [
-        'dark' => [
-            'default' => 'background-color:#18171B; color:#FF8400; line-height:1.2em; font:12px Menlo, Monaco, Consolas, monospace; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:99999; word-break: break-all',
-            'num' => 'font-weight:bold; color:#1299DA',
-            'const' => 'font-weight:bold',
-            'str' => 'font-weight:bold; color:#56DB3A',
-            'note' => 'color:#1299DA',
-            'ref' => 'color:#A0A0A0',
-            'public' => 'color:#FFFFFF',
-            'protected' => 'color:#FFFFFF',
-            'private' => 'color:#FFFFFF',
-            'meta' => 'color:#B729D9',
-            'key' => 'color:#56DB3A',
-            'index' => 'color:#1299DA',
-            'ellipsis' => 'color:#FF8400',
-            'ns' => 'user-select:none;',
-        ],
-        'light' => [
-            'default' => 'background:none; color:#CC7832; line-height:1.2em; font:12px Menlo, Monaco, Consolas, monospace; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:99999; word-break: break-all',
-            'num' => 'font-weight:bold; color:#1299DA',
-            'const' => 'font-weight:bold',
-            'str' => 'font-weight:bold; color:#629755;',
-            'note' => 'color:#6897BB',
-            'ref' => 'color:#6E6E6E',
-            'public' => 'color:#262626',
-            'protected' => 'color:#262626',
-            'private' => 'color:#262626',
-            'meta' => 'color:#B729D9',
-            'key' => 'color:#789339',
-            'index' => 'color:#1299DA',
-            'ellipsis' => 'color:#CC7832',
-            'ns' => 'user-select:none;',
-        ],
-    ];
-
-    protected $dumpHeader;
-    protected $dumpPrefix = '<pre class=sf-dump id=%s data-indent-pad="%s">';
-    protected $dumpSuffix = '</pre><script>Sfdump(%s)</script>';
-    protected $dumpId = 'sf-dump';
-    protected $colors = true;
-    protected $headerIsDumped = false;
-    protected $lastDepth = -1;
-    protected $styles;
-
-    private $displayOptions = [
-        'maxDepth' => 1,
-        'maxStringLength' => 160,
-        'fileLinkFormat' => null,
-    ];
-    private $extraDisplayOptions = [];
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct($output = null, string $charset = null, int $flags = 0)
-    {
-        AbstractDumper::__construct($output, $charset, $flags);
-        $this->dumpId = 'sf-dump-'.mt_rand();
-        $this->displayOptions['fileLinkFormat'] = ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
-        $this->styles = static::$themes['dark'] ?? self::$themes['dark'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setStyles(array $styles)
-    {
-        $this->headerIsDumped = false;
-        $this->styles = $styles + $this->styles;
-    }
-
-    public function setTheme(string $themeName)
-    {
-        if (!isset(static::$themes[$themeName])) {
-            throw new \InvalidArgumentException(sprintf('Theme "%s" does not exist in class "%s".', $themeName, static::class));
-        }
-
-        $this->setStyles(static::$themes[$themeName]);
-    }
-
-    /**
-     * Configures display options.
-     *
-     * @param array $displayOptions A map of display options to customize the behavior
-     */
-    public function setDisplayOptions(array $displayOptions)
-    {
-        $this->headerIsDumped = false;
-        $this->displayOptions = $displayOptions + $this->displayOptions;
-    }
-
-    /**
-     * Sets an HTML header that will be dumped once in the output stream.
-     *
-     * @param string $header An HTML string
-     */
-    public function setDumpHeader($header)
-    {
-        $this->dumpHeader = $header;
-    }
-
-    /**
-     * Sets an HTML prefix and suffix that will encapse every single dump.
-     *
-     * @param string $prefix The prepended HTML string
-     * @param string $suffix The appended HTML string
-     */
-    public function setDumpBoundaries($prefix, $suffix)
-    {
-        $this->dumpPrefix = $prefix;
-        $this->dumpSuffix = $suffix;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dump(Data $data, $output = null, array $extraDisplayOptions = [])
-    {
-        $this->extraDisplayOptions = $extraDisplayOptions;
-        $result = parent::dump($data, $output);
-        $this->dumpId = 'sf-dump-'.mt_rand();
-
-        return $result;
-    }
-
-    /**
-     * Dumps the HTML header.
-     */
-    protected function getDumpHeader()
-    {
-        $this->headerIsDumped = null !== $this->outputStream ? $this->outputStream : $this->lineDumper;
-
-        if (null !== $this->dumpHeader) {
-            return $this->dumpHeader;
-        }
-
-        $line = str_replace('{$options}', json_encode($this->displayOptions, \JSON_FORCE_OBJECT), <<<'EOHTML'
-<script>
-Sfdump = window.Sfdump || (function (doc) {
-
-var refStyle = doc.createElement('style'),
-    rxEsc = /([.*+?^${}()|\[\]\/\\])/g,
-    idRx = /\bsf-dump-\d+-ref[012]\w+\b/,
-    keyHint = 0 <= navigator.platform.toUpperCase().indexOf('MAC') ? 'Cmd' : 'Ctrl',
-    addEventListener = function (e, n, cb) {
-        e.addEventListener(n, cb, false);
-    };
-
-(doc.documentElement.firstElementChild || doc.documentElement.children[0]).appendChild(refStyle);
-
-if (!doc.addEventListener) {
-    addEventListener = function (element, eventName, callback) {
-        element.attachEvent('on' + eventName, function (e) {
-            e.preventDefault = function () {e.returnValue = false;};
-            e.target = e.srcElement;
-            callback(e);
-        });
-    };
-}
-
-function toggle(a, recursive) {
-    var s = a.nextSibling || {}, oldClass = s.className, arrow, newClass;
-
-    if (/\bsf-dump-compact\b/.test(oldClass)) {
-        arrow = 'â–¼';
-        newClass = 'sf-dump-expanded';
-    } else if (/\bsf-dump-expanded\b/.test(oldClass)) {
-        arrow = 'â–¶';
-        newClass = 'sf-dump-compact';
-    } else {
-        return false;
-    }
-
-    if (doc.createEvent && s.dispatchEvent) {
-        var event = doc.createEvent('Event');
-        event.initEvent('sf-dump-expanded' === newClass ? 'sfbeforedumpexpand' : 'sfbeforedumpcollapse', true, false);
-
-        s.dispatchEvent(event);
-    }
-
-    a.lastChild.innerHTML = arrow;
-    s.className = s.className.replace(/\bsf-dump-(compact|expanded)\b/, newClass);
-
-    if (recursive) {
-        try {
-            a = s.querySelectorAll('.'+oldClass);
-            for (s = 0; s < a.length; ++s) {
-                if (-1 == a[s].className.indexOf(newClass)) {
-                    a[s].className = newClass;
-                    a[s].previousSibling.lastChild.innerHTML = arrow;
-                }
-            }
-        } catch (e) {
-        }
-    }
-
-    return true;
-};
-
-function collapse(a, recursive) {
-    var s = a.nextSibling || {}, oldClass = s.className;
-
-    if (/\bsf-dump-expanded\b/.test(oldClass)) {
-        toggle(a, recursive);
-
-        return true;
-    }
-
-    return false;
-};
-
-function expand(a, recursive) {
-    var s = a.nextSibling || {}, oldClass = s.className;
-
-    if (/\bsf-dump-compact\b/.test(oldClass)) {
-        toggle(a, recursive);
-
-        return true;
-    }
-
-    return false;
-};
-
-function collapseAll(root) {
-    var a = root.querySelector('a.sf-dump-toggle');
-    if (a) {
-        collapse(a, true);
-        expand(a);
-
-        return true;
-    }
-
-    return false;
-}
-
-function reveal(node) {
-    var previous, parents = [];
-
-    while ((node = node.parentNode || {}) && (previous = node.previousSibling) && 'A' === previous.tagName) {
-        parents.push(previous);
-    }
-
-    if (0 !== parents.length) {
-        parents.forEach(function (parent) {
-            expand(parent);
-        });
-
-        return true;
-    }
-
-    return false;
-}
-
-function highlight(root, activeNode, nodes) {
-    resetHighlightedNodes(root);
-
-    Array.from(nodes||[]).forEach(function (node) {
-        if (!/\bsf-dump-highlight\b/.test(node.className)) {
-            node.className = node.className + ' sf-dump-highlight';
-        }
-    });
-
-    if (!/\bsf-dump-highlight-active\b/.test(activeNode.className)) {
-        activeNode.className = activeNode.className + ' sf-dump-highlight-active';
-    }
-}
-
-function resetHighlightedNodes(root) {
-    Array.from(root.querySelectorAll('.sf-dump-str, .sf-dump-key, .sf-dump-public, .sf-dump-protected, .sf-dump-private')).forEach(function (strNode) {
-        strNode.className = strNode.className.replace(/\bsf-dump-highlight\b/, '');
-        strNode.className = strNode.className.replace(/\bsf-dump-highlight-active\b/, '');
-    });
-}
-
-return function (root, x) {
-    root = doc.getElementById(root);
-
-    var indentRx = new RegExp('^('+(root.getAttribute('data-indent-pad') || '  ').replace(rxEsc, '\\$1')+')+', 'm'),
-        options = {$options},
-        elt = root.getElementsByTagName('A'),
-        len = elt.length,
-        i = 0, s, h,
-        t = [];
-
-    while (i < len) t.push(elt[i++]);
-
-    for (i in x) {
-        options[i] = x[i];
-    }
-
-    function a(e, f) {
-        addEventListener(root, e, function (e, n) {
-            if ('A' == e.target.tagName) {
-                f(e.target, e);
-            } else if ('A' == e.target.parentNode.tagName) {
-                f(e.target.parentNode, e);
-            } else {
-                n = /\bsf-dump-ellipsis\b/.test(e.target.className) ? e.target.parentNode : e.target;
-
-                if ((n = n.nextElementSibling) && 'A' == n.tagName) {
-                    if (!/\bsf-dump-toggle\b/.test(n.className)) {
-                        n = n.nextElementSibling || n;
-                    }
-
-                    f(n, e, true);
-                }
-            }
-        });
-    };
-    function isCtrlKey(e) {
-        return e.ctrlKey || e.metaKey;
-    }
-    function xpathString(str) {
-        var parts = str.match(/[^'"]+|['"]/g).map(function (part) {
-            if ("'" == part)  {
-                return '"\'"';
-            }
-            if ('"' == part) {
-                return "'\"'";
-            }
-
-            return "'" + part + "'";
-        });
-
-        return "concat(" + parts.join(",") + ", '')";
-    }
-    function xpathHasClass(className) {
-        return "contains(concat(' ', normalize-space(@class), ' '), ' " + className +" ')";
-    }
-    addEventListener(root, 'mouseover', function (e) {
-        if ('' != refStyle.innerHTML) {
-            refStyle.innerHTML = '';
-        }
-    });
-    a('mouseover', function (a, e, c) {
-        if (c) {
-            e.target.style.cursor = "pointer";
-        } else if (a = idRx.exec(a.className)) {
-            try {
-                refStyle.innerHTML = 'pre.sf-dump .'+a[0]+'{background-color: #B729D9; color: #FFF !important; border-radius: 2px}';
-            } catch (e) {
-            }
-        }
-    });
-    a('click', function (a, e, c) {
-        if (/\bsf-dump-toggle\b/.test(a.className)) {
-            e.preventDefault();
-            if (!toggle(a, isCtrlKey(e))) {
-                var r = doc.getElementById(a.getAttribute('href').substr(1)),
-                    s = r.previousSibling,
-                    f = r.parentNode,
-                    t = a.parentNode;
-                t.replaceChild(r, a);
-                f.replaceChild(a, s);
-                t.insertBefore(s, r);
-                f = f.firstChild.nodeValue.match(indentRx);
-                t = t.firstChild.nodeValue.match(indentRx);
-                if (f && t && f[0] !== t[0]) {
-                    r.innerHTML = r.innerHTML.replace(new RegExp('^'+f[0].replace(rxEsc, '\\$1'), 'mg'), t[0]);
-                }
-                if (/\bsf-dump-compact\b/.test(r.className)) {
-                    toggle(s, isCtrlKey(e));
-                }
-            }
-
-            if (c) {
-            } else if (doc.getSelection) {
-                try {
-                    doc.getSelection().removeAllRanges();
-                } catch (e) {
-                    doc.getSelection().empty();
-                }
-            } else {
-                doc.selection.empty();
-            }
-        } else if (/\bsf-dump-str-toggle\b/.test(a.className)) {
-            e.preventDefault();
-            e = a.parentNode.parentNode;
-            e.className = e.className.replace(/\bsf-dump-str-(expand|collapse)\b/, a.parentNode.className);
-        }
-    });
-
-    elt = root.getElementsByTagName('SAMP');
-    len = elt.length;
-    i = 0;
-
-    while (i < len) t.push(elt[i++]);
-    len = t.length;
-
-    for (i = 0; i < len; ++i) {
-        elt = t[i];
-        if ('SAMP' == elt.tagName) {
-            a = elt.previousSibling || {};
-            if ('A' != a.tagName) {
-                a = doc.createElement('A');
-                a.className = 'sf-dump-ref';
-                elt.parentNode.insertBefore(a, elt);
-            } else {
-                a.innerHTML += ' ';
-            }
-            a.title = (a.title ? a.title+'\n[' : '[')+keyHint+'+click] Expand all children';
-            a.innerHTML += '<span>â–¼</span>';
-            a.className += ' sf-dump-toggle';
-
-            x = 1;
-            if ('sf-dump' != elt.parentNode.className) {
-                x += elt.parentNode.getAttribute('data-depth')/1;
-            }
-            elt.setAttribute('data-depth', x);
-            var className = elt.className;
-            elt.className = 'sf-dump-expanded';
-            if (className ? 'sf-dump-expanded' !== className : (x > options.maxDepth)) {
-                toggle(a);
-            }
-        } else if (/\bsf-dump-ref\b/.test(elt.className) && (a = elt.getAttribute('href'))) {
-            a = a.substr(1);
-            elt.className += ' '+a;
-
-            if (/[\[{]$/.test(elt.previousSibling.nodeValue)) {
-                a = a != elt.nextSibling.id && doc.getElementById(a);
-                try {
-                    s = a.nextSibling;
-                    elt.appendChild(a);
-                    s.parentNode.insertBefore(a, s);
-                    if (/^[@#]/.test(elt.innerHTML)) {
-                        elt.innerHTML += ' <span>â–¶</span>';
-                    } else {
-                        elt.innerHTML = '<span>â–¶</span>';
-                        elt.className = 'sf-dump-ref';
-                    }
-                    elt.className += ' sf-dump-toggle';
-                } catch (e) {
-                    if ('&' == elt.innerHTML.charAt(0)) {
-                        elt.innerHTML = '…';
-                        elt.className = 'sf-dump-ref';
-                    }
-                }
-            }
-        }
-    }
-
-    if (doc.evaluate && Array.from && root.children.length > 1) {
-        root.setAttribute('tabindex', 0);
-
-        SearchState = function () {
-            this.nodes = [];
-            this.idx = 0;
-        };
-        SearchState.prototype = {
-            next: function () {
-                if (this.isEmpty()) {
-                    return this.current();
-                }
-                this.idx = this.idx < (this.nodes.length - 1) ? this.idx + 1 : 0;
-
-                return this.current();
-            },
-            previous: function () {
-                if (this.isEmpty()) {
-                    return this.current();
-                }
-                this.idx = this.idx > 0 ? this.idx - 1 : (this.nodes.length - 1);
-
-                return this.current();
-            },
-            isEmpty: function () {
-                return 0 === this.count();
-            },
-            current: function () {
-                if (this.isEmpty()) {
-                    return null;
-                }
-                return this.nodes[this.idx];
-            },
-            reset: function () {
-                this.nodes = [];
-                this.idx = 0;
-            },
-            count: function () {
-                return this.nodes.length;
-            },
-        };
-
-        function showCurrent(state)
-        {
-            var currentNode = state.current(), currentRect, searchRect;
-            if (currentNode) {
-                reveal(currentNode);
-                highlight(root, currentNode, state.nodes);
-                if ('scrollIntoView' in currentNode) {
-                    currentNode.scrollIntoView(true);
-                    currentRect = currentNode.getBoundingClientRect();
-                    searchRect = search.getBoundingClientRect();
-                    if (currentRect.top < (searchRect.top + searchRect.height)) {
-                        window.scrollBy(0, -(searchRect.top + searchRect.height + 5));
-                    }
-                }
-            }
-            counter.textContent = (state.isEmpty() ? 0 : state.idx + 1) + ' of ' + state.count();
-        }
-
-        var search = doc.createElement('div');
-        search.className = 'sf-dump-search-wrapper sf-dump-search-hidden';
-        search.innerHTML = '
-            <input type="text" class="sf-dump-search-input">
-            <span class="sf-dump-search-count">0 of 0<\/span>
-            <button type="button" class="sf-dump-search-input-previous" tabindex="-1">
-                <svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1683 1331l-166 165q-19 19-45 19t-45-19L896 965l-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z"\/><\/svg>
-            <\/button>
-            <button type="button" class="sf-dump-search-input-next" tabindex="-1">
-                <svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1683 808l-742 741q-19 19-45 19t-45-19L109 808q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z"\/><\/svg>
-            <\/button>
-        ';
-        root.insertBefore(search, root.firstChild);
-
-        var state = new SearchState();
-        var searchInput = search.querySelector('.sf-dump-search-input');
-        var counter = search.querySelector('.sf-dump-search-count');
-        var searchInputTimer = 0;
-        var previousSearchQuery = '';
-
-        addEventListener(searchInput, 'keyup', function (e) {
-            var searchQuery = e.target.value;
-            /* Don't perform anything if the pressed key didn't change the query */
-            if (searchQuery === previousSearchQuery) {
-                return;
-            }
-            previousSearchQuery = searchQuery;
-            clearTimeout(searchInputTimer);
-            searchInputTimer = setTimeout(function () {
-                state.reset();
-                collapseAll(root);
-                resetHighlightedNodes(root);
-                if ('' === searchQuery) {
-                    counter.textContent = '0 of 0';
-
-                    return;
-                }
-
-                var classMatches = [
-                    "sf-dump-str",
-                    "sf-dump-key",
-                    "sf-dump-public",
-                    "sf-dump-protected",
-                    "sf-dump-private",
-                ].map(xpathHasClass).join(' or ');
-
-                var xpathResult = doc.evaluate('.//span[' + classMatches + '][contains(translate(child::text(), ' + xpathString(searchQuery.toUpperCase()) + ', ' + xpathString(searchQuery.toLowerCase()) + '), ' + xpathString(searchQuery.toLowerCase()) + ')]', root, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
-
-                while (node = xpathResult.iterateNext()) state.nodes.push(node);
-
-                showCurrent(state);
-            }, 400);
-        });
-
-        Array.from(search.querySelectorAll('.sf-dump-search-input-next, .sf-dump-search-input-previous')).forEach(function (btn) {
-            addEventListener(btn, 'click', function (e) {
-                e.preventDefault();
-                -1 !== e.target.className.indexOf('next') ? state.next() : state.previous();
-                searchInput.focus();
-                collapseAll(root);
-                showCurrent(state);
-            })
-        });
-
-        addEventListener(root, 'keydown', function (e) {
-            var isSearchActive = !/\bsf-dump-search-hidden\b/.test(search.className);
-            if ((114 === e.keyCode && !isSearchActive) || (isCtrlKey(e) && 70 === e.keyCode)) {
-                /* F3 or CMD/CTRL + F */
-                if (70 === e.keyCode && document.activeElement === searchInput) {
-                   /*
-                    * If CMD/CTRL + F is hit while having focus on search input,
-                    * the user probably meant to trigger browser search instead.
-                    * Let the browser execute its behavior:
-                    */
-                    return;
-                }
-
-                e.preventDefault();
-                search.className = search.className.replace(/\bsf-dump-search-hidden\b/, '');
-                searchInput.focus();
-            } else if (isSearchActive) {
-                if (27 === e.keyCode) {
-                    /* ESC key */
-                    search.className += ' sf-dump-search-hidden';
-                    e.preventDefault();
-                    resetHighlightedNodes(root);
-                    searchInput.value = '';
-                } else if (
-                    (isCtrlKey(e) && 71 === e.keyCode) /* CMD/CTRL + G */
-                    || 13 === e.keyCode /* Enter */
-                    || 114 === e.keyCode /* F3 */
-                ) {
-                    e.preventDefault();
-                    e.shiftKey ? state.previous() : state.next();
-                    collapseAll(root);
-                    showCurrent(state);
-                }
-            }
-        });
-    }
-
-    if (0 >= options.maxStringLength) {
-        return;
-    }
-    try {
-        elt = root.querySelectorAll('.sf-dump-str');
-        len = elt.length;
-        i = 0;
-        t = [];
-
-        while (i < len) t.push(elt[i++]);
-        len = t.length;
-
-        for (i = 0; i < len; ++i) {
-            elt = t[i];
-            s = elt.innerText || elt.textContent;
-            x = s.length - options.maxStringLength;
-            if (0 < x) {
-                h = elt.innerHTML;
-                elt[elt.innerText ? 'innerText' : 'textContent'] = s.substring(0, options.maxStringLength);
-                elt.className += ' sf-dump-str-collapse';
-                elt.innerHTML = '<span class=sf-dump-str-collapse>'+h+'<a class="sf-dump-ref sf-dump-str-toggle" title="Collapse"> â—€</a></span>'+
-                    '<span class=sf-dump-str-expand>'+elt.innerHTML+'<a class="sf-dump-ref sf-dump-str-toggle" title="'+x+' remaining characters"> â–¶</a></span>';
-            }
-        }
-    } catch (e) {
-    }
-};
-
-})(document);
-</script><style>
-pre.sf-dump {
-    display: block;
-    white-space: pre;
-    padding: 5px;
-    overflow: initial !important;
-}
-pre.sf-dump:after {
-   content: "";
-   visibility: hidden;
-   display: block;
-   height: 0;
-   clear: both;
-}
-pre.sf-dump span {
-    display: inline;
-}
-pre.sf-dump .sf-dump-compact {
-    display: none;
-}
-pre.sf-dump a {
-    text-decoration: none;
-    cursor: pointer;
-    border: 0;
-    outline: none;
-    color: inherit;
-}
-pre.sf-dump img {
-    max-width: 50em;
-    max-height: 50em;
-    margin: .5em 0 0 0;
-    padding: 0;
-    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAHUlEQVQY02O8zAABilCaiQEN0EeA8QuUcX9g3QEAAjcC5piyhyEAAAAASUVORK5CYII=) #D3D3D3;
-}
-pre.sf-dump .sf-dump-ellipsis {
-    display: inline-block;
-    overflow: visible;
-    text-overflow: ellipsis;
-    max-width: 5em;
-    white-space: nowrap;
-    overflow: hidden;
-    vertical-align: top;
-}
-pre.sf-dump .sf-dump-ellipsis+.sf-dump-ellipsis {
-    max-width: none;
-}
-pre.sf-dump code {
-    display:inline;
-    padding:0;
-    background:none;
-}
-.sf-dump-str-collapse .sf-dump-str-collapse {
-    display: none;
-}
-.sf-dump-str-expand .sf-dump-str-expand {
-    display: none;
-}
-.sf-dump-public.sf-dump-highlight,
-.sf-dump-protected.sf-dump-highlight,
-.sf-dump-private.sf-dump-highlight,
-.sf-dump-str.sf-dump-highlight,
-.sf-dump-key.sf-dump-highlight {
-    background: rgba(111, 172, 204, 0.3);
-    border: 1px solid #7DA0B1;
-    border-radius: 3px;
-}
-.sf-dump-public.sf-dump-highlight-active,
-.sf-dump-protected.sf-dump-highlight-active,
-.sf-dump-private.sf-dump-highlight-active,
-.sf-dump-str.sf-dump-highlight-active,
-.sf-dump-key.sf-dump-highlight-active {
-    background: rgba(253, 175, 0, 0.4);
-    border: 1px solid #ffa500;
-    border-radius: 3px;
-}
-pre.sf-dump .sf-dump-search-hidden {
-    display: none !important;
-}
-pre.sf-dump .sf-dump-search-wrapper {
-    font-size: 0;
-    white-space: nowrap;
-    margin-bottom: 5px;
-    display: flex;
-    position: -webkit-sticky;
-    position: sticky;
-    top: 5px;
-}
-pre.sf-dump .sf-dump-search-wrapper > * {
-    vertical-align: top;
-    box-sizing: border-box;
-    height: 21px;
-    font-weight: normal;
-    border-radius: 0;
-    background: #FFF;
-    color: #757575;
-    border: 1px solid #BBB;
-}
-pre.sf-dump .sf-dump-search-wrapper > input.sf-dump-search-input {
-    padding: 3px;
-    height: 21px;
-    font-size: 12px;
-    border-right: none;
-    border-top-left-radius: 3px;
-    border-bottom-left-radius: 3px;
-    color: #000;
-    min-width: 15px;
-    width: 100%;
-}
-pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-next,
-pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-previous {
-    background: #F2F2F2;
-    outline: none;
-    border-left: none;
-    font-size: 0;
-    line-height: 0;
-}
-pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-next {
-    border-top-right-radius: 3px;
-    border-bottom-right-radius: 3px;
-}
-pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-next > svg,
-pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-previous > svg {
-    pointer-events: none;
-    width: 12px;
-    height: 12px;
-}
-pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-count {
-    display: inline-block;
-    padding: 0 5px;
-    margin: 0;
-    border-left: none;
-    line-height: 21px;
-    font-size: 12px;
-}
-EOHTML
-        );
-
-        foreach ($this->styles as $class => $style) {
-            $line .= 'pre.sf-dump'.('default' === $class ? ', pre.sf-dump' : '').' .sf-dump-'.$class.'{'.$style.'}';
-        }
-        $line .= 'pre.sf-dump .sf-dump-ellipsis-note{'.$this->styles['note'].'}';
-
-        return $this->dumpHeader = preg_replace('/\s+/', ' ', $line).'</style>'.$this->dumpHeader;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dumpString(Cursor $cursor, string $str, bool $bin, int $cut)
-    {
-        if ('' === $str && isset($cursor->attr['img-data'], $cursor->attr['content-type'])) {
-            $this->dumpKey($cursor);
-            $this->line .= $this->style('default', $cursor->attr['img-size'] ?? '', []).' <samp>';
-            $this->endValue($cursor);
-            $this->line .= $this->indentPad;
-            $this->line .= sprintf('<img src="data:%s;base64,%s" /></samp>', $cursor->attr['content-type'], base64_encode($cursor->attr['img-data']));
-            $this->endValue($cursor);
-        } else {
-            parent::dumpString($cursor, $str, $bin, $cut);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function enterHash(Cursor $cursor, int $type, $class, bool $hasChild)
-    {
-        if (Cursor::HASH_OBJECT === $type) {
-            $cursor->attr['depth'] = $cursor->depth;
-        }
-        parent::enterHash($cursor, $type, $class, false);
-
-        if ($cursor->skipChildren) {
-            $cursor->skipChildren = false;
-            $eol = ' class=sf-dump-compact>';
-        } elseif ($this->expandNextHash) {
-            $this->expandNextHash = false;
-            $eol = ' class=sf-dump-expanded>';
-        } else {
-            $eol = '>';
-        }
-
-        if ($hasChild) {
-            $this->line .= '<samp';
-            if ($cursor->refIndex) {
-                $r = Cursor::HASH_OBJECT !== $type ? 1 - (Cursor::HASH_RESOURCE !== $type) : 2;
-                $r .= $r && 0 < $cursor->softRefHandle ? $cursor->softRefHandle : $cursor->refIndex;
-
-                $this->line .= sprintf(' id=%s-ref%s', $this->dumpId, $r);
-            }
-            $this->line .= $eol;
-            $this->dumpLine($cursor->depth);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function leaveHash(Cursor $cursor, int $type, $class, bool $hasChild, int $cut)
-    {
-        $this->dumpEllipsis($cursor, $hasChild, $cut);
-        if ($hasChild) {
-            $this->line .= '</samp>';
-        }
-        parent::leaveHash($cursor, $type, $class, $hasChild, 0);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function style($style, $value, $attr = [])
-    {
-        if ('' === $value) {
-            return '';
-        }
-
-        $v = esc($value);
-
-        if ('ref' === $style) {
-            if (empty($attr['count'])) {
-                return sprintf('<a class=sf-dump-ref>%s</a>', $v);
-            }
-            $r = ('#' !== $v[0] ? 1 - ('@' !== $v[0]) : 2).substr($value, 1);
-
-            return sprintf('<a class=sf-dump-ref href=#%s-ref%s title="%d occurrences">%s</a>', $this->dumpId, $r, 1 + $attr['count'], $v);
-        }
-
-        if ('const' === $style && isset($attr['value'])) {
-            $style .= sprintf(' title="%s"', esc(is_scalar($attr['value']) ? $attr['value'] : json_encode($attr['value'])));
-        } elseif ('public' === $style) {
-            $style .= sprintf(' title="%s"', empty($attr['dynamic']) ? 'Public property' : 'Runtime added dynamic property');
-        } elseif ('str' === $style && 1 < $attr['length']) {
-            $style .= sprintf(' title="%d%s characters"', $attr['length'], $attr['binary'] ? ' binary or non-UTF-8' : '');
-        } elseif ('note' === $style && 0 < ($attr['depth'] ?? 0) && false !== $c = strrpos($value, '\\')) {
-            $style .= ' title=""';
-            $attr += [
-                'ellipsis' => \strlen($value) - $c,
-                'ellipsis-type' => 'note',
-                'ellipsis-tail' => 1,
-            ];
-        } elseif ('protected' === $style) {
-            $style .= ' title="Protected property"';
-        } elseif ('meta' === $style && isset($attr['title'])) {
-            $style .= sprintf(' title="%s"', esc($this->utf8Encode($attr['title'])));
-        } elseif ('private' === $style) {
-            $style .= sprintf(' title="Private property defined in class:&#10;`%s`"', esc($this->utf8Encode($attr['class'])));
-        }
-        $map = static::$controlCharsMap;
-
-        if (isset($attr['ellipsis'])) {
-            $class = 'sf-dump-ellipsis';
-            if (isset($attr['ellipsis-type'])) {
-                $class = sprintf('"%s sf-dump-ellipsis-%s"', $class, $attr['ellipsis-type']);
-            }
-            $label = esc(substr($value, -$attr['ellipsis']));
-            $style = str_replace(' title="', " title=\"$v\n", $style);
-            $v = sprintf('<span class=%s>%s</span>', $class, substr($v, 0, -\strlen($label)));
-
-            if (!empty($attr['ellipsis-tail'])) {
-                $tail = \strlen(esc(substr($value, -$attr['ellipsis'], $attr['ellipsis-tail'])));
-                $v .= sprintf('<span class=%s>%s</span>%s', $class, substr($label, 0, $tail), substr($label, $tail));
-            } else {
-                $v .= $label;
-            }
-        }
-
-        $v = "<span class=sf-dump-{$style}>".preg_replace_callback(static::$controlCharsRx, function ($c) use ($map) {
-            $s = $b = '<span class="sf-dump-default';
-            $c = $c[$i = 0];
-            if ($ns = "\r" === $c[$i] || "\n" === $c[$i]) {
-                $s .= ' sf-dump-ns';
-            }
-            $s .= '">';
-            do {
-                if (("\r" === $c[$i] || "\n" === $c[$i]) !== $ns) {
-                    $s .= '</span>'.$b;
-                    if ($ns = !$ns) {
-                        $s .= ' sf-dump-ns';
-                    }
-                    $s .= '">';
-                }
-
-                $s .= isset($map[$c[$i]]) ? $map[$c[$i]] : sprintf('\x%02X', \ord($c[$i]));
-            } while (isset($c[++$i]));
-
-            return $s.'</span>';
-        }, $v).'</span>';
-
-        if (isset($attr['file']) && $href = $this->getSourceLink($attr['file'], isset($attr['line']) ? $attr['line'] : 0)) {
-            $attr['href'] = $href;
-        }
-        if (isset($attr['href'])) {
-            $target = isset($attr['file']) ? '' : ' target="_blank"';
-            $v = sprintf('<a href="%s"%s rel="noopener noreferrer">%s</a>', esc($this->utf8Encode($attr['href'])), $target, $v);
-        }
-        if (isset($attr['lang'])) {
-            $v = sprintf('<code class="%s">%s</code>', esc($attr['lang']), $v);
-        }
-
-        return $v;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function dumpLine(int $depth, bool $endOfValue = false)
-    {
-        if (-1 === $this->lastDepth) {
-            $this->line = sprintf($this->dumpPrefix, $this->dumpId, $this->indentPad).$this->line;
-        }
-        if ($this->headerIsDumped !== (null !== $this->outputStream ? $this->outputStream : $this->lineDumper)) {
-            $this->line = $this->getDumpHeader().$this->line;
-        }
-
-        if (-1 === $depth) {
-            $args = ['"'.$this->dumpId.'"'];
-            if ($this->extraDisplayOptions) {
-                $args[] = json_encode($this->extraDisplayOptions, \JSON_FORCE_OBJECT);
-            }
-            // Replace is for BC
-            $this->line .= sprintf(str_replace('"%s"', '%s', $this->dumpSuffix), implode(', ', $args));
-        }
-        $this->lastDepth = $depth;
-
-        $this->line = mb_convert_encoding($this->line, 'HTML-ENTITIES', 'UTF-8');
-
-        if (-1 === $depth) {
-            AbstractDumper::dumpLine(0);
-        }
-        AbstractDumper::dumpLine($depth);
-    }
-
-    private function getSourceLink(string $file, int $line)
-    {
-        $options = $this->extraDisplayOptions + $this->displayOptions;
-
-        if ($fmt = $options['fileLinkFormat']) {
-            return \is_string($fmt) ? strtr($fmt, ['%f' => $file, '%l' => $line]) : $fmt->format($file, $line);
-        }
-
-        return false;
-    }
-}
-
-function esc($str)
-{
-    return htmlspecialchars($str, \ENT_QUOTES, 'UTF-8');
-}
diff --git a/vendor/symfony/var-dumper/Dumper/ServerDumper.php b/vendor/symfony/var-dumper/Dumper/ServerDumper.php
deleted file mode 100644
index 94795bf6d69dda4eb270a895639b3f858fb368eb..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Dumper/ServerDumper.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Dumper;
-
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Dumper\ContextProvider\ContextProviderInterface;
-use Symfony\Component\VarDumper\Server\Connection;
-
-/**
- * ServerDumper forwards serialized Data clones to a server.
- *
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- */
-class ServerDumper implements DataDumperInterface
-{
-    private $connection;
-    private $wrappedDumper;
-
-    /**
-     * @param string                     $host             The server host
-     * @param DataDumperInterface|null   $wrappedDumper    A wrapped instance used whenever we failed contacting the server
-     * @param ContextProviderInterface[] $contextProviders Context providers indexed by context name
-     */
-    public function __construct(string $host, DataDumperInterface $wrappedDumper = null, array $contextProviders = [])
-    {
-        $this->connection = new Connection($host, $contextProviders);
-        $this->wrappedDumper = $wrappedDumper;
-    }
-
-    public function getContextProviders(): array
-    {
-        return $this->connection->getContextProviders();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dump(Data $data)
-    {
-        if (!$this->connection->write($data) && $this->wrappedDumper) {
-            $this->wrappedDumper->dump($data);
-        }
-    }
-}
diff --git a/vendor/symfony/var-dumper/Exception/ThrowingCasterException.php b/vendor/symfony/var-dumper/Exception/ThrowingCasterException.php
deleted file mode 100644
index 122f0d358a12906266644e7b84853ab3dae1fe2a..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Exception/ThrowingCasterException.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Exception;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class ThrowingCasterException extends \Exception
-{
-    /**
-     * @param \Throwable $prev The exception thrown from the caster
-     */
-    public function __construct(\Throwable $prev)
-    {
-        parent::__construct('Unexpected '.\get_class($prev).' thrown from a caster: '.$prev->getMessage(), 0, $prev);
-    }
-}
diff --git a/vendor/symfony/var-dumper/LICENSE b/vendor/symfony/var-dumper/LICENSE
deleted file mode 100644
index 684fbf94df83c1ab0d15ccb159147c4c9d483e85..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014-2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/var-dumper/README.md b/vendor/symfony/var-dumper/README.md
deleted file mode 100644
index 339f73eba30525a4acea14c4420da7115465419a..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-VarDumper Component
-===================
-
-The VarDumper component provides mechanisms for walking through any arbitrary
-PHP variable. It provides a better `dump()` function that you can use instead
-of `var_dump`.
-
-Resources
----------
-
-  * [Documentation](https://symfony.com/doc/current/components/var_dumper/introduction.html)
-  * [Contributing](https://symfony.com/doc/current/contributing/index.html)
-  * [Report issues](https://github.com/symfony/symfony/issues) and
-    [send Pull Requests](https://github.com/symfony/symfony/pulls)
-    in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/vendor/symfony/var-dumper/Resources/bin/var-dump-server b/vendor/symfony/var-dumper/Resources/bin/var-dump-server
deleted file mode 100644
index 98c813a0639b5797bfa60d9c780860de655fcdc6..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Resources/bin/var-dump-server
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Starts a dump server to collect and output dumps on a single place with multiple formats support.
- *
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- */
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Input\ArgvInput;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Logger\ConsoleLogger;
-use Symfony\Component\Console\Output\ConsoleOutput;
-use Symfony\Component\VarDumper\Command\ServerDumpCommand;
-use Symfony\Component\VarDumper\Server\DumpServer;
-
-function includeIfExists(string $file): bool
-{
-    return file_exists($file) && include $file;
-}
-
-if (
-    !includeIfExists(__DIR__ . '/../../../../autoload.php') &&
-    !includeIfExists(__DIR__ . '/../../vendor/autoload.php') &&
-    !includeIfExists(__DIR__ . '/../../../../../../vendor/autoload.php')
-) {
-    fwrite(STDERR, 'Install dependencies using Composer.'.PHP_EOL);
-    exit(1);
-}
-
-if (!class_exists(Application::class)) {
-    fwrite(STDERR, 'You need the "symfony/console" component in order to run the VarDumper server.'.PHP_EOL);
-    exit(1);
-}
-
-$input = new ArgvInput();
-$output = new ConsoleOutput();
-$defaultHost = '127.0.0.1:9912';
-$host = $input->getParameterOption(['--host'], $_SERVER['VAR_DUMPER_SERVER'] ?? $defaultHost, true);
-$logger = interface_exists(LoggerInterface::class) ? new ConsoleLogger($output->getErrorOutput()) : null;
-
-$app = new Application();
-
-$app->getDefinition()->addOption(
-    new InputOption('--host', null, InputOption::VALUE_REQUIRED, 'The address the server should listen to', $defaultHost)
-);
-
-$app->add($command = new ServerDumpCommand(new DumpServer($host, $logger)))
-    ->getApplication()
-    ->setDefaultCommand($command->getName(), true)
-    ->run($input, $output)
-;
diff --git a/vendor/symfony/var-dumper/Resources/css/htmlDescriptor.css b/vendor/symfony/var-dumper/Resources/css/htmlDescriptor.css
deleted file mode 100644
index 8f706d640f0b707653cdaec6db69f4d812b6e33a..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Resources/css/htmlDescriptor.css
+++ /dev/null
@@ -1,130 +0,0 @@
-body {
-    display: flex;
-    flex-direction: column-reverse;
-    justify-content: flex-end;
-    max-width: 1140px;
-    margin: auto;
-    padding: 15px;
-    word-wrap: break-word;
-    background-color: #F9F9F9;
-    color: #222;
-    font-family: Helvetica, Arial, sans-serif;
-    font-size: 14px;
-    line-height: 1.4;
-}
-p {
-    margin: 0;
-}
-a {
-    color: #218BC3;
-    text-decoration: none;
-}
-a:hover {
-    text-decoration: underline;
-}
-.text-small {
-    font-size: 12px !important;
-}
-article {
-    margin: 5px;
-    margin-bottom: 10px;
-}
-article > header > .row {
-    display: flex;
-    flex-direction: row;
-    align-items: baseline;
-    margin-bottom: 10px;
-}
-article > header > .row > .col {
-    flex: 1;
-    display: flex;
-    align-items: baseline;
-}
-article > header > .row > h2 {
-    font-size: 14px;
-    color: #222;
-    font-weight: normal;
-    font-family: "Lucida Console", monospace, sans-serif;
-    word-break: break-all;
-    margin: 20px 5px 0 0;
-    user-select: all;
-}
-article > header > .row > h2 > code {
-    white-space: nowrap;
-    user-select: none;
-    color: #cc2255;
-    background-color: #f7f7f9;
-    border: 1px solid #e1e1e8;
-    border-radius: 3px;
-    margin-right: 5px;
-    padding: 0 3px;
-}
-article > header > .row > time.col {
-    flex: 0;
-    text-align: right;
-    white-space: nowrap;
-    color: #999;
-    font-style: italic;
-}
-article > header ul.tags {
-    list-style: none;
-    padding: 0;
-    margin: 0;
-    font-size: 12px;
-}
-article > header ul.tags > li {
-    user-select: all;
-    margin-bottom: 2px;
-}
-article > header ul.tags > li > span.badge {
-    display: inline-block;
-    padding: .25em .4em;
-    margin-right: 5px;
-    border-radius: 4px;
-    background-color: #6c757d3b;
-    color: #524d4d;
-    font-size: 12px;
-    text-align: center;
-    font-weight: 700;
-    line-height: 1;
-    white-space: nowrap;
-    vertical-align: baseline;
-    user-select: none;
-}
-article > section.body {
-    border: 1px solid #d8d8d8;
-    background: #FFF;
-    padding: 10px;
-    border-radius: 3px;
-}
-pre.sf-dump {
-    border-radius: 3px;
-    margin-bottom: 0;
-}
-.hidden {
-    display: none !important;
-}
-.dumped-tag > .sf-dump {
-    display: inline-block;
-    margin: 0;
-    padding: 1px 5px;
-    line-height: 1.4;
-    vertical-align: top;
-    background-color: transparent;
-    user-select: auto;
-}
-.dumped-tag > pre.sf-dump,
-.dumped-tag > .sf-dump-default {
-    color: #CC7832;
-    background: none;
-}
-.dumped-tag > .sf-dump .sf-dump-str { color: #629755; }
-.dumped-tag > .sf-dump .sf-dump-private,
-.dumped-tag > .sf-dump .sf-dump-protected,
-.dumped-tag > .sf-dump .sf-dump-public { color: #262626; }
-.dumped-tag > .sf-dump .sf-dump-note { color: #6897BB; }
-.dumped-tag > .sf-dump .sf-dump-key { color: #789339; }
-.dumped-tag > .sf-dump .sf-dump-ref { color: #6E6E6E; }
-.dumped-tag > .sf-dump .sf-dump-ellipsis { color: #CC7832; max-width: 100em; }
-.dumped-tag > .sf-dump .sf-dump-ellipsis-path { max-width: 5em; }
-.dumped-tag > .sf-dump .sf-dump-ns { user-select: none; }
diff --git a/vendor/symfony/var-dumper/Resources/functions/dump.php b/vendor/symfony/var-dumper/Resources/functions/dump.php
deleted file mode 100644
index a485d573a007a9016f1d529536206a4b7b6d3607..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Resources/functions/dump.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Component\VarDumper\VarDumper;
-
-if (!function_exists('dump')) {
-    /**
-     * @author Nicolas Grekas <p@tchwork.com>
-     */
-    function dump($var, ...$moreVars)
-    {
-        VarDumper::dump($var);
-
-        foreach ($moreVars as $v) {
-            VarDumper::dump($v);
-        }
-
-        if (1 < func_num_args()) {
-            return func_get_args();
-        }
-
-        return $var;
-    }
-}
-
-if (!function_exists('dd')) {
-    function dd(...$vars)
-    {
-        foreach ($vars as $v) {
-            VarDumper::dump($v);
-        }
-
-        exit(1);
-    }
-}
diff --git a/vendor/symfony/var-dumper/Resources/js/htmlDescriptor.js b/vendor/symfony/var-dumper/Resources/js/htmlDescriptor.js
deleted file mode 100644
index 63101e57c3c75d04ab70e77e7dbd955677c4e9ca..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Resources/js/htmlDescriptor.js
+++ /dev/null
@@ -1,10 +0,0 @@
-document.addEventListener('DOMContentLoaded', function() {
-  let prev = null;
-  Array.from(document.getElementsByTagName('article')).reverse().forEach(function (article) {
-    const dedupId = article.dataset.dedupId;
-    if (dedupId === prev) {
-      article.getElementsByTagName('header')[0].classList.add('hidden');
-    }
-    prev = dedupId;
-  });
-});
diff --git a/vendor/symfony/var-dumper/Server/Connection.php b/vendor/symfony/var-dumper/Server/Connection.php
deleted file mode 100644
index d8be23587e764a4b22b684fa7fe631f4119310cd..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Server/Connection.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Server;
-
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Dumper\ContextProvider\ContextProviderInterface;
-
-/**
- * Forwards serialized Data clones to a server.
- *
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- */
-class Connection
-{
-    private $host;
-    private $contextProviders;
-    private $socket;
-
-    /**
-     * @param string                     $host             The server host
-     * @param ContextProviderInterface[] $contextProviders Context providers indexed by context name
-     */
-    public function __construct(string $host, array $contextProviders = [])
-    {
-        if (false === strpos($host, '://')) {
-            $host = 'tcp://'.$host;
-        }
-
-        $this->host = $host;
-        $this->contextProviders = $contextProviders;
-    }
-
-    public function getContextProviders(): array
-    {
-        return $this->contextProviders;
-    }
-
-    public function write(Data $data): bool
-    {
-        $socketIsFresh = !$this->socket;
-        if (!$this->socket = $this->socket ?: $this->createSocket()) {
-            return false;
-        }
-
-        $context = ['timestamp' => microtime(true)];
-        foreach ($this->contextProviders as $name => $provider) {
-            $context[$name] = $provider->getContext();
-        }
-        $context = array_filter($context);
-        $encodedPayload = base64_encode(serialize([$data, $context]))."\n";
-
-        set_error_handler([self::class, 'nullErrorHandler']);
-        try {
-            if (-1 !== stream_socket_sendto($this->socket, $encodedPayload)) {
-                return true;
-            }
-            if (!$socketIsFresh) {
-                stream_socket_shutdown($this->socket, \STREAM_SHUT_RDWR);
-                fclose($this->socket);
-                $this->socket = $this->createSocket();
-            }
-            if (-1 !== stream_socket_sendto($this->socket, $encodedPayload)) {
-                return true;
-            }
-        } finally {
-            restore_error_handler();
-        }
-
-        return false;
-    }
-
-    private static function nullErrorHandler($t, $m)
-    {
-        // no-op
-    }
-
-    private function createSocket()
-    {
-        set_error_handler([self::class, 'nullErrorHandler']);
-        try {
-            return stream_socket_client($this->host, $errno, $errstr, 3, \STREAM_CLIENT_CONNECT | \STREAM_CLIENT_ASYNC_CONNECT);
-        } finally {
-            restore_error_handler();
-        }
-    }
-}
diff --git a/vendor/symfony/var-dumper/Server/DumpServer.php b/vendor/symfony/var-dumper/Server/DumpServer.php
deleted file mode 100644
index 3e6343e350258973c2b5bcc7e341c7ec3489bb65..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Server/DumpServer.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Server;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Cloner\Stub;
-
-/**
- * A server collecting Data clones sent by a ServerDumper.
- *
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- *
- * @final
- */
-class DumpServer
-{
-    private $host;
-    private $socket;
-    private $logger;
-
-    public function __construct(string $host, LoggerInterface $logger = null)
-    {
-        if (false === strpos($host, '://')) {
-            $host = 'tcp://'.$host;
-        }
-
-        $this->host = $host;
-        $this->logger = $logger;
-    }
-
-    public function start(): void
-    {
-        if (!$this->socket = stream_socket_server($this->host, $errno, $errstr)) {
-            throw new \RuntimeException(sprintf('Server start failed on "%s": ', $this->host).$errstr.' '.$errno);
-        }
-    }
-
-    public function listen(callable $callback): void
-    {
-        if (null === $this->socket) {
-            $this->start();
-        }
-
-        foreach ($this->getMessages() as $clientId => $message) {
-            if ($this->logger) {
-                $this->logger->info('Received a payload from client {clientId}', ['clientId' => $clientId]);
-            }
-
-            $payload = @unserialize(base64_decode($message), ['allowed_classes' => [Data::class, Stub::class]]);
-
-            // Impossible to decode the message, give up.
-            if (false === $payload) {
-                if ($this->logger) {
-                    $this->logger->warning('Unable to decode a message from {clientId} client.', ['clientId' => $clientId]);
-                }
-
-                continue;
-            }
-
-            if (!\is_array($payload) || \count($payload) < 2 || !$payload[0] instanceof Data || !\is_array($payload[1])) {
-                if ($this->logger) {
-                    $this->logger->warning('Invalid payload from {clientId} client. Expected an array of two elements (Data $data, array $context)', ['clientId' => $clientId]);
-                }
-
-                continue;
-            }
-
-            list($data, $context) = $payload;
-
-            $callback($data, $context, $clientId);
-        }
-    }
-
-    public function getHost(): string
-    {
-        return $this->host;
-    }
-
-    private function getMessages(): iterable
-    {
-        $sockets = [(int) $this->socket => $this->socket];
-        $write = [];
-
-        while (true) {
-            $read = $sockets;
-            stream_select($read, $write, $write, null);
-
-            foreach ($read as $stream) {
-                if ($this->socket === $stream) {
-                    $stream = stream_socket_accept($this->socket);
-                    $sockets[(int) $stream] = $stream;
-                } elseif (feof($stream)) {
-                    unset($sockets[(int) $stream]);
-                    fclose($stream);
-                } else {
-                    yield (int) $stream => fgets($stream);
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php b/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php
deleted file mode 100644
index 33d60c020196b45191c77e5fb60083577bcc0c36..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper\Test;
-
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-use Symfony\Component\VarDumper\Dumper\CliDumper;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-trait VarDumperTestTrait
-{
-    /**
-     * @internal
-     */
-    private $varDumperConfig = [
-        'casters' => [],
-        'flags' => null,
-    ];
-
-    protected function setUpVarDumper(array $casters, int $flags = null): void
-    {
-        $this->varDumperConfig['casters'] = $casters;
-        $this->varDumperConfig['flags'] = $flags;
-    }
-
-    /**
-     * @after
-     */
-    protected function tearDownVarDumper(): void
-    {
-        $this->varDumperConfig['casters'] = [];
-        $this->varDumperConfig['flags'] = null;
-    }
-
-    public function assertDumpEquals($expected, $data, int $filter = 0, string $message = '')
-    {
-        $this->assertSame($this->prepareExpectation($expected, $filter), $this->getDump($data, null, $filter), $message);
-    }
-
-    public function assertDumpMatchesFormat($expected, $data, int $filter = 0, string $message = '')
-    {
-        $this->assertStringMatchesFormat($this->prepareExpectation($expected, $filter), $this->getDump($data, null, $filter), $message);
-    }
-
-    protected function getDump($data, $key = null, int $filter = 0): ?string
-    {
-        if (null === $flags = $this->varDumperConfig['flags']) {
-            $flags = getenv('DUMP_LIGHT_ARRAY') ? CliDumper::DUMP_LIGHT_ARRAY : 0;
-            $flags |= getenv('DUMP_STRING_LENGTH') ? CliDumper::DUMP_STRING_LENGTH : 0;
-            $flags |= getenv('DUMP_COMMA_SEPARATOR') ? CliDumper::DUMP_COMMA_SEPARATOR : 0;
-        }
-
-        $cloner = new VarCloner();
-        $cloner->addCasters($this->varDumperConfig['casters']);
-        $cloner->setMaxItems(-1);
-        $dumper = new CliDumper(null, null, $flags);
-        $dumper->setColors(false);
-        $data = $cloner->cloneVar($data, $filter)->withRefHandles(false);
-        if (null !== $key && null === $data = $data->seek($key)) {
-            return null;
-        }
-
-        return rtrim($dumper->dump($data, true));
-    }
-
-    private function prepareExpectation($expected, int $filter): string
-    {
-        if (!\is_string($expected)) {
-            $expected = $this->getDump($expected, null, $filter);
-        }
-
-        return rtrim($expected);
-    }
-}
diff --git a/vendor/symfony/var-dumper/VarDumper.php b/vendor/symfony/var-dumper/VarDumper.php
deleted file mode 100644
index febc1e0d17bc474976d13cc33c96227b4620f415..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/VarDumper.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\VarDumper;
-
-use Symfony\Component\VarDumper\Caster\ReflectionCaster;
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-use Symfony\Component\VarDumper\Dumper\CliDumper;
-use Symfony\Component\VarDumper\Dumper\ContextProvider\SourceContextProvider;
-use Symfony\Component\VarDumper\Dumper\ContextualizedDumper;
-use Symfony\Component\VarDumper\Dumper\HtmlDumper;
-
-// Load the global dump() function
-require_once __DIR__.'/Resources/functions/dump.php';
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class VarDumper
-{
-    private static $handler;
-
-    public static function dump($var)
-    {
-        if (null === self::$handler) {
-            $cloner = new VarCloner();
-            $cloner->addCasters(ReflectionCaster::UNSET_CLOSURE_FILE_INFO);
-
-            if (isset($_SERVER['VAR_DUMPER_FORMAT'])) {
-                $dumper = 'html' === $_SERVER['VAR_DUMPER_FORMAT'] ? new HtmlDumper() : new CliDumper();
-            } else {
-                $dumper = \in_array(\PHP_SAPI, ['cli', 'phpdbg']) ? new CliDumper() : new HtmlDumper();
-            }
-
-            $dumper = new ContextualizedDumper($dumper, [new SourceContextProvider()]);
-
-            self::$handler = function ($var) use ($cloner, $dumper) {
-                $dumper->dump($cloner->cloneVar($var));
-            };
-        }
-
-        return (self::$handler)($var);
-    }
-
-    public static function setHandler(callable $callable = null)
-    {
-        $prevHandler = self::$handler;
-
-        // Prevent replacing the handler with expected format as soon as the env var was set:
-        if (isset($_SERVER['VAR_DUMPER_FORMAT'])) {
-            return $prevHandler;
-        }
-
-        self::$handler = $callable;
-
-        return $prevHandler;
-    }
-}
diff --git a/vendor/symfony/var-dumper/composer.json b/vendor/symfony/var-dumper/composer.json
deleted file mode 100644
index 3c515c400fe82ee7a7ba3797a5fc0fde5263fbfb..0000000000000000000000000000000000000000
--- a/vendor/symfony/var-dumper/composer.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-    "name": "symfony/var-dumper",
-    "type": "library",
-    "description": "Symfony mechanism for exploring and dumping PHP variables",
-    "keywords": ["dump", "debug"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Nicolas Grekas",
-            "email": "p@tchwork.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.2.5",
-        "symfony/polyfill-mbstring": "~1.0",
-        "symfony/polyfill-php80": "^1.15"
-    },
-    "require-dev": {
-        "ext-iconv": "*",
-        "symfony/console": "^4.4|^5.0",
-        "symfony/process": "^4.4|^5.0",
-        "twig/twig": "^2.4|^3.0"
-    },
-    "conflict": {
-        "phpunit/phpunit": "<5.4.3",
-        "symfony/console": "<4.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"
-    },
-    "autoload": {
-        "files": [ "Resources/functions/dump.php" ],
-        "psr-4": { "Symfony\\Component\\VarDumper\\": "" },
-        "exclude-from-classmap": [
-            "/Tests/"
-        ]
-    },
-    "bin": [
-        "Resources/bin/var-dump-server"
-    ],
-    "minimum-stability": "dev"
-}
diff --git a/vendor/twig/twig/.editorconfig b/vendor/twig/twig/.editorconfig
deleted file mode 100644
index 270f1d1b770fc7163ac951bafe0ece7a94ac3d0e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/.editorconfig
+++ /dev/null
@@ -1,18 +0,0 @@
-; top-most EditorConfig file
-root = true
-
-; Unix-style newlines
-[*]
-end_of_line = LF
-
-[*.php]
-indent_style = space
-indent_size = 4
-
-[*.test]
-indent_style = space
-indent_size = 4
-
-[*.rst]
-indent_style = space
-indent_size = 4
diff --git a/vendor/twig/twig/.gitattributes b/vendor/twig/twig/.gitattributes
deleted file mode 100644
index 3a3ce6e7ce246aa8a0760f07b39a3c39b11d5a4f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/.gitattributes
+++ /dev/null
@@ -1,2 +0,0 @@
-/tests export-ignore
-/phpunit.xml.dist export-ignore
diff --git a/vendor/twig/twig/.gitignore b/vendor/twig/twig/.gitignore
deleted file mode 100644
index 8a29959e2a1e0fbe848bd3e64ca51b0c601c7743..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-/build
-/composer.lock
-/ext/twig/autom4te.cache/
-/phpunit.xml
-/vendor
-.phpunit.result.cache
diff --git a/vendor/twig/twig/.php_cs.dist b/vendor/twig/twig/.php_cs.dist
deleted file mode 100644
index b81882fbf2ccd84fc7ef1f338d4901dd03217a08..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/.php_cs.dist
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-return PhpCsFixer\Config::create()
-    ->setRules([
-        '@Symfony' => true,
-        '@Symfony:risky' => true,
-        '@PHPUnit75Migration:risky' => true,
-        'php_unit_dedicate_assert' => ['target' => '5.6'],
-        'array_syntax' => ['syntax' => 'short'],
-        'php_unit_fqcn_annotation' => true,
-        'no_unreachable_default_argument_value' => false,
-        'braces' => ['allow_single_line_closure' => true],
-        'heredoc_to_nowdoc' => false,
-        'ordered_imports' => true,
-        'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'],
-        'native_function_invocation' => ['include' => ['@compiler_optimized'], 'scope' => 'all'],
-    ])
-    ->setRiskyAllowed(true)
-    ->setFinder(PhpCsFixer\Finder::create()->in(__DIR__))
-;
diff --git a/vendor/twig/twig/.travis.yml b/vendor/twig/twig/.travis.yml
deleted file mode 100644
index 8a57df8c31ba9edc5be1cb181eafc45f8cf8e927..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/.travis.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-language: php
-
-dist: xenial
-
-cache:
-    directories:
-        - vendor
-        - $HOME/.composer/cache/files
-
-env:
-    global:
-        - SYMFONY_PHPUNIT_DISABLE_RESULT_CACHE=1
-
-before_install:
-    - phpenv config-rm xdebug.ini || return 0
-    - echo memory_limit = -1 >> ~/.phpenv/versions/$TRAVIS_PHP_VERSION/etc/conf.d/travis.ini
-
-install:
-    - travis_retry composer install
-    - export PHPUNIT=$(readlink -f ./vendor/bin/simple-phpunit)
-    - $PHPUNIT install
-
-script:
-    - $PHPUNIT
-
-jobs:
-    fast_finish: true
-    include:
-        - php: 7.2
-        - php: 7.3
-        - php: 7.4
-        - php: nightly
-        - stage: integration tests
-          php: 7.3
-          script: ./drupal_test.sh
diff --git a/vendor/twig/twig/CHANGELOG b/vendor/twig/twig/CHANGELOG
deleted file mode 100644
index 862dd3f4b9ce679221f5f5d85ce9bb5b2b48cf2c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/CHANGELOG
+++ /dev/null
@@ -1,1167 +0,0 @@
-# 1.44.1 (2020-10-27)
-
- * Fix "include(template_from_string())"
-
-# 1.44.0 (2020-10-21)
-
- * Remove implicit dependency on ext/iconv in JS escaper
- * Fix sandbox support when using "include(template_from_string())"
- * Make round brackets optional for one argument tests like "same as" or "divisible by"
- * Add support for ES2015 style object initialisation shortcut { a } is the same as { 'a': a }
- * Fix filter(), map(), and reduce() to throw a RuntimeError instead of a PHP TypeError
- * Drop PHP 7.1 support
-
-# 1.43.1 (2020-08-05)
-
- * Fix sandbox not disabled if syntax error occurs within {% sandbox %} tag
- * Fix a regression when not using a space before an operator
- * Restrict callables to closures in filters
- * Allow trailing commas in argument lists (in calls as well as definitions)
-
-# 1.43.0 (2020-07-05)
-
- * Throw exception in case non-Traversable data is passed to "filter"
- * Fix context optimization on PHP 7.4
- * Fix PHP 8 compatibility
- * Drop PHP 5.5 5.6, and 7.0 support
- * Fix ambiguous syntax parsing
- * In sandbox, the `filter`, `map` and `reduce` filters require Closures in `arrow` parameter
-
-# 1.42.5 (2020-02-11)
-
- * Fix implementation of case-insensitivity for method names
-
-# 1.42.4 (2019-11-11)
-
- * optimized "block('foo') ?? 'bar"
- * added supported for exponential numbers
-
-# 1.42.3 (2019-08-24)
-
- * fixed the "split" filter when the delimiter is "0"
- * fixed the "empty" test on Traversable instances
- * fixed cache when opcache is installed but disabled
- * fixed PHP 7.4 compatibility
- * bumped the minimal PHP version to 5.5
-
-# 1.42.2 (2019-06-18)
-
- * Display partial output (PHP buffer) when an error occurs in debug mode
-
-# 1.42.1 (2019-06-04)
-
- * added support for "Twig\Markup" instances in the "in" test (again)
- * allowed string operators as variables names in assignments
-
-# 1.42.0 (2019-05-31)
-
- * fixed the "filter" filter when the argument is \Traversable but does not implement \Iterator (\SimpleXmlElement for instance)
- * fixed a PHP fatal error when calling a macro imported in a block in a nested block
- * fixed a PHP fatal error when calling a macro imported in the template in another macro
- * fixed wrong error message on "import" and "from"
-
-# 1.41.0 (2019-05-14)
-
- * fixed support for PHP 7.4
- * added "filter", "map", and "reduce" filters (and support for arrow functions)
- * fixed partial output leak when a PHP fatal error occurs
- * optimized context access on PHP 7.4
-
-# 1.40.1 (2019-04-29)
-
-# fixed regression in NodeTraverser
-
-# 1.40.0 (2019-04-28)
-
- * allowed Twig\NodeVisitor\NodeVisitorInterface::leaveNode() to return "null" instead of "false" (same meaning)
- * added the "apply" tag as a replacement for the "filter" tag
- * allowed Twig\Loader\FilesystemLoader::findTemplate() to return "null" instead of "false" (same meaning)
- * added support for "Twig\Markup" instances in the "in" test
- * fixed Lexer when using custom options containing the # char
- * fixed "import" when macros are stored in a template string
-
-# 1.39.1 (2019-04-16)
-
- * fixed EscaperNodeVisitor
-
-# 1.39.0 (2019-04-16)
-
- * added Traversable support for the length filter
- * fixed some wrong location in error messages
- * made exception creation faster
- * made escaping on ternary expressions (?: and ??) more fine-grained
- * added the possibility to give a nice name to string templates (template_from_string function)
- * fixed the "with" behavior to always include the globals (for consistency with the "include" and "embed" tags)
- * fixed "include" with "ignore missing" when an error loading occurs in the included template
- * added support for a new whitespace trimming option ({%~ ~%}, {{~ ~}}, {#~ ~#})
-
-# 1.38.4 (2019-03-23)
-
- * fixed CheckToStringNode implementation (broken when a function/filter is variadic)
-
-# 1.38.3 (2019-03-21)
-
- * fixed the spaceless filter so that it behaves like the spaceless tag
- * fixed BC break on Environment::resolveTemplate()
- * fixed the bundled Autoloader to also load namespaced classes
- * allowed Traversable objects to be used in the "with" tag
- * allowed Traversable objects to be used in the "with" argument of the "include" and "embed" tags
-
-# 1.38.2 (2019-03-12)
-
- * added TemplateWrapper::getTemplateName()
-
-# 1.38.1 (2019-03-12)
-
- * fixed class aliases
-
-# 1.38.0 (2019-03-12)
-
- * fixed sandbox security issue (under some circumstances, calling the
-   __toString() method on an object was possible even if not allowed by the
-   security policy)
- * fixed batch filter clobbers array keys when fill parameter is used
- * added preserveKeys support for the batch filter
- * fixed "embed" support when used from "template_from_string"
- * added the possibility to pass a TemplateWrapper to Twig\Environment::load()
- * improved the performance of the sandbox
- * added a spaceless filter
- * added max value to the "random" function
- * made namespace classes the default classes (PSR-0 ones are aliases now)
- * removed duplicated directory separator in FilesystemLoader
- * added Twig\Loader\ChainLoader::getLoaders()
- * changed internal code to use the namespaced classes as much as possible
-
-# 1.37.1 (2019-01-14)
-
- * fixed regression (key exists check for non ArrayObject objects)
- * fixed logic in TemplateWrapper
-
-# 1.37.0 (2019-01-14)
-
- * fixed ArrayObject access with a null value
- * fixed embedded templates starting with a BOM
- * fixed using a Twig_TemplateWrapper instance as an argument to extends
- * switched generated code to use the PHP short array notation
- * dropped PHP 5.3 support
- * fixed float representation in compiled templates
- * added a second argument to the join filter (last separator configuration)
-
-# 1.36.0 (2018-12-16)
-
- * made sure twig_include returns a string
- * fixed multi-byte UFT-8 in escape('html_attr')
- * added the "deprecated" tag
- * added support for dynamically named tests
- * fixed GlobalsInterface extended class
- * fixed filesystem loader throwing an exception instead of returning false
-
-# 1.35.4 (2018-07-13)
-
- * ensured that syntax errors are triggered with the right line
- * added the Symfony ctype polyfill as a dependency
- * "js" filter now produces valid JSON
-
-# 1.35.3 (2018-03-20)
-
- * fixed block names unicity
- * fixed counting children of SimpleXMLElement objects
- * added missing else clause to avoid infinite loops
- * fixed .. (range operator) in sandbox policy
-
-# 1.35.2 (2018-03-03)
-
- * fixed a regression in the way the profiler is registered in templates
-
-# 1.35.1 (2018-03-02)
-
- * added an exception when using "===" instead of "same as"
- * fixed possible array to string conversion concealing actual error
- * made variable names deterministic in compiled templates
- * fixed length filter when passing an instance of IteratorAggregate
- * fixed Environment::resolveTemplate to accept instances of TemplateWrapper
-
-# 1.35.0 (2017-09-27)
-
- * added Twig_Profiler_Profile::reset()
- * fixed use TokenParser to return an empty Node
- * added RuntimeExtensionInterface
- * added circular reference detection when loading templates
-
-# 1.34.4 (2017-07-04)
-
- * added support for runtime loaders in IntegrationTestCase
- * fixed deprecation when using Twig_Profiler_Dumper_Html
-
-# 1.34.3 (2017-06-07)
-
- * fixed namespaces introduction
-
-# 1.34.2 (2017-06-05)
-
- * fixed namespaces introduction
-
-# 1.34.1 (2017-06-05)
-
- * fixed namespaces introduction
-
-# 1.34.0 (2017-06-05)
-
- * added support for PHPUnit 6 when testing extensions
- * fixed PHP 7.2 compatibility
- * fixed template name generation in Twig_Environment::createTemplate()
- * removed final tag on Twig_TokenParser_Include
- * added namespaced aliases for all (non-deprecated) classes and interfaces
- * dropped HHVM support
- * dropped PHP 5.2 support
-
-# 1.33.2 (2017-04-20)
-
- * fixed edge case in the method cache for Twig attributes
-
-# 1.33.1 (2017-04-18)
-
- * fixed the empty() test
-
-# 1.33.0 (2017-03-22)
-
- * fixed a race condition handling when writing cache files
- * "length" filter now returns string length when applied to an object that does
-   not implement \Countable but provides __toString()
- * "empty" test will now consider the return value of the __toString() method for
-   objects implement __toString() but not \Countable
- * fixed JS escaping for unicode characters with higher code points
-
-# 1.32.0 (2017-02-26)
-
- * fixed deprecation notice in Twig_Util_DeprecationCollector
- * added a PSR-11 compatible runtime loader
- * added `side` argument to `trim` to allow left or right trimming only.
-
-# 1.31.0 (2017-01-11)
-
- * added Twig_NodeCaptureInterface for nodes that capture all output
- * fixed marking the environment as initialized too early
- * fixed C89 compat for the C extension
- * turned fatal error into exception when a previously generated cache is corrupted
- * fixed offline cache warm-ups for embedded templates
-
-# 1.30.0 (2016-12-23)
-
- * added Twig_FactoryRuntimeLoader
- * deprecated function/test/filter/tag overriding
- * deprecated the "disable_c_ext" attribute on Twig_Node_Expression_GetAttr
-
-# 1.29.0 (2016-12-13)
-
- * fixed sandbox being left enabled if an exception is thrown while rendering
- * marked some classes as being final (via @final)
- * made Twig_Error report real source path when possible
- * added support for {{ _self }} to provide an upgrade path from 1.x to 2.0 (replaces {{ _self.templateName }})
- * deprecated silent display of undefined blocks
- * deprecated support for mbstring.func_overload != 0
-
-# 1.28.2 (2016-11-23)
-
- * fixed precedence between getFoo() and isFoo() in Twig_Template::getAttribute()
- * improved a deprecation message
-
-# 1.28.1 (2016-11-18)
-
- * fixed block() function when used with a template argument
-
-# 1.28.0 (2016-11-17)
-
- * added support for the PHP 7 null coalescing operator for the ?? Twig implementation
- * exposed a way to access template data and methods in a portable way
- * changed context access to use the PHP 7 null coalescing operator when available
- * added the "with" tag
- * added support for a custom template on the block() function
- * added "is defined" support for block() and constant()
- * optimized the way attributes are fetched
-
-# 1.27.0 (2016-10-25)
-
- * deprecated Twig_Parser::getEnvironment()
- * deprecated Twig_Parser::addHandler() and Twig_Parser::addNodeVisitor()
- * deprecated Twig_Compiler::addIndentation()
- * fixed regression when registering two extensions having the same class name
- * deprecated Twig_LoaderInterface::getSource() (implement Twig_SourceContextLoaderInterface instead)
- * fixed the filesystem loader with relative paths
- * deprecated Twig_Node::getLine() in favor of Twig_Node::getTemplateLine()
- * deprecated Twig_Template::getSource() in favor of Twig_Template::getSourceContext()
- * deprecated Twig_Node::getFilename() in favor of Twig_Node::getTemplateName()
- * deprecated the "filename" escaping strategy (use "name" instead)
- * added Twig_Source to hold information about the original template
- * deprecated Twig_Error::getTemplateFile() and Twig_Error::setTemplateFile() in favor of Twig_Error::getTemplateName() and Twig_Error::setTemplateName()
- * deprecated Parser::getFilename()
- * fixed template paths when a template name contains a protocol like vfs://
- * improved debugging with Twig_Sandbox_SecurityError exceptions for disallowed methods and properties
-
-# 1.26.1 (2016-10-05)
-
- * removed template source code from generated template classes when debug is disabled
- * fixed default implementation of Twig_Template::getDebugInfo() for better BC
- * fixed regression on static calls for functions/filters/tests
-
-# 1.26.0 (2016-10-02)
-
- * added template cache invalidation based on more environment options
- * added a missing deprecation notice
- * fixed template paths when a template is stored in a PHAR file
- * allowed filters/functions/tests implementation to use a different class than the extension they belong to
- * deprecated Twig_ExtensionInterface::getName()
-
-# 1.25.0 (2016-09-21)
-
- * changed the way we store template source in template classes
- * removed usage of realpath in cache keys
- * fixed Twig cache sharing when used with different versions of PHP
- * removed embed parent workaround for simple use cases
- * deprecated the ability to store non Node instances in Node::$nodes
- * deprecated Twig_Environment::getLexer(), Twig_Environment::getParser(), Twig_Environment::getCompiler()
- * deprecated Twig_Compiler::getFilename()
-
-# 1.24.2 (2016-09-01)
-
- * fixed static callables
- * fixed a potential PHP warning when loading the cache
- * fixed a case where the autoescaping does not work as expected
-
-# 1.24.1 (2016-05-30)
-
- * fixed reserved keywords (forbids true, false, null and none keywords for variables names)
- * fixed support for PHP7 (Throwable support)
- * marked the following methods as being internals on Twig_Environment:
-   getFunctions(), getFilters(), getTests(), getFunction(), getFilter(), getTest(),
-   getTokenParsers(), getTags(), getNodeVisitors(), getUnaryOperators(), getBinaryOperators(),
-   getFunctions(), getFilters(), getGlobals(), initGlobals(), initExtensions(), and initExtension()
-
-# 1.24.0 (2016-01-25)
-
- * adding support for the ?? operator
- * fixed the defined test when used on a constant, a map, or a sequence
- * undeprecated _self (should only be used to get the template name, not the template instance)
- * fixed parsing on PHP7
-
-# 1.23.3 (2016-01-11)
-
- * fixed typo
-
-# 1.23.2 (2015-01-11)
-
- * added versions in deprecated messages
- * made file cache tolerant for trailing (back)slashes on directory configuration
- * deprecated unused Twig_Node_Expression_ExtensionReference class
-
-# 1.23.1 (2015-11-05)
-
- * fixed some exception messages which triggered PHP warnings
- * fixed BC on Twig_Test_NodeTestCase
-
-# 1.23.0 (2015-10-29)
-
- * deprecated the possibility to override an extension by registering another one with the same name
- * deprecated Twig_ExtensionInterface::getGlobals() (added Twig_Extension_GlobalsInterface for BC)
- * deprecated Twig_ExtensionInterface::initRuntime() (added Twig_Extension_InitRuntimeInterface for BC)
- * deprecated Twig_Environment::computeAlternatives()
-
-# 1.22.3 (2015-10-13)
-
- * fixed regression when using null as a cache strategy
- * improved performance when checking template freshness
- * fixed warnings when loaded templates do not exist
- * fixed template class name generation to prevent possible collisions
- * fixed logic for custom escapers to call them even on integers and null values
- * changed template cache names to take into account the Twig C extension
-
-# 1.22.2 (2015-09-22)
-
- * fixed a race condition in template loading
-
-# 1.22.1 (2015-09-15)
-
- * fixed regression in template_from_string
-
-# 1.22.0 (2015-09-13)
-
- * made Twig_Test_IntegrationTestCase more flexible
- * added an option to force PHP bytecode invalidation when writing a compiled template into the cache
- * fixed the profiler duration for the root node
- * changed template cache names to take into account enabled extensions
- * deprecated Twig_Environment::clearCacheFiles(), Twig_Environment::getCacheFilename(),
-   Twig_Environment::writeCacheFile(), and Twig_Environment::getTemplateClassPrefix()
- * added a way to override the filesystem template cache system
- * added a way to get the original template source from Twig_Template
-
-# 1.21.2 (2015-09-09)
-
- * fixed variable names for the deprecation triggering code
- * fixed escaping strategy detection based on filename
- * added Traversable support for replace, merge, and sort
- * deprecated support for character by character replacement for the "replace" filter
-
-# 1.21.1 (2015-08-26)
-
- * fixed regression when using the deprecated Twig_Test_* classes
-
-# 1.21.0 (2015-08-24)
-
- * added deprecation notices for deprecated features
- * added a deprecation "framework" for filters/functions/tests and test fixtures
-
-# 1.20.0 (2015-08-12)
-
- * forbid access to the Twig environment from templates and internal parts of Twig_Template
- * fixed limited RCEs when in sandbox mode
- * deprecated Twig_Template::getEnvironment()
- * deprecated the _self variable for usage outside of the from and import tags
- * added Twig_BaseNodeVisitor to ease the compatibility of node visitors
-   between 1.x and 2.x
-
-# 1.19.0 (2015-07-31)
-
- * fixed wrong error message when including an undefined template in a child template
- * added support for variadic filters, functions, and tests
- * added support for extra positional arguments in macros
- * added ignore_missing flag to the source function
- * fixed batch filter with zero items
- * deprecated Twig_Environment::clearTemplateCache()
- * fixed sandbox disabling when using the include function
-
-# 1.18.2 (2015-06-06)
-
- * fixed template/line guessing in exceptions for nested templates
- * optimized the number of inodes and the size of realpath cache when using the cache
-
-# 1.18.1 (2015-04-19)
-
- * fixed memory leaks in the C extension
- * deprecated Twig_Loader_String
- * fixed the slice filter when used with a SimpleXMLElement object
- * fixed filesystem loader when trying to load non-files (like directories)
-
-# 1.18.0 (2015-01-25)
-
- * fixed some error messages where the line was wrong (unknown variables or argument names)
- * added a new way to customize the main Module node (via empty nodes)
- * added Twig_Environment::createTemplate() to create a template from a string
- * added a profiler
- * fixed filesystem loader cache when different file paths are used for the same template
-
-# 1.17.0 (2015-01-14)
-
- * added a 'filename' autoescaping strategy, which dynamically chooses the
-   autoescaping strategy for a template based on template file extension.
-
-# 1.16.3 (2014-12-25)
-
- * fixed regression for dynamic parent templates
- * fixed cache management with statcache
- * fixed a regression in the slice filter
-
-# 1.16.2 (2014-10-17)
-
- * fixed timezone on dates as strings
- * fixed 2-words test names when a custom node class is not used
- * fixed macros when using an argument named like a PHP super global (like GET or POST)
- * fixed date_modify when working with DateTimeImmutable
- * optimized for loops
- * fixed multi-byte characters handling in the split filter
- * fixed a regression in the in operator
- * fixed a regression in the slice filter
-
-# 1.16.1 (2014-10-10)
-
- * improved error reporting in a sandboxed template
- * fixed missing error file/line information under certain circumstances
- * fixed wrong error line number in some error messages
- * fixed the in operator to use strict comparisons
- * sped up the slice filter
- * fixed for mb function overload mb_substr acting different
- * fixed the attribute() function when passing a variable for the arguments
-
-# 1.16.0 (2014-07-05)
-
- * changed url_encode to always encode according to RFC 3986
- * fixed inheritance in a 'use'-hierarchy
- * removed the __toString policy check when the sandbox is disabled
- * fixed recursively calling blocks in templates with inheritance
-
-# 1.15.1 (2014-02-13)
-
- * fixed the conversion of the special '0000-00-00 00:00' date
- * added an error message when trying to import an undefined block from a trait
- * fixed a C extension crash when accessing defined but uninitialized property.
-
-# 1.15.0 (2013-12-06)
-
- * made ignoreStrictCheck in Template::getAttribute() works with __call() methods throwing BadMethodCallException
- * added min and max functions
- * added the round filter
- * fixed a bug that prevented the optimizers to be enabled/disabled selectively
- * fixed first and last filters for UTF-8 strings
- * added a source function to include the content of a template without rendering it
- * fixed the C extension sandbox behavior when get or set is prepend to method name
-
-# 1.14.2 (2013-10-30)
-
- * fixed error filename/line when an error occurs in an included file
- * allowed operators that contain whitespaces to have more than one whitespace
- * allowed tests to be made of 1 or 2 words (like "same as" or "divisible by")
-
-# 1.14.1 (2013-10-15)
-
- * made it possible to use named operators as variables
- * fixed the possibility to have a variable named 'matches'
- * added support for PHP 5.5 DateTimeInterface
-
-# 1.14.0 (2013-10-03)
-
- * fixed usage of the html_attr escaping strategy to avoid double-escaping with the html strategy
- * added new operators: ends with, starts with, and matches
- * fixed some compatibility issues with HHVM
- * added a way to add custom escaping strategies
- * fixed the C extension compilation on Windows
- * fixed the batch filter when using a fill argument with an exact match of elements to batch
- * fixed the filesystem loader cache when a template name exists in several namespaces
- * fixed template_from_string when the template includes or extends other ones
- * fixed a crash of the C extension on an edge case
-
-# 1.13.2 (2013-08-03)
-
- * fixed the error line number for an error occurs in and embedded template
- * fixed crashes of the C extension on some edge cases
-
-# 1.13.1 (2013-06-06)
-
- * added the possibility to ignore the filesystem constructor argument in Twig_Loader_Filesystem
- * fixed Twig_Loader_Chain::exists() for a loader which implements Twig_ExistsLoaderInterface
- * adjusted backtrace call to reduce memory usage when an error occurs
- * added support for object instances as the second argument of the constant test
- * fixed the include function when used in an assignment
-
-# 1.13.0 (2013-05-10)
-
- * fixed getting a numeric-like item on a variable ('09' for instance)
- * fixed getting a boolean or float key on an array, so it is consistent with PHP's array access:
-   `{{ array[false] }}` behaves the same as `echo $array[false];` (equals `$array[0]`)
- * made the escape filter 20% faster for happy path (escaping string for html with UTF-8)
- * changed ☃ to § in tests
- * enforced usage of named arguments after positional ones
-
-# 1.12.3 (2013-04-08)
-
- * fixed a security issue in the filesystem loader where it was possible to include a template one
-   level above the configured path
- * fixed fatal error that should be an exception when adding a filter/function/test too late
- * added a batch filter
- * added support for encoding an array as query string in the url_encode filter
-
-# 1.12.2 (2013-02-09)
-
- * fixed the timezone used by the date filter and function when the given date contains a timezone (like 2010-01-28T15:00:00+02:00)
- * fixed globals when getGlobals is called early on
- * added the first and last filter
-
-# 1.12.1 (2013-01-15)
-
- * added support for object instances as the second argument of the constant function
- * relaxed globals management to avoid a BC break
- * added support for {{ some_string[:2] }}
-
-# 1.12.0 (2013-01-08)
-
- * added verbatim as an alias for the raw tag to avoid confusion with the raw filter
- * fixed registration of tests and functions as anonymous functions
- * fixed globals management
-
-# 1.12.0-RC1 (2012-12-29)
-
- * added an include function (does the same as the include tag but in a more flexible way)
- * added the ability to use any PHP callable to define filters, functions, and tests
- * added a syntax error when using a loop variable that is not defined
- * added the ability to set default values for macro arguments
- * added support for named arguments for filters, tests, and functions
- * moved filters/functions/tests syntax errors to the parser
- * added support for extended ternary operator syntaxes
-
-# 1.11.1 (2012-11-11)
-
- * fixed debug info line numbering (was off by 2)
- * fixed escaping when calling a macro inside another one (regression introduced in 1.9.1)
- * optimized variable access on PHP 5.4
- * fixed a crash of the C extension when an exception was thrown from a macro called without being imported (using _self.XXX)
-
-# 1.11.0 (2012-11-07)
-
- * fixed macro compilation when a variable name is a PHP reserved keyword
- * changed the date filter behavior to always apply the default timezone, except if false is passed as the timezone
- * fixed bitwise operator precedences
- * added the template_from_string function
- * fixed default timezone usage for the date function
- * optimized the way Twig exceptions are managed (to make them faster)
- * added Twig_ExistsLoaderInterface (implementing this interface in your loader make the chain loader much faster)
-
-# 1.10.3 (2012-10-19)
-
- * fixed wrong template location in some error messages
- * reverted a BC break introduced in 1.10.2
- * added a split filter
-
-# 1.10.2 (2012-10-15)
-
- * fixed macro calls on PHP 5.4
-
-# 1.10.1 (2012-10-15)
-
- * made a speed optimization to macro calls when imported via the "import" tag
- * fixed C extension compilation on Windows
- * fixed a segfault in the C extension when using DateTime objects
-
-# 1.10.0 (2012-09-28)
-
- * extracted functional tests framework to make it reusable for third-party extensions
- * added namespaced templates support in Twig_Loader_Filesystem
- * added Twig_Loader_Filesystem::prependPath()
- * fixed an error when a token parser pass a closure as a test to the subparse() method
-
-# 1.9.2 (2012-08-25)
-
- * fixed the in operator for objects that contain circular references
- * fixed the C extension when accessing a public property of an object implementing the \ArrayAccess interface
-
-# 1.9.1 (2012-07-22)
-
- * optimized macro calls when auto-escaping is on
- * fixed wrong parent class for Twig_Function_Node
- * made Twig_Loader_Chain more explicit about problems
-
-# 1.9.0 (2012-07-13)
-
- * made the parsing independent of the template loaders
- * fixed exception trace when an error occurs when rendering a child template
- * added escaping strategies for CSS, URL, and HTML attributes
- * fixed nested embed tag calls
- * added the date_modify filter
-
-# 1.8.3 (2012-06-17)
-
- * fixed paths in the filesystem loader when passing a path that ends with a slash or a backslash
- * fixed escaping when a project defines a function named html or js
- * fixed chmod mode to apply the umask correctly
-
-# 1.8.2 (2012-05-30)
-
- * added the abs filter
- * fixed a regression when using a number in template attributes
- * fixed compiler when mbstring.func_overload is set to 2
- * fixed DateTimeZone support in date filter
-
-# 1.8.1 (2012-05-17)
-
- * fixed a regression when dealing with SimpleXMLElement instances in templates
- * fixed "is_safe" value for the "dump" function when "html_errors" is not defined in php.ini
- * switched to use mbstring whenever possible instead of iconv (you might need to update your encoding as mbstring and iconv encoding names sometimes differ)
-
-# 1.8.0 (2012-05-08)
-
- * enforced interface when adding tests, filters, functions, and node visitors from extensions
- * fixed a side-effect of the date filter where the timezone might be changed
- * simplified usage of the autoescape tag; the only (optional) argument is now the escaping strategy or false (with a BC layer)
- * added a way to dynamically change the auto-escaping strategy according to the template "filename"
- * changed the autoescape option to also accept a supported escaping strategy (for BC, true is equivalent to html)
- * added an embed tag
-
-# 1.7.0 (2012-04-24)
-
- * fixed a PHP warning when using CIFS
- * fixed template line number in some exceptions
- * added an iterable test
- * added an error when defining two blocks with the same name in a template
- * added the preserves_safety option for filters
- * fixed a PHP notice when trying to access a key on a non-object/array variable
- * enhanced error reporting when the template file is an instance of SplFileInfo
- * added Twig_Environment::mergeGlobals()
- * added compilation checks to avoid misuses of the sandbox tag
- * fixed filesystem loader freshness logic for high traffic websites
- * fixed random function when charset is null
-
-# 1.6.5 (2012-04-11)
-
- * fixed a regression when a template only extends another one without defining any blocks
-
-# 1.6.4 (2012-04-02)
-
- * fixed PHP notice in Twig_Error::guessTemplateLine() introduced in 1.6.3
- * fixed performance when compiling large files
- * optimized parent template creation when the template does not use dynamic inheritance
-
-# 1.6.3 (2012-03-22)
-
- * fixed usage of Z_ADDREF_P for PHP 5.2 in the C extension
- * fixed compilation of numeric values used in templates when using a locale where the decimal separator is not a dot
- * made the strategy used to guess the real template file name and line number in exception messages much faster and more accurate
-
-# 1.6.2 (2012-03-18)
-
- * fixed sandbox mode when used with inheritance
- * added preserveKeys support for the slice filter
- * fixed the date filter when a DateTime instance is passed with a specific timezone
- * added a trim filter
-
-# 1.6.1 (2012-02-29)
-
- * fixed Twig C extension
- * removed the creation of Twig_Markup instances when not needed
- * added a way to set the default global timezone for dates
- * fixed the slice filter on strings when the length is not specified
- * fixed the creation of the cache directory in case of a race condition
-
-# 1.6.0 (2012-02-04)
-
- * fixed raw blocks when used with the whitespace trim option
- * made a speed optimization to macro calls when imported via the "from" tag
- * fixed globals, parsers, visitors, filters, tests, and functions management in Twig_Environment when a new one or new extension is added
- * fixed the attribute function when passing arguments
- * added slice notation support for the [] operator (syntactic sugar for the slice operator)
- * added a slice filter
- * added string support for the reverse filter
- * fixed the empty test and the length filter for Twig_Markup instances
- * added a date function to ease date comparison
- * fixed unary operators precedence
- * added recursive parsing support in the parser
- * added string and integer handling for the random function
-
-# 1.5.1 (2012-01-05)
-
- * fixed a regression when parsing strings
-
-# 1.5.0 (2012-01-04)
-
- * added Traversable objects support for the join filter
-
-# 1.5.0-RC2 (2011-12-30)
-
- * added a way to set the default global date interval format
- * fixed the date filter for DateInterval instances (setTimezone() does not exist for them)
- * refactored Twig_Template::display() to ease its extension
- * added a number_format filter
-
-# 1.5.0-RC1 (2011-12-26)
-
- * removed the need to quote hash keys
- * allowed hash keys to be any expression
- * added a do tag
- * added a flush tag
- * added support for dynamically named filters and functions
- * added a dump function to help debugging templates
- * added a nl2br filter
- * added a random function
- * added a way to change the default format for the date filter
- * fixed the lexer when an operator ending with a letter ends a line
- * added string interpolation support
- * enhanced exceptions for unknown filters, functions, tests, and tags
-
-# 1.4.0 (2011-12-07)
-
- * fixed lexer when using big numbers (> PHP_INT_MAX)
- * added missing preserveKeys argument to the reverse filter
- * fixed macros containing filter tag calls
-
-# 1.4.0-RC2 (2011-11-27)
-
- * removed usage of Reflection in Twig_Template::getAttribute()
- * added a C extension that can optionally replace Twig_Template::getAttribute()
- * added negative timestamp support to the date filter
-
-# 1.4.0-RC1 (2011-11-20)
-
- * optimized variable access when using PHP 5.4
- * changed the precedence of the .. operator to be more consistent with languages that implements such a feature like Ruby
- * added an Exception to Twig_Loader_Array::isFresh() method when the template does not exist to be consistent with other loaders
- * added Twig_Function_Node to allow more complex functions to have their own Node class
- * added Twig_Filter_Node to allow more complex filters to have their own Node class
- * added Twig_Test_Node to allow more complex tests to have their own Node class
- * added a better error message when a template is empty but contain a BOM
- * fixed "in" operator for empty strings
- * fixed the "defined" test and the "default" filter (now works with more than one call (foo.bar.foo) and for both values of the strict_variables option)
- * changed the way extensions are loaded (addFilter/addFunction/addGlobal/addTest/addNodeVisitor/addTokenParser/addExtension can now be called in any order)
- * added Twig_Environment::display()
- * made the escape filter smarter when the encoding is not supported by PHP
- * added a convert_encoding filter
- * moved all node manipulations outside the compile() Node method
- * made several speed optimizations
-
-# 1.3.0 (2011-10-08)
-
-no changes
-
-# 1.3.0-RC1 (2011-10-04)
-
- * added an optimization for the parent() function
- * added cache reloading when auto_reload is true and an extension has been modified
- * added the possibility to force the escaping of a string already marked as safe (instance of Twig_Markup)
- * allowed empty templates to be used as traits
- * added traits support for the "parent" function
-
-# 1.2.0 (2011-09-13)
-
-no changes
-
-# 1.2.0-RC1 (2011-09-10)
-
- * enhanced the exception when a tag remains unclosed
- * added support for empty Countable objects for the "empty" test
- * fixed algorithm that determines if a template using inheritance is valid (no output between block definitions)
- * added better support for encoding problems when escaping a string (available as of PHP 5.4)
- * added a way to ignore a missing template when using the "include" tag ({% include "foo" ignore missing %})
- * added support for an array of templates to the "include" and "extends" tags ({% include ['foo', 'bar'] %})
- * added support for bitwise operators in expressions
- * added the "attribute" function to allow getting dynamic attributes on variables
- * added Twig_Loader_Chain
- * added Twig_Loader_Array::setTemplate()
- * added an optimization for the set tag when used to capture a large chunk of static text
- * changed name regex to match PHP one "[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" (works for blocks, tags, functions, filters, and macros)
- * removed the possibility to use the "extends" tag from a block
- * added "if" modifier support to "for" loops
-
-# 1.1.2 (2011-07-30)
-
- * fixed json_encode filter on PHP 5.2
- * fixed regression introduced in 1.1.1 ({{ block(foo|lower) }})
- * fixed inheritance when using conditional parents
- * fixed compilation of templates when the body of a child template is not empty
- * fixed output when a macro throws an exception
- * fixed a parsing problem when a large chunk of text is enclosed in a comment tag
- * added PHPDoc for all Token parsers and Core extension functions
-
-# 1.1.1 (2011-07-17)
-
- * added a performance optimization in the Optimizer (also helps to lower the number of nested level calls)
- * made some performance improvement for some edge cases
-
-# 1.1.0 (2011-06-28)
-
- * fixed json_encode filter
-
-# 1.1.0-RC3 (2011-06-24)
-
- * fixed method case-sensitivity when using the sandbox mode
- * added timezone support for the date filter
- * fixed possible security problems with NUL bytes
-
-# 1.1.0-RC2 (2011-06-16)
-
- * added an exception when the template passed to "use" is not a string
- * made 'a.b is defined' not throw an exception if a is not defined (in strict mode)
- * added {% line \d+ %} directive
-
-# 1.1.0-RC1 (2011-05-28)
-
-Flush your cache after upgrading.
-
- * fixed date filter when using a timestamp
- * fixed the defined test for some cases
- * fixed a parsing problem when a large chunk of text is enclosed in a raw tag
- * added support for horizontal reuse of template blocks (see docs for more information)
- * added whitespace control modifier to all tags (see docs for more information)
- * added null as an alias for none (the null test is also an alias for the none test now)
- * made TRUE, FALSE, NONE equivalent to their lowercase counterparts
- * wrapped all compilation and runtime exceptions with Twig_Error_Runtime and added logic to guess the template name and line
- * moved display() method to Twig_Template (generated templates should now use doDisplay() instead)
-
-# 1.0.0 (2011-03-27)
-
- * fixed output when using mbstring
- * fixed duplicate call of methods when using the sandbox
- * made the charset configurable for the escape filter
-
-# 1.0.0-RC2 (2011-02-21)
-
- * changed the way {% set %} works when capturing (the content is now marked as safe)
- * added support for macro name in the endmacro tag
- * make Twig_Error compatible with PHP 5.3.0 >
- * fixed an infinite loop on some Windows configurations
- * fixed the "length" filter for numbers
- * fixed Template::getAttribute() as properties in PHP are case sensitive
- * removed coupling between Twig_Node and Twig_Template
- * fixed the ternary operator precedence rule
-
-# 1.0.0-RC1 (2011-01-09)
-
-Backward incompatibilities:
-
- * the "items" filter, which has been deprecated for quite a long time now, has been removed
- * the "range" filter has been converted to a function: 0|range(10) -> range(0, 10)
- * the "constant" filter has been converted to a function: {{ some_date|date('DATE_W3C'|constant) }} -> {{ some_date|date(constant('DATE_W3C')) }}
- * the "cycle" filter has been converted to a function: {{ ['odd', 'even']|cycle(i) }} -> {{ cycle(['odd', 'even'], i) }}
- * the "for" tag does not support "joined by" anymore
- * the "autoescape" first argument is now "true"/"false" (instead of "on"/"off")
- * the "parent" tag has been replaced by a "parent" function ({{ parent() }} instead of {% parent %})
- * the "display" tag has been replaced by a "block" function ({{ block('title') }} instead of {% display title %})
- * removed the grammar and simple token parser (moved to the Twig Extensions repository)
-
-Changes:
-
- * added "needs_context" option for filters and functions (the context is then passed as a first argument)
- * added global variables support
- * made macros return their value instead of echoing directly (fixes calling a macro in sandbox mode)
- * added the "from" tag to import macros as functions
- * added support for functions (a function is just syntactic sugar for a getAttribute() call)
- * made macros callable when sandbox mode is enabled
- * added an exception when a macro uses a reserved name
- * the "default" filter now uses the "empty" test instead of just checking for null
- * added the "empty" test
-
-# 0.9.10 (2010-12-16)
-
-Backward incompatibilities:
-
- * The Escaper extension is enabled by default, which means that all displayed
-   variables are now automatically escaped. You can revert to the previous
-   behavior by removing the extension via $env->removeExtension('escaper')
-   or just set the 'autoescape' option to 'false'.
- * removed the "without loop" attribute for the "for" tag (not needed anymore
-   as the Optimizer take care of that for most cases)
- * arrays and hashes have now a different syntax
-     * arrays keep the same syntax with square brackets: [1, 2]
-     * hashes now use curly braces (["a": "b"] should now be written as {"a": "b"})
-     * support for "arrays with keys" and "hashes without keys" is not supported anymore ([1, "foo": "bar"] or {"foo": "bar", 1})
- * the i18n extension is now part of the Twig Extensions repository
-
-Changes:
-
- * added the merge filter
- * removed 'is_escaper' option for filters (a left over from the previous version) -- you must use 'is_safe' now instead
- * fixed usage of operators as method names (like is, in, and not)
- * changed the order of execution for node visitors
- * fixed default() filter behavior when used with strict_variables set to on
- * fixed filesystem loader compatibility with PHAR files
- * enhanced error messages when an unexpected token is parsed in an expression
- * fixed filename not being added to syntax error messages
- * added the autoescape option to enable/disable autoescaping
- * removed the newline after a comment (mimics PHP behavior)
- * added a syntax error exception when parent block is used on a template that does not extend another one
- * made the Escaper extension enabled by default
- * fixed sandbox extension when used with auto output escaping
- * fixed escaper when wrapping a Twig_Node_Print (the original class must be preserved)
- * added an Optimizer extension (enabled by default; optimizes "for" loops and "raw" filters)
- * added priority to node visitors
-
-# 0.9.9 (2010-11-28)
-
-Backward incompatibilities:
- * the self special variable has been renamed to _self
- * the odd and even filters are now tests:
-     {{ foo|odd }} must now be written {{ foo is odd }}
- * the "safe" filter has been renamed to "raw"
- * in Node classes,
-        sub-nodes are now accessed via getNode() (instead of property access)
-        attributes via getAttribute() (instead of array access)
- * the urlencode filter had been renamed to url_encode
- * the include tag now merges the passed variables with the current context by default
-   (the old behavior is still possible by adding the "only" keyword)
- * moved Exceptions to Twig_Error_* (Twig_SyntaxError/Twig_RuntimeError are now Twig_Error_Syntax/Twig_Error_Runtime)
- * removed support for {{ 1 < i < 3 }} (use {{ i > 1 and i < 3 }} instead)
- * the "in" filter has been removed ({{ a|in(b) }} should now be written {{ a in b }})
-
-Changes:
- * added file and line to Twig_Error_Runtime exceptions thrown from Twig_Template
- * changed trans tag to accept any variable for the plural count
- * fixed sandbox mode (__toString() method check was not enforced if called implicitly from complex statements)
- * added the ** (power) operator
- * changed the algorithm used for parsing expressions
- * added the spaceless tag
- * removed trim_blocks option
- * added support for is*() methods for attributes (foo.bar now looks for foo->getBar() or foo->isBar())
- * changed all exceptions to extend Twig_Error
- * fixed unary expressions ({{ not(1 or 0) }})
- * fixed child templates (with an extend tag) that uses one or more imports
- * added support for {{ 1 not in [2, 3] }} (more readable than the current {{ not (1 in [2, 3]) }})
- * escaping has been rewritten
- * the implementation of template inheritance has been rewritten
-   (blocks can now be called individually and still work with inheritance)
- * fixed error handling for if tag when a syntax error occurs within a subparse process
- * added a way to implement custom logic for resolving token parsers given a tag name
- * fixed js escaper to be stricter (now uses a whilelist-based js escaper)
- * added the following filers: "constant", "trans", "replace", "json_encode"
- * added a "constant" test
- * fixed objects with __toString() not being autoescaped
- * fixed subscript expressions when calling __call() (methods now keep the case)
- * added "test" feature (accessible via the "is" operator)
- * removed the debug tag (should be done in an extension)
- * fixed trans tag when no vars are used in plural form
- * fixed race condition when writing template cache
- * added the special _charset variable to reference the current charset
- * added the special _context variable to reference the current context
- * renamed self to _self (to avoid conflict)
- * fixed Twig_Template::getAttribute() for protected properties
-
-# 0.9.8 (2010-06-28)
-
-Backward incompatibilities:
- * the trans tag plural count is now attached to the plural tag:
-    old: `{% trans count %}...{% plural %}...{% endtrans %}`
-    new: `{% trans %}...{% plural count %}...{% endtrans %}`
-
- * added a way to translate strings coming from a variable ({% trans var %})
- * fixed trans tag when used with the Escaper extension
- * fixed default cache umask
- * removed Twig_Template instances from the debug tag output
- * fixed objects with __isset() defined
- * fixed set tag when used with a capture
- * fixed type hinting for Twig_Environment::addFilter() method
-
-# 0.9.7 (2010-06-12)
-
-Backward incompatibilities:
- * changed 'as' to '=' for the set tag ({% set title as "Title" %} must now be {% set title = "Title" %})
- * removed the sandboxed attribute of the include tag (use the new sandbox tag instead)
- * refactored the Node system (if you have custom nodes, you will have to update them to use the new API)
-
- * added self as a special variable that refers to the current template (useful for importing macros from the current template)
- * added Twig_Template instance support to the include tag
- * added support for dynamic and conditional inheritance ({% extends some_var %} and {% extends standalone ? "minimum" : "base" %})
- * added a grammar sub-framework to ease the creation of custom tags
- * fixed the for tag for large arrays (some loop variables are now only available for arrays and objects that implement the Countable interface)
- * removed the Twig_Resource::resolveMissingFilter() method
- * fixed the filter tag which did not apply filtering to included files
- * added a bunch of unit tests
- * added a bunch of phpdoc
- * added a sandbox tag in the sandbox extension
- * changed the date filter to support any date format supported by DateTime
- * added strict_variable setting to throw an exception when an invalid variable is used in a template (disabled by default)
- * added the lexer, parser, and compiler as arguments to the Twig_Environment constructor
- * changed the cache option to only accepts an explicit path to a cache directory or false
- * added a way to add token parsers, filters, and visitors without creating an extension
- * added three interfaces: Twig_NodeInterface, Twig_TokenParserInterface, and Twig_FilterInterface
- * changed the generated code to match the new coding standards
- * fixed sandbox mode (__toString() method check was not enforced if called implicitly from a simple statement like {{ article }})
- * added an exception when a child template has a non-empty body (as it is always ignored when rendering)
-
-# 0.9.6 (2010-05-12)
-
- * fixed variables defined outside a loop and for which the value changes in a for loop
- * fixed the test suite for PHP 5.2 and older versions of PHPUnit
- * added support for __call() in expression resolution
- * fixed node visiting for macros (macros are now visited by visitors as any other node)
- * fixed nested block definitions with a parent call (rarely useful but nonetheless supported now)
- * added the cycle filter
- * fixed the Lexer when mbstring.func_overload is used with an mbstring.internal_encoding different from ASCII
- * added a long-syntax for the set tag ({% set foo %}...{% endset %})
- * unit tests are now powered by PHPUnit
- * added support for gettext via the `i18n` extension
- * fixed twig_capitalize_string_filter() and fixed twig_length_filter() when used with UTF-8 values
- * added a more useful exception if an if tag is not closed properly
- * added support for escaping strategy in the autoescape tag
- * fixed lexer when a template has a big chunk of text between/in a block
-
-# 0.9.5 (2010-01-20)
-
-As for any new release, don't forget to remove all cached templates after
-upgrading.
-
-If you have defined custom filters, you MUST upgrade them for this release. To
-upgrade, replace "array" with "new Twig_Filter_Function", and replace the
-environment constant by the "needs_environment" option:
-
-  // before
-  'even'   => array('twig_is_even_filter', false),
-  'escape' => array('twig_escape_filter', true),
-
-  // after
-  'even'   => new Twig_Filter_Function('twig_is_even_filter'),
-  'escape' => new Twig_Filter_Function('twig_escape_filter', array('needs_environment' => true)),
-
-If you have created NodeTransformer classes, you will need to upgrade them to
-the new interface (please note that the interface is not yet considered
-stable).
-
- * fixed list nodes that did not extend the Twig_NodeListInterface
- * added the "without loop" option to the for tag (it disables the generation of the loop variable)
- * refactored node transformers to node visitors
- * fixed automatic-escaping for blocks
- * added a way to specify variables to pass to an included template
- * changed the automatic-escaping rules to be more sensible and more configurable in custom filters (the documentation lists all the rules)
- * improved the filter system to allow object methods to be used as filters
- * changed the Array and String loaders to actually make use of the cache mechanism
- * included the default filter function definitions in the extension class files directly (Core, Escaper)
- * added the // operator (like the floor() PHP function)
- * added the .. operator (as a syntactic sugar for the range filter when the step is 1)
- * added the in operator (as a syntactic sugar for the in filter)
- * added the following filters in the Core extension: in, range
- * added support for arrays (same behavior as in PHP, a mix between lists and dictionaries, arrays and hashes)
- * enhanced some error messages to provide better feedback in case of parsing errors
-
-# 0.9.4 (2009-12-02)
-
-If you have custom loaders, you MUST upgrade them for this release: The
-Twig_Loader base class has been removed, and the Twig_LoaderInterface has also
-been changed (see the source code for more information or the documentation).
-
- * added support for DateTime instances for the date filter
- * fixed loop.last when the array only has one item
- * made it possible to insert newlines in tag and variable blocks
- * fixed a bug when a literal '\n' were present in a template text
- * fixed bug when the filename of a template contains */
- * refactored loaders
-
-# 0.9.3 (2009-11-11)
-
-This release is NOT backward compatible with the previous releases.
-
-  The loaders do not take the cache and autoReload arguments anymore. Instead,
-  the Twig_Environment class has two new options: cache and auto_reload.
-  Upgrading your code means changing this kind of code:
-
-      $loader = new Twig_Loader_Filesystem('/path/to/templates', '/path/to/compilation_cache', true);
-      $twig = new Twig_Environment($loader);
-
-  to something like this:
-
-      $loader = new Twig_Loader_Filesystem('/path/to/templates');
-      $twig = new Twig_Environment($loader, array(
-        'cache' => '/path/to/compilation_cache',
-        'auto_reload' => true,
-      ));
-
- * deprecated the "items" filter as it is not needed anymore
- * made cache and auto_reload options of Twig_Environment instead of arguments of Twig_Loader
- * optimized template loading speed
- * removed output when an error occurs in a template and render() is used
- * made major speed improvements for loops (up to 300% on even the smallest loops)
- * added properties as part of the sandbox mode
- * added public properties support (obj.item can now be the item property on the obj object)
- * extended set tag to support expression as value ({% set foo as 'foo' ~ 'bar' %} )
- * fixed bug when \ was used in HTML
-
-# 0.9.2 (2009-10-29)
-
- * made some speed optimizations
- * changed the cache extension to .php
- * added a js escaping strategy
- * added support for short block tag
- * changed the filter tag to allow chained filters
- * made lexer more flexible as you can now change the default delimiters
- * added set tag
- * changed default directory permission when cache dir does not exist (more secure)
- * added macro support
- * changed filters first optional argument to be a Twig_Environment instance instead of a Twig_Template instance
- * made Twig_Autoloader::autoload() a static method
- * avoid writing template file if an error occurs
- * added $ escaping when outputting raw strings
- * enhanced some error messages to ease debugging
- * fixed empty cache files when the template contains an error
-
-# 0.9.1 (2009-10-14)
-
-  * fixed a bug in PHP 5.2.6
-  * fixed numbers with one than one decimal
-  * added support for method calls with arguments ({{ foo.bar('a', 43) }})
-  * made small speed optimizations
-  * made minor tweaks to allow better extensibility and flexibility
-
-# 0.9.0 (2009-10-12)
-
- * Initial release
diff --git a/vendor/twig/twig/LICENSE b/vendor/twig/twig/LICENSE
deleted file mode 100644
index 94255bb2d4bf63009dfb5928282254860f862003..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2009-2020 by the Twig Team.
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of Twig nor the names of its contributors
-      may be used to endorse or promote products derived from this software
-      without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/twig/twig/README.rst b/vendor/twig/twig/README.rst
deleted file mode 100644
index d896ff500a411bb03bb66931e86e346db07f56c3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/README.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-Twig, the flexible, fast, and secure template language for PHP
-==============================================================
-
-Twig is a template language for PHP, released under the new BSD license (code
-and documentation).
-
-Twig uses a syntax similar to the Django and Jinja template languages which
-inspired the Twig runtime environment.
-
-Sponsors
---------
-
-.. raw:: html
-
-    <a href="https://blackfire.io/docs/introduction?utm_source=twig&utm_medium=github_readme&utm_campaign=logo">
-        <img src="https://static.blackfire.io/assets/intemporals/logo/png/blackfire-io_secondary_horizontal_transparent.png?1" width="255px" alt="Blackfire.io">
-    </a>
-
-More Information
-----------------
-
-Read the `documentation`_ for more information.
-
-.. _documentation: https://twig.symfony.com/documentation
diff --git a/vendor/twig/twig/composer.json b/vendor/twig/twig/composer.json
deleted file mode 100644
index 46b0fc7a1c2e619c2e5729d7b27b2d05218ceb1b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/composer.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-    "name": "twig/twig",
-    "type": "library",
-    "description": "Twig, the flexible, fast, and secure template language for PHP",
-    "keywords": ["templating"],
-    "homepage": "https://twig.symfony.com",
-    "license": "BSD-3-Clause",
-    "minimum-stability": "dev",
-    "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"
-        }
-    ],
-    "require": {
-        "php": ">=7.2.5",
-        "symfony/polyfill-ctype": "^1.8"
-    },
-    "require-dev": {
-        "symfony/phpunit-bridge": "^4.4.9|^5.0.9",
-        "psr/container": "^1.0"
-    },
-    "autoload": {
-        "psr-0" : {
-            "Twig_" : "lib/"
-        },
-        "psr-4" : {
-            "Twig\\" : "src/"
-        }
-    },
-    "autoload-dev": {
-        "psr-4" : {
-            "Twig\\Tests\\" : "tests"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.44-dev"
-        }
-    }
-}
diff --git a/vendor/twig/twig/doc/advanced.rst b/vendor/twig/twig/doc/advanced.rst
deleted file mode 100644
index f1ac102b55d12aef4bdb9c5cc217e470e8e1d7b7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/advanced.rst
+++ /dev/null
@@ -1,963 +0,0 @@
-Extending Twig
-==============
-
-.. caution::
-
-    This section describes how to extend Twig as of **Twig 1.12**. If you are
-    using an older version, read the :doc:`legacy<advanced_legacy>` chapter
-    instead.
-
-Twig can be extended in many ways; you can add extra tags, filters, tests,
-operators, global variables, and functions. You can even extend the parser
-itself with node visitors.
-
-.. note::
-
-    The first section of this chapter describes how to extend Twig. If you want
-    to reuse your changes in different projects or if you want to share them
-    with others, you should then create an extension as described in the
-    following section.
-
-.. caution::
-
-    When extending Twig without creating an extension, Twig won't be able to
-    recompile your templates when the PHP code is updated. To see your changes
-    in real-time, either disable template caching or package your code into an
-    extension (see the next section of this chapter).
-
-Before extending Twig, you must understand the differences between all the
-different possible extension points and when to use them.
-
-First, remember that Twig has two main language constructs:
-
-* ``{{ }}``: used to print the result of an expression evaluation;
-
-* ``{% %}``: used to execute statements.
-
-To understand why Twig exposes so many extension points, let's see how to
-implement a *Lorem ipsum* generator (it needs to know the number of words to
-generate).
-
-You can use a ``lipsum`` *tag*:
-
-.. code-block:: twig
-
-    {% lipsum 40 %}
-
-That works, but using a tag for ``lipsum`` is not a good idea for at least
-three main reasons:
-
-* ``lipsum`` is not a language construct;
-* The tag outputs something;
-* The tag is not flexible as you cannot use it in an expression:
-
-  .. code-block:: twig
-
-      {{ 'some text' ~ {% lipsum 40 %} ~ 'some more text' }}
-
-In fact, you rarely need to create tags; and that's good news because tags are
-the most complex extension point.
-
-Now, let's use a ``lipsum`` *filter*:
-
-.. code-block:: twig
-
-    {{ 40|lipsum }}
-
-Again, it works. But a filter should transform the passed value to something
-else. Here, we use the value to indicate the number of words to generate (so,
-``40`` is an argument of the filter, not the value we want to transform).
-
-Next, let's use a ``lipsum`` *function*:
-
-.. code-block:: twig
-
-    {{ lipsum(40) }}
-
-Here we go. For this specific example, the creation of a function is the
-extension point to use. And you can use it anywhere an expression is accepted:
-
-.. code-block:: twig
-
-    {{ 'some text' ~ lipsum(40) ~ 'some more text' }}
-
-    {% set lipsum = lipsum(40) %}
-
-Lastly, you can also use a *global* object with a method able to generate lorem
-ipsum text:
-
-.. code-block:: twig
-
-    {{ text.lipsum(40) }}
-
-As a rule of thumb, use functions for frequently used features and global
-objects for everything else.
-
-Keep in mind the following when you want to extend Twig:
-
-========== ========================== ========== =========================
-What?      Implementation difficulty? How often? When?
-========== ========================== ========== =========================
-*macro*    simple                     frequent   Content generation
-*global*   simple                     frequent   Helper object
-*function* simple                     frequent   Content generation
-*filter*   simple                     frequent   Value transformation
-*tag*      complex                    rare       DSL language construct
-*test*     simple                     rare       Boolean decision
-*operator* simple                     rare       Values transformation
-========== ========================== ========== =========================
-
-Globals
--------
-
-A global variable is like any other template variable, except that it's
-available in all templates and macros::
-
-    $twig = new \Twig\Environment($loader);
-    $twig->addGlobal('text', new Text());
-
-You can then use the ``text`` variable anywhere in a template:
-
-.. code-block:: twig
-
-    {{ text.lipsum(40) }}
-
-Filters
--------
-
-Creating a filter consists of associating a name with a PHP callable::
-
-    // an anonymous function
-    $filter = new \Twig\TwigFilter('rot13', function ($string) {
-        return str_rot13($string);
-    });
-
-    // or a simple PHP function
-    $filter = new \Twig\TwigFilter('rot13', 'str_rot13');
-
-    // or a class static method
-    $filter = new \Twig\TwigFilter('rot13', ['SomeClass', 'rot13Filter']);
-    $filter = new \Twig\TwigFilter('rot13', 'SomeClass::rot13Filter');
-
-    // or a class method
-    $filter = new \Twig\TwigFilter('rot13', [$this, 'rot13Filter']);
-    // the one below needs a runtime implementation (see below for more information)
-    $filter = new \Twig\TwigFilter('rot13', ['SomeClass', 'rot13Filter']);
-
-The first argument passed to the ``\Twig\TwigFilter`` constructor is the name
-of the filter you will use in templates and the second one is the PHP callable
-to associate with it.
-
-Then, add the filter to the Twig environment::
-
-    $twig = new \Twig\Environment($loader);
-    $twig->addFilter($filter);
-
-And here is how to use it in a template:
-
-.. code-block:: twig
-
-    {{ 'Twig'|rot13 }}
-
-    {# will output Gjvt #}
-
-When called by Twig, the PHP callable receives the left side of the filter
-(before the pipe ``|``) as the first argument and the extra arguments passed
-to the filter (within parentheses ``()``) as extra arguments.
-
-For instance, the following code:
-
-.. code-block:: twig
-
-    {{ 'TWIG'|lower }}
-    {{ now|date('d/m/Y') }}
-
-is compiled to something like the following::
-
-    <?php echo strtolower('TWIG') ?>
-    <?php echo twig_date_format_filter($now, 'd/m/Y') ?>
-
-The ``\Twig\TwigFilter`` class takes an array of options as its last
-argument::
-
-    $filter = new \Twig\TwigFilter('rot13', 'str_rot13', $options);
-
-Environment-aware Filters
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you want to access the current environment instance in your filter, set the
-``needs_environment`` option to ``true``; Twig will pass the current
-environment as the first argument to the filter call::
-
-    $filter = new \Twig\TwigFilter('rot13', function (\Twig\Environment $env, $string) {
-        // get the current charset for instance
-        $charset = $env->getCharset();
-
-        return str_rot13($string);
-    }, ['needs_environment' => true]);
-
-Context-aware Filters
-~~~~~~~~~~~~~~~~~~~~~
-
-If you want to access the current context in your filter, set the
-``needs_context`` option to ``true``; Twig will pass the current context as
-the first argument to the filter call (or the second one if
-``needs_environment`` is also set to ``true``)::
-
-    $filter = new \Twig\TwigFilter('rot13', function ($context, $string) {
-        // ...
-    }, ['needs_context' => true]);
-
-    $filter = new \Twig\TwigFilter('rot13', function (\Twig\Environment $env, $context, $string) {
-        // ...
-    }, ['needs_context' => true, 'needs_environment' => true]);
-
-Automatic Escaping
-~~~~~~~~~~~~~~~~~~
-
-If automatic escaping is enabled, the output of the filter may be escaped
-before printing. If your filter acts as an escaper (or explicitly outputs HTML
-or JavaScript code), you will want the raw output to be printed. In such a
-case, set the ``is_safe`` option::
-
-    $filter = new \Twig\TwigFilter('nl2br', 'nl2br', ['is_safe' => ['html']]);
-
-Some filters may need to work on input that is already escaped or safe, for
-example when adding (safe) HTML tags to originally unsafe output. In such a
-case, set the ``pre_escape`` option to escape the input data before it is run
-through your filter::
-
-    $filter = new \Twig\TwigFilter('somefilter', 'somefilter', ['pre_escape' => 'html', 'is_safe' => ['html']]);
-
-Variadic Filters
-~~~~~~~~~~~~~~~~
-
-.. versionadded:: 1.19
-    Support for variadic filters was added in Twig 1.19.
-
-When a filter should accept an arbitrary number of arguments, set the
-``is_variadic`` option to ``true``; Twig will pass the extra arguments as the
-last argument to the filter call as an array::
-
-    $filter = new \Twig\TwigFilter('thumbnail', function ($file, array $options = []) {
-        // ...
-    }, ['is_variadic' => true]);
-
-Be warned that :ref:`named arguments <named-arguments>` passed to a variadic
-filter cannot be checked for validity as they will automatically end up in the
-option array.
-
-Dynamic Filters
-~~~~~~~~~~~~~~~
-
-A filter name containing the special ``*`` character is a dynamic filter and
-the ``*`` part will match any string::
-
-    $filter = new \Twig\TwigFilter('*_path', function ($name, $arguments) {
-        // ...
-    });
-
-The following filters are matched by the above defined dynamic filter:
-
-* ``product_path``
-* ``category_path``
-
-A dynamic filter can define more than one dynamic parts::
-
-    $filter = new \Twig\TwigFilter('*_path_*', function ($name, $suffix, $arguments) {
-        // ...
-    });
-
-The filter receives all dynamic part values before the normal filter arguments,
-but after the environment and the context. For instance, a call to
-``'foo'|a_path_b()`` will result in the following arguments to be passed to the
-filter: ``('a', 'b', 'foo')``.
-
-Deprecated Filters
-~~~~~~~~~~~~~~~~~~
-
-.. versionadded:: 1.21
-    Support for deprecated filters was added in Twig 1.21.
-
-You can mark a filter as being deprecated by setting the ``deprecated`` option
-to ``true``. You can also give an alternative filter that replaces the
-deprecated one when that makes sense::
-
-    $filter = new \Twig\TwigFilter('obsolete', function () {
-        // ...
-    }, ['deprecated' => true, 'alternative' => 'new_one']);
-
-When a filter is deprecated, Twig emits a deprecation notice when compiling a
-template using it. See :ref:`deprecation-notices` for more information.
-
-Functions
----------
-
-Functions are defined in the exact same way as filters, but you need to create
-an instance of ``\Twig\TwigFunction``::
-
-    $twig = new \Twig\Environment($loader);
-    $function = new \Twig\TwigFunction('function_name', function () {
-        // ...
-    });
-    $twig->addFunction($function);
-
-Functions support the same features as filters, except for the ``pre_escape``
-and ``preserves_safety`` options.
-
-Tests
------
-
-Tests are defined in the exact same way as filters and functions, but you need
-to create an instance of ``\Twig\TwigTest``::
-
-    $twig = new \Twig\Environment($loader);
-    $test = new \Twig\TwigTest('test_name', function () {
-        // ...
-    });
-    $twig->addTest($test);
-
-Tests allow you to create custom application specific logic for evaluating
-boolean conditions. As a simple example, let's create a Twig test that checks if
-objects are 'red'::
-
-    $twig = new \Twig\Environment($loader);
-    $test = new \Twig\TwigTest('red', function ($value) {
-        if (isset($value->color) && $value->color == 'red') {
-            return true;
-        }
-        if (isset($value->paint) && $value->paint == 'red') {
-            return true;
-        }
-        return false;
-    });
-    $twig->addTest($test);
-
-Test functions must always return ``true``/``false``.
-
-When creating tests you can use the ``node_class`` option to provide custom test
-compilation. This is useful if your test can be compiled into PHP primitives.
-This is used by many of the tests built into Twig::
-
-    namespace App;
-    
-    use Twig\Environment;
-    use Twig\Node\Expression\TestExpression;
-    use Twig\TwigTest;
-    
-    $twig = new Environment($loader);
-    $test = new TwigTest(
-        'odd',
-        null,
-        ['node_class' => OddTestExpression::class]);
-    $twig->addTest($test);
-
-    class OddTestExpression extends TestExpression
-    {
-        public function compile(\Twig\Compiler $compiler)
-        {
-            $compiler
-                ->raw('(')
-                ->subcompile($this->getNode('node'))
-                ->raw(' % 2 == 1')
-                ->raw(')')
-            ;
-        }
-    }
-
-The above example shows how you can create tests that use a node class. The node
-class has access to one sub-node called ``node``. This sub-node contains the
-value that is being tested. When the ``odd`` filter is used in code such as:
-
-.. code-block:: twig
-
-    {% if my_value is odd %}
-
-The ``node`` sub-node will contain an expression of ``my_value``. Node-based
-tests also have access to the ``arguments`` node. This node will contain the
-various other arguments that have been provided to your test.
-
-.. versionadded:: 1.36
-    Dynamic tests support was added in Twig 1.36.
-
-If you want to pass a variable number of positional or named arguments to the
-test, set the ``is_variadic`` option to ``true``. Tests support dynamic
-names (see dynamic filters for the syntax).
-
-Tags
-----
-
-One of the most exciting features of a template engine like Twig is the
-possibility to define new **language constructs**. This is also the most complex
-feature as you need to understand how Twig's internals work.
-
-Most of the time though, a tag is not needed:
-
-* If your tag generates some output, use a **function** instead.
-
-* If your tag modifies some content and returns it, use a **filter** instead.
-
-  For instance, if you want to create a tag that converts a Markdown formatted
-  text to HTML, create a ``markdown`` filter instead:
-
-  .. code-block:: twig
-
-      {{ '**markdown** text'|markdown }}
-
-  If you want use this filter on large amounts of text, wrap it with the
-  :doc:`apply <tags/apply>` tag:
-
-  .. code-block:: twig
-
-      {% apply markdown %}
-      Title
-      =====
-
-      Much better than creating a tag as you can **compose** filters.
-      {% endapply %}
-
- .. note::
-
-      The ``apply`` tag was introduced in Twig 1.40; use the ``filter`` tag with
-      previous versions.
-
-* If your tag does not output anything, but only exists because of a side
-  effect, create a **function** that returns nothing and call it via the
-  :doc:`filter <tags/do>` tag.
-
-  For instance, if you want to create a tag that logs text, create a ``log``
-  function instead and call it via the :doc:`do <tags/do>` tag:
-
-  .. code-block:: twig
-
-      {% do log('Log some things') %}
-
-If you still want to create a tag for a new language construct, great!
-
-Let's create a ``set`` tag that allows the definition of simple variables from
-within a template. The tag can be used like follows:
-
-.. code-block:: twig
-
-    {% set name = "value" %}
-
-    {{ name }}
-
-    {# should output value #}
-
-.. note::
-
-    The ``set`` tag is part of the Core extension and as such is always
-    available. The built-in version is slightly more powerful and supports
-    multiple assignments by default.
-
-Three steps are needed to define a new tag:
-
-* Defining a Token Parser class (responsible for parsing the template code);
-
-* Defining a Node class (responsible for converting the parsed code to PHP);
-
-* Registering the tag.
-
-Registering a new tag
-~~~~~~~~~~~~~~~~~~~~~
-
-Add a tag by calling the ``addTokenParser`` method on the ``\Twig\Environment``
-instance::
-
-    $twig = new \Twig\Environment($loader);
-    $twig->addTokenParser(new Project_Set_TokenParser());
-
-Defining a Token Parser
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Now, let's see the actual code of this class::
-
-    class Project_Set_TokenParser extends \Twig\TokenParser\AbstractTokenParser
-    {
-        public function parse(\Twig\Token $token)
-        {
-            $parser = $this->parser;
-            $stream = $parser->getStream();
-
-            $name = $stream->expect(\Twig\Token::NAME_TYPE)->getValue();
-            $stream->expect(\Twig\Token::OPERATOR_TYPE, '=');
-            $value = $parser->getExpressionParser()->parseExpression();
-            $stream->expect(\Twig\Token::BLOCK_END_TYPE);
-
-            return new Project_Set_Node($name, $value, $token->getLine(), $this->getTag());
-        }
-
-        public function getTag()
-        {
-            return 'set';
-        }
-    }
-
-The ``getTag()`` method must return the tag we want to parse, here ``set``.
-
-The ``parse()`` method is invoked whenever the parser encounters a ``set``
-tag. It should return a ``\Twig\Node\Node`` instance that represents the node (the
-``Project_Set_Node`` calls creating is explained in the next section).
-
-The parsing process is simplified thanks to a bunch of methods you can call
-from the token stream (``$this->parser->getStream()``):
-
-* ``getCurrent()``: Gets the current token in the stream.
-
-* ``next()``: Moves to the next token in the stream, *but returns the old one*.
-
-* ``test($type)``, ``test($value)`` or ``test($type, $value)``: Determines whether
-  the current token is of a particular type or value (or both). The value may be an
-  array of several possible values.
-
-* ``expect($type[, $value[, $message]])``: If the current token isn't of the given
-  type/value a syntax error is thrown. Otherwise, if the type and value are correct,
-  the token is returned and the stream moves to the next token.
-
-* ``look()``: Looks at the next token without consuming it.
-
-Parsing expressions is done by calling the ``parseExpression()`` like we did for
-the ``set`` tag.
-
-.. tip::
-
-    Reading the existing ``TokenParser`` classes is the best way to learn all
-    the nitty-gritty details of the parsing process.
-
-Defining a Node
-~~~~~~~~~~~~~~~
-
-The ``Project_Set_Node`` class itself is quite short::
-
-    class Project_Set_Node extends \Twig\Node\Node
-    {
-        public function __construct($name, \Twig\Node\Expression\AbstractExpression $value, $line, $tag = null)
-        {
-            parent::__construct(['value' => $value], ['name' => $name], $line, $tag);
-        }
-
-        public function compile(\Twig\Compiler $compiler)
-        {
-            $compiler
-                ->addDebugInfo($this)
-                ->write('$context[\''.$this->getAttribute('name').'\'] = ')
-                ->subcompile($this->getNode('value'))
-                ->raw(";\n")
-            ;
-        }
-    }
-
-The compiler implements a fluid interface and provides methods that helps the
-developer generate beautiful and readable PHP code:
-
-* ``subcompile()``: Compiles a node.
-
-* ``raw()``: Writes the given string as is.
-
-* ``write()``: Writes the given string by adding indentation at the beginning
-  of each line.
-
-* ``string()``: Writes a quoted string.
-
-* ``repr()``: Writes a PHP representation of a given value (see
-  ``\Twig\Node\ForNode`` for a usage example).
-
-* ``addDebugInfo()``: Adds the line of the original template file related to
-  the current node as a comment.
-
-* ``indent()``: Indents the generated code (see ``\Twig\Node\BlockNode`` for a
-  usage example).
-
-* ``outdent()``: Outdents the generated code (see ``\Twig\Node\BlockNode`` for a
-  usage example).
-
-.. _creating_extensions:
-
-Creating an Extension
----------------------
-
-The main motivation for writing an extension is to move often used code into a
-reusable class like adding support for internationalization. An extension can
-define tags, filters, tests, operators, functions, and node visitors.
-
-Most of the time, it is useful to create a single extension for your project,
-to host all the specific tags and filters you want to add to Twig.
-
-.. tip::
-
-    When packaging your code into an extension, Twig is smart enough to
-    recompile your templates whenever you make a change to it (when
-    ``auto_reload`` is enabled).
-
-An extension is a class that implements the following interface::
-
-    interface Twig_ExtensionInterface
-    {
-        /**
-         * Initializes the runtime environment.
-         *
-         * This is where you can load some file that contains filter functions for instance.
-         *
-         * @deprecated since 1.23 (to be removed in 2.0), implement \Twig\Extension\InitRuntimeInterface instead
-         */
-        function initRuntime(\Twig\Environment $environment);
-
-        /**
-         * Returns the token parser instances to add to the existing list.
-         *
-         * @return (Twig_TokenParserInterface|Twig_TokenParserBrokerInterface)[]
-         */
-        function getTokenParsers();
-
-        /**
-         * Returns the node visitor instances to add to the existing list.
-         *
-         * @return \Twig\NodeVisitor\NodeVisitorInterface[]
-         */
-        function getNodeVisitors();
-
-        /**
-         * Returns a list of filters to add to the existing list.
-         *
-         * @return \Twig\TwigFilter[]
-         */
-        function getFilters();
-
-        /**
-         * Returns a list of tests to add to the existing list.
-         *
-         * @return \Twig\TwigTest[]
-         */
-        function getTests();
-
-        /**
-         * Returns a list of functions to add to the existing list.
-         *
-         * @return \Twig\TwigFunction[]
-         */
-        function getFunctions();
-
-        /**
-         * Returns a list of operators to add to the existing list.
-         *
-         * @return array<array> First array of unary operators, second array of binary operators
-         */
-        function getOperators();
-
-        /**
-         * Returns a list of global variables to add to the existing list.
-         *
-         * @return array An array of global variables
-         *
-         * @deprecated since 1.23 (to be removed in 2.0), implement \Twig\Extension\GlobalsInterface instead
-         */
-        function getGlobals();
-
-        /**
-         * Returns the name of the extension.
-         *
-         * @return string The extension name
-         *
-         * @deprecated since 1.26 (to be removed in 2.0), not used anymore internally
-         */
-        function getName();
-    }
-
-To keep your extension class clean and lean, inherit from the built-in
-``\Twig\Extension\AbstractExtension`` class instead of implementing the interface as it provides
-empty implementations for all methods::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-    }
-
-This extension does nothing for now. We will customize it in the next sections.
-
-.. note::
-
-    Prior to Twig 1.26, you must implement the ``getName()`` method which must
-    return a unique identifier for the extension.
-
-You can save your extension anywhere on the filesystem, as all extensions must
-be registered explicitly to be available in your templates.
-
-You can register an extension by using the ``addExtension()`` method on your
-main ``Environment`` object::
-
-    $twig = new \Twig\Environment($loader);
-    $twig->addExtension(new Project_Twig_Extension());
-
-.. tip::
-
-    The Twig core extensions are great examples of how extensions work.
-
-Globals
-~~~~~~~
-
-Global variables can be registered in an extension via the ``getGlobals()``
-method::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension implements \Twig\Extension\GlobalsInterface
-    {
-        public function getGlobals()
-        {
-            return [
-                'text' => new Text(),
-            ];
-        }
-
-        // ...
-    }
-
-Functions
-~~~~~~~~~
-
-Functions can be registered in an extension via the ``getFunctions()``
-method::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getFunctions()
-        {
-            return [
-                new \Twig\TwigFunction('lipsum', 'generate_lipsum'),
-            ];
-        }
-
-        // ...
-    }
-
-Filters
-~~~~~~~
-
-To add a filter to an extension, you need to override the ``getFilters()``
-method. This method must return an array of filters to add to the Twig
-environment::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getFilters()
-        {
-            return [
-                new \Twig\TwigFilter('rot13', 'str_rot13'),
-            ];
-        }
-
-        // ...
-    }
-
-Tags
-~~~~
-
-Adding a tag in an extension can be done by overriding the
-``getTokenParsers()`` method. This method must return an array of tags to add
-to the Twig environment::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getTokenParsers()
-        {
-            return [new Project_Set_TokenParser()];
-        }
-
-        // ...
-    }
-
-In the above code, we have added a single new tag, defined by the
-``Project_Set_TokenParser`` class. The ``Project_Set_TokenParser`` class is
-responsible for parsing the tag and compiling it to PHP.
-
-Operators
-~~~~~~~~~
-
-The ``getOperators()`` methods lets you add new operators. Here is how to add
-the ``!``, ``||``, and ``&&`` operators::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getOperators()
-        {
-            return [
-                [
-                    '!' => ['precedence' => 50, 'class' => '\Twig\Node\Expression\Unary\NotUnary'],
-                ],
-                [
-                    '||' => ['precedence' => 10, 'class' => '\Twig\Node\Expression\Binary\OrBinary', 'associativity' => \Twig\ExpressionParser::OPERATOR_LEFT],
-                    '&&' => ['precedence' => 15, 'class' => '\Twig\Node\Expression\Binary\AndBinary', 'associativity' => \Twig\ExpressionParser::OPERATOR_LEFT],
-                ],
-            ];
-        }
-
-        // ...
-    }
-
-Tests
-~~~~~
-
-The ``getTests()`` method lets you add new test functions::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getTests()
-        {
-            return [
-                new \Twig\TwigTest('even', 'twig_test_even'),
-            ];
-        }
-
-        // ...
-    }
-
-Definition vs Runtime
-~~~~~~~~~~~~~~~~~~~~~
-
-Twig filters, functions, and tests runtime implementations can be defined as
-any valid PHP callable:
-
-* **functions/static methods**: Simple to implement and fast (used by all Twig
-  core extensions); but it is hard for the runtime to depend on external
-  objects;
-
-* **closures**: Simple to implement;
-
-* **object methods**: More flexible and required if your runtime code depends
-  on external objects.
-
-The simplest way to use methods is to define them on the extension itself::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        private $rot13Provider;
-
-        public function __construct($rot13Provider)
-        {
-            $this->rot13Provider = $rot13Provider;
-        }
-
-        public function getFunctions()
-        {
-            return [
-                new \Twig\TwigFunction('rot13', [$this, 'rot13']),
-            ];
-        }
-
-        public function rot13($value)
-        {
-            return $this->rot13Provider->rot13($value);
-        }
-    }
-
-This is very convenient but not recommended as it makes template compilation
-depend on runtime dependencies even if they are not needed (think for instance
-as a dependency that connects to a database engine).
-
-As of Twig 1.26, you can decouple the extension definitions from their
-runtime implementations by registering a ``\Twig\RuntimeLoader\RuntimeLoaderInterface``
-instance on the environment that knows how to instantiate such runtime classes
-(runtime classes must be autoload-able)::
-
-    class RuntimeLoader implements \Twig\RuntimeLoader\RuntimeLoaderInterface
-    {
-        public function load($class)
-        {
-            // implement the logic to create an instance of $class
-            // and inject its dependencies
-            // most of the time, it means using your dependency injection container
-            if ('Project_Twig_RuntimeExtension' === $class) {
-                return new $class(new Rot13Provider());
-            } else {
-                // ...
-            }
-        }
-    }
-
-    $twig->addRuntimeLoader(new RuntimeLoader());
-
-.. note::
-
-    As of Twig 1.32, Twig comes with a PSR-11 compatible runtime loader
-    (``\Twig\RuntimeLoader\ContainerRuntimeLoader``).
-
-It is now possible to move the runtime logic to a new
-``Project_Twig_RuntimeExtension`` class and use it directly in the extension::
-
-    class Project_Twig_RuntimeExtension
-    {
-        private $rot13Provider;
-
-        public function __construct($rot13Provider)
-        {
-            $this->rot13Provider = $rot13Provider;
-        }
-
-        public function rot13($value)
-        {
-            return $this->rot13Provider->rot13($value);
-        }
-    }
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getFunctions()
-        {
-            return [
-                new \Twig\TwigFunction('rot13', ['Project_Twig_RuntimeExtension', 'rot13']),
-                // or
-                new \Twig\TwigFunction('rot13', 'Project_Twig_RuntimeExtension::rot13'),
-            ];
-        }
-    }
-
-Testing an Extension
---------------------
-
-Functional Tests
-~~~~~~~~~~~~~~~~
-
-You can create functional tests for extensions by creating the following file
-structure in your test directory::
-
-    Fixtures/
-        filters/
-            foo.test
-            bar.test
-        functions/
-            foo.test
-            bar.test
-        tags/
-            foo.test
-            bar.test
-    IntegrationTest.php
-
-The ``IntegrationTest.php`` file should look like this::
-
-    class Project_Tests_IntegrationTest extends \Twig\Test\IntegrationTestCase
-    {
-        public function getExtensions()
-        {
-            return [
-                new Project_Twig_Extension1(),
-                new Project_Twig_Extension2(),
-            ];
-        }
-
-        public function getFixturesDir()
-        {
-            return __DIR__.'/Fixtures/';
-        }
-    }
-
-Fixtures examples can be found within the Twig repository
-`tests/Twig/Fixtures`_ directory.
-
-Node Tests
-~~~~~~~~~~
-
-Testing the node visitors can be complex, so extend your test cases from
-``\Twig\Test\NodeTestCase``. Examples can be found in the Twig repository
-`tests/Twig/Node`_ directory.
-
-.. _`rot13`:                   https://secure.php.net/manual/en/function.str-rot13.php
-.. _`tests/Twig/Fixtures`:     https://github.com/twigphp/Twig/tree/1.x/tests/Fixtures
-.. _`tests/Twig/Node`:         https://github.com/twigphp/Twig/tree/1.x/tests/Node
diff --git a/vendor/twig/twig/doc/advanced_legacy.rst b/vendor/twig/twig/doc/advanced_legacy.rst
deleted file mode 100644
index 409b9144058e78d28f19833e3f865138eea2f1bd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/advanced_legacy.rst
+++ /dev/null
@@ -1,877 +0,0 @@
-Extending Twig
-==============
-
-.. caution::
-
-    This section describes how to extends Twig for versions **older than
-    1.12**. If you are using a newer version, read the :doc:`newer<advanced>`
-    chapter instead.
-
-Twig can be extended in many ways; you can add extra tags, filters, tests,
-operators, global variables, and functions. You can even extend the parser
-itself with node visitors.
-
-.. note::
-
-    The first section of this chapter describes how to extend Twig. If
-    you want to reuse your changes in different projects or if you want to
-    share them with others, you should then create an extension as described
-    in the following section.
-
-.. caution::
-
-    When extending Twig by calling methods on the Twig environment instance,
-    Twig won't be able to recompile your templates when the PHP code is
-    updated. To see your changes in real-time, either disable template caching
-    or package your code into an extension (see the next section of this
-    chapter).
-
-Before extending Twig, you must understand the differences between all the
-different possible extension points and when to use them.
-
-First, remember that Twig has two main language constructs:
-
-* ``{{ }}``: used to print the result of an expression evaluation;
-
-* ``{% %}``: used to execute statements.
-
-To understand why Twig exposes so many extension points, let's see how to
-implement a *Lorem ipsum* generator (it needs to know the number of words to
-generate).
-
-You can use a ``lipsum`` *tag*:
-
-.. code-block:: twig
-
-    {% lipsum 40 %}
-
-That works, but using a tag for ``lipsum`` is not a good idea for at least
-three main reasons:
-
-* ``lipsum`` is not a language construct;
-* The tag outputs something;
-* The tag is not flexible as you cannot use it in an expression:
-
-  .. code-block:: twig
-
-      {{ 'some text' ~ {% lipsum 40 %} ~ 'some more text' }}
-
-In fact, you rarely need to create tags; and that's good news because tags are
-the most complex extension point of Twig.
-
-Now, let's use a ``lipsum`` *filter*:
-
-.. code-block:: twig
-
-    {{ 40|lipsum }}
-
-Again, it works, but it looks weird. A filter transforms the passed value to
-something else but here we use the value to indicate the number of words to
-generate (so, ``40`` is an argument of the filter, not the value we want to
-transform).
-
-Next, let's use a ``lipsum`` *function*:
-
-.. code-block:: twig
-
-    {{ lipsum(40) }}
-
-Here we go. For this specific example, the creation of a function is the
-extension point to use. And you can use it anywhere an expression is accepted:
-
-.. code-block:: twig
-
-    {{ 'some text' ~ ipsum(40) ~ 'some more text' }}
-
-    {% set ipsum = ipsum(40) %}
-
-Last but not the least, you can also use a *global* object with a method able
-to generate lorem ipsum text:
-
-.. code-block:: twig
-
-    {{ text.lipsum(40) }}
-
-As a rule of thumb, use functions for frequently used features and global
-objects for everything else.
-
-Keep in mind the following when you want to extend Twig:
-
-========== ========================== ========== =========================
-What?      Implementation difficulty? How often? When?
-========== ========================== ========== =========================
-*macro*    trivial                    frequent   Content generation
-*global*   trivial                    frequent   Helper object
-*function* trivial                    frequent   Content generation
-*filter*   trivial                    frequent   Value transformation
-*tag*      complex                    rare       DSL language construct
-*test*     trivial                    rare       Boolean decision
-*operator* trivial                    rare       Values transformation
-========== ========================== ========== =========================
-
-Globals
--------
-
-A global variable is like any other template variable, except that it's
-available in all templates and macros::
-
-    $twig = new \Twig\Environment($loader);
-    $twig->addGlobal('text', new Text());
-
-You can then use the ``text`` variable anywhere in a template:
-
-.. code-block:: twig
-
-    {{ text.lipsum(40) }}
-
-Filters
--------
-
-A filter is a regular PHP function or an object method that takes the left
-side of the filter (before the pipe ``|``) as first argument and the extra
-arguments passed to the filter (within parentheses ``()``) as extra arguments.
-
-Defining a filter is as easy as associating the filter name with a PHP
-callable. For instance, let's say you have the following code in a template:
-
-.. code-block:: twig
-
-    {{ 'TWIG'|lower }}
-
-When compiling this template to PHP, Twig looks for the PHP callable
-associated with the ``lower`` filter. The ``lower`` filter is a built-in Twig
-filter, and it is mapped directly to the PHP ``strtolower()`` function. After
-compilation, the generated PHP code is roughly equivalent to:
-
-.. code-block:: html+php
-
-    <?php echo strtolower('TWIG') ?>
-
-As you can see, the ``'TWIG'`` string is passed as a first argument to the PHP
-function.
-
-A filter can also take extra arguments like in the following example:
-
-.. code-block:: twig
-
-    {{ now|date('d/m/Y') }}
-
-In this case, the extra arguments are passed to the function after the main
-argument, and the compiled code is equivalent to:
-
-.. code-block:: html+php
-
-    <?php echo twig_date_format_filter($now, 'd/m/Y') ?>
-
-Let's see how to create a new filter.
-
-In this section, we will create a ``rot13`` filter, which should return the
-`rot13`_ transformation of a string. Here is an example of its usage and the
-expected output:
-
-.. code-block:: twig
-
-    {{ "Twig"|rot13 }}
-
-    {# should displays Gjvt #}
-
-Adding a filter is as simple as calling the ``addFilter()`` method on the
-``\Twig\Environment`` instance::
-
-    $twig = new \Twig\Environment($loader);
-    $twig->addFilter('rot13', new Twig_Filter_Function('str_rot13'));
-
-The second argument of ``addFilter()`` is an instance of ``Twig_Filter``.
-Here, we use ``Twig_Filter_Function`` as the filter is a PHP function. The
-first argument passed to the ``Twig_Filter_Function`` constructor is the name
-of the PHP function to call, here ``str_rot13``, a native PHP function.
-
-Let's say I now want to be able to add a prefix before the converted string:
-
-.. code-block:: twig
-
-    {{ "Twig"|rot13('prefix_') }}
-
-    {# should displays prefix_Gjvt #}
-
-As the PHP ``str_rot13()`` function does not support this requirement, let's
-create a new PHP function::
-
-    function project_compute_rot13($string, $prefix = '')
-    {
-        return $prefix.str_rot13($string);
-    }
-
-As you can see, the ``prefix`` argument of the filter is passed as an extra
-argument to the ``project_compute_rot13()`` function.
-
-Adding this filter is as easy as before::
-
-    $twig->addFilter('rot13', new Twig_Filter_Function('project_compute_rot13'));
-
-For better encapsulation, a filter can also be defined as a static method of a
-class. The ``Twig_Filter_Function`` class can also be used to register such
-static methods as filters::
-
-    $twig->addFilter('rot13', new Twig_Filter_Function('SomeClass::rot13Filter'));
-
-.. tip::
-
-    In an extension, you can also define a filter as a static method of the
-    extension class.
-
-Environment aware Filters
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The ``Twig_Filter`` classes take options as their last argument. For instance,
-if you want access to the current environment instance in your filter, set the
-``needs_environment`` option to ``true``::
-
-    $filter = new Twig_Filter_Function('str_rot13', ['needs_environment' => true]);
-
-Twig will then pass the current environment as the first argument to the
-filter call::
-
-    function twig_compute_rot13(\Twig\Environment $env, $string)
-    {
-        // get the current charset for instance
-        $charset = $env->getCharset();
-
-        return str_rot13($string);
-    }
-
-Automatic Escaping
-~~~~~~~~~~~~~~~~~~
-
-If automatic escaping is enabled, the output of the filter may be escaped
-before printing. If your filter acts as an escaper (or explicitly outputs HTML
-or JavaScript code), you will want the raw output to be printed. In such a
-case, set the ``is_safe`` option::
-
-    $filter = new Twig_Filter_Function('nl2br', ['is_safe' => ['html']]);
-
-Some filters may need to work on input that is already escaped or safe, for
-example when adding (safe) HTML tags to originally unsafe output. In such a
-case, set the ``pre_escape`` option to escape the input data before it is run
-through your filter::
-
-    $filter = new Twig_Filter_Function('somefilter', ['pre_escape' => 'html', 'is_safe' => ['html']]);
-
-Dynamic Filters
-~~~~~~~~~~~~~~~
-
-.. versionadded:: 1.5
-    Dynamic filters support was added in Twig 1.5.
-
-A filter name containing the special ``*`` character is a dynamic filter as
-the ``*`` can be any string::
-
-    $twig->addFilter('*_path_*', new Twig_Filter_Function('twig_path'));
-
-    function twig_path($name, $arguments)
-    {
-        // ...
-    }
-
-The following filters will be matched by the above defined dynamic filter:
-
-* ``product_path``
-* ``category_path``
-
-A dynamic filter can define more than one dynamic parts::
-
-    $twig->addFilter('*_path_*', new Twig_Filter_Function('twig_path'));
-
-    function twig_path($name, $suffix, $arguments)
-    {
-        // ...
-    }
-
-The filter will receive all dynamic part values before the normal filters
-arguments. For instance, a call to ``'foo'|a_path_b()`` will result in the
-following PHP call: ``twig_path('a', 'b', 'foo')``.
-
-Functions
----------
-
-A function is a regular PHP function or an object method that can be called from
-templates.
-
-.. code-block:: twig
-
-    {{ constant("DATE_W3C") }}
-
-When compiling this template to PHP, Twig looks for the PHP callable
-associated with the ``constant`` function. The ``constant`` function is a built-in Twig
-function, and it is mapped directly to the PHP ``constant()`` function. After
-compilation, the generated PHP code is roughly equivalent to:
-
-.. code-block:: html+php
-
-    <?php echo constant('DATE_W3C') ?>
-
-Adding a function is similar to adding a filter. This can be done by calling the
-``addFunction()`` method on the ``\Twig\Environment`` instance::
-
-    $twig = new \Twig\Environment($loader);
-    $twig->addFunction('functionName', new Twig_Function_Function('someFunction'));
-
-You can also expose extension methods as functions in your templates::
-
-    // $this is an object that implements \Twig\Extension\ExtensionInterface.
-    $twig = new \Twig\Environment($loader);
-    $twig->addFunction('otherFunction', new Twig_Function_Method($this, 'someMethod'));
-
-Functions also support ``needs_environment`` and ``is_safe`` parameters.
-
-Dynamic Functions
-~~~~~~~~~~~~~~~~~
-
-.. versionadded:: 1.5
-    Dynamic functions support was added in Twig 1.5.
-
-A function name containing the special ``*`` character is a dynamic function
-as the ``*`` can be any string::
-
-    $twig->addFunction('*_path', new Twig_Function_Function('twig_path'));
-
-    function twig_path($name, $arguments)
-    {
-        // ...
-    }
-
-The following functions will be matched by the above defined dynamic function:
-
-* ``product_path``
-* ``category_path``
-
-A dynamic function can define more than one dynamic parts::
-
-    $twig->addFilter('*_path_*', new Twig_Filter_Function('twig_path'));
-
-    function twig_path($name, $suffix, $arguments)
-    {
-        // ...
-    }
-
-The function will receive all dynamic part values before the normal functions
-arguments. For instance, a call to ``a_path_b('foo')`` will result in the
-following PHP call: ``twig_path('a', 'b', 'foo')``.
-
-Tags
-----
-
-One of the most exciting feature of a template engine like Twig is the
-possibility to define new language constructs. This is also the most complex
-feature as you need to understand how Twig's internals work.
-
-Let's create a simple ``set`` tag that allows the definition of simple
-variables from within a template. The tag can be used like follows:
-
-.. code-block:: twig
-
-    {% set name = "value" %}
-
-    {{ name }}
-
-    {# should output value #}
-
-.. note::
-
-    The ``set`` tag is part of the Core extension and as such is always
-    available. The built-in version is slightly more powerful and supports
-    multiple assignments by default (cf. the template designers chapter for
-    more information).
-
-Three steps are needed to define a new tag:
-
-* Defining a Token Parser class (responsible for parsing the template code);
-
-* Defining a Node class (responsible for converting the parsed code to PHP);
-
-* Registering the tag.
-
-Registering a new tag
-~~~~~~~~~~~~~~~~~~~~~
-
-Adding a tag is as simple as calling the ``addTokenParser`` method on the
-``\Twig\Environment`` instance::
-
-    $twig = new \Twig\Environment($loader);
-    $twig->addTokenParser(new Project_Set_TokenParser());
-
-Defining a Token Parser
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Now, let's see the actual code of this class::
-
-    class Project_Set_TokenParser extends \Twig\TokenParser\AbstractTokenParser
-    {
-        public function parse(\Twig\Token $token)
-        {
-            $lineno = $token->getLine();
-            $name = $this->parser->getStream()->expect(\Twig\Token::NAME_TYPE)->getValue();
-            $this->parser->getStream()->expect(\Twig\Token::OPERATOR_TYPE, '=');
-            $value = $this->parser->getExpressionParser()->parseExpression();
-
-            $this->parser->getStream()->expect(\Twig\Token::BLOCK_END_TYPE);
-
-            return new Project_Set_Node($name, $value, $lineno, $this->getTag());
-        }
-
-        public function getTag()
-        {
-            return 'set';
-        }
-    }
-
-The ``getTag()`` method must return the tag we want to parse, here ``set``.
-
-The ``parse()`` method is invoked whenever the parser encounters a ``set``
-tag. It should return a ``\Twig\Node\Node`` instance that represents the node (the
-``Project_Set_Node`` calls creating is explained in the next section).
-
-The parsing process is simplified thanks to a bunch of methods you can call
-from the token stream (``$this->parser->getStream()``):
-
-* ``getCurrent()``: Gets the current token in the stream.
-
-* ``next()``: Moves to the next token in the stream, *but returns the old one*.
-
-* ``test($type)``, ``test($value)`` or ``test($type, $value)``: Determines whether
-  the current token is of a particular type or value (or both). The value may be an
-  array of several possible values.
-
-* ``expect($type[, $value[, $message]])``: If the current token isn't of the given
-  type/value a syntax error is thrown. Otherwise, if the type and value are correct,
-  the token is returned and the stream moves to the next token.
-
-* ``look()``: Looks a the next token without consuming it.
-
-Parsing expressions is done by calling the ``parseExpression()`` like we did for
-the ``set`` tag.
-
-.. tip::
-
-    Reading the existing ``TokenParser`` classes is the best way to learn all
-    the nitty-gritty details of the parsing process.
-
-Defining a Node
-~~~~~~~~~~~~~~~
-
-The ``Project_Set_Node`` class itself is rather simple::
-
-    class Project_Set_Node extends \Twig\Node\Node
-    {
-        public function __construct($name, \Twig\Node\Expression\AbstractExpression $value, $lineno, $tag = null)
-        {
-            parent::__construct(['value' => $value], ['name' => $name], $lineno, $tag);
-        }
-
-        public function compile(\Twig\Compiler $compiler)
-        {
-            $compiler
-                ->addDebugInfo($this)
-                ->write('$context[\''.$this->getAttribute('name').'\'] = ')
-                ->subcompile($this->getNode('value'))
-                ->raw(";\n")
-            ;
-        }
-    }
-
-The compiler implements a fluid interface and provides methods that helps the
-developer generate beautiful and readable PHP code:
-
-* ``subcompile()``: Compiles a node.
-
-* ``raw()``: Writes the given string as is.
-
-* ``write()``: Writes the given string by adding indentation at the beginning
-  of each line.
-
-* ``string()``: Writes a quoted string.
-
-* ``repr()``: Writes a PHP representation of a given value (see
-  ``\Twig\Node\ForNode`` for a usage example).
-
-* ``addDebugInfo()``: Adds the line of the original template file related to
-  the current node as a comment.
-
-* ``indent()``: Indents the generated code (see ``\Twig\Node\BlockNode`` for a
-  usage example).
-
-* ``outdent()``: Outdents the generated code (see ``\Twig\Node\BlockNode`` for a
-  usage example).
-
-Creating an Extension
----------------------
-
-The main motivation for writing an extension is to move often used code into a
-reusable class like adding support for internationalization. An extension can
-define tags, filters, tests, operators, global variables, functions, and node
-visitors.
-
-Creating an extension also makes for a better separation of code that is
-executed at compilation time and code needed at runtime. As such, it makes
-your code faster.
-
-Most of the time, it is useful to create a single extension for your project,
-to host all the specific tags and filters you want to add to Twig.
-
-.. tip::
-
-    When packaging your code into an extension, Twig is smart enough to
-    recompile your templates whenever you make a change to it (when the
-    ``auto_reload`` is enabled).
-
-An extension is a class that implements the following interface::
-
-    interface Twig_ExtensionInterface
-    {
-        /**
-         * Initializes the runtime environment.
-         *
-         * This is where you can load some file that contains filter functions for instance.
-         */
-        function initRuntime(\Twig\Environment $environment);
-
-        /**
-         * Returns the token parser instances to add to the existing list.
-         *
-         * @return (Twig_TokenParserInterface|Twig_TokenParserBrokerInterface)[]
-         */
-        function getTokenParsers();
-
-        /**
-         * Returns the node visitor instances to add to the existing list.
-         *
-         * @return \Twig\NodeVisitor\NodeVisitorInterface[]
-         */
-        function getNodeVisitors();
-
-        /**
-         * Returns a list of filters to add to the existing list.
-         *
-         * @return \Twig\TwigFilter[]
-         */
-        function getFilters();
-
-        /**
-         * Returns a list of tests to add to the existing list.
-         *
-         * @return \Twig\TwigTest[]
-         */
-        function getTests();
-
-        /**
-         * Returns a list of functions to add to the existing list.
-         *
-         * @return \Twig\TwigFunction[]
-         */
-        function getFunctions();
-
-        /**
-         * Returns a list of operators to add to the existing list.
-         *
-         * @return array<array> First array of unary operators, second array of binary operators
-         */
-        function getOperators();
-
-        /**
-         * Returns a list of global variables to add to the existing list.
-         *
-         * @return array An array of global variables
-         */
-        function getGlobals();
-
-        /**
-         * Returns the name of the extension.
-         *
-         * @return string The extension name
-         */
-        function getName();
-    }
-
-To keep your extension class clean and lean, it can inherit from the built-in
-``\Twig\Extension\AbstractExtension`` class instead of implementing the whole interface. That
-way, you just need to implement the ``getName()`` method as the
-``\Twig\Extension\AbstractExtension`` provides empty implementations for all other methods.
-
-The ``getName()`` method must return a unique identifier for your extension.
-
-Now, with this information in mind, let's create the most basic extension
-possible::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getName()
-        {
-            return 'project';
-        }
-    }
-
-.. note::
-
-    This extension does nothing for now. We will customize it in the next sections.
-
-Twig does not care where you save your extension on the filesystem, as all
-extensions must be registered explicitly to be available in your templates.
-
-You can register an extension by using the ``addExtension()`` method on your
-main ``Environment`` object::
-
-    $twig = new \Twig\Environment($loader);
-    $twig->addExtension(new Project_Twig_Extension());
-
-Don't forget to load first the extension file by either using ``require_once()``
-or by using an autoloader (see `spl_autoload_register()`_).
-
-.. tip::
-
-    The bundled extensions are great examples of how extensions work.
-
-Globals
-~~~~~~~
-
-Global variables can be registered in an extension via the ``getGlobals()``
-method::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getGlobals()
-        {
-            return [
-                'text' => new Text(),
-            ];
-        }
-
-        // ...
-    }
-
-Functions
-~~~~~~~~~
-
-Functions can be registered in an extension via the ``getFunctions()``
-method::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getFunctions()
-        {
-            return [
-                'lipsum' => new Twig_Function_Function('generate_lipsum'),
-            ];
-        }
-
-        // ...
-    }
-
-Filters
-~~~~~~~
-
-To add a filter to an extension, you need to override the ``getFilters()``
-method. This method must return an array of filters to add to the Twig
-environment::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getFilters()
-        {
-            return [
-                'rot13' => new Twig_Filter_Function('str_rot13'),
-            ];
-        }
-
-        // ...
-    }
-
-As you can see in the above code, the ``getFilters()`` method returns an array
-where keys are the name of the filters (``rot13``) and the values the
-definition of the filter (``new Twig_Filter_Function('str_rot13')``).
-
-As seen in the previous chapter, you can also define filters as static methods
-on the extension class::
-
-$twig->addFilter('rot13', new Twig_Filter_Function('Project_Twig_Extension::rot13Filter'));
-
-You can also use ``Twig_Filter_Method`` instead of ``Twig_Filter_Function``
-when defining a filter to use a method::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getFilters()
-        {
-            return [
-                'rot13' => new Twig_Filter_Method($this, 'rot13Filter'),
-            ];
-        }
-
-        public function rot13Filter($string)
-        {
-            return str_rot13($string);
-        }
-
-        // ...
-    }
-
-The first argument of the ``Twig_Filter_Method`` constructor is always
-``$this``, the current extension object. The second one is the name of the
-method to call.
-
-Using methods for filters is a great way to package your filter without
-polluting the global namespace. This also gives the developer more flexibility
-at the cost of a small overhead.
-
-Overriding default Filters
-..........................
-
-If some default core filters do not suit your needs, you can override
-them by creating your own extension. Just use the same names as the one you
-want to override::
-
-    class MyCoreExtension extends \Twig\Extension\AbstractExtension
-    {
-        public function getFilters()
-        {
-            return [
-                'date' => new Twig_Filter_Method($this, 'dateFilter'),
-                // ...
-            ];
-        }
-
-        public function dateFilter($timestamp, $format = 'F j, Y H:i')
-        {
-            return '...'.twig_date_format_filter($timestamp, $format);
-        }
-
-        public function getName()
-        {
-            return 'project';
-        }
-    }
-
-Here, we override the ``date`` filter with a custom one. Using this extension
-is as simple as registering the ``MyCoreExtension`` extension by calling the
-``addExtension()`` method on the environment instance::
-
-    $twig = new \Twig\Environment($loader);
-    $twig->addExtension(new MyCoreExtension());
-
-Tags
-~~~~
-
-Adding a tag in an extension can be done by overriding the
-``getTokenParsers()`` method. This method must return an array of tags to add
-to the Twig environment::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getTokenParsers()
-        {
-            return [new Project_Set_TokenParser()];
-        }
-
-        // ...
-    }
-
-In the above code, we have added a single new tag, defined by the
-``Project_Set_TokenParser`` class. The ``Project_Set_TokenParser`` class is
-responsible for parsing the tag and compiling it to PHP.
-
-Operators
-~~~~~~~~~
-
-The ``getOperators()`` methods allows to add new operators. Here is how to add
-``!``, ``||``, and ``&&`` operators::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getOperators()
-        {
-            return [
-                [
-                    '!' => ['precedence' => 50, 'class' => '\Twig\Node\Expression\Unary\NotUnary'],
-                ),
-                [
-                    '||' => ['precedence' => 10, 'class' => '\Twig\Node\Expression\Binary\OrBinary', 'associativity' => \Twig\ExpressionParser::OPERATOR_LEFT],
-                    '&&' => ['precedence' => 15, 'class' => '\Twig\Node\Expression\Binary\AndBinary', 'associativity' => \Twig\ExpressionParser::OPERATOR_LEFT],
-                ],
-            ];
-        }
-
-        // ...
-    }
-
-Tests
-~~~~~
-
-The ``getTests()`` methods allows to add new test functions::
-
-    class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
-    {
-        public function getTests()
-        {
-            return [
-                'even' => new Twig_Test_Function('twig_test_even'),
-            ];
-        }
-
-        // ...
-    }
-
-Testing an Extension
---------------------
-
-.. versionadded:: 1.10
-    Support for functional tests was added in Twig 1.10.
-
-Functional Tests
-~~~~~~~~~~~~~~~~
-
-You can create functional tests for extensions by creating the
-following file structure in your test directory::
-
-    Fixtures/
-        filters/
-            foo.test
-            bar.test
-        functions/
-            foo.test
-            bar.test
-        tags/
-            foo.test
-            bar.test
-    IntegrationTest.php
-
-The ``IntegrationTest.php`` file should look like this::
-
-    class Project_Tests_IntegrationTest extends \Twig\Test\IntegrationTestCase
-    {
-        public function getExtensions()
-        {
-            return [
-                new Project_Twig_Extension1(),
-                new Project_Twig_Extension2(),
-            ];
-        }
-
-        public function getFixturesDir()
-        {
-            return __DIR__.'/Fixtures/';
-        }
-    }
-
-Fixtures examples can be found within the Twig repository
-`tests/Twig/Fixtures`_ directory.
-
-Node Tests
-~~~~~~~~~~
-
-Testing the node visitors can be complex, so extend your test cases from
-``\Twig\Test\NodeTestCase``. Examples can be found in the Twig repository
-`tests/Twig/Node`_ directory.
-
-.. _`spl_autoload_register()`: https://secure.php.net/spl_autoload_register
-.. _`rot13`:                   https://secure.php.net/manual/en/function.str-rot13.php
-.. _`tests/Twig/Fixtures`:     https://github.com/twigphp/Twig/tree/1.x/tests/Fixtures
-.. _`tests/Twig/Node`:         https://github.com/twigphp/Twig/tree/1.x/tests/Node
diff --git a/vendor/twig/twig/doc/api.rst b/vendor/twig/twig/doc/api.rst
deleted file mode 100644
index 1fac0f755e800138d1d1ba71995b16d7d1cb00b0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/api.rst
+++ /dev/null
@@ -1,590 +0,0 @@
-Twig for Developers
-===================
-
-This chapter describes the API to Twig and not the template language. It will
-be most useful as reference to those implementing the template interface to
-the application and not those who are creating Twig templates.
-
-Basics
-------
-
-Twig uses a central object called the **environment** (of class
-``\Twig\Environment``). Instances of this class are used to store the
-configuration and extensions, and are used to load templates.
-
-Most applications create one ``\Twig\Environment`` object on application
-initialization and use that to load templates. In some cases, it might be useful
-to have multiple environments side by side, with different configurations.
-
-The typical way to configure Twig to load templates for an application looks
-roughly like this::
-
-    require_once '/path/to/vendor/autoload.php';
-
-    $loader = new \Twig\Loader\FilesystemLoader('/path/to/templates');
-    $twig = new \Twig\Environment($loader, [
-        'cache' => '/path/to/compilation_cache',
-    ]);
-
-This creates a template environment with a default configuration and a loader
-that looks up templates in the ``/path/to/templates/`` directory. Different
-loaders are available and you can also write your own if you want to load
-templates from a database or other resources.
-
-.. note::
-
-    Notice that the second argument of the environment is an array of options.
-    The ``cache`` option is a compilation cache directory, where Twig caches
-    the compiled templates to avoid the parsing phase for sub-sequent
-    requests. It is very different from the cache you might want to add for
-    the evaluated templates. For such a need, you can use any available PHP
-    cache library.
-
-Rendering Templates
--------------------
-
-To load a template from a Twig environment, call the ``load()`` method which
-returns a ``\Twig\TemplateWrapper`` instance::
-
-    $template = $twig->load('index.html');
-
-.. note::
-
-    Before Twig 1.28, use ``loadTemplate()`` instead which returns a
-    ``\Twig\Template`` instance.
-
-To render the template with some variables, call the ``render()`` method::
-
-    echo $template->render(['the' => 'variables', 'go' => 'here']);
-
-.. note::
-
-    The ``display()`` method is a shortcut to output the rendered template.
-
-You can also load and render the template in one fell swoop::
-
-    echo $twig->render('index.html', ['the' => 'variables', 'go' => 'here']);
-
-.. versionadded:: 1.28
-    The possibility to render blocks from the API was added in Twig 1.28.
-
-If a template defines blocks, they can be rendered individually via the
-``renderBlock()`` call::
-
-    echo $template->renderBlock('block_name', ['the' => 'variables', 'go' => 'here']);
-
-.. _environment_options:
-
-Environment Options
--------------------
-
-When creating a new ``\Twig\Environment`` instance, you can pass an array of
-options as the constructor second argument::
-
-    $twig = new \Twig\Environment($loader, ['debug' => true]);
-
-The following options are available:
-
-* ``debug`` *boolean*
-
-  When set to ``true``, the generated templates have a
-  ``__toString()`` method that you can use to display the generated nodes
-  (default to ``false``).
-
-* ``charset`` *string* (defaults to ``utf-8``)
-
-  The charset used by the templates.
-
-* ``base_template_class`` *string* (defaults to ``\Twig\Template``)
-
-  The base template class to use for generated
-  templates.
-
-* ``cache`` *string* or ``false``
-
-  An absolute path where to store the compiled templates, or
-  ``false`` to disable caching (which is the default).
-
-* ``auto_reload`` *boolean*
-
-  When developing with Twig, it's useful to recompile the
-  template whenever the source code changes. If you don't provide a value for
-  the ``auto_reload`` option, it will be determined automatically based on the
-  ``debug`` value.
-
-* ``strict_variables`` *boolean*
-
-  If set to ``false``, Twig will silently ignore invalid
-  variables (variables and or attributes/methods that do not exist) and
-  replace them with a ``null`` value. When set to ``true``, Twig throws an
-  exception instead (default to ``false``).
-
-* ``autoescape`` *string* or *boolean*
-
-  If set to ``true``, HTML auto-escaping will be enabled by
-  default for all templates (default to ``true``).
-
-  As of Twig 1.8, you can set the escaping strategy to use (``html``, ``js``,
-  ``false`` to disable).
-
-  As of Twig 1.9, you can set the escaping strategy to use (``css``, ``url``,
-  ``html_attr``, or a PHP callback that takes the template name and must
-  return the escaping strategy to use -- the callback cannot be a function name
-  to avoid collision with built-in escaping strategies).
-
-  As of Twig 1.17, the ``filename`` escaping strategy (renamed to ``name`` as
-  of Twig 1.27) determines the escaping strategy to use for a template based on
-  the template filename extension (this strategy does not incur any overhead at
-  runtime as auto-escaping is done at compilation time.)
-
-* ``optimizations`` *integer*
-
-  A flag that indicates which optimizations to apply
-  (default to ``-1`` -- all optimizations are enabled; set it to ``0`` to
-  disable).
-
-Loaders
--------
-
-Loaders are responsible for loading templates from a resource such as the file
-system.
-
-Compilation Cache
-~~~~~~~~~~~~~~~~~
-
-All template loaders can cache the compiled templates on the filesystem for
-future reuse. It speeds up Twig a lot as templates are only compiled once.
-
-Built-in Loaders
-~~~~~~~~~~~~~~~~
-
-Here is a list of the built-in loaders:
-
-``\Twig\Loader\FilesystemLoader``
-.................................
-
-.. versionadded:: 1.10
-    The ``prependPath()`` and support for namespaces were added in Twig 1.10.
-
-.. versionadded:: 1.27
-    Relative paths support was added in Twig 1.27.
-
-``\Twig\Loader\FilesystemLoader`` loads templates from the file system. This loader
-can find templates in folders on the file system and is the preferred way to
-load them::
-
-    $loader = new \Twig\Loader\FilesystemLoader($templateDir);
-
-It can also look for templates in an array of directories::
-
-    $loader = new \Twig\Loader\FilesystemLoader([$templateDir1, $templateDir2]);
-
-With such a configuration, Twig will first look for templates in
-``$templateDir1`` and if they do not exist, it will fallback to look for them
-in the ``$templateDir2``.
-
-You can add or prepend paths via the ``addPath()`` and ``prependPath()``
-methods::
-
-    $loader->addPath($templateDir3);
-    $loader->prependPath($templateDir4);
-
-The filesystem loader also supports namespaced templates. This allows to group
-your templates under different namespaces which have their own template paths.
-
-When using the ``setPaths()``, ``addPath()``, and ``prependPath()`` methods,
-specify the namespace as the second argument (when not specified, these
-methods act on the "main" namespace)::
-
-    $loader->addPath($templateDir, 'admin');
-
-Namespaced templates can be accessed via the special
-``@namespace_name/template_path`` notation::
-
-    $twig->render('@admin/index.html', []);
-
-``\Twig\Loader\FilesystemLoader`` support absolute and relative paths. Using relative
-paths is preferred as it makes the cache keys independent of the project root
-directory (for instance, it allows warming the cache from a build server where
-the directory might be different from the one used on production servers)::
-
-    $loader = new \Twig\Loader\FilesystemLoader('templates', getcwd().'/..');
-
-.. note::
-
-    When not passing the root path as a second argument, Twig uses ``getcwd()``
-    for relative paths.
-
-``\Twig\Loader\ArrayLoader``
-............................
-
-``\Twig\Loader\ArrayLoader`` loads a template from a PHP array. It is passed an
-array of strings bound to template names::
-
-    $loader = new \Twig\Loader\ArrayLoader([
-        'index.html' => 'Hello {{ name }}!',
-    ]);
-    $twig = new \Twig\Environment($loader);
-
-    echo $twig->render('index.html', ['name' => 'Fabien']);
-
-This loader is very useful for unit testing. It can also be used for small
-projects where storing all templates in a single PHP file might make sense.
-
-.. tip::
-
-    When using the ``Array`` loaders with a cache mechanism, you should know
-    that a new cache key is generated each time a template content "changes"
-    (the cache key being the source code of the template). If you don't want to
-    see your cache grows out of control, you need to take care of clearing the
-    old cache file by yourself.
-
-``\Twig\Loader\ChainLoader``
-............................
-
-``\Twig\Loader\ChainLoader`` delegates the loading of templates to other loaders::
-
-    $loader1 = new \Twig\Loader\ArrayLoader([
-        'base.html' => '{% block content %}{% endblock %}',
-    ]);
-    $loader2 = new \Twig\Loader\ArrayLoader([
-        'index.html' => '{% extends "base.html" %}{% block content %}Hello {{ name }}{% endblock %}',
-        'base.html'  => 'Will never be loaded',
-    ]);
-
-    $loader = new \Twig\Loader\ChainLoader([$loader1, $loader2]);
-
-    $twig = new \Twig\Environment($loader);
-
-When looking for a template, Twig tries each loader in turn and returns as soon
-as the template is found. When rendering the ``index.html`` template from the
-above example, Twig will load it with ``$loader2`` but the ``base.html``
-template will be loaded from ``$loader1``.
-
-.. note::
-
-    You can also add loaders via the ``addLoader()`` method.
-
-Create your own Loader
-~~~~~~~~~~~~~~~~~~~~~~
-
-All loaders implement the ``\Twig\Loader\LoaderInterface``::
-
-    interface Twig_LoaderInterface
-    {
-        /**
-         * Gets the source code of a template, given its name.
-         *
-         * @param  string $name string The name of the template to load
-         *
-         * @return string The template source code
-         *
-         * @deprecated since 1.27 (to be removed in 2.0), implement \Twig\Loader\SourceContextLoaderInterface
-         */
-        function getSource($name);
-
-        /**
-         * Gets the cache key to use for the cache for a given template name.
-         *
-         * @param  string $name string The name of the template to load
-         *
-         * @return string The cache key
-         */
-        function getCacheKey($name);
-
-        /**
-         * Returns true if the template is still fresh.
-         *
-         * @param string    $name The template name
-         * @param timestamp $time The last modification time of the cached template
-         */
-        function isFresh($name, $time);
-    }
-
-The ``isFresh()`` method must return ``true`` if the current cached template
-is still fresh, given the last modification time, or ``false`` otherwise.
-
-.. note::
-
-    As of Twig 1.27, you should also implement
-    ``\Twig\Loader\SourceContextLoaderInterface`` to avoid deprecation notices.
-
-.. tip::
-
-    As of Twig 1.11.0, you can also implement ``\Twig\Loader\ExistsLoaderInterface``
-    to make your loader faster when used with the chain loader.
-
-Using Extensions
-----------------
-
-Twig extensions are packages that add new features to Twig. Register an
-extension via the ``addExtension()`` method::
-
-    $twig->addExtension(new \Twig\Extension\SandboxExtension());
-
-Twig comes bundled with the following extensions:
-
-* *Twig\Extension\CoreExtension*: Defines all the core features of Twig.
-
-* *Twig\Extension\DebugExtension*: Defines the ``dump`` function to help debug
-  template variables.
-
-* *Twig\Extension\EscaperExtension*: Adds automatic output-escaping and the
-  possibility to escape/unescape blocks of code.
-
-* *Twig\Extension\SandboxExtension*: Adds a sandbox mode to the default Twig
-  environment, making it safe to evaluate untrusted code.
-
-* *Twig\Extension\ProfilerExtension*: Enabled the built-in Twig profiler (as of
-  Twig 1.18).
-
-* *Twig\Extension\OptimizerExtension*: Optimizes the node tree before
-  compilation.
-
-* *Twig\Extension\StringLoaderExtension*: Defined the ``template_from_string``
-   function to allow loading templates from string in a template.
-
-The Core, Escaper, and Optimizer extensions are registered by default.
-
-Built-in Extensions
--------------------
-
-This section describes the features added by the built-in extensions.
-
-.. tip::
-
-    Read the chapter about :doc:`extending Twig <advanced>` to learn how to
-    create your own extensions.
-
-Core Extension
-~~~~~~~~~~~~~~
-
-The ``core`` extension defines all the core features of Twig:
-
-* :doc:`Tags <tags/index>`;
-* :doc:`Filters <filters/index>`;
-* :doc:`Functions <functions/index>`;
-* :doc:`Tests <tests/index>`.
-
-Escaper Extension
-~~~~~~~~~~~~~~~~~
-
-The ``escaper`` extension adds automatic output escaping to Twig. It defines a
-tag, ``autoescape``, and a filter, ``raw``.
-
-When creating the escaper extension, you can switch on or off the global
-output escaping strategy::
-
-    $escaper = new \Twig\Extension\EscaperExtension('html');
-    $twig->addExtension($escaper);
-
-If set to ``html``, all variables in templates are escaped (using the ``html``
-escaping strategy), except those using the ``raw`` filter:
-
-.. code-block:: twig
-
-    {{ article.to_html|raw }}
-
-You can also change the escaping mode locally by using the ``autoescape`` tag
-(see the :doc:`autoescape<tags/autoescape>` doc for the syntax used before
-Twig 1.8):
-
-.. code-block:: twig
-
-    {% autoescape 'html' %}
-        {{ var }}
-        {{ var|raw }}      {# var won't be escaped #}
-        {{ var|escape }}   {# var won't be double-escaped #}
-    {% endautoescape %}
-
-.. warning::
-
-    The ``autoescape`` tag has no effect on included files.
-
-The escaping rules are implemented as follows:
-
-* Literals (integers, booleans, arrays, ...) used in the template directly as
-  variables or filter arguments are never automatically escaped:
-
-  .. code-block:: twig
-
-        {{ "Twig<br />" }} {# won't be escaped #}
-
-        {% set text = "Twig<br />" %}
-        {{ text }} {# will be escaped #}
-
-* Expressions which the result is a literal or a variable marked safe
-  are never automatically escaped:
-
-  .. code-block:: twig
-
-        {{ foo ? "Twig<br />" : "<br />Twig" }} {# won't be escaped #}
-
-        {% set text = "Twig<br />" %}
-        {{ true ? text : "<br />Twig" }} {# will be escaped #}
-        {{ false ? text : "<br />Twig" }} {# won't be escaped #}
-
-        {% set text = "Twig<br />" %}
-        {{ foo ? text|raw : "<br />Twig" }} {# won't be escaped #}
-
-* Escaping is applied before printing, after any other filter is applied:
-
-  .. code-block:: twig
-
-        {{ var|upper }} {# is equivalent to {{ var|upper|escape }} #}
-
-* The `raw` filter should only be used at the end of the filter chain:
-
-  .. code-block:: twig
-
-        {{ var|raw|upper }} {# will be escaped #}
-
-        {{ var|upper|raw }} {# won't be escaped #}
-
-* Automatic escaping is not applied if the last filter in the chain is marked
-  safe for the current context (e.g. ``html`` or ``js``). ``escape`` and
-  ``escape('html')`` are marked safe for HTML, ``escape('js')`` is marked
-  safe for JavaScript, ``raw`` is marked safe for everything.
-
-  .. code-block:: twig
-
-        {% autoescape 'js' %}
-            {{ var|escape('html') }} {# will be escaped for HTML and JavaScript #}
-            {{ var }} {# will be escaped for JavaScript #}
-            {{ var|escape('js') }} {# won't be double-escaped #}
-        {% endautoescape %}
-
-.. note::
-
-    Note that autoescaping has some limitations as escaping is applied on
-    expressions after evaluation. For instance, when working with
-    concatenation, ``{{ foo|raw ~ bar }}`` won't give the expected result as
-    escaping is applied on the result of the concatenation, not on the
-    individual variables (so, the ``raw`` filter won't have any effect here).
-
-Sandbox Extension
-~~~~~~~~~~~~~~~~~
-
-The ``sandbox`` extension can be used to evaluate untrusted code. Access to
-unsafe attributes and methods is prohibited. The sandbox security is managed
-by a policy instance. By default, Twig comes with one policy class:
-``\Twig\Sandbox\SecurityPolicy``. This class allows you to white-list some
-tags, filters, properties, and methods::
-
-    $tags = ['if'];
-    $filters = ['upper'];
-    $methods = [
-        'Article' => ['getTitle', 'getBody'],
-    ];
-    $properties = [
-        'Article' => ['title', 'body'],
-    ];
-    $functions = ['range'];
-    $policy = new \Twig\Sandbox\SecurityPolicy($tags, $filters, $methods, $properties, $functions);
-
-With the previous configuration, the security policy will only allow usage of
-the ``if`` tag, and the ``upper`` filter. Moreover, the templates will only be
-able to call the ``getTitle()`` and ``getBody()`` methods on ``Article``
-objects, and the ``title`` and ``body`` public properties. Everything else
-won't be allowed and will generate a ``\Twig\Sandbox\SecurityError`` exception.
-
-The policy object is the first argument of the sandbox constructor::
-
-    $sandbox = new \Twig\Extension\SandboxExtension($policy);
-    $twig->addExtension($sandbox);
-
-By default, the sandbox mode is disabled and should be enabled when including
-untrusted template code by using the ``sandbox`` tag:
-
-.. code-block:: twig
-
-    {% sandbox %}
-        {% include 'user.html' %}
-    {% endsandbox %}
-
-You can sandbox all templates by passing ``true`` as the second argument of
-the extension constructor::
-
-    $sandbox = new \Twig\Extension\SandboxExtension($policy, true);
-
-Profiler Extension
-~~~~~~~~~~~~~~~~~~
-
-.. versionadded:: 1.18
-    The Profile extension was added in Twig 1.18.
-
-The ``profiler`` extension enables a profiler for Twig templates; it should
-only be used on your development machines as it adds some overhead::
-
-    $profile = new \Twig\Profiler\Profile();
-    $twig->addExtension(new \Twig\Extension\ProfilerExtension($profile));
-
-    $dumper = new \Twig\Profiler\Dumper\TextDumper();
-    echo $dumper->dump($profile);
-
-A profile contains information about time and memory consumption for template,
-block, and macro executions.
-
-You can also dump the data in a `Blackfire.io <https://blackfire.io/>`_
-compatible format::
-
-    $dumper = new \Twig\Profiler\Dumper\BlackfireDumper();
-    file_put_contents('/path/to/profile.prof', $dumper->dump($profile));
-
-Upload the profile to visualize it (create a `free account
-<https://blackfire.io/signup?utm_source=twig&utm_medium=doc&utm_campaign=profiler>`_
-first):
-
-.. code-block:: sh
-
-    blackfire --slot=7 upload /path/to/profile.prof
-
-Optimizer Extension
-~~~~~~~~~~~~~~~~~~~
-
-The ``optimizer`` extension optimizes the node tree before compilation::
-
-    $twig->addExtension(new \Twig\Extension\OptimizerExtension());
-
-By default, all optimizations are turned on. You can select the ones you want
-to enable by passing them to the constructor::
-
-    $optimizer = new \Twig\Extension\OptimizerExtension(\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_FOR);
-
-    $twig->addExtension($optimizer);
-
-Twig supports the following optimizations:
-
-* ``\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_ALL``, enables all optimizations
-  (this is the default value).
-
-* ``\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_NONE``, disables all optimizations.
-  This reduces the compilation time, but it can increase the execution time
-  and the consumed memory.
-
-* ``\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_FOR``, optimizes the ``for`` tag by
-  removing the ``loop`` variable creation whenever possible.
-
-* ``\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_RAW_FILTER``, removes the ``raw``
-  filter whenever possible.
-
-* ``\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_VAR_ACCESS``, simplifies the creation
-  and access of variables in the compiled templates whenever possible.
-
-Exceptions
-----------
-
-Twig can throw exceptions:
-
-* ``\Twig\Error\Error``: The base exception for all errors.
-
-* ``\Twig\Error\SyntaxError``: Thrown to tell the user that there is a problem with
-  the template syntax.
-
-* ``\Twig\Error\RuntimeError``: Thrown when an error occurs at runtime (when a filter
-  does not exist for instance).
-
-* ``\Twig\Error\LoaderError``: Thrown when an error occurs during template loading.
-
-* ``\Twig\Sandbox\SecurityError``: Thrown when an unallowed tag, filter, or
-  method is called in a sandboxed template.
diff --git a/vendor/twig/twig/doc/coding_standards.rst b/vendor/twig/twig/doc/coding_standards.rst
deleted file mode 100644
index 721b0f13aaf967ab038d31b0f2c4cc1b69c8aec0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/coding_standards.rst
+++ /dev/null
@@ -1,101 +0,0 @@
-Coding Standards
-================
-
-When writing Twig templates, we recommend you to follow these official coding
-standards:
-
-* Put one (and only one) space after the start of a delimiter (``{{``, ``{%``,
-  and ``{#``) and before the end of a delimiter (``}}``, ``%}``, and ``#}``):
-
-  .. code-block:: twig
-
-    {{ foo }}
-    {# comment #}
-    {% if foo %}{% endif %}
-
-  When using the whitespace control character, do not put any spaces between
-  it and the delimiter:
-
-  .. code-block:: twig
-
-    {{- foo -}}
-    {#- comment -#}
-    {%- if foo -%}{%- endif -%}
-
-* Put one (and only one) space before and after the following operators:
-  comparison operators (``==``, ``!=``, ``<``, ``>``, ``>=``, ``<=``), math
-  operators (``+``, ``-``, ``/``, ``*``, ``%``, ``//``, ``**``), logic
-  operators (``not``, ``and``, ``or``), ``~``, ``is``, ``in``, and the ternary
-  operator (``?:``):
-
-  .. code-block:: twig
-
-     {{ 1 + 2 }}
-     {{ foo ~ bar }}
-     {{ true ? true : false }}
-
-* Put one (and only one) space after the ``:`` sign in hashes and ``,`` in
-  arrays and hashes:
-
-  .. code-block:: twig
-
-     {{ [1, 2, 3] }}
-     {{ {'foo': 'bar'} }}
-
-* Do not put any spaces after an opening parenthesis and before a closing
-  parenthesis in expressions:
-
-  .. code-block:: twig
-
-    {{ 1 + (2 * 3) }}
-
-* Do not put any spaces before and after string delimiters:
-
-  .. code-block:: twig
-
-    {{ 'foo' }}
-    {{ "foo" }}
-
-* Do not put any spaces before and after the following operators: ``|``,
-  ``.``, ``..``, ``[]``:
-
-  .. code-block:: twig
-
-    {{ foo|upper|lower }}
-    {{ user.name }}
-    {{ user[name] }}
-    {% for i in 1..12 %}{% endfor %}
-
-* Do not put any spaces before and after the parenthesis used for filter and
-  function calls:
-
-  .. code-block:: twig
-
-     {{ foo|default('foo') }}
-     {{ range(1..10) }}
-
-* Do not put any spaces before and after the opening and the closing of arrays
-  and hashes:
-
-  .. code-block:: twig
-
-     {{ [1, 2, 3] }}
-     {{ {'foo': 'bar'} }}
-
-* Use lower cased and underscored variable names:
-
-  .. code-block:: twig
-
-     {% set foo = 'foo' %}
-     {% set foo_bar = 'foo' %}
-
-* Indent your code inside tags (use the same indentation as the one used for
-  the target language of the rendered template):
-
-  .. code-block:: twig
-
-     {% block foo %}
-         {% if true %}
-             true
-         {% endif %}
-     {% endblock %}
diff --git a/vendor/twig/twig/doc/deprecated.rst b/vendor/twig/twig/doc/deprecated.rst
deleted file mode 100644
index 1d01fcc14f544277726589bb7f60b824c8b6bf69..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/deprecated.rst
+++ /dev/null
@@ -1,224 +0,0 @@
-Deprecated Features
-===================
-
-This document lists all deprecated features in Twig. Deprecated features are
-kept for backward compatibility and removed in the next major release (a
-feature that was deprecated in Twig 1.x is removed in Twig 2.0).
-
-Deprecation Notices
--------------------
-
-As of Twig 1.21, Twig generates deprecation notices when a template uses
-deprecated features. See :ref:`deprecation-notices` for more information.
-
-Macros
-------
-
-As of Twig 2.0, macros imported in a file are not available in child templates
-anymore (via an ``include`` call for instance). You need to import macros
-explicitly in each file where you are using them.
-
-Token Parsers
--------------
-
-* As of Twig 1.x, the token parser broker sub-system is deprecated. The
-  following class and interface will be removed in 2.0:
-
-  * ``Twig_TokenParserBrokerInterface``
-  * ``Twig_TokenParserBroker``
-
-* As of Twig 1.27, ``\Twig\Parser::getFilename()`` is deprecated. From a token
-  parser, use ``$this->parser->getStream()->getSourceContext()->getPath()`` instead.
-
-* As of Twig 1.27, ``\Twig\Parser::getEnvironment()`` is deprecated.
-
-Extensions
-----------
-
-* As of Twig 1.x, the ability to remove an extension is deprecated and the
-  ``\Twig\Environment::removeExtension()`` method will be removed in 2.0.
-
-* As of Twig 1.23, the ``\Twig\Extension\ExtensionInterface::initRuntime()`` method is
-  deprecated. You have two options to avoid the deprecation notice: if you
-  implement this method to store the environment for your custom filters,
-  functions, or tests, use the ``needs_environment`` option instead; if you
-  have more complex needs, explicitly implement
-  ``\Twig\Extension\InitRuntimeInterface`` (not recommended).
-
-* As of Twig 1.23, the ``\Twig\Extension\ExtensionInterface::getGlobals()`` method is
-  deprecated. Implement ``\Twig\Extension\GlobalsInterface`` to avoid
-  deprecation notices.
-
-* As of Twig 1.26, the ``\Twig\Extension\ExtensionInterface::getName()`` method is
-  deprecated and it is not used internally anymore.
-
-PEAR
-----
-
-PEAR support has been discontinued in Twig 1.15.1, and no PEAR packages are
-provided anymore. Use Composer instead.
-
-Filters
--------
-
-* As of Twig 1.x, use ``\Twig\TwigFilter`` to add a filter. The following
-  classes and interfaces will be removed in 2.0:
-
-  * ``Twig_FilterInterface``
-  * ``Twig_FilterCallableInterface``
-  * ``Twig_Filter``
-  * ``Twig_Filter_Function``
-  * ``Twig_Filter_Method``
-  * ``Twig_Filter_Node``
-
-* As of Twig 2.x, the ``Twig_SimpleFilter`` class is deprecated and will be
-  removed in Twig 3.x (use ``\Twig\TwigFilter`` instead). In Twig 2.x,
-  ``Twig_SimpleFilter`` is just an alias for ``\Twig\TwigFilter``.
-
-Functions
----------
-
-* As of Twig 1.x, use ``\Twig\TwigFunction`` to add a function. The following
-  classes and interfaces will be removed in 2.0:
-
-  * ``Twig_FunctionInterface``
-  * ``Twig_FunctionCallableInterface``
-  * ``Twig_Function``
-  * ``Twig_Function_Function``
-  * ``Twig_Function_Method``
-  * ``Twig_Function_Node``
-
-* As of Twig 2.x, the ``Twig_SimpleFunction`` class is deprecated and will be
-  removed in Twig 3.x (use ``\Twig\TwigFunction`` instead). In Twig 2.x,
-  ``Twig_SimpleFunction`` is just an alias for ``\Twig\TwigFunction``.
-
-Tests
------
-
-* As of Twig 1.x, use ``\Twig\TwigTest`` to add a test. The following classes
-  and interfaces will be removed in 2.0:
-
-  * ``Twig_TestInterface``
-  * ``Twig_TestCallableInterface``
-  * ``Twig_Test``
-  * ``Twig_Test_Function``
-  * ``Twig_Test_Method``
-  * ``Twig_Test_Node``
-
-* As of Twig 2.x, the ``Twig_SimpleTest`` class is deprecated and will be
-  removed in Twig 3.x (use ``\Twig\TwigTest`` instead). In Twig 2.x,
-  ``Twig_SimpleTest`` is just an alias for ``\Twig\TwigTest``.
-
-* The ``sameas`` and ``divisibleby`` tests are deprecated in favor of ``same
-  as`` and ``divisible by`` respectively.
-
-Tags
-----
-
-* As of Twig 1.x, the ``raw`` tag is deprecated. You should use ``verbatim``
-  instead.
-
-Nodes
------
-
-* As of Twig 1.x, ``Node::toXml()`` is deprecated and will be removed in Twig
-  2.0.
-
-* As of Twig 1.26, ``Node::$nodes`` should only contains ``\Twig\Node\Node``
-  instances, storing a ``null`` value is deprecated and won't be possible in
-  Twig 2.x.
-
-* As of Twig 1.27, the ``filename`` attribute on ``\Twig\Node\ModuleNode`` is
-  deprecated. Use ``getName()`` instead.
-
-* As of Twig 1.27, the ``\Twig\Node\Node::getFilename()/\Twig\Node\Node::getLine()``
-  methods are deprecated, use
-  ``\Twig\Node\Node::getTemplateName()/\Twig\Node\Node::getTemplateLine()`` instead.
-
-Interfaces
-----------
-
-* As of Twig 2.x, the following interfaces are deprecated and empty (they will
-  be removed in Twig 3.0):
-
-* ``Twig_CompilerInterface``     (use ``\Twig\Compiler`` instead)
-* ``Twig_LexerInterface``        (use ``\Twig\Lexer`` instead)
-* ``Twig_NodeInterface``         (use ``\Twig\Node\Node`` instead)
-* ``Twig_ParserInterface``       (use ``\Twig\Parser`` instead)
-* ``\Twig\Loader\ExistsLoaderInterface`` (merged with ``\Twig\Loader\LoaderInterface``)
-* ``\Twig\Loader\SourceContextLoaderInterface`` (merged with ``\Twig\Loader\LoaderInterface``)
-* ``Twig_TemplateInterface``     (use ``\Twig\Template`` instead, and use
-  those constants \Twig\Template::ANY_CALL, \Twig\Template::ARRAY_CALL,
-  \Twig\Template::METHOD_CALL)
-
-Compiler
---------
-
-* As of Twig 1.26, the ``\Twig\Compiler::getFilename()`` has been deprecated.
-  You should not use it anyway as its values is not reliable.
-
-* As of Twig 1.27, the ``\Twig\Compiler::addIndentation()`` has been deprecated.
-  Use ``\Twig\Compiler::write('')`` instead.
-
-Loaders
--------
-
-* As of Twig 1.x, ``Twig_Loader_String`` is deprecated and will be removed in
-  2.0. You can render a string via ``\Twig\Environment::createTemplate()``.
-
-* As of Twig 1.27, ``\Twig\Loader\LoaderInterface::getSource()`` is deprecated.
-  Implement ``\Twig\Loader\SourceContextLoaderInterface`` instead and use
-  ``getSourceContext()``.
-
-Node Visitors
--------------
-
-* Because of the removal of ``Twig_NodeInterface`` in 2.0, you need to extend
-  ``\Twig\NodeVisitor\AbstractNodeVisitor`` instead of implementing ``\Twig\NodeVisitor\NodeVisitorInterface``
-  directly to make your node visitors compatible with both Twig 1.x and 2.x.
-
-Globals
--------
-
-* As of Twig 2.x, the ability to register a global variable after the runtime
-  or the extensions have been initialized is not possible anymore (but
-  changing the value of an already registered global is possible).
-
-* As of Twig 1.x, using the ``_self`` global variable to get access to the
-  current ``\Twig\Template`` instance is deprecated; most usages only need the
-  current template name, which will continue to work in Twig 2.0. In Twig 2.0,
-  ``_self`` returns the current template name instead of the current
-  ``\Twig\Template`` instance. If you are using ``{{ _self.templateName }}``,
-  just replace it with ``{{ _self }}``.
-
-Miscellaneous
--------------
-
-* As of Twig 1.x, ``\Twig\Environment::clearTemplateCache()``,
-  ``\Twig\Environment::writeCacheFile()``,
-  ``\Twig\Environment::clearCacheFiles()``,
-  ``\Twig\Environment::getCacheFilename()``,
-  ``\Twig\Environment::getTemplateClassPrefix()``,
-  ``\Twig\Environment::getLexer()``, ``\Twig\Environment::getParser()``, and
-  ``\Twig\Environment::getCompiler()`` are deprecated and will be removed in 2.0.
-
-* As of Twig 1.x, ``\Twig\Template::getEnvironment()`` and
-  ``Twig_TemplateInterface::getEnvironment()`` are deprecated and will be
-  removed in 2.0.
-
-* As of Twig 1.21, setting the environment option ``autoescape`` to ``true`` is
-  deprecated and will be removed in 2.0. Use ``"html"`` instead.
-
-* As of Twig 1.27, ``\Twig\Error\Error::getTemplateFile()`` and
-  ``\Twig\Error\Error::setTemplateFile()`` are deprecated. Use
-  ``\Twig\Error\Error::getTemplateName()`` and ``\Twig\Error\Error::setTemplateName()``
-  instead.
-
-* As of Twig 1.27, ``\Twig\Template::getSource()`` is deprecated. Use
-  ``\Twig\Template::getSourceContext()`` instead.
-
-* As of Twig 1.27, ``\Twig\Parser::addHandler()`` and
-  ``\Twig\Parser::addNodeVisitor()`` are deprecated and will be removed in 2.0.
-
-* As of Twig 1.29, some classes are marked as being final via the `@final`
-  annotation. Those classes will be marked as final in 2.0.
diff --git a/vendor/twig/twig/doc/filters/abs.rst b/vendor/twig/twig/doc/filters/abs.rst
deleted file mode 100644
index 77d5cf05495958361eeda9dcea722c71caf4dc6e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/abs.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-``abs``
-=======
-
-The ``abs`` filter returns the absolute value.
-
-.. code-block:: twig
-
-    {# number = -5 #}
-
-    {{ number|abs }}
-
-    {# outputs 5 #}
-
-.. note::
-
-    Internally, Twig uses the PHP `abs`_ function.
-
-.. _`abs`: https://secure.php.net/abs
diff --git a/vendor/twig/twig/doc/filters/batch.rst b/vendor/twig/twig/doc/filters/batch.rst
deleted file mode 100644
index c03c5747a994024f8e083dd02e51a83286d8df34..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/batch.rst
+++ /dev/null
@@ -1,47 +0,0 @@
-``batch``
-=========
-
-.. versionadded:: 1.12.3
-    The ``batch`` filter was added in Twig 1.12.3.
-
-The ``batch`` filter "batches" items by returning a list of lists with the
-given number of items. A second parameter can be provided and used to fill in
-missing items:
-
-.. code-block:: twig
-
-    {% set items = ['a', 'b', 'c', 'd'] %}
-
-    <table>
-    {% for row in items|batch(3, 'No item') %}
-        <tr>
-            {% for column in row %}
-                <td>{{ column }}</td>
-            {% endfor %}
-        </tr>
-    {% endfor %}
-    </table>
-
-The above example will be rendered as:
-
-.. code-block:: twig
-
-    <table>
-        <tr>
-            <td>a</td>
-            <td>b</td>
-            <td>c</td>
-        </tr>
-        <tr>
-            <td>d</td>
-            <td>No item</td>
-            <td>No item</td>
-        </tr>
-    </table>
-
-Arguments
----------
-
-* ``size``: The size of the batch; fractional numbers will be rounded up
-* ``fill``: Used to fill in missing items
-* ``preserve_keys``: Whether to preserve keys or not
diff --git a/vendor/twig/twig/doc/filters/capitalize.rst b/vendor/twig/twig/doc/filters/capitalize.rst
deleted file mode 100644
index 2353658bf157f311b8b9b7e34b68e62170d79372..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/capitalize.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-``capitalize``
-==============
-
-The ``capitalize`` filter capitalizes a value. The first character will be
-uppercase, all others lowercase:
-
-.. code-block:: twig
-
-    {{ 'my first car'|capitalize }}
-
-    {# outputs 'My first car' #}
diff --git a/vendor/twig/twig/doc/filters/convert_encoding.rst b/vendor/twig/twig/doc/filters/convert_encoding.rst
deleted file mode 100644
index 28fde826dc0584878b11edce86864122185d39a0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/convert_encoding.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-``convert_encoding``
-====================
-
-.. versionadded:: 1.4
-    The ``convert_encoding`` filter was added in Twig 1.4.
-
-The ``convert_encoding`` filter converts a string from one encoding to
-another. The first argument is the expected output charset and the second one
-is the input charset:
-
-.. code-block:: twig
-
-    {{ data|convert_encoding('UTF-8', 'iso-2022-jp') }}
-
-.. note::
-
-    This filter relies on the `iconv`_ or `mbstring`_ extension, so one of
-    them must be installed. In case both are installed, `mbstring`_ is used by
-    default (Twig before 1.8.1 uses `iconv`_ by default).
-
-Arguments
----------
-
-* ``to``:   The output charset
-* ``from``: The input charset
-
-.. _`iconv`:    https://secure.php.net/iconv
-.. _`mbstring`: https://secure.php.net/mbstring
diff --git a/vendor/twig/twig/doc/filters/date.rst b/vendor/twig/twig/doc/filters/date.rst
deleted file mode 100644
index b36a77325657bc627af87ee8d0c2de457927a043..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/date.rst
+++ /dev/null
@@ -1,100 +0,0 @@
-``date``
-========
-
-.. versionadded:: 1.1
-    The timezone support has been added in Twig 1.1.
-
-.. versionadded:: 1.5
-    The default date format support has been added in Twig 1.5.
-
-.. versionadded:: 1.6.1
-    The default timezone support has been added in Twig 1.6.1.
-
-.. versionadded:: 1.11.0
-    The introduction of the false value for the timezone was introduced in Twig 1.11.0
-
-The ``date`` filter formats a date to a given format:
-
-.. code-block:: twig
-
-    {{ post.published_at|date("m/d/Y") }}
-
-The format specifier is the same as supported by `date`_,
-except when the filtered data is of type `DateInterval`_, when the format must conform to
-`DateInterval::format`_ instead.
-
-The ``date`` filter accepts strings (it must be in a format supported by the
-`strtotime`_ function), `DateTime`_ instances, or `DateInterval`_ instances. For
-instance, to display the current date, filter the word "now":
-
-.. code-block:: twig
-
-    {{ "now"|date("m/d/Y") }}
-
-To escape words and characters in the date format use ``\\`` in front of each
-character:
-
-.. code-block:: twig
-
-    {{ post.published_at|date("F jS \\a\\t g:ia") }}
-
-If the value passed to the ``date`` filter is ``null``, it will return the
-current date by default. If an empty string is desired instead of the current
-date, use a ternary operator:
-
-.. code-block:: twig
-
-    {{ post.published_at is empty ? "" : post.published_at|date("m/d/Y") }}
-
-If no format is provided, Twig will use the default one: ``F j, Y H:i``. This
-default can be changed by calling the ``setDateFormat()`` method on the
-``core`` extension instance. The first argument is the default format for
-dates and the second one is the default format for date intervals:
-
-.. code-block:: php
-
-    $twig = new \Twig\Environment($loader);
-    $twig->getExtension('\Twig\Extension\CoreExtension')->setDateFormat('d/m/Y', '%d days');
-
-    // before Twig 1.26
-    $twig->getExtension('core')->setDateFormat('d/m/Y', '%d days');
-
-Timezone
---------
-
-By default, the date is displayed by applying the default timezone (the one
-specified in php.ini or declared in Twig -- see below), but you can override
-it by explicitly specifying a timezone:
-
-.. code-block:: twig
-
-    {{ post.published_at|date("m/d/Y", "Europe/Paris") }}
-
-If the date is already a DateTime object, and if you want to keep its current
-timezone, pass ``false`` as the timezone value:
-
-.. code-block:: twig
-
-    {{ post.published_at|date("m/d/Y", false) }}
-
-The default timezone can also be set globally by calling ``setTimezone()``:
-
-.. code-block:: php
-
-    $twig = new \Twig\Environment($loader);
-    $twig->getExtension('\Twig\Extension\CoreExtension')->setTimezone('Europe/Paris');
-
-    // before Twig 1.26
-    $twig->getExtension('core')->setTimezone('Europe/Paris');
-
-Arguments
----------
-
-* ``format``:   The date format
-* ``timezone``: The date timezone
-
-.. _`strtotime`:            https://secure.php.net/strtotime
-.. _`DateTime`:             https://secure.php.net/DateTime
-.. _`DateInterval`:         https://secure.php.net/DateInterval
-.. _`date`:                 https://secure.php.net/date
-.. _`DateInterval::format`: https://secure.php.net/DateInterval.format
diff --git a/vendor/twig/twig/doc/filters/date_modify.rst b/vendor/twig/twig/doc/filters/date_modify.rst
deleted file mode 100644
index e4217d59fefc33b9ec96b80a3a7b49b61bbc692b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/date_modify.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-``date_modify``
-===============
-
-.. versionadded:: 1.9.0
-    The date_modify filter has been added in Twig 1.9.0.
-
-The ``date_modify`` filter modifies a date with a given modifier string:
-
-.. code-block:: twig
-
-    {{ post.published_at|date_modify("+1 day")|date("m/d/Y") }}
-
-The ``date_modify`` filter accepts strings (it must be in a format supported
-by the `strtotime`_ function) or `DateTime`_ instances. You can combine
-it with the :doc:`date<date>` filter for formatting.
-
-Arguments
----------
-
-* ``modifier``: The modifier
-
-.. _`strtotime`: https://secure.php.net/strtotime
-.. _`DateTime`:  https://secure.php.net/DateTime
diff --git a/vendor/twig/twig/doc/filters/default.rst b/vendor/twig/twig/doc/filters/default.rst
deleted file mode 100644
index e616e590caacf9fced8fa4c61ded2be956ba486a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/default.rst
+++ /dev/null
@@ -1,42 +0,0 @@
-``default``
-===========
-
-The ``default`` filter returns the passed default value if the value is
-undefined or empty, otherwise the value of the variable:
-
-.. code-block:: twig
-
-    {{ var|default('var is not defined') }}
-
-    {{ var.foo|default('foo item on var is not defined') }}
-
-    {{ var['foo']|default('foo item on var is not defined') }}
-
-    {{ ''|default('passed var is empty')  }}
-
-When using the ``default`` filter on an expression that uses variables in some
-method calls, be sure to use the ``default`` filter whenever a variable can be
-undefined:
-
-.. code-block:: twig
-
-    {{ var.method(foo|default('foo'))|default('foo') }}
-    
-Using the ``default`` filter on a boolean variable might trigger unexpected behaviour, as
-``false`` is treated as an empty value. Consider using ``??`` instead:
-
-.. code-block:: twig
-
-    {% set foo = false %}
-    {{ foo|default(true) }} {# true #}
-    {{ foo ?? true }} {# false #}
-
-.. note::
-
-    Read the documentation for the :doc:`defined<../tests/defined>` and
-    :doc:`empty<../tests/empty>` tests to learn more about their semantics.
-
-Arguments
----------
-
-* ``default``: The default value
diff --git a/vendor/twig/twig/doc/filters/escape.rst b/vendor/twig/twig/doc/filters/escape.rst
deleted file mode 100644
index 8ae95b93da3ba9c5cc7c81cf76ec77635fe9f014..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/escape.rst
+++ /dev/null
@@ -1,129 +0,0 @@
-``escape``
-==========
-
-.. versionadded:: 1.9.0
-    The ``css``, ``url``, and ``html_attr`` strategies were added in Twig
-    1.9.0.
-
-.. versionadded:: 1.14.0
-    The ability to define custom escapers was added in Twig 1.14.0.
-
-The ``escape`` filter escapes a string using strategies that depend on the
-context.
-
-By default, it uses the HTML escaping strategy:
-
-.. code-block:: html+twig
-
-    <p>
-        {{ user.username|escape }}
-    </p>
-
-For convenience, the ``e`` filter is defined as an alias:
-
-.. code-block:: html+twig
-
-    <p>
-        {{ user.username|e }}
-    </p>
-
-The ``escape`` filter can also be used in other contexts than HTML thanks to
-an optional argument which defines the escaping strategy to use:
-
-.. code-block:: twig
-
-    {{ user.username|e }}
-    {# is equivalent to #}
-    {{ user.username|e('html') }}
-
-And here is how to escape variables included in JavaScript code:
-
-.. code-block:: twig
-
-    {{ user.username|escape('js') }}
-    {{ user.username|e('js') }}
-
-The ``escape`` filter supports the following escaping strategies for HTML
-documents:
-
-* ``html``: escapes a string for the **HTML body** context.
-
-* ``js``: escapes a string for the **JavaScript** context.
-
-* ``css``: escapes a string for the **CSS** context. CSS escaping can be
-  applied to any string being inserted into CSS and escapes everything except
-  alphanumerics.
-
-* ``url``: escapes a string for the **URI or parameter** contexts. This should
-  not be used to escape an entire URI; only a subcomponent being inserted.
-
-* ``html_attr``: escapes a string for the **HTML attribute** context.
-
-Note that doing contextual escaping in HTML documents is hard and choosing the
-right escaping strategy depends on a lot of factors. Please, read related
-documentation like `the OWASP prevention cheat sheet
-<https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.md>`_
-to learn more about this topic.
-
-.. note::
-
-    Internally, ``escape`` uses the PHP native `htmlspecialchars`_ function
-    for the HTML escaping strategy.
-
-.. caution::
-
-    When using automatic escaping, Twig tries to not double-escape a variable
-    when the automatic escaping strategy is the same as the one applied by the
-    escape filter; but that does not work when using a variable as the
-    escaping strategy:
-
-    .. code-block:: twig
-
-        {% set strategy = 'html' %}
-
-        {% autoescape 'html' %}
-            {{ var|escape('html') }}   {# won't be double-escaped #}
-            {{ var|escape(strategy) }} {# will be double-escaped #}
-        {% endautoescape %}
-
-    When using a variable as the escaping strategy, you should disable
-    automatic escaping:
-
-    .. code-block:: twig
-
-        {% set strategy = 'html' %}
-
-        {% autoescape 'html' %}
-            {{ var|escape(strategy)|raw }} {# won't be double-escaped #}
-        {% endautoescape %}
-
-Custom Escapers
----------------
-
-You can define custom escapers by calling the ``setEscaper()`` method on the
-``core`` extension instance. The first argument is the escaper name (to be
-used in the ``escape`` call) and the second one must be a valid PHP callable:
-
-.. code-block:: php
-
-    $twig = new \Twig\Environment($loader);
-    $twig->getExtension('\Twig\Extension\CoreExtension')->setEscaper('csv', 'csv_escaper');
-
-    // before Twig 1.26
-    $twig->getExtension('core')->setEscaper('csv', 'csv_escaper');
-
-When called by Twig, the callable receives the Twig environment instance, the
-string to escape, and the charset.
-
-.. note::
-
-    Built-in escapers cannot be overridden mainly because they should be
-    considered as the final implementation and also for better performance.
-
-Arguments
----------
-
-* ``strategy``: The escaping strategy
-* ``charset``:  The string charset
-
-.. _`htmlspecialchars`: https://secure.php.net/htmlspecialchars
diff --git a/vendor/twig/twig/doc/filters/filter.rst b/vendor/twig/twig/doc/filters/filter.rst
deleted file mode 100644
index e9f968290f08be9c30621e779f106b40a57f0faf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/filter.rst
+++ /dev/null
@@ -1,58 +0,0 @@
-``filter``
-==========
-
-.. versionadded:: 1.41
-    The ``filter`` filter was added in Twig 1.41 and 2.10.
-
-The ``filter`` filter filters elements of a sequence or a mapping using an arrow
-function. The arrow function receives the value of the sequence or mapping:
-
-.. code-block:: twig
-
-    {% set sizes = [34, 36, 38, 40, 42] %}
-
-    {{ sizes|filter(v => v > 38)|join(', ') }}
-    {# output 40, 42 #}
-
-Combined with the ``for`` tag, it allows to filter the items to iterate over:
-
-.. code-block:: twig
-
-    {% for v in sizes|filter(v => v > 38) -%}
-        {{ v }}
-    {% endfor %}
-    {# output 40 42 #}
-
-It also works with mappings:
-
-.. code-block:: twig
-
-    {% set sizes = {
-        xs: 34,
-        s:  36,
-        m:  38,
-        l:  40,
-        xl: 42,
-    } %}
-
-    {% for k, v in sizes|filter(v => v > 38) -%}
-        {{ k }} = {{ v }}
-    {% endfor %}
-    {# output l = 40 xl = 42 #}
-
-The arrow function also receives the key as a second argument:
-
-.. code-block:: twig
-
-    {% for k, v in sizes|filter((v, k) => v > 38 and k != "xl") -%}
-        {{ k }} = {{ v }}
-    {% endfor %}
-    {# output l = 40 #}
-
-Note that the arrow function has access to the current context.
-
-Arguments
----------
-
-* ``array``: The sequence or mapping
-* ``arrow``: The arrow function
diff --git a/vendor/twig/twig/doc/filters/first.rst b/vendor/twig/twig/doc/filters/first.rst
deleted file mode 100644
index f87fe5942782e302d9a0c51dae291e5be00cf7fe..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/first.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-``first``
-=========
-
-.. versionadded:: 1.12.2
-    The ``first`` filter was added in Twig 1.12.2.
-
-The ``first`` filter returns the first "element" of a sequence, a mapping, or
-a string:
-
-.. code-block:: twig
-
-    {{ [1, 2, 3, 4]|first }}
-    {# outputs 1 #}
-
-    {{ { a: 1, b: 2, c: 3, d: 4 }|first }}
-    {# outputs 1 #}
-
-    {{ '1234'|first }}
-    {# outputs 1 #}
-
-.. note::
-
-    It also works with objects implementing the `Traversable`_ interface.
-
-.. _`Traversable`: https://secure.php.net/manual/en/class.traversable.php
diff --git a/vendor/twig/twig/doc/filters/format.rst b/vendor/twig/twig/doc/filters/format.rst
deleted file mode 100644
index c0c96ee3f5405bf340d312f644f8f1218ce58d2a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/format.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-``format``
-==========
-
-The ``format`` filter formats a given string by replacing the placeholders
-(placeholders follows the `sprintf`_ notation):
-
-.. code-block:: twig
-
-    {{ "I like %s and %s."|format(foo, "bar") }}
-
-    {# outputs I like foo and bar
-       if the foo parameter equals to the foo string. #}
-
-.. _`sprintf`: https://secure.php.net/sprintf
-
-.. seealso:: :doc:`replace<replace>`
diff --git a/vendor/twig/twig/doc/filters/index.rst b/vendor/twig/twig/doc/filters/index.rst
deleted file mode 100644
index 8524fc03c49473cd70c580220944415e736754bb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/index.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-Filters
-=======
-
-.. toctree::
-    :maxdepth: 1
-
-    abs
-    batch
-    capitalize
-    convert_encoding
-    date
-    date_modify
-    default
-    escape
-    filter
-    first
-    format
-    join
-    json_encode
-    keys
-    last
-    length
-    lower
-    map
-    merge
-    nl2br
-    number_format
-    raw
-    reduce
-    replace
-    reverse
-    round
-    slice
-    sort
-    spaceless
-    split
-    striptags
-    title
-    trim
-    upper
-    url_encode
diff --git a/vendor/twig/twig/doc/filters/join.rst b/vendor/twig/twig/doc/filters/join.rst
deleted file mode 100644
index 3f9079eab89edef5ed4d2ef79d04398c5b96b74a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/join.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-``join``
-========
-
-.. versionadded:: 1.37 and 2.6.1
-    The ``and`` argument was added in Twig 1.37 and 2.6.1.
-
-The ``join`` filter returns a string which is the concatenation of the items
-of a sequence:
-
-.. code-block:: twig
-
-    {{ [1, 2, 3]|join }}
-    {# returns 123 #}
-
-The separator between elements is an empty string per default, but you can
-define it with the optional first parameter:
-
-.. code-block:: twig
-
-    {{ [1, 2, 3]|join('|') }}
-    {# outputs 1|2|3 #}
-
-A second parameter can also be provided that will be the separator used between
-the last two items of the sequence:
-
-.. code-block:: twig
-
-    {{ [1, 2, 3]|join(', ', ' and ') }}
-    {# outputs 1, 2 and 3 #}
-
-Arguments
----------
-
-* ``glue``: The separator
-* ``and``: The separator for the last pair of input items
diff --git a/vendor/twig/twig/doc/filters/json_encode.rst b/vendor/twig/twig/doc/filters/json_encode.rst
deleted file mode 100644
index 434e2f17832511664395a5e7a2134a572646993f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/json_encode.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-``json_encode``
-===============
-
-The ``json_encode`` filter returns the JSON representation of a value:
-
-.. code-block:: twig
-
-    {{ data|json_encode() }}
-
-.. note::
-
-    Internally, Twig uses the PHP `json_encode`_ function.
-
-Arguments
----------
-
-* ``options``: A bitmask of `json_encode options`_: ``{{
-  data|json_encode(constant('JSON_PRETTY_PRINT')) }}``.
-  Combine constants using :ref:`bitwise operators<template_logic>`:
-  ``{{ data|json_encode(constant('JSON_PRETTY_PRINT') b-or constant('JSON_HEX_QUOT')) }}``
-
-.. _`json_encode`: https://secure.php.net/json_encode
-.. _`json_encode options`: https://secure.php.net/manual/en/json.constants.php
diff --git a/vendor/twig/twig/doc/filters/keys.rst b/vendor/twig/twig/doc/filters/keys.rst
deleted file mode 100644
index 586094717203ca43b08da819d7e61b0337162d2e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/keys.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-``keys``
-========
-
-The ``keys`` filter returns the keys of an array. It is useful when you want to
-iterate over the keys of an array:
-
-.. code-block:: twig
-
-    {% for key in array|keys %}
-        ...
-    {% endfor %}
diff --git a/vendor/twig/twig/doc/filters/last.rst b/vendor/twig/twig/doc/filters/last.rst
deleted file mode 100644
index 0eb2b84ffc399e57376935b6748236ead2a9d430..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/last.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-``last``
-========
-
-.. versionadded:: 1.12.2
-    The ``last`` filter was added in Twig 1.12.2.
-
-The ``last`` filter returns the last "element" of a sequence, a mapping, or
-a string:
-
-.. code-block:: twig
-
-    {{ [1, 2, 3, 4]|last }}
-    {# outputs 4 #}
-
-    {{ { a: 1, b: 2, c: 3, d: 4 }|last }}
-    {# outputs 4 #}
-
-    {{ '1234'|last }}
-    {# outputs 4 #}
-
-.. note::
-
-    It also works with objects implementing the `Traversable`_ interface.
-
-.. _`Traversable`: https://secure.php.net/manual/en/class.traversable.php
diff --git a/vendor/twig/twig/doc/filters/length.rst b/vendor/twig/twig/doc/filters/length.rst
deleted file mode 100644
index 8b504ed258fbad507286945dcd5aa60750b06a16..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/length.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-``length``
-==========
-
-.. versionadded:: 1.33
-
-    Support for the ``__toString()`` magic method has been added in Twig 1.33.
-
-The ``length`` filter returns the number of items of a sequence or mapping, or
-the length of a string.
-
-For objects that implement the ``Countable`` interface, ``length`` will use the
-return value of the ``count()`` method.
-
-For objects that implement the ``__toString()`` magic method (and not ``Countable``),
-it will return the length of the string provided by that method.
-
-For objects that implement the ``IteratorAggregate`` interface, ``length`` will use the return value of the ``iterator_count()`` method.
-
-.. code-block:: twig
-
-    {% if users|length > 10 %}
-        ...
-    {% endif %}
diff --git a/vendor/twig/twig/doc/filters/lower.rst b/vendor/twig/twig/doc/filters/lower.rst
deleted file mode 100644
index c0a0e0cddf4eb2ba87ba2b8eb7e54fdb28092e87..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/lower.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-``lower``
-=========
-
-The ``lower`` filter converts a value to lowercase:
-
-.. code-block:: twig
-
-    {{ 'WELCOME'|lower }}
-
-    {# outputs 'welcome' #}
diff --git a/vendor/twig/twig/doc/filters/map.rst b/vendor/twig/twig/doc/filters/map.rst
deleted file mode 100644
index e983e33b4846abc85c85955783871070971e435b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/map.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-``map``
-=======
-
-.. versionadded:: 1.41
-    The ``map`` filter was added in Twig 1.41 and 2.10.
-
-The ``map`` filter applies an arrow function to the elements of a sequence or a
-mapping. The arrow function receives the value of the sequence or mapping:
-
-.. code-block:: twig
-
-    {% set people = [
-        {first: "Bob", last: "Smith"},
-        {first: "Alice", last: "Dupond"},
-    ] %}
-
-    {{ people|map(p => "#{p.first} #{p.last}")|join(', ') }}
-    {# outputs Bob Smith, Alice Dupond #}
-
-The arrow function also receives the key as a second argument:
-
-.. code-block:: twig
-
-    {% set people = {
-        "Bob": "Smith",
-        "Alice": "Dupond",
-    } %}
-
-    {{ people|map((last, first) => "#{first} #{last}")|join(', ') }}
-    {# outputs Bob Smith, Alice Dupond #}
-
-Note that the arrow function has access to the current context.
-
-Arguments
----------
-
-* ``arrow``: The arrow function
diff --git a/vendor/twig/twig/doc/filters/merge.rst b/vendor/twig/twig/doc/filters/merge.rst
deleted file mode 100644
index e26e51c242bf9783ecf7140fbd75ef9f9a197654..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/merge.rst
+++ /dev/null
@@ -1,48 +0,0 @@
-``merge``
-=========
-
-The ``merge`` filter merges an array with another array:
-
-.. code-block:: twig
-
-    {% set values = [1, 2] %}
-
-    {% set values = values|merge(['apple', 'orange']) %}
-
-    {# values now contains [1, 2, 'apple', 'orange'] #}
-
-New values are added at the end of the existing ones.
-
-The ``merge`` filter also works on hashes:
-
-.. code-block:: twig
-
-    {% set items = { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'unknown' } %}
-
-    {% set items = items|merge({ 'peugeot': 'car', 'renault': 'car' }) %}
-
-    {# items now contains { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'car', 'renault': 'car' } #}
-
-For hashes, the merging process occurs on the keys: if the key does not
-already exist, it is added but if the key already exists, its value is
-overridden.
-
-.. tip::
-
-    If you want to ensure that some values are defined in an array (by given
-    default values), reverse the two elements in the call:
-
-    .. code-block:: twig
-
-        {% set items = { 'apple': 'fruit', 'orange': 'fruit' } %}
-
-        {% set items = { 'apple': 'unknown' }|merge(items) %}
-
-        {# items now contains { 'apple': 'fruit', 'orange': 'fruit' } #}
-        
-.. note::
-
-    Internally, Twig uses the PHP `array_merge`_ function. It supports
-    Traversable objects by transforming those to arrays.
-
-.. _`array_merge`: https://secure.php.net/array_merge
diff --git a/vendor/twig/twig/doc/filters/nl2br.rst b/vendor/twig/twig/doc/filters/nl2br.rst
deleted file mode 100644
index 3ad8d856bb8c31a87edbd38ac8da17c8a686cb98..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/nl2br.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-``nl2br``
-=========
-
-.. versionadded:: 1.5
-    The ``nl2br`` filter was added in Twig 1.5.
-
-The ``nl2br`` filter inserts HTML line breaks before all newlines in a string:
-
-.. code-block:: twig
-
-    {{ "I like Twig.\nYou will like it too."|nl2br }}
-    {# outputs
-
-        I like Twig.<br />
-        You will like it too.
-
-    #}
-
-.. note::
-
-    The ``nl2br`` filter pre-escapes the input before applying the
-    transformation.
diff --git a/vendor/twig/twig/doc/filters/number_format.rst b/vendor/twig/twig/doc/filters/number_format.rst
deleted file mode 100644
index 83366da98da76088f6f9b4f5b7e103d1363c1de9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/number_format.rst
+++ /dev/null
@@ -1,56 +0,0 @@
-``number_format``
-=================
-
-.. versionadded:: 1.5
-    The ``number_format`` filter was added in Twig 1.5
-
-The ``number_format`` filter formats numbers.  It is a wrapper around PHP's
-`number_format`_ function:
-
-.. code-block:: twig
-
-    {{ 200.35|number_format }}
-
-You can control the number of decimal places, decimal point, and thousands
-separator using the additional arguments:
-
-.. code-block:: twig
-
-    {{ 9800.333|number_format(2, '.', ',') }}
-
-To format negative numbers, wrap the number with parentheses (needed because of
-Twig's :ref:`precedence of operators <twig-expressions>`:
-
-.. code-block:: twig
-
-    {{ -9800.333|number_format(2, '.', ',') }} {# outputs : -9 #}
-    {{ (-9800.333)|number_format(2, '.', ',') }} {# outputs : -9,800.33 #}
-
-If no formatting options are provided then Twig will use the default formatting
-options of:
-
-* 0 decimal places.
-* ``.`` as the decimal point.
-* ``,`` as the thousands separator.
-
-These defaults can be changed through the core extension:
-
-.. code-block:: php
-
-    $twig = new \Twig\Environment($loader);
-    $twig->getExtension('\Twig\Extension\CoreExtension')->setNumberFormat(3, '.', ',');
-
-    // before Twig 1.26
-    $twig->getExtension('core')->setNumberFormat(3, '.', ',');
-
-The defaults set for ``number_format`` can be over-ridden upon each call using the
-additional parameters.
-
-Arguments
----------
-
-* ``decimal``:       The number of decimal points to display
-* ``decimal_point``: The character(s) to use for the decimal point
-* ``thousand_sep``:   The character(s) to use for the thousands separator
-
-.. _`number_format`: https://secure.php.net/number_format
diff --git a/vendor/twig/twig/doc/filters/raw.rst b/vendor/twig/twig/doc/filters/raw.rst
deleted file mode 100644
index ad74a52aee10cc56566f1d216b3a3b6172c2d8a9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/raw.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-``raw``
-=======
-
-The ``raw`` filter marks the value as being "safe", which means that in an
-environment with automatic escaping enabled this variable will not be escaped
-if ``raw`` is the last filter applied to it:
-
-.. code-block:: twig
-
-    {% autoescape %}
-        {{ var|raw }} {# var won't be escaped #}
-    {% endautoescape %}
-
-.. note::
-
-    **This note only applies to Twig before versions 1.39 and 2.8**.
-
-    Be careful when using the ``raw`` filter inside expressions:
-
-    .. code-block:: twig
-
-        {% autoescape %}
-            {% set hello = '<strong>Hello</strong>' %}
-            {% set hola = '<strong>Hola</strong>' %}
-
-            {{ false ? '<strong>Hola</strong>' : hello|raw }}
-            does not render the same as
-            {{ false ? hola : hello|raw }}
-            but renders the same as
-            {{ (false ? hola : hello)|raw }}
-        {% endautoescape %}
-
-    The first ternary statement is not escaped: ``hello`` is marked as being
-    safe and Twig does not escape static values (see
-    :doc:`escape<../tags/autoescape>`). In the second ternary statement, even
-    if ``hello`` is marked as safe, ``hola`` remains unsafe and so is the whole
-    expression. The third ternary statement is marked as safe and the result is
-    not escaped.
diff --git a/vendor/twig/twig/doc/filters/reduce.rst b/vendor/twig/twig/doc/filters/reduce.rst
deleted file mode 100644
index af6164a95f72d3a0c1fd4a0d8f28233dbdf6e450..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/reduce.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-``reduce``
-==========
-
-.. versionadded:: 1.41
-    The ``reduce`` filter was added in Twig 1.41 and 2.10.
-
-The ``reduce`` filter iteratively reduces a sequence or a mapping to a single
-value using an arrow function, so as to reduce it to a single value. The arrow
-function receives the return value of the previous iteration and the current
-value of the sequence or mapping:
-
-.. code-block:: twig
-
-    {% set numbers = [1, 2, 3] %}
-
-    {{ numbers|reduce((carry, v) => carry + v) }}
-    {# output 6 #}
-
-The ``reduce`` filter takes an ``initial`` value as a second argument:
-
-.. code-block:: twig
-
-    {{ numbers|reduce((carry, v) => carry + v, 10) }}
-    {# output 16 #}
-
-Note that the arrow function has access to the current context.
-
-Arguments
----------
-
-* ``arrow``: The arrow function
-* ``initial``: The initial value
diff --git a/vendor/twig/twig/doc/filters/replace.rst b/vendor/twig/twig/doc/filters/replace.rst
deleted file mode 100644
index ceb6c0097155022c5ff992610167168b24988f0d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/replace.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-``replace``
-===========
-
-The ``replace`` filter formats a given string by replacing the placeholders
-(placeholders are free-form):
-
-.. code-block:: twig
-
-    {{ "I like %this% and %that%."|replace({'%this%': foo, '%that%': "bar"}) }}
-
-    {# outputs I like foo and bar
-       if the foo parameter equals to the foo string. #}
-
-    {# using % as a delimiter is purely conventional and optional #}
-
-    {{ "I like this and --that--."|replace({'this': foo, '--that--': "bar"}) }}
-
-    {# outputs I like foo and bar #}
-
-Arguments
----------
-
-* ``from``: The placeholder values
-
-.. seealso:: :doc:`format<format>`
diff --git a/vendor/twig/twig/doc/filters/reverse.rst b/vendor/twig/twig/doc/filters/reverse.rst
deleted file mode 100644
index b2218c99d58ac602eb0ddfe92537a35001f1de3e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/reverse.rst
+++ /dev/null
@@ -1,47 +0,0 @@
-``reverse``
-===========
-
-.. versionadded:: 1.6
-    Support for strings has been added in Twig 1.6.
-
-The ``reverse`` filter reverses a sequence, a mapping, or a string:
-
-.. code-block:: twig
-
-    {% for user in users|reverse %}
-        ...
-    {% endfor %}
-
-    {{ '1234'|reverse }}
-
-    {# outputs 4321 #}
-
-.. tip::
-
-    For sequences and mappings, numeric keys are not preserved. To reverse
-    them as well, pass ``true`` as an argument to the ``reverse`` filter:
-
-    .. code-block:: twig
-
-        {% for key, value in {1: "a", 2: "b", 3: "c"}|reverse %}
-            {{ key }}: {{ value }}
-        {%- endfor %}
-
-        {# output: 0: c    1: b    2: a #}
-
-        {% for key, value in {1: "a", 2: "b", 3: "c"}|reverse(true) %}
-            {{ key }}: {{ value }}
-        {%- endfor %}
-
-        {# output: 3: c    2: b    1: a #}
-
-.. note::
-
-    It also works with objects implementing the `Traversable`_ interface.
-
-Arguments
----------
-
-* ``preserve_keys``: Preserve keys when reversing a mapping or a sequence.
-
-.. _`Traversable`: https://secure.php.net/Traversable
diff --git a/vendor/twig/twig/doc/filters/round.rst b/vendor/twig/twig/doc/filters/round.rst
deleted file mode 100644
index 590c71f02708b2cee64d3f9e75f4e62c41c0ed6a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/round.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-``round``
-=========
-
-.. versionadded:: 1.15.0
-    The ``round`` filter was added in Twig 1.15.0.
-
-The ``round`` filter rounds a number to a given precision:
-
-.. code-block:: twig
-
-    {{ 42.55|round }}
-    {# outputs 43 #}
-
-    {{ 42.55|round(1, 'floor') }}
-    {# outputs 42.5 #}
-
-The ``round`` filter takes two optional arguments; the first one specifies the
-precision (default is ``0``) and the second the rounding method (default is
-``common``):
-
-* ``common`` rounds either up or down (rounds the value up to precision decimal
-  places away from zero, when it is half way there -- making 1.5 into 2 and
-  -1.5 into -2);
-
-* ``ceil`` always rounds up;
-
-* ``floor`` always rounds down.
-
-.. note::
-
-    The ``//`` operator is equivalent to ``|round(0, 'floor')``.
-
-Arguments
----------
-
-* ``precision``: The rounding precision
-* ``method``: The rounding method
diff --git a/vendor/twig/twig/doc/filters/slice.rst b/vendor/twig/twig/doc/filters/slice.rst
deleted file mode 100644
index 9a3ca360477875dd44875c6c23c1fca623370740..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/slice.rst
+++ /dev/null
@@ -1,71 +0,0 @@
-``slice``
-===========
-
-.. versionadded:: 1.6
-    The ``slice`` filter was added in Twig 1.6.
-
-The ``slice`` filter extracts a slice of a sequence, a mapping, or a string:
-
-.. code-block:: twig
-
-    {% for i in [1, 2, 3, 4, 5]|slice(1, 2) %}
-        {# will iterate over 2 and 3 #}
-    {% endfor %}
-
-    {{ '12345'|slice(1, 2) }}
-
-    {# outputs 23 #}
-
-You can use any valid expression for both the start and the length:
-
-.. code-block:: twig
-
-    {% for i in [1, 2, 3, 4, 5]|slice(start, length) %}
-        {# ... #}
-    {% endfor %}
-
-As syntactic sugar, you can also use the ``[]`` notation:
-
-.. code-block:: twig
-
-    {% for i in [1, 2, 3, 4, 5][start:length] %}
-        {# ... #}
-    {% endfor %}
-
-    {{ '12345'[1:2] }} {# will display "23" #}
-
-    {# you can omit the first argument -- which is the same as 0 #}
-    {{ '12345'[:2] }} {# will display "12" #}
-
-    {# you can omit the last argument -- which will select everything till the end #}
-    {{ '12345'[2:] }} {# will display "345" #}
-
-The ``slice`` filter works as the `array_slice`_ PHP function for arrays and
-`mb_substr`_ for strings with a fallback to `substr`_.
-
-If the start is non-negative, the sequence will start at that start in the
-variable. If start is negative, the sequence will start that far from the end
-of the variable.
-
-If length is given and is positive, then the sequence will have up to that
-many elements in it. If the variable is shorter than the length, then only the
-available variable elements will be present. If length is given and is
-negative then the sequence will stop that many elements from the end of the
-variable. If it is omitted, then the sequence will have everything from offset
-up until the end of the variable.
-
-.. note::
-
-    It also works with objects implementing the `Traversable`_ interface.
-
-Arguments
----------
-
-* ``start``:         The start of the slice
-* ``length``:        The size of the slice
-* ``preserve_keys``: Whether to preserve key or not (when the input is an array)
-
-.. _`Traversable`: https://secure.php.net/manual/en/class.traversable.php
-.. _`array_slice`: https://secure.php.net/array_slice
-.. _`mb_substr` :  https://secure.php.net/mb-substr
-.. _`substr`:      https://secure.php.net/substr
diff --git a/vendor/twig/twig/doc/filters/sort.rst b/vendor/twig/twig/doc/filters/sort.rst
deleted file mode 100644
index f7c0329fe23e7bea3d46075a9000057e2eddaf68..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/sort.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-``sort``
-========
-
-The ``sort`` filter sorts an array:
-
-.. code-block:: twig
-
-    {% for user in users|sort %}
-        ...
-    {% endfor %}
-
-.. note::
-
-    Internally, Twig uses the PHP `asort`_ function to maintain index
-    association. It supports Traversable objects by transforming
-    those to arrays.
-
-.. _`asort`: https://secure.php.net/asort
diff --git a/vendor/twig/twig/doc/filters/spaceless.rst b/vendor/twig/twig/doc/filters/spaceless.rst
deleted file mode 100644
index bfc547eac66e16e50ac52e7253d466387b9d3edb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/spaceless.rst
+++ /dev/null
@@ -1,65 +0,0 @@
-``spaceless``
-=============
-
-.. versionadded:: 1.38
-
-    The ``spaceless`` filter was added in Twig 1.38.
-
-Use the ``spaceless`` filter to remove whitespace *between HTML tags*, not
-whitespace within HTML tags or whitespace in plain text:
-
-.. code-block:: twig
-
-    {{
-        "<div>
-            <strong>foo</strong>
-        </div>
-        "|spaceless }}
-
-    {# output will be <div><strong>foo</strong></div> #}
-
-You can combine ``spaceless`` with the ``apply`` tag to apply the transformation
-on large amounts of HTML:
-
-.. code-block:: twig
-
-    {% apply spaceless %}
-        <div>
-            <strong>foo</strong>
-        </div>
-    {% endapply %}
-
-    {# output will be <div><strong>foo</strong></div> #}
-
-.. note::
-
-    The ``apply`` tag was introduced in Twig 1.40; use the ``filter`` tag with
-    previous versions.
-
-This tag is not meant to "optimize" the size of the generated HTML content but
-merely to avoid extra whitespace between HTML tags to avoid browser rendering
-quirks under some circumstances.
-
-.. caution::
-
-    As the filter uses a regular expression behind the scenes, its performance
-    is directly related to the text size you are working on (remember that
-    filters are executed at runtime).
-
-.. tip::
-
-    If you want to optimize the size of the generated HTML content, gzip
-    compress the output instead.
-
-.. tip::
-
-    If you want to create a tag that actually removes all extra whitespace in
-    an HTML string, be warned that this is not as easy as it seems to be
-    (think of ``textarea`` or ``pre`` tags for instance). Using a third-party
-    library like Tidy is probably a better idea.
-
-.. tip::
-
-    For more information on whitespace control, read the
-    :ref:`dedicated section <templates-whitespace-control>` of the documentation and learn how
-    you can also use the whitespace control modifier on your tags.
diff --git a/vendor/twig/twig/doc/filters/split.rst b/vendor/twig/twig/doc/filters/split.rst
deleted file mode 100644
index 92eedff269b9ed6b721c6ee8ef135f5e876807b7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/split.rst
+++ /dev/null
@@ -1,53 +0,0 @@
-``split``
-=========
-
-.. versionadded:: 1.10.3
-    The ``split`` filter was added in Twig 1.10.3.
-
-The ``split`` filter splits a string by the given delimiter and returns a list
-of strings:
-
-.. code-block:: twig
-
-    {% set foo = "one,two,three"|split(',') %}
-    {# foo contains ['one', 'two', 'three'] #}
-
-You can also pass a ``limit`` argument:
-
-* If ``limit`` is positive, the returned array will contain a maximum of
-  limit elements with the last element containing the rest of string;
-
-* If ``limit`` is negative, all components except the last -limit are
-  returned;
-
-* If ``limit`` is zero, then this is treated as 1.
-
-.. code-block:: twig
-
-    {% set foo = "one,two,three,four,five"|split(',', 3) %}
-    {# foo contains ['one', 'two', 'three,four,five'] #}
-
-If the ``delimiter`` is an empty string, then value will be split by equal
-chunks. Length is set by the ``limit`` argument (one character by default).
-
-.. code-block:: twig
-
-    {% set foo = "123"|split('') %}
-    {# foo contains ['1', '2', '3'] #}
-
-    {% set bar = "aabbcc"|split('', 2) %}
-    {# bar contains ['aa', 'bb', 'cc'] #}
-
-.. note::
-
-    Internally, Twig uses the PHP `explode`_ or `str_split`_ (if delimiter is
-    empty) functions for string splitting.
-
-Arguments
----------
-
-* ``delimiter``: The delimiter
-* ``limit``:     The limit argument
-
-.. _`explode`:   https://secure.php.net/explode
-.. _`str_split`: https://secure.php.net/str_split
diff --git a/vendor/twig/twig/doc/filters/striptags.rst b/vendor/twig/twig/doc/filters/striptags.rst
deleted file mode 100644
index 62b2a7b3c13662109ba75f95538e45e03ec3ff52..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/striptags.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-``striptags``
-=============
-
-The ``striptags`` filter strips SGML/XML tags and replace adjacent whitespace
-by one space:
-
-.. code-block:: twig
-
-    {{ some_html|striptags }}
-
-You can also provide tags which should not be stripped:
-
-.. code-block:: twig
-
-    {{ some_html|striptags('<br><p>') }}
-
-In this example, the ``<br/>``, ``<br>``, ``<p>``, and ``</p>`` tags won't be
-removed from the string.
-
-.. note::
-
-    Internally, Twig uses the PHP `strip_tags`_ function.
-
-Arguments
----------
-
-* ``allowable_tags``: Tags which should not be stripped
-
-.. _`strip_tags`: https://secure.php.net/strip_tags
diff --git a/vendor/twig/twig/doc/filters/title.rst b/vendor/twig/twig/doc/filters/title.rst
deleted file mode 100644
index dd0311ca3dcd882e8e79dd48c5c0d1e358e86cbd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/title.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-``title``
-=========
-
-The ``title`` filter returns a titlecased version of the value. Words will
-start with uppercase letters, all remaining characters are lowercase:
-
-.. code-block:: twig
-
-    {{ 'my first car'|title }}
-
-    {# outputs 'My First Car' #}
diff --git a/vendor/twig/twig/doc/filters/trim.rst b/vendor/twig/twig/doc/filters/trim.rst
deleted file mode 100644
index 96ce403d3bdb950d7987b5cc30689fad8e9ed811..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/trim.rst
+++ /dev/null
@@ -1,45 +0,0 @@
-``trim``
-========
-
-.. versionadded:: 1.32
-    The ``side`` argument was added in Twig 1.32.
-
-.. versionadded:: 1.6.2
-    The ``trim`` filter was added in Twig 1.6.2.
-
-The ``trim`` filter strips whitespace (or other characters) from the beginning
-and end of a string:
-
-.. code-block:: twig
-
-    {{ '  I like Twig.  '|trim }}
-
-    {# outputs 'I like Twig.' #}
-
-    {{ '  I like Twig.'|trim('.') }}
-
-    {# outputs '  I like Twig' #}
-
-    {{ '  I like Twig.  '|trim(side='left') }}
-
-    {# outputs 'I like Twig.  ' #}
-
-    {{ '  I like Twig.  '|trim(' ', 'right') }}
-
-    {# outputs '  I like Twig.' #}
-
-.. note::
-
-    Internally, Twig uses the PHP `trim`_, `ltrim`_, and `rtrim`_ functions.
-
-Arguments
----------
-
-* ``character_mask``: The characters to strip
-
-* ``side``: The default is to strip from the left and the right (`both`) sides, but `left`
-  and `right` will strip from either the left side or right side only
-
-.. _`trim`: https://secure.php.net/trim
-.. _`ltrim`: https://secure.php.net/ltrim
-.. _`rtrim`: https://secure.php.net/rtrim
diff --git a/vendor/twig/twig/doc/filters/upper.rst b/vendor/twig/twig/doc/filters/upper.rst
deleted file mode 100644
index 01c9fbb0b53691a657fa4c3c0b34d8abf1587118..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/upper.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-``upper``
-=========
-
-The ``upper`` filter converts a value to uppercase:
-
-.. code-block:: twig
-
-    {{ 'welcome'|upper }}
-
-    {# outputs 'WELCOME' #}
diff --git a/vendor/twig/twig/doc/filters/url_encode.rst b/vendor/twig/twig/doc/filters/url_encode.rst
deleted file mode 100644
index df2c1f07b6793e2b9b479f452d738862bac8dbfd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/filters/url_encode.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-``url_encode``
-==============
-
-.. versionadded:: 1.12.3
-    Support for encoding an array as query string was added in Twig 1.12.3.
-
-.. versionadded:: 1.16.0
-    The ``raw`` argument was removed in Twig 1.16.0. Twig now always encodes
-    according to RFC 3986.
-
-The ``url_encode`` filter percent encodes a given string as URL segment
-or an array as query string:
-
-.. code-block:: twig
-
-    {{ "path-seg*ment"|url_encode }}
-    {# outputs "path-seg%2Ament" #}
-
-    {{ "string with spaces"|url_encode }}
-    {# outputs "string%20with%20spaces" #}
-
-    {{ {'param': 'value', 'foo': 'bar'}|url_encode }}
-    {# outputs "param=value&foo=bar" #}
-
-.. note::
-
-    Internally, Twig uses the PHP `urlencode`_ (or `rawurlencode`_ if you pass
-    ``true`` as the first parameter) or the `http_build_query`_ function. Note
-    that as of Twig 1.16.0, ``urlencode`` **always** uses ``rawurlencode`` (the
-    ``raw`` argument was removed.)
-
-.. _`urlencode`:        https://secure.php.net/urlencode
-.. _`rawurlencode`:     https://secure.php.net/rawurlencode
-.. _`http_build_query`: https://secure.php.net/http_build_query
diff --git a/vendor/twig/twig/doc/functions/attribute.rst b/vendor/twig/twig/doc/functions/attribute.rst
deleted file mode 100644
index 99c08d8bc9be254d398b7f65110f6c8a0ee05ffc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/attribute.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-``attribute``
-=============
-
-.. versionadded:: 1.2
-    The ``attribute`` function was added in Twig 1.2.
-
-The ``attribute`` function can be used to access a "dynamic" attribute of a
-variable:
-
-.. code-block:: twig
-
-    {{ attribute(object, method) }}
-    {{ attribute(object, method, arguments) }}
-    {{ attribute(array, item) }}
-
-In addition, the ``defined`` test can check for the existence of a dynamic
-attribute:
-
-.. code-block:: twig
-
-    {{ attribute(object, method) is defined ? 'Method exists' : 'Method does not exist' }}
-
-.. note::
-
-    The resolution algorithm is the same as the one used for the ``.``
-    notation, except that the item can be any valid expression.
diff --git a/vendor/twig/twig/doc/functions/block.rst b/vendor/twig/twig/doc/functions/block.rst
deleted file mode 100644
index 927fc321fff08740c181b2ca1b5ea9771bc0731f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/block.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-``block``
-=========
-
-.. versionadded:: 1.28
-    Using ``block`` with the ``defined`` test was added in Twig 1.28.
-
-.. versionadded:: 1.28
-    Support for the template argument was added in Twig 1.28.
-
-When a template uses inheritance and if you want to print a block multiple
-times, use the ``block`` function:
-
-.. code-block:: twig
-
-    <title>{% block title %}{% endblock %}</title>
-
-    <h1>{{ block('title') }}</h1>
-
-    {% block body %}{% endblock %}
-
-The ``block`` function can also be used to display one block from another
-template:
-
-.. code-block:: twig
-
-    {{ block("title", "common_blocks.twig") }}
-
-Use the ``defined`` test to check if a block exists in the context of the
-current template:
-
-.. code-block:: twig
-
-    {% if block("footer") is defined %}
-        ...
-    {% endif %}
-
-    {% if block("footer", "common_blocks.twig") is defined %}
-        ...
-    {% endif %}
-
-.. seealso:: :doc:`extends<../tags/extends>`, :doc:`parent<../functions/parent>`
diff --git a/vendor/twig/twig/doc/functions/constant.rst b/vendor/twig/twig/doc/functions/constant.rst
deleted file mode 100644
index bb19858c223e04bbef44a1d4a7d453a970ff8101..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/constant.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-``constant``
-============
-
-.. versionadded:: 1.12.1
-    constant now accepts object instances as the second argument.
-
-.. versionadded:: 1.28
-    Using ``constant`` with the ``defined`` test was added in Twig 1.28.
-
-``constant`` returns the constant value for a given string:
-
-.. code-block:: twig
-
-    {{ some_date|date(constant('DATE_W3C')) }}
-    {{ constant('Namespace\\Classname::CONSTANT_NAME') }}
-
-As of 1.12.1 you can read constants from object instances as well:
-
-.. code-block:: twig
-
-    {{ constant('RSS', date) }}
-
-Use the ``defined`` test to check if a constant is defined:
-
-.. code-block:: twig
-
-    {% if constant('SOME_CONST') is defined %}
-        ...
-    {% endif %}
diff --git a/vendor/twig/twig/doc/functions/cycle.rst b/vendor/twig/twig/doc/functions/cycle.rst
deleted file mode 100644
index 84cff6a1d5a2d0e3794938389bac92880da54dae..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/cycle.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-``cycle``
-=========
-
-The ``cycle`` function cycles on an array of values:
-
-.. code-block:: twig
-
-    {% set start_year = date() | date('Y') %}
-    {% set end_year = start_year + 5 %}
-
-    {% for year in start_year..end_year %}
-        {{ cycle(['odd', 'even'], loop.index0) }}
-    {% endfor %}
-
-The array can contain any number of values:
-
-.. code-block:: twig
-
-    {% set fruits = ['apple', 'orange', 'citrus'] %}
-
-    {% for i in 0..10 %}
-        {{ cycle(fruits, i) }}
-    {% endfor %}
-
-Arguments
----------
-
-* ``position``: The cycle position
diff --git a/vendor/twig/twig/doc/functions/date.rst b/vendor/twig/twig/doc/functions/date.rst
deleted file mode 100644
index b88f66935c30d13f2df7c960cb03b75b5a2e54ce..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/date.rst
+++ /dev/null
@@ -1,55 +0,0 @@
-``date``
-========
-
-.. versionadded:: 1.6
-    The date function has been added in Twig 1.6.
-
-.. versionadded:: 1.6.1
-    The default timezone support has been added in Twig 1.6.1.
-
-Converts an argument to a date to allow date comparison:
-
-.. code-block:: twig
-
-    {% if date(user.created_at) < date('-2days') %}
-        {# do something #}
-    {% endif %}
-
-The argument must be in one of PHP’s supported `date and time formats`_.
-
-You can pass a timezone as the second argument:
-
-.. code-block:: twig
-
-    {% if date(user.created_at) < date('-2days', 'Europe/Paris') %}
-        {# do something #}
-    {% endif %}
-
-If no argument is passed, the function returns the current date:
-
-.. code-block:: twig
-
-    {% if date(user.created_at) < date() %}
-        {# always! #}
-    {% endif %}
-
-.. note::
-
-    You can set the default timezone globally by calling ``setTimezone()`` on
-    the ``core`` extension instance:
-
-    .. code-block:: php
-
-        $twig = new \Twig\Environment($loader);
-        $twig->getExtension('\Twig\Extension\CoreExtension')->setTimezone('Europe/Paris');
-
-        // before Twig 1.26
-        $twig->getExtension('core')->setTimezone('Europe/Paris');
-
-Arguments
----------
-
-* ``date``:     The date
-* ``timezone``: The timezone
-
-.. _`date and time formats`: https://secure.php.net/manual/en/datetime.formats.php
diff --git a/vendor/twig/twig/doc/functions/dump.rst b/vendor/twig/twig/doc/functions/dump.rst
deleted file mode 100644
index b7c01e7e3418aea6813abeb1efa43b2e57f36856..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/dump.rst
+++ /dev/null
@@ -1,69 +0,0 @@
-``dump``
-========
-
-.. versionadded:: 1.5
-    The ``dump`` function was added in Twig 1.5.
-
-The ``dump`` function dumps information about a template variable. This is
-mostly useful to debug a template that does not behave as expected by
-introspecting its variables:
-
-.. code-block:: twig
-
-    {{ dump(user) }}
-
-.. note::
-
-    The ``dump`` function is not available by default. You must add the
-    ``\Twig\Extension\DebugExtension`` extension explicitly when creating your Twig
-    environment::
-
-        $twig = new \Twig\Environment($loader, [
-            'debug' => true,
-            // ...
-        ]);
-        $twig->addExtension(new \Twig\Extension\DebugExtension());
-
-    Even when enabled, the ``dump`` function won't display anything if the
-    ``debug`` option on the environment is not enabled (to avoid leaking debug
-    information on a production server).
-
-In an HTML context, wrap the output with a ``pre`` tag to make it easier to
-read:
-
-.. code-block:: twig
-
-    <pre>
-        {{ dump(user) }}
-    </pre>
-
-.. tip::
-
-    Using a ``pre`` tag is not needed when `XDebug`_ is enabled and
-    ``html_errors`` is ``on``; as a bonus, the output is also nicer with
-    XDebug enabled.
-
-You can debug several variables by passing them as additional arguments:
-
-.. code-block:: twig
-
-    {{ dump(user, categories) }}
-
-If you don't pass any value, all variables from the current context are
-dumped:
-
-.. code-block:: twig
-
-    {{ dump() }}
-
-.. note::
-
-    Internally, Twig uses the PHP `var_dump`_ function.
-
-Arguments
----------
-
-* ``context``: The context to dump
-
-.. _`XDebug`:   https://xdebug.org/docs/display
-.. _`var_dump`: https://secure.php.net/var_dump
diff --git a/vendor/twig/twig/doc/functions/include.rst b/vendor/twig/twig/doc/functions/include.rst
deleted file mode 100644
index 8af4790b3cda47692242d008e58dc4b517d1bb3e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/include.rst
+++ /dev/null
@@ -1,84 +0,0 @@
-``include``
-===========
-
-.. versionadded:: 1.12
-    The ``include`` function was added in Twig 1.12.
-
-The ``include`` function returns the rendered content of a template:
-
-.. code-block:: twig
-
-    {{ include('template.html') }}
-    {{ include(some_var) }}
-
-Included templates have access to the variables of the active context.
-
-If you are using the filesystem loader, the templates are looked for in the
-paths defined by it.
-
-The context is passed by default to the template but you can also pass
-additional variables:
-
-.. code-block:: twig
-
-    {# template.html will have access to the variables from the current context and the additional ones provided #}
-    {{ include('template.html', {foo: 'bar'}) }}
-
-You can disable access to the context by setting ``with_context`` to
-``false``:
-
-.. code-block:: twig
-
-    {# only the foo variable will be accessible #}
-    {{ include('template.html', {foo: 'bar'}, with_context = false) }}
-
-.. code-block:: twig
-
-    {# no variables will be accessible #}
-    {{ include('template.html', with_context = false) }}
-
-And if the expression evaluates to a ``\Twig\Template`` or a
-``\Twig\TemplateWrapper`` instance, Twig will use it directly::
-
-    // {{ include(template) }}
-
-    // deprecated as of Twig 1.28
-    $template = $twig->loadTemplate('some_template.twig');
-
-    // as of Twig 1.28
-    $template = $twig->load('some_template.twig');
-
-    $twig->display('template.twig', ['template' => $template]);
-
-When you set the ``ignore_missing`` flag, Twig will return an empty string if
-the template does not exist:
-
-.. code-block:: twig
-
-    {{ include('sidebar.html', ignore_missing = true) }}
-
-You can also provide a list of templates that are checked for existence before
-inclusion. The first template that exists will be rendered:
-
-.. code-block:: twig
-
-    {{ include(['page_detailed.html', 'page.html']) }}
-
-If ``ignore_missing`` is set, it will fall back to rendering nothing if none
-of the templates exist, otherwise it will throw an exception.
-
-When including a template created by an end user, you should consider
-sandboxing it:
-
-.. code-block:: twig
-
-    {{ include('page.html', sandboxed = true) }}
-
-Arguments
----------
-
-* ``template``:       The template to render
-* ``variables``:      The variables to pass to the template
-* ``with_context``:   Whether to pass the current context variables or not
-* ``ignore_missing``: Whether to ignore missing templates or not
-* ``sandboxed``:      Whether to sandbox the template or not
diff --git a/vendor/twig/twig/doc/functions/index.rst b/vendor/twig/twig/doc/functions/index.rst
deleted file mode 100644
index 07214a76c1826d31ed01bad890185177e26a10f8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/index.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-Functions
-=========
-
-.. toctree::
-    :maxdepth: 1
-
-    attribute
-    block
-    constant
-    cycle
-    date
-    dump
-    include
-    max
-    min
-    parent
-    random
-    range
-    source
-    template_from_string
diff --git a/vendor/twig/twig/doc/functions/max.rst b/vendor/twig/twig/doc/functions/max.rst
deleted file mode 100644
index f271e666dce8887df2bc32d64060c50e28015eec..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/max.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-``max``
-=======
-
-.. versionadded:: 1.15
-    The ``max`` function was added in Twig 1.15.
-
-``max`` returns the biggest value of a sequence or a set of values:
-
-.. code-block:: twig
-
-    {{ max(1, 3, 2) }}
-    {{ max([1, 3, 2]) }}
-
-When called with a mapping, max ignores keys and only compares values:
-
-.. code-block:: twig
-
-    {{ max({2: "e", 1: "a", 3: "b", 5: "d", 4: "c"}) }}
-    {# returns "e" #}
-
diff --git a/vendor/twig/twig/doc/functions/min.rst b/vendor/twig/twig/doc/functions/min.rst
deleted file mode 100644
index 362b0f945d411d75e66c6b162ad660b1ecfbfd3d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/min.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-``min``
-=======
-
-.. versionadded:: 1.15
-    The ``min`` function was added in Twig 1.15.
-
-``min`` returns the lowest value of a sequence or a set of values:
-
-.. code-block:: twig
-
-    {{ min(1, 3, 2) }}
-    {{ min([1, 3, 2]) }}
-
-When called with a mapping, min ignores keys and only compares values:
-
-.. code-block:: twig
-
-    {{ min({2: "e", 3: "a", 1: "b", 5: "d", 4: "c"}) }}
-    {# returns "a" #}
-
diff --git a/vendor/twig/twig/doc/functions/parent.rst b/vendor/twig/twig/doc/functions/parent.rst
deleted file mode 100644
index 9beb5d21cf97233f5f41b08143033f2c998aecd2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/parent.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-``parent``
-==========
-
-When a template uses inheritance, it's possible to render the contents of the
-parent block when overriding a block by using the ``parent`` function:
-
-.. code-block:: twig
-
-    {% extends "base.html" %}
-
-    {% block sidebar %}
-        <h3>Table Of Contents</h3>
-        ...
-        {{ parent() }}
-    {% endblock %}
-
-The ``parent()`` call will return the content of the ``sidebar`` block as
-defined in the ``base.html`` template.
-
-.. seealso:: :doc:`extends<../tags/extends>`, :doc:`block<../functions/block>`, :doc:`block<../tags/block>`
diff --git a/vendor/twig/twig/doc/functions/random.rst b/vendor/twig/twig/doc/functions/random.rst
deleted file mode 100644
index 45e6fa797687eaa2e14de529ffa4526c1282f0ec..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/random.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-``random``
-==========
-
-.. versionadded:: 1.5
-    The ``random`` function was added in Twig 1.5.
-
-.. versionadded:: 1.6
-    String and integer handling was added in Twig 1.6.
-
-.. versionadded:: 1.38
-    The "max" argument was added in Twig 1.38.
-
-The ``random`` function returns a random value depending on the supplied
-parameter type:
-
-* a random item from a sequence;
-* a random character from a string;
-* a random integer between 0 and the integer parameter (inclusive).
-* a random integer between the integer parameter (when negative) and 0 (inclusive).
-* a random integer between the first integer and the second integer parameter (inclusive).
-
-.. code-block:: twig
-
-    {{ random(['apple', 'orange', 'citrus']) }} {# example output: orange #}
-    {{ random('ABC') }}                         {# example output: C #}
-    {{ random() }}                              {# example output: 15386094 (works as the native PHP mt_rand function) #}
-    {{ random(5) }}                             {# example output: 3 #}
-    {{ random(50, 100) }}                       {# example output: 63 #}
-
-Arguments
----------
-
-* ``values``: The values
-* ``max``: The max value when values is an integer
-
-.. _`mt_rand`: https://secure.php.net/mt_rand
diff --git a/vendor/twig/twig/doc/functions/range.rst b/vendor/twig/twig/doc/functions/range.rst
deleted file mode 100644
index a1f0e7c097d5ed4afe937a181cc95754406f5514..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/range.rst
+++ /dev/null
@@ -1,58 +0,0 @@
-``range``
-=========
-
-Returns a list containing an arithmetic progression of integers:
-
-.. code-block:: twig
-
-    {% for i in range(0, 3) %}
-        {{ i }},
-    {% endfor %}
-
-    {# outputs 0, 1, 2, 3, #}
-
-When step is given (as the third parameter), it specifies the increment (or
-decrement for negative values):
-
-.. code-block:: twig
-
-    {% for i in range(0, 6, 2) %}
-        {{ i }},
-    {% endfor %}
-
-    {# outputs 0, 2, 4, 6, #}
-
-.. note::
-
-    Note that if the start is greater than the end, ``range`` assumes a step of
-    ``-1``:
-
-    .. code-block:: twig
-
-        {% for i in range(3, 0) %}
-            {{ i }},
-        {% endfor %}
-
-        {# outputs 3, 2, 1, 0, #}
-
-The Twig built-in ``..`` operator is just syntactic sugar for the ``range``
-function (with a step of ``1``, or ``-1`` if the start is greater than the end):
-
-.. code-block:: twig
-
-    {% for i in 0..3 %}
-        {{ i }},
-    {% endfor %}
-
-.. tip::
-
-    The ``range`` function works as the native PHP `range`_ function.
-
-Arguments
----------
-
-* ``low``:  The first value of the sequence.
-* ``high``: The highest possible value of the sequence.
-* ``step``: The increment between elements of the sequence.
-
-.. _`range`: https://secure.php.net/range
diff --git a/vendor/twig/twig/doc/functions/source.rst b/vendor/twig/twig/doc/functions/source.rst
deleted file mode 100644
index 571fea27fc7b2546670f3b29737538202febbf80..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/source.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-``source``
-==========
-
-.. versionadded:: 1.15
-    The ``source`` function was added in Twig 1.15.
-
-.. versionadded:: 1.18.3
-    The ``ignore_missing`` flag was added in Twig 1.18.3.
-
-The ``source`` function returns the content of a template without rendering it:
-
-.. code-block:: twig
-
-    {{ source('template.html') }}
-    {{ source(some_var) }}
-
-When you set the ``ignore_missing`` flag, Twig will return an empty string if
-the template does not exist:
-
-.. code-block:: twig
-
-    {{ source('template.html', ignore_missing = true) }}
-
-The function uses the same template loaders as the ones used to include
-templates. So, if you are using the filesystem loader, the templates are looked
-for in the paths defined by it.
-
-Arguments
----------
-
-* ``name``: The name of the template to read
-* ``ignore_missing``: Whether to ignore missing templates or not
diff --git a/vendor/twig/twig/doc/functions/template_from_string.rst b/vendor/twig/twig/doc/functions/template_from_string.rst
deleted file mode 100644
index b26f5664bc995b3156314b6a71c2aa766558c02f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/functions/template_from_string.rst
+++ /dev/null
@@ -1,43 +0,0 @@
-``template_from_string``
-========================
-
-.. versionadded:: 1.11
-    The ``template_from_string`` function was added in Twig 1.11.
-
-.. versionadded:: 1.39
-    The name argument was added in Twig 1.39.
-
-The ``template_from_string`` function loads a template from a string:
-
-.. code-block:: twig
-
-    {{ include(template_from_string("Hello {{ name }}")) }}
-    {{ include(template_from_string(page.template)) }}
-
-To ease debugging, you can also give the template a name that will be part of
-any related error message:
-
-.. code-block:: twig
-
-    {{ include(template_from_string(page.template, "template for page " ~ page.name)) }}
-
-.. note::
-
-    The ``template_from_string`` function is not available by default. You
-    must add the ``\Twig\Extension\StringLoaderExtension`` extension explicitly when
-    creating your Twig environment::
-
-        $twig = new \Twig\Environment(...);
-        $twig->addExtension(new \Twig\Extension\StringLoaderExtension());
-
-.. note::
-
-    Even if you will probably always use the ``template_from_string`` function
-    with the ``include`` function, you can use it with any tag or function that
-    takes a template as an argument (like the ``embed`` or ``extends`` tags).
-
-Arguments
----------
-
-* ``template``: The template
-* ``name``: A name for the template
diff --git a/vendor/twig/twig/doc/index.rst b/vendor/twig/twig/doc/index.rst
deleted file mode 100644
index 358bd738ed0fe8cdd29ae846706ce8a5d3a5d574..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/index.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-Twig
-====
-
-.. toctree::
-    :maxdepth: 2
-
-    intro
-    installation
-    templates
-    api
-    advanced
-    internals
-    deprecated
-    recipes
-    coding_standards
-    tags/index
-    filters/index
-    functions/index
-    tests/index
diff --git a/vendor/twig/twig/doc/installation.rst b/vendor/twig/twig/doc/installation.rst
deleted file mode 100644
index 362d3177978fe9d20e71ff8c541d866d02bf5444..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/installation.rst
+++ /dev/null
@@ -1,73 +0,0 @@
-Installation
-============
-
-You have multiple ways to install Twig.
-
-Installing the Twig PHP package
--------------------------------
-
-Install `Composer`_ and run the following command:
-
-.. code-block:: bash
-
-    composer require "twig/twig:^1.0"
-
-Installing the C extension
---------------------------
-
-.. versionadded:: 1.4
-    The C extension was added in Twig 1.4.
-
-Twig comes with an **optional** C extension that improves the performance of the
-Twig runtime engine.
-
-Note that this extension does not replace the PHP code but only provides an
-optimized version of the ``\Twig\Template::getAttribute()`` method; you must
-still install the regular PHP code
-
-The C extension is only compatible and useful for **PHP5**.
-
-Install it like any other PHP extensions:
-
-.. code-block:: bash
-
-    cd ext/twig
-    phpize
-    ./configure
-    make
-    make install
-
-For Windows:
-
-1. Setup the build environment following the `PHP documentation`_
-2. Put Twig's C extension source code into ``C:\php-sdk\phpdev\vcXX\x86\php-source-directory\ext\twig``
-3. Use the ``configure --disable-all --enable-cli --enable-twig=shared`` command instead of step 14
-4. ``nmake``
-5. Copy the ``C:\php-sdk\phpdev\vcXX\x86\php-source-directory\Release_TS\php_twig.dll`` file to your PHP setup.
-
-.. tip::
-
-    For Windows ZendServer, ZTS is not enabled as mentioned in `Zend Server
-    FAQ`_.
-
-    You have to use ``configure --disable-all --disable-zts --enable-cli
-    --enable-twig=shared`` to be able to build the twig C extension for
-    ZendServer.
-
-    The built DLL will be available in
-    ``C:\\php-sdk\\phpdev\\vcXX\\x86\\php-source-directory\\Release``
-
-Finally, enable the extension in your ``php.ini`` configuration file:
-
-.. code-block:: ini
-
-    extension=twig.so # For Unix systems
-    extension=php_twig.dll # For Windows systems
-
-And from now on, Twig will automatically compile your templates to take
-advantage of the C extension.
-
-.. _`download page`:     https://github.com/twigphp/Twig/tags
-.. _`Composer`:          https://getcomposer.org/download/
-.. _`PHP documentation`: https://wiki.php.net/internals/windows/stepbystepbuild
-.. _`Zend Server FAQ`:   https://www.zend.com/en/products/server/faq#faqD6
diff --git a/vendor/twig/twig/doc/internals.rst b/vendor/twig/twig/doc/internals.rst
deleted file mode 100644
index ba908d496ca863b44be214114ef7601af8e66043..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/internals.rst
+++ /dev/null
@@ -1,144 +0,0 @@
-Twig Internals
-==============
-
-Twig is very extensible and you can hack it. Keep in mind that you
-should probably try to create an extension before hacking the core, as most
-features and enhancements can be handled with extensions. This chapter is also
-useful for people who want to understand how Twig works under the hood.
-
-How does Twig work?
--------------------
-
-The rendering of a Twig template can be summarized into four key steps:
-
-* **Load** the template: If the template is already compiled, load it and go
-  to the *evaluation* step, otherwise:
-
-  * First, the **lexer** tokenizes the template source code into small pieces
-    for easier processing;
-
-  * Then, the **parser** converts the token stream into a meaningful tree
-    of nodes (the Abstract Syntax Tree);
-
-  * Finally, the *compiler* transforms the AST into PHP code.
-
-* **Evaluate** the template: It means calling the ``display()``
-  method of the compiled template and passing it the context.
-
-The Lexer
----------
-
-The lexer tokenizes a template source code into a token stream (each token is
-an instance of ``\Twig\Token``, and the stream is an instance of
-``\Twig\TokenStream``). The default lexer recognizes 13 different token types:
-
-* ``\Twig\Token::BLOCK_START_TYPE``, ``\Twig\Token::BLOCK_END_TYPE``: Delimiters for blocks (``{% %}``)
-* ``\Twig\Token::VAR_START_TYPE``, ``\Twig\Token::VAR_END_TYPE``: Delimiters for variables (``{{ }}``)
-* ``\Twig\Token::TEXT_TYPE``: A text outside an expression;
-* ``\Twig\Token::NAME_TYPE``: A name in an expression;
-* ``\Twig\Token::NUMBER_TYPE``: A number in an expression;
-* ``\Twig\Token::STRING_TYPE``: A string in an expression;
-* ``\Twig\Token::OPERATOR_TYPE``: An operator;
-* ``\Twig\Token::PUNCTUATION_TYPE``: A punctuation sign;
-* ``\Twig\Token::INTERPOLATION_START_TYPE``, ``\Twig\Token::INTERPOLATION_END_TYPE`` (as of Twig 1.5): Delimiters for string interpolation;
-* ``\Twig\Token::EOF_TYPE``: Ends of template.
-
-You can manually convert a source code into a token stream by calling the
-``tokenize()`` method of an environment::
-
-    $stream = $twig->tokenize(new \Twig\Source($source, $identifier));
-
-.. versionadded:: 1.27
-    ``\Twig\Source`` was introduced in version 1.27, pass the source and the
-    identifier directly on previous versions.
-
-As the stream has a ``__toString()`` method, you can have a textual
-representation of it by echoing the object::
-
-    echo $stream."\n";
-
-Here is the output for the ``Hello {{ name }}`` template:
-
-.. code-block:: text
-
-    TEXT_TYPE(Hello )
-    VAR_START_TYPE()
-    NAME_TYPE(name)
-    VAR_END_TYPE()
-    EOF_TYPE()
-
-.. note::
-
-    The default lexer (``\Twig\Lexer``) can be changed by calling
-    the ``setLexer()`` method::
-
-        $twig->setLexer($lexer);
-
-The Parser
-----------
-
-The parser converts the token stream into an AST (Abstract Syntax Tree), or a
-node tree (an instance of ``\Twig\Node\ModuleNode``). The core extension defines
-the basic nodes like: ``for``, ``if``, ... and the expression nodes.
-
-You can manually convert a token stream into a node tree by calling the
-``parse()`` method of an environment::
-
-    $nodes = $twig->parse($stream);
-
-Echoing the node object gives you a nice representation of the tree::
-
-    echo $nodes."\n";
-
-Here is the output for the ``Hello {{ name }}`` template:
-
-.. code-block:: text
-
-    \Twig\Node\ModuleNode(
-      \Twig\Node\TextNode(Hello )
-      \Twig\Node\PrintNode(
-        \Twig\Node\Expression\NameExpression(name)
-      )
-    )
-
-.. note::
-
-    The default parser (``\Twig\TokenParser\AbstractTokenParser``) can be changed by calling the
-    ``setParser()`` method::
-
-        $twig->setParser($parser);
-
-The Compiler
-------------
-
-The last step is done by the compiler. It takes a node tree as an input and
-generates PHP code usable for runtime execution of the template.
-
-You can manually compile a node tree to PHP code with the ``compile()`` method
-of an environment::
-
-    $php = $twig->compile($nodes);
-
-The generated template for a ``Hello {{ name }}`` template reads as follows
-(the actual output can differ depending on the version of Twig you are
-using)::
-
-    /* Hello {{ name }} */
-    class __TwigTemplate_1121b6f109fe93ebe8c6e22e3712bceb extends \Twig\Template
-    {
-        protected function doDisplay(array $context, array $blocks = [])
-        {
-            // line 1
-            echo "Hello ";
-            echo twig_escape_filter($this->env, (isset($context["name"]) ? $context["name"] : null), "html", null, true);
-        }
-
-        // some more code
-    }
-
-.. note::
-
-    The default compiler (``\Twig\Compiler``) can be changed by calling the
-    ``setCompiler()`` method::
-
-        $twig->setCompiler($compiler);
diff --git a/vendor/twig/twig/doc/intro.rst b/vendor/twig/twig/doc/intro.rst
deleted file mode 100644
index 4c8e73be7449556d7551f8cfd6e613350726db51..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/intro.rst
+++ /dev/null
@@ -1,76 +0,0 @@
-Introduction
-============
-
-Welcome to the documentation for Twig, the flexible, fast, and secure template
-engine for PHP.
-
-Twig is both designer and developer friendly by sticking to PHP's principles and
-adding functionality useful for templating environments.
-
-The key-features are...
-
-* *Fast*: Twig compiles templates down to plain optimized PHP code. The
-  overhead compared to regular PHP code was reduced to the very minimum.
-
-* *Secure*: Twig has a sandbox mode to evaluate untrusted template code. This
-  allows Twig to be used as a template language for applications where users
-  may modify the template design.
-
-* *Flexible*: Twig is powered by a flexible lexer and parser. This allows the
-  developer to define their own custom tags and filters, and to create their own DSL.
-
-Twig is used by many Open-Source projects like Symfony, Drupal8, eZPublish,
-phpBB, Matomo, OroCRM; and many frameworks have support for it as well like
-Slim, Yii, Laravel, and Codeigniter — just to name a few.
-
-Prerequisites
--------------
-
-Twig 1.x needs at least **PHP 7.2.5** to run.
-
-Installation
-------------
-
-The recommended way to install Twig is via Composer:
-
-.. code-block:: bash
-
-    composer require "twig/twig:^1.0"
-
-.. note::
-
-    To learn more about the other installation methods, read the
-    :doc:`installation<installation>` chapter; it also explains how to install
-    the Twig C extension.
-
-Basic API Usage
----------------
-
-This section gives you a brief introduction to the PHP API for Twig.
-
-.. code-block:: php
-
-    require_once '/path/to/vendor/autoload.php';
-
-    $loader = new \Twig\Loader\ArrayLoader([
-        'index' => 'Hello {{ name }}!',
-    ]);
-    $twig = new \Twig\Environment($loader);
-
-    echo $twig->render('index', ['name' => 'Fabien']);
-
-Twig uses a loader (``\Twig\Loader\ArrayLoader``) to locate templates, and an
-environment (``\Twig\Environment``) to store its configuration.
-
-The ``render()`` method loads the template passed as a first argument and
-renders it with the variables passed as a second argument.
-
-As templates are generally stored on the filesystem, Twig also comes with a
-filesystem loader::
-
-    $loader = new \Twig\Loader\FilesystemLoader('/path/to/templates');
-    $twig = new \Twig\Environment($loader, [
-        'cache' => '/path/to/compilation_cache',
-    ]);
-
-    echo $twig->render('index.html', ['name' => 'Fabien']);
diff --git a/vendor/twig/twig/doc/recipes.rst b/vendor/twig/twig/doc/recipes.rst
deleted file mode 100644
index 7e72b716443edadf40e93666b3cfd5f9952d2fca..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/recipes.rst
+++ /dev/null
@@ -1,568 +0,0 @@
-Recipes
-=======
-
-.. _deprecation-notices:
-
-Displaying Deprecation Notices
-------------------------------
-
-.. versionadded:: 1.21
-    This works as of Twig 1.21.
-
-Deprecated features generate deprecation notices (via a call to the
-``trigger_error()`` PHP function). By default, they are silenced and never
-displayed nor logged.
-
-To remove all deprecated feature usages from your templates, write and run a
-script along the lines of the following::
-
-    require_once __DIR__.'/vendor/autoload.php';
-
-    $twig = create_your_twig_env();
-
-    $deprecations = new \Twig\Util\DeprecationCollector($twig);
-
-    print_r($deprecations->collectDir(__DIR__.'/templates'));
-
-The ``collectDir()`` method compiles all templates found in a directory,
-catches deprecation notices, and return them.
-
-.. tip::
-
-    If your templates are not stored on the filesystem, use the ``collect()``
-    method instead. ``collect()`` takes a ``Traversable`` which must return
-    template names as keys and template contents as values (as done by
-    ``\Twig\Util\TemplateDirIterator``).
-
-However, this code won't find all deprecations (like using deprecated some Twig
-classes). To catch all notices, register a custom error handler like the one
-below::
-
-    $deprecations = [];
-    set_error_handler(function ($type, $msg) use (&$deprecations) {
-        if (E_USER_DEPRECATED === $type) {
-            $deprecations[] = $msg;
-        }
-    });
-
-    // run your application
-
-    print_r($deprecations);
-
-Note that most deprecation notices are triggered during **compilation**, so
-they won't be generated when templates are already cached.
-
-.. tip::
-
-    If you want to manage the deprecation notices from your PHPUnit tests, have
-    a look at the `symfony/phpunit-bridge
-    <https://github.com/symfony/phpunit-bridge>`_ package, which eases the
-    process.
-
-Making a Layout conditional
----------------------------
-
-Working with Ajax means that the same content is sometimes displayed as is,
-and sometimes decorated with a layout. As Twig layout template names can be
-any valid expression, you can pass a variable that evaluates to ``true`` when
-the request is made via Ajax and choose the layout accordingly:
-
-.. code-block:: twig
-
-    {% extends request.ajax ? "base_ajax.html" : "base.html" %}
-
-    {% block content %}
-        This is the content to be displayed.
-    {% endblock %}
-
-Making an Include dynamic
--------------------------
-
-When including a template, its name does not need to be a string. For
-instance, the name can depend on the value of a variable:
-
-.. code-block:: twig
-
-    {% include var ~ '_foo.html' %}
-
-If ``var`` evaluates to ``index``, the ``index_foo.html`` template will be
-rendered.
-
-As a matter of fact, the template name can be any valid expression, such as
-the following:
-
-.. code-block:: twig
-
-    {% include var|default('index') ~ '_foo.html' %}
-
-Overriding a Template that also extends itself
-----------------------------------------------
-
-A template can be customized in two different ways:
-
-* *Inheritance*: A template *extends* a parent template and overrides some
-  blocks;
-
-* *Replacement*: If you use the filesystem loader, Twig loads the first
-  template it finds in a list of configured directories; a template found in a
-  directory *replaces* another one from a directory further in the list.
-
-But how do you combine both: *replace* a template that also extends itself
-(aka a template in a directory further in the list)?
-
-Let's say that your templates are loaded from both ``.../templates/mysite``
-and ``.../templates/default`` in this order. The ``page.twig`` template,
-stored in ``.../templates/default`` reads as follows:
-
-.. code-block:: twig
-
-    {# page.twig #}
-    {% extends "layout.twig" %}
-
-    {% block content %}
-    {% endblock %}
-
-You can replace this template by putting a file with the same name in
-``.../templates/mysite``. And if you want to extend the original template, you
-might be tempted to write the following:
-
-.. code-block:: twig
-
-    {# page.twig in .../templates/mysite #}
-    {% extends "page.twig" %} {# from .../templates/default #}
-
-However, this will not work as Twig will always load the template from
-``.../templates/mysite``.
-
-It turns out it is possible to get this to work, by adding a directory right
-at the end of your template directories, which is the parent of all of the
-other directories: ``.../templates`` in our case. This has the effect of
-making every template file within our system uniquely addressable. Most of the
-time you will use the "normal" paths, but in the special case of wanting to
-extend a template with an overriding version of itself we can reference its
-parent's full, unambiguous template path in the extends tag:
-
-.. code-block:: twig
-
-    {# page.twig in .../templates/mysite #}
-    {% extends "default/page.twig" %} {# from .../templates #}
-
-.. note::
-
-    This recipe was inspired by the following Django wiki page:
-    https://code.djangoproject.com/wiki/ExtendingTemplates
-
-Customizing the Syntax
-----------------------
-
-Twig allows some syntax customization for the block delimiters. It's **not**
-recommended to use this feature as templates will be tied with your custom
-syntax. But for specific projects, it can make sense to change the defaults.
-
-To change the block delimiters, you need to create your own lexer object::
-
-    $twig = new \Twig\Environment();
-
-    $lexer = new \Twig\Lexer($twig, [
-        'tag_comment'   => ['{#', '#}'],
-        'tag_block'     => ['{%', '%}'],
-        'tag_variable'  => ['{{', '}}'],
-        'interpolation' => ['#{', '}'],
-    ]);
-    $twig->setLexer($lexer);
-
-Here are some configuration example that simulates some other template engines
-syntax::
-
-    // Ruby erb syntax
-    $lexer = new \Twig\Lexer($twig, [
-        'tag_comment'  => ['<%#', '%>'],
-        'tag_block'    => ['<%', '%>'],
-        'tag_variable' => ['<%=', '%>'],
-    ]);
-
-    // SGML Comment Syntax
-    $lexer = new \Twig\Lexer($twig, [
-        'tag_comment'  => ['<!--#', '-->'],
-        'tag_block'    => ['<!--', '-->'],
-        'tag_variable' => ['${', '}'],
-    ]);
-
-    // Smarty like
-    $lexer = new \Twig\Lexer($twig, [
-        'tag_comment'  => ['{*', '*}'],
-        'tag_block'    => ['{', '}'],
-        'tag_variable' => ['{$', '}'],
-    ]);
-
-Using dynamic Object Properties
--------------------------------
-
-When Twig encounters a variable like ``article.title``, it tries to find a
-``title`` public property in the ``article`` object.
-
-It also works if the property does not exist but is rather defined dynamically
-thanks to the magic ``__get()`` method; you need to also implement the
-``__isset()`` magic method like shown in the following snippet of code::
-
-    class Article
-    {
-        public function __get($name)
-        {
-            if ('title' == $name) {
-                return 'The title';
-            }
-
-            // throw some kind of error
-        }
-
-        public function __isset($name)
-        {
-            if ('title' == $name) {
-                return true;
-            }
-
-            return false;
-        }
-    }
-
-Accessing the parent Context in Nested Loops
---------------------------------------------
-
-Sometimes, when using nested loops, you need to access the parent context. The
-parent context is always accessible via the ``loop.parent`` variable. For
-instance, if you have the following template data::
-
-    $data = [
-        'topics' => [
-            'topic1' => ['Message 1 of topic 1', 'Message 2 of topic 1'],
-            'topic2' => ['Message 1 of topic 2', 'Message 2 of topic 2'],
-        ],
-    ];
-
-And the following template to display all messages in all topics:
-
-.. code-block:: twig
-
-    {% for topic, messages in topics %}
-        * {{ loop.index }}: {{ topic }}
-      {% for message in messages %}
-          - {{ loop.parent.loop.index }}.{{ loop.index }}: {{ message }}
-      {% endfor %}
-    {% endfor %}
-
-The output will be similar to:
-
-.. code-block:: text
-
-    * 1: topic1
-      - 1.1: The message 1 of topic 1
-      - 1.2: The message 2 of topic 1
-    * 2: topic2
-      - 2.1: The message 1 of topic 2
-      - 2.2: The message 2 of topic 2
-
-In the inner loop, the ``loop.parent`` variable is used to access the outer
-context. So, the index of the current ``topic`` defined in the outer for loop
-is accessible via the ``loop.parent.loop.index`` variable.
-
-Defining undefined Functions and Filters on the Fly
----------------------------------------------------
-
-When a function (or a filter) is not defined, Twig defaults to throw a
-``\Twig\Error\SyntaxError`` exception. However, it can also call a `callback`_ (any
-valid PHP callable) which should return a function (or a filter).
-
-For filters, register callbacks with ``registerUndefinedFilterCallback()``.
-For functions, use ``registerUndefinedFunctionCallback()``::
-
-    // auto-register all native PHP functions as Twig functions
-    // don't try this at home as it's not secure at all!
-    $twig->registerUndefinedFunctionCallback(function ($name) {
-        if (function_exists($name)) {
-            return new \Twig\TwigFunction($name, $name);
-        }
-
-        return false;
-    });
-
-If the callable is not able to return a valid function (or filter), it must
-return ``false``.
-
-If you register more than one callback, Twig will call them in turn until one
-does not return ``false``.
-
-.. tip::
-
-    As the resolution of functions and filters is done during compilation,
-    there is no overhead when registering these callbacks.
-
-Validating the Template Syntax
-------------------------------
-
-When template code is provided by a third-party (through a web interface for
-instance), it might be interesting to validate the template syntax before
-saving it. If the template code is stored in a `$template` variable, here is
-how you can do it::
-
-    try {
-        $twig->parse($twig->tokenize(new \Twig\Source($template)));
-
-        // the $template is valid
-    } catch (\Twig\Error\SyntaxError $e) {
-        // $template contains one or more syntax errors
-    }
-
-If you iterate over a set of files, you can pass the filename to the
-``tokenize()`` method to get the filename in the exception message::
-
-    foreach ($files as $file) {
-        try {
-            $twig->parse($twig->tokenize(new \Twig\Source($template, $file->getFilename(), $file)));
-
-            // the $template is valid
-        } catch (\Twig\Error\SyntaxError $e) {
-            // $template contains one or more syntax errors
-        }
-    }
-
-.. versionadded:: 1.27
-    ``\Twig\Source`` was introduced in version 1.27, pass the source and the
-    identifier directly on previous versions.
-
-.. note::
-
-    This method won't catch any sandbox policy violations because the policy
-    is enforced during template rendering (as Twig needs the context for some
-    checks like allowed methods on objects).
-
-Refreshing modified Templates when OPcache or APC is enabled
-------------------------------------------------------------
-
-When using OPcache with ``opcache.validate_timestamps`` set to ``0`` or APC
-with ``apc.stat`` set to ``0`` and Twig cache enabled, clearing the template
-cache won't update the cache.
-
-To get around this, force Twig to invalidate the bytecode cache::
-
-    $twig = new \Twig\Environment($loader, [
-        'cache' => new \Twig\Cache\FilesystemCache('/some/cache/path', \Twig\Cache\FilesystemCache::FORCE_BYTECODE_INVALIDATION),
-        // ...
-    ]);
-
-.. note::
-
-    Before Twig 1.22, you should extend ``\Twig\Environment`` instead::
-
-        class OpCacheAwareTwigEnvironment extends \Twig\Environment
-        {
-            protected function writeCacheFile($file, $content)
-            {
-                parent::writeCacheFile($file, $content);
-
-                // Compile cached file into bytecode cache
-                if (function_exists('opcache_invalidate') && filter_var(ini_get('opcache.enable'), FILTER_VALIDATE_BOOLEAN)) {
-                    opcache_invalidate($file, true);
-                } elseif (function_exists('apc_compile_file')) {
-                    apc_compile_file($file);
-                }
-            }
-        }
-
-Reusing a stateful Node Visitor
--------------------------------
-
-When attaching a visitor to a ``\Twig\Environment`` instance, Twig uses it to
-visit *all* templates it compiles. If you need to keep some state information
-around, you probably want to reset it when visiting a new template.
-
-This can be achieved with the following code::
-
-    protected $someTemplateState = [];
-
-    public function enterNode(Twig_NodeInterface $node, \Twig\Environment $env)
-    {
-        if ($node instanceof \Twig\Node\ModuleNode) {
-            // reset the state as we are entering a new template
-            $this->someTemplateState = [];
-        }
-
-        // ...
-
-        return $node;
-    }
-
-Using a Database to store Templates
------------------------------------
-
-If you are developing a CMS, templates are usually stored in a database. This
-recipe gives you a simple PDO template loader you can use as a starting point
-for your own.
-
-First, let's create a temporary in-memory SQLite3 database to work with::
-
-    $dbh = new PDO('sqlite::memory:');
-    $dbh->exec('CREATE TABLE templates (name STRING, source STRING, last_modified INTEGER)');
-    $base = '{% block content %}{% endblock %}';
-    $index = '
-    {% extends "base.twig" %}
-    {% block content %}Hello {{ name }}{% endblock %}
-    ';
-    $now = time();
-    $dbh->prepare('INSERT INTO templates (name, source, last_modified) VALUES (?, ?, ?)')->execute(['base.twig', $base, $now]);
-    $dbh->prepare('INSERT INTO templates (name, source, last_modified) VALUES (?, ?, ?)')->execute(['index.twig', $index, $now]);
-
-We have created a simple ``templates`` table that hosts two templates:
-``base.twig`` and ``index.twig``.
-
-Now, let's define a loader able to use this database::
-
-    class DatabaseTwigLoader implements \Twig\Loader\LoaderInterface, \Twig\Loader\ExistsLoaderInterface, \Twig\Loader\SourceContextLoaderInterface
-    {
-        protected $dbh;
-
-        public function __construct(PDO $dbh)
-        {
-            $this->dbh = $dbh;
-        }
-
-        public function getSource($name)
-        {
-            if (false === $source = $this->getValue('source', $name)) {
-                throw new \Twig\Error\LoaderError(sprintf('Template "%s" does not exist.', $name));
-            }
-
-            return $source;
-        }
-
-        // \Twig\Loader\SourceContextLoaderInterface as of Twig 1.27
-        public function getSourceContext($name)
-        {
-            if (false === $source = $this->getValue('source', $name)) {
-                throw new \Twig\Error\LoaderError(sprintf('Template "%s" does not exist.', $name));
-            }
-
-            return new \Twig\Source($source, $name);
-        }
-
-        // \Twig\Loader\ExistsLoaderInterface as of Twig 1.11
-        public function exists($name)
-        {
-            return $name === $this->getValue('name', $name);
-        }
-
-        public function getCacheKey($name)
-        {
-            return $name;
-        }
-
-        public function isFresh($name, $time)
-        {
-            if (false === $lastModified = $this->getValue('last_modified', $name)) {
-                return false;
-            }
-
-            return $lastModified <= $time;
-        }
-
-        protected function getValue($column, $name)
-        {
-            $sth = $this->dbh->prepare('SELECT '.$column.' FROM templates WHERE name = :name');
-            $sth->execute([':name' => (string) $name]);
-
-            return $sth->fetchColumn();
-        }
-    }
-
-Finally, here is an example on how you can use it::
-
-    $loader = new DatabaseTwigLoader($dbh);
-    $twig = new \Twig\Environment($loader);
-
-    echo $twig->render('index.twig', ['name' => 'Fabien']);
-
-Using different Template Sources
---------------------------------
-
-This recipe is the continuation of the previous one. Even if you store the
-contributed templates in a database, you might want to keep the original/base
-templates on the filesystem. When templates can be loaded from different
-sources, you need to use the ``\Twig\Loader\ChainLoader`` loader.
-
-As you can see in the previous recipe, we reference the template in the exact
-same way as we would have done it with a regular filesystem loader. This is
-the key to be able to mix and match templates coming from the database, the
-filesystem, or any other loader for that matter: the template name should be a
-logical name, and not the path from the filesystem::
-
-    $loader1 = new DatabaseTwigLoader($dbh);
-    $loader2 = new \Twig\Loader\ArrayLoader([
-        'base.twig' => '{% block content %}{% endblock %}',
-    ]);
-    $loader = new \Twig\Loader\ChainLoader([$loader1, $loader2]);
-
-    $twig = new \Twig\Environment($loader);
-
-    echo $twig->render('index.twig', ['name' => 'Fabien']);
-
-Now that the ``base.twig`` templates is defined in an array loader, you can
-remove it from the database, and everything else will still work as before.
-
-Loading a Template from a String
---------------------------------
-
-From a template, you can load a template stored in a string via the
-``template_from_string`` function (available as of Twig 1.11 via the
-``\Twig\Extension\StringLoaderExtension`` extension):
-
-.. code-block:: twig
-
-    {{ include(template_from_string("Hello {{ name }}")) }}
-
-From PHP, it's also possible to load a template stored in a string via
-``\Twig\Environment::createTemplate()`` (available as of Twig 1.18)::
-
-    $template = $twig->createTemplate('hello {{ name }}');
-    echo $template->render(['name' => 'Fabien']);
-
-.. note::
-
-    Never use the ``Twig_Loader_String`` loader, which has severe limitations.
-
-Using Twig and AngularJS in the same Templates
-----------------------------------------------
-
-Mixing different template syntaxes in the same file is not a recommended
-practice as both AngularJS and Twig use the same delimiters in their syntax:
-``{{`` and ``}}``.
-
-Still, if you want to use AngularJS and Twig in the same template, there are
-two ways to make it work depending on the amount of AngularJS you need to
-include in your templates:
-
-* Escaping the AngularJS delimiters by wrapping AngularJS sections with the
-  ``{% verbatim %}`` tag or by escaping each delimiter via ``{{ '{{' }}`` and
-  ``{{ '}}' }}``;
-
-* Changing the delimiters of one of the template engines (depending on which
-  engine you introduced last):
-
-  * For AngularJS, change the interpolation tags using the
-    ``interpolateProvider`` service, for instance at the module initialization
-    time:
-
-    ..  code-block:: javascript
-
-        angular.module('myApp', []).config(function($interpolateProvider) {
-            $interpolateProvider.startSymbol('{[').endSymbol(']}');
-        });
-
-  * For Twig, change the delimiters via the ``tag_variable`` Lexer option:
-
-    ..  code-block:: php
-
-        $env->setLexer(new \Twig\Lexer($env, [
-            'tag_variable' => ['{[', ']}'],
-        ]));
-
-.. _callback: https://secure.php.net/manual/en/function.is-callable.php
diff --git a/vendor/twig/twig/doc/tags/apply.rst b/vendor/twig/twig/doc/tags/apply.rst
deleted file mode 100644
index 09bc036df6f4757cd5aac0b2814bf073348888d7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/apply.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-``apply``
-=========
-
-.. versionadded:: 1.40
-    The ``apply`` tag was added in Twig 1.40.
-
-The ``apply`` tag allows you to apply Twig filters on a block of template data:
-
-.. code-block:: twig
-
-    {% apply upper %}
-        This text becomes uppercase
-    {% endapply %}
-
-You can also chain filters and pass arguments to them:
-
-.. code-block:: twig
-
-    {% apply lower|escape('html') %}
-        <strong>SOME TEXT</strong>
-    {% endapply %}
-
-    {# outputs "&lt;strong&gt;some text&lt;/strong&gt;" #}
diff --git a/vendor/twig/twig/doc/tags/autoescape.rst b/vendor/twig/twig/doc/tags/autoescape.rst
deleted file mode 100644
index 0fa34bda85d976f73ed417571bd39c6a242c5e0e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/autoescape.rst
+++ /dev/null
@@ -1,81 +0,0 @@
-``autoescape``
-==============
-
-Whether automatic escaping is enabled or not, you can mark a section of a
-template to be escaped or not by using the ``autoescape`` tag:
-
-.. code-block:: twig
-
-    {% autoescape %}
-        Everything will be automatically escaped in this block
-        using the HTML strategy
-    {% endautoescape %}
-
-    {% autoescape 'html' %}
-        Everything will be automatically escaped in this block
-        using the HTML strategy
-    {% endautoescape %}
-
-    {% autoescape 'js' %}
-        Everything will be automatically escaped in this block
-        using the js escaping strategy
-    {% endautoescape %}
-
-    {% autoescape false %}
-        Everything will be outputted as is in this block
-    {% endautoescape %}
-
-.. note::
-
-    Before Twig 1.8, the syntax was different:
-
-    .. code-block:: twig
-
-        {% autoescape true %}
-            Everything will be automatically escaped in this block
-            using the HTML strategy
-        {% endautoescape %}
-
-        {% autoescape false %}
-            Everything will be outputted as is in this block
-        {% endautoescape %}
-
-        {% autoescape true js %}
-            Everything will be automatically escaped in this block
-            using the js escaping strategy
-        {% endautoescape %}
-
-When automatic escaping is enabled everything is escaped by default except for
-values explicitly marked as safe. Those can be marked in the template by using
-the :doc:`raw<../filters/raw>` filter:
-
-.. code-block:: twig
-
-    {% autoescape %}
-        {{ safe_value|raw }}
-    {% endautoescape %}
-
-Functions returning template data (like :doc:`macros<macro>` and
-:doc:`parent<../functions/parent>`) always return safe markup.
-
-.. note::
-
-    Twig is smart enough to not escape an already escaped value by the
-    :doc:`escape<../filters/escape>` filter.
-
-.. note::
-
-    Twig does not escape static expressions:
-
-    .. code-block:: twig
-
-        {% set hello = "<strong>Hello</strong>" %}
-        {{ hello }}
-        {{ "<strong>world</strong>" }}
-
-    Will be rendered "<strong>Hello</strong> **world**".
-
-.. note::
-
-    The chapter :doc:`Twig for Developers<../api>` gives more information
-    about when and how automatic escaping is applied.
diff --git a/vendor/twig/twig/doc/tags/block.rst b/vendor/twig/twig/doc/tags/block.rst
deleted file mode 100644
index 0fb60c63522ae90221b5dacfa2eca3e70a1d042c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/block.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-``block``
-=========
-
-Blocks are used for inheritance and act as placeholders and replacements at
-the same time. They are documented in detail in the documentation for the
-:doc:`extends<../tags/extends>` tag.
-
-Block names must consist of alphanumeric characters, and underscores. The first char can't be a digit and dashes are not permitted.
-
-.. seealso:: :doc:`block<../functions/block>`, :doc:`parent<../functions/parent>`, :doc:`use<../tags/use>`, :doc:`extends<../tags/extends>`
diff --git a/vendor/twig/twig/doc/tags/deprecated.rst b/vendor/twig/twig/doc/tags/deprecated.rst
deleted file mode 100644
index 95828ac16b0b5970faa97b77fbc067843607d57d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/deprecated.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-``deprecated``
-==============
-
-.. versionadded:: 1.36 and 2.6
-    The ``deprecated`` tag was added in Twig 1.36 and 2.6.
-
-Twig generates a deprecation notice (via a call to the ``trigger_error()``
-PHP function) where the ``deprecated`` tag is used in a template:
-
-.. code-block:: twig
-
-    {# base.twig #}
-    {% deprecated 'The "base.twig" template is deprecated, use "layout.twig" instead.' %}
-    {% extends 'layout.twig' %}
-
-Also you can deprecate a block in the following way:
-
-.. code-block:: twig
-
-    {% block hey %}
-        {% deprecated 'The "hey" block is deprecated, use "greet" instead.' %}
-        {{ block('greet') }}
-    {% endblock %}
-
-    {% block greet %}
-        Hey you!
-    {% endblock %}
-
-Note that by default, the deprecation notices are silenced and never displayed nor logged.
-See :ref:`deprecation-notices` to learn how to handle them.
diff --git a/vendor/twig/twig/doc/tags/do.rst b/vendor/twig/twig/doc/tags/do.rst
deleted file mode 100644
index b5e83ebaefa0e3c204c7021441c9c2b31c9ea2ce..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/do.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-``do``
-======
-
-.. versionadded:: 1.5
-    The ``do`` tag was added in Twig 1.5.
-
-The ``do`` tag works exactly like the regular variable expression (``{{ ...
-}}``) just that it doesn't print anything:
-
-.. code-block:: twig
-
-    {% do 1 + 2 %}
diff --git a/vendor/twig/twig/doc/tags/embed.rst b/vendor/twig/twig/doc/tags/embed.rst
deleted file mode 100644
index e2796b2a8eef5ae69e684ce3e8b1437f9b453411..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/embed.rst
+++ /dev/null
@@ -1,178 +0,0 @@
-``embed``
-=========
-
-.. versionadded:: 1.8
-    The ``embed`` tag was added in Twig 1.8.
-
-The ``embed`` tag combines the behaviour of :doc:`include<include>` and
-:doc:`extends<extends>`.
-It allows you to include another template's contents, just like ``include``
-does. But it also allows you to override any block defined inside the
-included template, like when extending a template.
-
-Think of an embedded template as a "micro layout skeleton".
-
-.. code-block:: twig
-
-    {% embed "teasers_skeleton.twig" %}
-        {# These blocks are defined in "teasers_skeleton.twig" #}
-        {# and we override them right here:                    #}
-        {% block left_teaser %}
-            Some content for the left teaser box
-        {% endblock %}
-        {% block right_teaser %}
-            Some content for the right teaser box
-        {% endblock %}
-    {% endembed %}
-
-The ``embed`` tag takes the idea of template inheritance to the level of
-content fragments. While template inheritance allows for "document skeletons",
-which are filled with life by child templates, the ``embed`` tag allows you to
-create "skeletons" for smaller units of content and re-use and fill them
-anywhere you like.
-
-Since the use case may not be obvious, let's look at a simplified example.
-Imagine a base template shared by multiple HTML pages, defining a single block
-named "content":
-
-.. code-block:: text
-
-    ┌─── page layout ─────────────────────┐
-    │                                     │
-    │           ┌── block "content" ──┐   │
-    │           │                     │   │
-    │           │                     │   │
-    │           │ (child template to  │   │
-    │           │  put content here)  │   │
-    │           │                     │   │
-    │           │                     │   │
-    │           └─────────────────────┘   │
-    │                                     │
-    └─────────────────────────────────────┘
-
-Some pages ("foo" and "bar") share the same content structure -
-two vertically stacked boxes:
-
-.. code-block:: text
-
-    ┌─── page layout ─────────────────────┐
-    │                                     │
-    │           ┌── block "content" ──┐   │
-    │           │ ┌─ block "top" ───┐ │   │
-    │           │ │                 │ │   │
-    │           │ └─────────────────┘ │   │
-    │           │ ┌─ block "bottom" ┐ │   │
-    │           │ │                 │ │   │
-    │           │ └─────────────────┘ │   │
-    │           └─────────────────────┘   │
-    │                                     │
-    └─────────────────────────────────────┘
-
-While other pages ("boom" and "baz") share a different content structure -
-two boxes side by side:
-
-.. code-block:: text
-
-    ┌─── page layout ─────────────────────┐
-    │                                     │
-    │           ┌── block "content" ──┐   │
-    │           │                     │   │    
-    │           │ ┌ block ┐ ┌ block ┐ │   │
-    │           │ │"left" │ │"right"│ │   │
-    │           │ │       │ │       │ │   │
-    │           │ │       │ │       │ │   │
-    │           │ └───────┘ └───────┘ │   │
-    │           └─────────────────────┘   │
-    │                                     │
-    └─────────────────────────────────────┘
-
-Without the ``embed`` tag, you have two ways to design your templates:
-
-* Create two "intermediate" base templates that extend the master layout
-  template: one with vertically stacked boxes to be used by the "foo" and
-  "bar" pages and another one with side-by-side boxes for the "boom" and
-  "baz" pages.
-
-* Embed the markup for the top/bottom and left/right boxes into each page
-  template directly.
-
-These two solutions do not scale well because they each have a major drawback:
-
-* The first solution may indeed work for this simplified example. But imagine
-  we add a sidebar, which may again contain different, recurring structures
-  of content. Now we would need to create intermediate base templates for
-  all occurring combinations of content structure and sidebar structure...
-  and so on.
-
-* The second solution involves duplication of common code with all its negative
-  consequences: any change involves finding and editing all affected copies
-  of the structure, correctness has to be verified for each copy, copies may
-  go out of sync by careless modifications etc.
-
-In such a situation, the ``embed`` tag comes in handy. The common layout
-code can live in a single base template, and the two different content structures,
-let's call them "micro layouts" go into separate templates which are embedded
-as necessary:
-
-Page template ``foo.twig``:
-
-.. code-block:: twig
-
-    {% extends "layout_skeleton.twig" %}
-
-    {% block content %}
-        {% embed "vertical_boxes_skeleton.twig" %}
-            {% block top %}
-                Some content for the top box
-            {% endblock %}
-
-            {% block bottom %}
-                Some content for the bottom box
-            {% endblock %}
-        {% endembed %}
-    {% endblock %}
-
-And here is the code for ``vertical_boxes_skeleton.twig``:
-
-.. code-block:: html+twig
-
-    <div class="top_box">
-        {% block top %}
-            Top box default content
-        {% endblock %}
-    </div>
-
-    <div class="bottom_box">
-        {% block bottom %}
-            Bottom box default content
-        {% endblock %}
-    </div>
-
-The goal of the ``vertical_boxes_skeleton.twig`` template being to factor
-out the HTML markup for the boxes.
-
-The ``embed`` tag takes the exact same arguments as the ``include`` tag:
-
-.. code-block:: twig
-
-    {% embed "base" with {'foo': 'bar'} %}
-        ...
-    {% endembed %}
-
-    {% embed "base" with {'foo': 'bar'} only %}
-        ...
-    {% endembed %}
-
-    {% embed "base" ignore missing %}
-        ...
-    {% endembed %}
-
-.. warning::
-
-    As embedded templates do not have "names", auto-escaping strategies based
-    on the template name won't work as expected if you change the context (for
-    instance, if you embed a CSS/JavaScript template into an HTML one). In that
-    case, explicitly set the default auto-escaping strategy with the
-    ``autoescape`` tag.
-
-.. seealso:: :doc:`include<../tags/include>`
diff --git a/vendor/twig/twig/doc/tags/extends.rst b/vendor/twig/twig/doc/tags/extends.rst
deleted file mode 100644
index 9de5917835b6bdd030fbd3881088d03b4a0846fa..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/extends.rst
+++ /dev/null
@@ -1,270 +0,0 @@
-``extends``
-===========
-
-The ``extends`` tag can be used to extend a template from another one.
-
-.. note::
-
-    Like PHP, Twig does not support multiple inheritance. So you can only have
-    one extends tag called per rendering. However, Twig supports horizontal
-    :doc:`reuse<use>`.
-
-Let's define a base template, ``base.html``, which defines a simple HTML
-skeleton document:
-
-.. code-block:: html+twig
-
-    <!DOCTYPE html>
-    <html>
-        <head>
-            {% block head %}
-                <link rel="stylesheet" href="style.css" />
-                <title>{% block title %}{% endblock %} - My Webpage</title>
-            {% endblock %}
-        </head>
-        <body>
-            <div id="content">{% block content %}{% endblock %}</div>
-            <div id="footer">
-                {% block footer %}
-                    &copy; Copyright 2011 by <a href="http://domain.invalid/">you</a>.
-                {% endblock %}
-            </div>
-        </body>
-    </html>
-
-In this example, the :doc:`block<block>` tags define four blocks that child
-templates can fill in.
-
-All the ``block`` tag does is to tell the template engine that a child
-template may override those portions of the template.
-
-Child Template
---------------
-
-A child template might look like this:
-
-.. code-block:: twig
-
-    {% extends "base.html" %}
-
-    {% block title %}Index{% endblock %}
-    {% block head %}
-        {{ parent() }}
-        <style type="text/css">
-            .important { color: #336699; }
-        </style>
-    {% endblock %}
-    {% block content %}
-        <h1>Index</h1>
-        <p class="important">
-            Welcome on my awesome homepage.
-        </p>
-    {% endblock %}
-
-The ``extends`` tag is the key here. It tells the template engine that this
-template "extends" another template. When the template system evaluates this
-template, first it locates the parent. The extends tag should be the first tag
-in the template.
-
-Note that since the child template doesn't define the ``footer`` block, the
-value from the parent template is used instead.
-
-You can't define multiple ``block`` tags with the same name in the same
-template. This limitation exists because a block tag works in "both"
-directions. That is, a block tag doesn't just provide a hole to fill - it also
-defines the content that fills the hole in the *parent*. If there were two
-similarly-named ``block`` tags in a template, that template's parent wouldn't
-know which one of the blocks' content to use.
-
-If you want to print a block multiple times you can however use the
-``block`` function:
-
-.. code-block:: twig
-
-    <title>{% block title %}{% endblock %}</title>
-    <h1>{{ block('title') }}</h1>
-    {% block body %}{% endblock %}
-
-Parent Blocks
--------------
-
-It's possible to render the contents of the parent block by using the
-:doc:`parent<../functions/parent>` function. This gives back the results of
-the parent block:
-
-.. code-block:: twig
-
-    {% block sidebar %}
-        <h3>Table Of Contents</h3>
-        ...
-        {{ parent() }}
-    {% endblock %}
-
-Named Block End-Tags
---------------------
-
-Twig allows you to put the name of the block after the end tag for better
-readability (the name after the ``endblock`` word must match the block name):
-
-.. code-block:: twig
-
-    {% block sidebar %}
-        {% block inner_sidebar %}
-            ...
-        {% endblock inner_sidebar %}
-    {% endblock sidebar %}
-
-Block Nesting and Scope
------------------------
-
-Blocks can be nested for more complex layouts. Per default, blocks have access
-to variables from outer scopes:
-
-.. code-block:: twig
-
-    {% for item in seq %}
-        <li>{% block loop_item %}{{ item }}{% endblock %}</li>
-    {% endfor %}
-
-Block Shortcuts
----------------
-
-For blocks with little content, it's possible to use a shortcut syntax. The
-following constructs do the same thing:
-
-.. code-block:: twig
-
-    {% block title %}
-        {{ page_title|title }}
-    {% endblock %}
-
-.. code-block:: twig
-
-    {% block title page_title|title %}
-
-Dynamic Inheritance
--------------------
-
-Twig supports dynamic inheritance by using a variable as the base template:
-
-.. code-block:: twig
-
-    {% extends some_var %}
-
-If the variable evaluates to a ``\Twig\Template`` or a ``\Twig\TemplateWrapper``
-instance, Twig will use it as the parent template::
-
-    // {% extends layout %}
-
-    // deprecated as of Twig 1.28
-    $layout = $twig->loadTemplate('some_layout_template.twig');
-
-    // as of Twig 1.28
-    $layout = $twig->load('some_layout_template.twig');
-
-    $twig->display('template.twig', ['layout' => $layout]);
-
-.. versionadded:: 1.2
-    The possibility to pass an array of templates has been added in Twig 1.2.
-
-You can also provide a list of templates that are checked for existence. The
-first template that exists will be used as a parent:
-
-.. code-block:: twig
-
-    {% extends ['layout.html', 'base_layout.html'] %}
-
-Conditional Inheritance
------------------------
-
-As the template name for the parent can be any valid Twig expression, it's
-possible to make the inheritance mechanism conditional:
-
-.. code-block:: twig
-
-    {% extends standalone ? "minimum.html" : "base.html" %}
-
-In this example, the template will extend the "minimum.html" layout template
-if the ``standalone`` variable evaluates to ``true``, and "base.html"
-otherwise.
-
-How do blocks work?
--------------------
-
-A block provides a way to change how a certain part of a template is rendered
-but it does not interfere in any way with the logic around it.
-
-Let's take the following example to illustrate how a block works and more
-importantly, how it does not work:
-
-.. code-block:: twig
-
-    {# base.twig #}
-
-    {% for post in posts %}
-        {% block post %}
-            <h1>{{ post.title }}</h1>
-            <p>{{ post.body }}</p>
-        {% endblock %}
-    {% endfor %}
-
-If you render this template, the result would be exactly the same with or
-without the ``block`` tag. The ``block`` inside the ``for`` loop is just a way
-to make it overridable by a child template:
-
-.. code-block:: twig
-
-    {# child.twig #}
-
-    {% extends "base.twig" %}
-
-    {% block post %}
-        <article>
-            <header>{{ post.title }}</header>
-            <section>{{ post.text }}</section>
-        </article>
-    {% endblock %}
-
-Now, when rendering the child template, the loop is going to use the block
-defined in the child template instead of the one defined in the base one; the
-executed template is then equivalent to the following one:
-
-.. code-block:: twig
-
-    {% for post in posts %}
-        <article>
-            <header>{{ post.title }}</header>
-            <section>{{ post.text }}</section>
-        </article>
-    {% endfor %}
-
-Let's take another example: a block included within an ``if`` statement:
-
-.. code-block:: twig
-
-    {% if posts is empty %}
-        {% block head %}
-            {{ parent() }}
-
-            <meta name="robots" content="noindex, follow">
-        {% endblock head %}
-    {% endif %}
-
-Contrary to what you might think, this template does not define a block
-conditionally; it just makes overridable by a child template the output of
-what will be rendered when the condition is ``true``.
-
-If you want the output to be displayed conditionally, use the following
-instead:
-
-.. code-block:: twig
-
-    {% block head %}
-        {{ parent() }}
-
-        {% if posts is empty %}
-            <meta name="robots" content="noindex, follow">
-        {% endif %}
-    {% endblock head %}
-
-.. seealso:: :doc:`block<../functions/block>`, :doc:`block<../tags/block>`, :doc:`parent<../functions/parent>`, :doc:`use<../tags/use>`
diff --git a/vendor/twig/twig/doc/tags/filter.rst b/vendor/twig/twig/doc/tags/filter.rst
deleted file mode 100644
index a85a6cfbf945376c54a8024f5ccb56815e28635a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/filter.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-``filter``
-==========
-
-.. note::
-
-    As of Twig 1.40, you should use the ``apply`` tag instead which does the
-    same thing except that the wrapped template data is not scoped.
-
-Filter sections allow you to apply regular Twig filters on a block of template
-data. Just wrap the code in the special ``filter`` section:
-
-.. code-block:: twig
-
-    {% filter upper %}
-        This text becomes uppercase
-    {% endfilter %}
-
-You can also chain filters and pass arguments to them:
-
-.. code-block:: twig
-
-    {% filter lower|escape('html') %}
-        <strong>SOME TEXT</strong>
-    {% endfilter %}
-
-    {# outputs "&lt;strong&gt;some text&lt;/strong&gt;" #}
diff --git a/vendor/twig/twig/doc/tags/flush.rst b/vendor/twig/twig/doc/tags/flush.rst
deleted file mode 100644
index 13948b2beb2b1810cdf5b6a6223d48d279d63b7f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/flush.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-``flush``
-=========
-
-.. versionadded:: 1.5
-    The flush tag was added in Twig 1.5.
-
-The ``flush`` tag tells Twig to flush the output buffer:
-
-.. code-block:: twig
-
-    {% flush %}
-
-.. note::
-
-    Internally, Twig uses the PHP `flush`_ function.
-
-.. _`flush`: https://secure.php.net/flush
diff --git a/vendor/twig/twig/doc/tags/for.rst b/vendor/twig/twig/doc/tags/for.rst
deleted file mode 100644
index a55e163327125dd5b12ad867aaaf4e17ebf5fe10..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/for.rst
+++ /dev/null
@@ -1,179 +0,0 @@
-``for``
-=======
-
-Loop over each item in a sequence. For example, to display a list of users
-provided in a variable called ``users``:
-
-.. code-block:: twig
-
-    <h1>Members</h1>
-    <ul>
-        {% for user in users %}
-            <li>{{ user.username|e }}</li>
-        {% endfor %}
-    </ul>
-
-.. note::
-
-    A sequence can be either an array or an object implementing the
-    ``Traversable`` interface.
-
-If you do need to iterate over a sequence of numbers, you can use the ``..``
-operator:
-
-.. code-block:: twig
-
-    {% for i in 0..10 %}
-        * {{ i }}
-    {% endfor %}
-
-The above snippet of code would print all numbers from 0 to 10.
-
-It can be also useful with letters:
-
-.. code-block:: twig
-
-    {% for letter in 'a'..'z' %}
-        * {{ letter }}
-    {% endfor %}
-
-The ``..`` operator can take any expression at both sides:
-
-.. code-block:: twig
-
-    {% for letter in 'a'|upper..'z'|upper %}
-        * {{ letter }}
-    {% endfor %}
-
-.. tip:
-
-    If you need a step different from 1, you can use the ``range`` function
-    instead.
-
-The `loop` variable
--------------------
-
-Inside of a ``for`` loop block you can access some special variables:
-
-===================== =============================================================
-Variable              Description
-===================== =============================================================
-``loop.index``        The current iteration of the loop. (1 indexed)
-``loop.index0``       The current iteration of the loop. (0 indexed)
-``loop.revindex``     The number of iterations from the end of the loop (1 indexed)
-``loop.revindex0``    The number of iterations from the end of the loop (0 indexed)
-``loop.first``        True if first iteration
-``loop.last``         True if last iteration
-``loop.length``       The number of items in the sequence
-``loop.parent``       The parent context
-===================== =============================================================
-
-.. code-block:: twig
-
-    {% for user in users %}
-        {{ loop.index }} - {{ user.username }}
-    {% endfor %}
-
-.. note::
-
-    The ``loop.length``, ``loop.revindex``, ``loop.revindex0``, and
-    ``loop.last`` variables are only available for PHP arrays, or objects that
-    implement the ``Countable`` interface. They are also not available when
-    looping with a condition.
-
-.. versionadded:: 1.2
-    The ``if`` modifier support has been added in Twig 1.2.
-
-Adding a condition
-------------------
-
-.. tip::
-
-    As of Twig 1.41, use the :doc:`filter <../filters/filter>` filter instead,
-    or an ``if`` condition inside the ``for`` body (if your condition depends on
-    a variable updated inside the loop and you are not using the ``loop``
-    variable).
-
-Unlike in PHP, it's not possible to ``break`` or ``continue`` in a loop. You
-can however filter the sequence during iteration which allows you to skip
-items. The following example skips all the users which are not active:
-
-.. code-block:: twig
-
-    <ul>
-        {% for user in users if user.active %}
-            <li>{{ user.username|e }}</li>
-        {% endfor %}
-    </ul>
-
-The advantage is that the special loop variable will count correctly thus not
-counting the users not iterated over. Keep in mind that properties like
-``loop.last`` will not be defined when using loop conditions.
-
-.. note::
-
-    Using the ``loop`` variable within the condition is not recommended as it
-    will probably not be doing what you expect it to. For instance, adding a
-    condition like ``loop.index > 4`` won't work as the index is only
-    incremented when the condition is true (so the condition will never
-    match).
-
-The `else` Clause
------------------
-
-If no iteration took place because the sequence was empty, you can render a
-replacement block by using ``else``:
-
-.. code-block:: twig
-
-    <ul>
-        {% for user in users %}
-            <li>{{ user.username|e }}</li>
-        {% else %}
-            <li><em>no user found</em></li>
-        {% endfor %}
-    </ul>
-
-Iterating over Keys
--------------------
-
-By default, a loop iterates over the values of the sequence. You can iterate
-on keys by using the ``keys`` filter:
-
-.. code-block:: twig
-
-    <h1>Members</h1>
-    <ul>
-        {% for key in users|keys %}
-            <li>{{ key }}</li>
-        {% endfor %}
-    </ul>
-
-Iterating over Keys and Values
-------------------------------
-
-You can also access both keys and values:
-
-.. code-block:: twig
-
-    <h1>Members</h1>
-    <ul>
-        {% for key, user in users %}
-            <li>{{ key }}: {{ user.username|e }}</li>
-        {% endfor %}
-    </ul>
-
-Iterating over a Subset
------------------------
-
-You might want to iterate over a subset of values. This can be achieved using
-the :doc:`slice <../filters/slice>` filter:
-
-.. code-block:: twig
-
-    <h1>Top Ten Members</h1>
-    <ul>
-        {% for user in users|slice(0, 10) %}
-            <li>{{ user.username|e }}</li>
-        {% endfor %}
-    </ul>
diff --git a/vendor/twig/twig/doc/tags/from.rst b/vendor/twig/twig/doc/tags/from.rst
deleted file mode 100644
index 96c439aa74b2b6f3eeae0c9bea8d27b0bcf0876b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/from.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-``from``
-========
-
-The ``from`` tag imports :doc:`macro<../tags/macro>` names into the current
-namespace. The tag is documented in detail in the documentation for the
-:doc:`macro<../tags/macro>` tag.
diff --git a/vendor/twig/twig/doc/tags/if.rst b/vendor/twig/twig/doc/tags/if.rst
deleted file mode 100644
index 2a1610c822aa63e72844c8ab746cef8af41ca771..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/if.rst
+++ /dev/null
@@ -1,79 +0,0 @@
-``if``
-======
-
-The ``if`` statement in Twig is comparable with the if statements of PHP.
-
-In the simplest form you can use it to test if an expression evaluates to
-``true``:
-
-.. code-block:: twig
-
-    {% if online == false %}
-        <p>Our website is in maintenance mode. Please, come back later.</p>
-    {% endif %}
-
-You can also test if an array is not empty:
-
-.. code-block:: twig
-
-    {% if users %}
-        <ul>
-            {% for user in users %}
-                <li>{{ user.username|e }}</li>
-            {% endfor %}
-        </ul>
-    {% endif %}
-
-.. note::
-
-    If you want to test if the variable is defined, use ``if users is
-    defined`` instead.
-
-You can also use ``not`` to check for values that evaluate to ``false``:
-
-.. code-block:: twig
-
-    {% if not user.subscribed %}
-        <p>You are not subscribed to our mailing list.</p>
-    {% endif %}
-
-For multiple conditions, ``and`` and ``or`` can be used:
-
-.. code-block:: twig
-
-    {% if temperature > 18 and temperature < 27 %}
-        <p>It's a nice day for a walk in the park.</p>
-    {% endif %}
-
-For multiple branches ``elseif`` and ``else`` can be used like in PHP. You can
-use more complex ``expressions`` there too:
-
-.. code-block:: twig
-
-    {% if product.stock > 10 %}
-       Available
-    {% elseif product.stock > 0 %}
-       Only {{ product.stock }} left!
-    {% else %}
-       Sold-out!
-    {% endif %}
-
-.. note::
-
-    The rules to determine if an expression is ``true`` or ``false`` are the
-    same as in PHP; here are the edge cases rules:
-
-    ====================== ====================
-    Value                  Boolean evaluation
-    ====================== ====================
-    empty string           false
-    numeric zero           false
-    NAN (Not A Number)     true
-    INF (Infinity)         true
-    whitespace-only string true
-    string "0" or '0'      false
-    empty array            false
-    null                   false
-    non-empty array        true
-    object                 true
-    ====================== ====================
diff --git a/vendor/twig/twig/doc/tags/import.rst b/vendor/twig/twig/doc/tags/import.rst
deleted file mode 100644
index f217479fb38f35ca3e7ca90de5546910c31a80e6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/import.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-``import``
-==========
-
-The ``import`` tag imports :doc:`macro<../tags/macro>` names in a local
-variable. The tag is documented in detail in the documentation for the
-:doc:`macro<../tags/macro>` tag.
diff --git a/vendor/twig/twig/doc/tags/include.rst b/vendor/twig/twig/doc/tags/include.rst
deleted file mode 100644
index 624e86542e2fdcafd61cd9f01219b26dc7110c1f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/include.rst
+++ /dev/null
@@ -1,114 +0,0 @@
-``include``
-===========
-
-The ``include`` statement includes a template and outputs the rendered content
-of that file:
-
-.. code-block:: twig
-
-    {% include 'header.html' %}
-        Body
-    {% include 'footer.html' %}
-
-.. note::
-
-    As of Twig 1.12, it is recommended to use the
-    :doc:`include<../functions/include>` function instead as it provides the
-    same features with a bit more flexibility:
-
-    * The ``include`` function is semantically more "correct" (including a
-      template outputs its rendered contents in the current scope; a tag should
-      not display anything);
-
-    * It's easier to store the rendered template in a variable when using
-      the ``include`` function:
-
-      .. code-block:: twig
-
-          {% set content %}{% include 'template.html' %}{% endset %}
-
-          {# vs #}
-
-          {% set content = include('template.html') %}
-
-    * The ``include`` function does not impose any specific order for
-      arguments thanks to :ref:`named arguments <named-arguments>`.
-
-Included templates have access to the variables of the active context.
-
-If you are using the filesystem loader, the templates are looked for in the
-paths defined by it.
-
-You can add additional variables by passing them after the ``with`` keyword:
-
-.. code-block:: twig
-
-    {# template.html will have access to the variables from the current context and the additional ones provided #}
-    {% include 'template.html' with {'foo': 'bar'} %}
-
-    {% set vars = {'foo': 'bar'} %}
-    {% include 'template.html' with vars %}
-
-You can disable access to the context by appending the ``only`` keyword:
-
-.. code-block:: twig
-
-    {# only the foo variable will be accessible #}
-    {% include 'template.html' with {'foo': 'bar'} only %}
-
-.. code-block:: twig
-
-    {# no variables will be accessible #}
-    {% include 'template.html' only %}
-
-.. tip::
-
-    When including a template created by an end user, you should consider
-    sandboxing it. More information in the :doc:`Twig for Developers<../api>`
-    chapter and in the :doc:`sandbox<../tags/sandbox>` tag documentation.
-
-The template name can be any valid Twig expression:
-
-.. code-block:: twig
-
-    {% include some_var %}
-    {% include ajax ? 'ajax.html' : 'not_ajax.html' %}
-
-And if the expression evaluates to a ``\Twig\Template`` or a
-``\Twig\TemplateWrapper`` instance, Twig will use it directly::
-
-    // {% include template %}
-
-    // deprecated as of Twig 1.28
-    $template = $twig->loadTemplate('some_template.twig');
-
-    // as of Twig 1.28
-    $template = $twig->load('some_template.twig');
-
-    $twig->display('template.twig', ['template' => $template]);
-
-.. versionadded:: 1.2
-    The ``ignore missing`` feature has been added in Twig 1.2.
-
-You can mark an include with ``ignore missing`` in which case Twig will ignore
-the statement if the template to be included does not exist. It has to be
-placed just after the template name. Here some valid examples:
-
-.. code-block:: twig
-
-    {% include 'sidebar.html' ignore missing %}
-    {% include 'sidebar.html' ignore missing with {'foo': 'bar'} %}
-    {% include 'sidebar.html' ignore missing only %}
-
-.. versionadded:: 1.2
-    The possibility to pass an array of templates has been added in Twig 1.2.
-
-You can also provide a list of templates that are checked for existence before
-inclusion. The first template that exists will be included:
-
-.. code-block:: twig
-
-    {% include ['page_detailed.html', 'page.html'] %}
-
-If ``ignore missing`` is given, it will fall back to rendering nothing if none
-of the templates exist, otherwise it will throw an exception.
diff --git a/vendor/twig/twig/doc/tags/index.rst b/vendor/twig/twig/doc/tags/index.rst
deleted file mode 100644
index 530f95f10052abd5374e8e9ce0d3b437f92200b2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/index.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-Tags
-====
-
-.. toctree::
-    :maxdepth: 1
-
-    apply
-    autoescape
-    block
-    deprecated
-    do
-    embed
-    extends
-    filter
-    flush
-    for
-    from
-    if
-    import
-    include
-    macro
-    sandbox
-    set
-    spaceless
-    use
-    verbatim
-    with
diff --git a/vendor/twig/twig/doc/tags/macro.rst b/vendor/twig/twig/doc/tags/macro.rst
deleted file mode 100644
index 31bca00a5125fc94c5be52b86498f7874ac30542..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/macro.rst
+++ /dev/null
@@ -1,139 +0,0 @@
-``macro``
-=========
-
-.. versionadded:: 1.12
-
-    The possibility to define default values for arguments in the macro
-    signature was added in Twig 1.12.
-
-Macros are comparable with functions in regular programming languages. They
-are useful to reuse template fragments to not repeat yourself.
-
-Macros are defined in regular templates.
-
-Imagine having a generic helper template that define how to render HTML forms
-via macros (called ``forms.html``):
-
-.. code-block:: twig
-
-    {% macro input(name, value, type = "text", size = 20) %}
-        <input type="{{ type }}" name="{{ name }}" value="{{ value|e }}" size="{{ size }}" />
-    {% endmacro %}
-
-    {% macro textarea(name, value, rows = 10, cols = 40) %}
-        <textarea name="{{ name }}" rows="{{ rows }}" cols="{{ cols }}">{{ value|e }}</textarea>
-    {% endmacro %}
-
-Each macro argument can have a default value (here ``text`` is the default value
-for ``type`` if not provided in the call).
-
-.. note::
-
-    Before Twig 1.12, defining default argument values was done via the
-    ``default`` filter in the macro body:
-
-    .. code-block:: twig
-
-        {% macro input(name, value, type, size) %}
-            <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
-        {% endmacro %}
-
-Macros differ from native PHP functions in a few ways:
-
-* Arguments of a macro are always optional.
-
-* If extra positional arguments are passed to a macro, they end up in the
-  special ``varargs`` variable as a list of values.
-
-But as with PHP functions, macros don't have access to the current template
-variables.
-
-.. tip::
-
-    You can pass the whole context as an argument by using the special
-    ``_context`` variable.
-
-Import
-------
-
-There are two ways to import macros. You can import the complete template
-containing the macros into a local variable (via the ``import`` tag) or only
-import specific macros from the template (via the ``from`` tag).
-
-To import all macros from a template into a local variable, use the ``import``
-tag:
-
-.. code-block:: twig
-
-    {% import "forms.html" as forms %}
-
-The above ``import`` call imports the ``forms.html`` file (which can contain
-only macros, or a template and some macros), and import the macros as items of
-the ``forms`` local variable.
-
-The macros can then be called at will in the *current* template:
-
-.. code-block:: twig
-
-    <p>{{ forms.input('username') }}</p>
-    <p>{{ forms.input('password', null, 'password') }}</p>
-
-When you want to use a macro in another macro from the same file, you need to
-import it locally:
-
-.. code-block:: twig
-
-    {% macro input(name, value, type, size) %}
-        <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
-    {% endmacro %}
-
-    {% macro wrapped_input(name, value, type, size) %}
-        {% import _self as forms %}
-
-        <div class="field">
-            {{ forms.input(name, value, type, size) }}
-        </div>
-    {% endmacro %}
-
-Alternatively you can import names from the template into the current namespace
-via the ``from`` tag:
-
-.. code-block:: twig
-
-    {% from 'forms.html' import input as input_field, textarea %}
-
-    <p>{{ input_field('password', '', 'password') }}</p>
-    <p>{{ textarea('comment') }}</p>
-
-.. note::
-
-    Importing macros using ``import`` or ``from`` is **local** to the current
-    file. The imported macros are not available in included templates or child
-    templates; you need to explicitly re-import macros in each file.
-
-.. tip::
-
-    To import macros from the current file, use the special ``_self`` variable:
-
-    .. code-block:: twig
-
-        {% import _self as forms %}
-
-        <p>{{ forms.input('username') }}</p>
-
-    When you define a macro in the template where you are going to use it, you
-    might be tempted to call the macro directly via ``_self.input()`` instead of
-    importing it; even if it seems to work, this is just a side-effect of the
-    current implementation and it won't work anymore in Twig 2.x.
-
-Named Macro End-Tags
---------------------
-
-Twig allows you to put the name of the macro after the end tag for better
-readability (the name after the ``endmacro`` word must match the macro name):
-
-.. code-block:: twig
-
-    {% macro input() %}
-        ...
-    {% endmacro input %}
diff --git a/vendor/twig/twig/doc/tags/sandbox.rst b/vendor/twig/twig/doc/tags/sandbox.rst
deleted file mode 100644
index b331fdb8e698eef3e7ac516b8230309587ab4655..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/sandbox.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-``sandbox``
-===========
-
-The ``sandbox`` tag can be used to enable the sandboxing mode for an included
-template, when sandboxing is not enabled globally for the Twig environment:
-
-.. code-block:: twig
-
-    {% sandbox %}
-        {% include 'user.html' %}
-    {% endsandbox %}
-
-.. warning::
-
-    The ``sandbox`` tag is only available when the sandbox extension is
-    enabled (see the :doc:`Twig for Developers<../api>` chapter).
-
-.. note::
-
-    The ``sandbox`` tag can only be used to sandbox an include tag and it
-    cannot be used to sandbox a section of a template. The following example
-    won't work:
-
-    .. code-block:: twig
-
-        {% sandbox %}
-            {% for i in 1..2 %}
-                {{ i }}
-            {% endfor %}
-        {% endsandbox %}
diff --git a/vendor/twig/twig/doc/tags/set.rst b/vendor/twig/twig/doc/tags/set.rst
deleted file mode 100644
index f752fddb67b4a84bb64937c9b05e36cb5d5bf599..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/set.rst
+++ /dev/null
@@ -1,78 +0,0 @@
-``set``
-=======
-
-Inside code blocks you can also assign values to variables. Assignments use
-the ``set`` tag and can have multiple targets.
-
-Here is how you can assign the ``bar`` value to the ``foo`` variable:
-
-.. code-block:: twig
-
-    {% set foo = 'bar' %}
-
-After the ``set`` call, the ``foo`` variable is available in the template like
-any other ones:
-
-.. code-block:: twig
-
-    {# displays bar #}
-    {{ foo }}
-
-The assigned value can be any valid :ref:`Twig expression
-<twig-expressions>`:
-
-.. code-block:: twig
-
-    {% set foo = [1, 2] %}
-    {% set foo = {'foo': 'bar'} %}
-    {% set foo = 'foo' ~ 'bar' %}
-
-Several variables can be assigned in one block:
-
-.. code-block:: twig
-
-    {% set foo, bar = 'foo', 'bar' %}
-
-    {# is equivalent to #}
-
-    {% set foo = 'foo' %}
-    {% set bar = 'bar' %}
-
-The ``set`` tag can also be used to 'capture' chunks of text:
-
-.. code-block:: twig
-
-    {% set foo %}
-        <div id="pagination">
-            ...
-        </div>
-    {% endset %}
-
-.. caution::
-
-    If you enable automatic output escaping, Twig will only consider the
-    content to be safe when capturing chunks of text.
-
-.. note::
-
-    Note that loops are scoped in Twig; therefore a variable declared inside a
-    ``for`` loop is not accessible outside the loop itself:
-
-    .. code-block:: twig
-
-        {% for item in list %}
-            {% set foo = item %}
-        {% endfor %}
-
-        {# foo is NOT available #}
-
-    If you want to access the variable, just declare it before the loop:
-
-    .. code-block:: twig
-
-        {% set foo = "" %}
-        {% for item in list %}
-            {% set foo = item %}
-        {% endfor %}
-
-        {# foo is available #}
diff --git a/vendor/twig/twig/doc/tags/spaceless.rst b/vendor/twig/twig/doc/tags/spaceless.rst
deleted file mode 100644
index 2608538aae68b8be80dc54c4fa8367d20c22cf11..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/spaceless.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-``spaceless``
-=============
-
-.. tip::
-
-    As of Twig 1.38, use the :doc:`spaceless <../filters/spaceless>` filter instead.
-
-Use the ``spaceless`` tag to remove whitespace *between HTML tags*, not
-whitespace within HTML tags or whitespace in plain text:
-
-.. code-block:: twig
-
-    {% spaceless %}
-        <div>
-            <strong>foo</strong>
-        </div>
-    {% endspaceless %}
-
-    {# output will be <div><strong>foo</strong></div> #}
-
-This tag is not meant to "optimize" the size of the generated HTML content but
-merely to avoid extra whitespace between HTML tags to avoid browser rendering
-quirks under some circumstances.
-
-.. tip::
-
-    If you want to optimize the size of the generated HTML content, gzip
-    compress the output instead.
-
-.. tip::
-
-    If you want to create a tag that actually removes all extra whitespace in
-    an HTML string, be warned that this is not as easy as it seems to be
-    (think of ``textarea`` or ``pre`` tags for instance). Using a third-party
-    library like Tidy is probably a better idea.
-
-.. tip::
-
-    For more information on whitespace control, read the
-    :ref:`dedicated section <templates-whitespace-control>` of the documentation and learn how
-    you can also use the whitespace control modifier on your tags.
diff --git a/vendor/twig/twig/doc/tags/use.rst b/vendor/twig/twig/doc/tags/use.rst
deleted file mode 100644
index b83d1beab91fbd7e0ea66999aec87bbfd3fac748..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/use.rst
+++ /dev/null
@@ -1,124 +0,0 @@
-``use``
-=======
-
-.. versionadded:: 1.1
-    Horizontal reuse was added in Twig 1.1.
-
-.. note::
-
-    Horizontal reuse is an advanced Twig feature that is hardly ever needed in
-    regular templates. It is mainly used by projects that need to make
-    template blocks reusable without using inheritance.
-
-Template inheritance is one of the most powerful features of Twig but it is
-limited to single inheritance; a template can only extend one other template.
-This limitation makes template inheritance simple to understand and easy to
-debug:
-
-.. code-block:: twig
-
-    {% extends "base.html" %}
-
-    {% block title %}{% endblock %}
-    {% block content %}{% endblock %}
-
-Horizontal reuse is a way to achieve the same goal as multiple inheritance,
-but without the associated complexity:
-
-.. code-block:: twig
-
-    {% extends "base.html" %}
-
-    {% use "blocks.html" %}
-
-    {% block title %}{% endblock %}
-    {% block content %}{% endblock %}
-
-The ``use`` statement tells Twig to import the blocks defined in
-``blocks.html`` into the current template (it's like macros, but for blocks):
-
-.. code-block:: twig
-
-    {# blocks.html #}
-    
-    {% block sidebar %}{% endblock %}
-
-In this example, the ``use`` statement imports the ``sidebar`` block into the
-main template. The code is mostly equivalent to the following one (the
-imported blocks are not outputted automatically):
-
-.. code-block:: twig
-
-    {% extends "base.html" %}
-
-    {% block sidebar %}{% endblock %}
-    {% block title %}{% endblock %}
-    {% block content %}{% endblock %}
-
-.. note::
-
-    The ``use`` tag only imports a template if it does not extend another
-    template, if it does not define macros, and if the body is empty. But it
-    can *use* other templates.
-
-.. note::
-
-    Because ``use`` statements are resolved independently of the context
-    passed to the template, the template reference cannot be an expression.
-
-The main template can also override any imported block. If the template
-already defines the ``sidebar`` block, then the one defined in ``blocks.html``
-is ignored. To avoid name conflicts, you can rename imported blocks:
-
-.. code-block:: twig
-
-    {% extends "base.html" %}
-
-    {% use "blocks.html" with sidebar as base_sidebar, title as base_title %}
-
-    {% block sidebar %}{% endblock %}
-    {% block title %}{% endblock %}
-    {% block content %}{% endblock %}
-
-.. versionadded:: 1.3
-    The ``parent()`` support was added in Twig 1.3.
-
-The ``parent()`` function automatically determines the correct inheritance
-tree, so it can be used when overriding a block defined in an imported
-template:
-
-.. code-block:: twig
-
-    {% extends "base.html" %}
-
-    {% use "blocks.html" %}
-
-    {% block sidebar %}
-        {{ parent() }}
-    {% endblock %}
-
-    {% block title %}{% endblock %}
-    {% block content %}{% endblock %}
-
-In this example, ``parent()`` will correctly call the ``sidebar`` block from
-the ``blocks.html`` template.
-
-.. tip::
-
-    In Twig 1.2, renaming allows you to simulate inheritance by calling the
-    "parent" block:
-
-    .. code-block:: twig
-
-        {% extends "base.html" %}
-
-        {% use "blocks.html" with sidebar as parent_sidebar %}
-
-        {% block sidebar %}
-            {{ block('parent_sidebar') }}
-        {% endblock %}
-
-.. note::
-
-    You can use as many ``use`` statements as you want in any given template.
-    If two imported templates define the same block, the latest one wins.
diff --git a/vendor/twig/twig/doc/tags/verbatim.rst b/vendor/twig/twig/doc/tags/verbatim.rst
deleted file mode 100644
index 001bbd5153a77961536e21f71f4096e93518e612..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/verbatim.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-``verbatim``
-============
-
-.. versionadded:: 1.12
-    The ``verbatim`` tag was added in Twig 1.12 (it was named ``raw`` before).
-
-The ``verbatim`` tag marks sections as being raw text that should not be
-parsed. For example to put Twig syntax as example into a template you can use
-this snippet:
-
-.. code-block:: twig
-
-    {% verbatim %}
-        <ul>
-        {% for item in seq %}
-            <li>{{ item }}</li>
-        {% endfor %}
-        </ul>
-    {% endverbatim %}
-
-.. note::
-
-    The ``verbatim`` tag works in the exact same way as the old ``raw`` tag,
-    but was renamed to avoid confusion with the ``raw`` filter.
\ No newline at end of file
diff --git a/vendor/twig/twig/doc/tags/with.rst b/vendor/twig/twig/doc/tags/with.rst
deleted file mode 100644
index bf9df5d5129a860b8ba2e5c9104eceea1078db1c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tags/with.rst
+++ /dev/null
@@ -1,44 +0,0 @@
-``with``
-========
-
-.. versionadded:: 1.28
-    The ``with`` tag was added in Twig 1.28.
-
-Use the ``with`` tag to create a new inner scope. Variables set within this
-scope are not visible outside of the scope:
-
-.. code-block:: twig
-
-    {% with %}
-        {% set foo = 42 %}
-        {{ foo }}           foo is 42 here
-    {% endwith %}
-    foo is not visible here any longer
-
-Instead of defining variables at the beginning of the scope, you can pass a
-hash of variables you want to define in the ``with`` tag; the previous example
-is equivalent to the following one:
-
-.. code-block:: twig
-
-    {% with { foo: 42 } %}
-        {{ foo }}           foo is 42 here
-    {% endwith %}
-    foo is not visible here any longer
-
-    {# it works with any expression that resolves to a hash #}
-    {% set vars = { foo: 42 } %}
-    {% with vars %}
-        ...
-    {% endwith %}
-
-By default, the inner scope has access to the outer scope context; you can
-disable this behavior by appending the ``only`` keyword:
-
-.. code-block:: twig
-
-    {% set bar = 'bar' %}
-    {% with { foo: 42 } only %}
-        {# only foo is defined #}
-        {# bar is not defined #}
-    {% endwith %}
diff --git a/vendor/twig/twig/doc/templates.rst b/vendor/twig/twig/doc/templates.rst
deleted file mode 100644
index 872e0b56731d4865c8670ebb816a25e0544b72be..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/templates.rst
+++ /dev/null
@@ -1,889 +0,0 @@
-Twig for Template Designers
-===========================
-
-This document describes the syntax and semantics of the template engine and
-will be most useful as reference to those creating Twig templates.
-
-Synopsis
---------
-
-A template is a regular text file. It can generate any text-based format (HTML,
-XML, CSV, LaTeX, etc.). It doesn't have a specific extension, ``.html`` or
-``.xml`` are just fine.
-
-A template contains **variables** or **expressions**, which get replaced with
-values when the template is evaluated, and **tags**, which control the
-template's logic.
-
-Below is a minimal template that illustrates a few basics. We will cover further
-details later on:
-
-.. code-block:: html+twig
-
-    <!DOCTYPE html>
-    <html>
-        <head>
-            <title>My Webpage</title>
-        </head>
-        <body>
-            <ul id="navigation">
-            {% for item in navigation %}
-                <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
-            {% endfor %}
-            </ul>
-
-            <h1>My Webpage</h1>
-            {{ a_variable }}
-        </body>
-    </html>
-
-There are two kinds of delimiters: ``{% ... %}`` and ``{{ ... }}``. The first
-one is used to execute statements such as for-loops, the latter outputs the
-result of an expression.
-
-IDEs Integration
-----------------
-
-Many IDEs support syntax highlighting and auto-completion for Twig:
-
-* *Textmate* via the `Twig bundle`_
-* *Vim* via the `Jinja syntax plugin`_ or the `vim-twig plugin`_
-* *Netbeans* via the `Twig syntax plugin`_ (until 7.1, native as of 7.2)
-* *PhpStorm* (native as of 2.1)
-* *Eclipse* via the `Twig plugin`_
-* *Sublime Text* via the `Twig bundle`_
-* *GtkSourceView* via the `Twig language definition`_ (used by gedit and other projects)
-* *Coda* and *SubEthaEdit* via the `Twig syntax mode`_
-* *Coda 2* via the `other Twig syntax mode`_
-* *Komodo* and *Komodo Edit* via the Twig highlight/syntax check mode
-* *Notepad++* via the `Notepad++ Twig Highlighter`_
-* *Emacs* via `web-mode.el`_
-* *Atom* via the `PHP-twig for atom`_
-* *Visual Studio Code* via the `Twig pack`_
-
-Also, `TwigFiddle`_ is an online service that allows you to execute Twig templates
-from a browser; it supports all versions of Twig.
-
-Variables
----------
-
-The application passes variables to the templates for manipulation in the
-template. Variables may have attributes or elements you can access, too. The
-visual representation of a variable depends heavily on the application providing
-it.
-
-Use a dot (``.``) to access attributes of a variable (methods or properties of a
-PHP object, or items of a PHP array):
-
-.. code-block:: twig
-
-    {{ foo.bar }}
-
-.. note::
-
-    It's important to know that the curly braces are *not* part of the
-    variable but the print statement. When accessing variables inside tags,
-    don't put the braces around them.
-
-.. sidebar:: Implementation
-
-    For convenience's sake ``foo.bar`` does the following things on the PHP
-    layer:
-
-    * check if ``foo`` is an array and ``bar`` a valid element;
-    * if not, and if ``foo`` is an object, check that ``bar`` is a valid property;
-    * if not, and if ``foo`` is an object, check that ``bar`` is a valid method
-      (even if ``bar`` is the constructor - use ``__construct()`` instead);
-    * if not, and if ``foo`` is an object, check that ``getBar`` is a valid method;
-    * if not, and if ``foo`` is an object, check that ``isBar`` is a valid method;
-    * if not, return a ``null`` value.
-
-    Twig also supports a specific syntax for accessing items on PHP arrays,
-    ``foo['bar']``:
-
-    * check if ``foo`` is an array and ``bar`` a valid element;
-    * if not, return a ``null`` value.
-
-If a variable or attribute does not exist, you will receive a ``null`` value
-when the ``strict_variables`` option is set to ``false``; alternatively, if ``strict_variables``
-is set, Twig will throw an error (see :ref:`environment options<environment_options>`).
-
-.. note::
-
-    If you want to access a dynamic attribute of a variable, use the
-    :doc:`attribute<functions/attribute>` function instead.
-
-    The ``attribute`` function is also useful when the attribute contains
-    special characters (like ``-`` that would be interpreted as the minus
-    operator):
-
-    .. code-block:: twig
-
-        {# equivalent to the non-working foo.data-foo #}
-        {{ attribute(foo, 'data-foo') }}
-
-Global Variables
-~~~~~~~~~~~~~~~~
-
-The following variables are always available in templates:
-
-* ``_self``: references the current template;
-* ``_context``: references the current context;
-* ``_charset``: references the current charset.
-
-Setting Variables
-~~~~~~~~~~~~~~~~~
-
-You can assign values to variables inside code blocks. Assignments use the
-:doc:`set<tags/set>` tag:
-
-.. code-block:: twig
-
-    {% set foo = 'foo' %}
-    {% set foo = [1, 2] %}
-    {% set foo = {'foo': 'bar'} %}
-
-Filters
--------
-
-Variables can be modified by **filters**. Filters are separated from the
-variable by a pipe symbol (``|``). Multiple filters can be chained. The output
-of one filter is applied to the next.
-
-The following example removes all HTML tags from the ``name`` and title-cases
-it:
-
-.. code-block:: twig
-
-    {{ name|striptags|title }}
-
-Filters that accept arguments have parentheses around the arguments. This
-example joins the elements of a list by commas:
-
-.. code-block:: twig
-
-    {{ list|join(', ') }}
-
-To apply a filter on a section of code, wrap it with the
-:doc:`apply<tags/apply>` tag:
-
-.. code-block:: twig
-
-    {% apply upper %}
-        This text becomes uppercase
-    {% endapply %}
-
-Go to the :doc:`filters<filters/index>` page to learn more about built-in
-filters.
-
-.. note::
-
-    The ``apply`` tag was introduced in Twig 1.40; use the ``filter`` tag with
-    previous versions.
-
-Functions
----------
-
-Functions can be called to generate content. Functions are called by their
-name followed by parentheses (``()``) and may have arguments.
-
-For instance, the ``range`` function returns a list containing an arithmetic
-progression of integers:
-
-.. code-block:: twig
-
-    {% for i in range(0, 3) %}
-        {{ i }},
-    {% endfor %}
-
-Go to the :doc:`functions<functions/index>` page to learn more about the
-built-in functions.
-
-.. _named-arguments:
-
-Named Arguments
----------------
-
-.. versionadded:: 1.12
-    Support for named arguments was added in Twig 1.12.
-
-.. code-block:: twig
-
-    {% for i in range(low=1, high=10, step=2) %}
-        {{ i }},
-    {% endfor %}
-
-Using named arguments makes your templates more explicit about the meaning of
-the values you pass as arguments:
-
-.. code-block:: twig
-
-    {{ data|convert_encoding('UTF-8', 'iso-2022-jp') }}
-
-    {# versus #}
-
-    {{ data|convert_encoding(from='iso-2022-jp', to='UTF-8') }}
-
-Named arguments also allow you to skip some arguments for which you don't want
-to change the default value:
-
-.. code-block:: twig
-
-    {# the first argument is the date format, which defaults to the global date format if null is passed #}
-    {{ "now"|date(null, "Europe/Paris") }}
-
-    {# or skip the format value by using a named argument for the time zone #}
-    {{ "now"|date(timezone="Europe/Paris") }}
-
-You can also use both positional and named arguments in one call, in which
-case positional arguments must always come before named arguments:
-
-.. code-block:: twig
-
-    {{ "now"|date('d/m/Y H:i', timezone="Europe/Paris") }}
-
-.. tip::
-
-    Each function and filter documentation page has a section where the names
-    of all arguments are listed when supported.
-
-Control Structure
------------------
-
-A control structure refers to all those things that control the flow of a
-program - conditionals (i.e. ``if``/``elseif``/``else``), ``for``-loops, as
-well as things like blocks. Control structures appear inside ``{% ... %}``
-blocks.
-
-For example, to display a list of users provided in a variable called
-``users``, use the :doc:`for<tags/for>` tag:
-
-.. code-block:: twig
-
-    <h1>Members</h1>
-    <ul>
-        {% for user in users %}
-            <li>{{ user.username|e }}</li>
-        {% endfor %}
-    </ul>
-
-The :doc:`if<tags/if>` tag can be used to test an expression:
-
-.. code-block:: twig
-
-    {% if users|length > 0 %}
-        <ul>
-            {% for user in users %}
-                <li>{{ user.username|e }}</li>
-            {% endfor %}
-        </ul>
-    {% endif %}
-
-Go to the :doc:`tags<tags/index>` page to learn more about the built-in tags.
-
-Comments
---------
-
-To comment-out part of a line in a template, use the comment syntax ``{# ...
-#}``. This is useful for debugging or to add information for other template
-designers or yourself:
-
-.. code-block:: twig
-
-    {# note: disabled template because we no longer use this
-        {% for user in users %}
-            ...
-        {% endfor %}
-    #}
-
-Including other Templates
--------------------------
-
-The :doc:`include<functions/include>` function is useful to include a template
-and return the rendered content of that template into the current one:
-
-.. code-block:: twig
-
-    {{ include('sidebar.html') }}
-
-By default, included templates have access to the same context as the template
-which includes them. This means that any variable defined in the main template
-will be available in the included template too:
-
-.. code-block:: twig
-
-    {% for box in boxes %}
-        {{ include('render_box.html') }}
-    {% endfor %}
-
-The included template ``render_box.html`` is able to access the ``box`` variable.
-
-The name of the template depends on the template loader. For instance, the
-``\Twig\Loader\FilesystemLoader`` allows you to access other templates by giving the
-filename. You can access templates in subdirectories with a slash:
-
-.. code-block:: twig
-
-    {{ include('sections/articles/sidebar.html') }}
-
-This behavior depends on the application embedding Twig.
-
-Template Inheritance
---------------------
-
-The most powerful part of Twig is template inheritance. Template inheritance
-allows you to build a base "skeleton" template that contains all the common
-elements of your site and defines **blocks** that child templates can
-override.
-
-It's easier to understand the concept by starting with an example.
-
-Let's define a base template, ``base.html``, which defines an HTML skeleton
-document that might be used for a two-column page:
-
-.. code-block:: html+twig
-
-    <!DOCTYPE html>
-    <html>
-        <head>
-            {% block head %}
-                <link rel="stylesheet" href="style.css" />
-                <title>{% block title %}{% endblock %} - My Webpage</title>
-            {% endblock %}
-        </head>
-        <body>
-            <div id="content">{% block content %}{% endblock %}</div>
-            <div id="footer">
-                {% block footer %}
-                    &copy; Copyright 2011 by <a href="http://domain.invalid/">you</a>.
-                {% endblock %}
-            </div>
-        </body>
-    </html>
-
-In this example, the :doc:`block<tags/block>` tags define four blocks that
-child templates can fill in. All the ``block`` tag does is to tell the
-template engine that a child template may override those portions of the
-template.
-
-A child template might look like this:
-
-.. code-block:: twig
-
-    {% extends "base.html" %}
-
-    {% block title %}Index{% endblock %}
-    {% block head %}
-        {{ parent() }}
-        <style type="text/css">
-            .important { color: #336699; }
-        </style>
-    {% endblock %}
-    {% block content %}
-        <h1>Index</h1>
-        <p class="important">
-            Welcome to my awesome homepage.
-        </p>
-    {% endblock %}
-
-The :doc:`extends<tags/extends>` tag is the key here. It tells the template
-engine that this template "extends" another template. When the template system
-evaluates this template, first it locates the parent. The extends tag should
-be the first tag in the template.
-
-Note that since the child template doesn't define the ``footer`` block, the
-value from the parent template is used instead.
-
-It's possible to render the contents of the parent block by using the
-:doc:`parent<functions/parent>` function. This gives back the results of the
-parent block:
-
-.. code-block:: twig
-
-    {% block sidebar %}
-        <h3>Table Of Contents</h3>
-        ...
-        {{ parent() }}
-    {% endblock %}
-
-.. tip::
-
-    The documentation page for the :doc:`extends<tags/extends>` tag describes
-    more advanced features like block nesting, scope, dynamic inheritance, and
-    conditional inheritance.
-
-.. note::
-
-    Twig also supports multiple inheritance via "horizontal reuse" with the help
-    of the :doc:`use<tags/use>` tag.
-
-HTML Escaping
--------------
-
-When generating HTML from templates, there's always a risk that a variable
-will include characters that affect the resulting HTML. There are two
-approaches: manually escaping each variable or automatically escaping
-everything by default.
-
-Twig supports both, automatic escaping is enabled by default.
-
-The automatic escaping strategy can be configured via the
-:ref:`autoescape<environment_options>` option and defaults to ``html``.
-
-Working with Manual Escaping
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If manual escaping is enabled, it is **your** responsibility to escape variables
-if needed. What to escape? Any variable that comes from an untrusted source.
-
-Escaping works by using the :doc:`escape<filters/escape>` or ``e`` filter:
-
-.. code-block:: twig
-
-    {{ user.username|e }}
-
-By default, the ``escape`` filter uses the ``html`` strategy, but depending on
-the escaping context, you might want to explicitly use an other strategy:
-
-.. code-block:: twig
-
-    {{ user.username|e('js') }}
-    {{ user.username|e('css') }}
-    {{ user.username|e('url') }}
-    {{ user.username|e('html_attr') }}
-
-Working with Automatic Escaping
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Whether automatic escaping is enabled or not, you can mark a section of a
-template to be escaped or not by using the :doc:`autoescape<tags/autoescape>`
-tag:
-
-.. code-block:: twig
-
-    {% autoescape %}
-        Everything will be automatically escaped in this block (using the HTML strategy)
-    {% endautoescape %}
-
-By default, auto-escaping uses the ``html`` escaping strategy. If you output
-variables in other contexts, you need to explicitly escape them with the
-appropriate escaping strategy:
-
-.. code-block:: twig
-
-    {% autoescape 'js' %}
-        Everything will be automatically escaped in this block (using the JS strategy)
-    {% endautoescape %}
-
-Escaping
---------
-
-It is sometimes desirable or even necessary to have Twig ignore parts it would
-otherwise handle as variables or blocks. For example if the default syntax is
-used and you want to use ``{{`` as raw string in the template and not start a
-variable you have to use a trick.
-
-The easiest way is to output the variable delimiter (``{{``) by using a variable
-expression:
-
-.. code-block:: twig
-
-    {{ '{{' }}
-
-For bigger sections it makes sense to mark a block
-:doc:`verbatim<tags/verbatim>`.
-
-Macros
-------
-
-.. versionadded:: 1.12
-    Support for default argument values was added in Twig 1.12.
-
-Macros are comparable with functions in regular programming languages. They are
-useful to reuse HTML fragments to not repeat yourself. They are described in the
-:doc:`macro<tags/macro>` tag documentation.
-
-.. _twig-expressions:
-
-Expressions
------------
-
-Twig allows expressions everywhere.
-
-.. note::
-
-    The operator precedence is as follows, with the lowest-precedence operators
-    listed first: ``?:`` (ternary operator), ``b-and``, ``b-xor``, ``b-or``,
-    ``or``, ``and``, ``==``, ``!=``, ``<``, ``>``, ``>=``, ``<=``, ``in``,
-    ``matches``, ``starts with``, ``ends with``, ``..``, ``+``, ``-``, ``~``,
-    ``*``, ``/``, ``//``, ``%``, ``is`` (tests), ``**``, ``??``, ``|``
-    (filters), ``[]``, and ``.``:
-
-    .. code-block:: twig
-
-        {% set greeting = 'Hello ' %}
-        {% set name = 'Fabien' %}
-
-        {{ greeting ~ name|lower }}   {# Hello fabien #}
-
-        {# use parenthesis to change precedence #}
-        {{ (greeting ~ name)|lower }} {# hello fabien #}
-
-Literals
-~~~~~~~~
-
-.. versionadded:: 1.5
-    Support for hash keys as names and expressions was added in Twig 1.5.
-
-The simplest form of expressions are literals. Literals are representations
-for PHP types such as strings, numbers, and arrays. The following literals
-exist:
-
-* ``"Hello World"``: Everything between two double or single quotes is a
-  string. They are useful whenever you need a string in the template (for
-  example as arguments to function calls, filters or just to extend or include
-  a template). A string can contain a delimiter if it is preceded by a
-  backslash (``\``) -- like in ``'It\'s good'``. If the string contains a
-  backslash (e.g. ``'c:\Program Files'``) escape it by doubling it
-  (e.g. ``'c:\\Program Files'``).
-
-* ``42`` / ``42.23``: Integers and floating point numbers are created by
-  writing the number down. If a dot is present the number is a float,
-  otherwise an integer.
-
-* ``["foo", "bar"]``: Arrays are defined by a sequence of expressions
-  separated by a comma (``,``) and wrapped with squared brackets (``[]``).
-
-* ``{"foo": "bar"}``: Hashes are defined by a list of keys and values
-  separated by a comma (``,``) and wrapped with curly braces (``{}``):
-
-  .. code-block:: twig
-
-    {# keys as string #}
-    { 'foo': 'foo', 'bar': 'bar' }
-
-    {# keys as names (equivalent to the previous hash) -- as of Twig 1.5 #}
-    { foo: 'foo', bar: 'bar' }
-
-    {# keys as integer #}
-    { 2: 'foo', 4: 'bar' }
-
-    {# keys can be omitted if it is the same as the variable name #}
-    { foo }
-    {# is equivalent to the following #}
-    { 'foo': foo }
-
-    {# keys as expressions (the expression must be enclosed into parentheses) -- as of Twig 1.5 #}
-    {% set foo = 'foo' %}
-    { (foo): 'foo', (1 + 1): 'bar', (foo ~ 'b'): 'baz' }
-
-* ``true`` / ``false``: ``true`` represents the true value, ``false``
-  represents the false value.
-
-* ``null``: ``null`` represents no specific value. This is the value returned
-  when a variable does not exist. ``none`` is an alias for ``null``.
-
-Arrays and hashes can be nested:
-
-.. code-block:: twig
-
-    {% set foo = [1, {"foo": "bar"}] %}
-
-.. tip::
-
-    Using double-quoted or single-quoted strings has no impact on performance
-    but :ref:`string interpolation <templates-string-interpolation>` is only
-    supported in double-quoted strings.
-
-Math
-~~~~
-
-Twig allows you to do math in templates; the following operators are supported:
-
-* ``+``: Adds two numbers together (the operands are casted to numbers). ``{{
-  1 + 1 }}`` is ``2``.
-
-* ``-``: Subtracts the second number from the first one. ``{{ 3 - 2 }}`` is
-  ``1``.
-
-* ``/``: Divides two numbers. The returned value will be a floating point
-  number. ``{{ 1 / 2 }}`` is ``{{ 0.5 }}``.
-
-* ``%``: Calculates the remainder of an integer division. ``{{ 11 % 7 }}`` is
-  ``4``.
-
-* ``//``: Divides two numbers and returns the floored integer result. ``{{ 20
-  // 7 }}`` is ``2``, ``{{ -20  // 7 }}`` is ``-3`` (this is just syntactic
-  sugar for the :doc:`round<filters/round>` filter).
-
-* ``*``: Multiplies the left operand with the right one. ``{{ 2 * 2 }}`` would
-  return ``4``.
-
-* ``**``: Raises the left operand to the power of the right operand. ``{{ 2 **
-  3 }}`` would return ``8``.
-
-.. _template_logic:
-
-Logic
-~~~~~
-
-You can combine multiple expressions with the following operators:
-
-* ``and``: Returns true if the left and the right operands are both true.
-
-* ``or``: Returns true if the left or the right operand is true.
-
-* ``not``: Negates a statement.
-
-* ``(expr)``: Groups an expression.
-
-.. note::
-
-    Twig also supports bitwise operators (``b-and``, ``b-xor``, and ``b-or``).
-
-.. note::
-
-    Operators are case sensitive.
-
-Comparisons
-~~~~~~~~~~~
-
-The following comparison operators are supported in any expression: ``==``,
-``!=``, ``<``, ``>``, ``>=``, and ``<=``.
-
-You can also check if a string ``starts with`` or ``ends with`` another
-string:
-
-.. code-block:: twig
-
-    {% if 'Fabien' starts with 'F' %}
-    {% endif %}
-
-    {% if 'Fabien' ends with 'n' %}
-    {% endif %}
-
-.. note::
-
-    For complex string comparisons, the ``matches`` operator allows you to use
-    `regular expressions`_:
-
-    .. code-block:: twig
-
-        {% if phone matches '/^[\\d\\.]+$/' %}
-        {% endif %}
-
-Containment Operator
-~~~~~~~~~~~~~~~~~~~~
-
-The ``in`` operator performs containment test. It returns ``true`` if the left
-operand is contained in the right:
-
-.. code-block:: twig
-
-    {# returns true #}
-
-    {{ 1 in [1, 2, 3] }}
-
-    {{ 'cd' in 'abcde' }}
-
-.. tip::
-
-    You can use this filter to perform a containment test on strings, arrays,
-    or objects implementing the ``Traversable`` interface.
-
-To perform a negative test, use the ``not in`` operator:
-
-.. code-block:: twig
-
-    {% if 1 not in [1, 2, 3] %}
-
-    {# is equivalent to #}
-    {% if not (1 in [1, 2, 3]) %}
-
-Test Operator
-~~~~~~~~~~~~~
-
-The ``is`` operator performs tests. Tests can be used to test a variable against
-a common expression. The right operand is name of the test:
-
-.. code-block:: twig
-
-    {# find out if a variable is odd #}
-
-    {{ name is odd }}
-
-Tests can accept arguments too:
-
-.. code-block:: twig
-
-    {% if post.status is constant('Post::PUBLISHED') %}
-
-Tests can be negated by using the ``is not`` operator:
-
-.. code-block:: twig
-
-    {% if post.status is not constant('Post::PUBLISHED') %}
-
-    {# is equivalent to #}
-    {% if not (post.status is constant('Post::PUBLISHED')) %}
-
-Go to the :doc:`tests<tests/index>` page to learn more about the built-in
-tests.
-
-Other Operators
-~~~~~~~~~~~~~~~
-
-.. versionadded:: 1.12.0
-    Support for the extended ternary operator was added in Twig 1.12.0.
-
-The following operators don't fit into any of the other categories:
-
-* ``|``: Applies a filter.
-
-* ``..``: Creates a sequence based on the operand before and after the operator
-  (this is syntactic sugar for the :doc:`range<functions/range>` function):
-
-  .. code-block:: twig
-
-      {{ 1..5 }}
-
-      {# equivalent to #}
-      {{ range(1, 5) }}
-
-  Note that you must use parentheses when combining it with the filter operator
-  due to the :ref:`operator precedence rules <twig-expressions>`:
-
-  .. code-block:: twig
-
-      (1..5)|join(', ')
-
-* ``~``: Converts all operands into strings and concatenates them. ``{{ "Hello
-  " ~ name ~ "!" }}`` would return (assuming ``name`` is ``'John'``) ``Hello
-  John!``.
-
-* ``.``, ``[]``: Gets an attribute of a variable.
-
-* ``?:``: The ternary operator:
-
-  .. code-block:: twig
-
-      {{ foo ? 'yes' : 'no' }}
-
-      {# as of Twig 1.12.0 #}
-      {{ foo ?: 'no' }} is the same as {{ foo ? foo : 'no' }}
-      {{ foo ? 'yes' }} is the same as {{ foo ? 'yes' : '' }}
-
-* ``??``: The null-coalescing operator:
-
-  .. code-block:: twig
-
-      {# returns the value of foo if it is defined and not null, 'no' otherwise #}
-      {{ foo ?? 'no' }}
-
-.. _templates-string-interpolation:
-
-String Interpolation
-~~~~~~~~~~~~~~~~~~~~
-
-.. versionadded:: 1.5
-    String interpolation was added in Twig 1.5.
-
-String interpolation (``#{expression}``) allows any valid expression to appear
-within a *double-quoted string*. The result of evaluating that expression is
-inserted into the string:
-
-.. code-block:: twig
-
-    {{ "foo #{bar} baz" }}
-    {{ "foo #{1 + 2} baz" }}
-
-.. _templates-whitespace-control:
-
-Whitespace Control
-------------------
-
-.. versionadded:: 1.1
-    Tag level whitespace control was added in Twig 1.1.
-
-.. versionadded:: 1.39
-    Tag level Line whitespace control was added in Twig 1.39.
-
-The first newline after a template tag is removed automatically (like in PHP).
-Whitespace is not further modified by the template engine, so each whitespace
-(spaces, tabs, newlines etc.) is returned unchanged.
-
-You can also control whitespace on a per tag level. By using the whitespace
-control modifiers on your tags, you can trim leading and or trailing whitespace.
-
-Twig supports two modifiers:
-
-* *Whitespace trimming* via the ``-`` modifier: Removes all whitespace
-  (including newlines);
-
-* *Line whitespace trimming* via the ``~`` modifier: Removes all whitespace
-  (excluding newlines). Using this modifier on the right disables the default
-  removal of the first newline inherited from PHP.
-
-The modifiers can be used on either side of the tags like in ``{%-`` or ``-%}``
-and they consume all whitespace for that side of the tag. It is possible to use
-the modifiers on one side of a tag or on both sides:
-
-.. code-block:: twig
-
-    {% set value = 'no spaces' %}
-    {#- No leading/trailing whitespace -#}
-    {%- if true -%}
-        {{- value -}}
-    {%- endif -%}
-    {# output 'no spaces' #}
-
-    <li>
-        {{ value }}    </li>
-    {# outputs '<li>\n    no spaces    </li>' #}
-
-    <li>
-        {{- value }}    </li>
-    {# outputs '<li>no spaces    </li>' #}
-
-    <li>
-        {{~ value }}    </li>
-    {# outputs '<li>\nno spaces    </li>' #}
-
-.. tip::
-
-    In addition to the whitespace modifiers, Twig also has a ``spaceless`` filter
-    that removes whitespace **between HTML tags**:
-
-    .. code-block:: twig
-
-        {% apply spaceless %}
-            <div>
-                <strong>foo bar</strong>
-            </div>
-        {% endapply %}
-
-        {# output will be <div><strong>foo bar</strong></div> #}
-
-    Note that the ``apply`` tag was introduced in Twig 1.40; use the ``filter``
-    tag with previous versions.
-
-Extensions
-----------
-
-Twig can be extended. If you want to create your own extensions, read the
-:ref:`Creating an Extension <creating_extensions>` chapter.
-
-.. _`Twig bundle`:                https://github.com/Anomareh/PHP-Twig.tmbundle
-.. _`Jinja syntax plugin`:        http://jinja.pocoo.org/docs/integration/#vim
-.. _`vim-twig plugin`:            https://github.com/lumiliet/vim-twig
-.. _`Twig syntax plugin`:         http://plugins.netbeans.org/plugin/37069/php-twig
-.. _`Twig plugin`:                https://github.com/pulse00/Twig-Eclipse-Plugin
-.. _`Twig language definition`:   https://github.com/gabrielcorpse/gedit-twig-template-language
-.. _`Twig syntax mode`:           https://github.com/bobthecow/Twig-HTML.mode
-.. _`other Twig syntax mode`:     https://github.com/muxx/Twig-HTML.mode
-.. _`Notepad++ Twig Highlighter`: https://github.com/Banane9/notepadplusplus-twig
-.. _`web-mode.el`:                http://web-mode.org/
-.. _`regular expressions`:        https://secure.php.net/manual/en/pcre.pattern.php
-.. _`PHP-twig for atom`:          https://github.com/reesef/php-twig
-.. _`TwigFiddle`:                 https://twigfiddle.com/
-.. _`Twig pack`:                  https://marketplace.visualstudio.com/items?itemName=bajdzis.vscode-twig-pack
diff --git a/vendor/twig/twig/doc/tests/constant.rst b/vendor/twig/twig/doc/tests/constant.rst
deleted file mode 100644
index 5dc87e3ecd121e92852997a24ec6c2850ccb6b01..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tests/constant.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-``constant``
-============
-
-.. versionadded:: 1.13.1
-    constant now accepts object instances as the second argument.
-
-``constant`` checks if a variable has the exact same value as a constant. You
-can use either global constants or class constants:
-
-.. code-block:: twig
-
-    {% if post.status is constant('Post::PUBLISHED') %}
-        the status attribute is exactly the same as Post::PUBLISHED
-    {% endif %}
-
-You can test constants from object instances as well:
-
-.. code-block:: twig
-
-    {% if post.status is constant('PUBLISHED', post) %}
-        the status attribute is exactly the same as Post::PUBLISHED
-    {% endif %}
diff --git a/vendor/twig/twig/doc/tests/defined.rst b/vendor/twig/twig/doc/tests/defined.rst
deleted file mode 100644
index 234a28988a014d65166d8b3c55a9d0cc6e13b362..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tests/defined.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-``defined``
-===========
-
-``defined`` checks if a variable is defined in the current context. This is very
-useful if you use the ``strict_variables`` option:
-
-.. code-block:: twig
-
-    {# defined works with variable names #}
-    {% if foo is defined %}
-        ...
-    {% endif %}
-
-    {# and attributes on variables names #}
-    {% if foo.bar is defined %}
-        ...
-    {% endif %}
-
-    {% if foo['bar'] is defined %}
-        ...
-    {% endif %}
-
-When using the ``defined`` test on an expression that uses variables in some
-method calls, be sure that they are all defined first:
-
-.. code-block:: twig
-
-    {% if var is defined and foo.method(var) is defined %}
-        ...
-    {% endif %}
diff --git a/vendor/twig/twig/doc/tests/divisibleby.rst b/vendor/twig/twig/doc/tests/divisibleby.rst
deleted file mode 100644
index 0beea8a97a40854ace98e682301ea995a9cc9554..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tests/divisibleby.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-``divisible by``
-================
-
-.. versionadded:: 1.14.2
-    The ``divisible by`` test was added in Twig 1.14.2 as an alias for
-    ``divisibleby``.
-
-``divisible by`` checks if a variable is divisible by a number:
-
-.. code-block:: twig
-
-    {% if loop.index is divisible by(3) %}
-        ...
-    {% endif %}
diff --git a/vendor/twig/twig/doc/tests/empty.rst b/vendor/twig/twig/doc/tests/empty.rst
deleted file mode 100644
index b630c0ce403aa20583b617d728e6a5d384a49df3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tests/empty.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-``empty``
-=========
-
-.. versionadded:: 1.33
-
-    Support for the ``__toString()`` magic method has been added in Twig 1.33.
-
-``empty`` checks if a variable is an empty string, an empty array, an empty
-hash, exactly ``false``, or exactly ``null``.
-
-For objects that implement the ``Countable`` interface, ``empty`` will check the
-return value of the ``count()`` method.
-
-For objects that implement the ``__toString()`` magic method (and not ``Countable``),
-it will check if an empty string is returned.
-
-.. code-block:: twig
-
-    {% if foo is empty %}
-        ...
-    {% endif %}
-
diff --git a/vendor/twig/twig/doc/tests/even.rst b/vendor/twig/twig/doc/tests/even.rst
deleted file mode 100644
index 5d9c87694a153533dbc522edbfc29c186769e870..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tests/even.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-``even``
-========
-
-``even`` returns ``true`` if the given number is even:
-
-.. code-block:: twig
-
-    {{ var is even }}
-
-.. seealso:: :doc:`odd<../tests/odd>`
diff --git a/vendor/twig/twig/doc/tests/index.rst b/vendor/twig/twig/doc/tests/index.rst
deleted file mode 100644
index c63208ee74de1bd920a55934e440885a850a311c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tests/index.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-Tests
-=====
-
-.. toctree::
-    :maxdepth: 1
-
-    constant
-    defined
-    divisibleby
-    empty
-    even
-    iterable
-    null
-    odd
-    sameas
diff --git a/vendor/twig/twig/doc/tests/iterable.rst b/vendor/twig/twig/doc/tests/iterable.rst
deleted file mode 100644
index f0bfc5fb93752d07cbb4931e84e14be14eef1530..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tests/iterable.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-``iterable``
-============
-
-.. versionadded:: 1.7
-    The iterable test was added in Twig 1.7.
-
-``iterable`` checks if a variable is an array or a traversable object:
-
-.. code-block:: twig
-
-    {# evaluates to true if the foo variable is iterable #}
-    {% if users is iterable %}
-        {% for user in users %}
-            Hello {{ user }}!
-        {% endfor %}
-    {% else %}
-        {# users is probably a string #}
-        Hello {{ users }}!
-    {% endif %}
diff --git a/vendor/twig/twig/doc/tests/null.rst b/vendor/twig/twig/doc/tests/null.rst
deleted file mode 100644
index 9ed93f6bb29dd1bf03e448acea5c14e1539f14b6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tests/null.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-``null``
-========
-
-``null`` returns ``true`` if the variable is ``null``:
-
-.. code-block:: twig
-
-    {{ var is null }}
-
-.. note::
-
-    ``none`` is an alias for ``null``.
diff --git a/vendor/twig/twig/doc/tests/odd.rst b/vendor/twig/twig/doc/tests/odd.rst
deleted file mode 100644
index 0546f83c5a654ac2d3f733b7534994633ef8b574..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tests/odd.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-``odd``
-=======
-
-``odd`` returns ``true`` if the given number is odd:
-
-.. code-block:: twig
-
-    {{ var is odd }}
-
-.. seealso:: :doc:`even<../tests/even>`
diff --git a/vendor/twig/twig/doc/tests/sameas.rst b/vendor/twig/twig/doc/tests/sameas.rst
deleted file mode 100644
index b400b89c5530f8072bd969a51b47aed9e031d74c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/doc/tests/sameas.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-``same as``
-===========
-
-.. versionadded:: 1.14.2
-    The ``same as`` test was added in Twig 1.14.2 as an alias for ``sameas``.
-
-``same as`` checks if a variable is the same as another variable.
-This is equivalent to ``===`` in PHP:
-
-.. code-block:: twig
-
-    {% if foo.attribute is same as(false) %}
-        the foo attribute really is the 'false' PHP value
-    {% endif %}
diff --git a/vendor/twig/twig/drupal_test.sh b/vendor/twig/twig/drupal_test.sh
deleted file mode 100644
index ca493f9d43f4a1678369fc9476fe4136f6190841..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/drupal_test.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-
-set -x
-set -e
-
-REPO=`pwd`
-cd /tmp
-rm -rf drupal-twig-test
-composer create-project --no-interaction drupal/recommended-project:8.9.x-dev drupal-twig-test
-cd drupal-twig-test
-(cd vendor/twig && rm -rf twig && ln -sf $REPO twig)
-php ./web/core/scripts/drupal install --no-interaction demo_umami > output
-perl -p -i -e 's/^([A-Za-z]+)\: (.+)$/export DRUPAL_\1=\2/' output
-source output
-#echo '$config["system.logging"]["error_level"] = "verbose";' >> web/sites/default/settings.php
-
-wget https://get.symfony.com/cli/installer -O - | bash
-export PATH="$HOME/.symfony/bin:$PATH"
-symfony server:start -d --no-tls
-
-curl -OLsS https://get.blackfire.io/blackfire-player.phar
-chmod +x blackfire-player.phar
-cat > drupal-tests.bkf <<EOF
-name "Drupal tests"
-
-scenario
-    name "homepage"
-    set name "admin"
-    set pass "pass"
-
-    visit url('/')
-        expect status_code() == 200
-    click link('Articles')
-        expect status_code() == 200
-    click link('Dairy-free and delicious milk chocolate')
-        expect body() matches "/Dairy\-free milk chocolate is made in largely the same way as regular chocolate/"
-        expect status_code() == 200
-    click link('Log in')
-        expect status_code() == 200
-    submit button("Log in")
-        param name name
-        param pass pass
-        expect status_code() == 303
-    follow
-        expect status_code() == 200
-    click link('Structure')
-        expect status_code() == 200
-EOF
-./blackfire-player.phar run drupal-tests.bkf --endpoint=`symfony var:export SYMFONY_DEFAULT_ROUTE_URL` --variable name=$DRUPAL_Username --variable pass=$DRUPAL_Password
-symfony server:stop
diff --git a/vendor/twig/twig/ext/twig/.gitignore b/vendor/twig/twig/ext/twig/.gitignore
deleted file mode 100644
index 56ea76cc2634fd55506232b7c36677a4ce6d5662..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/ext/twig/.gitignore
+++ /dev/null
@@ -1,30 +0,0 @@
-*.sw*
-.deps
-Makefile
-Makefile.fragments
-Makefile.global
-Makefile.objects
-acinclude.m4
-aclocal.m4
-build/
-config.cache
-config.guess
-config.h
-config.h.in
-config.log
-config.nice
-config.status
-config.sub
-configure
-configure.in
-install-sh
-libtool
-ltmain.sh
-missing
-mkinstalldirs
-run-tests.php
-twig.loT
-.libs/
-modules/
-twig.la
-twig.lo
diff --git a/vendor/twig/twig/ext/twig/config.m4 b/vendor/twig/twig/ext/twig/config.m4
deleted file mode 100644
index 83486be4c27c8774fac76fc8e86b9f0d59b5fec6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/ext/twig/config.m4
+++ /dev/null
@@ -1,8 +0,0 @@
-dnl config.m4 for extension twig
-
-PHP_ARG_ENABLE(twig, whether to enable twig support,
-[  --enable-twig           Enable twig support])
-
-if test "$PHP_TWIG" != "no"; then
-  PHP_NEW_EXTENSION(twig, twig.c, $ext_shared)
-fi
diff --git a/vendor/twig/twig/ext/twig/config.w32 b/vendor/twig/twig/ext/twig/config.w32
deleted file mode 100644
index cb287b99ba25d486268a1025e03fe75527c04531..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/ext/twig/config.w32
+++ /dev/null
@@ -1,8 +0,0 @@
-// vim:ft=javascript
-
-ARG_ENABLE("twig", "Twig support", "no");
-
-if (PHP_TWIG != "no") {
-	AC_DEFINE('HAVE_TWIG', 1);
-	EXTENSION('twig', 'twig.c');
-}
diff --git a/vendor/twig/twig/ext/twig/php_twig.h b/vendor/twig/twig/ext/twig/php_twig.h
deleted file mode 100644
index 344539abaac2281c62721840d7425fc1e40ddf77..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/ext/twig/php_twig.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-   +----------------------------------------------------------------------+
-   | Twig Extension                                                       |
-   +----------------------------------------------------------------------+
-   | Copyright (c) 2011 Derick Rethans                                    |
-   +----------------------------------------------------------------------+
-   | Redistribution and use in source and binary forms, with or without   |
-   | modification, are permitted provided that the conditions mentioned   |
-   | in the accompanying LICENSE file are met (BSD-3-Clause).             |
-   +----------------------------------------------------------------------+
-   | Author: Derick Rethans <derick@derickrethans.nl>                     |
-   +----------------------------------------------------------------------+
- */
-
-#ifndef PHP_TWIG_H
-#define PHP_TWIG_H
-
-#define PHP_TWIG_VERSION "1.42.5-DEV"
-
-#include "php.h"
-
-extern zend_module_entry twig_module_entry;
-#define phpext_twig_ptr &twig_module_entry
-#ifndef PHP_WIN32
-zend_module_entry *get_module(void);
-#endif
-
-#ifdef ZTS
-#include "TSRM.h"
-#endif
-
-PHP_FUNCTION(twig_template_get_attributes);
-PHP_RSHUTDOWN_FUNCTION(twig);
-
-#endif
diff --git a/vendor/twig/twig/ext/twig/twig.c b/vendor/twig/twig/ext/twig/twig.c
deleted file mode 100644
index 171ed10bb8a57181dfb8a15d48bbd439514e8770..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/ext/twig/twig.c
+++ /dev/null
@@ -1,1217 +0,0 @@
-/*
-   +----------------------------------------------------------------------+
-   | Twig Extension                                                       |
-   +----------------------------------------------------------------------+
-   | Copyright (c) 2011 Derick Rethans                                    |
-   +----------------------------------------------------------------------+
-   | Redistribution and use in source and binary forms, with or without   |
-   | modification, are permitted provided that the conditions mentioned   |
-   | in the accompanying LICENSE file are met (BSD-3-Clause).             |
-   +----------------------------------------------------------------------+
-   | Author: Derick Rethans <derick@derickrethans.nl>                     |
-   +----------------------------------------------------------------------+
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "php.h"
-#include "php_twig.h"
-#include "ext/standard/php_var.h"
-#include "ext/standard/php_string.h"
-#include "ext/standard/php_smart_str.h"
-#include "ext/spl/spl_exceptions.h"
-
-#include "Zend/zend_object_handlers.h"
-#include "Zend/zend_interfaces.h"
-#include "Zend/zend_exceptions.h"
-
-#ifndef Z_ADDREF_P
-#define Z_ADDREF_P(pz)                (pz)->refcount++
-#endif
-
-#ifndef E_USER_DEPRECATED
-#define E_USER_DEPRECATED	(1<<14L)
-#endif
-
-#define FREE_DTOR(z) 	\
-	zval_dtor(z); 		\
-	efree(z);
-
-#if PHP_VERSION_ID >= 50300
-	#define APPLY_TSRMLS_DC TSRMLS_DC
-	#define APPLY_TSRMLS_CC TSRMLS_CC
-	#define APPLY_TSRMLS_FETCH()
-#else
-	#define APPLY_TSRMLS_DC
-	#define APPLY_TSRMLS_CC
-	#define APPLY_TSRMLS_FETCH() TSRMLS_FETCH()
-#endif
-
-ZEND_BEGIN_ARG_INFO_EX(twig_template_get_attribute_args, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 6)
-	ZEND_ARG_INFO(0, template)
-	ZEND_ARG_INFO(0, object)
-	ZEND_ARG_INFO(0, item)
-	ZEND_ARG_INFO(0, arguments)
-	ZEND_ARG_INFO(0, type)
-	ZEND_ARG_INFO(0, isDefinedTest)
-ZEND_END_ARG_INFO()
-
-#ifndef PHP_FE_END
-#define PHP_FE_END { NULL, NULL, NULL}
-#endif
-
-static const zend_function_entry twig_functions[] = {
-	PHP_FE(twig_template_get_attributes, twig_template_get_attribute_args)
-	PHP_FE_END
-};
-
-PHP_RSHUTDOWN_FUNCTION(twig)
-{
-#if ZEND_DEBUG
-	CG(unclean_shutdown) = 0; /* get rid of PHPUnit's exit() and report memleaks */
-#endif
-	return SUCCESS;
-}
-
-zend_module_entry twig_module_entry = {
-	STANDARD_MODULE_HEADER,
-	"twig",
-	twig_functions,
-	NULL,
-	NULL,
-	NULL,
-	PHP_RSHUTDOWN(twig),
-	NULL,
-	PHP_TWIG_VERSION,
-	STANDARD_MODULE_PROPERTIES
-};
-
-
-#ifdef COMPILE_DL_TWIG
-ZEND_GET_MODULE(twig)
-#endif
-
-static int TWIG_ARRAY_KEY_EXISTS(zval *array, zval *key)
-{
-	if (Z_TYPE_P(array) != IS_ARRAY) {
-		return 0;
-	}
-
-	switch (Z_TYPE_P(key)) {
-		case IS_NULL:
-			return zend_hash_exists(Z_ARRVAL_P(array), "", 1);
-
-		case IS_BOOL:
-		case IS_DOUBLE:
-			convert_to_long(key);
-		case IS_LONG:
-			return zend_hash_index_exists(Z_ARRVAL_P(array), Z_LVAL_P(key));
-
-		default:
-			convert_to_string(key);
-			return zend_symtable_exists(Z_ARRVAL_P(array), Z_STRVAL_P(key), Z_STRLEN_P(key) + 1);
-	}
-}
-
-static int TWIG_INSTANCE_OF(zval *object, zend_class_entry *interface TSRMLS_DC)
-{
-	if (Z_TYPE_P(object) != IS_OBJECT) {
-		return 0;
-	}
-	return instanceof_function(Z_OBJCE_P(object), interface TSRMLS_CC);
-}
-
-static int TWIG_INSTANCE_OF_USERLAND(zval *object, char *interface TSRMLS_DC)
-{
-	zend_class_entry **pce;
-	if (Z_TYPE_P(object) != IS_OBJECT) {
-		return 0;
-	}
-	if (zend_lookup_class(interface, strlen(interface), &pce TSRMLS_CC) == FAILURE) {
-		return 0;
-	}
-	return instanceof_function(Z_OBJCE_P(object), *pce TSRMLS_CC);
-}
-
-static zval *TWIG_GET_ARRAYOBJECT_ELEMENT(zval *object, zval *offset TSRMLS_DC)
-{
-	zend_class_entry *ce = Z_OBJCE_P(object);
-	zval *retval;
-
-	if (Z_TYPE_P(object) == IS_OBJECT) {
-		SEPARATE_ARG_IF_REF(offset);
-		zend_call_method_with_1_params(&object, ce, NULL, "offsetget", &retval, offset);
-
-		zval_ptr_dtor(&offset);
-
-		if (!retval) {
-			if (!EG(exception)) {
-				zend_error(E_ERROR, "Undefined offset for object of type %s used as array.", ce->name);
-			}
-			return NULL;
-		}
-
-		return retval;
-	}
-	return NULL;
-}
-
-static int TWIG_ISSET_ARRAYOBJECT_ELEMENT(zval *object, zval *offset TSRMLS_DC)
-{
-	zend_class_entry *ce = Z_OBJCE_P(object);
-	zval *retval;
-
-	if (Z_TYPE_P(object) == IS_OBJECT) {
-		SEPARATE_ARG_IF_REF(offset);
-		zend_call_method_with_1_params(&object, ce, NULL, "offsetexists", &retval, offset);
-
-		zval_ptr_dtor(&offset);
-
-		if (!retval) {
-			if (!EG(exception)) {
-				zend_error(E_ERROR, "Undefined offset for object of type %s used as array.", ce->name);
-			}
-			return 0;
-		}
-
-		return (retval && Z_TYPE_P(retval) == IS_BOOL && Z_LVAL_P(retval));
-	}
-	return 0;
-}
-
-static char *TWIG_STRTOLOWER(const char *str, int str_len)
-{
-	char *item_dup;
-
-	item_dup = estrndup(str, str_len);
-	php_strtolower(item_dup, str_len);
-	return item_dup;
-}
-
-static zval *TWIG_CALL_USER_FUNC_ARRAY(zval *object, char *function, zval *arguments TSRMLS_DC)
-{
-	zend_fcall_info fci;
-	zval ***args = NULL;
-	int arg_count = 0;
-	HashTable *table;
-	HashPosition pos;
-	int i = 0;
-	zval *retval_ptr;
-	zval *zfunction;
-
-	if (arguments) {
-		table = HASH_OF(arguments);
-		args = safe_emalloc(sizeof(zval **), table->nNumOfElements, 0);
-
-		zend_hash_internal_pointer_reset_ex(table, &pos);
-
-		while (zend_hash_get_current_data_ex(table, (void **)&args[i], &pos) == SUCCESS) {
-			i++;
-			zend_hash_move_forward_ex(table, &pos);
-		}
-		arg_count = table->nNumOfElements;
-	}
-
-	MAKE_STD_ZVAL(zfunction);
-	ZVAL_STRING(zfunction, function, 1);
-	fci.size = sizeof(fci);
-	fci.function_table = EG(function_table);
-	fci.function_name = zfunction;
-	fci.symbol_table = NULL;
-#if PHP_VERSION_ID >= 50300
-	fci.object_ptr = object;
-#else
-	fci.object_pp = &object;
-#endif
-	fci.retval_ptr_ptr = &retval_ptr;
-	fci.param_count = arg_count;
-	fci.params = args;
-	fci.no_separation = 0;
-
-	if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE) {
-		ALLOC_INIT_ZVAL(retval_ptr);
-		ZVAL_BOOL(retval_ptr, 0);
-	}
-
-	if (args) {
-		efree(fci.params);
-	}
-	FREE_DTOR(zfunction);
-	return retval_ptr;
-}
-
-static int TWIG_CALL_BOOLEAN(zval *object, char *functionName TSRMLS_DC)
-{
-	zval *ret;
-	int   res;
-
-	ret = TWIG_CALL_USER_FUNC_ARRAY(object, functionName, NULL TSRMLS_CC);
-	res = Z_LVAL_P(ret);
-	zval_ptr_dtor(&ret);
-	return res;
-}
-
-static zval *TWIG_GET_STATIC_PROPERTY(zval *class, char *prop_name TSRMLS_DC)
-{
-	zval **tmp_zval;
-	zend_class_entry *ce;
-
-	if (class == NULL || Z_TYPE_P(class) != IS_OBJECT) {
-		return NULL;
-	}
-
-	ce = zend_get_class_entry(class TSRMLS_CC);
-#if PHP_VERSION_ID >= 50400
-	tmp_zval = zend_std_get_static_property(ce, prop_name, strlen(prop_name), 0, NULL TSRMLS_CC);
-#else
-	tmp_zval = zend_std_get_static_property(ce, prop_name, strlen(prop_name), 0 TSRMLS_CC);
-#endif
-	return *tmp_zval;
-}
-
-static zval *TWIG_GET_ARRAY_ELEMENT_ZVAL(zval *class, zval *prop_name TSRMLS_DC)
-{
-	zval **tmp_zval;
-
-	if (class == NULL || Z_TYPE_P(class) != IS_ARRAY) {
-		if (class != NULL && Z_TYPE_P(class) == IS_OBJECT && TWIG_INSTANCE_OF(class, zend_ce_arrayaccess TSRMLS_CC)) {
-			// array access object
-			return TWIG_GET_ARRAYOBJECT_ELEMENT(class, prop_name TSRMLS_CC);
-		}
-		return NULL;
-	}
-
-	switch(Z_TYPE_P(prop_name)) {
-		case IS_NULL:
-			zend_hash_find(HASH_OF(class), "", 1, (void**) &tmp_zval);
-			return *tmp_zval;
-
-		case IS_BOOL:
-		case IS_DOUBLE:
-			convert_to_long(prop_name);
-		case IS_LONG:
-			zend_hash_index_find(HASH_OF(class), Z_LVAL_P(prop_name), (void **) &tmp_zval);
-			return *tmp_zval;
-
-		case IS_STRING:
-			zend_symtable_find(HASH_OF(class), Z_STRVAL_P(prop_name), Z_STRLEN_P(prop_name) + 1, (void**) &tmp_zval);
-			return *tmp_zval;
-	}
-
-	return NULL;
-}
-
-static zval *TWIG_GET_ARRAY_ELEMENT(zval *class, char *prop_name, int prop_name_length TSRMLS_DC)
-{
-	zval **tmp_zval;
-
-	if (class == NULL/* || Z_TYPE_P(class) != IS_ARRAY*/) {
-		return NULL;
-	}
-
-	if (class != NULL && Z_TYPE_P(class) == IS_OBJECT && TWIG_INSTANCE_OF(class, zend_ce_arrayaccess TSRMLS_CC)) {
-		// array access object
-		zval *tmp_name_zval;
-		zval *tmp_ret_zval;
-
-		ALLOC_INIT_ZVAL(tmp_name_zval);
-		ZVAL_STRING(tmp_name_zval, prop_name, 1);
-		tmp_ret_zval = TWIG_GET_ARRAYOBJECT_ELEMENT(class, tmp_name_zval TSRMLS_CC);
-		FREE_DTOR(tmp_name_zval);
-		return tmp_ret_zval;
-	}
-
-	if (zend_symtable_find(HASH_OF(class), prop_name, prop_name_length+1, (void**)&tmp_zval) == SUCCESS) {
-		return *tmp_zval;
-	}
-	return NULL;
-}
-
-static zval *TWIG_PROPERTY(zval *object, zval *propname TSRMLS_DC)
-{
-	zval *tmp = NULL;
-
-	if (Z_OBJ_HT_P(object)->read_property) {
-#if PHP_VERSION_ID >= 50400
-		tmp = Z_OBJ_HT_P(object)->read_property(object, propname, BP_VAR_IS, NULL TSRMLS_CC);
-#else
-		tmp = Z_OBJ_HT_P(object)->read_property(object, propname, BP_VAR_IS TSRMLS_CC);
-#endif
-		if (tmp == EG(uninitialized_zval_ptr)) {
-		        ZVAL_NULL(tmp);
-		}
-	}
-	return tmp;
-}
-
-static int TWIG_HAS_PROPERTY(zval *object, zval *propname TSRMLS_DC)
-{
-	if (Z_OBJ_HT_P(object)->has_property) {
-#if PHP_VERSION_ID >= 50400
-		return Z_OBJ_HT_P(object)->has_property(object, propname, 0, NULL TSRMLS_CC);
-#else
-		return Z_OBJ_HT_P(object)->has_property(object, propname, 0 TSRMLS_CC);
-#endif
-	}
-	return 0;
-}
-
-static int TWIG_HAS_DYNAMIC_PROPERTY(zval *object, char *prop, int prop_len TSRMLS_DC)
-{
-	if (Z_OBJ_HT_P(object)->get_properties) {
-		return zend_hash_quick_exists(
-				Z_OBJ_HT_P(object)->get_properties(object TSRMLS_CC), // the properties hash
-				prop,                                                 // property name
-				prop_len + 1,                                         // property length
-				zend_get_hash_value(prop, prop_len + 1)               // hash value
-			);
-	}
-	return 0;
-}
-
-static zval *TWIG_PROPERTY_CHAR(zval *object, char *propname TSRMLS_DC)
-{
-	zval *tmp_name_zval, *tmp;
-
-	ALLOC_INIT_ZVAL(tmp_name_zval);
-	ZVAL_STRING(tmp_name_zval, propname, 1);
-	tmp = TWIG_PROPERTY(object, tmp_name_zval TSRMLS_CC);
-	FREE_DTOR(tmp_name_zval);
-	return tmp;
-}
-
-static zval *TWIG_CALL_S(zval *object, char *method, char *arg0 TSRMLS_DC)
-{
-	zend_fcall_info fci;
-	zval **args[1];
-	zval *argument;
-	zval *zfunction;
-	zval *retval_ptr;
-
-	MAKE_STD_ZVAL(argument);
-	ZVAL_STRING(argument, arg0, 1);
-	args[0] = &argument;
-
-	MAKE_STD_ZVAL(zfunction);
-	ZVAL_STRING(zfunction, method, 1);
-	fci.size = sizeof(fci);
-	fci.function_table = EG(function_table);
-	fci.function_name = zfunction;
-	fci.symbol_table = NULL;
-#if PHP_VERSION_ID >= 50300
-	fci.object_ptr = object;
-#else
-	fci.object_pp = &object;
-#endif
-	fci.retval_ptr_ptr = &retval_ptr;
-	fci.param_count = 1;
-	fci.params = args;
-	fci.no_separation = 0;
-
-	if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE) {
-		FREE_DTOR(zfunction);
-		zval_ptr_dtor(&argument);
-		return 0;
-	}
-	FREE_DTOR(zfunction);
-	zval_ptr_dtor(&argument);
-	return retval_ptr;
-}
-
-static int TWIG_CALL_SB(zval *object, char *method, char *arg0 TSRMLS_DC)
-{
-	zval *retval_ptr;
-	int success;
-
-	retval_ptr = TWIG_CALL_S(object, method, arg0 TSRMLS_CC);
-	success = (retval_ptr && (Z_TYPE_P(retval_ptr) == IS_BOOL) && Z_LVAL_P(retval_ptr));
-
-	if (retval_ptr) {
-		zval_ptr_dtor(&retval_ptr);
-	}
-
-	return success;
-}
-
-static int TWIG_CALL_ZZ(zval *object, char *method, zval *arg1, zval *arg2 TSRMLS_DC)
-{
-	zend_fcall_info fci;
-	zval **args[2];
-	zval *zfunction;
-	zval *retval_ptr;
-	int   success;
-
-	args[0] = &arg1;
-	args[1] = &arg2;
-
-	MAKE_STD_ZVAL(zfunction);
-	ZVAL_STRING(zfunction, method, 1);
-	fci.size = sizeof(fci);
-	fci.function_table = EG(function_table);
-	fci.function_name = zfunction;
-	fci.symbol_table = NULL;
-#if PHP_VERSION_ID >= 50300
-	fci.object_ptr = object;
-#else
-	fci.object_pp = &object;
-#endif
-	fci.retval_ptr_ptr = &retval_ptr;
-	fci.param_count = 2;
-	fci.params = args;
-	fci.no_separation = 0;
-
-	if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE) {
-		FREE_DTOR(zfunction);
-		return 0;
-	}
-
-	FREE_DTOR(zfunction);
-
-	success = (retval_ptr && (Z_TYPE_P(retval_ptr) == IS_BOOL) && Z_LVAL_P(retval_ptr));
-	if (retval_ptr) {
-		zval_ptr_dtor(&retval_ptr);
-	}
-
-	return success;
-}
-
-#ifndef Z_SET_REFCOUNT_P
-# define Z_SET_REFCOUNT_P(pz, rc)  pz->refcount = rc
-# define Z_UNSET_ISREF_P(pz) pz->is_ref = 0
-#endif
-
-static void TWIG_NEW(zval *object, char *class, zval *arg0, zval *arg1 TSRMLS_DC)
-{
-	zend_class_entry **pce;
-
-	if (zend_lookup_class(class, strlen(class), &pce TSRMLS_CC) == FAILURE) {
-		return;
-	}
-
-	Z_TYPE_P(object) = IS_OBJECT;
-	object_init_ex(object, *pce);
-	Z_SET_REFCOUNT_P(object, 1);
-	Z_UNSET_ISREF_P(object);
-
-	TWIG_CALL_ZZ(object, "__construct", arg0, arg1 TSRMLS_CC);
-}
-
-static int twig_add_array_key_to_string(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
-{
-	smart_str *buf;
-	char *joiner;
-	APPLY_TSRMLS_FETCH();
-
-	buf = va_arg(args, smart_str*);
-	joiner = va_arg(args, char*);
-
-	if (buf->len != 0) {
-		smart_str_appends(buf, joiner);
-	}
-
-	if (hash_key->nKeyLength == 0) {
-		smart_str_append_long(buf, (long) hash_key->h);
-	} else {
-		char *key, *tmp_str;
-		int key_len, tmp_len;
-		key = php_addcslashes(hash_key->arKey, hash_key->nKeyLength - 1, &key_len, 0, "'\\", 2 TSRMLS_CC);
-		tmp_str = php_str_to_str_ex(key, key_len, "\0", 1, "' . \"\\0\" . '", 12, &tmp_len, 0, NULL);
-
-		smart_str_appendl(buf, tmp_str, tmp_len);
-		efree(key);
-		efree(tmp_str);
-	}
-
-	return 0;
-}
-
-static char *TWIG_IMPLODE_ARRAY_KEYS(char *joiner, zval *array TSRMLS_DC)
-{
-	smart_str collector = { 0, 0, 0 };
-
-	smart_str_appendl(&collector, "", 0);
-	zend_hash_apply_with_arguments(HASH_OF(array) APPLY_TSRMLS_CC, twig_add_array_key_to_string, 2, &collector, joiner);
-	smart_str_0(&collector);
-
-	return collector.c;
-}
-
-static void TWIG_RUNTIME_ERROR(zval *template TSRMLS_DC, char *message, ...)
-{
-	char *buffer;
-	va_list args;
-	zend_class_entry **pce;
-	zval *ex;
-	zval *constructor;
-	zval *zmessage;
-	zval *lineno;
-	zval *filename_func;
-	zval *filename;
-	zval *constructor_args[3];
-	zval *constructor_retval;
-
-	if (zend_lookup_class("Twig_Error_Runtime", strlen("Twig_Error_Runtime"), &pce TSRMLS_CC) == FAILURE) {
-		return;
-	}
-
-	va_start(args, message);
-	vspprintf(&buffer, 0, message, args);
-	va_end(args);
-
-	MAKE_STD_ZVAL(ex);
-	object_init_ex(ex, *pce);
-
-	// Call Twig_Error constructor
-	MAKE_STD_ZVAL(constructor);
-	MAKE_STD_ZVAL(zmessage);
-	MAKE_STD_ZVAL(lineno);
-	MAKE_STD_ZVAL(filename);
-	MAKE_STD_ZVAL(filename_func);
-	MAKE_STD_ZVAL(constructor_retval);
-
-	ZVAL_STRINGL(constructor, "__construct", sizeof("__construct")-1, 1);
-	ZVAL_STRING(zmessage, buffer, 1);
-	ZVAL_LONG(lineno, -1);
-
-	// Get template filename
-	ZVAL_STRINGL(filename_func, "getTemplateName", sizeof("getTemplateName")-1, 1);
-	call_user_function(EG(function_table), &template, filename_func, filename, 0, 0 TSRMLS_CC);
-
-	constructor_args[0] = zmessage;
-	constructor_args[1] = lineno;
-	constructor_args[2] = filename;
-	call_user_function(EG(function_table), &ex, constructor, constructor_retval, 3, constructor_args TSRMLS_CC);
-
-	zval_ptr_dtor(&constructor_retval);
-	zval_ptr_dtor(&zmessage);
-	zval_ptr_dtor(&lineno);
-	zval_ptr_dtor(&filename);
-	FREE_DTOR(constructor);
-	FREE_DTOR(filename_func);
-	efree(buffer);
-
-	zend_throw_exception_object(ex TSRMLS_CC);
-}
-
-static char *TWIG_GET_CLASS_NAME(zval *object TSRMLS_DC)
-{
-	char *class_name;
-	zend_uint class_name_len;
-
-	if (Z_TYPE_P(object) != IS_OBJECT) {
-		return "";
-	}
-#if PHP_API_VERSION >= 20100412
-	zend_get_object_classname(object, (const char **) &class_name, &class_name_len TSRMLS_CC);
-#else
-	zend_get_object_classname(object, &class_name, &class_name_len TSRMLS_CC);
-#endif
-	return class_name;
-}
-
-static int twig_add_method_to_class(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
-{
-	zend_class_entry *ce;
-	zval *retval;
-	char *item;
-	size_t item_len;
-	zend_function *mptr = (zend_function *) pDest;
-	APPLY_TSRMLS_FETCH();
-
-	if (!(mptr->common.fn_flags & ZEND_ACC_PUBLIC)) {
-		return 0;
-	}
-
-	ce = *va_arg(args, zend_class_entry**);
-	retval = va_arg(args, zval*);
-
-	item_len = strlen(mptr->common.function_name);
-	item = estrndup(mptr->common.function_name, item_len);
-	php_strtolower(item, item_len);
-
-	if (strcmp("getenvironment", item) == 0) {
-		zend_class_entry **twig_template_ce;
-		if (zend_lookup_class("Twig_Template", strlen("Twig_Template"), &twig_template_ce TSRMLS_CC) == FAILURE) {
-			return 0;
-		}
-		if (instanceof_function(ce, *twig_template_ce TSRMLS_CC)) {
-			return 0;
-		}
-	}
-
-	add_assoc_stringl_ex(retval, item, item_len+1, item, item_len, 0);
-
-	return 0;
-}
-
-static int twig_add_property_to_class(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
-{
-	zend_class_entry *ce;
-	zval *retval;
-	char *class_name, *prop_name;
-	zend_property_info *pptr = (zend_property_info *) pDest;
-	APPLY_TSRMLS_FETCH();
-
-	if (!(pptr->flags & ZEND_ACC_PUBLIC) || (pptr->flags & ZEND_ACC_STATIC)) {
-		return 0;
-	}
-
-	ce = *va_arg(args, zend_class_entry**);
-	retval = va_arg(args, zval*);
-
-#if PHP_API_VERSION >= 20100412
-	zend_unmangle_property_name(pptr->name, pptr->name_length, (const char **) &class_name, (const char **) &prop_name);
-#else
-	zend_unmangle_property_name(pptr->name, pptr->name_length, &class_name, &prop_name);
-#endif
-
-	add_assoc_string(retval, prop_name, prop_name, 1);
-
-	return 0;
-}
-
-static void twig_add_class_to_cache(zval *cache, zval *object, char *class_name TSRMLS_DC)
-{
-	zval *class_info, *class_methods, *class_properties;
-	zend_class_entry *class_ce;
-
-	class_ce = zend_get_class_entry(object TSRMLS_CC);
-
-	ALLOC_INIT_ZVAL(class_info);
-	ALLOC_INIT_ZVAL(class_methods);
-	ALLOC_INIT_ZVAL(class_properties);
-	array_init(class_info);
-	array_init(class_methods);
-	array_init(class_properties);
-	// add all methods to self::cache[$class]['methods']
-	zend_hash_apply_with_arguments(&class_ce->function_table APPLY_TSRMLS_CC, twig_add_method_to_class, 2, &class_ce, class_methods);
-	zend_hash_apply_with_arguments(&class_ce->properties_info APPLY_TSRMLS_CC, twig_add_property_to_class, 2, &class_ce, class_properties);
-
-	add_assoc_zval(class_info, "methods", class_methods);
-	add_assoc_zval(class_info, "properties", class_properties);
-	add_assoc_zval(cache, class_name, class_info);
-}
-
-/* {{{ proto mixed twig_template_get_attributes(TwigTemplate template, mixed object, mixed item, array arguments, string type, boolean isDefinedTest, boolean ignoreStrictCheck)
-   A C implementation of TwigTemplate::getAttribute() */
-PHP_FUNCTION(twig_template_get_attributes)
-{
-	zval *template;
-	zval *object;
-	char *item;
-	int  item_len;
-	zval *zitem, ztmpitem;
-	zval *arguments = NULL;
-	zval *ret = NULL;
-	char *type = NULL;
-	int   type_len = 0;
-	zend_bool isDefinedTest = 0;
-	zend_bool ignoreStrictCheck = 0;
-	int free_ret = 0;
-	zval *tmp_self_cache;
-	char *class_name = NULL;
-	zval *tmp_class;
-	char *type_name;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ozz|asbb", &template, &object, &zitem, &arguments, &type, &type_len, &isDefinedTest, &ignoreStrictCheck) == FAILURE) {
-		return;
-	}
-
-	// convert the item to a string
-	ztmpitem = *zitem;
-	zval_copy_ctor(&ztmpitem);
-	convert_to_string(&ztmpitem);
-	item_len = Z_STRLEN(ztmpitem);
-	item = estrndup(Z_STRVAL(ztmpitem), item_len);
-	zval_dtor(&ztmpitem);
-
-	if (!type) {
-		type = "any";
-	}
-
-/*
-	// array
-	if (\Twig\Template::METHOD_CALL !== $type) {
-		$arrayItem = is_bool($item) || is_float($item) ? (int) $item : $item;
-
-		if ((is_array($object) && array_key_exists($arrayItem, $object))
-			|| ($object instanceof ArrayAccess && isset($object[$arrayItem]))
-		) {
-			if ($isDefinedTest) {
-				return true;
-			}
-
-			return $object[$arrayItem];
-		}
-*/
-
-
-	if (strcmp("method", type) != 0) {
-		if ((TWIG_ARRAY_KEY_EXISTS(object, zitem))
-			|| (TWIG_INSTANCE_OF(object, zend_ce_arrayaccess TSRMLS_CC) && TWIG_ISSET_ARRAYOBJECT_ELEMENT(object, zitem TSRMLS_CC))
-		) {
-
-			if (isDefinedTest) {
-				efree(item);
-				RETURN_TRUE;
-			}
-
-			ret = TWIG_GET_ARRAY_ELEMENT_ZVAL(object, zitem TSRMLS_CC);
-
-			if (!ret) {
-				ret = &EG(uninitialized_zval);
-			}
-			RETVAL_ZVAL(ret, 1, 0);
-			if (free_ret) {
-				zval_ptr_dtor(&ret);
-			}
-			efree(item);
-			return;
-		}
-/*
-		if (\Twig\Template::ARRAY_CALL === $type) {
-			if ($isDefinedTest) {
-				return false;
-			}
-			if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
-				return null;
-			}
-*/
-		if (strcmp("array", type) == 0 || Z_TYPE_P(object) != IS_OBJECT) {
-			if (isDefinedTest) {
-				efree(item);
-				RETURN_FALSE;
-			}
-			if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) {
-				efree(item);
-				return;
-			}
-/*
-			if ($object instanceof ArrayAccess) {
-				$message = sprintf('Key "%s" in object with ArrayAccess of class "%s" does not exist', $arrayItem, get_class($object));
-			} elseif (is_object($object)) {
-				$message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface', $item, get_class($object));
-			} elseif (is_array($object)) {
-				if (empty($object)) {
-					$message = sprintf('Key "%s" does not exist as the array is empty', $arrayItem);
-				} else {
-					$message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object)));
-				}
-			} elseif (\Twig\Template::ARRAY_CALL === $type) {
-				if (null === $object) {
-					$message = sprintf('Impossible to access a key ("%s") on a null variable', $item);
-				} else {
-					$message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
-				}
-			} elseif (null === $object) {
-				$message = sprintf('Impossible to access an attribute ("%s") on a null variable', $item);
-			} else {
-				$message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
-			}
-			throw new \Twig\Error\RuntimeError($message, -1, $this->getTemplateName());
-		}
-	}
-*/
-			if (TWIG_INSTANCE_OF(object, zend_ce_arrayaccess TSRMLS_CC)) {
-				TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Key \"%s\" in object with ArrayAccess of class \"%s\" does not exist.", item, TWIG_GET_CLASS_NAME(object TSRMLS_CC));
-			} else if (Z_TYPE_P(object) == IS_OBJECT) {
-				TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to access a key \"%s\" on an object of class \"%s\" that does not implement ArrayAccess interface.", item, TWIG_GET_CLASS_NAME(object TSRMLS_CC));
-			} else if (Z_TYPE_P(object) == IS_ARRAY) {
-				if (0 == zend_hash_num_elements(Z_ARRVAL_P(object))) {
-					TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Key \"%s\" does not exist as the array is empty.", item);
-				} else {
-					char *array_keys = TWIG_IMPLODE_ARRAY_KEYS(", ", object TSRMLS_CC);
-					TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Key \"%s\" for array with keys \"%s\" does not exist.", item, array_keys);
-					efree(array_keys);
-				}
-			} else {
-				char *type_name = zend_zval_type_name(object);
-				Z_ADDREF_P(object);
-				if (Z_TYPE_P(object) == IS_NULL) {
-					convert_to_string(object);
-					TWIG_RUNTIME_ERROR(template TSRMLS_CC,
-						(strcmp("array", type) == 0)
-							? "Impossible to access a key (\"%s\") on a %s variable."
-							: "Impossible to access an attribute (\"%s\") on a %s variable.",
-						item, type_name);
-				} else {
-					convert_to_string(object);
-					TWIG_RUNTIME_ERROR(template TSRMLS_CC,
-						(strcmp("array", type) == 0)
-							? "Impossible to access a key (\"%s\") on a %s variable (\"%s\")."
-							: "Impossible to access an attribute (\"%s\") on a %s variable (\"%s\").",
-						item, type_name, Z_STRVAL_P(object));
-				}
-				zval_ptr_dtor(&object);
-			}
-			efree(item);
-			return;
-		}
-	}
-
-/*
-	if (!is_object($object)) {
-		if ($isDefinedTest) {
-			return false;
-		}
-*/
-
-	if (Z_TYPE_P(object) != IS_OBJECT) {
-		if (isDefinedTest) {
-			efree(item);
-			RETURN_FALSE;
-		}
-/*
-		if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
-			return null;
-		}
-
-		if (null === $object) {
-			$message = sprintf('Impossible to invoke a method ("%s") on a null variable', $item);
-		} elseif (is_array($object)) {
-			$message = sprintf('Impossible to invoke a method ("%s") on an array.', $item);
-		} else {
-			$message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
-		}
-
-		throw new \Twig\Error\RuntimeError($message, -1, $this->getTemplateName());
-	}
-*/
-		if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) {
-			efree(item);
-			return;
-		}
-
-		type_name = zend_zval_type_name(object);
-		Z_ADDREF_P(object);
-		if (Z_TYPE_P(object) == IS_NULL) {
-			TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a null variable.", item);
-		} else if (Z_TYPE_P(object) == IS_ARRAY) {
-			TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on an array.", item);
-		} else {
-			convert_to_string_ex(&object);
-
-			TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a %s variable (\"%s\").", item, type_name, Z_STRVAL_P(object));
-		}
-
-		zval_ptr_dtor(&object);
-		efree(item);
-		return;
-	}
-/*
-	$class = get_class($object);
-*/
-
-	class_name = TWIG_GET_CLASS_NAME(object TSRMLS_CC);
-	tmp_self_cache = TWIG_GET_STATIC_PROPERTY(template, "cache" TSRMLS_CC);
-	tmp_class = TWIG_GET_ARRAY_ELEMENT(tmp_self_cache, class_name, strlen(class_name) TSRMLS_CC);
-
-	if (!tmp_class) {
-		twig_add_class_to_cache(tmp_self_cache, object, class_name TSRMLS_CC);
-		tmp_class = TWIG_GET_ARRAY_ELEMENT(tmp_self_cache, class_name, strlen(class_name) TSRMLS_CC);
-	}
-	efree(class_name);
-
-/*
-	// object property
-	if (\Twig\Template::METHOD_CALL !== $type && !$object instanceof \Twig\Template) {
-		if (isset($object->$item) || array_key_exists((string) $item, $object)) {
-			if ($isDefinedTest) {
-				return true;
-			}
-
-			if ($this->env->hasExtension('\Twig\Extension\SandboxExtension')) {
-				$this->env->getExtension('\Twig\Extension\SandboxExtension')->checkPropertyAllowed($object, $item);
-			}
-
-			return $object->$item;
-		}
-	}
-*/
-	if (strcmp("method", type) != 0 && !TWIG_INSTANCE_OF_USERLAND(object, "Twig_Template" TSRMLS_CC)) {
-		zval *tmp_properties, *tmp_item;
-
-		tmp_properties = TWIG_GET_ARRAY_ELEMENT(tmp_class, "properties", strlen("properties") TSRMLS_CC);
-		tmp_item = TWIG_GET_ARRAY_ELEMENT(tmp_properties, item, item_len TSRMLS_CC);
-
-		if (tmp_item || TWIG_HAS_PROPERTY(object, zitem TSRMLS_CC) || TWIG_HAS_DYNAMIC_PROPERTY(object, item, item_len TSRMLS_CC)) {
-			if (isDefinedTest) {
-				efree(item);
-				RETURN_TRUE;
-			}
-			if (TWIG_CALL_SB(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "hasExtension", "Twig_Extension_Sandbox" TSRMLS_CC)) {
-				TWIG_CALL_ZZ(TWIG_CALL_S(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "getExtension", "Twig_Extension_Sandbox" TSRMLS_CC), "checkPropertyAllowed", object, zitem TSRMLS_CC);
-			}
-			if (EG(exception)) {
-				efree(item);
-				return;
-			}
-
-			ret = TWIG_PROPERTY(object, zitem TSRMLS_CC);
-			efree(item);
-			RETURN_ZVAL(ret, 1, 0);
-		}
-	}
-/*
-	// object method
-	if (!isset(self::$cache[$class]['methods'])) {
-		if ($object instanceof self) {
-			$ref = new \ReflectionClass($class);
-			$methods = [];
-
-			foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $refMethod) {
-				$methodName = strtolower($refMethod->name);
-
-				// Accessing the environment from templates is forbidden to prevent untrusted changes to the environment
-				if ('getenvironment' !== $methodName) {
-					$methods[$methodName] = true;
-				}
-			}
-
-			self::$cache[$class]['methods'] = $methods;
-        } else {
-			self::$cache[$class]['methods'] = array_change_key_case(array_flip(get_class_methods($object)));
-        }
-	}
-
-	$call = false;
-	$lcItem = strtolower($item);
-	if (isset(self::$cache[$class]['methods'][$lcItem])) {
-		$method = (string) $item;
-	} elseif (isset(self::$cache[$class]['methods']['get'.$lcItem])) {
-		$method = 'get'.$item;
-	} elseif (isset(self::$cache[$class]['methods']['is'.$lcItem])) {
-		$method = 'is'.$item;
-	} elseif (isset(self::$cache[$class]['methods']['__call'])) {
-		$method = (string) $item;
-		$call = true;
-*/
-	{
-		int call = 0;
-		char *lcItem = TWIG_STRTOLOWER(item, item_len);
-		int   lcItem_length;
-		char *method = NULL;
-		char *methodForDeprecation = NULL;
-		char *tmp_method_name_get;
-		char *tmp_method_name_is;
-		zval *zmethod;
-		zval *tmp_methods;
-
-		lcItem_length = strlen(lcItem);
-		tmp_method_name_get = emalloc(4 + lcItem_length);
-		tmp_method_name_is  = emalloc(3 + lcItem_length);
-
-		sprintf(tmp_method_name_get, "get%s", lcItem);
-		sprintf(tmp_method_name_is, "is%s", lcItem);
-
-		tmp_methods = TWIG_GET_ARRAY_ELEMENT(tmp_class, "methods", strlen("methods") TSRMLS_CC);
-		methodForDeprecation = emalloc(item_len + 1);
-		sprintf(methodForDeprecation, "%s", item);
-
-		if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, lcItem, lcItem_length TSRMLS_CC)) {
-			method = item;
-		} else if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, tmp_method_name_get, lcItem_length + 3 TSRMLS_CC)) {
-			method = tmp_method_name_get;
-		} else if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, tmp_method_name_is, lcItem_length + 2 TSRMLS_CC)) {
-			method = tmp_method_name_is;
-		} else if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, "__call", 6 TSRMLS_CC)) {
-			method = item;
-			call = 1;
-/*
-	} else {
-		if ($isDefinedTest) {
-			return false;
-		}
-
-		if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
-			return null;
-		}
-
-		throw new \Twig\Error\RuntimeError(sprintf('Method "%s" for object "%s" does not exist.', $item, get_class($object)), -1, $this->getTemplateName());
-	}
-
-	if ($isDefinedTest) {
-		return true;
-	}
-*/
-		} else {
-			efree(tmp_method_name_get);
-			efree(tmp_method_name_is);
-			efree(lcItem);
-
-			if (isDefinedTest) {
-				efree(item);
-				RETURN_FALSE;
-			}
-			if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) {
-				efree(item);
-				return;
-			}
-			TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Neither the property \"%s\" nor one of the methods \"%s()\", \"get%s()\"/\"is%s()\" or \"__call()\" exist and have public access in class \"%s\".", item, item, item, item, TWIG_GET_CLASS_NAME(object TSRMLS_CC));
-			efree(item);
-			return;
-		}
-
-		if (isDefinedTest) {
-			efree(tmp_method_name_get);
-			efree(tmp_method_name_is);
-			efree(lcItem);efree(item);
-			RETURN_TRUE;
-		}
-/*
-	if ($this->env->hasExtension('\Twig\Extension\SandboxExtension')) {
-		$this->env->getExtension('\Twig\Extension\SandboxExtension')->checkMethodAllowed($object, $method);
-	}
-*/
-		MAKE_STD_ZVAL(zmethod);
-		ZVAL_STRING(zmethod, method, 1);
-		if (TWIG_CALL_SB(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "hasExtension", "Twig_Extension_Sandbox" TSRMLS_CC)) {
-			TWIG_CALL_ZZ(TWIG_CALL_S(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "getExtension", "Twig_Extension_Sandbox" TSRMLS_CC), "checkMethodAllowed", object, zmethod TSRMLS_CC);
-		}
-		zval_ptr_dtor(&zmethod);
-		if (EG(exception)) {
-			efree(tmp_method_name_get);
-			efree(tmp_method_name_is);
-			efree(lcItem);efree(item);
-			return;
-		}
-/*
-	// Some objects throw exceptions when they have __call, and the method we try
-	// to call is not supported. If ignoreStrictCheck is true, we should return null.
-	try {
-	    $ret = call_user_func_array([$object, $method], $arguments);
-	} catch (\BadMethodCallException $e) {
-	    if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) {
-	        return null;
-	    }
-	    throw $e;
-	}
-*/
-		ret = TWIG_CALL_USER_FUNC_ARRAY(object, method, arguments TSRMLS_CC);
-		if (EG(exception) && TWIG_INSTANCE_OF(EG(exception), spl_ce_BadMethodCallException TSRMLS_CC)) {
-			if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) {
-				efree(tmp_method_name_get);
-				efree(tmp_method_name_is);
-				efree(lcItem);efree(item);
-				zend_clear_exception(TSRMLS_C);
-				return;
-			}
-		}
-		free_ret = 1;
-		efree(tmp_method_name_get);
-		efree(tmp_method_name_is);
-		efree(lcItem);
-/*
-	// @deprecated in 1.28
-	if ($object instanceof Twig_TemplateInterface) {
-		$self = $object->getTemplateName() === $this->getTemplateName();
-		$message = sprintf('Calling "%s" on template "%s" from template "%s" is deprecated since version 1.28 and won\'t be supported anymore in 2.0.', $item, $object->getTemplateName(), $this->getTemplateName());
-		if ('renderBlock' === $method || 'displayBlock' === $method) {
-			$message .= sprintf(' Use block("%s"%s) instead).', $arguments[0], $self ? '' : ', template');
-		} elseif ('hasBlock' === $method) {
-			$message .= sprintf(' Use "block("%s"%s) is defined" instead).', $arguments[0], $self ? '' : ', template');
-		} elseif ('render' === $method || 'display' === $method) {
-			$message .= sprintf(' Use include("%s") instead).', $object->getTemplateName());
-		}
-		@trigger_error($message, E_USER_DEPRECATED);
-
-		return $ret === '' ? '' : new \Twig\Markup($ret, $this->env->getCharset());
-	}
-
-	return $ret;
-*/
-		efree(item);
-		// ret can be null, if e.g. the called method throws an exception
-		if (ret) {
-			if (TWIG_INSTANCE_OF_USERLAND(object, "Twig_TemplateInterface" TSRMLS_CC)) {
-				int self;
-				int old_error_reporting;
-				zval *object_filename;
-				zval *this_filename;
-				zval *filename_func;
-				char *deprecation_message_complement = NULL;
-				char *deprecation_message = NULL;
-
-				MAKE_STD_ZVAL(object_filename);
-				MAKE_STD_ZVAL(this_filename);
-				MAKE_STD_ZVAL(filename_func);
-
-				// Get templates names
-				ZVAL_STRINGL(filename_func, "getTemplateName", sizeof("getTemplateName")-1, 1);
-				call_user_function(EG(function_table), &object, filename_func, object_filename, 0, 0 TSRMLS_CC);
-				ZVAL_STRINGL(filename_func, "getTemplateName", sizeof("getTemplateName")-1, 1);
-				call_user_function(EG(function_table), &template, filename_func, this_filename, 0, 0 TSRMLS_CC);
-
-				self = (strcmp(Z_STRVAL_P(object_filename), Z_STRVAL_P(this_filename)) == 0);
-
-				if (strcmp(methodForDeprecation, "renderBlock") == 0 || strcmp(methodForDeprecation, "displayBlock") == 0) {
-					zval **arg0;
-					zend_hash_index_find(HASH_OF(arguments), 0, (void **) &arg0);
-					asprintf(
-						&deprecation_message_complement,
-						" Use block(\"%s\"%s) instead).",
-						Z_STRVAL_PP(arg0),
-						self ? "" : ", template"
-					);
-				} else if (strcmp(methodForDeprecation, "hasBlock") == 0) {
-					zval **arg0;
-					zend_hash_index_find(HASH_OF(arguments), 0, (void **) &arg0);
-					asprintf(
-						&deprecation_message_complement,
-						" Use \"block(\"%s\"%s) is defined\" instead).",
-						Z_STRVAL_PP(arg0),
-						self ? "" : ", template"
-					);
-				} else if (strcmp(methodForDeprecation, "render") == 0 || strcmp(methodForDeprecation, "display") == 0) {
-					asprintf(
-						&deprecation_message_complement,
-						" Use include(\"%s\") instead).",
-						Z_STRVAL_P(object_filename)
-					);
-				} else {
-					deprecation_message_complement = (char*)calloc(0, sizeof(char));
-				}
-
-				asprintf(
-					&deprecation_message,
-					"Calling \"%s\" on template \"%s\" from template \"%s\" is deprecated since version 1.28 and won't be supported anymore in 2.0.%s",
-					methodForDeprecation,
-					Z_STRVAL_P(object_filename),
-					Z_STRVAL_P(this_filename),
-					deprecation_message_complement
-				);
-
-				old_error_reporting = EG(error_reporting);
-				EG(error_reporting) = 0;
-				zend_error(E_USER_DEPRECATED, "%s", deprecation_message);
-				EG(error_reporting) = old_error_reporting;
-
-				FREE_DTOR(filename_func)
-				FREE_DTOR(object_filename)
-				FREE_DTOR(this_filename)
-				free(deprecation_message);
-				free(deprecation_message_complement);
-
-				if (Z_STRLEN_P(ret) != 0) {
-					zval *charset = TWIG_CALL_USER_FUNC_ARRAY(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "getCharset", NULL TSRMLS_CC);
-					TWIG_NEW(return_value, "Twig_Markup", ret, charset TSRMLS_CC);
-					zval_ptr_dtor(&charset);
-					if (ret) {
-						zval_ptr_dtor(&ret);
-					}
-					efree(methodForDeprecation);
-					return;
-				}
-			}
-
-			RETVAL_ZVAL(ret, 1, 0);
-			if (free_ret) {
-				zval_ptr_dtor(&ret);
-			}
-		}
-
-		efree(methodForDeprecation);
-	}
-}
diff --git a/vendor/twig/twig/lib/Twig/Autoloader.php b/vendor/twig/twig/lib/Twig/Autoloader.php
deleted file mode 100644
index e34e2144fcf5d2efc2254c6af80aba77678f266a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Autoloader.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Autoloader class is deprecated since version 1.21 and will be removed in 2.0. Use Composer instead.', E_USER_DEPRECATED);
-
-/**
- * Autoloads Twig classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.21 and will be removed in 2.0. Use Composer instead. 2.0.
- */
-class Twig_Autoloader
-{
-    /**
-     * Registers Twig_Autoloader as an SPL autoloader.
-     *
-     * @param bool $prepend whether to prepend the autoloader or not
-     */
-    public static function register($prepend = false)
-    {
-        @trigger_error('Using Twig_Autoloader is deprecated since version 1.21. Use Composer instead.', E_USER_DEPRECATED);
-
-        spl_autoload_register([__CLASS__, 'autoload'], true, $prepend);
-    }
-
-    /**
-     * Handles autoloading of classes.
-     *
-     * @param string $class a class name
-     */
-    public static function autoload($class)
-    {
-        if (0 !== strpos($class, 'Twig')) {
-            return;
-        }
-
-        if (is_file($file = __DIR__.'/../'.str_replace(['_', "\0"], ['/', ''], $class).'.php')) {
-            require $file;
-        } elseif (is_file($file = __DIR__.'/../../src/'.str_replace(['Twig\\', '\\', "\0"], ['', '/', ''], $class).'.php')) {
-            require $file;
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php b/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php
deleted file mode 100644
index fe99b25889b38b496656c083181609619d7ba9d0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\NodeVisitor\AbstractNodeVisitor;
-
-class_exists('Twig\NodeVisitor\AbstractNodeVisitor');
-
-if (\false) {
-    class Twig_BaseNodeVisitor extends AbstractNodeVisitor
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Cache/Filesystem.php b/vendor/twig/twig/lib/Twig/Cache/Filesystem.php
deleted file mode 100644
index ce957583e0f3cbdb6468f61faebebc6d00a3bc45..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Cache/Filesystem.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Cache\FilesystemCache;
-
-class_exists('Twig\Cache\FilesystemCache');
-
-if (\false) {
-    class Twig_Cache_Filesystem extends FilesystemCache
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Cache/Null.php b/vendor/twig/twig/lib/Twig/Cache/Null.php
deleted file mode 100644
index 5cfa40ec2946c7ade3d4e77f5ba6de48962fb4a8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Cache/Null.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Cache\NullCache;
-
-class_exists('Twig\Cache\NullCache');
-
-if (\false) {
-    class Twig_Cache_Null extends NullCache
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/CacheInterface.php b/vendor/twig/twig/lib/Twig/CacheInterface.php
deleted file mode 100644
index 5d251dbd3c99b07aa7ea49d3e559bf6b37f3b1d0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/CacheInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Cache\CacheInterface;
-
-class_exists('Twig\Cache\CacheInterface');
-
-if (\false) {
-    class Twig_CacheInterface extends CacheInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Compiler.php b/vendor/twig/twig/lib/Twig/Compiler.php
deleted file mode 100644
index 8d3811d2b84407ef906df5a96070a9bf09350460..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Compiler.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Compiler;
-
-class_exists('Twig\Compiler');
-
-if (\false) {
-    class Twig_Compiler extends Compiler
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/CompilerInterface.php b/vendor/twig/twig/lib/Twig/CompilerInterface.php
deleted file mode 100644
index 42872c9cd568496ea48ab1da77214fffee70ac0e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/CompilerInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Interface implemented by compiler classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface Twig_CompilerInterface
-{
-    /**
-     * Compiles a node.
-     *
-     * @return $this
-     */
-    public function compile(Twig_NodeInterface $node);
-
-    /**
-     * Gets the current PHP code after compilation.
-     *
-     * @return string The PHP code
-     */
-    public function getSource();
-}
diff --git a/vendor/twig/twig/lib/Twig/ContainerRuntimeLoader.php b/vendor/twig/twig/lib/Twig/ContainerRuntimeLoader.php
deleted file mode 100644
index b1f32f68233e2141a1d33f34a675d2507b59b6c2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/ContainerRuntimeLoader.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\RuntimeLoader\ContainerRuntimeLoader;
-
-class_exists('Twig\RuntimeLoader\ContainerRuntimeLoader');
-
-if (\false) {
-    class Twig_ContainerRuntimeLoader extends ContainerRuntimeLoader
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Environment.php b/vendor/twig/twig/lib/Twig/Environment.php
deleted file mode 100644
index 8c056366ead28eae47432c0fcb747bdf485bac43..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Environment.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Environment;
-
-class_exists('Twig\Environment');
-
-if (\false) {
-    class Twig_Environment extends Environment
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Error.php b/vendor/twig/twig/lib/Twig/Error.php
deleted file mode 100644
index 887490ce69d3c00ed093cd6860d12714c29465d2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Error.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Error\Error;
-
-class_exists('Twig\Error\Error');
-
-if (\false) {
-    class Twig_Error extends Error
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Error/Loader.php b/vendor/twig/twig/lib/Twig/Error/Loader.php
deleted file mode 100644
index 8caca6fd110dcb8eda3042cf9c663fe680402597..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Error/Loader.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Error\LoaderError;
-
-class_exists('Twig\Error\LoaderError');
-
-if (\false) {
-    class Twig_Error_Loader extends LoaderError
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Error/Runtime.php b/vendor/twig/twig/lib/Twig/Error/Runtime.php
deleted file mode 100644
index d45133b897ea15d36bb5ec92666fc990ffcb1773..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Error/Runtime.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Error\RuntimeError;
-
-class_exists('Twig\Error\RuntimeError');
-
-if (\false) {
-    class Twig_Error_Runtime extends RuntimeError
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Error/Syntax.php b/vendor/twig/twig/lib/Twig/Error/Syntax.php
deleted file mode 100644
index f5920c6237d3e097258d5660f44c2125767c913d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Error/Syntax.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Error\SyntaxError;
-
-class_exists('Twig\Error\SyntaxError');
-
-if (\false) {
-    class Twig_Error_Syntax extends SyntaxError
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/ExistsLoaderInterface.php b/vendor/twig/twig/lib/Twig/ExistsLoaderInterface.php
deleted file mode 100644
index 3acbf65baa55557242137a2b24707c6531b03a75..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/ExistsLoaderInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Loader\ExistsLoaderInterface;
-
-class_exists('Twig\Loader\ExistsLoaderInterface');
-
-if (\false) {
-    class Twig_ExistsLoaderInterface extends ExistsLoaderInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/ExpressionParser.php b/vendor/twig/twig/lib/Twig/ExpressionParser.php
deleted file mode 100644
index 687404d6c841e205dd6193d5e424f2a4910398f9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/ExpressionParser.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\ExpressionParser;
-
-class_exists('Twig\ExpressionParser');
-
-if (\false) {
-    class Twig_ExpressionParser extends ExpressionParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension.php b/vendor/twig/twig/lib/Twig/Extension.php
deleted file mode 100644
index 1cc8216a5e783827fd00d91e2be3cf2a4b8da8c8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Extension.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\AbstractExtension;
-
-class_exists('Twig\Extension\AbstractExtension');
-
-if (\false) {
-    class Twig_Extension extends AbstractExtension
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Core.php b/vendor/twig/twig/lib/Twig/Extension/Core.php
deleted file mode 100644
index fb5a75476745ea0b7fa889d38db2c08504507d65..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Extension/Core.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\CoreExtension;
-
-class_exists('Twig\Extension\CoreExtension');
-
-if (\false) {
-    class Twig_Extension_Core extends CoreExtension
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Debug.php b/vendor/twig/twig/lib/Twig/Extension/Debug.php
deleted file mode 100644
index bbb44fe5c60af88b4eefb1f9c0879d81098e6bdc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Extension/Debug.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\DebugExtension;
-
-class_exists('Twig\Extension\DebugExtension');
-
-if (\false) {
-    class Twig_Extension_Debug extends DebugExtension
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Escaper.php b/vendor/twig/twig/lib/Twig/Extension/Escaper.php
deleted file mode 100644
index 8d15df427974499990ac1f40e8ab041872ee06b4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Extension/Escaper.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\EscaperExtension;
-
-class_exists('Twig\Extension\EscaperExtension');
-
-if (\false) {
-    class Twig_Extension_Escaper extends EscaperExtension
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/GlobalsInterface.php b/vendor/twig/twig/lib/Twig/Extension/GlobalsInterface.php
deleted file mode 100644
index 9bfcca4ede8e7e053caa29d38eb573c73c5e9249..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Extension/GlobalsInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\GlobalsInterface;
-
-class_exists('Twig\Extension\GlobalsInterface');
-
-if (\false) {
-    class Twig_Extension_GlobalsInterface extends GlobalsInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php b/vendor/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php
deleted file mode 100644
index 6fbf1ba5bf8cd1119c5a1ac09792c8ee76fa3e7f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\InitRuntimeInterface;
-
-class_exists('Twig\Extension\InitRuntimeInterface');
-
-if (\false) {
-    class Twig_Extension_InitRuntimeInterface extends InitRuntimeInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Optimizer.php b/vendor/twig/twig/lib/Twig/Extension/Optimizer.php
deleted file mode 100644
index 14802deb1bcfb79981c8718b44dbf5439516dd31..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Extension/Optimizer.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\OptimizerExtension;
-
-class_exists('Twig\Extension\OptimizerExtension');
-
-if (\false) {
-    class Twig_Extension_Optimizer extends OptimizerExtension
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Profiler.php b/vendor/twig/twig/lib/Twig/Extension/Profiler.php
deleted file mode 100644
index 086b34f63d3a08826ceac5401f43446b7f833d43..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Extension/Profiler.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\ProfilerExtension;
-
-class_exists('Twig\Extension\ProfilerExtension');
-
-if (\false) {
-    class Twig_Extension_Profiler extends ProfilerExtension
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Sandbox.php b/vendor/twig/twig/lib/Twig/Extension/Sandbox.php
deleted file mode 100644
index 2b8a1514f0bdc1f2988c73fa62404f8a4b6d4d7a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Extension/Sandbox.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\SandboxExtension;
-
-class_exists('Twig\Extension\SandboxExtension');
-
-if (\false) {
-    class Twig_Extension_Sandbox extends SandboxExtension
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Staging.php b/vendor/twig/twig/lib/Twig/Extension/Staging.php
deleted file mode 100644
index 7681b4985ae9bc6305dc50aebe2375ede471eb28..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Extension/Staging.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\StagingExtension;
-
-class_exists('Twig\Extension\StagingExtension');
-
-if (\false) {
-    class Twig_Extension_Staging extends StagingExtension
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/StringLoader.php b/vendor/twig/twig/lib/Twig/Extension/StringLoader.php
deleted file mode 100644
index 5ce2407e067edec6d020978511b7498348fbb0ea..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Extension/StringLoader.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\StringLoaderExtension;
-
-class_exists('Twig\Extension\StringLoaderExtension');
-
-if (\false) {
-    class Twig_Extension_StringLoader extends StringLoaderExtension
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/ExtensionInterface.php b/vendor/twig/twig/lib/Twig/ExtensionInterface.php
deleted file mode 100644
index 3ef2ed58688fe75208cb81a71bf8061f9e9304c8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/ExtensionInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Extension\ExtensionInterface;
-
-class_exists('Twig\Extension\ExtensionInterface');
-
-if (\false) {
-    class Twig_ExtensionInterface extends ExtensionInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/FactoryRuntimeLoader.php b/vendor/twig/twig/lib/Twig/FactoryRuntimeLoader.php
deleted file mode 100644
index 6834439db4e88d1483043ef2e65e3a83a54c608b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/FactoryRuntimeLoader.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\RuntimeLoader\FactoryRuntimeLoader;
-
-class_exists('Twig\RuntimeLoader\FactoryRuntimeLoader');
-
-if (\false) {
-    class Twig_FactoryRuntimeLoader extends FactoryRuntimeLoader
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php b/vendor/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php
deleted file mode 100644
index 99c2656ff7935925599f3e32c9f991dc5d2d048b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\FileExtensionEscapingStrategy;
-
-class_exists('Twig\FileExtensionEscapingStrategy');
-
-if (\false) {
-    class Twig_FileExtensionEscapingStrategy extends FileExtensionEscapingStrategy
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Filter.php b/vendor/twig/twig/lib/Twig/Filter.php
deleted file mode 100644
index da4191e31f4c62a5baa73e3ddd84fd825fdfa321..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Filter.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Node;
-
-@trigger_error('The Twig_Filter class is deprecated since version 1.12 and will be removed in 2.0. Use \Twig\TwigFilter instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a template filter.
- *
- * Use \Twig\TwigFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-abstract class Twig_Filter implements Twig_FilterInterface, Twig_FilterCallableInterface
-{
-    protected $options;
-    protected $arguments = [];
-
-    public function __construct(array $options = [])
-    {
-        $this->options = array_merge([
-            'needs_environment' => false,
-            'needs_context' => false,
-            'pre_escape' => null,
-            'preserves_safety' => null,
-            'callable' => null,
-        ], $options);
-    }
-
-    public function setArguments($arguments)
-    {
-        $this->arguments = $arguments;
-    }
-
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    public function needsEnvironment()
-    {
-        return $this->options['needs_environment'];
-    }
-
-    public function needsContext()
-    {
-        return $this->options['needs_context'];
-    }
-
-    public function getSafe(Node $filterArgs)
-    {
-        if (isset($this->options['is_safe'])) {
-            return $this->options['is_safe'];
-        }
-
-        if (isset($this->options['is_safe_callback'])) {
-            return \call_user_func($this->options['is_safe_callback'], $filterArgs);
-        }
-    }
-
-    public function getPreservesSafety()
-    {
-        return $this->options['preserves_safety'];
-    }
-
-    public function getPreEscape()
-    {
-        return $this->options['pre_escape'];
-    }
-
-    public function getCallable()
-    {
-        return $this->options['callable'];
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Filter/Function.php b/vendor/twig/twig/lib/Twig/Filter/Function.php
deleted file mode 100644
index 011d4ccf4600b99c1d18c1cedc466d9f5f0f34e1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Filter/Function.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Filter_Function class is deprecated since version 1.12 and will be removed in 2.0. Use \Twig\TwigFilter instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a function template filter.
- *
- * Use \Twig\TwigFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Filter_Function extends Twig_Filter
-{
-    protected $function;
-
-    public function __construct($function, array $options = [])
-    {
-        $options['callable'] = $function;
-
-        parent::__construct($options);
-
-        $this->function = $function;
-    }
-
-    public function compile()
-    {
-        return $this->function;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Filter/Method.php b/vendor/twig/twig/lib/Twig/Filter/Method.php
deleted file mode 100644
index 5cd06282248ee53ee0706dce2b4b1d9496974241..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Filter/Method.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Extension\ExtensionInterface;
-
-@trigger_error('The Twig_Filter_Method class is deprecated since version 1.12 and will be removed in 2.0. Use \Twig\TwigFilter instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a method template filter.
- *
- * Use \Twig\TwigFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Filter_Method extends Twig_Filter
-{
-    protected $extension;
-    protected $method;
-
-    public function __construct(ExtensionInterface $extension, $method, array $options = [])
-    {
-        $options['callable'] = [$extension, $method];
-
-        parent::__construct($options);
-
-        $this->extension = $extension;
-        $this->method = $method;
-    }
-
-    public function compile()
-    {
-        return sprintf('$this->env->getExtension(\'%s\')->%s', \get_class($this->extension), $this->method);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Filter/Node.php b/vendor/twig/twig/lib/Twig/Filter/Node.php
deleted file mode 100644
index 8bb2899c52e965b8e59025fa20af928499256689..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Filter/Node.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Filter_Node class is deprecated since version 1.12 and will be removed in 2.0. Use \Twig\TwigFilter instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a template filter as a node.
- *
- * Use \Twig\TwigFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Filter_Node extends Twig_Filter
-{
-    protected $class;
-
-    public function __construct($class, array $options = [])
-    {
-        parent::__construct($options);
-
-        $this->class = $class;
-    }
-
-    public function getClass()
-    {
-        return $this->class;
-    }
-
-    public function compile()
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/FilterCallableInterface.php b/vendor/twig/twig/lib/Twig/FilterCallableInterface.php
deleted file mode 100644
index 091ca97454e5f78e37963832679931c947d543b2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/FilterCallableInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a callable template filter.
- *
- * Use \Twig\TwigFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_FilterCallableInterface
-{
-    public function getCallable();
-}
diff --git a/vendor/twig/twig/lib/Twig/FilterInterface.php b/vendor/twig/twig/lib/Twig/FilterInterface.php
deleted file mode 100644
index 9b85f9760d6184bb2145d9c88f53f7445068189f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/FilterInterface.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Node;
-
-/**
- * Represents a template filter.
- *
- * Use \Twig\TwigFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_FilterInterface
-{
-    /**
-     * Compiles a filter.
-     *
-     * @return string The PHP code for the filter
-     */
-    public function compile();
-
-    public function needsEnvironment();
-
-    public function needsContext();
-
-    public function getSafe(Node $filterArgs);
-
-    public function getPreservesSafety();
-
-    public function getPreEscape();
-
-    public function setArguments($arguments);
-
-    public function getArguments();
-}
diff --git a/vendor/twig/twig/lib/Twig/Function.php b/vendor/twig/twig/lib/Twig/Function.php
deleted file mode 100644
index 6646e746f5be67ca7ea5f49c6e0998c35146333b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Function.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Node;
-
-@trigger_error('The Twig_Function class is deprecated since version 1.12 and will be removed in 2.0. Use \Twig\TwigFunction instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a template function.
- *
- * Use \Twig\TwigFunction instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-abstract class Twig_Function implements Twig_FunctionInterface, Twig_FunctionCallableInterface
-{
-    protected $options;
-    protected $arguments = [];
-
-    public function __construct(array $options = [])
-    {
-        $this->options = array_merge([
-            'needs_environment' => false,
-            'needs_context' => false,
-            'callable' => null,
-        ], $options);
-    }
-
-    public function setArguments($arguments)
-    {
-        $this->arguments = $arguments;
-    }
-
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    public function needsEnvironment()
-    {
-        return $this->options['needs_environment'];
-    }
-
-    public function needsContext()
-    {
-        return $this->options['needs_context'];
-    }
-
-    public function getSafe(Node $functionArgs)
-    {
-        if (isset($this->options['is_safe'])) {
-            return $this->options['is_safe'];
-        }
-
-        if (isset($this->options['is_safe_callback'])) {
-            return \call_user_func($this->options['is_safe_callback'], $functionArgs);
-        }
-
-        return [];
-    }
-
-    public function getCallable()
-    {
-        return $this->options['callable'];
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Function/Function.php b/vendor/twig/twig/lib/Twig/Function/Function.php
deleted file mode 100644
index 605d8d335ede7d08a928fe13fb52cd5a1c0794ea..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Function/Function.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Arnaud Le Blanc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Function_Function class is deprecated since version 1.12 and will be removed in 2.0. Use \Twig\TwigFunction instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a function template function.
- *
- * Use \Twig\TwigFunction instead.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Function_Function extends Twig_Function
-{
-    protected $function;
-
-    public function __construct($function, array $options = [])
-    {
-        $options['callable'] = $function;
-
-        parent::__construct($options);
-
-        $this->function = $function;
-    }
-
-    public function compile()
-    {
-        return $this->function;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Function/Method.php b/vendor/twig/twig/lib/Twig/Function/Method.php
deleted file mode 100644
index 9e472c5d1058f811bc9eac75cf992f0a5fd3bfd0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Function/Method.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Arnaud Le Blanc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Extension\ExtensionInterface;
-
-@trigger_error('The Twig_Function_Method class is deprecated since version 1.12 and will be removed in 2.0. Use \Twig\TwigFunction instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a method template function.
- *
- * Use \Twig\TwigFunction instead.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Function_Method extends Twig_Function
-{
-    protected $extension;
-    protected $method;
-
-    public function __construct(ExtensionInterface $extension, $method, array $options = [])
-    {
-        $options['callable'] = [$extension, $method];
-
-        parent::__construct($options);
-
-        $this->extension = $extension;
-        $this->method = $method;
-    }
-
-    public function compile()
-    {
-        return sprintf('$this->env->getExtension(\'%s\')->%s', \get_class($this->extension), $this->method);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Function/Node.php b/vendor/twig/twig/lib/Twig/Function/Node.php
deleted file mode 100644
index 8148ec32d7b571f052a0f3d1047bcf60981a31f8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Function/Node.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Function_Node class is deprecated since version 1.12 and will be removed in 2.0. Use \Twig\TwigFunction instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a template function as a node.
- *
- * Use \Twig\TwigFunction instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Function_Node extends Twig_Function
-{
-    protected $class;
-
-    public function __construct($class, array $options = [])
-    {
-        parent::__construct($options);
-
-        $this->class = $class;
-    }
-
-    public function getClass()
-    {
-        return $this->class;
-    }
-
-    public function compile()
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php b/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php
deleted file mode 100644
index abc83ea4ae9322a057f1275716de0a8534737fd7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a callable template function.
- *
- * Use \Twig\TwigFunction instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_FunctionCallableInterface
-{
-    public function getCallable();
-}
diff --git a/vendor/twig/twig/lib/Twig/FunctionInterface.php b/vendor/twig/twig/lib/Twig/FunctionInterface.php
deleted file mode 100644
index 915d6cc3a43d95c1498e34b1dbd3bb9e1a2d332b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/FunctionInterface.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Arnaud Le Blanc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Node;
-
-/**
- * Represents a template function.
- *
- * Use \Twig\TwigFunction instead.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_FunctionInterface
-{
-    /**
-     * Compiles a function.
-     *
-     * @return string The PHP code for the function
-     */
-    public function compile();
-
-    public function needsEnvironment();
-
-    public function needsContext();
-
-    public function getSafe(Node $filterArgs);
-
-    public function setArguments($arguments);
-
-    public function getArguments();
-}
diff --git a/vendor/twig/twig/lib/Twig/Lexer.php b/vendor/twig/twig/lib/Twig/Lexer.php
deleted file mode 100644
index 00d74cc47aabcd9430d4fa423a4805dbc302b9fb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Lexer.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Lexer;
-
-class_exists('Twig\Lexer');
-
-if (\false) {
-    class Twig_Lexer extends Lexer
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/LexerInterface.php b/vendor/twig/twig/lib/Twig/LexerInterface.php
deleted file mode 100644
index cc04f68413e208d867ab3d64d1c5043e12d21260..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/LexerInterface.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Error\SyntaxError;
-use Twig\Source;
-use Twig\TokenStream;
-
-/**
- * Interface implemented by lexer classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface Twig_LexerInterface
-{
-    /**
-     * Tokenizes a source code.
-     *
-     * @param string|Source $code The source code
-     * @param string        $name A unique identifier for the source code
-     *
-     * @return TokenStream
-     *
-     * @throws SyntaxError When the code is syntactically wrong
-     */
-    public function tokenize($code, $name = null);
-}
diff --git a/vendor/twig/twig/lib/Twig/Loader/Array.php b/vendor/twig/twig/lib/Twig/Loader/Array.php
deleted file mode 100644
index 13f915c95f4f4ca733ef172a5cc16ba3d558a04e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Loader/Array.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Loader\ArrayLoader;
-
-class_exists('Twig\Loader\ArrayLoader');
-
-if (\false) {
-    class Twig_Loader_Array extends ArrayLoader
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Loader/Chain.php b/vendor/twig/twig/lib/Twig/Loader/Chain.php
deleted file mode 100644
index 885b37a7fe82d5b9cc950593539b24f8eb670261..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Loader/Chain.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Loader\ChainLoader;
-
-class_exists('Twig\Loader\ChainLoader');
-
-if (\false) {
-    class Twig_Loader_Chain extends ChainLoader
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Loader/Filesystem.php b/vendor/twig/twig/lib/Twig/Loader/Filesystem.php
deleted file mode 100644
index c3eae7d840cbed5627d6e68bf238c1646d3a841b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Loader/Filesystem.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Loader\FilesystemLoader;
-
-class_exists('Twig\Loader\FilesystemLoader');
-
-if (\false) {
-    class Twig_Loader_Filesystem extends FilesystemLoader
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Loader/String.php b/vendor/twig/twig/lib/Twig/Loader/String.php
deleted file mode 100644
index cb3b2a004b2715e30ae5aecedc7c146292f9021c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Loader/String.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Loader\ExistsLoaderInterface;
-use Twig\Loader\LoaderInterface;
-use Twig\Loader\SourceContextLoaderInterface;
-use Twig\Source;
-
-@trigger_error('The Twig_Loader_String class is deprecated since version 1.18.1 and will be removed in 2.0. Use "Twig\Loader\ArrayLoader" instead or "Twig\Environment::createTemplate()".', E_USER_DEPRECATED);
-
-/**
- * Loads a template from a string.
- *
- * This loader should NEVER be used. It only exists for Twig internal purposes.
- *
- * When using this loader with a cache mechanism, you should know that a new cache
- * key is generated each time a template content "changes" (the cache key being the
- * source code of the template). If you don't want to see your cache grows out of
- * control, you need to take care of clearing the old cache file by yourself.
- *
- * @deprecated since 1.18.1 (to be removed in 2.0)
- *
- * @internal
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Loader_String implements LoaderInterface, ExistsLoaderInterface, SourceContextLoaderInterface
-{
-    public function getSource($name)
-    {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
-
-        return $name;
-    }
-
-    public function getSourceContext($name)
-    {
-        return new Source($name, $name);
-    }
-
-    public function exists($name)
-    {
-        return true;
-    }
-
-    public function getCacheKey($name)
-    {
-        return $name;
-    }
-
-    public function isFresh($name, $time)
-    {
-        return true;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/LoaderInterface.php b/vendor/twig/twig/lib/Twig/LoaderInterface.php
deleted file mode 100644
index db515bbdf4a2c2db2ea2c088d5dafe0a3fbdcc95..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/LoaderInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Loader\LoaderInterface;
-
-class_exists('Twig\Loader\LoaderInterface');
-
-if (\false) {
-    class Twig_LoaderInterface extends LoaderInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Markup.php b/vendor/twig/twig/lib/Twig/Markup.php
deleted file mode 100644
index 9a3804665445768a43008620516d77de94a1af33..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Markup.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Markup;
-
-class_exists('Twig\Markup');
-
-if (\false) {
-    class Twig_Markup extends Markup
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node.php b/vendor/twig/twig/lib/Twig/Node.php
deleted file mode 100644
index 78cc271198440e026420b704a627549b38b323db..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Node;
-
-class_exists('Twig\Node\Node');
-
-if (\false) {
-    class Twig_Node extends Node
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/AutoEscape.php b/vendor/twig/twig/lib/Twig/Node/AutoEscape.php
deleted file mode 100644
index 7d308fff5ce5799ec896e8be56f83f027a6ef445..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/AutoEscape.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\AutoEscapeNode;
-
-class_exists('Twig\Node\AutoEscapeNode');
-
-if (\false) {
-    class Twig_Node_AutoEscape extends AutoEscapeNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Block.php b/vendor/twig/twig/lib/Twig/Node/Block.php
deleted file mode 100644
index 33cd088f3bd2e17269fcc298cb7083a4b79ff1c9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Block.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\BlockNode;
-
-class_exists('Twig\Node\BlockNode');
-
-if (\false) {
-    class Twig_Node_Block extends BlockNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/BlockReference.php b/vendor/twig/twig/lib/Twig/Node/BlockReference.php
deleted file mode 100644
index 55d2d00b2b7087cb60daf32d8f17960d8bbae914..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/BlockReference.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\BlockReferenceNode;
-
-class_exists('Twig\Node\BlockReferenceNode');
-
-if (\false) {
-    class Twig_Node_BlockReference extends BlockReferenceNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Body.php b/vendor/twig/twig/lib/Twig/Node/Body.php
deleted file mode 100644
index 0874364d19eaaf5d69d5c9f8f360b7515170de71..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Body.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\BodyNode;
-
-class_exists('Twig\Node\BodyNode');
-
-if (\false) {
-    class Twig_Node_Body extends BodyNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php b/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php
deleted file mode 100644
index e42ce689a807d0854b10aacf746f38bc98b357aa..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\CheckSecurityNode;
-
-class_exists('Twig\Node\CheckSecurityNode');
-
-if (\false) {
-    class Twig_Node_CheckSecurity extends CheckSecurityNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Deprecated.php b/vendor/twig/twig/lib/Twig/Node/Deprecated.php
deleted file mode 100644
index 19b7f8b4aa9e1341b3130f153175307bb36c44d8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Deprecated.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\DeprecatedNode;
-
-class_exists('Twig\Node\DeprecatedNode');
-
-if (\false) {
-    class Twig_Node_Deprecated extends DeprecatedNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Do.php b/vendor/twig/twig/lib/Twig/Node/Do.php
deleted file mode 100644
index f538be2f0504e53e39da40b947ca2842021fb64a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Do.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\DoNode;
-
-class_exists('Twig\Node\DoNode');
-
-if (\false) {
-    class Twig_Node_Do extends DoNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Embed.php b/vendor/twig/twig/lib/Twig/Node/Embed.php
deleted file mode 100644
index 2dfe266a313f58c47c6301b611545e120acdf1ba..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Embed.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\EmbedNode;
-
-class_exists('Twig\Node\EmbedNode');
-
-if (\false) {
-    class Twig_Node_Embed extends EmbedNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression.php b/vendor/twig/twig/lib/Twig/Node/Expression.php
deleted file mode 100644
index 9775df02f830a4840431872751f3e855b404f03f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\AbstractExpression;
-
-class_exists('Twig\Node\Expression\AbstractExpression');
-
-if (\false) {
-    class Twig_Node_Expression extends AbstractExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Array.php b/vendor/twig/twig/lib/Twig/Node/Expression/Array.php
deleted file mode 100644
index dec28df7bfe25a3a455d76d3c0f5a3ba155e4c36..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Array.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\ArrayExpression;
-
-class_exists('Twig\Node\Expression\ArrayExpression');
-
-if (\false) {
-    class Twig_Node_Expression_Array extends ArrayExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/AssignName.php b/vendor/twig/twig/lib/Twig/Node/Expression/AssignName.php
deleted file mode 100644
index cf2e91cf0f20b3122a6377508ae4e2e3ddcfee47..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/AssignName.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\AssignNameExpression;
-
-class_exists('Twig\Node\Expression\AssignNameExpression');
-
-if (\false) {
-    class Twig_Node_Expression_AssignName extends AssignNameExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary.php
deleted file mode 100644
index 6591c4223f734461e6cb69edec12edcb224735f7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\AbstractBinary;
-
-class_exists('Twig\Node\Expression\Binary\AbstractBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary extends AbstractBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Add.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Add.php
deleted file mode 100644
index 895a2fce3bbcb772a3657180a5202b322995ce77..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Add.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\AddBinary;
-
-class_exists('Twig\Node\Expression\Binary\AddBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Add extends AddBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/And.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/And.php
deleted file mode 100644
index 738c6aa1789b70a9e35519c343df131f1bcf8f3b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/And.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\AndBinary;
-
-class_exists('Twig\Node\Expression\Binary\AndBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_And extends AndBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php
deleted file mode 100644
index 8649e899b2bea85cb7906dc9e1cce3ca1b747d76..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\BitwiseAndBinary;
-
-class_exists('Twig\Node\Expression\Binary\BitwiseAndBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_BitwiseAnd extends BitwiseAndBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php
deleted file mode 100644
index 473fba270ac3503d192da59cd7743b552b2588be..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\BitwiseOrBinary;
-
-class_exists('Twig\Node\Expression\Binary\BitwiseOrBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_BitwiseOr extends BitwiseOrBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php
deleted file mode 100644
index 3fedc369ec586dbf2ba6d2c944243c03bea66c82..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\BitwiseXorBinary;
-
-class_exists('Twig\Node\Expression\Binary\BitwiseXorBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_BitwiseXor extends BitwiseXorBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php
deleted file mode 100644
index 8d7b723c1f82abc6a33cb674d2f8dd1af0a68772..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\ConcatBinary;
-
-class_exists('Twig\Node\Expression\Binary\ConcatBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Concat extends ConcatBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Div.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Div.php
deleted file mode 100644
index ce19322f02a353f584a1b2576d58c19e00a41f49..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Div.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\DivBinary;
-
-class_exists('Twig\Node\Expression\Binary\DivBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Div extends DivBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php
deleted file mode 100644
index b6d3e3c430c96910ec4a3aa9f7be4414672ed2f5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\EndsWithBinary;
-
-class_exists('Twig\Node\Expression\Binary\EndsWithBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_EndsWith extends EndsWithBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php
deleted file mode 100644
index e737b61e8a374b666d224ca974af6294c1b9402e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\EqualBinary;
-
-class_exists('Twig\Node\Expression\Binary\EqualBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Equal extends EqualBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php
deleted file mode 100644
index 7119351fcf6da56a0210825e9b5b9763fde1f80f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\FloorDivBinary;
-
-class_exists('Twig\Node\Expression\Binary\FloorDivBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_FloorDiv extends FloorDivBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php
deleted file mode 100644
index 183301d7e0084c18430c9c4552340417ac817be2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\GreaterBinary;
-
-class_exists('Twig\Node\Expression\Binary\GreaterBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Greater extends GreaterBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php
deleted file mode 100644
index f47999bd84cb8fc582bf9444acbabafae8920fcf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\GreaterEqualBinary;
-
-class_exists('Twig\Node\Expression\Binary\GreaterEqualBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_GreaterEqual extends GreaterEqualBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/In.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/In.php
deleted file mode 100644
index 7a13d9544b1adda47165258e33dc9b4619ad5e3a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/In.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\InBinary;
-
-class_exists('Twig\Node\Expression\Binary\InBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_In extends InBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Less.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Less.php
deleted file mode 100644
index 7295179a4ce5066b50707b17214f241e35a543e1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Less.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\LessBinary;
-
-class_exists('Twig\Node\Expression\Binary\LessBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Less extends LessBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php
deleted file mode 100644
index cbfbc8c7ad0376ebc066aad869201a951bc9b4b9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\LessEqualBinary;
-
-class_exists('Twig\Node\Expression\Binary\LessEqualBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_LessEqual extends LessEqualBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php
deleted file mode 100644
index 5209083ebdd429ddaa8374abc37a9ff49a73ff00..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\MatchesBinary;
-
-class_exists('Twig\Node\Expression\Binary\MatchesBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Matches extends MatchesBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php
deleted file mode 100644
index aec59e3bae66755e09f7311aee6a541037882fa8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\ModBinary;
-
-class_exists('Twig\Node\Expression\Binary\ModBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Mod extends ModBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php
deleted file mode 100644
index 850934a1008d777635a8a7758a3a44e6fd55cdbc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\MulBinary;
-
-class_exists('Twig\Node\Expression\Binary\MulBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Mul extends MulBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php
deleted file mode 100644
index 842c8bc8b8bf0cf62734cff43c6952bb145117b4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\NotEqualBinary;
-
-class_exists('Twig\Node\Expression\Binary\NotEqualBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_NotEqual extends NotEqualBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php
deleted file mode 100644
index 7d3c1288f38d6f9b86cda7b868461ef49d380e1d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\NotInBinary;
-
-class_exists('Twig\Node\Expression\Binary\NotInBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_NotIn extends NotInBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Or.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Or.php
deleted file mode 100644
index 3a38faed6bbf2f56bf2aa58868315657b14c8fa5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Or.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\OrBinary;
-
-class_exists('Twig\Node\Expression\Binary\OrBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Or extends OrBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Power.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Power.php
deleted file mode 100644
index 7eafca80f28b9ccbeead737a7fd44e4a0c9a507a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Power.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\PowerBinary;
-
-class_exists('Twig\Node\Expression\Binary\PowerBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Power extends PowerBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Range.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Range.php
deleted file mode 100644
index 01564142afe3348f91ca49c72730e46758483d97..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Range.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\RangeBinary;
-
-class_exists('Twig\Node\Expression\Binary\RangeBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Range extends RangeBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php
deleted file mode 100644
index f72ea49ca990c7fa6ff60d5eeeb047b3988f40ba..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\StartsWithBinary;
-
-class_exists('Twig\Node\Expression\Binary\StartsWithBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_StartsWith extends StartsWithBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php
deleted file mode 100644
index f596da703c07eb9977d7e7bb09e5bfb55616d10f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Binary\SubBinary;
-
-class_exists('Twig\Node\Expression\Binary\SubBinary');
-
-if (\false) {
-    class Twig_Node_Expression_Binary_Sub extends SubBinary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php b/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php
deleted file mode 100644
index 8ea2350a394da1498e118733a8112aab3b0de0a6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\BlockReferenceExpression;
-
-class_exists('Twig\Node\Expression\BlockReferenceExpression');
-
-if (\false) {
-    class Twig_Node_Expression_BlockReference extends BlockReferenceExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Call.php b/vendor/twig/twig/lib/Twig/Node/Expression/Call.php
deleted file mode 100644
index 019ddf7b85db59ea9e1bb76014578802b452af34..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Call.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\CallExpression;
-
-class_exists('Twig\Node\Expression\CallExpression');
-
-if (\false) {
-    class Twig_Node_Expression_Call extends CallExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php b/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php
deleted file mode 100644
index 308df26f0f8c826bbd798799f5bccf361db13bfb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\ConditionalExpression;
-
-class_exists('Twig\Node\Expression\ConditionalExpression');
-
-if (\false) {
-    class Twig_Node_Expression_Conditional extends ConditionalExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Constant.php b/vendor/twig/twig/lib/Twig/Node/Expression/Constant.php
deleted file mode 100644
index 435ccdd79f7a546c3376feba21cb75b5a546d214..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Constant.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\ConstantExpression;
-
-class_exists('Twig\Node\Expression\ConstantExpression');
-
-if (\false) {
-    class Twig_Node_Expression_Constant extends ConstantExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php b/vendor/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php
deleted file mode 100644
index 9b8927a317fa0a782c6d50180207ccbf6a3353a4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-
-@trigger_error('The Twig_Node_Expression_ExtensionReference class is deprecated since version 1.23 and will be removed in 2.0.', E_USER_DEPRECATED);
-
-/**
- * Represents an extension call node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.23 and will be removed in 2.0.
- */
-class Twig_Node_Expression_ExtensionReference extends AbstractExpression
-{
-    public function __construct($name, $lineno, $tag = null)
-    {
-        parent::__construct([], ['name' => $name], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->raw(sprintf("\$this->env->getExtension('%s')", $this->getAttribute('name')));
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php b/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php
deleted file mode 100644
index 85705715e9cc79a320821212739694b5e2390687..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\FilterExpression;
-
-class_exists('Twig\Node\Expression\FilterExpression');
-
-if (\false) {
-    class Twig_Node_Expression_Filter extends FilterExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Filter/Default.php b/vendor/twig/twig/lib/Twig/Node/Expression/Filter/Default.php
deleted file mode 100644
index 9688743f28d0a7c98637de81ff1887e1c1f42859..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Filter/Default.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Filter\DefaultFilter;
-
-class_exists('Twig\Node\Expression\Filter\DefaultFilter');
-
-if (\false) {
-    class Twig_Node_Expression_Filter_Default extends DefaultFilter
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Function.php b/vendor/twig/twig/lib/Twig/Node/Expression/Function.php
deleted file mode 100644
index 5d408e46aef7094369fe4ce6befab9326efc9241..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Function.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\FunctionExpression;
-
-class_exists('Twig\Node\Expression\FunctionExpression');
-
-if (\false) {
-    class Twig_Node_Expression_Function extends FunctionExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php b/vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php
deleted file mode 100644
index 7b99eb376d71845fb51f235497006d5d509368e9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\GetAttrExpression;
-
-class_exists('Twig\Node\Expression\GetAttrExpression');
-
-if (\false) {
-    class Twig_Node_Expression_GetAttr extends GetAttrExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/MethodCall.php b/vendor/twig/twig/lib/Twig/Node/Expression/MethodCall.php
deleted file mode 100644
index 5b0cef8c4371f6748ff0c2458fb33cef2687c613..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/MethodCall.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\MethodCallExpression;
-
-class_exists('Twig\Node\Expression\MethodCallExpression');
-
-if (\false) {
-    class Twig_Node_Expression_MethodCall extends MethodCallExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Name.php b/vendor/twig/twig/lib/Twig/Node/Expression/Name.php
deleted file mode 100644
index 3b41ff9fc7c8dda0da670285b34bfba229f54f4f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Name.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\NameExpression;
-
-class_exists('Twig\Node\Expression\NameExpression');
-
-if (\false) {
-    class Twig_Node_Expression_Name extends NameExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/NullCoalesce.php b/vendor/twig/twig/lib/Twig/Node/Expression/NullCoalesce.php
deleted file mode 100644
index 89d6bf6a5011b7f7cdd55c773595efcbf9639b83..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/NullCoalesce.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\NullCoalesceExpression;
-
-class_exists('Twig\Node\Expression\NullCoalesceExpression');
-
-if (\false) {
-    class Twig_Node_Expression_NullCoalesce extends NullCoalesceExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php b/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php
deleted file mode 100644
index 236c79fd4d40baa881e0d5d08379d7645c000f96..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\ParentExpression;
-
-class_exists('Twig\Node\Expression\ParentExpression');
-
-if (\false) {
-    class Twig_Node_Expression_Parent extends ParentExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/TempName.php b/vendor/twig/twig/lib/Twig/Node/Expression/TempName.php
deleted file mode 100644
index e77ebe06bb8ab6e136de98be6e05695fcedd2f76..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/TempName.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\TempNameExpression;
-
-class_exists('Twig\Node\Expression\TempNameExpression');
-
-if (\false) {
-    class Twig_Node_Expression_TempName extends TempNameExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test.php
deleted file mode 100644
index 9c300ba3f5fc4098d8eed1023c961bb1816b4acf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\TestExpression;
-
-class_exists('Twig\Node\Expression\TestExpression');
-
-if (\false) {
-    class Twig_Node_Expression_Test extends TestExpression
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Constant.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Constant.php
deleted file mode 100644
index bc796ec356439753862395f94836c1d4ae9a0b6e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Constant.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Test\ConstantTest;
-
-class_exists('Twig\Node\Expression\Test\ConstantTest');
-
-if (\false) {
-    class Twig_Node_Expression_Test_Constant extends ConstantTest
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Defined.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Defined.php
deleted file mode 100644
index 759cb491a351eff1222fe84696b8272ea64f70eb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Defined.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Test\DefinedTest;
-
-class_exists('Twig\Node\Expression\Test\DefinedTest');
-
-if (\false) {
-    class Twig_Node_Expression_Test_Defined extends DefinedTest
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php
deleted file mode 100644
index c999e9e174b88a57cd8c2ec077c30ea96e1d4f4a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Test\DivisiblebyTest;
-
-class_exists('Twig\Node\Expression\Test\DivisiblebyTest');
-
-if (\false) {
-    class Twig_Node_Expression_Test_Divisibleby extends DivisiblebyTest
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Even.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Even.php
deleted file mode 100644
index a751079dbaa43852df005c8e97fbdf15a07e2522..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Even.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Test\EvenTest;
-
-class_exists('Twig\Node\Expression\Test\EvenTest');
-
-if (\false) {
-    class Twig_Node_Expression_Test_Even extends EvenTest
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Null.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Null.php
deleted file mode 100644
index 404360ee2e151d4e8ad20087758aaae03accf603..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Null.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Test\NullTest;
-
-class_exists('Twig\Node\Expression\Test\NullTest');
-
-if (\false) {
-    class Twig_Node_Expression_Test_Null extends NullTest
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Odd.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Odd.php
deleted file mode 100644
index 7a06ac59a5b86ec4282bf94a310422c904f06d00..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Odd.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Test\OddTest;
-
-class_exists('Twig\Node\Expression\Test\OddTest');
-
-if (\false) {
-    class Twig_Node_Expression_Test_Odd extends OddTest
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php
deleted file mode 100644
index c937d712158e4647fec274bb7efbd58ab11f1a4a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Test\SameasTest;
-
-class_exists('Twig\Node\Expression\Test\SameasTest');
-
-if (\false) {
-    class Twig_Node_Expression_Test_Sameas extends SameasTest
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Unary.php b/vendor/twig/twig/lib/Twig/Node/Expression/Unary.php
deleted file mode 100644
index 1969d2c7663bdfb23a183a98f8b0bca5e04ba331..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Unary.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Unary\AbstractUnary;
-
-class_exists('Twig\Node\Expression\Unary\AbstractUnary');
-
-if (\false) {
-    class Twig_Node_Expression_Unary extends AbstractUnary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php b/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php
deleted file mode 100644
index e6c25a01c4d7670e92e30e395369f9e0458ade94..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Unary\NegUnary;
-
-class_exists('Twig\Node\Expression\Unary\NegUnary');
-
-if (\false) {
-    class Twig_Node_Expression_Unary_Neg extends NegUnary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Not.php b/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Not.php
deleted file mode 100644
index 669105f36862eaca541e07f56a6fe89e3f161fa7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Not.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Unary\NotUnary;
-
-class_exists('Twig\Node\Expression\Unary\NotUnary');
-
-if (\false) {
-    class Twig_Node_Expression_Unary_Not extends NotUnary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php b/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php
deleted file mode 100644
index 4e2bb504df01d98d8f2185a28168b686e1322a29..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\Expression\Unary\PosUnary;
-
-class_exists('Twig\Node\Expression\Unary\PosUnary');
-
-if (\false) {
-    class Twig_Node_Expression_Unary_Pos extends PosUnary
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Flush.php b/vendor/twig/twig/lib/Twig/Node/Flush.php
deleted file mode 100644
index 92af475b74db4b820eafe43fc50029328217231a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Flush.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\FlushNode;
-
-class_exists('Twig\Node\FlushNode');
-
-if (\false) {
-    class Twig_Node_Flush extends FlushNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/For.php b/vendor/twig/twig/lib/Twig/Node/For.php
deleted file mode 100644
index c72aa782b11b081ce072f74c9ba4b29dfa78ab1f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/For.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\ForNode;
-
-class_exists('Twig\Node\ForNode');
-
-if (\false) {
-    class Twig_Node_For extends ForNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/ForLoop.php b/vendor/twig/twig/lib/Twig/Node/ForLoop.php
deleted file mode 100644
index 5b21005270b9387d1fc6c2524070ef19ca8e4ef1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/ForLoop.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\ForLoopNode;
-
-class_exists('Twig\Node\ForLoopNode');
-
-if (\false) {
-    class Twig_Node_ForLoop extends ForLoopNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/If.php b/vendor/twig/twig/lib/Twig/Node/If.php
deleted file mode 100644
index de884b345d8e51c9bd9edfd051c1bffb92dc4120..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/If.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\IfNode;
-
-class_exists('Twig\Node\IfNode');
-
-if (\false) {
-    class Twig_Node_If extends IfNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Import.php b/vendor/twig/twig/lib/Twig/Node/Import.php
deleted file mode 100644
index 9d3892a68c76ce85b0b0d41e30d3c56be6cb9c87..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Import.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\ImportNode;
-
-class_exists('Twig\Node\ImportNode');
-
-if (\false) {
-    class Twig_Node_Import extends ImportNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Include.php b/vendor/twig/twig/lib/Twig/Node/Include.php
deleted file mode 100644
index f43d203bc17ee8bf91aa83d02c2d50a64a5489ba..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Include.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\IncludeNode;
-
-class_exists('Twig\Node\IncludeNode');
-
-if (\false) {
-    class Twig_Node_Include extends IncludeNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Macro.php b/vendor/twig/twig/lib/Twig/Node/Macro.php
deleted file mode 100644
index 8d2389dfcfbc74ce9c31d32cdde347f7d2b7f679..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Macro.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\MacroNode;
-
-class_exists('Twig\Node\MacroNode');
-
-if (\false) {
-    class Twig_Node_Macro extends MacroNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Module.php b/vendor/twig/twig/lib/Twig/Node/Module.php
deleted file mode 100644
index ca5276750f6e9e5a072f024df17ad1fdbfaa09ec..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Module.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\ModuleNode;
-
-class_exists('Twig\Node\ModuleNode');
-
-if (\false) {
-    class Twig_Node_Module extends ModuleNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Print.php b/vendor/twig/twig/lib/Twig/Node/Print.php
deleted file mode 100644
index 65a605e7e7d32838c23b39e6fa0fdd70036f442c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Print.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\PrintNode;
-
-class_exists('Twig\Node\PrintNode');
-
-if (\false) {
-    class Twig_Node_Print extends PrintNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Sandbox.php b/vendor/twig/twig/lib/Twig/Node/Sandbox.php
deleted file mode 100644
index 3ff57ff7d9dd147b64ce3a8893ef827dd31cb026..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Sandbox.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\SandboxNode;
-
-class_exists('Twig\Node\SandboxNode');
-
-if (\false) {
-    class Twig_Node_Sandbox extends SandboxNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php b/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php
deleted file mode 100644
index a223eeb2cac6b08122767f857ef7c065d89e782b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\SandboxedPrintNode;
-
-class_exists('Twig\Node\SandboxedPrintNode');
-
-if (\false) {
-    class Twig_Node_SandboxedPrint extends SandboxedPrintNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Set.php b/vendor/twig/twig/lib/Twig/Node/Set.php
deleted file mode 100644
index 5b0a6d4f1cd6a391af00c180d906d1ac0382b233..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Set.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\SetNode;
-
-class_exists('Twig\Node\SetNode');
-
-if (\false) {
-    class Twig_Node_Set extends SetNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/SetTemp.php b/vendor/twig/twig/lib/Twig/Node/SetTemp.php
deleted file mode 100644
index 211ab4ec5e733e7f62b5dc8551f1a9e01c0aa472..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/SetTemp.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\SetTempNode;
-
-class_exists('Twig\Node\SetTempNode');
-
-if (\false) {
-    class Twig_Node_SetTemp extends SetTempNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Spaceless.php b/vendor/twig/twig/lib/Twig/Node/Spaceless.php
deleted file mode 100644
index 0ae024c3f53a5b72a75349cc921b24f6ba4ea4dc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Spaceless.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\SpacelessNode;
-
-class_exists('Twig\Node\SpacelessNode');
-
-if (\false) {
-    class Twig_Node_Spaceless extends SpacelessNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Text.php b/vendor/twig/twig/lib/Twig/Node/Text.php
deleted file mode 100644
index 1a3f956fff4535208c6e5ced442b1f9ec5e20cbf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/Text.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\TextNode;
-
-class_exists('Twig\Node\TextNode');
-
-if (\false) {
-    class Twig_Node_Text extends TextNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/With.php b/vendor/twig/twig/lib/Twig/Node/With.php
deleted file mode 100644
index 266240d6acd301a3533b2c73a69ac5a78f378bda..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Node/With.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\WithNode;
-
-class_exists('Twig\Node\WithNode');
-
-if (\false) {
-    class Twig_Node_With extends WithNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeCaptureInterface.php b/vendor/twig/twig/lib/Twig/NodeCaptureInterface.php
deleted file mode 100644
index 696f4a59f8ab90c484d53c74d536cf2f5acd809a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/NodeCaptureInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\NodeCaptureInterface;
-
-class_exists('Twig\Node\NodeCaptureInterface');
-
-if (\false) {
-    class Twig_NodeCaptureInterface extends NodeCaptureInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeInterface.php b/vendor/twig/twig/lib/Twig/NodeInterface.php
deleted file mode 100644
index b2b9d3295f9177bb8a2159951936358eace28d05..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/NodeInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Compiler;
-
-/**
- * Represents a node in the AST.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface Twig_NodeInterface extends \Countable, \IteratorAggregate
-{
-    /**
-     * Compiles the node to PHP.
-     */
-    public function compile(Compiler $compiler);
-
-    /**
-     * @deprecated since 1.27 (to be removed in 2.0)
-     */
-    public function getLine();
-
-    public function getNodeTag();
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeOutputInterface.php b/vendor/twig/twig/lib/Twig/NodeOutputInterface.php
deleted file mode 100644
index 54009c0a677926093e5359051c027fd094738da7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/NodeOutputInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Node\NodeOutputInterface;
-
-class_exists('Twig\Node\NodeOutputInterface');
-
-if (\false) {
-    class Twig_NodeOutputInterface extends NodeOutputInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeTraverser.php b/vendor/twig/twig/lib/Twig/NodeTraverser.php
deleted file mode 100644
index 1e52a6a27189bd6ad13bb70af886496bc22474ed..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/NodeTraverser.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\NodeTraverser;
-
-class_exists('Twig\NodeTraverser');
-
-if (\false) {
-    class Twig_NodeTraverser extends NodeTraverser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php b/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php
deleted file mode 100644
index d8b877ed161ba2e9b2ff661297b3ce3e0fc455e9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\NodeVisitor\EscaperNodeVisitor;
-
-class_exists('Twig\NodeVisitor\EscaperNodeVisitor');
-
-if (\false) {
-    class Twig_NodeVisitor_Escaper extends EscaperNodeVisitor
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php b/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php
deleted file mode 100644
index 7e6a77ae4d001877bd91777dc18d183c25a8348a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\NodeVisitor\OptimizerNodeVisitor;
-
-class_exists('Twig\NodeVisitor\OptimizerNodeVisitor');
-
-if (\false) {
-    class Twig_NodeVisitor_Optimizer extends OptimizerNodeVisitor
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php b/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php
deleted file mode 100644
index bee25230261ec9920b2e5001b250e0bbca448c9c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\NodeVisitor\SafeAnalysisNodeVisitor;
-
-class_exists('Twig\NodeVisitor\SafeAnalysisNodeVisitor');
-
-if (\false) {
-    class Twig_NodeVisitor_SafeAnalysis extends SafeAnalysisNodeVisitor
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php b/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php
deleted file mode 100644
index 1f21c2d25870c5595db41beded8e36e8e4e90026..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\NodeVisitor\SandboxNodeVisitor;
-
-class_exists('Twig\NodeVisitor\SandboxNodeVisitor');
-
-if (\false) {
-    class Twig_NodeVisitor_Sandbox extends SandboxNodeVisitor
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php b/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php
deleted file mode 100644
index 809b4176eb57adbda1f3de00f377c9418a253bdf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\NodeVisitor\NodeVisitorInterface;
-
-class_exists('Twig\NodeVisitor\NodeVisitorInterface');
-
-if (\false) {
-    class Twig_NodeVisitorInterface extends NodeVisitorInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Parser.php b/vendor/twig/twig/lib/Twig/Parser.php
deleted file mode 100644
index cf56f69688161d815c0ce941c3783012d68918d8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Parser.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Parser;
-
-class_exists('Twig\Parser');
-
-if (\false) {
-    class Twig_Parser extends Parser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/ParserInterface.php b/vendor/twig/twig/lib/Twig/ParserInterface.php
deleted file mode 100644
index 96e9aaa946373be78c0dba58c638b451beae4d78..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/ParserInterface.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Error\SyntaxError;
-use Twig\Node\ModuleNode;
-use Twig\TokenStream;
-
-/**
- * Interface implemented by parser classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface Twig_ParserInterface
-{
-    /**
-     * Converts a token stream to a node tree.
-     *
-     * @return ModuleNode
-     *
-     * @throws SyntaxError When the token stream is syntactically or semantically wrong
-     */
-    public function parse(TokenStream $stream);
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Base.php b/vendor/twig/twig/lib/Twig/Profiler/Dumper/Base.php
deleted file mode 100644
index 5bcb1ba6335d5eea98c486f03bc5142e6675b0e7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Base.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Profiler\Dumper\BaseDumper;
-
-class_exists('Twig\Profiler\Dumper\BaseDumper');
-
-if (\false) {
-    class Twig_Profiler_Dumper_Base extends BaseDumper
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php b/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php
deleted file mode 100644
index cf09413fce3649637e5b6c15ec8431e2ed1964d9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Profiler\Dumper\BlackfireDumper;
-
-class_exists('Twig\Profiler\Dumper\BlackfireDumper');
-
-if (\false) {
-    class Twig_Profiler_Dumper_Blackfire extends BlackfireDumper
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php b/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php
deleted file mode 100644
index 36dc573a5b1dcd18003847c20fb95143efc43b5b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Profiler\Dumper\HtmlDumper;
-
-class_exists('Twig\Profiler\Dumper\HtmlDumper');
-
-if (\false) {
-    class Twig_Profiler_Dumper_Html extends HtmlDumper
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php b/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php
deleted file mode 100644
index 3ff1395363f0b104a80cf5e846914c47420630a6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Profiler\Dumper\TextDumper;
-
-class_exists('Twig\Profiler\Dumper\TextDumper');
-
-if (\false) {
-    class Twig_Profiler_Dumper_Text extends TextDumper
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php b/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php
deleted file mode 100644
index ce25ec4b5d78a59fa4d6d1e8f430e7480761cb19..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Profiler\Node\EnterProfileNode;
-
-class_exists('Twig\Profiler\Node\EnterProfileNode');
-
-if (\false) {
-    class Twig_Profiler_Node_EnterProfile extends EnterProfileNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php b/vendor/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php
deleted file mode 100644
index 31cc7231c8ed8cbefee1fca4fcbf136aa930e4a6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Profiler\Node\LeaveProfileNode;
-
-class_exists('Twig\Profiler\Node\LeaveProfileNode');
-
-if (\false) {
-    class Twig_Profiler_Node_LeaveProfile extends LeaveProfileNode
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php b/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php
deleted file mode 100644
index 463a96bd3acf91672c6dbb928600c23cf1aef497..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Profiler\NodeVisitor\ProfilerNodeVisitor;
-
-class_exists('Twig\Profiler\NodeVisitor\ProfilerNodeVisitor');
-
-if (\false) {
-    class Twig_Profiler_NodeVisitor_Profiler extends ProfilerNodeVisitor
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Profile.php b/vendor/twig/twig/lib/Twig/Profiler/Profile.php
deleted file mode 100644
index bb13c7a11d3d13249ac3e9def984ffd6d81f132e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Profile.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Profiler\Profile;
-
-class_exists('Twig\Profiler\Profile');
-
-if (\false) {
-    class Twig_Profiler_Profile extends Profile
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/RuntimeLoaderInterface.php b/vendor/twig/twig/lib/Twig/RuntimeLoaderInterface.php
deleted file mode 100644
index f21cde5a90bba6c9fed06901f5129d6c74cb8abd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/RuntimeLoaderInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\RuntimeLoader\RuntimeLoaderInterface;
-
-class_exists('Twig\RuntimeLoader\RuntimeLoaderInterface');
-
-if (\false) {
-    class Twig_RuntimeLoaderInterface extends RuntimeLoaderInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityError.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityError.php
deleted file mode 100644
index d018ece1cb8c7f45ca693ada36c02bddac8aec56..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityError.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Sandbox\SecurityError;
-
-class_exists('Twig\Sandbox\SecurityError');
-
-if (\false) {
-    class Twig_Sandbox_SecurityError extends SecurityError
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php
deleted file mode 100644
index 1a5f9eb2a57a63eccb1868648ca3e49b4288907b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Sandbox\SecurityNotAllowedFilterError;
-
-class_exists('Twig\Sandbox\SecurityNotAllowedFilterError');
-
-if (\false) {
-    class Twig_Sandbox_SecurityNotAllowedFilterError extends SecurityNotAllowedFilterError
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php
deleted file mode 100644
index 34e2b2b9a3fed318cbd60be3b52cb65662eec213..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Sandbox\SecurityNotAllowedFunctionError;
-
-class_exists('Twig\Sandbox\SecurityNotAllowedFunctionError');
-
-if (\false) {
-    class Twig_Sandbox_SecurityNotAllowedFunctionError extends SecurityNotAllowedFunctionError
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedMethodError.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedMethodError.php
deleted file mode 100644
index c776b1011c28350e0250cedbd0c4f93b5ddaf34a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedMethodError.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Sandbox\SecurityNotAllowedMethodError;
-
-class_exists('Twig\Sandbox\SecurityNotAllowedMethodError');
-
-if (\false) {
-    class Twig_Sandbox_SecurityNotAllowedMethodError extends SecurityNotAllowedMethodError
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedPropertyError.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedPropertyError.php
deleted file mode 100644
index a99efeb24e4ea4b8dc0b5f3d5ebc6f4d89a29b2f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedPropertyError.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Sandbox\SecurityNotAllowedPropertyError;
-
-class_exists('Twig\Sandbox\SecurityNotAllowedPropertyError');
-
-if (\false) {
-    class Twig_Sandbox_SecurityNotAllowedPropertyError extends SecurityNotAllowedPropertyError
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php
deleted file mode 100644
index 0ffd0f849a28ae09f01af2346dd2b5120962a0ea..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Sandbox\SecurityNotAllowedTagError;
-
-class_exists('Twig\Sandbox\SecurityNotAllowedTagError');
-
-if (\false) {
-    class Twig_Sandbox_SecurityNotAllowedTagError extends SecurityNotAllowedTagError
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php
deleted file mode 100644
index 41038c430f47d2e41d98b11796626e1626ffda0b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Sandbox\SecurityPolicy;
-
-class_exists('Twig\Sandbox\SecurityPolicy');
-
-if (\false) {
-    class Twig_Sandbox_SecurityPolicy extends SecurityPolicy
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php
deleted file mode 100644
index f17e6a5e991215738fd156eb9532219ab094da80..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Sandbox\SecurityPolicyInterface;
-
-class_exists('Twig\Sandbox\SecurityPolicyInterface');
-
-if (\false) {
-    class Twig_Sandbox_SecurityPolicyInterface extends SecurityPolicyInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/SimpleFilter.php b/vendor/twig/twig/lib/Twig/SimpleFilter.php
deleted file mode 100644
index bb830e0f03b682ef7e2c245463b7c0f5243adc37..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/SimpleFilter.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TwigFilter;
-
-class_exists('Twig\TwigFilter');
-
-if (\false) {
-    class Twig_SimpleFilter extends TwigFilter
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/SimpleFunction.php b/vendor/twig/twig/lib/Twig/SimpleFunction.php
deleted file mode 100644
index 6ec2abce155b94c8ba29db42dc86eddbb944b024..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/SimpleFunction.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TwigFunction;
-
-class_exists('Twig\TwigFunction');
-
-if (\false) {
-    class Twig_SimpleFunction extends TwigFunction
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/SimpleTest.php b/vendor/twig/twig/lib/Twig/SimpleTest.php
deleted file mode 100644
index e1d20294711121b705f02c07793fccb7c9f58fa3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/SimpleTest.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TwigTest;
-
-class_exists('Twig\TwigTest');
-
-if (\false) {
-    class Twig_SimpleTest extends TwigTest
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Source.php b/vendor/twig/twig/lib/Twig/Source.php
deleted file mode 100644
index 6d3c1b97761dcc02494f44850d0c159b0caf3111..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Source.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Source;
-
-class_exists('Twig\Source');
-
-if (\false) {
-    class Twig_Source extends Source
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/SourceContextLoaderInterface.php b/vendor/twig/twig/lib/Twig/SourceContextLoaderInterface.php
deleted file mode 100644
index 3289ac1d2b6c78a07dae53af5a021441465df945..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/SourceContextLoaderInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Loader\SourceContextLoaderInterface;
-
-class_exists('Twig\Loader\SourceContextLoaderInterface');
-
-if (\false) {
-    class Twig_SourceContextLoaderInterface extends SourceContextLoaderInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Template.php b/vendor/twig/twig/lib/Twig/Template.php
deleted file mode 100644
index ef5988c91f290fad21726bdf3936a66e709c29cf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Template.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Template;
-
-class_exists('Twig\Template');
-
-if (\false) {
-    class Twig_Template extends Template
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TemplateInterface.php b/vendor/twig/twig/lib/Twig/TemplateInterface.php
deleted file mode 100644
index 0f767b8fc8d5a9b1fd316c524d47a29e35a5bda6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TemplateInterface.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-
-/**
- * Interface implemented by all compiled templates.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface Twig_TemplateInterface
-{
-    const ANY_CALL = 'any';
-    const ARRAY_CALL = 'array';
-    const METHOD_CALL = 'method';
-
-    /**
-     * Renders the template with the given context and returns it as string.
-     *
-     * @param array $context An array of parameters to pass to the template
-     *
-     * @return string The rendered template
-     */
-    public function render(array $context);
-
-    /**
-     * Displays the template with the given context.
-     *
-     * @param array $context An array of parameters to pass to the template
-     * @param array $blocks  An array of blocks to pass to the template
-     */
-    public function display(array $context, array $blocks = []);
-
-    /**
-     * Returns the bound environment for this template.
-     *
-     * @return Environment
-     */
-    public function getEnvironment();
-}
diff --git a/vendor/twig/twig/lib/Twig/TemplateWrapper.php b/vendor/twig/twig/lib/Twig/TemplateWrapper.php
deleted file mode 100644
index 6cb4ce4f7ea2f1b2d006ccfff68584c1f6c436e0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TemplateWrapper.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TemplateWrapper;
-
-class_exists('Twig\TemplateWrapper');
-
-if (\false) {
-    class Twig_TemplateWrapper extends TemplateWrapper
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Test.php b/vendor/twig/twig/lib/Twig/Test.php
deleted file mode 100644
index d032284eac67cf1879f6c1a8f9526b15161f2edb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Test.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Test class is deprecated since version 1.12 and will be removed in 2.0. Use \Twig\TwigTest instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-abstract class Twig_Test implements Twig_TestInterface, Twig_TestCallableInterface
-{
-    protected $options;
-    protected $arguments = [];
-
-    public function __construct(array $options = [])
-    {
-        $this->options = array_merge([
-            'callable' => null,
-        ], $options);
-    }
-
-    public function getCallable()
-    {
-        return $this->options['callable'];
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Test/Function.php b/vendor/twig/twig/lib/Twig/Test/Function.php
deleted file mode 100644
index a789c4025937dea1f53d8136742a1b1c63b49c1f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Test/Function.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Test_Function class is deprecated since version 1.12 and will be removed in 2.0. Use \Twig\TwigTest instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a function template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Test_Function extends Twig_Test
-{
-    protected $function;
-
-    public function __construct($function, array $options = [])
-    {
-        $options['callable'] = $function;
-
-        parent::__construct($options);
-
-        $this->function = $function;
-    }
-
-    public function compile()
-    {
-        return $this->function;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php b/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php
deleted file mode 100644
index e302bdbaf8aa910e7579df7a48508d84a80cc22c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Test\IntegrationTestCase;
-
-class_exists('Twig\Test\IntegrationTestCase');
-
-if (\false) {
-    class Twig_Test_IntegrationTestCase extends IntegrationTestCase
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Test/Method.php b/vendor/twig/twig/lib/Twig/Test/Method.php
deleted file mode 100644
index 4f16142b0768fe2b3e122d77690f7f79995b8ca5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Test/Method.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Extension\ExtensionInterface;
-
-@trigger_error('The Twig_Test_Method class is deprecated since version 1.12 and will be removed in 2.0. Use \Twig\TwigTest instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a method template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Test_Method extends Twig_Test
-{
-    protected $extension;
-    protected $method;
-
-    public function __construct(ExtensionInterface $extension, $method, array $options = [])
-    {
-        $options['callable'] = [$extension, $method];
-
-        parent::__construct($options);
-
-        $this->extension = $extension;
-        $this->method = $method;
-    }
-
-    public function compile()
-    {
-        return sprintf('$this->env->getExtension(\'%s\')->%s', \get_class($this->extension), $this->method);
-    }
-
-    public function hasOneMandatoryArgument(): bool
-    {
-        return (bool) ($this->options['one_mandatory_argument'] ?? false);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Test/Node.php b/vendor/twig/twig/lib/Twig/Test/Node.php
deleted file mode 100644
index 6b5de1597b6cdf2e458eade80d8118b3f187c8f7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Test/Node.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Test_Node class is deprecated since version 1.12 and will be removed in 2.0.', E_USER_DEPRECATED);
-
-/**
- * Represents a template test as a Node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Test_Node extends Twig_Test
-{
-    protected $class;
-
-    public function __construct($class, array $options = [])
-    {
-        parent::__construct($options);
-
-        $this->class = $class;
-    }
-
-    public function getClass()
-    {
-        return $this->class;
-    }
-
-    public function compile()
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Test/NodeTestCase.php b/vendor/twig/twig/lib/Twig/Test/NodeTestCase.php
deleted file mode 100644
index 62aaaaff7d797226f7817728b1bcf35b8e965f10..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Test/NodeTestCase.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Test\NodeTestCase;
-
-class_exists('Twig\Test\NodeTestCase');
-
-if (\false) {
-    class Twig_Test_NodeTestCase extends NodeTestCase
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TestCallableInterface.php b/vendor/twig/twig/lib/Twig/TestCallableInterface.php
deleted file mode 100644
index 51ecb9a285e2dfc78cb1ec85ea4706b1be92f41b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TestCallableInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a callable template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_TestCallableInterface
-{
-    public function getCallable();
-}
diff --git a/vendor/twig/twig/lib/Twig/TestInterface.php b/vendor/twig/twig/lib/Twig/TestInterface.php
deleted file mode 100644
index 91664075a24952dbecf2d7b22322f73f13e2e478..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TestInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_TestInterface
-{
-    /**
-     * Compiles a test.
-     *
-     * @return string The PHP code for the test
-     */
-    public function compile();
-}
diff --git a/vendor/twig/twig/lib/Twig/Token.php b/vendor/twig/twig/lib/Twig/Token.php
deleted file mode 100644
index e4d18069eb64d876f9b0f82bfd58a1701c48e90b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Token.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Token;
-
-class_exists('Twig\Token');
-
-if (\false) {
-    class Twig_Token extends Token
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser.php b/vendor/twig/twig/lib/Twig/TokenParser.php
deleted file mode 100644
index c0595438ab0d51fd92a81cc6c2d7d93b3514c225..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\AbstractTokenParser;
-
-class_exists('Twig\TokenParser\AbstractTokenParser');
-
-if (\false) {
-    class Twig_TokenParser extends AbstractTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/AutoEscape.php b/vendor/twig/twig/lib/Twig/TokenParser/AutoEscape.php
deleted file mode 100644
index 3f9e528d2e88ac1cb9da581b1e41c31e235805c9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/AutoEscape.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\AutoEscapeTokenParser;
-
-class_exists('Twig\TokenParser\AutoEscapeTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_AutoEscape extends AutoEscapeTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Block.php b/vendor/twig/twig/lib/Twig/TokenParser/Block.php
deleted file mode 100644
index d2f687702353a831874cab9d86ac231c0aa8fe98..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Block.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\BlockTokenParser;
-
-class_exists('Twig\TokenParser\BlockTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Block extends BlockTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Deprecated.php b/vendor/twig/twig/lib/Twig/TokenParser/Deprecated.php
deleted file mode 100644
index 9a74fe43e13a91ab6c6e2dbe688726ff20202b13..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Deprecated.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\DeprecatedTokenParser;
-
-class_exists('Twig\TokenParser\DeprecatedTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Deprecated extends DeprecatedTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Do.php b/vendor/twig/twig/lib/Twig/TokenParser/Do.php
deleted file mode 100644
index 0750e471ecced9f7b21eb5279531430494d4ea22..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Do.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\DoTokenParser;
-
-class_exists('Twig\TokenParser\DoTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Do extends DoTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Embed.php b/vendor/twig/twig/lib/Twig/TokenParser/Embed.php
deleted file mode 100644
index a60c26734f0a64c0e5c41da60317944218b91a29..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Embed.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\EmbedTokenParser;
-
-class_exists('Twig\TokenParser\EmbedTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Embed extends EmbedTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Extends.php b/vendor/twig/twig/lib/Twig/TokenParser/Extends.php
deleted file mode 100644
index 79cc2d3a3dad2b8ebce539040301483c4ecc391d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Extends.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\ExtendsTokenParser;
-
-class_exists('Twig\TokenParser\ExtendsTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Extends extends ExtendsTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Filter.php b/vendor/twig/twig/lib/Twig/TokenParser/Filter.php
deleted file mode 100644
index 5110c2344f0db4c30e88cbb31339e66ab0592832..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Filter.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\FilterTokenParser;
-
-class_exists('Twig\TokenParser\FilterTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Filter extends FilterTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Flush.php b/vendor/twig/twig/lib/Twig/TokenParser/Flush.php
deleted file mode 100644
index df8be30ddf9e6ddadb15b002c23140181a446abf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Flush.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\FlushTokenParser;
-
-class_exists('Twig\TokenParser\FlushTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Flush extends FlushTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/For.php b/vendor/twig/twig/lib/Twig/TokenParser/For.php
deleted file mode 100644
index 596dad785b7f70fd612f284d63d6fc267c52383d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/For.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\ForTokenParser;
-
-class_exists('Twig\TokenParser\ForTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_For extends ForTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/From.php b/vendor/twig/twig/lib/Twig/TokenParser/From.php
deleted file mode 100644
index af794be8898f0f9ea98ea301a98e24044797310e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/From.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\FromTokenParser;
-
-class_exists('Twig\TokenParser\FromTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_From extends FromTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/If.php b/vendor/twig/twig/lib/Twig/TokenParser/If.php
deleted file mode 100644
index e035c5ed5f91d15ed03eb0c7d9898e81ab39cbb3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/If.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\IfTokenParser;
-
-class_exists('Twig\TokenParser\IfTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_If extends IfTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Import.php b/vendor/twig/twig/lib/Twig/TokenParser/Import.php
deleted file mode 100644
index 2ee0165368ad6522ae364bcf8c53dd40496abc02..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Import.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\ImportTokenParser;
-
-class_exists('Twig\TokenParser\ImportTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Import extends ImportTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Include.php b/vendor/twig/twig/lib/Twig/TokenParser/Include.php
deleted file mode 100644
index 6047c615dda206d4fb94a8a93bd3a064d63a4c0a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Include.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\IncludeTokenParser;
-
-class_exists('Twig\TokenParser\IncludeTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Include extends IncludeTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Macro.php b/vendor/twig/twig/lib/Twig/TokenParser/Macro.php
deleted file mode 100644
index 523de8c1c75c329f14ad5f72fceac2e26befb4fd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Macro.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\MacroTokenParser;
-
-class_exists('Twig\TokenParser\MacroTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Macro extends MacroTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Sandbox.php b/vendor/twig/twig/lib/Twig/TokenParser/Sandbox.php
deleted file mode 100644
index 25684343a179b0d2a473897e88bb57b7997706c3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Sandbox.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\SandboxTokenParser;
-
-class_exists('Twig\TokenParser\SandboxTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Sandbox extends SandboxTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Set.php b/vendor/twig/twig/lib/Twig/TokenParser/Set.php
deleted file mode 100644
index 03139f61abdc278de9e34c97f261fe983125fd1a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Set.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\SetTokenParser;
-
-class_exists('Twig\TokenParser\SetTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Set extends SetTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Spaceless.php b/vendor/twig/twig/lib/Twig/TokenParser/Spaceless.php
deleted file mode 100644
index 92444a0d8e9f6ba68efe82736967cf011e4af928..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Spaceless.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\SpacelessTokenParser;
-
-class_exists('Twig\TokenParser\SpacelessTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Spaceless extends SpacelessTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Use.php b/vendor/twig/twig/lib/Twig/TokenParser/Use.php
deleted file mode 100644
index c588211eea0ff64136933359a0969afd0bf84001..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Use.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\UseTokenParser;
-
-class_exists('Twig\TokenParser\UseTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_Use extends UseTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/With.php b/vendor/twig/twig/lib/Twig/TokenParser/With.php
deleted file mode 100644
index 8067cbe6cc9cb2541809282b9dd9a0e7a100084c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/With.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\WithTokenParser;
-
-class_exists('Twig\TokenParser\WithTokenParser');
-
-if (\false) {
-    class Twig_TokenParser_With extends WithTokenParser
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParserBroker.php b/vendor/twig/twig/lib/Twig/TokenParserBroker.php
deleted file mode 100644
index 8cca809b83ea861de39efc7627c873ca8cd03f2c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParserBroker.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Arnaud Le Blanc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\TokenParser\TokenParserInterface;
-
-/**
- * Default implementation of a token parser broker.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_TokenParserBroker implements Twig_TokenParserBrokerInterface
-{
-    protected $parser;
-    protected $parsers = [];
-    protected $brokers = [];
-
-    /**
-     * @param array|\Traversable $parsers                 A \Traversable of Twig_TokenParserInterface instances
-     * @param array|\Traversable $brokers                 A \Traversable of Twig_TokenParserBrokerInterface instances
-     * @param bool               $triggerDeprecationError
-     */
-    public function __construct($parsers = [], $brokers = [], $triggerDeprecationError = true)
-    {
-        if ($triggerDeprecationError) {
-            @trigger_error('The '.__CLASS__.' class is deprecated since version 1.12 and will be removed in 2.0.', E_USER_DEPRECATED);
-        }
-
-        foreach ($parsers as $parser) {
-            if (!$parser instanceof TokenParserInterface) {
-                throw new \LogicException('$parsers must a an array of Twig_TokenParserInterface.');
-            }
-            $this->parsers[$parser->getTag()] = $parser;
-        }
-        foreach ($brokers as $broker) {
-            if (!$broker instanceof Twig_TokenParserBrokerInterface) {
-                throw new \LogicException('$brokers must a an array of Twig_TokenParserBrokerInterface.');
-            }
-            $this->brokers[] = $broker;
-        }
-    }
-
-    public function addTokenParser(TokenParserInterface $parser)
-    {
-        $this->parsers[$parser->getTag()] = $parser;
-    }
-
-    public function removeTokenParser(TokenParserInterface $parser)
-    {
-        $name = $parser->getTag();
-        if (isset($this->parsers[$name]) && $parser === $this->parsers[$name]) {
-            unset($this->parsers[$name]);
-        }
-    }
-
-    public function addTokenParserBroker(self $broker)
-    {
-        $this->brokers[] = $broker;
-    }
-
-    public function removeTokenParserBroker(self $broker)
-    {
-        if (false !== $pos = array_search($broker, $this->brokers)) {
-            unset($this->brokers[$pos]);
-        }
-    }
-
-    /**
-     * Gets a suitable TokenParser for a tag.
-     *
-     * First looks in parsers, then in brokers.
-     *
-     * @param string $tag A tag name
-     *
-     * @return TokenParserInterface|null A Twig_TokenParserInterface or null if no suitable TokenParser was found
-     */
-    public function getTokenParser($tag)
-    {
-        if (isset($this->parsers[$tag])) {
-            return $this->parsers[$tag];
-        }
-        $broker = end($this->brokers);
-        while (false !== $broker) {
-            $parser = $broker->getTokenParser($tag);
-            if (null !== $parser) {
-                return $parser;
-            }
-            $broker = prev($this->brokers);
-        }
-    }
-
-    public function getParsers()
-    {
-        return $this->parsers;
-    }
-
-    public function getParser()
-    {
-        return $this->parser;
-    }
-
-    public function setParser(Twig_ParserInterface $parser)
-    {
-        $this->parser = $parser;
-        foreach ($this->parsers as $tokenParser) {
-            $tokenParser->setParser($parser);
-        }
-        foreach ($this->brokers as $broker) {
-            $broker->setParser($parser);
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php b/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php
deleted file mode 100644
index f369264d9e6606a65d721222466b6d6dbc19fa7e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Arnaud Le Blanc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\TokenParser\TokenParserInterface;
-
-/**
- * Interface implemented by token parser brokers.
- *
- * Token parser brokers allows to implement custom logic in the process of resolving a token parser for a given tag name.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_TokenParserBrokerInterface
-{
-    /**
-     * Gets a TokenParser suitable for a tag.
-     *
-     * @param string $tag A tag name
-     *
-     * @return TokenParserInterface|null A Twig_TokenParserInterface or null if no suitable TokenParser was found
-     */
-    public function getTokenParser($tag);
-
-    /**
-     * Calls Twig\TokenParser\TokenParserInterface::setParser on all parsers the implementation knows of.
-     */
-    public function setParser(Twig_ParserInterface $parser);
-
-    /**
-     * Gets the Twig_ParserInterface.
-     *
-     * @return Twig_ParserInterface|null A Twig_ParserInterface instance or null
-     */
-    public function getParser();
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParserInterface.php b/vendor/twig/twig/lib/Twig/TokenParserInterface.php
deleted file mode 100644
index 800c971943b2e7dad13d30ca2b5552340735c764..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenParserInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenParser\TokenParserInterface;
-
-class_exists('Twig\TokenParser\TokenParserInterface');
-
-if (\false) {
-    class Twig_TokenParserInterface extends TokenParserInterface
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenStream.php b/vendor/twig/twig/lib/Twig/TokenStream.php
deleted file mode 100644
index b1abb80720ea9ced4f8e085499fc58567f41f848..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/TokenStream.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\TokenStream;
-
-class_exists('Twig\TokenStream');
-
-if (\false) {
-    class Twig_TokenStream extends TokenStream
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php b/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php
deleted file mode 100644
index 46fd4ef6bbcaa5c51685dfc730539ad567d61255..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Util\DeprecationCollector;
-
-class_exists('Twig\Util\DeprecationCollector');
-
-if (\false) {
-    class Twig_Util_DeprecationCollector extends DeprecationCollector
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php b/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php
deleted file mode 100644
index f9a1e0be398ae9d723d40efbf0931347dfe3d9f4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Twig\Util\TemplateDirIterator;
-
-class_exists('Twig\Util\TemplateDirIterator');
-
-if (\false) {
-    class Twig_Util_TemplateDirIterator extends TemplateDirIterator
-    {
-    }
-}
diff --git a/vendor/twig/twig/src/Cache/CacheInterface.php b/vendor/twig/twig/src/Cache/CacheInterface.php
deleted file mode 100644
index 1c8bb1ec9a93c26ddbc65cecd17e0a7cc27b1821..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Cache/CacheInterface.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Cache;
-
-/**
- * Interface implemented by cache classes.
- *
- * It is highly recommended to always store templates on the filesystem to
- * benefit from the PHP opcode cache. This interface is mostly useful if you
- * need to implement a custom strategy for storing templates on the filesystem.
- *
- * @author Andrew Tch <andrew@noop.lv>
- */
-interface CacheInterface
-{
-    /**
-     * Generates a cache key for the given template class name.
-     *
-     * @param string $name      The template name
-     * @param string $className The template class name
-     *
-     * @return string
-     */
-    public function generateKey($name, $className);
-
-    /**
-     * Writes the compiled template to cache.
-     *
-     * @param string $key     The cache key
-     * @param string $content The template representation as a PHP class
-     */
-    public function write($key, $content);
-
-    /**
-     * Loads a template from the cache.
-     *
-     * @param string $key The cache key
-     */
-    public function load($key);
-
-    /**
-     * Returns the modification timestamp of a key.
-     *
-     * @param string $key The cache key
-     *
-     * @return int
-     */
-    public function getTimestamp($key);
-}
-
-class_alias('Twig\Cache\CacheInterface', 'Twig_CacheInterface');
diff --git a/vendor/twig/twig/src/Cache/FilesystemCache.php b/vendor/twig/twig/src/Cache/FilesystemCache.php
deleted file mode 100644
index b7c1e438e790ab8fc7d981e3d693a1b40f05ab6f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Cache/FilesystemCache.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Cache;
-
-/**
- * Implements a cache on the filesystem.
- *
- * @author Andrew Tch <andrew@noop.lv>
- */
-class FilesystemCache implements CacheInterface
-{
-    const FORCE_BYTECODE_INVALIDATION = 1;
-
-    private $directory;
-    private $options;
-
-    /**
-     * @param string $directory The root cache directory
-     * @param int    $options   A set of options
-     */
-    public function __construct($directory, $options = 0)
-    {
-        $this->directory = rtrim($directory, '\/').'/';
-        $this->options = $options;
-    }
-
-    public function generateKey($name, $className)
-    {
-        $hash = hash('sha256', $className);
-
-        return $this->directory.$hash[0].$hash[1].'/'.$hash.'.php';
-    }
-
-    public function load($key)
-    {
-        if (file_exists($key)) {
-            @include_once $key;
-        }
-    }
-
-    public function write($key, $content)
-    {
-        $dir = \dirname($key);
-        if (!is_dir($dir)) {
-            if (false === @mkdir($dir, 0777, true)) {
-                clearstatcache(true, $dir);
-                if (!is_dir($dir)) {
-                    throw new \RuntimeException(sprintf('Unable to create the cache directory (%s).', $dir));
-                }
-            }
-        } elseif (!is_writable($dir)) {
-            throw new \RuntimeException(sprintf('Unable to write in the cache directory (%s).', $dir));
-        }
-
-        $tmpFile = tempnam($dir, basename($key));
-        if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $key)) {
-            @chmod($key, 0666 & ~umask());
-
-            if (self::FORCE_BYTECODE_INVALIDATION == ($this->options & self::FORCE_BYTECODE_INVALIDATION)) {
-                // Compile cached file into bytecode cache
-                if (\function_exists('opcache_invalidate') && filter_var(ini_get('opcache.enable'), FILTER_VALIDATE_BOOLEAN)) {
-                    @opcache_invalidate($key, true);
-                } elseif (\function_exists('apc_compile_file')) {
-                    apc_compile_file($key);
-                }
-            }
-
-            return;
-        }
-
-        throw new \RuntimeException(sprintf('Failed to write cache file "%s".', $key));
-    }
-
-    public function getTimestamp($key)
-    {
-        if (!file_exists($key)) {
-            return 0;
-        }
-
-        return (int) @filemtime($key);
-    }
-}
-
-class_alias('Twig\Cache\FilesystemCache', 'Twig_Cache_Filesystem');
diff --git a/vendor/twig/twig/src/Cache/NullCache.php b/vendor/twig/twig/src/Cache/NullCache.php
deleted file mode 100644
index c1b37c1243e2f3502ae4cf93435a64fa234190b1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Cache/NullCache.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Cache;
-
-/**
- * Implements a no-cache strategy.
- *
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class NullCache implements CacheInterface
-{
-    public function generateKey($name, $className)
-    {
-        return '';
-    }
-
-    public function write($key, $content)
-    {
-    }
-
-    public function load($key)
-    {
-    }
-
-    public function getTimestamp($key)
-    {
-        return 0;
-    }
-}
-
-class_alias('Twig\Cache\NullCache', 'Twig_Cache_Null');
diff --git a/vendor/twig/twig/src/Compiler.php b/vendor/twig/twig/src/Compiler.php
deleted file mode 100644
index e47003ae19ee3f6b9a3524cd114e3eaf9394ca45..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Compiler.php
+++ /dev/null
@@ -1,288 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-use Twig\Node\ModuleNode;
-
-/**
- * Compiles a node to PHP code.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Compiler implements \Twig_CompilerInterface
-{
-    protected $lastLine;
-    protected $source;
-    protected $indentation;
-    protected $env;
-    protected $debugInfo = [];
-    protected $sourceOffset;
-    protected $sourceLine;
-    protected $filename;
-    private $varNameSalt = 0;
-
-    public function __construct(Environment $env)
-    {
-        $this->env = $env;
-    }
-
-    /**
-     * @deprecated since 1.25 (to be removed in 2.0)
-     */
-    public function getFilename()
-    {
-        @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED);
-
-        return $this->filename;
-    }
-
-    /**
-     * Returns the environment instance related to this compiler.
-     *
-     * @return Environment
-     */
-    public function getEnvironment()
-    {
-        return $this->env;
-    }
-
-    /**
-     * Gets the current PHP code after compilation.
-     *
-     * @return string The PHP code
-     */
-    public function getSource()
-    {
-        return $this->source;
-    }
-
-    /**
-     * Compiles a node.
-     *
-     * @param int $indentation The current indentation
-     *
-     * @return $this
-     */
-    public function compile(\Twig_NodeInterface $node, $indentation = 0)
-    {
-        $this->lastLine = null;
-        $this->source = '';
-        $this->debugInfo = [];
-        $this->sourceOffset = 0;
-        // source code starts at 1 (as we then increment it when we encounter new lines)
-        $this->sourceLine = 1;
-        $this->indentation = $indentation;
-        $this->varNameSalt = 0;
-
-        if ($node instanceof ModuleNode) {
-            // to be removed in 2.0
-            $this->filename = $node->getTemplateName();
-        }
-
-        $node->compile($this);
-
-        return $this;
-    }
-
-    public function subcompile(\Twig_NodeInterface $node, $raw = true)
-    {
-        if (false === $raw) {
-            $this->source .= str_repeat(' ', $this->indentation * 4);
-        }
-
-        $node->compile($this);
-
-        return $this;
-    }
-
-    /**
-     * Adds a raw string to the compiled code.
-     *
-     * @param string $string The string
-     *
-     * @return $this
-     */
-    public function raw($string)
-    {
-        $this->source .= $string;
-
-        return $this;
-    }
-
-    /**
-     * Writes a string to the compiled code by adding indentation.
-     *
-     * @return $this
-     */
-    public function write()
-    {
-        $strings = \func_get_args();
-        foreach ($strings as $string) {
-            $this->source .= str_repeat(' ', $this->indentation * 4).$string;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Appends an indentation to the current PHP code after compilation.
-     *
-     * @return $this
-     *
-     * @deprecated since 1.27 (to be removed in 2.0).
-     */
-    public function addIndentation()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use write(\'\') instead.', E_USER_DEPRECATED);
-
-        $this->source .= str_repeat(' ', $this->indentation * 4);
-
-        return $this;
-    }
-
-    /**
-     * Adds a quoted string to the compiled code.
-     *
-     * @param string $value The string
-     *
-     * @return $this
-     */
-    public function string($value)
-    {
-        $this->source .= sprintf('"%s"', addcslashes($value, "\0\t\"\$\\"));
-
-        return $this;
-    }
-
-    /**
-     * Returns a PHP representation of a given value.
-     *
-     * @param mixed $value The value to convert
-     *
-     * @return $this
-     */
-    public function repr($value)
-    {
-        if (\is_int($value) || \is_float($value)) {
-            if (false !== $locale = setlocale(LC_NUMERIC, '0')) {
-                setlocale(LC_NUMERIC, 'C');
-            }
-
-            $this->raw(var_export($value, true));
-
-            if (false !== $locale) {
-                setlocale(LC_NUMERIC, $locale);
-            }
-        } elseif (null === $value) {
-            $this->raw('null');
-        } elseif (\is_bool($value)) {
-            $this->raw($value ? 'true' : 'false');
-        } elseif (\is_array($value)) {
-            $this->raw('[');
-            $first = true;
-            foreach ($value as $key => $v) {
-                if (!$first) {
-                    $this->raw(', ');
-                }
-                $first = false;
-                $this->repr($key);
-                $this->raw(' => ');
-                $this->repr($v);
-            }
-            $this->raw(']');
-        } else {
-            $this->string($value);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Adds debugging information.
-     *
-     * @return $this
-     */
-    public function addDebugInfo(\Twig_NodeInterface $node)
-    {
-        if ($node->getTemplateLine() != $this->lastLine) {
-            $this->write(sprintf("// line %d\n", $node->getTemplateLine()));
-
-            // when mbstring.func_overload is set to 2
-            // mb_substr_count() replaces substr_count()
-            // but they have different signatures!
-            if (((int) ini_get('mbstring.func_overload')) & 2) {
-                @trigger_error('Support for having "mbstring.func_overload" different from 0 is deprecated version 1.29 and will be removed in 2.0.', E_USER_DEPRECATED);
-
-                // this is much slower than the "right" version
-                $this->sourceLine += mb_substr_count(mb_substr($this->source, $this->sourceOffset), "\n");
-            } else {
-                $this->sourceLine += substr_count($this->source, "\n", $this->sourceOffset);
-            }
-            $this->sourceOffset = \strlen($this->source);
-            $this->debugInfo[$this->sourceLine] = $node->getTemplateLine();
-
-            $this->lastLine = $node->getTemplateLine();
-        }
-
-        return $this;
-    }
-
-    public function getDebugInfo()
-    {
-        ksort($this->debugInfo);
-
-        return $this->debugInfo;
-    }
-
-    /**
-     * Indents the generated code.
-     *
-     * @param int $step The number of indentation to add
-     *
-     * @return $this
-     */
-    public function indent($step = 1)
-    {
-        $this->indentation += $step;
-
-        return $this;
-    }
-
-    /**
-     * Outdents the generated code.
-     *
-     * @param int $step The number of indentation to remove
-     *
-     * @return $this
-     *
-     * @throws \LogicException When trying to outdent too much so the indentation would become negative
-     */
-    public function outdent($step = 1)
-    {
-        // can't outdent by more steps than the current indentation level
-        if ($this->indentation < $step) {
-            throw new \LogicException('Unable to call outdent() as the indentation would become negative.');
-        }
-
-        $this->indentation -= $step;
-
-        return $this;
-    }
-
-    public function getVarName()
-    {
-        return sprintf('__internal_%s', hash('sha256', __METHOD__.$this->varNameSalt++));
-    }
-}
-
-class_alias('Twig\Compiler', 'Twig_Compiler');
diff --git a/vendor/twig/twig/src/Environment.php b/vendor/twig/twig/src/Environment.php
deleted file mode 100644
index 1e5db570f55c98eb9f2e0d319d1a77521c768b8a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Environment.php
+++ /dev/null
@@ -1,1638 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-use Twig\Cache\CacheInterface;
-use Twig\Cache\FilesystemCache;
-use Twig\Cache\NullCache;
-use Twig\Error\Error;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Error\SyntaxError;
-use Twig\Extension\CoreExtension;
-use Twig\Extension\EscaperExtension;
-use Twig\Extension\ExtensionInterface;
-use Twig\Extension\GlobalsInterface;
-use Twig\Extension\InitRuntimeInterface;
-use Twig\Extension\OptimizerExtension;
-use Twig\Extension\StagingExtension;
-use Twig\Loader\ArrayLoader;
-use Twig\Loader\ChainLoader;
-use Twig\Loader\LoaderInterface;
-use Twig\Loader\SourceContextLoaderInterface;
-use Twig\Node\ModuleNode;
-use Twig\NodeVisitor\NodeVisitorInterface;
-use Twig\RuntimeLoader\RuntimeLoaderInterface;
-use Twig\TokenParser\TokenParserInterface;
-
-/**
- * Stores the Twig configuration and renders templates.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Environment
-{
-    const VERSION = '1.44.1';
-    const VERSION_ID = 14401;
-    const MAJOR_VERSION = 1;
-    const MINOR_VERSION = 44;
-    const RELEASE_VERSION = 1;
-    const EXTRA_VERSION = '';
-
-    protected $charset;
-    protected $loader;
-    protected $debug;
-    protected $autoReload;
-    protected $cache;
-    protected $lexer;
-    protected $parser;
-    protected $compiler;
-    protected $baseTemplateClass;
-    protected $extensions;
-    protected $parsers;
-    protected $visitors;
-    protected $filters;
-    protected $tests;
-    protected $functions;
-    protected $globals;
-    protected $runtimeInitialized = false;
-    protected $extensionInitialized = false;
-    protected $loadedTemplates;
-    protected $strictVariables;
-    protected $unaryOperators;
-    protected $binaryOperators;
-    protected $templateClassPrefix = '__TwigTemplate_';
-    protected $functionCallbacks = [];
-    protected $filterCallbacks = [];
-    protected $staging;
-
-    private $originalCache;
-    private $bcWriteCacheFile = false;
-    private $bcGetCacheFilename = false;
-    private $lastModifiedExtension = 0;
-    private $extensionsByClass = [];
-    private $runtimeLoaders = [];
-    private $runtimes = [];
-    private $optionsHash;
-
-    /**
-     * Constructor.
-     *
-     * Available options:
-     *
-     *  * debug: When set to true, it automatically set "auto_reload" to true as
-     *           well (default to false).
-     *
-     *  * charset: The charset used by the templates (default to UTF-8).
-     *
-     *  * base_template_class: The base template class to use for generated
-     *                         templates (default to \Twig\Template).
-     *
-     *  * cache: An absolute path where to store the compiled templates,
-     *           a \Twig\Cache\CacheInterface implementation,
-     *           or false to disable compilation cache (default).
-     *
-     *  * auto_reload: Whether to reload the template if the original source changed.
-     *                 If you don't provide the auto_reload option, it will be
-     *                 determined automatically based on the debug value.
-     *
-     *  * strict_variables: Whether to ignore invalid variables in templates
-     *                      (default to false).
-     *
-     *  * autoescape: Whether to enable auto-escaping (default to html):
-     *                  * false: disable auto-escaping
-     *                  * true: equivalent to html
-     *                  * html, js: set the autoescaping to one of the supported strategies
-     *                  * name: set the autoescaping strategy based on the template name extension
-     *                  * PHP callback: a PHP callback that returns an escaping strategy based on the template "name"
-     *
-     *  * optimizations: A flag that indicates which optimizations to apply
-     *                   (default to -1 which means that all optimizations are enabled;
-     *                   set it to 0 to disable).
-     */
-    public function __construct(LoaderInterface $loader = null, $options = [])
-    {
-        if (null !== $loader) {
-            $this->setLoader($loader);
-        } else {
-            @trigger_error('Not passing a "Twig\Lodaer\LoaderInterface" as the first constructor argument of "Twig\Environment" is deprecated since version 1.21.', E_USER_DEPRECATED);
-        }
-
-        $options = array_merge([
-            'debug' => false,
-            'charset' => 'UTF-8',
-            'base_template_class' => '\Twig\Template',
-            'strict_variables' => false,
-            'autoescape' => 'html',
-            'cache' => false,
-            'auto_reload' => null,
-            'optimizations' => -1,
-        ], $options);
-
-        $this->debug = (bool) $options['debug'];
-        $this->charset = strtoupper($options['charset']);
-        $this->baseTemplateClass = $options['base_template_class'];
-        $this->autoReload = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload'];
-        $this->strictVariables = (bool) $options['strict_variables'];
-        $this->setCache($options['cache']);
-
-        $this->addExtension(new CoreExtension());
-        $this->addExtension(new EscaperExtension($options['autoescape']));
-        $this->addExtension(new OptimizerExtension($options['optimizations']));
-        $this->staging = new StagingExtension();
-
-        // For BC
-        if (\is_string($this->originalCache)) {
-            $r = new \ReflectionMethod($this, 'writeCacheFile');
-            if (__CLASS__ !== $r->getDeclaringClass()->getName()) {
-                @trigger_error('The Twig\Environment::writeCacheFile method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED);
-
-                $this->bcWriteCacheFile = true;
-            }
-
-            $r = new \ReflectionMethod($this, 'getCacheFilename');
-            if (__CLASS__ !== $r->getDeclaringClass()->getName()) {
-                @trigger_error('The Twig\Environment::getCacheFilename method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED);
-
-                $this->bcGetCacheFilename = true;
-            }
-        }
-    }
-
-    /**
-     * Gets the base template class for compiled templates.
-     *
-     * @return string The base template class name
-     */
-    public function getBaseTemplateClass()
-    {
-        return $this->baseTemplateClass;
-    }
-
-    /**
-     * Sets the base template class for compiled templates.
-     *
-     * @param string $class The base template class name
-     */
-    public function setBaseTemplateClass($class)
-    {
-        $this->baseTemplateClass = $class;
-        $this->updateOptionsHash();
-    }
-
-    /**
-     * Enables debugging mode.
-     */
-    public function enableDebug()
-    {
-        $this->debug = true;
-        $this->updateOptionsHash();
-    }
-
-    /**
-     * Disables debugging mode.
-     */
-    public function disableDebug()
-    {
-        $this->debug = false;
-        $this->updateOptionsHash();
-    }
-
-    /**
-     * Checks if debug mode is enabled.
-     *
-     * @return bool true if debug mode is enabled, false otherwise
-     */
-    public function isDebug()
-    {
-        return $this->debug;
-    }
-
-    /**
-     * Enables the auto_reload option.
-     */
-    public function enableAutoReload()
-    {
-        $this->autoReload = true;
-    }
-
-    /**
-     * Disables the auto_reload option.
-     */
-    public function disableAutoReload()
-    {
-        $this->autoReload = false;
-    }
-
-    /**
-     * Checks if the auto_reload option is enabled.
-     *
-     * @return bool true if auto_reload is enabled, false otherwise
-     */
-    public function isAutoReload()
-    {
-        return $this->autoReload;
-    }
-
-    /**
-     * Enables the strict_variables option.
-     */
-    public function enableStrictVariables()
-    {
-        $this->strictVariables = true;
-        $this->updateOptionsHash();
-    }
-
-    /**
-     * Disables the strict_variables option.
-     */
-    public function disableStrictVariables()
-    {
-        $this->strictVariables = false;
-        $this->updateOptionsHash();
-    }
-
-    /**
-     * Checks if the strict_variables option is enabled.
-     *
-     * @return bool true if strict_variables is enabled, false otherwise
-     */
-    public function isStrictVariables()
-    {
-        return $this->strictVariables;
-    }
-
-    /**
-     * Gets the current cache implementation.
-     *
-     * @param bool $original Whether to return the original cache option or the real cache instance
-     *
-     * @return CacheInterface|string|false A Twig\Cache\CacheInterface implementation,
-     *                                     an absolute path to the compiled templates,
-     *                                     or false to disable cache
-     */
-    public function getCache($original = true)
-    {
-        return $original ? $this->originalCache : $this->cache;
-    }
-
-    /**
-     * Sets the current cache implementation.
-     *
-     * @param CacheInterface|string|false $cache A Twig\Cache\CacheInterface implementation,
-     *                                           an absolute path to the compiled templates,
-     *                                           or false to disable cache
-     */
-    public function setCache($cache)
-    {
-        if (\is_string($cache)) {
-            $this->originalCache = $cache;
-            $this->cache = new FilesystemCache($cache);
-        } elseif (false === $cache) {
-            $this->originalCache = $cache;
-            $this->cache = new NullCache();
-        } elseif (null === $cache) {
-            @trigger_error('Using "null" as the cache strategy is deprecated since version 1.23 and will be removed in Twig 2.0.', E_USER_DEPRECATED);
-            $this->originalCache = false;
-            $this->cache = new NullCache();
-        } elseif ($cache instanceof CacheInterface) {
-            $this->originalCache = $this->cache = $cache;
-        } else {
-            throw new \LogicException(sprintf('Cache can only be a string, false, or a \Twig\Cache\CacheInterface implementation.'));
-        }
-    }
-
-    /**
-     * Gets the cache filename for a given template.
-     *
-     * @param string $name The template name
-     *
-     * @return string|false The cache file name or false when caching is disabled
-     *
-     * @deprecated since 1.22 (to be removed in 2.0)
-     */
-    public function getCacheFilename($name)
-    {
-        @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        $key = $this->cache->generateKey($name, $this->getTemplateClass($name));
-
-        return !$key ? false : $key;
-    }
-
-    /**
-     * Gets the template class associated with the given string.
-     *
-     * The generated template class is based on the following parameters:
-     *
-     *  * The cache key for the given template;
-     *  * The currently enabled extensions;
-     *  * Whether the Twig C extension is available or not;
-     *  * PHP version;
-     *  * Twig version;
-     *  * Options with what environment was created.
-     *
-     * @param string   $name  The name for which to calculate the template class name
-     * @param int|null $index The index if it is an embedded template
-     *
-     * @return string The template class name
-     */
-    public function getTemplateClass($name, $index = null)
-    {
-        $key = $this->getLoader()->getCacheKey($name).$this->optionsHash;
-
-        return $this->templateClassPrefix.hash('sha256', $key).(null === $index ? '' : '___'.$index);
-    }
-
-    /**
-     * Gets the template class prefix.
-     *
-     * @return string The template class prefix
-     *
-     * @deprecated since 1.22 (to be removed in 2.0)
-     */
-    public function getTemplateClassPrefix()
-    {
-        @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        return $this->templateClassPrefix;
-    }
-
-    /**
-     * Renders a template.
-     *
-     * @param string|TemplateWrapper $name    The template name
-     * @param array                  $context An array of parameters to pass to the template
-     *
-     * @return string The rendered template
-     *
-     * @throws LoaderError  When the template cannot be found
-     * @throws SyntaxError  When an error occurred during compilation
-     * @throws RuntimeError When an error occurred during rendering
-     */
-    public function render($name, array $context = [])
-    {
-        return $this->load($name)->render($context);
-    }
-
-    /**
-     * Displays a template.
-     *
-     * @param string|TemplateWrapper $name    The template name
-     * @param array                  $context An array of parameters to pass to the template
-     *
-     * @throws LoaderError  When the template cannot be found
-     * @throws SyntaxError  When an error occurred during compilation
-     * @throws RuntimeError When an error occurred during rendering
-     */
-    public function display($name, array $context = [])
-    {
-        $this->load($name)->display($context);
-    }
-
-    /**
-     * Loads a template.
-     *
-     * @param string|TemplateWrapper|\Twig\Template $name The template name
-     *
-     * @throws LoaderError  When the template cannot be found
-     * @throws RuntimeError When a previously generated cache is corrupted
-     * @throws SyntaxError  When an error occurred during compilation
-     *
-     * @return TemplateWrapper
-     */
-    public function load($name)
-    {
-        if ($name instanceof TemplateWrapper) {
-            return $name;
-        }
-
-        if ($name instanceof Template) {
-            return new TemplateWrapper($this, $name);
-        }
-
-        return new TemplateWrapper($this, $this->loadTemplate($name));
-    }
-
-    /**
-     * Loads a template internal representation.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @param string $name  The template name
-     * @param int    $index The index if it is an embedded template
-     *
-     * @return \Twig_TemplateInterface A template instance representing the given template name
-     *
-     * @throws LoaderError  When the template cannot be found
-     * @throws RuntimeError When a previously generated cache is corrupted
-     * @throws SyntaxError  When an error occurred during compilation
-     *
-     * @internal
-     */
-    public function loadTemplate($name, $index = null)
-    {
-        return $this->loadClass($this->getTemplateClass($name), $name, $index);
-    }
-
-    /**
-     * @internal
-     */
-    public function loadClass($cls, $name, $index = null)
-    {
-        $mainCls = $cls;
-        if (null !== $index) {
-            $cls .= '___'.$index;
-        }
-
-        if (isset($this->loadedTemplates[$cls])) {
-            return $this->loadedTemplates[$cls];
-        }
-
-        if (!class_exists($cls, false)) {
-            if ($this->bcGetCacheFilename) {
-                $key = $this->getCacheFilename($name);
-            } else {
-                $key = $this->cache->generateKey($name, $mainCls);
-            }
-
-            if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) {
-                $this->cache->load($key);
-            }
-
-            $source = null;
-            if (!class_exists($cls, false)) {
-                $loader = $this->getLoader();
-                if (!$loader instanceof SourceContextLoaderInterface) {
-                    $source = new Source($loader->getSource($name), $name);
-                } else {
-                    $source = $loader->getSourceContext($name);
-                }
-
-                $content = $this->compileSource($source);
-
-                if ($this->bcWriteCacheFile) {
-                    $this->writeCacheFile($key, $content);
-                } else {
-                    $this->cache->write($key, $content);
-                    $this->cache->load($key);
-                }
-
-                if (!class_exists($mainCls, false)) {
-                    /* Last line of defense if either $this->bcWriteCacheFile was used,
-                     * $this->cache is implemented as a no-op or we have a race condition
-                     * where the cache was cleared between the above calls to write to and load from
-                     * the cache.
-                     */
-                    eval('?>'.$content);
-                }
-            }
-
-            if (!class_exists($cls, false)) {
-                throw new RuntimeError(sprintf('Failed to load Twig template "%s", index "%s": cache might be corrupted.', $name, $index), -1, $source);
-            }
-        }
-
-        if (!$this->runtimeInitialized) {
-            $this->initRuntime();
-        }
-
-        return $this->loadedTemplates[$cls] = new $cls($this);
-    }
-
-    /**
-     * Creates a template from source.
-     *
-     * This method should not be used as a generic way to load templates.
-     *
-     * @param string $template The template source
-     * @param string $name     An optional name of the template to be used in error messages
-     *
-     * @return TemplateWrapper A template instance representing the given template name
-     *
-     * @throws LoaderError When the template cannot be found
-     * @throws SyntaxError When an error occurred during compilation
-     */
-    public function createTemplate($template, $name = null)
-    {
-        $hash = hash('sha256', $template, false);
-        if (null !== $name) {
-            $name = sprintf('%s (string template %s)', $name, $hash);
-        } else {
-            $name = sprintf('__string_template__%s', $hash);
-        }
-
-        $loader = new ChainLoader([
-            new ArrayLoader([$name => $template]),
-            $current = $this->getLoader(),
-        ]);
-
-        $this->setLoader($loader);
-        try {
-            $template = new TemplateWrapper($this, $this->loadTemplate($name));
-        } catch (\Exception $e) {
-            $this->setLoader($current);
-
-            throw $e;
-        } catch (\Throwable $e) {
-            $this->setLoader($current);
-
-            throw $e;
-        }
-        $this->setLoader($current);
-
-        return $template;
-    }
-
-    /**
-     * Returns true if the template is still fresh.
-     *
-     * Besides checking the loader for freshness information,
-     * this method also checks if the enabled extensions have
-     * not changed.
-     *
-     * @param string $name The template name
-     * @param int    $time The last modification time of the cached template
-     *
-     * @return bool true if the template is fresh, false otherwise
-     */
-    public function isTemplateFresh($name, $time)
-    {
-        if (0 === $this->lastModifiedExtension) {
-            foreach ($this->extensions as $extension) {
-                $r = new \ReflectionObject($extension);
-                if (file_exists($r->getFileName()) && ($extensionTime = filemtime($r->getFileName())) > $this->lastModifiedExtension) {
-                    $this->lastModifiedExtension = $extensionTime;
-                }
-            }
-        }
-
-        return $this->lastModifiedExtension <= $time && $this->getLoader()->isFresh($name, $time);
-    }
-
-    /**
-     * Tries to load a template consecutively from an array.
-     *
-     * Similar to load() but it also accepts instances of \Twig\Template and
-     * \Twig\TemplateWrapper, and an array of templates where each is tried to be loaded.
-     *
-     * @param string|Template|\Twig\TemplateWrapper|array $names A template or an array of templates to try consecutively
-     *
-     * @return TemplateWrapper|Template
-     *
-     * @throws LoaderError When none of the templates can be found
-     * @throws SyntaxError When an error occurred during compilation
-     */
-    public function resolveTemplate($names)
-    {
-        if (!\is_array($names)) {
-            $names = [$names];
-        }
-
-        foreach ($names as $name) {
-            if ($name instanceof Template) {
-                return $name;
-            }
-            if ($name instanceof TemplateWrapper) {
-                return $name;
-            }
-
-            try {
-                return $this->loadTemplate($name);
-            } catch (LoaderError $e) {
-                if (1 === \count($names)) {
-                    throw $e;
-                }
-            }
-        }
-
-        throw new LoaderError(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names)));
-    }
-
-    /**
-     * Clears the internal template cache.
-     *
-     * @deprecated since 1.18.3 (to be removed in 2.0)
-     */
-    public function clearTemplateCache()
-    {
-        @trigger_error(sprintf('The %s method is deprecated since version 1.18.3 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        $this->loadedTemplates = [];
-    }
-
-    /**
-     * Clears the template cache files on the filesystem.
-     *
-     * @deprecated since 1.22 (to be removed in 2.0)
-     */
-    public function clearCacheFiles()
-    {
-        @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        if (\is_string($this->originalCache)) {
-            foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->originalCache), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
-                if ($file->isFile()) {
-                    @unlink($file->getPathname());
-                }
-            }
-        }
-    }
-
-    /**
-     * Gets the Lexer instance.
-     *
-     * @return \Twig_LexerInterface
-     *
-     * @deprecated since 1.25 (to be removed in 2.0)
-     */
-    public function getLexer()
-    {
-        @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED);
-
-        if (null === $this->lexer) {
-            $this->lexer = new Lexer($this);
-        }
-
-        return $this->lexer;
-    }
-
-    public function setLexer(\Twig_LexerInterface $lexer)
-    {
-        $this->lexer = $lexer;
-    }
-
-    /**
-     * Tokenizes a source code.
-     *
-     * @param string|Source $source The template source code
-     * @param string        $name   The template name (deprecated)
-     *
-     * @return TokenStream
-     *
-     * @throws SyntaxError When the code is syntactically wrong
-     */
-    public function tokenize($source, $name = null)
-    {
-        if (!$source instanceof Source) {
-            @trigger_error(sprintf('Passing a string as the $source argument of %s() is deprecated since version 1.27. Pass a Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED);
-            $source = new Source($source, $name);
-        }
-
-        if (null === $this->lexer) {
-            $this->lexer = new Lexer($this);
-        }
-
-        return $this->lexer->tokenize($source);
-    }
-
-    /**
-     * Gets the Parser instance.
-     *
-     * @return \Twig_ParserInterface
-     *
-     * @deprecated since 1.25 (to be removed in 2.0)
-     */
-    public function getParser()
-    {
-        @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED);
-
-        if (null === $this->parser) {
-            $this->parser = new Parser($this);
-        }
-
-        return $this->parser;
-    }
-
-    public function setParser(\Twig_ParserInterface $parser)
-    {
-        $this->parser = $parser;
-    }
-
-    /**
-     * Converts a token stream to a node tree.
-     *
-     * @return ModuleNode
-     *
-     * @throws SyntaxError When the token stream is syntactically or semantically wrong
-     */
-    public function parse(TokenStream $stream)
-    {
-        if (null === $this->parser) {
-            $this->parser = new Parser($this);
-        }
-
-        return $this->parser->parse($stream);
-    }
-
-    /**
-     * Gets the Compiler instance.
-     *
-     * @return \Twig_CompilerInterface
-     *
-     * @deprecated since 1.25 (to be removed in 2.0)
-     */
-    public function getCompiler()
-    {
-        @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED);
-
-        if (null === $this->compiler) {
-            $this->compiler = new Compiler($this);
-        }
-
-        return $this->compiler;
-    }
-
-    public function setCompiler(\Twig_CompilerInterface $compiler)
-    {
-        $this->compiler = $compiler;
-    }
-
-    /**
-     * Compiles a node and returns the PHP code.
-     *
-     * @return string The compiled PHP source code
-     */
-    public function compile(\Twig_NodeInterface $node)
-    {
-        if (null === $this->compiler) {
-            $this->compiler = new Compiler($this);
-        }
-
-        return $this->compiler->compile($node)->getSource();
-    }
-
-    /**
-     * Compiles a template source code.
-     *
-     * @param string|Source $source The template source code
-     * @param string        $name   The template name (deprecated)
-     *
-     * @return string The compiled PHP source code
-     *
-     * @throws SyntaxError When there was an error during tokenizing, parsing or compiling
-     */
-    public function compileSource($source, $name = null)
-    {
-        if (!$source instanceof Source) {
-            @trigger_error(sprintf('Passing a string as the $source argument of %s() is deprecated since version 1.27. Pass a Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED);
-            $source = new Source($source, $name);
-        }
-
-        try {
-            return $this->compile($this->parse($this->tokenize($source)));
-        } catch (Error $e) {
-            $e->setSourceContext($source);
-            throw $e;
-        } catch (\Exception $e) {
-            throw new SyntaxError(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e);
-        }
-    }
-
-    public function setLoader(LoaderInterface $loader)
-    {
-        if (!$loader instanceof SourceContextLoaderInterface && 0 !== strpos(\get_class($loader), 'Mock_')) {
-            @trigger_error(sprintf('Twig loader "%s" should implement Twig\Loader\SourceContextLoaderInterface since version 1.27.', \get_class($loader)), E_USER_DEPRECATED);
-        }
-
-        $this->loader = $loader;
-    }
-
-    /**
-     * Gets the Loader instance.
-     *
-     * @return LoaderInterface
-     */
-    public function getLoader()
-    {
-        if (null === $this->loader) {
-            throw new \LogicException('You must set a loader first.');
-        }
-
-        return $this->loader;
-    }
-
-    /**
-     * Sets the default template charset.
-     *
-     * @param string $charset The default charset
-     */
-    public function setCharset($charset)
-    {
-        $this->charset = strtoupper($charset);
-    }
-
-    /**
-     * Gets the default template charset.
-     *
-     * @return string The default charset
-     */
-    public function getCharset()
-    {
-        return $this->charset;
-    }
-
-    /**
-     * Initializes the runtime environment.
-     *
-     * @deprecated since 1.23 (to be removed in 2.0)
-     */
-    public function initRuntime()
-    {
-        $this->runtimeInitialized = true;
-
-        foreach ($this->getExtensions() as $name => $extension) {
-            if (!$extension instanceof InitRuntimeInterface) {
-                $m = new \ReflectionMethod($extension, 'initRuntime');
-
-                $parentClass = $m->getDeclaringClass()->getName();
-                if ('Twig_Extension' !== $parentClass && 'Twig\Extension\AbstractExtension' !== $parentClass) {
-                    @trigger_error(sprintf('Defining the initRuntime() method in the "%s" extension is deprecated since version 1.23. Use the `needs_environment` option to get the \Twig_Environment instance in filters, functions, or tests; or explicitly implement Twig\Extension\InitRuntimeInterface if needed (not recommended).', $name), E_USER_DEPRECATED);
-                }
-            }
-
-            $extension->initRuntime($this);
-        }
-    }
-
-    /**
-     * Returns true if the given extension is registered.
-     *
-     * @param string $class The extension class name
-     *
-     * @return bool Whether the extension is registered or not
-     */
-    public function hasExtension($class)
-    {
-        $class = ltrim($class, '\\');
-        if (!isset($this->extensionsByClass[$class]) && class_exists($class, false)) {
-            // For BC/FC with namespaced aliases
-            $class = new \ReflectionClass($class);
-            $class = $class->name;
-        }
-
-        if (isset($this->extensions[$class])) {
-            if ($class !== \get_class($this->extensions[$class])) {
-                @trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED);
-            }
-
-            return true;
-        }
-
-        return isset($this->extensionsByClass[$class]);
-    }
-
-    /**
-     * Adds a runtime loader.
-     */
-    public function addRuntimeLoader(RuntimeLoaderInterface $loader)
-    {
-        $this->runtimeLoaders[] = $loader;
-    }
-
-    /**
-     * Gets an extension by class name.
-     *
-     * @param string $class The extension class name
-     *
-     * @return ExtensionInterface
-     */
-    public function getExtension($class)
-    {
-        $class = ltrim($class, '\\');
-        if (!isset($this->extensionsByClass[$class]) && class_exists($class, false)) {
-            // For BC/FC with namespaced aliases
-            $class = new \ReflectionClass($class);
-            $class = $class->name;
-        }
-
-        if (isset($this->extensions[$class])) {
-            if ($class !== \get_class($this->extensions[$class])) {
-                @trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED);
-            }
-
-            return $this->extensions[$class];
-        }
-
-        if (!isset($this->extensionsByClass[$class])) {
-            throw new RuntimeError(sprintf('The "%s" extension is not enabled.', $class));
-        }
-
-        return $this->extensionsByClass[$class];
-    }
-
-    /**
-     * Returns the runtime implementation of a Twig element (filter/function/test).
-     *
-     * @param string $class A runtime class name
-     *
-     * @return object The runtime implementation
-     *
-     * @throws RuntimeError When the template cannot be found
-     */
-    public function getRuntime($class)
-    {
-        if (isset($this->runtimes[$class])) {
-            return $this->runtimes[$class];
-        }
-
-        foreach ($this->runtimeLoaders as $loader) {
-            if (null !== $runtime = $loader->load($class)) {
-                return $this->runtimes[$class] = $runtime;
-            }
-        }
-
-        throw new RuntimeError(sprintf('Unable to load the "%s" runtime.', $class));
-    }
-
-    public function addExtension(ExtensionInterface $extension)
-    {
-        if ($this->extensionInitialized) {
-            throw new \LogicException(sprintf('Unable to register extension "%s" as extensions have already been initialized.', $extension->getName()));
-        }
-
-        $class = \get_class($extension);
-        if ($class !== $extension->getName()) {
-            if (isset($this->extensions[$extension->getName()])) {
-                unset($this->extensions[$extension->getName()], $this->extensionsByClass[$class]);
-                @trigger_error(sprintf('The possibility to register the same extension twice ("%s") is deprecated since version 1.23 and will be removed in Twig 2.0. Use proper PHP inheritance instead.', $extension->getName()), E_USER_DEPRECATED);
-            }
-        }
-
-        $this->lastModifiedExtension = 0;
-        $this->extensionsByClass[$class] = $extension;
-        $this->extensions[$extension->getName()] = $extension;
-        $this->updateOptionsHash();
-    }
-
-    /**
-     * Removes an extension by name.
-     *
-     * This method is deprecated and you should not use it.
-     *
-     * @param string $name The extension name
-     *
-     * @deprecated since 1.12 (to be removed in 2.0)
-     */
-    public function removeExtension($name)
-    {
-        @trigger_error(sprintf('The %s method is deprecated since version 1.12 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        if ($this->extensionInitialized) {
-            throw new \LogicException(sprintf('Unable to remove extension "%s" as extensions have already been initialized.', $name));
-        }
-
-        $class = ltrim($name, '\\');
-        if (!isset($this->extensionsByClass[$class]) && class_exists($class, false)) {
-            // For BC/FC with namespaced aliases
-            $class = new \ReflectionClass($class);
-            $class = $class->name;
-        }
-
-        if (isset($this->extensions[$class])) {
-            if ($class !== \get_class($this->extensions[$class])) {
-                @trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED);
-            }
-
-            unset($this->extensions[$class]);
-        }
-
-        unset($this->extensions[$class]);
-        $this->updateOptionsHash();
-    }
-
-    /**
-     * Registers an array of extensions.
-     *
-     * @param array $extensions An array of extensions
-     */
-    public function setExtensions(array $extensions)
-    {
-        foreach ($extensions as $extension) {
-            $this->addExtension($extension);
-        }
-    }
-
-    /**
-     * Returns all registered extensions.
-     *
-     * @return ExtensionInterface[] An array of extensions (keys are for internal usage only and should not be relied on)
-     */
-    public function getExtensions()
-    {
-        return $this->extensions;
-    }
-
-    public function addTokenParser(TokenParserInterface $parser)
-    {
-        if ($this->extensionInitialized) {
-            throw new \LogicException('Unable to add a token parser as extensions have already been initialized.');
-        }
-
-        $this->staging->addTokenParser($parser);
-    }
-
-    /**
-     * Gets the registered Token Parsers.
-     *
-     * @return \Twig_TokenParserBrokerInterface
-     *
-     * @internal
-     */
-    public function getTokenParsers()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->parsers;
-    }
-
-    /**
-     * Gets registered tags.
-     *
-     * Be warned that this method cannot return tags defined by \Twig_TokenParserBrokerInterface classes.
-     *
-     * @return TokenParserInterface[]
-     *
-     * @internal
-     */
-    public function getTags()
-    {
-        $tags = [];
-        foreach ($this->getTokenParsers()->getParsers() as $parser) {
-            if ($parser instanceof TokenParserInterface) {
-                $tags[$parser->getTag()] = $parser;
-            }
-        }
-
-        return $tags;
-    }
-
-    public function addNodeVisitor(NodeVisitorInterface $visitor)
-    {
-        if ($this->extensionInitialized) {
-            throw new \LogicException('Unable to add a node visitor as extensions have already been initialized.');
-        }
-
-        $this->staging->addNodeVisitor($visitor);
-    }
-
-    /**
-     * Gets the registered Node Visitors.
-     *
-     * @return NodeVisitorInterface[]
-     *
-     * @internal
-     */
-    public function getNodeVisitors()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->visitors;
-    }
-
-    /**
-     * Registers a Filter.
-     *
-     * @param string|TwigFilter                $name   The filter name or a \Twig_SimpleFilter instance
-     * @param \Twig_FilterInterface|TwigFilter $filter
-     */
-    public function addFilter($name, $filter = null)
-    {
-        if (!$name instanceof TwigFilter && !($filter instanceof TwigFilter || $filter instanceof \Twig_FilterInterface)) {
-            throw new \LogicException('A filter must be an instance of \Twig_FilterInterface or \Twig_SimpleFilter.');
-        }
-
-        if ($name instanceof TwigFilter) {
-            $filter = $name;
-            $name = $filter->getName();
-        } else {
-            @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleFilter" instead when defining filter "%s".', __METHOD__, $name), E_USER_DEPRECATED);
-        }
-
-        if ($this->extensionInitialized) {
-            throw new \LogicException(sprintf('Unable to add filter "%s" as extensions have already been initialized.', $name));
-        }
-
-        $this->staging->addFilter($name, $filter);
-    }
-
-    /**
-     * Get a filter by name.
-     *
-     * Subclasses may override this method and load filters differently;
-     * so no list of filters is available.
-     *
-     * @param string $name The filter name
-     *
-     * @return \Twig_Filter|false
-     *
-     * @internal
-     */
-    public function getFilter($name)
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        if (isset($this->filters[$name])) {
-            return $this->filters[$name];
-        }
-
-        foreach ($this->filters as $pattern => $filter) {
-            $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count);
-
-            if ($count) {
-                if (preg_match('#^'.$pattern.'$#', $name, $matches)) {
-                    array_shift($matches);
-                    $filter->setArguments($matches);
-
-                    return $filter;
-                }
-            }
-        }
-
-        foreach ($this->filterCallbacks as $callback) {
-            if (false !== $filter = \call_user_func($callback, $name)) {
-                return $filter;
-            }
-        }
-
-        return false;
-    }
-
-    public function registerUndefinedFilterCallback($callable)
-    {
-        $this->filterCallbacks[] = $callable;
-    }
-
-    /**
-     * Gets the registered Filters.
-     *
-     * Be warned that this method cannot return filters defined with registerUndefinedFilterCallback.
-     *
-     * @return \Twig_FilterInterface[]
-     *
-     * @see registerUndefinedFilterCallback
-     *
-     * @internal
-     */
-    public function getFilters()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->filters;
-    }
-
-    /**
-     * Registers a Test.
-     *
-     * @param string|TwigTest              $name The test name or a \Twig_SimpleTest instance
-     * @param \Twig_TestInterface|TwigTest $test A \Twig_TestInterface instance or a \Twig_SimpleTest instance
-     */
-    public function addTest($name, $test = null)
-    {
-        if (!$name instanceof TwigTest && !($test instanceof TwigTest || $test instanceof \Twig_TestInterface)) {
-            throw new \LogicException('A test must be an instance of \Twig_TestInterface or \Twig_SimpleTest.');
-        }
-
-        if ($name instanceof TwigTest) {
-            $test = $name;
-            $name = $test->getName();
-        } else {
-            @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleTest" instead when defining test "%s".', __METHOD__, $name), E_USER_DEPRECATED);
-        }
-
-        if ($this->extensionInitialized) {
-            throw new \LogicException(sprintf('Unable to add test "%s" as extensions have already been initialized.', $name));
-        }
-
-        $this->staging->addTest($name, $test);
-    }
-
-    /**
-     * Gets the registered Tests.
-     *
-     * @return \Twig_TestInterface[]
-     *
-     * @internal
-     */
-    public function getTests()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->tests;
-    }
-
-    /**
-     * Gets a test by name.
-     *
-     * @param string $name The test name
-     *
-     * @return \Twig_Test|false
-     *
-     * @internal
-     */
-    public function getTest($name)
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        if (isset($this->tests[$name])) {
-            return $this->tests[$name];
-        }
-
-        foreach ($this->tests as $pattern => $test) {
-            $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count);
-
-            if ($count) {
-                if (preg_match('#^'.$pattern.'$#', $name, $matches)) {
-                    array_shift($matches);
-                    $test->setArguments($matches);
-
-                    return $test;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Registers a Function.
-     *
-     * @param string|TwigFunction                  $name     The function name or a \Twig_SimpleFunction instance
-     * @param \Twig_FunctionInterface|TwigFunction $function
-     */
-    public function addFunction($name, $function = null)
-    {
-        if (!$name instanceof TwigFunction && !($function instanceof TwigFunction || $function instanceof \Twig_FunctionInterface)) {
-            throw new \LogicException('A function must be an instance of \Twig_FunctionInterface or \Twig_SimpleFunction.');
-        }
-
-        if ($name instanceof TwigFunction) {
-            $function = $name;
-            $name = $function->getName();
-        } else {
-            @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleFunction" instead when defining function "%s".', __METHOD__, $name), E_USER_DEPRECATED);
-        }
-
-        if ($this->extensionInitialized) {
-            throw new \LogicException(sprintf('Unable to add function "%s" as extensions have already been initialized.', $name));
-        }
-
-        $this->staging->addFunction($name, $function);
-    }
-
-    /**
-     * Get a function by name.
-     *
-     * Subclasses may override this method and load functions differently;
-     * so no list of functions is available.
-     *
-     * @param string $name function name
-     *
-     * @return \Twig_Function|false
-     *
-     * @internal
-     */
-    public function getFunction($name)
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        if (isset($this->functions[$name])) {
-            return $this->functions[$name];
-        }
-
-        foreach ($this->functions as $pattern => $function) {
-            $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count);
-
-            if ($count) {
-                if (preg_match('#^'.$pattern.'$#', $name, $matches)) {
-                    array_shift($matches);
-                    $function->setArguments($matches);
-
-                    return $function;
-                }
-            }
-        }
-
-        foreach ($this->functionCallbacks as $callback) {
-            if (false !== $function = \call_user_func($callback, $name)) {
-                return $function;
-            }
-        }
-
-        return false;
-    }
-
-    public function registerUndefinedFunctionCallback($callable)
-    {
-        $this->functionCallbacks[] = $callable;
-    }
-
-    /**
-     * Gets registered functions.
-     *
-     * Be warned that this method cannot return functions defined with registerUndefinedFunctionCallback.
-     *
-     * @return \Twig_FunctionInterface[]
-     *
-     * @see registerUndefinedFunctionCallback
-     *
-     * @internal
-     */
-    public function getFunctions()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->functions;
-    }
-
-    /**
-     * Registers a Global.
-     *
-     * New globals can be added before compiling or rendering a template;
-     * but after, you can only update existing globals.
-     *
-     * @param string $name  The global name
-     * @param mixed  $value The global value
-     */
-    public function addGlobal($name, $value)
-    {
-        if ($this->extensionInitialized || $this->runtimeInitialized) {
-            if (null === $this->globals) {
-                $this->globals = $this->initGlobals();
-            }
-
-            if (!\array_key_exists($name, $this->globals)) {
-                // The deprecation notice must be turned into the following exception in Twig 2.0
-                @trigger_error(sprintf('Registering global variable "%s" at runtime or when the extensions have already been initialized is deprecated since version 1.21.', $name), E_USER_DEPRECATED);
-                //throw new \LogicException(sprintf('Unable to add global "%s" as the runtime or the extensions have already been initialized.', $name));
-            }
-        }
-
-        if ($this->extensionInitialized || $this->runtimeInitialized) {
-            // update the value
-            $this->globals[$name] = $value;
-        } else {
-            $this->staging->addGlobal($name, $value);
-        }
-    }
-
-    /**
-     * Gets the registered Globals.
-     *
-     * @return array An array of globals
-     *
-     * @internal
-     */
-    public function getGlobals()
-    {
-        if (!$this->runtimeInitialized && !$this->extensionInitialized) {
-            return $this->initGlobals();
-        }
-
-        if (null === $this->globals) {
-            $this->globals = $this->initGlobals();
-        }
-
-        return $this->globals;
-    }
-
-    /**
-     * Merges a context with the defined globals.
-     *
-     * @param array $context An array representing the context
-     *
-     * @return array The context merged with the globals
-     */
-    public function mergeGlobals(array $context)
-    {
-        // we don't use array_merge as the context being generally
-        // bigger than globals, this code is faster.
-        foreach ($this->getGlobals() as $key => $value) {
-            if (!\array_key_exists($key, $context)) {
-                $context[$key] = $value;
-            }
-        }
-
-        return $context;
-    }
-
-    /**
-     * Gets the registered unary Operators.
-     *
-     * @return array An array of unary operators
-     *
-     * @internal
-     */
-    public function getUnaryOperators()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->unaryOperators;
-    }
-
-    /**
-     * Gets the registered binary Operators.
-     *
-     * @return array An array of binary operators
-     *
-     * @internal
-     */
-    public function getBinaryOperators()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->binaryOperators;
-    }
-
-    /**
-     * @deprecated since 1.23 (to be removed in 2.0)
-     */
-    public function computeAlternatives($name, $items)
-    {
-        @trigger_error(sprintf('The %s method is deprecated since version 1.23 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        return SyntaxError::computeAlternatives($name, $items);
-    }
-
-    /**
-     * @internal
-     */
-    protected function initGlobals()
-    {
-        $globals = [];
-        foreach ($this->extensions as $name => $extension) {
-            if (!$extension instanceof GlobalsInterface) {
-                $m = new \ReflectionMethod($extension, 'getGlobals');
-
-                $parentClass = $m->getDeclaringClass()->getName();
-                if ('Twig_Extension' !== $parentClass && 'Twig\Extension\AbstractExtension' !== $parentClass) {
-                    @trigger_error(sprintf('Defining the getGlobals() method in the "%s" extension without explicitly implementing Twig\Extension\GlobalsInterface is deprecated since version 1.23.', $name), E_USER_DEPRECATED);
-                }
-            }
-
-            $extGlob = $extension->getGlobals();
-            if (!\is_array($extGlob)) {
-                throw new \UnexpectedValueException(sprintf('"%s::getGlobals()" must return an array of globals.', \get_class($extension)));
-            }
-
-            $globals[] = $extGlob;
-        }
-
-        $globals[] = $this->staging->getGlobals();
-
-        return \call_user_func_array('array_merge', $globals);
-    }
-
-    /**
-     * @internal
-     */
-    protected function initExtensions()
-    {
-        if ($this->extensionInitialized) {
-            return;
-        }
-
-        $this->parsers = new \Twig_TokenParserBroker([], [], false);
-        $this->filters = [];
-        $this->functions = [];
-        $this->tests = [];
-        $this->visitors = [];
-        $this->unaryOperators = [];
-        $this->binaryOperators = [];
-
-        foreach ($this->extensions as $extension) {
-            $this->initExtension($extension);
-        }
-        $this->initExtension($this->staging);
-        // Done at the end only, so that an exception during initialization does not mark the environment as initialized when catching the exception
-        $this->extensionInitialized = true;
-    }
-
-    /**
-     * @internal
-     */
-    protected function initExtension(ExtensionInterface $extension)
-    {
-        // filters
-        foreach ($extension->getFilters() as $name => $filter) {
-            if ($filter instanceof TwigFilter) {
-                $name = $filter->getName();
-            } else {
-                @trigger_error(sprintf('Using an instance of "%s" for filter "%s" is deprecated since version 1.21. Use \Twig_SimpleFilter instead.', \get_class($filter), $name), E_USER_DEPRECATED);
-            }
-
-            $this->filters[$name] = $filter;
-        }
-
-        // functions
-        foreach ($extension->getFunctions() as $name => $function) {
-            if ($function instanceof TwigFunction) {
-                $name = $function->getName();
-            } else {
-                @trigger_error(sprintf('Using an instance of "%s" for function "%s" is deprecated since version 1.21. Use \Twig_SimpleFunction instead.', \get_class($function), $name), E_USER_DEPRECATED);
-            }
-
-            $this->functions[$name] = $function;
-        }
-
-        // tests
-        foreach ($extension->getTests() as $name => $test) {
-            if ($test instanceof TwigTest) {
-                $name = $test->getName();
-            } else {
-                @trigger_error(sprintf('Using an instance of "%s" for test "%s" is deprecated since version 1.21. Use \Twig_SimpleTest instead.', \get_class($test), $name), E_USER_DEPRECATED);
-            }
-
-            $this->tests[$name] = $test;
-        }
-
-        // token parsers
-        foreach ($extension->getTokenParsers() as $parser) {
-            if ($parser instanceof TokenParserInterface) {
-                $this->parsers->addTokenParser($parser);
-            } elseif ($parser instanceof \Twig_TokenParserBrokerInterface) {
-                @trigger_error('Registering a \Twig_TokenParserBrokerInterface instance is deprecated since version 1.21.', E_USER_DEPRECATED);
-
-                $this->parsers->addTokenParserBroker($parser);
-            } else {
-                throw new \LogicException('getTokenParsers() must return an array of \Twig_TokenParserInterface or \Twig_TokenParserBrokerInterface instances.');
-            }
-        }
-
-        // node visitors
-        foreach ($extension->getNodeVisitors() as $visitor) {
-            $this->visitors[] = $visitor;
-        }
-
-        // operators
-        if ($operators = $extension->getOperators()) {
-            if (!\is_array($operators)) {
-                throw new \InvalidArgumentException(sprintf('"%s::getOperators()" must return an array with operators, got "%s".', \get_class($extension), \is_object($operators) ? \get_class($operators) : \gettype($operators).(\is_resource($operators) ? '' : '#'.$operators)));
-            }
-
-            if (2 !== \count($operators)) {
-                throw new \InvalidArgumentException(sprintf('"%s::getOperators()" must return an array of 2 elements, got %d.', \get_class($extension), \count($operators)));
-            }
-
-            $this->unaryOperators = array_merge($this->unaryOperators, $operators[0]);
-            $this->binaryOperators = array_merge($this->binaryOperators, $operators[1]);
-        }
-    }
-
-    /**
-     * @deprecated since 1.22 (to be removed in 2.0)
-     */
-    protected function writeCacheFile($file, $content)
-    {
-        $this->cache->write($file, $content);
-    }
-
-    private function updateOptionsHash()
-    {
-        $hashParts = array_merge(
-            array_keys($this->extensions),
-            [
-                (int) \function_exists('twig_template_get_attributes'),
-                PHP_MAJOR_VERSION,
-                PHP_MINOR_VERSION,
-                self::VERSION,
-                (int) $this->debug,
-                $this->baseTemplateClass,
-                (int) $this->strictVariables,
-            ]
-        );
-        $this->optionsHash = implode(':', $hashParts);
-    }
-}
-
-class_alias('Twig\Environment', 'Twig_Environment');
diff --git a/vendor/twig/twig/src/Error/Error.php b/vendor/twig/twig/src/Error/Error.php
deleted file mode 100644
index 2aa70f1538ab4ed1dd78900a162d7e3558a4ca64..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Error/Error.php
+++ /dev/null
@@ -1,325 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Error;
-
-use Twig\Source;
-use Twig\Template;
-
-/**
- * Twig base exception.
- *
- * This exception class and its children must only be used when
- * an error occurs during the loading of a template, when a syntax error
- * is detected in a template, or when rendering a template. Other
- * errors must use regular PHP exception classes (like when the template
- * cache directory is not writable for instance).
- *
- * To help debugging template issues, this class tracks the original template
- * name and line where the error occurred.
- *
- * Whenever possible, you must set these information (original template name
- * and line number) yourself by passing them to the constructor. If some or all
- * these information are not available from where you throw the exception, then
- * this class will guess them automatically (when the line number is set to -1
- * and/or the name is set to null). As this is a costly operation, this
- * can be disabled by passing false for both the name and the line number
- * when creating a new instance of this class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Error extends \Exception
-{
-    protected $lineno;
-    // to be renamed to name in 2.0
-    protected $filename;
-    protected $rawMessage;
-
-    private $sourcePath;
-    private $sourceCode;
-
-    /**
-     * Constructor.
-     *
-     * Set the line number to -1 to enable its automatic guessing.
-     * Set the name to null to enable its automatic guessing.
-     *
-     * @param string             $message  The error message
-     * @param int                $lineno   The template line where the error occurred
-     * @param Source|string|null $source   The source context where the error occurred
-     * @param \Exception         $previous The previous exception
-     */
-    public function __construct($message, $lineno = -1, $source = null, \Exception $previous = null)
-    {
-        if (null === $source) {
-            $name = null;
-        } elseif (!$source instanceof Source) {
-            // for compat with the Twig C ext., passing the template name as string is accepted
-            $name = $source;
-        } else {
-            $name = $source->getName();
-            $this->sourceCode = $source->getCode();
-            $this->sourcePath = $source->getPath();
-        }
-        parent::__construct('', 0, $previous);
-
-        $this->lineno = $lineno;
-        $this->filename = $name;
-        $this->rawMessage = $message;
-        $this->updateRepr();
-    }
-
-    /**
-     * Gets the raw message.
-     *
-     * @return string The raw message
-     */
-    public function getRawMessage()
-    {
-        return $this->rawMessage;
-    }
-
-    /**
-     * Gets the logical name where the error occurred.
-     *
-     * @return string The name
-     *
-     * @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead.
-     */
-    public function getTemplateFile()
-    {
-        @trigger_error(sprintf('The "%s" method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED);
-
-        return $this->filename;
-    }
-
-    /**
-     * Sets the logical name where the error occurred.
-     *
-     * @param string $name The name
-     *
-     * @deprecated since 1.27 (to be removed in 2.0). Use setSourceContext() instead.
-     */
-    public function setTemplateFile($name)
-    {
-        @trigger_error(sprintf('The "%s" method is deprecated since version 1.27 and will be removed in 2.0. Use setSourceContext() instead.', __METHOD__), E_USER_DEPRECATED);
-
-        $this->filename = $name;
-
-        $this->updateRepr();
-    }
-
-    /**
-     * Gets the logical name where the error occurred.
-     *
-     * @return string The name
-     *
-     * @deprecated since 1.29 (to be removed in 2.0). Use getSourceContext() instead.
-     */
-    public function getTemplateName()
-    {
-        @trigger_error(sprintf('The "%s" method is deprecated since version 1.29 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED);
-
-        return $this->filename;
-    }
-
-    /**
-     * Sets the logical name where the error occurred.
-     *
-     * @param string $name The name
-     *
-     * @deprecated since 1.29 (to be removed in 2.0). Use setSourceContext() instead.
-     */
-    public function setTemplateName($name)
-    {
-        @trigger_error(sprintf('The "%s" method is deprecated since version 1.29 and will be removed in 2.0. Use setSourceContext() instead.', __METHOD__), E_USER_DEPRECATED);
-
-        $this->filename = $name;
-        $this->sourceCode = $this->sourcePath = null;
-
-        $this->updateRepr();
-    }
-
-    /**
-     * Gets the template line where the error occurred.
-     *
-     * @return int The template line
-     */
-    public function getTemplateLine()
-    {
-        return $this->lineno;
-    }
-
-    /**
-     * Sets the template line where the error occurred.
-     *
-     * @param int $lineno The template line
-     */
-    public function setTemplateLine($lineno)
-    {
-        $this->lineno = $lineno;
-
-        $this->updateRepr();
-    }
-
-    /**
-     * Gets the source context of the Twig template where the error occurred.
-     *
-     * @return Source|null
-     */
-    public function getSourceContext()
-    {
-        return $this->filename ? new Source($this->sourceCode, $this->filename, $this->sourcePath) : null;
-    }
-
-    /**
-     * Sets the source context of the Twig template where the error occurred.
-     */
-    public function setSourceContext(Source $source = null)
-    {
-        if (null === $source) {
-            $this->sourceCode = $this->filename = $this->sourcePath = null;
-        } else {
-            $this->sourceCode = $source->getCode();
-            $this->filename = $source->getName();
-            $this->sourcePath = $source->getPath();
-        }
-
-        $this->updateRepr();
-    }
-
-    public function guess()
-    {
-        $this->guessTemplateInfo();
-        $this->updateRepr();
-    }
-
-    public function appendMessage($rawMessage)
-    {
-        $this->rawMessage .= $rawMessage;
-        $this->updateRepr();
-    }
-
-    /**
-     * @internal
-     */
-    protected function updateRepr()
-    {
-        $this->message = $this->rawMessage;
-
-        if ($this->sourcePath && $this->lineno > 0) {
-            $this->file = $this->sourcePath;
-            $this->line = $this->lineno;
-
-            return;
-        }
-
-        $dot = false;
-        if ('.' === substr($this->message, -1)) {
-            $this->message = substr($this->message, 0, -1);
-            $dot = true;
-        }
-
-        $questionMark = false;
-        if ('?' === substr($this->message, -1)) {
-            $this->message = substr($this->message, 0, -1);
-            $questionMark = true;
-        }
-
-        if ($this->filename) {
-            if (\is_string($this->filename) || (\is_object($this->filename) && method_exists($this->filename, '__toString'))) {
-                $name = sprintf('"%s"', $this->filename);
-            } else {
-                $name = json_encode($this->filename);
-            }
-            $this->message .= sprintf(' in %s', $name);
-        }
-
-        if ($this->lineno && $this->lineno >= 0) {
-            $this->message .= sprintf(' at line %d', $this->lineno);
-        }
-
-        if ($dot) {
-            $this->message .= '.';
-        }
-
-        if ($questionMark) {
-            $this->message .= '?';
-        }
-    }
-
-    /**
-     * @internal
-     */
-    protected function guessTemplateInfo()
-    {
-        $template = null;
-        $templateClass = null;
-
-        $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS | DEBUG_BACKTRACE_PROVIDE_OBJECT);
-        foreach ($backtrace as $trace) {
-            if (isset($trace['object']) && $trace['object'] instanceof Template && 'Twig_Template' !== \get_class($trace['object'])) {
-                $currentClass = \get_class($trace['object']);
-                $isEmbedContainer = 0 === strpos($templateClass, $currentClass);
-                if (null === $this->filename || ($this->filename == $trace['object']->getTemplateName() && !$isEmbedContainer)) {
-                    $template = $trace['object'];
-                    $templateClass = \get_class($trace['object']);
-                }
-            }
-        }
-
-        // update template name
-        if (null !== $template && null === $this->filename) {
-            $this->filename = $template->getTemplateName();
-        }
-
-        // update template path if any
-        if (null !== $template && null === $this->sourcePath) {
-            $src = $template->getSourceContext();
-            $this->sourceCode = $src->getCode();
-            $this->sourcePath = $src->getPath();
-        }
-
-        if (null === $template || $this->lineno > -1) {
-            return;
-        }
-
-        $r = new \ReflectionObject($template);
-        $file = $r->getFileName();
-
-        $exceptions = [$e = $this];
-        while ($e instanceof self && $e = $e->getPrevious()) {
-            $exceptions[] = $e;
-        }
-
-        while ($e = array_pop($exceptions)) {
-            $traces = $e->getTrace();
-            array_unshift($traces, ['file' => $e->getFile(), 'line' => $e->getLine()]);
-
-            while ($trace = array_shift($traces)) {
-                if (!isset($trace['file']) || !isset($trace['line']) || $file != $trace['file']) {
-                    continue;
-                }
-
-                foreach ($template->getDebugInfo() as $codeLine => $templateLine) {
-                    if ($codeLine <= $trace['line']) {
-                        // update template line
-                        $this->lineno = $templateLine;
-
-                        return;
-                    }
-                }
-            }
-        }
-    }
-}
-
-class_alias('Twig\Error\Error', 'Twig_Error');
diff --git a/vendor/twig/twig/src/Error/LoaderError.php b/vendor/twig/twig/src/Error/LoaderError.php
deleted file mode 100644
index dc5a9f1af735b6ad54f499a29bd81c1d0cde49d8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Error/LoaderError.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Error;
-
-/**
- * Exception thrown when an error occurs during template loading.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class LoaderError extends Error
-{
-}
-
-class_alias('Twig\Error\LoaderError', 'Twig_Error_Loader');
diff --git a/vendor/twig/twig/src/Error/RuntimeError.php b/vendor/twig/twig/src/Error/RuntimeError.php
deleted file mode 100644
index 9b3f36e050e7bdf45a0b2af28d71ba06fb8a1bba..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Error/RuntimeError.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Error;
-
-/**
- * Exception thrown when an error occurs at runtime.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RuntimeError extends Error
-{
-}
-
-class_alias('Twig\Error\RuntimeError', 'Twig_Error_Runtime');
diff --git a/vendor/twig/twig/src/Error/SyntaxError.php b/vendor/twig/twig/src/Error/SyntaxError.php
deleted file mode 100644
index 480e6606210c80c9b4dc371c4b6d4d1186bc3805..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Error/SyntaxError.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Error;
-
-/**
- * \Exception thrown when a syntax error occurs during lexing or parsing of a template.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SyntaxError extends Error
-{
-    /**
-     * Tweaks the error message to include suggestions.
-     *
-     * @param string $name  The original name of the item that does not exist
-     * @param array  $items An array of possible items
-     */
-    public function addSuggestions($name, array $items)
-    {
-        if (!$alternatives = self::computeAlternatives($name, $items)) {
-            return;
-        }
-
-        $this->appendMessage(sprintf(' Did you mean "%s"?', implode('", "', $alternatives)));
-    }
-
-    /**
-     * @internal
-     *
-     * To be merged with the addSuggestions() method in 2.0.
-     */
-    public static function computeAlternatives($name, $items)
-    {
-        $alternatives = [];
-        foreach ($items as $item) {
-            $lev = levenshtein($name, $item);
-            if ($lev <= \strlen($name) / 3 || false !== strpos($item, $name)) {
-                $alternatives[$item] = $lev;
-            }
-        }
-        asort($alternatives);
-
-        return array_keys($alternatives);
-    }
-}
-
-class_alias('Twig\Error\SyntaxError', 'Twig_Error_Syntax');
diff --git a/vendor/twig/twig/src/ExpressionParser.php b/vendor/twig/twig/src/ExpressionParser.php
deleted file mode 100644
index fa480a07cc445d540dc4c201aee994df8eda9902..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/ExpressionParser.php
+++ /dev/null
@@ -1,850 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ArrowFunctionExpression;
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Expression\Binary\ConcatBinary;
-use Twig\Node\Expression\BlockReferenceExpression;
-use Twig\Node\Expression\ConditionalExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\GetAttrExpression;
-use Twig\Node\Expression\MethodCallExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Expression\ParentExpression;
-use Twig\Node\Expression\Unary\NegUnary;
-use Twig\Node\Expression\Unary\NotUnary;
-use Twig\Node\Expression\Unary\PosUnary;
-use Twig\Node\Node;
-
-/**
- * Parses expressions.
- *
- * This parser implements a "Precedence climbing" algorithm.
- *
- * @see https://www.engr.mun.ca/~theo/Misc/exp_parsing.htm
- * @see https://en.wikipedia.org/wiki/Operator-precedence_parser
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @internal
- */
-class ExpressionParser
-{
-    const OPERATOR_LEFT = 1;
-    const OPERATOR_RIGHT = 2;
-
-    protected $parser;
-    protected $unaryOperators;
-    protected $binaryOperators;
-
-    private $env;
-
-    public function __construct(Parser $parser, $env = null)
-    {
-        $this->parser = $parser;
-
-        if ($env instanceof Environment) {
-            $this->env = $env;
-            $this->unaryOperators = $env->getUnaryOperators();
-            $this->binaryOperators = $env->getBinaryOperators();
-        } else {
-            @trigger_error('Passing the operators as constructor arguments to '.__METHOD__.' is deprecated since version 1.27. Pass the environment instead.', E_USER_DEPRECATED);
-
-            $this->env = $parser->getEnvironment();
-            $this->unaryOperators = func_get_arg(1);
-            $this->binaryOperators = func_get_arg(2);
-        }
-    }
-
-    public function parseExpression($precedence = 0, $allowArrow = false)
-    {
-        if ($allowArrow && $arrow = $this->parseArrow()) {
-            return $arrow;
-        }
-
-        $expr = $this->getPrimary();
-        $token = $this->parser->getCurrentToken();
-        while ($this->isBinary($token) && $this->binaryOperators[$token->getValue()]['precedence'] >= $precedence) {
-            $op = $this->binaryOperators[$token->getValue()];
-            $this->parser->getStream()->next();
-
-            if ('is not' === $token->getValue()) {
-                $expr = $this->parseNotTestExpression($expr);
-            } elseif ('is' === $token->getValue()) {
-                $expr = $this->parseTestExpression($expr);
-            } elseif (isset($op['callable'])) {
-                $expr = \call_user_func($op['callable'], $this->parser, $expr);
-            } else {
-                $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']);
-                $class = $op['class'];
-                $expr = new $class($expr, $expr1, $token->getLine());
-            }
-
-            $token = $this->parser->getCurrentToken();
-        }
-
-        if (0 === $precedence) {
-            return $this->parseConditionalExpression($expr);
-        }
-
-        return $expr;
-    }
-
-    /**
-     * @return ArrowFunctionExpression|null
-     */
-    private function parseArrow()
-    {
-        $stream = $this->parser->getStream();
-
-        // short array syntax (one argument, no parentheses)?
-        if ($stream->look(1)->test(Token::ARROW_TYPE)) {
-            $line = $stream->getCurrent()->getLine();
-            $token = $stream->expect(Token::NAME_TYPE);
-            $names = [new AssignNameExpression($token->getValue(), $token->getLine())];
-            $stream->expect(Token::ARROW_TYPE);
-
-            return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line);
-        }
-
-        // first, determine if we are parsing an arrow function by finding => (long form)
-        $i = 0;
-        if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, '(')) {
-            return null;
-        }
-        ++$i;
-        while (true) {
-            // variable name
-            ++$i;
-            if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, ',')) {
-                break;
-            }
-            ++$i;
-        }
-        if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, ')')) {
-            return null;
-        }
-        ++$i;
-        if (!$stream->look($i)->test(Token::ARROW_TYPE)) {
-            return null;
-        }
-
-        // yes, let's parse it properly
-        $token = $stream->expect(Token::PUNCTUATION_TYPE, '(');
-        $line = $token->getLine();
-
-        $names = [];
-        while (true) {
-            $token = $stream->expect(Token::NAME_TYPE);
-            $names[] = new AssignNameExpression($token->getValue(), $token->getLine());
-
-            if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) {
-                break;
-            }
-        }
-        $stream->expect(Token::PUNCTUATION_TYPE, ')');
-        $stream->expect(Token::ARROW_TYPE);
-
-        return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line);
-    }
-
-    protected function getPrimary()
-    {
-        $token = $this->parser->getCurrentToken();
-
-        if ($this->isUnary($token)) {
-            $operator = $this->unaryOperators[$token->getValue()];
-            $this->parser->getStream()->next();
-            $expr = $this->parseExpression($operator['precedence']);
-            $class = $operator['class'];
-
-            return $this->parsePostfixExpression(new $class($expr, $token->getLine()));
-        } elseif ($token->test(Token::PUNCTUATION_TYPE, '(')) {
-            $this->parser->getStream()->next();
-            $expr = $this->parseExpression();
-            $this->parser->getStream()->expect(Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed');
-
-            return $this->parsePostfixExpression($expr);
-        }
-
-        return $this->parsePrimaryExpression();
-    }
-
-    protected function parseConditionalExpression($expr)
-    {
-        while ($this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, '?')) {
-            if (!$this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, ':')) {
-                $expr2 = $this->parseExpression();
-                if ($this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, ':')) {
-                    $expr3 = $this->parseExpression();
-                } else {
-                    $expr3 = new ConstantExpression('', $this->parser->getCurrentToken()->getLine());
-                }
-            } else {
-                $expr2 = $expr;
-                $expr3 = $this->parseExpression();
-            }
-
-            $expr = new ConditionalExpression($expr, $expr2, $expr3, $this->parser->getCurrentToken()->getLine());
-        }
-
-        return $expr;
-    }
-
-    protected function isUnary(Token $token)
-    {
-        return $token->test(Token::OPERATOR_TYPE) && isset($this->unaryOperators[$token->getValue()]);
-    }
-
-    protected function isBinary(Token $token)
-    {
-        return $token->test(Token::OPERATOR_TYPE) && isset($this->binaryOperators[$token->getValue()]);
-    }
-
-    public function parsePrimaryExpression()
-    {
-        $token = $this->parser->getCurrentToken();
-        switch ($token->getType()) {
-            case Token::NAME_TYPE:
-                $this->parser->getStream()->next();
-                switch ($token->getValue()) {
-                    case 'true':
-                    case 'TRUE':
-                        $node = new ConstantExpression(true, $token->getLine());
-                        break;
-
-                    case 'false':
-                    case 'FALSE':
-                        $node = new ConstantExpression(false, $token->getLine());
-                        break;
-
-                    case 'none':
-                    case 'NONE':
-                    case 'null':
-                    case 'NULL':
-                        $node = new ConstantExpression(null, $token->getLine());
-                        break;
-
-                    default:
-                        if ('(' === $this->parser->getCurrentToken()->getValue()) {
-                            $node = $this->getFunctionNode($token->getValue(), $token->getLine());
-                        } else {
-                            $node = new NameExpression($token->getValue(), $token->getLine());
-                        }
-                }
-                break;
-
-            case Token::NUMBER_TYPE:
-                $this->parser->getStream()->next();
-                $node = new ConstantExpression($token->getValue(), $token->getLine());
-                break;
-
-            case Token::STRING_TYPE:
-            case Token::INTERPOLATION_START_TYPE:
-                $node = $this->parseStringExpression();
-                break;
-
-            case Token::OPERATOR_TYPE:
-                if (preg_match(Lexer::REGEX_NAME, $token->getValue(), $matches) && $matches[0] == $token->getValue()) {
-                    // in this context, string operators are variable names
-                    $this->parser->getStream()->next();
-                    $node = new NameExpression($token->getValue(), $token->getLine());
-                    break;
-                } elseif (isset($this->unaryOperators[$token->getValue()])) {
-                    $class = $this->unaryOperators[$token->getValue()]['class'];
-
-                    $ref = new \ReflectionClass($class);
-                    $negClass = 'Twig\Node\Expression\Unary\NegUnary';
-                    $posClass = 'Twig\Node\Expression\Unary\PosUnary';
-                    if (!(\in_array($ref->getName(), [$negClass, $posClass, 'Twig_Node_Expression_Unary_Neg', 'Twig_Node_Expression_Unary_Pos'])
-                        || $ref->isSubclassOf($negClass) || $ref->isSubclassOf($posClass)
-                        || $ref->isSubclassOf('Twig_Node_Expression_Unary_Neg') || $ref->isSubclassOf('Twig_Node_Expression_Unary_Pos'))
-                    ) {
-                        throw new SyntaxError(sprintf('Unexpected unary operator "%s".', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext());
-                    }
-
-                    $this->parser->getStream()->next();
-                    $expr = $this->parsePrimaryExpression();
-
-                    $node = new $class($expr, $token->getLine());
-                    break;
-                }
-
-                // no break
-            default:
-                if ($token->test(Token::PUNCTUATION_TYPE, '[')) {
-                    $node = $this->parseArrayExpression();
-                } elseif ($token->test(Token::PUNCTUATION_TYPE, '{')) {
-                    $node = $this->parseHashExpression();
-                } elseif ($token->test(Token::OPERATOR_TYPE, '=') && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) {
-                    throw new SyntaxError(sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext());
-                } else {
-                    throw new SyntaxError(sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext());
-                }
-        }
-
-        return $this->parsePostfixExpression($node);
-    }
-
-    public function parseStringExpression()
-    {
-        $stream = $this->parser->getStream();
-
-        $nodes = [];
-        // a string cannot be followed by another string in a single expression
-        $nextCanBeString = true;
-        while (true) {
-            if ($nextCanBeString && $token = $stream->nextIf(Token::STRING_TYPE)) {
-                $nodes[] = new ConstantExpression($token->getValue(), $token->getLine());
-                $nextCanBeString = false;
-            } elseif ($stream->nextIf(Token::INTERPOLATION_START_TYPE)) {
-                $nodes[] = $this->parseExpression();
-                $stream->expect(Token::INTERPOLATION_END_TYPE);
-                $nextCanBeString = true;
-            } else {
-                break;
-            }
-        }
-
-        $expr = array_shift($nodes);
-        foreach ($nodes as $node) {
-            $expr = new ConcatBinary($expr, $node, $node->getTemplateLine());
-        }
-
-        return $expr;
-    }
-
-    public function parseArrayExpression()
-    {
-        $stream = $this->parser->getStream();
-        $stream->expect(Token::PUNCTUATION_TYPE, '[', 'An array element was expected');
-
-        $node = new ArrayExpression([], $stream->getCurrent()->getLine());
-        $first = true;
-        while (!$stream->test(Token::PUNCTUATION_TYPE, ']')) {
-            if (!$first) {
-                $stream->expect(Token::PUNCTUATION_TYPE, ',', 'An array element must be followed by a comma');
-
-                // trailing ,?
-                if ($stream->test(Token::PUNCTUATION_TYPE, ']')) {
-                    break;
-                }
-            }
-            $first = false;
-
-            $node->addElement($this->parseExpression());
-        }
-        $stream->expect(Token::PUNCTUATION_TYPE, ']', 'An opened array is not properly closed');
-
-        return $node;
-    }
-
-    public function parseHashExpression()
-    {
-        $stream = $this->parser->getStream();
-        $stream->expect(Token::PUNCTUATION_TYPE, '{', 'A hash element was expected');
-
-        $node = new ArrayExpression([], $stream->getCurrent()->getLine());
-        $first = true;
-        while (!$stream->test(Token::PUNCTUATION_TYPE, '}')) {
-            if (!$first) {
-                $stream->expect(Token::PUNCTUATION_TYPE, ',', 'A hash value must be followed by a comma');
-
-                // trailing ,?
-                if ($stream->test(Token::PUNCTUATION_TYPE, '}')) {
-                    break;
-                }
-            }
-            $first = false;
-
-            // a hash key can be:
-            //
-            //  * a number -- 12
-            //  * a string -- 'a'
-            //  * a name, which is equivalent to a string -- a
-            //  * an expression, which must be enclosed in parentheses -- (1 + 2)
-            if ($token = $stream->nextIf(Token::NAME_TYPE)) {
-                $key = new ConstantExpression($token->getValue(), $token->getLine());
-
-                // {a} is a shortcut for {a:a}
-                if ($stream->test(Token::PUNCTUATION_TYPE, [',', '}'])) {
-                    $value = new NameExpression($key->getAttribute('value'), $key->getTemplateLine());
-                    $node->addElement($value, $key);
-                    continue;
-                }
-            } elseif (($token = $stream->nextIf(Token::STRING_TYPE)) || $token = $stream->nextIf(Token::NUMBER_TYPE)) {
-                $key = new ConstantExpression($token->getValue(), $token->getLine());
-            } elseif ($stream->test(Token::PUNCTUATION_TYPE, '(')) {
-                $key = $this->parseExpression();
-            } else {
-                $current = $stream->getCurrent();
-
-                throw new SyntaxError(sprintf('A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "%s" of value "%s".', Token::typeToEnglish($current->getType()), $current->getValue()), $current->getLine(), $stream->getSourceContext());
-            }
-
-            $stream->expect(Token::PUNCTUATION_TYPE, ':', 'A hash key must be followed by a colon (:)');
-            $value = $this->parseExpression();
-
-            $node->addElement($value, $key);
-        }
-        $stream->expect(Token::PUNCTUATION_TYPE, '}', 'An opened hash is not properly closed');
-
-        return $node;
-    }
-
-    public function parsePostfixExpression($node)
-    {
-        while (true) {
-            $token = $this->parser->getCurrentToken();
-            if (Token::PUNCTUATION_TYPE == $token->getType()) {
-                if ('.' == $token->getValue() || '[' == $token->getValue()) {
-                    $node = $this->parseSubscriptExpression($node);
-                } elseif ('|' == $token->getValue()) {
-                    $node = $this->parseFilterExpression($node);
-                } else {
-                    break;
-                }
-            } else {
-                break;
-            }
-        }
-
-        return $node;
-    }
-
-    public function getFunctionNode($name, $line)
-    {
-        switch ($name) {
-            case 'parent':
-                $this->parseArguments();
-                if (!\count($this->parser->getBlockStack())) {
-                    throw new SyntaxError('Calling "parent" outside a block is forbidden.', $line, $this->parser->getStream()->getSourceContext());
-                }
-
-                if (!$this->parser->getParent() && !$this->parser->hasTraits()) {
-                    throw new SyntaxError('Calling "parent" on a template that does not extend nor "use" another template is forbidden.', $line, $this->parser->getStream()->getSourceContext());
-                }
-
-                return new ParentExpression($this->parser->peekBlockStack(), $line);
-            case 'block':
-                $args = $this->parseArguments();
-                if (\count($args) < 1) {
-                    throw new SyntaxError('The "block" function takes one argument (the block name).', $line, $this->parser->getStream()->getSourceContext());
-                }
-
-                return new BlockReferenceExpression($args->getNode(0), \count($args) > 1 ? $args->getNode(1) : null, $line);
-            case 'attribute':
-                $args = $this->parseArguments();
-                if (\count($args) < 2) {
-                    throw new SyntaxError('The "attribute" function takes at least two arguments (the variable and the attributes).', $line, $this->parser->getStream()->getSourceContext());
-                }
-
-                return new GetAttrExpression($args->getNode(0), $args->getNode(1), \count($args) > 2 ? $args->getNode(2) : null, Template::ANY_CALL, $line);
-            default:
-                if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) {
-                    $arguments = new ArrayExpression([], $line);
-                    foreach ($this->parseArguments() as $n) {
-                        $arguments->addElement($n);
-                    }
-
-                    $node = new MethodCallExpression($alias['node'], $alias['name'], $arguments, $line);
-                    $node->setAttribute('safe', true);
-
-                    return $node;
-                }
-
-                $args = $this->parseArguments(true);
-                $class = $this->getFunctionNodeClass($name, $line);
-
-                return new $class($name, $args, $line);
-        }
-    }
-
-    public function parseSubscriptExpression($node)
-    {
-        $stream = $this->parser->getStream();
-        $token = $stream->next();
-        $lineno = $token->getLine();
-        $arguments = new ArrayExpression([], $lineno);
-        $type = Template::ANY_CALL;
-        if ('.' == $token->getValue()) {
-            $token = $stream->next();
-            if (
-                Token::NAME_TYPE == $token->getType()
-                ||
-                Token::NUMBER_TYPE == $token->getType()
-                ||
-                (Token::OPERATOR_TYPE == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue()))
-            ) {
-                $arg = new ConstantExpression($token->getValue(), $lineno);
-
-                if ($stream->test(Token::PUNCTUATION_TYPE, '(')) {
-                    $type = Template::METHOD_CALL;
-                    foreach ($this->parseArguments() as $n) {
-                        $arguments->addElement($n);
-                    }
-                }
-            } else {
-                throw new SyntaxError('Expected name or number.', $lineno, $stream->getSourceContext());
-            }
-
-            if ($node instanceof NameExpression && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) {
-                if (!$arg instanceof ConstantExpression) {
-                    throw new SyntaxError(sprintf('Dynamic macro names are not supported (called on "%s").', $node->getAttribute('name')), $token->getLine(), $stream->getSourceContext());
-                }
-
-                $name = $arg->getAttribute('value');
-
-                if ($this->parser->isReservedMacroName($name)) {
-                    throw new SyntaxError(sprintf('"%s" cannot be called as macro as it is a reserved keyword.', $name), $token->getLine(), $stream->getSourceContext());
-                }
-
-                $node = new MethodCallExpression($node, 'get'.$name, $arguments, $lineno);
-                $node->setAttribute('safe', true);
-
-                return $node;
-            }
-        } else {
-            $type = Template::ARRAY_CALL;
-
-            // slice?
-            $slice = false;
-            if ($stream->test(Token::PUNCTUATION_TYPE, ':')) {
-                $slice = true;
-                $arg = new ConstantExpression(0, $token->getLine());
-            } else {
-                $arg = $this->parseExpression();
-            }
-
-            if ($stream->nextIf(Token::PUNCTUATION_TYPE, ':')) {
-                $slice = true;
-            }
-
-            if ($slice) {
-                if ($stream->test(Token::PUNCTUATION_TYPE, ']')) {
-                    $length = new ConstantExpression(null, $token->getLine());
-                } else {
-                    $length = $this->parseExpression();
-                }
-
-                $class = $this->getFilterNodeClass('slice', $token->getLine());
-                $arguments = new Node([$arg, $length]);
-                $filter = new $class($node, new ConstantExpression('slice', $token->getLine()), $arguments, $token->getLine());
-
-                $stream->expect(Token::PUNCTUATION_TYPE, ']');
-
-                return $filter;
-            }
-
-            $stream->expect(Token::PUNCTUATION_TYPE, ']');
-        }
-
-        return new GetAttrExpression($node, $arg, $arguments, $type, $lineno);
-    }
-
-    public function parseFilterExpression($node)
-    {
-        $this->parser->getStream()->next();
-
-        return $this->parseFilterExpressionRaw($node);
-    }
-
-    public function parseFilterExpressionRaw($node, $tag = null)
-    {
-        while (true) {
-            $token = $this->parser->getStream()->expect(Token::NAME_TYPE);
-
-            $name = new ConstantExpression($token->getValue(), $token->getLine());
-            if (!$this->parser->getStream()->test(Token::PUNCTUATION_TYPE, '(')) {
-                $arguments = new Node();
-            } else {
-                $arguments = $this->parseArguments(true, false, true);
-            }
-
-            $class = $this->getFilterNodeClass($name->getAttribute('value'), $token->getLine());
-
-            $node = new $class($node, $name, $arguments, $token->getLine(), $tag);
-
-            if (!$this->parser->getStream()->test(Token::PUNCTUATION_TYPE, '|')) {
-                break;
-            }
-
-            $this->parser->getStream()->next();
-        }
-
-        return $node;
-    }
-
-    /**
-     * Parses arguments.
-     *
-     * @param bool $namedArguments Whether to allow named arguments or not
-     * @param bool $definition     Whether we are parsing arguments for a function definition
-     *
-     * @return Node
-     *
-     * @throws SyntaxError
-     */
-    public function parseArguments($namedArguments = false, $definition = false, $allowArrow = false)
-    {
-        $args = [];
-        $stream = $this->parser->getStream();
-
-        $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis');
-        while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) {
-            if (!empty($args)) {
-                $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma');
-
-                // if the comma above was a trailing comma, early exit the argument parse loop
-                if ($stream->test(Token::PUNCTUATION_TYPE, ')')) {
-                    break;
-                }
-            }
-
-            if ($definition) {
-                $token = $stream->expect(Token::NAME_TYPE, null, 'An argument must be a name');
-                $value = new NameExpression($token->getValue(), $this->parser->getCurrentToken()->getLine());
-            } else {
-                $value = $this->parseExpression(0, $allowArrow);
-            }
-
-            $name = null;
-            if ($namedArguments && $token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) {
-                if (!$value instanceof NameExpression) {
-                    throw new SyntaxError(sprintf('A parameter name must be a string, "%s" given.', \get_class($value)), $token->getLine(), $stream->getSourceContext());
-                }
-                $name = $value->getAttribute('name');
-
-                if ($definition) {
-                    $value = $this->parsePrimaryExpression();
-
-                    if (!$this->checkConstantExpression($value)) {
-                        throw new SyntaxError(sprintf('A default value for an argument must be a constant (a boolean, a string, a number, or an array).'), $token->getLine(), $stream->getSourceContext());
-                    }
-                } else {
-                    $value = $this->parseExpression(0, $allowArrow);
-                }
-            }
-
-            if ($definition) {
-                if (null === $name) {
-                    $name = $value->getAttribute('name');
-                    $value = new ConstantExpression(null, $this->parser->getCurrentToken()->getLine());
-                }
-                $args[$name] = $value;
-            } else {
-                if (null === $name) {
-                    $args[] = $value;
-                } else {
-                    $args[$name] = $value;
-                }
-            }
-        }
-        $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis');
-
-        return new Node($args);
-    }
-
-    public function parseAssignmentExpression()
-    {
-        $stream = $this->parser->getStream();
-        $targets = [];
-        while (true) {
-            $token = $this->parser->getCurrentToken();
-            if ($stream->test(Token::OPERATOR_TYPE) && preg_match(Lexer::REGEX_NAME, $token->getValue())) {
-                // in this context, string operators are variable names
-                $this->parser->getStream()->next();
-            } else {
-                $stream->expect(Token::NAME_TYPE, null, 'Only variables can be assigned to');
-            }
-            $value = $token->getValue();
-            if (\in_array(strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), ['true', 'false', 'none', 'null'])) {
-                throw new SyntaxError(sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext());
-            }
-            $targets[] = new AssignNameExpression($value, $token->getLine());
-
-            if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) {
-                break;
-            }
-        }
-
-        return new Node($targets);
-    }
-
-    public function parseMultitargetExpression()
-    {
-        $targets = [];
-        while (true) {
-            $targets[] = $this->parseExpression();
-            if (!$this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, ',')) {
-                break;
-            }
-        }
-
-        return new Node($targets);
-    }
-
-    private function parseNotTestExpression(\Twig_NodeInterface $node)
-    {
-        return new NotUnary($this->parseTestExpression($node), $this->parser->getCurrentToken()->getLine());
-    }
-
-    private function parseTestExpression(\Twig_NodeInterface $node)
-    {
-        $stream = $this->parser->getStream();
-        list($name, $test) = $this->getTest($node->getTemplateLine());
-
-        $class = $this->getTestNodeClass($test);
-        $arguments = null;
-        if ($stream->test(Token::PUNCTUATION_TYPE, '(')) {
-            $arguments = $this->parseArguments(true);
-        } elseif ($test->hasOneMandatoryArgument()) {
-            $arguments = new Node([0 => $this->parsePrimaryExpression()]);
-        }
-
-        return new $class($node, $name, $arguments, $this->parser->getCurrentToken()->getLine());
-    }
-
-    private function getTest($line)
-    {
-        $stream = $this->parser->getStream();
-        $name = $stream->expect(Token::NAME_TYPE)->getValue();
-
-        if ($test = $this->env->getTest($name)) {
-            return [$name, $test];
-        }
-
-        if ($stream->test(Token::NAME_TYPE)) {
-            // try 2-words tests
-            $name = $name.' '.$this->parser->getCurrentToken()->getValue();
-
-            if ($test = $this->env->getTest($name)) {
-                $stream->next();
-
-                return [$name, $test];
-            }
-        }
-
-        $e = new SyntaxError(sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext());
-        $e->addSuggestions($name, array_keys($this->env->getTests()));
-
-        throw $e;
-    }
-
-    private function getTestNodeClass($test)
-    {
-        if ($test instanceof TwigTest && $test->isDeprecated()) {
-            $stream = $this->parser->getStream();
-            $message = sprintf('Twig Test "%s" is deprecated', $test->getName());
-            if (!\is_bool($test->getDeprecatedVersion())) {
-                $message .= sprintf(' since version %s', $test->getDeprecatedVersion());
-            }
-            if ($test->getAlternative()) {
-                $message .= sprintf('. Use "%s" instead', $test->getAlternative());
-            }
-            $src = $stream->getSourceContext();
-            $message .= sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $stream->getCurrent()->getLine());
-
-            @trigger_error($message, E_USER_DEPRECATED);
-        }
-
-        if ($test instanceof TwigTest) {
-            return $test->getNodeClass();
-        }
-
-        return $test instanceof \Twig_Test_Node ? $test->getClass() : 'Twig\Node\Expression\TestExpression';
-    }
-
-    protected function getFunctionNodeClass($name, $line)
-    {
-        if (false === $function = $this->env->getFunction($name)) {
-            $e = new SyntaxError(sprintf('Unknown "%s" function.', $name), $line, $this->parser->getStream()->getSourceContext());
-            $e->addSuggestions($name, array_keys($this->env->getFunctions()));
-
-            throw $e;
-        }
-
-        if ($function instanceof TwigFunction && $function->isDeprecated()) {
-            $message = sprintf('Twig Function "%s" is deprecated', $function->getName());
-            if (!\is_bool($function->getDeprecatedVersion())) {
-                $message .= sprintf(' since version %s', $function->getDeprecatedVersion());
-            }
-            if ($function->getAlternative()) {
-                $message .= sprintf('. Use "%s" instead', $function->getAlternative());
-            }
-            $src = $this->parser->getStream()->getSourceContext();
-            $message .= sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line);
-
-            @trigger_error($message, E_USER_DEPRECATED);
-        }
-
-        if ($function instanceof TwigFunction) {
-            return $function->getNodeClass();
-        }
-
-        return $function instanceof \Twig_Function_Node ? $function->getClass() : 'Twig\Node\Expression\FunctionExpression';
-    }
-
-    protected function getFilterNodeClass($name, $line)
-    {
-        if (false === $filter = $this->env->getFilter($name)) {
-            $e = new SyntaxError(sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext());
-            $e->addSuggestions($name, array_keys($this->env->getFilters()));
-
-            throw $e;
-        }
-
-        if ($filter instanceof TwigFilter && $filter->isDeprecated()) {
-            $message = sprintf('Twig Filter "%s" is deprecated', $filter->getName());
-            if (!\is_bool($filter->getDeprecatedVersion())) {
-                $message .= sprintf(' since version %s', $filter->getDeprecatedVersion());
-            }
-            if ($filter->getAlternative()) {
-                $message .= sprintf('. Use "%s" instead', $filter->getAlternative());
-            }
-            $src = $this->parser->getStream()->getSourceContext();
-            $message .= sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line);
-
-            @trigger_error($message, E_USER_DEPRECATED);
-        }
-
-        if ($filter instanceof TwigFilter) {
-            return $filter->getNodeClass();
-        }
-
-        return $filter instanceof \Twig_Filter_Node ? $filter->getClass() : 'Twig\Node\Expression\FilterExpression';
-    }
-
-    // checks that the node only contains "constant" elements
-    protected function checkConstantExpression(\Twig_NodeInterface $node)
-    {
-        if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression
-            || $node instanceof NegUnary || $node instanceof PosUnary
-        )) {
-            return false;
-        }
-
-        foreach ($node as $n) {
-            if (!$this->checkConstantExpression($n)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-}
-
-class_alias('Twig\ExpressionParser', 'Twig_ExpressionParser');
diff --git a/vendor/twig/twig/src/Extension/AbstractExtension.php b/vendor/twig/twig/src/Extension/AbstractExtension.php
deleted file mode 100644
index cabe7182c9e1a50daa76ff84e88fffe66368809b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/AbstractExtension.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension;
-
-use Twig\Environment;
-
-abstract class AbstractExtension implements ExtensionInterface
-{
-    /**
-     * @deprecated since 1.23 (to be removed in 2.0), implement \Twig_Extension_InitRuntimeInterface instead
-     */
-    public function initRuntime(Environment $environment)
-    {
-    }
-
-    public function getTokenParsers()
-    {
-        return [];
-    }
-
-    public function getNodeVisitors()
-    {
-        return [];
-    }
-
-    public function getFilters()
-    {
-        return [];
-    }
-
-    public function getTests()
-    {
-        return [];
-    }
-
-    public function getFunctions()
-    {
-        return [];
-    }
-
-    public function getOperators()
-    {
-        return [];
-    }
-
-    /**
-     * @deprecated since 1.23 (to be removed in 2.0), implement \Twig_Extension_GlobalsInterface instead
-     */
-    public function getGlobals()
-    {
-        return [];
-    }
-
-    /**
-     * @deprecated since 1.26 (to be removed in 2.0), not used anymore internally
-     */
-    public function getName()
-    {
-        return static::class;
-    }
-}
-
-class_alias('Twig\Extension\AbstractExtension', 'Twig_Extension');
diff --git a/vendor/twig/twig/src/Extension/CoreExtension.php b/vendor/twig/twig/src/Extension/CoreExtension.php
deleted file mode 100644
index b52cb29be139d87d2b8247e6f0a070ee1bf4e76c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/CoreExtension.php
+++ /dev/null
@@ -1,1760 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension {
-use Twig\ExpressionParser;
-use Twig\TokenParser\ApplyTokenParser;
-use Twig\TokenParser\BlockTokenParser;
-use Twig\TokenParser\DeprecatedTokenParser;
-use Twig\TokenParser\DoTokenParser;
-use Twig\TokenParser\EmbedTokenParser;
-use Twig\TokenParser\ExtendsTokenParser;
-use Twig\TokenParser\FilterTokenParser;
-use Twig\TokenParser\FlushTokenParser;
-use Twig\TokenParser\ForTokenParser;
-use Twig\TokenParser\FromTokenParser;
-use Twig\TokenParser\IfTokenParser;
-use Twig\TokenParser\ImportTokenParser;
-use Twig\TokenParser\IncludeTokenParser;
-use Twig\TokenParser\MacroTokenParser;
-use Twig\TokenParser\SetTokenParser;
-use Twig\TokenParser\SpacelessTokenParser;
-use Twig\TokenParser\UseTokenParser;
-use Twig\TokenParser\WithTokenParser;
-use Twig\TwigFilter;
-use Twig\TwigFunction;
-use Twig\TwigTest;
-
-/**
- * @final
- */
-class CoreExtension extends AbstractExtension
-{
-    protected $dateFormats = ['F j, Y H:i', '%d days'];
-    protected $numberFormat = [0, '.', ','];
-    protected $timezone = null;
-    protected $escapers = [];
-
-    /**
-     * Defines a new escaper to be used via the escape filter.
-     *
-     * @param string   $strategy The strategy name that should be used as a strategy in the escape call
-     * @param callable $callable A valid PHP callable
-     */
-    public function setEscaper($strategy, $callable)
-    {
-        $this->escapers[$strategy] = $callable;
-    }
-
-    /**
-     * Gets all defined escapers.
-     *
-     * @return array An array of escapers
-     */
-    public function getEscapers()
-    {
-        return $this->escapers;
-    }
-
-    /**
-     * Sets the default format to be used by the date filter.
-     *
-     * @param string $format             The default date format string
-     * @param string $dateIntervalFormat The default date interval format string
-     */
-    public function setDateFormat($format = null, $dateIntervalFormat = null)
-    {
-        if (null !== $format) {
-            $this->dateFormats[0] = $format;
-        }
-
-        if (null !== $dateIntervalFormat) {
-            $this->dateFormats[1] = $dateIntervalFormat;
-        }
-    }
-
-    /**
-     * Gets the default format to be used by the date filter.
-     *
-     * @return array The default date format string and the default date interval format string
-     */
-    public function getDateFormat()
-    {
-        return $this->dateFormats;
-    }
-
-    /**
-     * Sets the default timezone to be used by the date filter.
-     *
-     * @param \DateTimeZone|string $timezone The default timezone string or a \DateTimeZone object
-     */
-    public function setTimezone($timezone)
-    {
-        $this->timezone = $timezone instanceof \DateTimeZone ? $timezone : new \DateTimeZone($timezone);
-    }
-
-    /**
-     * Gets the default timezone to be used by the date filter.
-     *
-     * @return \DateTimeZone The default timezone currently in use
-     */
-    public function getTimezone()
-    {
-        if (null === $this->timezone) {
-            $this->timezone = new \DateTimeZone(date_default_timezone_get());
-        }
-
-        return $this->timezone;
-    }
-
-    /**
-     * Sets the default format to be used by the number_format filter.
-     *
-     * @param int    $decimal      the number of decimal places to use
-     * @param string $decimalPoint the character(s) to use for the decimal point
-     * @param string $thousandSep  the character(s) to use for the thousands separator
-     */
-    public function setNumberFormat($decimal, $decimalPoint, $thousandSep)
-    {
-        $this->numberFormat = [$decimal, $decimalPoint, $thousandSep];
-    }
-
-    /**
-     * Get the default format used by the number_format filter.
-     *
-     * @return array The arguments for number_format()
-     */
-    public function getNumberFormat()
-    {
-        return $this->numberFormat;
-    }
-
-    public function getTokenParsers()
-    {
-        return [
-            new ApplyTokenParser(),
-            new ForTokenParser(),
-            new IfTokenParser(),
-            new ExtendsTokenParser(),
-            new IncludeTokenParser(),
-            new BlockTokenParser(),
-            new UseTokenParser(),
-            new FilterTokenParser(),
-            new MacroTokenParser(),
-            new ImportTokenParser(),
-            new FromTokenParser(),
-            new SetTokenParser(),
-            new SpacelessTokenParser(),
-            new FlushTokenParser(),
-            new DoTokenParser(),
-            new EmbedTokenParser(),
-            new WithTokenParser(),
-            new DeprecatedTokenParser(),
-        ];
-    }
-
-    public function getFilters()
-    {
-        $filters = [
-            // formatting filters
-            new TwigFilter('date', 'twig_date_format_filter', ['needs_environment' => true]),
-            new TwigFilter('date_modify', 'twig_date_modify_filter', ['needs_environment' => true]),
-            new TwigFilter('format', 'sprintf'),
-            new TwigFilter('replace', 'twig_replace_filter'),
-            new TwigFilter('number_format', 'twig_number_format_filter', ['needs_environment' => true]),
-            new TwigFilter('abs', 'abs'),
-            new TwigFilter('round', 'twig_round'),
-
-            // encoding
-            new TwigFilter('url_encode', 'twig_urlencode_filter'),
-            new TwigFilter('json_encode', 'twig_jsonencode_filter'),
-            new TwigFilter('convert_encoding', 'twig_convert_encoding'),
-
-            // string filters
-            new TwigFilter('title', 'twig_title_string_filter', ['needs_environment' => true]),
-            new TwigFilter('capitalize', 'twig_capitalize_string_filter', ['needs_environment' => true]),
-            new TwigFilter('upper', 'strtoupper'),
-            new TwigFilter('lower', 'strtolower'),
-            new TwigFilter('striptags', 'strip_tags'),
-            new TwigFilter('trim', 'twig_trim_filter'),
-            new TwigFilter('nl2br', 'nl2br', ['pre_escape' => 'html', 'is_safe' => ['html']]),
-            new TwigFilter('spaceless', 'twig_spaceless', ['is_safe' => ['html']]),
-
-            // array helpers
-            new TwigFilter('join', 'twig_join_filter'),
-            new TwigFilter('split', 'twig_split_filter', ['needs_environment' => true]),
-            new TwigFilter('sort', 'twig_sort_filter'),
-            new TwigFilter('merge', 'twig_array_merge'),
-            new TwigFilter('batch', 'twig_array_batch'),
-            new TwigFilter('filter', 'twig_array_filter', ['needs_environment' => true]),
-            new TwigFilter('map', 'twig_array_map', ['needs_environment' => true]),
-            new TwigFilter('reduce', 'twig_array_reduce', ['needs_environment' => true]),
-
-            // string/array filters
-            new TwigFilter('reverse', 'twig_reverse_filter', ['needs_environment' => true]),
-            new TwigFilter('length', 'twig_length_filter', ['needs_environment' => true]),
-            new TwigFilter('slice', 'twig_slice', ['needs_environment' => true]),
-            new TwigFilter('first', 'twig_first', ['needs_environment' => true]),
-            new TwigFilter('last', 'twig_last', ['needs_environment' => true]),
-
-            // iteration and runtime
-            new TwigFilter('default', '_twig_default_filter', ['node_class' => '\Twig\Node\Expression\Filter\DefaultFilter']),
-            new TwigFilter('keys', 'twig_get_array_keys_filter'),
-
-            // escaping
-            new TwigFilter('escape', 'twig_escape_filter', ['needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe']),
-            new TwigFilter('e', 'twig_escape_filter', ['needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe']),
-        ];
-
-        if (\function_exists('mb_get_info')) {
-            $filters[] = new TwigFilter('upper', 'twig_upper_filter', ['needs_environment' => true]);
-            $filters[] = new TwigFilter('lower', 'twig_lower_filter', ['needs_environment' => true]);
-        }
-
-        return $filters;
-    }
-
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('max', 'max'),
-            new TwigFunction('min', 'min'),
-            new TwigFunction('range', 'range'),
-            new TwigFunction('constant', 'twig_constant'),
-            new TwigFunction('cycle', 'twig_cycle'),
-            new TwigFunction('random', 'twig_random', ['needs_environment' => true]),
-            new TwigFunction('date', 'twig_date_converter', ['needs_environment' => true]),
-            new TwigFunction('include', 'twig_include', ['needs_environment' => true, 'needs_context' => true, 'is_safe' => ['all']]),
-            new TwigFunction('source', 'twig_source', ['needs_environment' => true, 'is_safe' => ['all']]),
-        ];
-    }
-
-    public function getTests()
-    {
-        return [
-            new TwigTest('even', null, ['node_class' => '\Twig\Node\Expression\Test\EvenTest']),
-            new TwigTest('odd', null, ['node_class' => '\Twig\Node\Expression\Test\OddTest']),
-            new TwigTest('defined', null, ['node_class' => '\Twig\Node\Expression\Test\DefinedTest']),
-            new TwigTest('sameas', null, ['node_class' => '\Twig\Node\Expression\Test\SameasTest', 'deprecated' => '1.21', 'alternative' => 'same as']),
-            new TwigTest('same as', null, ['node_class' => '\Twig\Node\Expression\Test\SameasTest', 'one_mandatory_argument' => true]),
-            new TwigTest('none', null, ['node_class' => '\Twig\Node\Expression\Test\NullTest']),
-            new TwigTest('null', null, ['node_class' => '\Twig\Node\Expression\Test\NullTest']),
-            new TwigTest('divisibleby', null, ['node_class' => '\Twig\Node\Expression\Test\DivisiblebyTest', 'deprecated' => '1.21', 'alternative' => 'divisible by']),
-            new TwigTest('divisible by', null, ['node_class' => '\Twig\Node\Expression\Test\DivisiblebyTest', 'one_mandatory_argument' => true]),
-            new TwigTest('constant', null, ['node_class' => '\Twig\Node\Expression\Test\ConstantTest']),
-            new TwigTest('empty', 'twig_test_empty'),
-            new TwigTest('iterable', 'twig_test_iterable'),
-        ];
-    }
-
-    public function getOperators()
-    {
-        return [
-            [
-                'not' => ['precedence' => 50, 'class' => '\Twig\Node\Expression\Unary\NotUnary'],
-                '-' => ['precedence' => 500, 'class' => '\Twig\Node\Expression\Unary\NegUnary'],
-                '+' => ['precedence' => 500, 'class' => '\Twig\Node\Expression\Unary\PosUnary'],
-            ],
-            [
-                'or' => ['precedence' => 10, 'class' => '\Twig\Node\Expression\Binary\OrBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                'and' => ['precedence' => 15, 'class' => '\Twig\Node\Expression\Binary\AndBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                'b-or' => ['precedence' => 16, 'class' => '\Twig\Node\Expression\Binary\BitwiseOrBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                'b-xor' => ['precedence' => 17, 'class' => '\Twig\Node\Expression\Binary\BitwiseXorBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                'b-and' => ['precedence' => 18, 'class' => '\Twig\Node\Expression\Binary\BitwiseAndBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '==' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\EqualBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '!=' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\NotEqualBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '<' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\LessBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '>' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\GreaterBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '>=' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\GreaterEqualBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '<=' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\LessEqualBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                'not in' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\NotInBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                'in' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\InBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                'matches' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\MatchesBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                'starts with' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\StartsWithBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                'ends with' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\EndsWithBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '..' => ['precedence' => 25, 'class' => '\Twig\Node\Expression\Binary\RangeBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '+' => ['precedence' => 30, 'class' => '\Twig\Node\Expression\Binary\AddBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '-' => ['precedence' => 30, 'class' => '\Twig\Node\Expression\Binary\SubBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '~' => ['precedence' => 40, 'class' => '\Twig\Node\Expression\Binary\ConcatBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '*' => ['precedence' => 60, 'class' => '\Twig\Node\Expression\Binary\MulBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '/' => ['precedence' => 60, 'class' => '\Twig\Node\Expression\Binary\DivBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '//' => ['precedence' => 60, 'class' => '\Twig\Node\Expression\Binary\FloorDivBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '%' => ['precedence' => 60, 'class' => '\Twig\Node\Expression\Binary\ModBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                'is' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                'is not' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT],
-                '**' => ['precedence' => 200, 'class' => '\Twig\Node\Expression\Binary\PowerBinary', 'associativity' => ExpressionParser::OPERATOR_RIGHT],
-                '??' => ['precedence' => 300, 'class' => '\Twig\Node\Expression\NullCoalesceExpression', 'associativity' => ExpressionParser::OPERATOR_RIGHT],
-            ],
-        ];
-    }
-
-    public function getName()
-    {
-        return 'core';
-    }
-}
-
-class_alias('Twig\Extension\CoreExtension', 'Twig_Extension_Core');
-}
-
-namespace {
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Loader\SourceContextLoaderInterface;
-use Twig\Markup;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Node;
-use Twig\Template;
-use Twig\TemplateWrapper;
-
-/**
- * Cycles over a value.
- *
- * @param \ArrayAccess|array $values
- * @param int                $position The cycle position
- *
- * @return string The next value in the cycle
- */
-function twig_cycle($values, $position)
-{
-    if (!\is_array($values) && !$values instanceof \ArrayAccess) {
-        return $values;
-    }
-
-    return $values[$position % \count($values)];
-}
-
-/**
- * Returns a random value depending on the supplied parameter type:
- * - a random item from a \Traversable or array
- * - a random character from a string
- * - a random integer between 0 and the integer parameter.
- *
- * @param \Traversable|array|int|float|string $values The values to pick a random item from
- * @param int|null                            $max    Maximum value used when $values is an int
- *
- * @throws RuntimeError when $values is an empty array (does not apply to an empty string which is returned as is)
- *
- * @return mixed A random value from the given sequence
- */
-function twig_random(Environment $env, $values = null, $max = null)
-{
-    if (null === $values) {
-        return null === $max ? mt_rand() : mt_rand(0, $max);
-    }
-
-    if (\is_int($values) || \is_float($values)) {
-        if (null === $max) {
-            if ($values < 0) {
-                $max = 0;
-                $min = $values;
-            } else {
-                $max = $values;
-                $min = 0;
-            }
-        } else {
-            $min = $values;
-            $max = $max;
-        }
-
-        return mt_rand($min, $max);
-    }
-
-    if (\is_string($values)) {
-        if ('' === $values) {
-            return '';
-        }
-        if (null !== $charset = $env->getCharset()) {
-            if ('UTF-8' !== $charset) {
-                $values = twig_convert_encoding($values, 'UTF-8', $charset);
-            }
-
-            // unicode version of str_split()
-            // split at all positions, but not after the start and not before the end
-            $values = preg_split('/(?<!^)(?!$)/u', $values);
-
-            if ('UTF-8' !== $charset) {
-                foreach ($values as $i => $value) {
-                    $values[$i] = twig_convert_encoding($value, $charset, 'UTF-8');
-                }
-            }
-        } else {
-            return $values[mt_rand(0, \strlen($values) - 1)];
-        }
-    }
-
-    if (!twig_test_iterable($values)) {
-        return $values;
-    }
-
-    $values = twig_to_array($values);
-
-    if (0 === \count($values)) {
-        throw new RuntimeError('The random function cannot pick from an empty array.');
-    }
-
-    return $values[array_rand($values, 1)];
-}
-
-/**
- * Converts a date to the given format.
- *
- *   {{ post.published_at|date("m/d/Y") }}
- *
- * @param \DateTime|\DateTimeInterface|\DateInterval|string $date     A date
- * @param string|null                                       $format   The target format, null to use the default
- * @param \DateTimeZone|string|false|null                   $timezone The target timezone, null to use the default, false to leave unchanged
- *
- * @return string The formatted date
- */
-function twig_date_format_filter(Environment $env, $date, $format = null, $timezone = null)
-{
-    if (null === $format) {
-        $formats = $env->getExtension('\Twig\Extension\CoreExtension')->getDateFormat();
-        $format = $date instanceof \DateInterval ? $formats[1] : $formats[0];
-    }
-
-    if ($date instanceof \DateInterval) {
-        return $date->format($format);
-    }
-
-    return twig_date_converter($env, $date, $timezone)->format($format);
-}
-
-/**
- * Returns a new date object modified.
- *
- *   {{ post.published_at|date_modify("-1day")|date("m/d/Y") }}
- *
- * @param \DateTime|string $date     A date
- * @param string           $modifier A modifier string
- *
- * @return \DateTime
- */
-function twig_date_modify_filter(Environment $env, $date, $modifier)
-{
-    $date = twig_date_converter($env, $date, false);
-    $resultDate = $date->modify($modifier);
-
-    // This is a hack to ensure PHP 5.2 support and support for \DateTimeImmutable
-    // \DateTime::modify does not return the modified \DateTime object < 5.3.0
-    // and \DateTimeImmutable does not modify $date.
-    return null === $resultDate ? $date : $resultDate;
-}
-
-/**
- * Converts an input to a \DateTime instance.
- *
- *    {% if date(user.created_at) < date('+2days') %}
- *      {# do something #}
- *    {% endif %}
- *
- * @param \DateTime|\DateTimeInterface|string|null $date     A date
- * @param \DateTimeZone|string|false|null          $timezone The target timezone, null to use the default, false to leave unchanged
- *
- * @return \DateTimeInterface
- */
-function twig_date_converter(Environment $env, $date = null, $timezone = null)
-{
-    // determine the timezone
-    if (false !== $timezone) {
-        if (null === $timezone) {
-            $timezone = $env->getExtension('\Twig\Extension\CoreExtension')->getTimezone();
-        } elseif (!$timezone instanceof \DateTimeZone) {
-            $timezone = new \DateTimeZone($timezone);
-        }
-    }
-
-    // immutable dates
-    if ($date instanceof \DateTimeImmutable) {
-        return false !== $timezone ? $date->setTimezone($timezone) : $date;
-    }
-
-    if ($date instanceof \DateTime || $date instanceof \DateTimeInterface) {
-        $date = clone $date;
-        if (false !== $timezone) {
-            $date->setTimezone($timezone);
-        }
-
-        return $date;
-    }
-
-    if (null === $date || 'now' === $date) {
-        return new \DateTime($date, false !== $timezone ? $timezone : $env->getExtension('\Twig\Extension\CoreExtension')->getTimezone());
-    }
-
-    $asString = (string) $date;
-    if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) {
-        $date = new \DateTime('@'.$date);
-    } else {
-        $date = new \DateTime($date, $env->getExtension('\Twig\Extension\CoreExtension')->getTimezone());
-    }
-
-    if (false !== $timezone) {
-        $date->setTimezone($timezone);
-    }
-
-    return $date;
-}
-
-/**
- * Replaces strings within a string.
- *
- * @param string             $str  String to replace in
- * @param array|\Traversable $from Replace values
- * @param string|null        $to   Replace to, deprecated (@see https://secure.php.net/manual/en/function.strtr.php)
- *
- * @return string
- */
-function twig_replace_filter($str, $from, $to = null)
-{
-    if (\is_string($from) && \is_string($to)) {
-        @trigger_error('Using "replace" with character by character replacement is deprecated since version 1.22 and will be removed in Twig 2.0', E_USER_DEPRECATED);
-
-        return strtr($str, $from, $to);
-    }
-
-    if (!twig_test_iterable($from)) {
-        throw new RuntimeError(sprintf('The "replace" filter expects an array or "Traversable" as replace values, got "%s".', \is_object($from) ? \get_class($from) : \gettype($from)));
-    }
-
-    return strtr($str, twig_to_array($from));
-}
-
-/**
- * Rounds a number.
- *
- * @param int|float $value     The value to round
- * @param int|float $precision The rounding precision
- * @param string    $method    The method to use for rounding
- *
- * @return int|float The rounded number
- */
-function twig_round($value, $precision = 0, $method = 'common')
-{
-    if ('common' === $method) {
-        return round($value, $precision);
-    }
-
-    if ('ceil' !== $method && 'floor' !== $method) {
-        throw new RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.');
-    }
-
-    return $method($value * 10 ** $precision) / 10 ** $precision;
-}
-
-/**
- * Number format filter.
- *
- * All of the formatting options can be left null, in that case the defaults will
- * be used.  Supplying any of the parameters will override the defaults set in the
- * environment object.
- *
- * @param mixed  $number       A float/int/string of the number to format
- * @param int    $decimal      the number of decimal points to display
- * @param string $decimalPoint the character(s) to use for the decimal point
- * @param string $thousandSep  the character(s) to use for the thousands separator
- *
- * @return string The formatted number
- */
-function twig_number_format_filter(Environment $env, $number, $decimal = null, $decimalPoint = null, $thousandSep = null)
-{
-    $defaults = $env->getExtension('\Twig\Extension\CoreExtension')->getNumberFormat();
-    if (null === $decimal) {
-        $decimal = $defaults[0];
-    }
-
-    if (null === $decimalPoint) {
-        $decimalPoint = $defaults[1];
-    }
-
-    if (null === $thousandSep) {
-        $thousandSep = $defaults[2];
-    }
-
-    return number_format((float) $number, $decimal, $decimalPoint, $thousandSep);
-}
-
-/**
- * URL encodes (RFC 3986) a string as a path segment or an array as a query string.
- *
- * @param string|array $url A URL or an array of query parameters
- *
- * @return string The URL encoded value
- */
-function twig_urlencode_filter($url)
-{
-    if (\is_array($url)) {
-        if (\defined('PHP_QUERY_RFC3986')) {
-            return http_build_query($url, '', '&', PHP_QUERY_RFC3986);
-        }
-
-        return http_build_query($url, '', '&');
-    }
-
-    return rawurlencode($url);
-}
-
-/**
- * JSON encodes a variable.
- *
- * @param mixed $value   the value to encode
- * @param int   $options Bitmask consisting of JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT
- *
- * @return mixed The JSON encoded value
- */
-function twig_jsonencode_filter($value, $options = 0)
-{
-    if ($value instanceof Markup) {
-        $value = (string) $value;
-    } elseif (\is_array($value)) {
-        array_walk_recursive($value, '_twig_markup2string');
-    }
-
-    return json_encode($value, $options);
-}
-
-function _twig_markup2string(&$value)
-{
-    if ($value instanceof Markup) {
-        $value = (string) $value;
-    }
-}
-
-/**
- * Merges an array with another one.
- *
- *  {% set items = { 'apple': 'fruit', 'orange': 'fruit' } %}
- *
- *  {% set items = items|merge({ 'peugeot': 'car' }) %}
- *
- *  {# items now contains { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'car' } #}
- *
- * @param array|\Traversable $arr1 An array
- * @param array|\Traversable $arr2 An array
- *
- * @return array The merged array
- */
-function twig_array_merge($arr1, $arr2)
-{
-    if (!twig_test_iterable($arr1)) {
-        throw new RuntimeError(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($arr1)));
-    }
-
-    if (!twig_test_iterable($arr2)) {
-        throw new RuntimeError(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as second argument.', \gettype($arr2)));
-    }
-
-    return array_merge(twig_to_array($arr1), twig_to_array($arr2));
-}
-
-/**
- * Slices a variable.
- *
- * @param mixed $item         A variable
- * @param int   $start        Start of the slice
- * @param int   $length       Size of the slice
- * @param bool  $preserveKeys Whether to preserve key or not (when the input is an array)
- *
- * @return mixed The sliced variable
- */
-function twig_slice(Environment $env, $item, $start, $length = null, $preserveKeys = false)
-{
-    if ($item instanceof \Traversable) {
-        while ($item instanceof \IteratorAggregate) {
-            $item = $item->getIterator();
-        }
-
-        if ($start >= 0 && $length >= 0 && $item instanceof \Iterator) {
-            try {
-                return iterator_to_array(new \LimitIterator($item, $start, null === $length ? -1 : $length), $preserveKeys);
-            } catch (\OutOfBoundsException $e) {
-                return [];
-            }
-        }
-
-        $item = iterator_to_array($item, $preserveKeys);
-    }
-
-    if (\is_array($item)) {
-        return \array_slice($item, $start, $length, $preserveKeys);
-    }
-
-    $item = (string) $item;
-
-    if (\function_exists('mb_get_info') && null !== $charset = $env->getCharset()) {
-        return (string) mb_substr($item, $start, null === $length ? mb_strlen($item, $charset) - $start : $length, $charset);
-    }
-
-    return (string) (null === $length ? substr($item, $start) : substr($item, $start, $length));
-}
-
-/**
- * Returns the first element of the item.
- *
- * @param mixed $item A variable
- *
- * @return mixed The first element of the item
- */
-function twig_first(Environment $env, $item)
-{
-    $elements = twig_slice($env, $item, 0, 1, false);
-
-    return \is_string($elements) ? $elements : current($elements);
-}
-
-/**
- * Returns the last element of the item.
- *
- * @param mixed $item A variable
- *
- * @return mixed The last element of the item
- */
-function twig_last(Environment $env, $item)
-{
-    $elements = twig_slice($env, $item, -1, 1, false);
-
-    return \is_string($elements) ? $elements : current($elements);
-}
-
-/**
- * Joins the values to a string.
- *
- * The separators between elements are empty strings per default, you can define them with the optional parameters.
- *
- *  {{ [1, 2, 3]|join(', ', ' and ') }}
- *  {# returns 1, 2 and 3 #}
- *
- *  {{ [1, 2, 3]|join('|') }}
- *  {# returns 1|2|3 #}
- *
- *  {{ [1, 2, 3]|join }}
- *  {# returns 123 #}
- *
- * @param array       $value An array
- * @param string      $glue  The separator
- * @param string|null $and   The separator for the last pair
- *
- * @return string The concatenated string
- */
-function twig_join_filter($value, $glue = '', $and = null)
-{
-    if (!twig_test_iterable($value)) {
-        $value = (array) $value;
-    }
-
-    $value = twig_to_array($value, false);
-
-    if (0 === \count($value)) {
-        return '';
-    }
-
-    if (null === $and || $and === $glue) {
-        return implode($glue, $value);
-    }
-
-    if (1 === \count($value)) {
-        return $value[0];
-    }
-
-    return implode($glue, \array_slice($value, 0, -1)).$and.$value[\count($value) - 1];
-}
-
-/**
- * Splits the string into an array.
- *
- *  {{ "one,two,three"|split(',') }}
- *  {# returns [one, two, three] #}
- *
- *  {{ "one,two,three,four,five"|split(',', 3) }}
- *  {# returns [one, two, "three,four,five"] #}
- *
- *  {{ "123"|split('') }}
- *  {# returns [1, 2, 3] #}
- *
- *  {{ "aabbcc"|split('', 2) }}
- *  {# returns [aa, bb, cc] #}
- *
- * @param string $value     A string
- * @param string $delimiter The delimiter
- * @param int    $limit     The limit
- *
- * @return array The split string as an array
- */
-function twig_split_filter(Environment $env, $value, $delimiter, $limit = null)
-{
-    if (\strlen($delimiter) > 0) {
-        return null === $limit ? explode($delimiter, $value) : explode($delimiter, $value, $limit);
-    }
-
-    if (!\function_exists('mb_get_info') || null === $charset = $env->getCharset()) {
-        return str_split($value, null === $limit ? 1 : $limit);
-    }
-
-    if ($limit <= 1) {
-        return preg_split('/(?<!^)(?!$)/u', $value);
-    }
-
-    $length = mb_strlen($value, $charset);
-    if ($length < $limit) {
-        return [$value];
-    }
-
-    $r = [];
-    for ($i = 0; $i < $length; $i += $limit) {
-        $r[] = mb_substr($value, $i, $limit, $charset);
-    }
-
-    return $r;
-}
-
-// The '_default' filter is used internally to avoid using the ternary operator
-// which costs a lot for big contexts (before PHP 5.4). So, on average,
-// a function call is cheaper.
-/**
- * @internal
- */
-function _twig_default_filter($value, $default = '')
-{
-    if (twig_test_empty($value)) {
-        return $default;
-    }
-
-    return $value;
-}
-
-/**
- * Returns the keys for the given array.
- *
- * It is useful when you want to iterate over the keys of an array:
- *
- *  {% for key in array|keys %}
- *      {# ... #}
- *  {% endfor %}
- *
- * @param array $array An array
- *
- * @return array The keys
- */
-function twig_get_array_keys_filter($array)
-{
-    if ($array instanceof \Traversable) {
-        while ($array instanceof \IteratorAggregate) {
-            $array = $array->getIterator();
-        }
-
-        if ($array instanceof \Iterator) {
-            $keys = [];
-            $array->rewind();
-            while ($array->valid()) {
-                $keys[] = $array->key();
-                $array->next();
-            }
-
-            return $keys;
-        }
-
-        $keys = [];
-        foreach ($array as $key => $item) {
-            $keys[] = $key;
-        }
-
-        return $keys;
-    }
-
-    if (!\is_array($array)) {
-        return [];
-    }
-
-    return array_keys($array);
-}
-
-/**
- * Reverses a variable.
- *
- * @param array|\Traversable|string $item         An array, a \Traversable instance, or a string
- * @param bool                      $preserveKeys Whether to preserve key or not
- *
- * @return mixed The reversed input
- */
-function twig_reverse_filter(Environment $env, $item, $preserveKeys = false)
-{
-    if ($item instanceof \Traversable) {
-        return array_reverse(iterator_to_array($item), $preserveKeys);
-    }
-
-    if (\is_array($item)) {
-        return array_reverse($item, $preserveKeys);
-    }
-
-    if (null !== $charset = $env->getCharset()) {
-        $string = (string) $item;
-
-        if ('UTF-8' !== $charset) {
-            $item = twig_convert_encoding($string, 'UTF-8', $charset);
-        }
-
-        preg_match_all('/./us', $item, $matches);
-
-        $string = implode('', array_reverse($matches[0]));
-
-        if ('UTF-8' !== $charset) {
-            $string = twig_convert_encoding($string, $charset, 'UTF-8');
-        }
-
-        return $string;
-    }
-
-    return strrev((string) $item);
-}
-
-/**
- * Sorts an array.
- *
- * @param array|\Traversable $array
- *
- * @return array
- */
-function twig_sort_filter($array)
-{
-    if ($array instanceof \Traversable) {
-        $array = iterator_to_array($array);
-    } elseif (!\is_array($array)) {
-        throw new RuntimeError(sprintf('The sort filter only works with arrays or "Traversable", got "%s".', \gettype($array)));
-    }
-
-    asort($array);
-
-    return $array;
-}
-
-/**
- * @internal
- */
-function twig_in_filter($value, $compare)
-{
-    if ($value instanceof Markup) {
-        $value = (string) $value;
-    }
-    if ($compare instanceof Markup) {
-        $compare = (string) $compare;
-    }
-
-    if (\is_array($compare)) {
-        return \in_array($value, $compare, \is_object($value) || \is_resource($value));
-    } elseif (\is_string($compare) && (\is_string($value) || \is_int($value) || \is_float($value))) {
-        return '' === $value || false !== strpos($compare, (string) $value);
-    } elseif ($compare instanceof \Traversable) {
-        if (\is_object($value) || \is_resource($value)) {
-            foreach ($compare as $item) {
-                if ($item === $value) {
-                    return true;
-                }
-            }
-        } else {
-            foreach ($compare as $item) {
-                if ($item == $value) {
-                    return true;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    return false;
-}
-
-/**
- * Returns a trimmed string.
- *
- * @return string
- *
- * @throws RuntimeError When an invalid trimming side is used (not a string or not 'left', 'right', or 'both')
- */
-function twig_trim_filter($string, $characterMask = null, $side = 'both')
-{
-    if (null === $characterMask) {
-        $characterMask = " \t\n\r\0\x0B";
-    }
-
-    switch ($side) {
-        case 'both':
-            return trim($string, $characterMask);
-        case 'left':
-            return ltrim($string, $characterMask);
-        case 'right':
-            return rtrim($string, $characterMask);
-        default:
-            throw new RuntimeError('Trimming side must be "left", "right" or "both".');
-    }
-}
-
-/**
- * Removes whitespaces between HTML tags.
- *
- * @return string
- */
-function twig_spaceless($content)
-{
-    return trim(preg_replace('/>\s+</', '><', $content));
-}
-
-/**
- * Escapes a string.
- *
- * @param mixed  $string     The value to be escaped
- * @param string $strategy   The escaping strategy
- * @param string $charset    The charset
- * @param bool   $autoescape Whether the function is called by the auto-escaping feature (true) or by the developer (false)
- *
- * @return string
- */
-function twig_escape_filter(Environment $env, $string, $strategy = 'html', $charset = null, $autoescape = false)
-{
-    if ($autoescape && $string instanceof Markup) {
-        return $string;
-    }
-
-    if (!\is_string($string)) {
-        if (\is_object($string) && method_exists($string, '__toString')) {
-            $string = (string) $string;
-        } elseif (\in_array($strategy, ['html', 'js', 'css', 'html_attr', 'url'])) {
-            return $string;
-        }
-    }
-
-    if ('' === $string) {
-        return '';
-    }
-
-    if (null === $charset) {
-        $charset = $env->getCharset();
-    }
-
-    switch ($strategy) {
-        case 'html':
-            // see https://secure.php.net/htmlspecialchars
-
-            // Using a static variable to avoid initializing the array
-            // each time the function is called. Moving the declaration on the
-            // top of the function slow downs other escaping strategies.
-            static $htmlspecialcharsCharsets = [
-                'ISO-8859-1' => true, 'ISO8859-1' => true,
-                'ISO-8859-15' => true, 'ISO8859-15' => true,
-                'utf-8' => true, 'UTF-8' => true,
-                'CP866' => true, 'IBM866' => true, '866' => true,
-                'CP1251' => true, 'WINDOWS-1251' => true, 'WIN-1251' => true,
-                '1251' => true,
-                'CP1252' => true, 'WINDOWS-1252' => true, '1252' => true,
-                'KOI8-R' => true, 'KOI8-RU' => true, 'KOI8R' => true,
-                'BIG5' => true, '950' => true,
-                'GB2312' => true, '936' => true,
-                'BIG5-HKSCS' => true,
-                'SHIFT_JIS' => true, 'SJIS' => true, '932' => true,
-                'EUC-JP' => true, 'EUCJP' => true,
-                'ISO8859-5' => true, 'ISO-8859-5' => true, 'MACROMAN' => true,
-            ];
-
-            if (isset($htmlspecialcharsCharsets[$charset])) {
-                return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset);
-            }
-
-            if (isset($htmlspecialcharsCharsets[strtoupper($charset)])) {
-                // cache the lowercase variant for future iterations
-                $htmlspecialcharsCharsets[$charset] = true;
-
-                return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset);
-            }
-
-            $string = twig_convert_encoding($string, 'UTF-8', $charset);
-            $string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
-
-            return twig_convert_encoding($string, $charset, 'UTF-8');
-
-        case 'js':
-            // escape all non-alphanumeric characters
-            // into their \x or \uHHHH representations
-            if ('UTF-8' !== $charset) {
-                $string = twig_convert_encoding($string, 'UTF-8', $charset);
-            }
-
-            if (!preg_match('//u', $string)) {
-                throw new RuntimeError('The string to escape is not a valid UTF-8 string.');
-            }
-
-            $string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su', '_twig_escape_js_callback', $string);
-
-            if ('UTF-8' !== $charset) {
-                $string = twig_convert_encoding($string, $charset, 'UTF-8');
-            }
-
-            return $string;
-
-        case 'css':
-            if ('UTF-8' !== $charset) {
-                $string = twig_convert_encoding($string, 'UTF-8', $charset);
-            }
-
-            if (!preg_match('//u', $string)) {
-                throw new RuntimeError('The string to escape is not a valid UTF-8 string.');
-            }
-
-            $string = preg_replace_callback('#[^a-zA-Z0-9]#Su', '_twig_escape_css_callback', $string);
-
-            if ('UTF-8' !== $charset) {
-                $string = twig_convert_encoding($string, $charset, 'UTF-8');
-            }
-
-            return $string;
-
-        case 'html_attr':
-            if ('UTF-8' !== $charset) {
-                $string = twig_convert_encoding($string, 'UTF-8', $charset);
-            }
-
-            if (!preg_match('//u', $string)) {
-                throw new RuntimeError('The string to escape is not a valid UTF-8 string.');
-            }
-
-            $string = preg_replace_callback('#[^a-zA-Z0-9,\.\-_]#Su', '_twig_escape_html_attr_callback', $string);
-
-            if ('UTF-8' !== $charset) {
-                $string = twig_convert_encoding($string, $charset, 'UTF-8');
-            }
-
-            return $string;
-
-        case 'url':
-            return rawurlencode($string);
-
-        default:
-            static $escapers;
-
-            if (null === $escapers) {
-                $escapers = $env->getExtension('\Twig\Extension\CoreExtension')->getEscapers();
-            }
-
-            if (isset($escapers[$strategy])) {
-                return \call_user_func($escapers[$strategy], $env, $string, $charset);
-            }
-
-            $validStrategies = implode(', ', array_merge(['html', 'js', 'url', 'css', 'html_attr'], array_keys($escapers)));
-
-            throw new RuntimeError(sprintf('Invalid escaping strategy "%s" (valid ones: %s).', $strategy, $validStrategies));
-    }
-}
-
-/**
- * @internal
- */
-function twig_escape_filter_is_safe(Node $filterArgs)
-{
-    foreach ($filterArgs as $arg) {
-        if ($arg instanceof ConstantExpression) {
-            return [$arg->getAttribute('value')];
-        }
-
-        return [];
-    }
-
-    return ['html'];
-}
-
-if (\function_exists('mb_convert_encoding')) {
-    function twig_convert_encoding($string, $to, $from)
-    {
-        return mb_convert_encoding($string, $to, $from);
-    }
-} elseif (\function_exists('iconv')) {
-    function twig_convert_encoding($string, $to, $from)
-    {
-        return iconv($from, $to, $string);
-    }
-} else {
-    function twig_convert_encoding($string, $to, $from)
-    {
-        throw new RuntimeError('No suitable convert encoding function (use UTF-8 as your encoding or install the iconv or mbstring extension).');
-    }
-}
-
-if (\function_exists('mb_ord')) {
-    function twig_ord($string)
-    {
-        return mb_ord($string, 'UTF-8');
-    }
-} else {
-    function twig_ord($string)
-    {
-        $code = ($string = unpack('C*', substr($string, 0, 4))) ? $string[1] : 0;
-        if (0xF0 <= $code) {
-            return (($code - 0xF0) << 18) + (($string[2] - 0x80) << 12) + (($string[3] - 0x80) << 6) + $string[4] - 0x80;
-        }
-        if (0xE0 <= $code) {
-            return (($code - 0xE0) << 12) + (($string[2] - 0x80) << 6) + $string[3] - 0x80;
-        }
-        if (0xC0 <= $code) {
-            return (($code - 0xC0) << 6) + $string[2] - 0x80;
-        }
-
-        return $code;
-    }
-}
-
-function _twig_escape_js_callback($matches)
-{
-    $char = $matches[0];
-
-    /*
-     * A few characters have short escape sequences in JSON and JavaScript.
-     * Escape sequences supported only by JavaScript, not JSON, are omitted.
-     * \" is also supported but omitted, because the resulting string is not HTML safe.
-     */
-    static $shortMap = [
-        '\\' => '\\\\',
-        '/' => '\\/',
-        "\x08" => '\b',
-        "\x0C" => '\f',
-        "\x0A" => '\n',
-        "\x0D" => '\r',
-        "\x09" => '\t',
-    ];
-
-    if (isset($shortMap[$char])) {
-        return $shortMap[$char];
-    }
-
-    $codepoint = mb_ord($char);
-    if (0x10000 > $codepoint) {
-        return sprintf('\u%04X', $codepoint);
-    }
-
-    // Split characters outside the BMP into surrogate pairs
-    // https://tools.ietf.org/html/rfc2781.html#section-2.1
-    $u = $codepoint - 0x10000;
-    $high = 0xD800 | ($u >> 10);
-    $low = 0xDC00 | ($u & 0x3FF);
-
-    return sprintf('\u%04X\u%04X', $high, $low);
-}
-
-function _twig_escape_css_callback($matches)
-{
-    $char = $matches[0];
-
-    return sprintf('\\%X ', 1 === \strlen($char) ? \ord($char) : twig_ord($char));
-}
-
-/**
- * This function is adapted from code coming from Zend Framework.
- *
- * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (https://www.zend.com)
- * @license   https://framework.zend.com/license/new-bsd New BSD License
- */
-function _twig_escape_html_attr_callback($matches)
-{
-    $chr = $matches[0];
-    $ord = \ord($chr);
-
-    /*
-     * The following replaces characters undefined in HTML with the
-     * hex entity for the Unicode replacement character.
-     */
-    if (($ord <= 0x1f && "\t" != $chr && "\n" != $chr && "\r" != $chr) || ($ord >= 0x7f && $ord <= 0x9f)) {
-        return '&#xFFFD;';
-    }
-
-    /*
-     * Check if the current character to escape has a name entity we should
-     * replace it with while grabbing the hex value of the character.
-     */
-    if (1 == \strlen($chr)) {
-        /*
-         * While HTML supports far more named entities, the lowest common denominator
-         * has become HTML5's XML Serialisation which is restricted to the those named
-         * entities that XML supports. Using HTML entities would result in this error:
-         *     XML Parsing Error: undefined entity
-         */
-        static $entityMap = [
-            34 => '&quot;', /* quotation mark */
-            38 => '&amp;',  /* ampersand */
-            60 => '&lt;',   /* less-than sign */
-            62 => '&gt;',   /* greater-than sign */
-        ];
-
-        if (isset($entityMap[$ord])) {
-            return $entityMap[$ord];
-        }
-
-        return sprintf('&#x%02X;', $ord);
-    }
-
-    /*
-     * Per OWASP recommendations, we'll use hex entities for any other
-     * characters where a named entity does not exist.
-     */
-    return sprintf('&#x%04X;', twig_ord($chr));
-}
-
-// add multibyte extensions if possible
-if (\function_exists('mb_get_info')) {
-    /**
-     * Returns the length of a variable.
-     *
-     * @param mixed $thing A variable
-     *
-     * @return int The length of the value
-     */
-    function twig_length_filter(Environment $env, $thing)
-    {
-        if (null === $thing) {
-            return 0;
-        }
-
-        if (is_scalar($thing)) {
-            return mb_strlen($thing, $env->getCharset());
-        }
-
-        if ($thing instanceof \Countable || \is_array($thing) || $thing instanceof \SimpleXMLElement) {
-            return \count($thing);
-        }
-
-        if ($thing instanceof \Traversable) {
-            return iterator_count($thing);
-        }
-
-        if (\is_object($thing) && method_exists($thing, '__toString')) {
-            return mb_strlen((string) $thing, $env->getCharset());
-        }
-
-        return 1;
-    }
-
-    /**
-     * Converts a string to uppercase.
-     *
-     * @param string $string A string
-     *
-     * @return string The uppercased string
-     */
-    function twig_upper_filter(Environment $env, $string)
-    {
-        if (null !== $charset = $env->getCharset()) {
-            return mb_strtoupper($string, $charset);
-        }
-
-        return strtoupper($string);
-    }
-
-    /**
-     * Converts a string to lowercase.
-     *
-     * @param string $string A string
-     *
-     * @return string The lowercased string
-     */
-    function twig_lower_filter(Environment $env, $string)
-    {
-        if (null !== $charset = $env->getCharset()) {
-            return mb_strtolower($string, $charset);
-        }
-
-        return strtolower($string);
-    }
-
-    /**
-     * Returns a titlecased string.
-     *
-     * @param string $string A string
-     *
-     * @return string The titlecased string
-     */
-    function twig_title_string_filter(Environment $env, $string)
-    {
-        if (null !== $charset = $env->getCharset()) {
-            return mb_convert_case($string, MB_CASE_TITLE, $charset);
-        }
-
-        return ucwords(strtolower($string));
-    }
-
-    /**
-     * Returns a capitalized string.
-     *
-     * @param string $string A string
-     *
-     * @return string The capitalized string
-     */
-    function twig_capitalize_string_filter(Environment $env, $string)
-    {
-        if (null !== $charset = $env->getCharset()) {
-            return mb_strtoupper(mb_substr($string, 0, 1, $charset), $charset).mb_strtolower(mb_substr($string, 1, mb_strlen($string, $charset), $charset), $charset);
-        }
-
-        return ucfirst(strtolower($string));
-    }
-}
-// and byte fallback
-else {
-    /**
-     * Returns the length of a variable.
-     *
-     * @param mixed $thing A variable
-     *
-     * @return int The length of the value
-     */
-    function twig_length_filter(Environment $env, $thing)
-    {
-        if (null === $thing) {
-            return 0;
-        }
-
-        if (is_scalar($thing)) {
-            return \strlen($thing);
-        }
-
-        if ($thing instanceof \SimpleXMLElement) {
-            return \count($thing);
-        }
-
-        if (\is_object($thing) && method_exists($thing, '__toString') && !$thing instanceof \Countable) {
-            return \strlen((string) $thing);
-        }
-
-        if ($thing instanceof \Countable || \is_array($thing)) {
-            return \count($thing);
-        }
-
-        if ($thing instanceof \IteratorAggregate) {
-            return iterator_count($thing);
-        }
-
-        return 1;
-    }
-
-    /**
-     * Returns a titlecased string.
-     *
-     * @param string $string A string
-     *
-     * @return string The titlecased string
-     */
-    function twig_title_string_filter(Environment $env, $string)
-    {
-        return ucwords(strtolower($string));
-    }
-
-    /**
-     * Returns a capitalized string.
-     *
-     * @param string $string A string
-     *
-     * @return string The capitalized string
-     */
-    function twig_capitalize_string_filter(Environment $env, $string)
-    {
-        return ucfirst(strtolower($string));
-    }
-}
-
-/**
- * @internal
- */
-function twig_ensure_traversable($seq)
-{
-    if ($seq instanceof \Traversable || \is_array($seq)) {
-        return $seq;
-    }
-
-    return [];
-}
-
-/**
- * @internal
- */
-function twig_to_array($seq, $preserveKeys = true)
-{
-    if ($seq instanceof \Traversable) {
-        return iterator_to_array($seq, $preserveKeys);
-    }
-
-    if (!\is_array($seq)) {
-        return $seq;
-    }
-
-    return $preserveKeys ? $seq : array_values($seq);
-}
-
-/**
- * Checks if a variable is empty.
- *
- *    {# evaluates to true if the foo variable is null, false, or the empty string #}
- *    {% if foo is empty %}
- *        {# ... #}
- *    {% endif %}
- *
- * @param mixed $value A variable
- *
- * @return bool true if the value is empty, false otherwise
- */
-function twig_test_empty($value)
-{
-    if ($value instanceof \Countable) {
-        return 0 === \count($value);
-    }
-
-    if ($value instanceof \Traversable) {
-        return !iterator_count($value);
-    }
-
-    if (\is_object($value) && method_exists($value, '__toString')) {
-        return '' === (string) $value;
-    }
-
-    return '' === $value || false === $value || null === $value || [] === $value;
-}
-
-/**
- * Checks if a variable is traversable.
- *
- *    {# evaluates to true if the foo variable is an array or a traversable object #}
- *    {% if foo is iterable %}
- *        {# ... #}
- *    {% endif %}
- *
- * @param mixed $value A variable
- *
- * @return bool true if the value is traversable
- */
-function twig_test_iterable($value)
-{
-    return $value instanceof \Traversable || \is_array($value);
-}
-
-/**
- * Renders a template.
- *
- * @param array        $context
- * @param string|array $template      The template to render or an array of templates to try consecutively
- * @param array        $variables     The variables to pass to the template
- * @param bool         $withContext
- * @param bool         $ignoreMissing Whether to ignore missing templates or not
- * @param bool         $sandboxed     Whether to sandbox the template or not
- *
- * @return string The rendered template
- */
-function twig_include(Environment $env, $context, $template, $variables = [], $withContext = true, $ignoreMissing = false, $sandboxed = false)
-{
-    $alreadySandboxed = false;
-    $sandbox = null;
-    if ($withContext) {
-        $variables = array_merge($context, $variables);
-    }
-
-    if ($isSandboxed = $sandboxed && $env->hasExtension('\Twig\Extension\SandboxExtension')) {
-        $sandbox = $env->getExtension('\Twig\Extension\SandboxExtension');
-        if (!$alreadySandboxed = $sandbox->isSandboxed()) {
-            $sandbox->enableSandbox();
-        }
-
-        foreach ((\is_array($template) ? $template : [$template]) as $name) {
-            // if a Template instance is passed, it might have been instantiated outside of a sandbox, check security
-            if ($name instanceof TemplateWrapper || $name instanceof Template) {
-                $name->unwrap()->checkSecurity();
-            }
-        }
-    }
-
-    $loaded = null;
-    try {
-        $loaded = $env->resolveTemplate($template);
-    } catch (LoaderError $e) {
-        if (!$ignoreMissing) {
-            if ($isSandboxed && !$alreadySandboxed) {
-                $sandbox->disableSandbox();
-            }
-
-            throw $e;
-        }
-    } catch (\Throwable $e) {
-        if ($isSandboxed && !$alreadySandboxed) {
-            $sandbox->disableSandbox();
-        }
-
-        throw $e;
-    } catch (\Exception $e) {
-        if ($isSandboxed && !$alreadySandboxed) {
-            $sandbox->disableSandbox();
-        }
-
-        throw $e;
-    }
-
-    try {
-        $ret = $loaded ? $loaded->render($variables) : '';
-    } catch (\Exception $e) {
-        if ($isSandboxed && !$alreadySandboxed) {
-            $sandbox->disableSandbox();
-        }
-
-        throw $e;
-    }
-
-    if ($isSandboxed && !$alreadySandboxed) {
-        $sandbox->disableSandbox();
-    }
-
-    return $ret;
-}
-
-/**
- * Returns a template content without rendering it.
- *
- * @param string $name          The template name
- * @param bool   $ignoreMissing Whether to ignore missing templates or not
- *
- * @return string The template source
- */
-function twig_source(Environment $env, $name, $ignoreMissing = false)
-{
-    $loader = $env->getLoader();
-    try {
-        if (!$loader instanceof SourceContextLoaderInterface) {
-            return $loader->getSource($name);
-        } else {
-            return $loader->getSourceContext($name)->getCode();
-        }
-    } catch (LoaderError $e) {
-        if (!$ignoreMissing) {
-            throw $e;
-        }
-    }
-}
-
-/**
- * Provides the ability to get constants from instances as well as class/global constants.
- *
- * @param string      $constant The name of the constant
- * @param object|null $object   The object to get the constant from
- *
- * @return string
- */
-function twig_constant($constant, $object = null)
-{
-    if (null !== $object) {
-        $constant = \get_class($object).'::'.$constant;
-    }
-
-    return \constant($constant);
-}
-
-/**
- * Checks if a constant exists.
- *
- * @param string      $constant The name of the constant
- * @param object|null $object   The object to get the constant from
- *
- * @return bool
- */
-function twig_constant_is_defined($constant, $object = null)
-{
-    if (null !== $object) {
-        $constant = \get_class($object).'::'.$constant;
-    }
-
-    return \defined($constant);
-}
-
-/**
- * Batches item.
- *
- * @param array $items An array of items
- * @param int   $size  The size of the batch
- * @param mixed $fill  A value used to fill missing items
- *
- * @return array
- */
-function twig_array_batch($items, $size, $fill = null, $preserveKeys = true)
-{
-    if (!twig_test_iterable($items)) {
-        throw new RuntimeError(sprintf('The "batch" filter expects an array or "Traversable", got "%s".', \is_object($items) ? \get_class($items) : \gettype($items)));
-    }
-
-    $size = ceil($size);
-
-    $result = array_chunk(twig_to_array($items, $preserveKeys), $size, $preserveKeys);
-
-    if (null !== $fill && $result) {
-        $last = \count($result) - 1;
-        if ($fillCount = $size - \count($result[$last])) {
-            for ($i = 0; $i < $fillCount; ++$i) {
-                $result[$last][] = $fill;
-            }
-        }
-    }
-
-    return $result;
-}
-
-function twig_array_filter(Environment $env, $array, $arrow)
-{
-    if (!twig_test_iterable($array)) {
-        throw new RuntimeError(sprintf('The "filter" filter expects an array or "Traversable", got "%s".', \is_object($array) ? \get_class($array) : \gettype($array)));
-    }
-
-    if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) {
-        throw new RuntimeError('The callable passed to "filter" filter must be a Closure in sandbox mode.');
-    }
-
-    if (\is_array($array)) {
-        if (\PHP_VERSION_ID >= 50600) {
-            return array_filter($array, $arrow, \ARRAY_FILTER_USE_BOTH);
-        }
-
-        return array_filter($array, $arrow);
-    }
-
-    // the IteratorIterator wrapping is needed as some internal PHP classes are \Traversable but do not implement \Iterator
-    return new \CallbackFilterIterator(new \IteratorIterator($array), $arrow);
-}
-
-function twig_array_map(Environment $env, $array, $arrow)
-{
-    if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) {
-        throw new RuntimeError('The callable passed to the "map" filter must be a Closure in sandbox mode.');
-    }
-
-    $r = [];
-    foreach ($array as $k => $v) {
-        $r[$k] = $arrow($v, $k);
-    }
-
-    return $r;
-}
-
-function twig_array_reduce(Environment $env, $array, $arrow, $initial = null)
-{
-    if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) {
-        throw new RuntimeError('The callable passed to the "reduce" filter must be a Closure in sandbox mode.');
-    }
-
-    if (!\is_array($array)) {
-        if (!$array instanceof \Traversable) {
-            throw new RuntimeError(sprintf('The "reduce" filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($array)));
-        }
-
-        $array = iterator_to_array($array);
-    }
-
-    return array_reduce($array, $arrow, $initial);
-}
-}
diff --git a/vendor/twig/twig/src/Extension/DebugExtension.php b/vendor/twig/twig/src/Extension/DebugExtension.php
deleted file mode 100644
index 09b0223e2f7e99be79f561356b91321493918f83..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/DebugExtension.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension {
-use Twig\TwigFunction;
-
-/**
- * @final
- */
-class DebugExtension extends AbstractExtension
-{
-    public function getFunctions()
-    {
-        // dump is safe if var_dump is overridden by xdebug
-        $isDumpOutputHtmlSafe = \extension_loaded('xdebug')
-            // false means that it was not set (and the default is on) or it explicitly enabled
-            && (false === ini_get('xdebug.overload_var_dump') || ini_get('xdebug.overload_var_dump'))
-            // false means that it was not set (and the default is on) or it explicitly enabled
-            // xdebug.overload_var_dump produces HTML only when html_errors is also enabled
-            && (false === ini_get('html_errors') || ini_get('html_errors'))
-            || 'cli' === \PHP_SAPI
-        ;
-
-        return [
-            new TwigFunction('dump', 'twig_var_dump', ['is_safe' => $isDumpOutputHtmlSafe ? ['html'] : [], 'needs_context' => true, 'needs_environment' => true, 'is_variadic' => true]),
-        ];
-    }
-
-    public function getName()
-    {
-        return 'debug';
-    }
-}
-
-class_alias('Twig\Extension\DebugExtension', 'Twig_Extension_Debug');
-}
-
-namespace {
-use Twig\Environment;
-use Twig\Template;
-use Twig\TemplateWrapper;
-
-function twig_var_dump(Environment $env, $context, array $vars = [])
-{
-    if (!$env->isDebug()) {
-        return;
-    }
-
-    ob_start();
-
-    if (!$vars) {
-        $vars = [];
-        foreach ($context as $key => $value) {
-            if (!$value instanceof Template && !$value instanceof TemplateWrapper) {
-                $vars[$key] = $value;
-            }
-        }
-
-        var_dump($vars);
-    } else {
-        foreach ($vars as $var) {
-            var_dump($var);
-        }
-    }
-
-    return ob_get_clean();
-}
-}
diff --git a/vendor/twig/twig/src/Extension/EscaperExtension.php b/vendor/twig/twig/src/Extension/EscaperExtension.php
deleted file mode 100644
index fc7f6dfeeadee5a7e350acf1be5037239b727ea9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/EscaperExtension.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension {
-use Twig\NodeVisitor\EscaperNodeVisitor;
-use Twig\TokenParser\AutoEscapeTokenParser;
-use Twig\TwigFilter;
-
-/**
- * @final
- */
-class EscaperExtension extends AbstractExtension
-{
-    protected $defaultStrategy;
-
-    /**
-     * @param string|false|callable $defaultStrategy An escaping strategy
-     *
-     * @see setDefaultStrategy()
-     */
-    public function __construct($defaultStrategy = 'html')
-    {
-        $this->setDefaultStrategy($defaultStrategy);
-    }
-
-    public function getTokenParsers()
-    {
-        return [new AutoEscapeTokenParser()];
-    }
-
-    public function getNodeVisitors()
-    {
-        return [new EscaperNodeVisitor()];
-    }
-
-    public function getFilters()
-    {
-        return [
-            new TwigFilter('raw', 'twig_raw_filter', ['is_safe' => ['all']]),
-        ];
-    }
-
-    /**
-     * Sets the default strategy to use when not defined by the user.
-     *
-     * The strategy can be a valid PHP callback that takes the template
-     * name as an argument and returns the strategy to use.
-     *
-     * @param string|false|callable $defaultStrategy An escaping strategy
-     */
-    public function setDefaultStrategy($defaultStrategy)
-    {
-        // for BC
-        if (true === $defaultStrategy) {
-            @trigger_error('Using "true" as the default strategy is deprecated since version 1.21. Use "html" instead.', E_USER_DEPRECATED);
-
-            $defaultStrategy = 'html';
-        }
-
-        if ('filename' === $defaultStrategy) {
-            @trigger_error('Using "filename" as the default strategy is deprecated since version 1.27. Use "name" instead.', E_USER_DEPRECATED);
-
-            $defaultStrategy = 'name';
-        }
-
-        if ('name' === $defaultStrategy) {
-            $defaultStrategy = ['\Twig\FileExtensionEscapingStrategy', 'guess'];
-        }
-
-        $this->defaultStrategy = $defaultStrategy;
-    }
-
-    /**
-     * Gets the default strategy to use when not defined by the user.
-     *
-     * @param string $name The template name
-     *
-     * @return string|false The default strategy to use for the template
-     */
-    public function getDefaultStrategy($name)
-    {
-        // disable string callables to avoid calling a function named html or js,
-        // or any other upcoming escaping strategy
-        if (!\is_string($this->defaultStrategy) && false !== $this->defaultStrategy) {
-            return \call_user_func($this->defaultStrategy, $name);
-        }
-
-        return $this->defaultStrategy;
-    }
-
-    public function getName()
-    {
-        return 'escaper';
-    }
-}
-
-class_alias('Twig\Extension\EscaperExtension', 'Twig_Extension_Escaper');
-}
-
-namespace {
-/**
- * Marks a variable as being safe.
- *
- * @param string $string A PHP variable
- *
- * @return string
- */
-function twig_raw_filter($string)
-{
-    return $string;
-}
-}
diff --git a/vendor/twig/twig/src/Extension/ExtensionInterface.php b/vendor/twig/twig/src/Extension/ExtensionInterface.php
deleted file mode 100644
index 72b31e9d1af9da107e299810dbb6a95229abc209..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/ExtensionInterface.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension;
-
-use Twig\Environment;
-use Twig\NodeVisitor\NodeVisitorInterface;
-use Twig\TokenParser\TokenParserInterface;
-use Twig\TwigFilter;
-use Twig\TwigFunction;
-use Twig\TwigTest;
-
-/**
- * Interface implemented by extension classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ExtensionInterface
-{
-    /**
-     * Initializes the runtime environment.
-     *
-     * This is where you can load some file that contains filter functions for instance.
-     *
-     * @deprecated since 1.23 (to be removed in 2.0), implement \Twig_Extension_InitRuntimeInterface instead
-     */
-    public function initRuntime(Environment $environment);
-
-    /**
-     * Returns the token parser instances to add to the existing list.
-     *
-     * @return TokenParserInterface[]
-     */
-    public function getTokenParsers();
-
-    /**
-     * Returns the node visitor instances to add to the existing list.
-     *
-     * @return NodeVisitorInterface[]
-     */
-    public function getNodeVisitors();
-
-    /**
-     * Returns a list of filters to add to the existing list.
-     *
-     * @return TwigFilter[]
-     */
-    public function getFilters();
-
-    /**
-     * Returns a list of tests to add to the existing list.
-     *
-     * @return TwigTest[]
-     */
-    public function getTests();
-
-    /**
-     * Returns a list of functions to add to the existing list.
-     *
-     * @return TwigFunction[]
-     */
-    public function getFunctions();
-
-    /**
-     * Returns a list of operators to add to the existing list.
-     *
-     * @return array<array> First array of unary operators, second array of binary operators
-     */
-    public function getOperators();
-
-    /**
-     * Returns a list of global variables to add to the existing list.
-     *
-     * @return array An array of global variables
-     *
-     * @deprecated since 1.23 (to be removed in 2.0), implement \Twig_Extension_GlobalsInterface instead
-     */
-    public function getGlobals();
-
-    /**
-     * Returns the name of the extension.
-     *
-     * @return string The extension name
-     *
-     * @deprecated since 1.26 (to be removed in 2.0), not used anymore internally
-     */
-    public function getName();
-}
-
-class_alias('Twig\Extension\ExtensionInterface', 'Twig_ExtensionInterface');
-
-// Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name.
-class_exists('Twig\Environment');
diff --git a/vendor/twig/twig/src/Extension/GlobalsInterface.php b/vendor/twig/twig/src/Extension/GlobalsInterface.php
deleted file mode 100644
index 1f54e257245b1e07055e6f1fb77dd163079d87e5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/GlobalsInterface.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension;
-
-/**
- * Enables usage of the deprecated Twig\Extension\AbstractExtension::getGlobals() method.
- *
- * Explicitly implement this interface if you really need to implement the
- * deprecated getGlobals() method in your extensions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface GlobalsInterface
-{
-}
-
-class_alias('Twig\Extension\GlobalsInterface', 'Twig_Extension_GlobalsInterface');
diff --git a/vendor/twig/twig/src/Extension/InitRuntimeInterface.php b/vendor/twig/twig/src/Extension/InitRuntimeInterface.php
deleted file mode 100644
index f71d9cb51dce81ec98fb3e3861b86c817a096847..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/InitRuntimeInterface.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension;
-
-/**
- * Enables usage of the deprecated Twig\Extension\AbstractExtension::initRuntime() method.
- *
- * Explicitly implement this interface if you really need to implement the
- * deprecated initRuntime() method in your extensions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface InitRuntimeInterface
-{
-}
-
-class_alias('Twig\Extension\InitRuntimeInterface', 'Twig_Extension_InitRuntimeInterface');
diff --git a/vendor/twig/twig/src/Extension/OptimizerExtension.php b/vendor/twig/twig/src/Extension/OptimizerExtension.php
deleted file mode 100644
index 3e137409e27ada9541d16810b8f8f803341462ed..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/OptimizerExtension.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension;
-
-use Twig\NodeVisitor\OptimizerNodeVisitor;
-
-/**
- * @final
- */
-class OptimizerExtension extends AbstractExtension
-{
-    protected $optimizers;
-
-    public function __construct($optimizers = -1)
-    {
-        $this->optimizers = $optimizers;
-    }
-
-    public function getNodeVisitors()
-    {
-        return [new OptimizerNodeVisitor($this->optimizers)];
-    }
-
-    public function getName()
-    {
-        return 'optimizer';
-    }
-}
-
-class_alias('Twig\Extension\OptimizerExtension', 'Twig_Extension_Optimizer');
diff --git a/vendor/twig/twig/src/Extension/ProfilerExtension.php b/vendor/twig/twig/src/Extension/ProfilerExtension.php
deleted file mode 100644
index ad494585b6d508b0ff6fb05333b715a9badd15a3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/ProfilerExtension.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension;
-
-use Twig\Profiler\NodeVisitor\ProfilerNodeVisitor;
-use Twig\Profiler\Profile;
-
-class ProfilerExtension extends AbstractExtension
-{
-    private $actives = [];
-
-    public function __construct(Profile $profile)
-    {
-        $this->actives[] = $profile;
-    }
-
-    public function enter(Profile $profile)
-    {
-        $this->actives[0]->addProfile($profile);
-        array_unshift($this->actives, $profile);
-    }
-
-    public function leave(Profile $profile)
-    {
-        $profile->leave();
-        array_shift($this->actives);
-
-        if (1 === \count($this->actives)) {
-            $this->actives[0]->leave();
-        }
-    }
-
-    public function getNodeVisitors()
-    {
-        return [new ProfilerNodeVisitor(static::class)];
-    }
-
-    public function getName()
-    {
-        return 'profiler';
-    }
-}
-
-class_alias('Twig\Extension\ProfilerExtension', 'Twig_Extension_Profiler');
diff --git a/vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php b/vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php
deleted file mode 100644
index 63bc3b1ab10847be082a8d7206fde3c135fef96f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension;
-
-/**
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- */
-interface RuntimeExtensionInterface
-{
-}
diff --git a/vendor/twig/twig/src/Extension/SandboxExtension.php b/vendor/twig/twig/src/Extension/SandboxExtension.php
deleted file mode 100644
index 818c8c94c816aefcd0c55fcfc512272b111c420c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/SandboxExtension.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension;
-
-use Twig\NodeVisitor\SandboxNodeVisitor;
-use Twig\Sandbox\SecurityPolicyInterface;
-use Twig\TokenParser\SandboxTokenParser;
-
-/**
- * @final
- */
-class SandboxExtension extends AbstractExtension
-{
-    protected $sandboxedGlobally;
-    protected $sandboxed;
-    protected $policy;
-
-    public function __construct(SecurityPolicyInterface $policy, $sandboxed = false)
-    {
-        $this->policy = $policy;
-        $this->sandboxedGlobally = $sandboxed;
-    }
-
-    public function getTokenParsers()
-    {
-        return [new SandboxTokenParser()];
-    }
-
-    public function getNodeVisitors()
-    {
-        return [new SandboxNodeVisitor()];
-    }
-
-    public function enableSandbox()
-    {
-        $this->sandboxed = true;
-    }
-
-    public function disableSandbox()
-    {
-        $this->sandboxed = false;
-    }
-
-    public function isSandboxed()
-    {
-        return $this->sandboxedGlobally || $this->sandboxed;
-    }
-
-    public function isSandboxedGlobally()
-    {
-        return $this->sandboxedGlobally;
-    }
-
-    public function setSecurityPolicy(SecurityPolicyInterface $policy)
-    {
-        $this->policy = $policy;
-    }
-
-    public function getSecurityPolicy()
-    {
-        return $this->policy;
-    }
-
-    public function checkSecurity($tags, $filters, $functions)
-    {
-        if ($this->isSandboxed()) {
-            $this->policy->checkSecurity($tags, $filters, $functions);
-        }
-    }
-
-    public function checkMethodAllowed($obj, $method)
-    {
-        if ($this->isSandboxed()) {
-            $this->policy->checkMethodAllowed($obj, $method);
-        }
-    }
-
-    public function checkPropertyAllowed($obj, $method)
-    {
-        if ($this->isSandboxed()) {
-            $this->policy->checkPropertyAllowed($obj, $method);
-        }
-    }
-
-    public function ensureToStringAllowed($obj)
-    {
-        if ($this->isSandboxed() && \is_object($obj) && method_exists($obj, '__toString')) {
-            $this->policy->checkMethodAllowed($obj, '__toString');
-        }
-
-        return $obj;
-    }
-
-    public function getName()
-    {
-        return 'sandbox';
-    }
-}
-
-class_alias('Twig\Extension\SandboxExtension', 'Twig_Extension_Sandbox');
diff --git a/vendor/twig/twig/src/Extension/StagingExtension.php b/vendor/twig/twig/src/Extension/StagingExtension.php
deleted file mode 100644
index 049c5c79775c4d7f1a3b07f3c191978147859cec..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/StagingExtension.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension;
-
-use Twig\NodeVisitor\NodeVisitorInterface;
-use Twig\TokenParser\TokenParserInterface;
-
-/**
- * Internal class.
- *
- * This class is used by \Twig\Environment as a staging area and must not be used directly.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @internal
- */
-class StagingExtension extends AbstractExtension
-{
-    protected $functions = [];
-    protected $filters = [];
-    protected $visitors = [];
-    protected $tokenParsers = [];
-    protected $globals = [];
-    protected $tests = [];
-
-    public function addFunction($name, $function)
-    {
-        if (isset($this->functions[$name])) {
-            @trigger_error(sprintf('Overriding function "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $name), E_USER_DEPRECATED);
-        }
-
-        $this->functions[$name] = $function;
-    }
-
-    public function getFunctions()
-    {
-        return $this->functions;
-    }
-
-    public function addFilter($name, $filter)
-    {
-        if (isset($this->filters[$name])) {
-            @trigger_error(sprintf('Overriding filter "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $name), E_USER_DEPRECATED);
-        }
-
-        $this->filters[$name] = $filter;
-    }
-
-    public function getFilters()
-    {
-        return $this->filters;
-    }
-
-    public function addNodeVisitor(NodeVisitorInterface $visitor)
-    {
-        $this->visitors[] = $visitor;
-    }
-
-    public function getNodeVisitors()
-    {
-        return $this->visitors;
-    }
-
-    public function addTokenParser(TokenParserInterface $parser)
-    {
-        if (isset($this->tokenParsers[$parser->getTag()])) {
-            @trigger_error(sprintf('Overriding tag "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $parser->getTag()), E_USER_DEPRECATED);
-        }
-
-        $this->tokenParsers[$parser->getTag()] = $parser;
-    }
-
-    public function getTokenParsers()
-    {
-        return $this->tokenParsers;
-    }
-
-    public function addGlobal($name, $value)
-    {
-        $this->globals[$name] = $value;
-    }
-
-    public function getGlobals()
-    {
-        return $this->globals;
-    }
-
-    public function addTest($name, $test)
-    {
-        if (isset($this->tests[$name])) {
-            @trigger_error(sprintf('Overriding test "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $name), E_USER_DEPRECATED);
-        }
-
-        $this->tests[$name] = $test;
-    }
-
-    public function getTests()
-    {
-        return $this->tests;
-    }
-
-    public function getName()
-    {
-        return 'staging';
-    }
-}
-
-class_alias('Twig\Extension\StagingExtension', 'Twig_Extension_Staging');
diff --git a/vendor/twig/twig/src/Extension/StringLoaderExtension.php b/vendor/twig/twig/src/Extension/StringLoaderExtension.php
deleted file mode 100644
index 93ac834ac24359365798a69dacc43fd11786f7b7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Extension/StringLoaderExtension.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Extension {
-use Twig\TwigFunction;
-
-/**
- * @final
- */
-class StringLoaderExtension extends AbstractExtension
-{
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('template_from_string', 'twig_template_from_string', ['needs_environment' => true]),
-        ];
-    }
-
-    public function getName()
-    {
-        return 'string_loader';
-    }
-}
-
-class_alias('Twig\Extension\StringLoaderExtension', 'Twig_Extension_StringLoader');
-}
-
-namespace {
-use Twig\Environment;
-use Twig\TemplateWrapper;
-
-/**
- * Loads a template from a string.
- *
- *     {{ include(template_from_string("Hello {{ name }}")) }}
- *
- * @param string $template A template as a string or object implementing __toString()
- * @param string $name     An optional name of the template to be used in error messages
- *
- * @return TemplateWrapper
- */
-function twig_template_from_string(Environment $env, $template, $name = null)
-{
-    return $env->createTemplate((string) $template, $name);
-}
-}
diff --git a/vendor/twig/twig/src/FileExtensionEscapingStrategy.php b/vendor/twig/twig/src/FileExtensionEscapingStrategy.php
deleted file mode 100644
index bc95f33435c8dea866c87b47c5cd428b0b559d89..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/FileExtensionEscapingStrategy.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-/**
- * Default autoescaping strategy based on file names.
- *
- * This strategy sets the HTML as the default autoescaping strategy,
- * but changes it based on the template name.
- *
- * Note that there is no runtime performance impact as the
- * default autoescaping strategy is set at compilation time.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FileExtensionEscapingStrategy
-{
-    /**
-     * Guesses the best autoescaping strategy based on the file name.
-     *
-     * @param string $name The template name
-     *
-     * @return string|false The escaping strategy name to use or false to disable
-     */
-    public static function guess($name)
-    {
-        if (\in_array(substr($name, -1), ['/', '\\'])) {
-            return 'html'; // return html for directories
-        }
-
-        if ('.twig' === substr($name, -5)) {
-            $name = substr($name, 0, -5);
-        }
-
-        $extension = pathinfo($name, PATHINFO_EXTENSION);
-
-        switch ($extension) {
-            case 'js':
-                return 'js';
-
-            case 'css':
-                return 'css';
-
-            case 'txt':
-                return false;
-
-            default:
-                return 'html';
-        }
-    }
-}
-
-class_alias('Twig\FileExtensionEscapingStrategy', 'Twig_FileExtensionEscapingStrategy');
diff --git a/vendor/twig/twig/src/Lexer.php b/vendor/twig/twig/src/Lexer.php
deleted file mode 100644
index 67d94ab927b9323c10e1e13dd3b7c11394fbe95e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Lexer.php
+++ /dev/null
@@ -1,538 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-use Twig\Error\SyntaxError;
-
-/**
- * Lexes a template string.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Lexer implements \Twig_LexerInterface
-{
-    protected $tokens;
-    protected $code;
-    protected $cursor;
-    protected $lineno;
-    protected $end;
-    protected $state;
-    protected $states;
-    protected $brackets;
-    protected $env;
-    // to be renamed to $name in 2.0 (where it is private)
-    protected $filename;
-    protected $options;
-    protected $regexes;
-    protected $position;
-    protected $positions;
-    protected $currentVarBlockLine;
-
-    private $source;
-
-    const STATE_DATA = 0;
-    const STATE_BLOCK = 1;
-    const STATE_VAR = 2;
-    const STATE_STRING = 3;
-    const STATE_INTERPOLATION = 4;
-
-    const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A';
-    const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?([Ee][\+\-][0-9]+)?/A';
-    const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As';
-    const REGEX_DQ_STRING_DELIM = '/"/A';
-    const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As';
-    const PUNCTUATION = '()[]{}?:.,|';
-
-    public function __construct(Environment $env, array $options = [])
-    {
-        $this->env = $env;
-
-        $this->options = array_merge([
-            'tag_comment' => ['{#', '#}'],
-            'tag_block' => ['{%', '%}'],
-            'tag_variable' => ['{{', '}}'],
-            'whitespace_trim' => '-',
-            'whitespace_line_trim' => '~',
-            'whitespace_line_chars' => ' \t\0\x0B',
-            'interpolation' => ['#{', '}'],
-        ], $options);
-
-        // when PHP 7.3 is the min version, we will be able to remove the '#' part in preg_quote as it's part of the default
-        $this->regexes = [
-            // }}
-            'lex_var' => '{
-                \s*
-                (?:'.
-                    preg_quote($this->options['whitespace_trim'].$this->options['tag_variable'][1], '#').'\s*'. // -}}\s*
-                    '|'.
-                    preg_quote($this->options['whitespace_line_trim'].$this->options['tag_variable'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~}}[ \t\0\x0B]*
-                    '|'.
-                    preg_quote($this->options['tag_variable'][1], '#'). // }}
-                ')
-            }Ax',
-
-            // %}
-            'lex_block' => '{
-                \s*
-                (?:'.
-                    preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*\n?'. // -%}\s*\n?
-                    '|'.
-                    preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]*
-                    '|'.
-                    preg_quote($this->options['tag_block'][1], '#').'\n?'. // %}\n?
-                ')
-            }Ax',
-
-            // {% endverbatim %}
-            'lex_raw_data' => '{'.
-                preg_quote($this->options['tag_block'][0], '#'). // {%
-                '('.
-                    $this->options['whitespace_trim']. // -
-                    '|'.
-                    $this->options['whitespace_line_trim']. // ~
-                ')?\s*'.
-                '(?:end%s)'. // endraw or endverbatim
-                '\s*'.
-                '(?:'.
-                    preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*'. // -%}
-                    '|'.
-                    preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]*
-                    '|'.
-                    preg_quote($this->options['tag_block'][1], '#'). // %}
-                ')
-            }sx',
-
-            'operator' => $this->getOperatorRegex(),
-
-            // #}
-            'lex_comment' => '{
-                (?:'.
-                    preg_quote($this->options['whitespace_trim'].$this->options['tag_comment'][1], '#').'\s*\n?'. // -#}\s*\n?
-                    '|'.
-                    preg_quote($this->options['whitespace_line_trim'].$this->options['tag_comment'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~#}[ \t\0\x0B]*
-                    '|'.
-                    preg_quote($this->options['tag_comment'][1], '#').'\n?'. // #}\n?
-                ')
-            }sx',
-
-            // verbatim %}
-            'lex_block_raw' => '{
-                \s*
-                (raw|verbatim)
-                \s*
-                (?:'.
-                    preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*'. // -%}\s*
-                    '|'.
-                    preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]*
-                    '|'.
-                    preg_quote($this->options['tag_block'][1], '#'). // %}
-                ')
-            }Asx',
-
-            'lex_block_line' => '{\s*line\s+(\d+)\s*'.preg_quote($this->options['tag_block'][1], '#').'}As',
-
-            // {{ or {% or {#
-            'lex_tokens_start' => '{
-                ('.
-                    preg_quote($this->options['tag_variable'][0], '#'). // {{
-                    '|'.
-                    preg_quote($this->options['tag_block'][0], '#'). // {%
-                    '|'.
-                    preg_quote($this->options['tag_comment'][0], '#'). // {#
-                ')('.
-                    preg_quote($this->options['whitespace_trim'], '#'). // -
-                    '|'.
-                    preg_quote($this->options['whitespace_line_trim'], '#'). // ~
-                ')?
-            }sx',
-            'interpolation_start' => '{'.preg_quote($this->options['interpolation'][0], '#').'\s*}A',
-            'interpolation_end' => '{\s*'.preg_quote($this->options['interpolation'][1], '#').'}A',
-        ];
-    }
-
-    public function tokenize($code, $name = null)
-    {
-        if (!$code instanceof Source) {
-            @trigger_error(sprintf('Passing a string as the $code argument of %s() is deprecated since version 1.27 and will be removed in 2.0. Pass a \Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED);
-            $this->source = new Source($code, $name);
-        } else {
-            $this->source = $code;
-        }
-
-        if (((int) ini_get('mbstring.func_overload')) & 2) {
-            @trigger_error('Support for having "mbstring.func_overload" different from 0 is deprecated version 1.29 and will be removed in 2.0.', E_USER_DEPRECATED);
-        }
-
-        if (\function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
-            $mbEncoding = mb_internal_encoding();
-            mb_internal_encoding('ASCII');
-        } else {
-            $mbEncoding = null;
-        }
-
-        $this->code = str_replace(["\r\n", "\r"], "\n", $this->source->getCode());
-        $this->filename = $this->source->getName();
-        $this->cursor = 0;
-        $this->lineno = 1;
-        $this->end = \strlen($this->code);
-        $this->tokens = [];
-        $this->state = self::STATE_DATA;
-        $this->states = [];
-        $this->brackets = [];
-        $this->position = -1;
-
-        // find all token starts in one go
-        preg_match_all($this->regexes['lex_tokens_start'], $this->code, $matches, PREG_OFFSET_CAPTURE);
-        $this->positions = $matches;
-
-        while ($this->cursor < $this->end) {
-            // dispatch to the lexing functions depending
-            // on the current state
-            switch ($this->state) {
-                case self::STATE_DATA:
-                    $this->lexData();
-                    break;
-
-                case self::STATE_BLOCK:
-                    $this->lexBlock();
-                    break;
-
-                case self::STATE_VAR:
-                    $this->lexVar();
-                    break;
-
-                case self::STATE_STRING:
-                    $this->lexString();
-                    break;
-
-                case self::STATE_INTERPOLATION:
-                    $this->lexInterpolation();
-                    break;
-            }
-        }
-
-        $this->pushToken(Token::EOF_TYPE);
-
-        if (!empty($this->brackets)) {
-            list($expect, $lineno) = array_pop($this->brackets);
-            throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source);
-        }
-
-        if ($mbEncoding) {
-            mb_internal_encoding($mbEncoding);
-        }
-
-        return new TokenStream($this->tokens, $this->source);
-    }
-
-    protected function lexData()
-    {
-        // if no matches are left we return the rest of the template as simple text token
-        if ($this->position == \count($this->positions[0]) - 1) {
-            $this->pushToken(Token::TEXT_TYPE, substr($this->code, $this->cursor));
-            $this->cursor = $this->end;
-
-            return;
-        }
-
-        // Find the first token after the current cursor
-        $position = $this->positions[0][++$this->position];
-        while ($position[1] < $this->cursor) {
-            if ($this->position == \count($this->positions[0]) - 1) {
-                return;
-            }
-            $position = $this->positions[0][++$this->position];
-        }
-
-        // push the template text first
-        $text = $textContent = substr($this->code, $this->cursor, $position[1] - $this->cursor);
-
-        // trim?
-        if (isset($this->positions[2][$this->position][0])) {
-            if ($this->options['whitespace_trim'] === $this->positions[2][$this->position][0]) {
-                // whitespace_trim detected ({%-, {{- or {#-)
-                $text = rtrim($text);
-            } elseif ($this->options['whitespace_line_trim'] === $this->positions[2][$this->position][0]) {
-                // whitespace_line_trim detected ({%~, {{~ or {#~)
-                // don't trim \r and \n
-                $text = rtrim($text, " \t\0\x0B");
-            }
-        }
-        $this->pushToken(Token::TEXT_TYPE, $text);
-        $this->moveCursor($textContent.$position[0]);
-
-        switch ($this->positions[1][$this->position][0]) {
-            case $this->options['tag_comment'][0]:
-                $this->lexComment();
-                break;
-
-            case $this->options['tag_block'][0]:
-                // raw data?
-                if (preg_match($this->regexes['lex_block_raw'], $this->code, $match, 0, $this->cursor)) {
-                    $this->moveCursor($match[0]);
-                    $this->lexRawData($match[1]);
-                // {% line \d+ %}
-                } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, 0, $this->cursor)) {
-                    $this->moveCursor($match[0]);
-                    $this->lineno = (int) $match[1];
-                } else {
-                    $this->pushToken(Token::BLOCK_START_TYPE);
-                    $this->pushState(self::STATE_BLOCK);
-                    $this->currentVarBlockLine = $this->lineno;
-                }
-                break;
-
-            case $this->options['tag_variable'][0]:
-                $this->pushToken(Token::VAR_START_TYPE);
-                $this->pushState(self::STATE_VAR);
-                $this->currentVarBlockLine = $this->lineno;
-                break;
-        }
-    }
-
-    protected function lexBlock()
-    {
-        if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) {
-            $this->pushToken(Token::BLOCK_END_TYPE);
-            $this->moveCursor($match[0]);
-            $this->popState();
-        } else {
-            $this->lexExpression();
-        }
-    }
-
-    protected function lexVar()
-    {
-        if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) {
-            $this->pushToken(Token::VAR_END_TYPE);
-            $this->moveCursor($match[0]);
-            $this->popState();
-        } else {
-            $this->lexExpression();
-        }
-    }
-
-    protected function lexExpression()
-    {
-        // whitespace
-        if (preg_match('/\s+/A', $this->code, $match, 0, $this->cursor)) {
-            $this->moveCursor($match[0]);
-
-            if ($this->cursor >= $this->end) {
-                throw new SyntaxError(sprintf('Unclosed "%s".', self::STATE_BLOCK === $this->state ? 'block' : 'variable'), $this->currentVarBlockLine, $this->source);
-            }
-        }
-
-        // arrow function
-        if ('=' === $this->code[$this->cursor] && '>' === $this->code[$this->cursor + 1]) {
-            $this->pushToken(Token::ARROW_TYPE, '=>');
-            $this->moveCursor('=>');
-        }
-        // operators
-        elseif (preg_match($this->regexes['operator'], $this->code, $match, 0, $this->cursor)) {
-            $this->pushToken(Token::OPERATOR_TYPE, preg_replace('/\s+/', ' ', $match[0]));
-            $this->moveCursor($match[0]);
-        }
-        // names
-        elseif (preg_match(self::REGEX_NAME, $this->code, $match, 0, $this->cursor)) {
-            $this->pushToken(Token::NAME_TYPE, $match[0]);
-            $this->moveCursor($match[0]);
-        }
-        // numbers
-        elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, 0, $this->cursor)) {
-            $number = (float) $match[0];  // floats
-            if (ctype_digit($match[0]) && $number <= PHP_INT_MAX) {
-                $number = (int) $match[0]; // integers lower than the maximum
-            }
-            $this->pushToken(Token::NUMBER_TYPE, $number);
-            $this->moveCursor($match[0]);
-        }
-        // punctuation
-        elseif (false !== strpos(self::PUNCTUATION, $this->code[$this->cursor])) {
-            // opening bracket
-            if (false !== strpos('([{', $this->code[$this->cursor])) {
-                $this->brackets[] = [$this->code[$this->cursor], $this->lineno];
-            }
-            // closing bracket
-            elseif (false !== strpos(')]}', $this->code[$this->cursor])) {
-                if (empty($this->brackets)) {
-                    throw new SyntaxError(sprintf('Unexpected "%s".', $this->code[$this->cursor]), $this->lineno, $this->source);
-                }
-
-                list($expect, $lineno) = array_pop($this->brackets);
-                if ($this->code[$this->cursor] != strtr($expect, '([{', ')]}')) {
-                    throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source);
-                }
-            }
-
-            $this->pushToken(Token::PUNCTUATION_TYPE, $this->code[$this->cursor]);
-            ++$this->cursor;
-        }
-        // strings
-        elseif (preg_match(self::REGEX_STRING, $this->code, $match, 0, $this->cursor)) {
-            $this->pushToken(Token::STRING_TYPE, stripcslashes(substr($match[0], 1, -1)));
-            $this->moveCursor($match[0]);
-        }
-        // opening double quoted string
-        elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) {
-            $this->brackets[] = ['"', $this->lineno];
-            $this->pushState(self::STATE_STRING);
-            $this->moveCursor($match[0]);
-        }
-        // unlexable
-        else {
-            throw new SyntaxError(sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source);
-        }
-    }
-
-    protected function lexRawData($tag)
-    {
-        if ('raw' === $tag) {
-            @trigger_error(sprintf('Twig Tag "raw" is deprecated since version 1.21. Use "verbatim" instead in %s at line %d.', $this->filename, $this->lineno), E_USER_DEPRECATED);
-        }
-
-        if (!preg_match(str_replace('%s', $tag, $this->regexes['lex_raw_data']), $this->code, $match, PREG_OFFSET_CAPTURE, $this->cursor)) {
-            throw new SyntaxError(sprintf('Unexpected end of file: Unclosed "%s" block.', $tag), $this->lineno, $this->source);
-        }
-
-        $text = substr($this->code, $this->cursor, $match[0][1] - $this->cursor);
-        $this->moveCursor($text.$match[0][0]);
-
-        // trim?
-        if (isset($match[1][0])) {
-            if ($this->options['whitespace_trim'] === $match[1][0]) {
-                // whitespace_trim detected ({%-, {{- or {#-)
-                $text = rtrim($text);
-            } else {
-                // whitespace_line_trim detected ({%~, {{~ or {#~)
-                // don't trim \r and \n
-                $text = rtrim($text, " \t\0\x0B");
-            }
-        }
-
-        $this->pushToken(Token::TEXT_TYPE, $text);
-    }
-
-    protected function lexComment()
-    {
-        if (!preg_match($this->regexes['lex_comment'], $this->code, $match, PREG_OFFSET_CAPTURE, $this->cursor)) {
-            throw new SyntaxError('Unclosed comment.', $this->lineno, $this->source);
-        }
-
-        $this->moveCursor(substr($this->code, $this->cursor, $match[0][1] - $this->cursor).$match[0][0]);
-    }
-
-    protected function lexString()
-    {
-        if (preg_match($this->regexes['interpolation_start'], $this->code, $match, 0, $this->cursor)) {
-            $this->brackets[] = [$this->options['interpolation'][0], $this->lineno];
-            $this->pushToken(Token::INTERPOLATION_START_TYPE);
-            $this->moveCursor($match[0]);
-            $this->pushState(self::STATE_INTERPOLATION);
-        } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, 0, $this->cursor) && \strlen($match[0]) > 0) {
-            $this->pushToken(Token::STRING_TYPE, stripcslashes($match[0]));
-            $this->moveCursor($match[0]);
-        } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) {
-            list($expect, $lineno) = array_pop($this->brackets);
-            if ('"' != $this->code[$this->cursor]) {
-                throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source);
-            }
-
-            $this->popState();
-            ++$this->cursor;
-        } else {
-            // unlexable
-            throw new SyntaxError(sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source);
-        }
-    }
-
-    protected function lexInterpolation()
-    {
-        $bracket = end($this->brackets);
-        if ($this->options['interpolation'][0] === $bracket[0] && preg_match($this->regexes['interpolation_end'], $this->code, $match, 0, $this->cursor)) {
-            array_pop($this->brackets);
-            $this->pushToken(Token::INTERPOLATION_END_TYPE);
-            $this->moveCursor($match[0]);
-            $this->popState();
-        } else {
-            $this->lexExpression();
-        }
-    }
-
-    protected function pushToken($type, $value = '')
-    {
-        // do not push empty text tokens
-        if (Token::TEXT_TYPE === $type && '' === $value) {
-            return;
-        }
-
-        $this->tokens[] = new Token($type, $value, $this->lineno);
-    }
-
-    protected function moveCursor($text)
-    {
-        $this->cursor += \strlen($text);
-        $this->lineno += substr_count($text, "\n");
-    }
-
-    protected function getOperatorRegex()
-    {
-        $operators = array_merge(
-            ['='],
-            array_keys($this->env->getUnaryOperators()),
-            array_keys($this->env->getBinaryOperators())
-        );
-
-        $operators = array_combine($operators, array_map('strlen', $operators));
-        arsort($operators);
-
-        $regex = [];
-        foreach ($operators as $operator => $length) {
-            // an operator that ends with a character must be followed by
-            // a whitespace, a parenthesis, an opening map [ or sequence {
-            $r = preg_quote($operator, '/');
-            if (ctype_alpha($operator[$length - 1])) {
-                $r .= '(?=[\s()\[{])';
-            }
-
-            // an operator that begins with a character must not have a dot or pipe before
-            if (ctype_alpha($operator[0])) {
-                $r = '(?<![\.\|])'.$r;
-            }
-
-            // an operator with a space can be any amount of whitespaces
-            $r = preg_replace('/\s+/', '\s+', $r);
-
-            $regex[] = $r;
-        }
-
-        return '/'.implode('|', $regex).'/A';
-    }
-
-    protected function pushState($state)
-    {
-        $this->states[] = $this->state;
-        $this->state = $state;
-    }
-
-    protected function popState()
-    {
-        if (0 === \count($this->states)) {
-            throw new \LogicException('Cannot pop state without a previous state.');
-        }
-
-        $this->state = array_pop($this->states);
-    }
-}
-
-class_alias('Twig\Lexer', 'Twig_Lexer');
diff --git a/vendor/twig/twig/src/Loader/ArrayLoader.php b/vendor/twig/twig/src/Loader/ArrayLoader.php
deleted file mode 100644
index e2c7b33c22ead274992b96ead30f9ceae4605945..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Loader/ArrayLoader.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Loader;
-
-use Twig\Error\LoaderError;
-use Twig\Source;
-
-/**
- * Loads a template from an array.
- *
- * When using this loader with a cache mechanism, you should know that a new cache
- * key is generated each time a template content "changes" (the cache key being the
- * source code of the template). If you don't want to see your cache grows out of
- * control, you need to take care of clearing the old cache file by yourself.
- *
- * This loader should only be used for unit testing.
- *
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ArrayLoader implements LoaderInterface, ExistsLoaderInterface, SourceContextLoaderInterface
-{
-    protected $templates = [];
-
-    /**
-     * @param array $templates An array of templates (keys are the names, and values are the source code)
-     */
-    public function __construct(array $templates = [])
-    {
-        $this->templates = $templates;
-    }
-
-    /**
-     * Adds or overrides a template.
-     *
-     * @param string $name     The template name
-     * @param string $template The template source
-     */
-    public function setTemplate($name, $template)
-    {
-        $this->templates[(string) $name] = $template;
-    }
-
-    public function getSource($name)
-    {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
-
-        $name = (string) $name;
-        if (!isset($this->templates[$name])) {
-            throw new LoaderError(sprintf('Template "%s" is not defined.', $name));
-        }
-
-        return $this->templates[$name];
-    }
-
-    public function getSourceContext($name)
-    {
-        $name = (string) $name;
-        if (!isset($this->templates[$name])) {
-            throw new LoaderError(sprintf('Template "%s" is not defined.', $name));
-        }
-
-        return new Source($this->templates[$name], $name);
-    }
-
-    public function exists($name)
-    {
-        return isset($this->templates[(string) $name]);
-    }
-
-    public function getCacheKey($name)
-    {
-        $name = (string) $name;
-        if (!isset($this->templates[$name])) {
-            throw new LoaderError(sprintf('Template "%s" is not defined.', $name));
-        }
-
-        return $name.':'.$this->templates[$name];
-    }
-
-    public function isFresh($name, $time)
-    {
-        $name = (string) $name;
-        if (!isset($this->templates[$name])) {
-            throw new LoaderError(sprintf('Template "%s" is not defined.', $name));
-        }
-
-        return true;
-    }
-}
-
-class_alias('Twig\Loader\ArrayLoader', 'Twig_Loader_Array');
diff --git a/vendor/twig/twig/src/Loader/ChainLoader.php b/vendor/twig/twig/src/Loader/ChainLoader.php
deleted file mode 100644
index d1c08670033e4bea78a6f48dc208ae0727124b99..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Loader/ChainLoader.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Loader;
-
-use Twig\Error\LoaderError;
-use Twig\Source;
-
-/**
- * Loads templates from other loaders.
- *
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ChainLoader implements LoaderInterface, ExistsLoaderInterface, SourceContextLoaderInterface
-{
-    private $hasSourceCache = [];
-    protected $loaders = [];
-
-    /**
-     * @param LoaderInterface[] $loaders
-     */
-    public function __construct(array $loaders = [])
-    {
-        foreach ($loaders as $loader) {
-            $this->addLoader($loader);
-        }
-    }
-
-    public function addLoader(LoaderInterface $loader)
-    {
-        $this->loaders[] = $loader;
-        $this->hasSourceCache = [];
-    }
-
-    /**
-     * @return LoaderInterface[]
-     */
-    public function getLoaders()
-    {
-        return $this->loaders;
-    }
-
-    public function getSource($name)
-    {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
-
-        $exceptions = [];
-        foreach ($this->loaders as $loader) {
-            if ($loader instanceof ExistsLoaderInterface && !$loader->exists($name)) {
-                continue;
-            }
-
-            try {
-                return $loader->getSource($name);
-            } catch (LoaderError $e) {
-                $exceptions[] = $e->getMessage();
-            }
-        }
-
-        throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : ''));
-    }
-
-    public function getSourceContext($name)
-    {
-        $exceptions = [];
-        foreach ($this->loaders as $loader) {
-            if ($loader instanceof ExistsLoaderInterface && !$loader->exists($name)) {
-                continue;
-            }
-
-            try {
-                if ($loader instanceof SourceContextLoaderInterface) {
-                    return $loader->getSourceContext($name);
-                }
-
-                return new Source($loader->getSource($name), $name);
-            } catch (LoaderError $e) {
-                $exceptions[] = $e->getMessage();
-            }
-        }
-
-        throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : ''));
-    }
-
-    public function exists($name)
-    {
-        $name = (string) $name;
-
-        if (isset($this->hasSourceCache[$name])) {
-            return $this->hasSourceCache[$name];
-        }
-
-        foreach ($this->loaders as $loader) {
-            if ($loader instanceof ExistsLoaderInterface) {
-                if ($loader->exists($name)) {
-                    return $this->hasSourceCache[$name] = true;
-                }
-
-                continue;
-            }
-
-            try {
-                if ($loader instanceof SourceContextLoaderInterface) {
-                    $loader->getSourceContext($name);
-                } else {
-                    $loader->getSource($name);
-                }
-
-                return $this->hasSourceCache[$name] = true;
-            } catch (LoaderError $e) {
-            }
-        }
-
-        return $this->hasSourceCache[$name] = false;
-    }
-
-    public function getCacheKey($name)
-    {
-        $exceptions = [];
-        foreach ($this->loaders as $loader) {
-            if ($loader instanceof ExistsLoaderInterface && !$loader->exists($name)) {
-                continue;
-            }
-
-            try {
-                return $loader->getCacheKey($name);
-            } catch (LoaderError $e) {
-                $exceptions[] = \get_class($loader).': '.$e->getMessage();
-            }
-        }
-
-        throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : ''));
-    }
-
-    public function isFresh($name, $time)
-    {
-        $exceptions = [];
-        foreach ($this->loaders as $loader) {
-            if ($loader instanceof ExistsLoaderInterface && !$loader->exists($name)) {
-                continue;
-            }
-
-            try {
-                return $loader->isFresh($name, $time);
-            } catch (LoaderError $e) {
-                $exceptions[] = \get_class($loader).': '.$e->getMessage();
-            }
-        }
-
-        throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : ''));
-    }
-}
-
-class_alias('Twig\Loader\ChainLoader', 'Twig_Loader_Chain');
diff --git a/vendor/twig/twig/src/Loader/ExistsLoaderInterface.php b/vendor/twig/twig/src/Loader/ExistsLoaderInterface.php
deleted file mode 100644
index 940d87618c6c45a863a267653bdd4c254f9c0372..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Loader/ExistsLoaderInterface.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Loader;
-
-/**
- * Adds an exists() method for loaders.
- *
- * @author Florin Patan <florinpatan@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface ExistsLoaderInterface
-{
-    /**
-     * Check if we have the source code of a template, given its name.
-     *
-     * @param string $name The name of the template to check if we can load
-     *
-     * @return bool If the template source code is handled by this loader or not
-     */
-    public function exists($name);
-}
-
-class_alias('Twig\Loader\ExistsLoaderInterface', 'Twig_ExistsLoaderInterface');
diff --git a/vendor/twig/twig/src/Loader/FilesystemLoader.php b/vendor/twig/twig/src/Loader/FilesystemLoader.php
deleted file mode 100644
index 54303ffdabfe80211a2a8f8cd2dcee89ef2afe66..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Loader/FilesystemLoader.php
+++ /dev/null
@@ -1,323 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Loader;
-
-use Twig\Error\LoaderError;
-use Twig\Source;
-
-/**
- * Loads template from the filesystem.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FilesystemLoader implements LoaderInterface, ExistsLoaderInterface, SourceContextLoaderInterface
-{
-    /** Identifier of the main namespace. */
-    const MAIN_NAMESPACE = '__main__';
-
-    protected $paths = [];
-    protected $cache = [];
-    protected $errorCache = [];
-
-    private $rootPath;
-
-    /**
-     * @param string|array $paths    A path or an array of paths where to look for templates
-     * @param string|null  $rootPath The root path common to all relative paths (null for getcwd())
-     */
-    public function __construct($paths = [], $rootPath = null)
-    {
-        $this->rootPath = (null === $rootPath ? getcwd() : $rootPath).\DIRECTORY_SEPARATOR;
-        if (false !== $realPath = realpath($rootPath)) {
-            $this->rootPath = $realPath.\DIRECTORY_SEPARATOR;
-        }
-
-        if ($paths) {
-            $this->setPaths($paths);
-        }
-    }
-
-    /**
-     * Returns the paths to the templates.
-     *
-     * @param string $namespace A path namespace
-     *
-     * @return array The array of paths where to look for templates
-     */
-    public function getPaths($namespace = self::MAIN_NAMESPACE)
-    {
-        return isset($this->paths[$namespace]) ? $this->paths[$namespace] : [];
-    }
-
-    /**
-     * Returns the path namespaces.
-     *
-     * The main namespace is always defined.
-     *
-     * @return array The array of defined namespaces
-     */
-    public function getNamespaces()
-    {
-        return array_keys($this->paths);
-    }
-
-    /**
-     * Sets the paths where templates are stored.
-     *
-     * @param string|array $paths     A path or an array of paths where to look for templates
-     * @param string       $namespace A path namespace
-     */
-    public function setPaths($paths, $namespace = self::MAIN_NAMESPACE)
-    {
-        if (!\is_array($paths)) {
-            $paths = [$paths];
-        }
-
-        $this->paths[$namespace] = [];
-        foreach ($paths as $path) {
-            $this->addPath($path, $namespace);
-        }
-    }
-
-    /**
-     * Adds a path where templates are stored.
-     *
-     * @param string $path      A path where to look for templates
-     * @param string $namespace A path namespace
-     *
-     * @throws LoaderError
-     */
-    public function addPath($path, $namespace = self::MAIN_NAMESPACE)
-    {
-        // invalidate the cache
-        $this->cache = $this->errorCache = [];
-
-        $checkPath = $this->isAbsolutePath($path) ? $path : $this->rootPath.$path;
-        if (!is_dir($checkPath)) {
-            throw new LoaderError(sprintf('The "%s" directory does not exist ("%s").', $path, $checkPath));
-        }
-
-        $this->paths[$namespace][] = rtrim($path, '/\\');
-    }
-
-    /**
-     * Prepends a path where templates are stored.
-     *
-     * @param string $path      A path where to look for templates
-     * @param string $namespace A path namespace
-     *
-     * @throws LoaderError
-     */
-    public function prependPath($path, $namespace = self::MAIN_NAMESPACE)
-    {
-        // invalidate the cache
-        $this->cache = $this->errorCache = [];
-
-        $checkPath = $this->isAbsolutePath($path) ? $path : $this->rootPath.$path;
-        if (!is_dir($checkPath)) {
-            throw new LoaderError(sprintf('The "%s" directory does not exist ("%s").', $path, $checkPath));
-        }
-
-        $path = rtrim($path, '/\\');
-
-        if (!isset($this->paths[$namespace])) {
-            $this->paths[$namespace][] = $path;
-        } else {
-            array_unshift($this->paths[$namespace], $path);
-        }
-    }
-
-    public function getSource($name)
-    {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
-
-        if (null === ($path = $this->findTemplate($name)) || false === $path) {
-            return '';
-        }
-
-        return file_get_contents($path);
-    }
-
-    public function getSourceContext($name)
-    {
-        if (null === ($path = $this->findTemplate($name)) || false === $path) {
-            return new Source('', $name, '');
-        }
-
-        return new Source(file_get_contents($path), $name, $path);
-    }
-
-    public function getCacheKey($name)
-    {
-        if (null === ($path = $this->findTemplate($name)) || false === $path) {
-            return '';
-        }
-        $len = \strlen($this->rootPath);
-        if (0 === strncmp($this->rootPath, $path, $len)) {
-            return substr($path, $len);
-        }
-
-        return $path;
-    }
-
-    public function exists($name)
-    {
-        $name = $this->normalizeName($name);
-
-        if (isset($this->cache[$name])) {
-            return true;
-        }
-
-        try {
-            return null !== ($path = $this->findTemplate($name, false)) && false !== $path;
-        } catch (LoaderError $e) {
-            @trigger_error(sprintf('In %s::findTemplate(), you must accept a second argument that when set to "false" returns "false" instead of throwing an exception. Not supporting this argument is deprecated since version 1.27.', static::class), E_USER_DEPRECATED);
-
-            return false;
-        }
-    }
-
-    public function isFresh($name, $time)
-    {
-        // false support to be removed in 3.0
-        if (null === ($path = $this->findTemplate($name)) || false === $path) {
-            return false;
-        }
-
-        return filemtime($path) < $time;
-    }
-
-    /**
-     * Checks if the template can be found.
-     *
-     * @param string $name The template name
-     *
-     * @return string|false|null The template name or false/null
-     */
-    protected function findTemplate($name)
-    {
-        $throw = \func_num_args() > 1 ? func_get_arg(1) : true;
-        $name = $this->normalizeName($name);
-
-        if (isset($this->cache[$name])) {
-            return $this->cache[$name];
-        }
-
-        if (isset($this->errorCache[$name])) {
-            if (!$throw) {
-                return false;
-            }
-
-            throw new LoaderError($this->errorCache[$name]);
-        }
-
-        try {
-            $this->validateName($name);
-
-            list($namespace, $shortname) = $this->parseName($name);
-        } catch (LoaderError $e) {
-            if (!$throw) {
-                return false;
-            }
-
-            throw $e;
-        }
-
-        if (!isset($this->paths[$namespace])) {
-            $this->errorCache[$name] = sprintf('There are no registered paths for namespace "%s".', $namespace);
-
-            if (!$throw) {
-                return false;
-            }
-
-            throw new LoaderError($this->errorCache[$name]);
-        }
-
-        foreach ($this->paths[$namespace] as $path) {
-            if (!$this->isAbsolutePath($path)) {
-                $path = $this->rootPath.$path;
-            }
-
-            if (is_file($path.'/'.$shortname)) {
-                if (false !== $realpath = realpath($path.'/'.$shortname)) {
-                    return $this->cache[$name] = $realpath;
-                }
-
-                return $this->cache[$name] = $path.'/'.$shortname;
-            }
-        }
-
-        $this->errorCache[$name] = sprintf('Unable to find template "%s" (looked into: %s).', $name, implode(', ', $this->paths[$namespace]));
-
-        if (!$throw) {
-            return false;
-        }
-
-        throw new LoaderError($this->errorCache[$name]);
-    }
-
-    protected function parseName($name, $default = self::MAIN_NAMESPACE)
-    {
-        if (isset($name[0]) && '@' == $name[0]) {
-            if (false === $pos = strpos($name, '/')) {
-                throw new LoaderError(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name));
-            }
-
-            $namespace = substr($name, 1, $pos - 1);
-            $shortname = substr($name, $pos + 1);
-
-            return [$namespace, $shortname];
-        }
-
-        return [$default, $name];
-    }
-
-    protected function normalizeName($name)
-    {
-        return preg_replace('#/{2,}#', '/', str_replace('\\', '/', (string) $name));
-    }
-
-    protected function validateName($name)
-    {
-        if (false !== strpos($name, "\0")) {
-            throw new LoaderError('A template name cannot contain NUL bytes.');
-        }
-
-        $name = ltrim($name, '/');
-        $parts = explode('/', $name);
-        $level = 0;
-        foreach ($parts as $part) {
-            if ('..' === $part) {
-                --$level;
-            } elseif ('.' !== $part) {
-                ++$level;
-            }
-
-            if ($level < 0) {
-                throw new LoaderError(sprintf('Looks like you try to load a template outside configured directories (%s).', $name));
-            }
-        }
-    }
-
-    private function isAbsolutePath($file)
-    {
-        return strspn($file, '/\\', 0, 1)
-            || (\strlen($file) > 3 && ctype_alpha($file[0])
-                && ':' === substr($file, 1, 1)
-                && strspn($file, '/\\', 2, 1)
-            )
-            || null !== parse_url($file, PHP_URL_SCHEME)
-        ;
-    }
-}
-
-class_alias('Twig\Loader\FilesystemLoader', 'Twig_Loader_Filesystem');
diff --git a/vendor/twig/twig/src/Loader/LoaderInterface.php b/vendor/twig/twig/src/Loader/LoaderInterface.php
deleted file mode 100644
index 15be7a88cd00b075bcbb44d1233d69df98be2609..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Loader/LoaderInterface.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Loader;
-
-use Twig\Error\LoaderError;
-
-/**
- * Interface all loaders must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface LoaderInterface
-{
-    /**
-     * Gets the source code of a template, given its name.
-     *
-     * @param string $name The name of the template to load
-     *
-     * @return string The template source code
-     *
-     * @throws LoaderError When $name is not found
-     *
-     * @deprecated since 1.27 (to be removed in 2.0), implement Twig\Loader\SourceContextLoaderInterface
-     */
-    public function getSource($name);
-
-    /**
-     * Gets the cache key to use for the cache for a given template name.
-     *
-     * @param string $name The name of the template to load
-     *
-     * @return string The cache key
-     *
-     * @throws LoaderError When $name is not found
-     */
-    public function getCacheKey($name);
-
-    /**
-     * Returns true if the template is still fresh.
-     *
-     * @param string $name The template name
-     * @param int    $time Timestamp of the last modification time of the
-     *                     cached template
-     *
-     * @return bool true if the template is fresh, false otherwise
-     *
-     * @throws LoaderError When $name is not found
-     */
-    public function isFresh($name, $time);
-}
-
-class_alias('Twig\Loader\LoaderInterface', 'Twig_LoaderInterface');
diff --git a/vendor/twig/twig/src/Loader/SourceContextLoaderInterface.php b/vendor/twig/twig/src/Loader/SourceContextLoaderInterface.php
deleted file mode 100644
index 78b1fcd40e480c0bb9861bf770bf123d8fdc5866..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Loader/SourceContextLoaderInterface.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Loader;
-
-use Twig\Error\LoaderError;
-use Twig\Source;
-
-/**
- * Adds a getSourceContext() method for loaders.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.27 (to be removed in 3.0)
- */
-interface SourceContextLoaderInterface
-{
-    /**
-     * Returns the source context for a given template logical name.
-     *
-     * @param string $name The template logical name
-     *
-     * @return Source
-     *
-     * @throws LoaderError When $name is not found
-     */
-    public function getSourceContext($name);
-}
-
-class_alias('Twig\Loader\SourceContextLoaderInterface', 'Twig_SourceContextLoaderInterface');
diff --git a/vendor/twig/twig/src/Markup.php b/vendor/twig/twig/src/Markup.php
deleted file mode 100644
index 107941cdf71425e14a4473bcb5896f43d4ad0b05..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Markup.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-/**
- * Marks a content as safe.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Markup implements \Countable
-{
-    protected $content;
-    protected $charset;
-
-    public function __construct($content, $charset)
-    {
-        $this->content = (string) $content;
-        $this->charset = $charset;
-    }
-
-    public function __toString()
-    {
-        return $this->content;
-    }
-
-    public function count()
-    {
-        return \function_exists('mb_get_info') ? mb_strlen($this->content, $this->charset) : \strlen($this->content);
-    }
-}
-
-class_alias('Twig\Markup', 'Twig_Markup');
diff --git a/vendor/twig/twig/src/Node/AutoEscapeNode.php b/vendor/twig/twig/src/Node/AutoEscapeNode.php
deleted file mode 100644
index a9403066aea798e776b059abacd0755104f9d870..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/AutoEscapeNode.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * Represents an autoescape node.
- *
- * The value is the escaping strategy (can be html, js, ...)
- *
- * The true value is equivalent to html.
- *
- * If autoescaping is disabled, then the value is false.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AutoEscapeNode extends Node
-{
-    public function __construct($value, \Twig_NodeInterface $body, $lineno, $tag = 'autoescape')
-    {
-        parent::__construct(['body' => $body], ['value' => $value], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->subcompile($this->getNode('body'));
-    }
-}
-
-class_alias('Twig\Node\AutoEscapeNode', 'Twig_Node_AutoEscape');
diff --git a/vendor/twig/twig/src/Node/BlockNode.php b/vendor/twig/twig/src/Node/BlockNode.php
deleted file mode 100644
index 1ffc8ca78a60c73ac562a07ec63fdb489d5a757e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/BlockNode.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * Represents a block node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class BlockNode extends Node
-{
-    public function __construct($name, \Twig_NodeInterface $body, $lineno, $tag = null)
-    {
-        parent::__construct(['body' => $body], ['name' => $name], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write(sprintf("public function block_%s(\$context, array \$blocks = [])\n", $this->getAttribute('name')), "{\n")
-            ->indent()
-        ;
-
-        $compiler
-            ->subcompile($this->getNode('body'))
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\BlockNode', 'Twig_Node_Block');
diff --git a/vendor/twig/twig/src/Node/BlockReferenceNode.php b/vendor/twig/twig/src/Node/BlockReferenceNode.php
deleted file mode 100644
index de069093f6611daabfc4e162405c2f6d31a64d31..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/BlockReferenceNode.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * Represents a block call node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class BlockReferenceNode extends Node implements NodeOutputInterface
-{
-    public function __construct($name, $lineno, $tag = null)
-    {
-        parent::__construct([], ['name' => $name], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name')))
-        ;
-    }
-}
-
-class_alias('Twig\Node\BlockReferenceNode', 'Twig_Node_BlockReference');
diff --git a/vendor/twig/twig/src/Node/BodyNode.php b/vendor/twig/twig/src/Node/BodyNode.php
deleted file mode 100644
index 5290be56db6739abb0bd41032300c18f4d4cfa58..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/BodyNode.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-/**
- * Represents a body node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class BodyNode extends Node
-{
-}
-
-class_alias('Twig\Node\BodyNode', 'Twig_Node_Body');
diff --git a/vendor/twig/twig/src/Node/CheckSecurityCallNode.php b/vendor/twig/twig/src/Node/CheckSecurityCallNode.php
deleted file mode 100644
index a78a38d80bbf1374733e9f4f4d855a985f014f63..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/CheckSecurityCallNode.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class CheckSecurityCallNode extends Node
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->write("\$this->sandbox = \$this->env->getExtension('\Twig\Extension\SandboxExtension');\n")
-            ->write("\$this->checkSecurity();\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/src/Node/CheckSecurityNode.php b/vendor/twig/twig/src/Node/CheckSecurityNode.php
deleted file mode 100644
index 5a5ae63dd6dc127d0704d12cd83c9aa83ec94920..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/CheckSecurityNode.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class CheckSecurityNode extends Node
-{
-    protected $usedFilters;
-    protected $usedTags;
-    protected $usedFunctions;
-
-    public function __construct(array $usedFilters, array $usedTags, array $usedFunctions)
-    {
-        $this->usedFilters = $usedFilters;
-        $this->usedTags = $usedTags;
-        $this->usedFunctions = $usedFunctions;
-
-        parent::__construct();
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $tags = $filters = $functions = [];
-        foreach (['tags', 'filters', 'functions'] as $type) {
-            foreach ($this->{'used'.ucfirst($type)} as $name => $node) {
-                if ($node instanceof Node) {
-                    ${$type}[$name] = $node->getTemplateLine();
-                } else {
-                    ${$type}[$node] = null;
-                }
-            }
-        }
-
-        $compiler
-            ->write("\n")
-            ->write("public function checkSecurity()\n")
-            ->write("{\n")
-            ->indent()
-            ->write('static $tags = ')->repr(array_filter($tags))->raw(";\n")
-            ->write('static $filters = ')->repr(array_filter($filters))->raw(";\n")
-            ->write('static $functions = ')->repr(array_filter($functions))->raw(";\n\n")
-            ->write("try {\n")
-            ->indent()
-            ->write("\$this->sandbox->checkSecurity(\n")
-            ->indent()
-            ->write(!$tags ? "[],\n" : "['".implode("', '", array_keys($tags))."'],\n")
-            ->write(!$filters ? "[],\n" : "['".implode("', '", array_keys($filters))."'],\n")
-            ->write(!$functions ? "[]\n" : "['".implode("', '", array_keys($functions))."']\n")
-            ->outdent()
-            ->write(");\n")
-            ->outdent()
-            ->write("} catch (SecurityError \$e) {\n")
-            ->indent()
-            ->write("\$e->setSourceContext(\$this->getSourceContext());\n\n")
-            ->write("if (\$e instanceof SecurityNotAllowedTagError && isset(\$tags[\$e->getTagName()])) {\n")
-            ->indent()
-            ->write("\$e->setTemplateLine(\$tags[\$e->getTagName()]);\n")
-            ->outdent()
-            ->write("} elseif (\$e instanceof SecurityNotAllowedFilterError && isset(\$filters[\$e->getFilterName()])) {\n")
-            ->indent()
-            ->write("\$e->setTemplateLine(\$filters[\$e->getFilterName()]);\n")
-            ->outdent()
-            ->write("} elseif (\$e instanceof SecurityNotAllowedFunctionError && isset(\$functions[\$e->getFunctionName()])) {\n")
-            ->indent()
-            ->write("\$e->setTemplateLine(\$functions[\$e->getFunctionName()]);\n")
-            ->outdent()
-            ->write("}\n\n")
-            ->write("throw \$e;\n")
-            ->outdent()
-            ->write("}\n\n")
-            ->outdent()
-            ->write("}\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\CheckSecurityNode', 'Twig_Node_CheckSecurity');
diff --git a/vendor/twig/twig/src/Node/CheckToStringNode.php b/vendor/twig/twig/src/Node/CheckToStringNode.php
deleted file mode 100644
index 5d67467916eef2a34f76180701505f2b6e17a4b9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/CheckToStringNode.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-
-/**
- * Checks if casting an expression to __toString() is allowed by the sandbox.
- *
- * For instance, when there is a simple Print statement, like {{ article }},
- * and if the sandbox is enabled, we need to check that the __toString()
- * method is allowed if 'article' is an object. The same goes for {{ article|upper }}
- * or {{ random(article) }}
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class CheckToStringNode extends AbstractExpression
-{
-    public function __construct(AbstractExpression $expr)
-    {
-        parent::__construct(['expr' => $expr], [], $expr->getTemplateLine(), $expr->getNodeTag());
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('$this->sandbox->ensureToStringAllowed(')
-            ->subcompile($this->getNode('expr'))
-            ->raw(')')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/src/Node/DeprecatedNode.php b/vendor/twig/twig/src/Node/DeprecatedNode.php
deleted file mode 100644
index 62c0dd4ba51ab61cea0295a4c46e65806c687901..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/DeprecatedNode.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\Expression\ConstantExpression;
-
-/**
- * Represents a deprecated node.
- *
- * @author Yonel Ceruto <yonelceruto@gmail.com>
- */
-class DeprecatedNode extends Node
-{
-    public function __construct(AbstractExpression $expr, $lineno, $tag = null)
-    {
-        parent::__construct(['expr' => $expr], [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->addDebugInfo($this);
-
-        $expr = $this->getNode('expr');
-
-        if ($expr instanceof ConstantExpression) {
-            $compiler->write('@trigger_error(')
-                ->subcompile($expr);
-        } else {
-            $varName = $compiler->getVarName();
-            $compiler->write(sprintf('$%s = ', $varName))
-                ->subcompile($expr)
-                ->raw(";\n")
-                ->write(sprintf('@trigger_error($%s', $varName));
-        }
-
-        $compiler
-            ->raw('.')
-            ->string(sprintf(' ("%s" at line %d).', $this->getTemplateName(), $this->getTemplateLine()))
-            ->raw(", E_USER_DEPRECATED);\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\DeprecatedNode', 'Twig_Node_Deprecated');
diff --git a/vendor/twig/twig/src/Node/DoNode.php b/vendor/twig/twig/src/Node/DoNode.php
deleted file mode 100644
index 80c4cea79ec3b914d3297595011012cc98f4f9a8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/DoNode.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-
-/**
- * Represents a do node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class DoNode extends Node
-{
-    public function __construct(AbstractExpression $expr, $lineno, $tag = null)
-    {
-        parent::__construct(['expr' => $expr], [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write('')
-            ->subcompile($this->getNode('expr'))
-            ->raw(";\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\DoNode', 'Twig_Node_Do');
diff --git a/vendor/twig/twig/src/Node/EmbedNode.php b/vendor/twig/twig/src/Node/EmbedNode.php
deleted file mode 100644
index dde3db1bd39bc1fb4932f66952104f3b2e1d12a9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/EmbedNode.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\Expression\ConstantExpression;
-
-/**
- * Represents an embed node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class EmbedNode extends IncludeNode
-{
-    // we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module)
-    public function __construct($name, $index, ?AbstractExpression $variables, $only, $ignoreMissing, $lineno, $tag = null)
-    {
-        parent::__construct(new ConstantExpression('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag);
-
-        $this->setAttribute('name', $name);
-        // to be removed in 2.0, used name instead
-        $this->setAttribute('filename', $name);
-        $this->setAttribute('index', $index);
-    }
-
-    protected function addGetTemplate(Compiler $compiler)
-    {
-        $compiler
-            ->write('$this->loadTemplate(')
-            ->string($this->getAttribute('name'))
-            ->raw(', ')
-            ->repr($this->getTemplateName())
-            ->raw(', ')
-            ->repr($this->getTemplateLine())
-            ->raw(', ')
-            ->string($this->getAttribute('index'))
-            ->raw(')')
-        ;
-    }
-}
-
-class_alias('Twig\Node\EmbedNode', 'Twig_Node_Embed');
diff --git a/vendor/twig/twig/src/Node/Expression/AbstractExpression.php b/vendor/twig/twig/src/Node/Expression/AbstractExpression.php
deleted file mode 100644
index a3528924ca044c8f00f15279221570a3d20dfd62..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/AbstractExpression.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Node\Node;
-
-/**
- * Abstract class for all nodes that represents an expression.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class AbstractExpression extends Node
-{
-}
-
-class_alias('Twig\Node\Expression\AbstractExpression', 'Twig_Node_Expression');
diff --git a/vendor/twig/twig/src/Node/Expression/ArrayExpression.php b/vendor/twig/twig/src/Node/Expression/ArrayExpression.php
deleted file mode 100644
index cd63f934e4febdcb75680fe551af61927e5453e1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/ArrayExpression.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-
-class ArrayExpression extends AbstractExpression
-{
-    protected $index;
-
-    public function __construct(array $elements, $lineno)
-    {
-        parent::__construct($elements, [], $lineno);
-
-        $this->index = -1;
-        foreach ($this->getKeyValuePairs() as $pair) {
-            if ($pair['key'] instanceof ConstantExpression && ctype_digit((string) $pair['key']->getAttribute('value')) && $pair['key']->getAttribute('value') > $this->index) {
-                $this->index = $pair['key']->getAttribute('value');
-            }
-        }
-    }
-
-    public function getKeyValuePairs()
-    {
-        $pairs = [];
-
-        foreach (array_chunk($this->nodes, 2) as $pair) {
-            $pairs[] = [
-                'key' => $pair[0],
-                'value' => $pair[1],
-            ];
-        }
-
-        return $pairs;
-    }
-
-    public function hasElement(AbstractExpression $key)
-    {
-        foreach ($this->getKeyValuePairs() as $pair) {
-            // we compare the string representation of the keys
-            // to avoid comparing the line numbers which are not relevant here.
-            if ((string) $key === (string) $pair['key']) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    public function addElement(AbstractExpression $value, AbstractExpression $key = null)
-    {
-        if (null === $key) {
-            $key = new ConstantExpression(++$this->index, $value->getTemplateLine());
-        }
-
-        array_push($this->nodes, $key, $value);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->raw('[');
-        $first = true;
-        foreach ($this->getKeyValuePairs() as $pair) {
-            if (!$first) {
-                $compiler->raw(', ');
-            }
-            $first = false;
-
-            $compiler
-                ->subcompile($pair['key'])
-                ->raw(' => ')
-                ->subcompile($pair['value'])
-            ;
-        }
-        $compiler->raw(']');
-    }
-}
-
-class_alias('Twig\Node\Expression\ArrayExpression', 'Twig_Node_Expression_Array');
diff --git a/vendor/twig/twig/src/Node/Expression/ArrowFunctionExpression.php b/vendor/twig/twig/src/Node/Expression/ArrowFunctionExpression.php
deleted file mode 100644
index 36b77da86f58d913b727de91feebc991f9c2d7ac..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/ArrowFunctionExpression.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-use Twig\Node\Node;
-
-/**
- * Represents an arrow function.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ArrowFunctionExpression extends AbstractExpression
-{
-    public function __construct(AbstractExpression $expr, Node $names, $lineno, $tag = null)
-    {
-        parent::__construct(['expr' => $expr, 'names' => $names], [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->raw('function (')
-        ;
-        foreach ($this->getNode('names') as $i => $name) {
-            if ($i) {
-                $compiler->raw(', ');
-            }
-
-            $compiler
-                ->raw('$__')
-                ->raw($name->getAttribute('name'))
-                ->raw('__')
-            ;
-        }
-        $compiler
-            ->raw(') use ($context) { ')
-        ;
-        foreach ($this->getNode('names') as $name) {
-            $compiler
-                ->raw('$context["')
-                ->raw($name->getAttribute('name'))
-                ->raw('"] = $__')
-                ->raw($name->getAttribute('name'))
-                ->raw('__; ')
-            ;
-        }
-        $compiler
-            ->raw('return ')
-            ->subcompile($this->getNode('expr'))
-            ->raw('; }')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php b/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php
deleted file mode 100644
index 62c4ac0b48fbeb696df55a12a8b6c90581b57315..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-
-class AssignNameExpression extends NameExpression
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('$context[')
-            ->string($this->getAttribute('name'))
-            ->raw(']')
-        ;
-    }
-}
-
-class_alias('Twig\Node\Expression\AssignNameExpression', 'Twig_Node_Expression_AssignName');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php
deleted file mode 100644
index 0600aeedbb704438246d1b5ae04eb3ff62443de9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-
-abstract class AbstractBinary extends AbstractExpression
-{
-    public function __construct(\Twig_NodeInterface $left, \Twig_NodeInterface $right, $lineno)
-    {
-        parent::__construct(['left' => $left, 'right' => $right], [], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('(')
-            ->subcompile($this->getNode('left'))
-            ->raw(' ')
-        ;
-        $this->operator($compiler);
-        $compiler
-            ->raw(' ')
-            ->subcompile($this->getNode('right'))
-            ->raw(')')
-        ;
-    }
-
-    abstract public function operator(Compiler $compiler);
-}
-
-class_alias('Twig\Node\Expression\Binary\AbstractBinary', 'Twig_Node_Expression_Binary');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php
deleted file mode 100644
index f7719a19ea2af51160ebaba612c7833887cfc797..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class AddBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('+');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\AddBinary', 'Twig_Node_Expression_Binary_Add');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php
deleted file mode 100644
index 484597da77d2407143b06bebe47e169f24641961..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class AndBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('&&');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\AndBinary', 'Twig_Node_Expression_Binary_And');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php
deleted file mode 100644
index cf286912b28bbfdf3b9772fb1e300f17d5c56794..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class BitwiseAndBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('&');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\BitwiseAndBinary', 'Twig_Node_Expression_Binary_BitwiseAnd');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php
deleted file mode 100644
index 7d5d260079999987afc2d2ae1517875c0f3636b2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class BitwiseOrBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('|');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\BitwiseOrBinary', 'Twig_Node_Expression_Binary_BitwiseOr');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php
deleted file mode 100644
index 729198719528b97b0ab508318cd7fe2647b1eb66..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class BitwiseXorBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('^');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\BitwiseXorBinary', 'Twig_Node_Expression_Binary_BitwiseXor');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php
deleted file mode 100644
index f6e5938fdd1d9be7ec0fa32327901b72f9c14be3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class ConcatBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('.');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\ConcatBinary', 'Twig_Node_Expression_Binary_Concat');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php
deleted file mode 100644
index ebfcc758b6576c6334448561d35bf44ec72a487d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class DivBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('/');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\DivBinary', 'Twig_Node_Expression_Binary_Div');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php
deleted file mode 100644
index 41a0065bbc69b83b66c1b1cce3d4e03a8ccc4c20..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class EndsWithBinary extends AbstractBinary
-{
-    public function compile(Compiler $compiler)
-    {
-        $left = $compiler->getVarName();
-        $right = $compiler->getVarName();
-        $compiler
-            ->raw(sprintf('(is_string($%s = ', $left))
-            ->subcompile($this->getNode('left'))
-            ->raw(sprintf(') && is_string($%s = ', $right))
-            ->subcompile($this->getNode('right'))
-            ->raw(sprintf(') && (\'\' === $%2$s || $%2$s === substr($%1$s, -strlen($%2$s))))', $left, $right))
-        ;
-    }
-
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\EndsWithBinary', 'Twig_Node_Expression_Binary_EndsWith');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php
deleted file mode 100644
index 84904c364ae3000323d8b793da0d58cb36ea807a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class EqualBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('==');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\EqualBinary', 'Twig_Node_Expression_Binary_Equal');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php
deleted file mode 100644
index 4dd5e3d32b749cb805e9285fc9d43b692ce2efde..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class FloorDivBinary extends AbstractBinary
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler->raw('(int) floor(');
-        parent::compile($compiler);
-        $compiler->raw(')');
-    }
-
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('/');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\FloorDivBinary', 'Twig_Node_Expression_Binary_FloorDiv');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php
deleted file mode 100644
index be73001e5b9ad45d4701cff4448bb705adf97f43..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class GreaterBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('>');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\GreaterBinary', 'Twig_Node_Expression_Binary_Greater');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php
deleted file mode 100644
index 5c2ae72ee23f669ffa487c3790bade772f398122..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class GreaterEqualBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('>=');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\GreaterEqualBinary', 'Twig_Node_Expression_Binary_GreaterEqual');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/InBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/InBinary.php
deleted file mode 100644
index f00b23060f8e76cabfe709e5412ac246d6db277f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/InBinary.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class InBinary extends AbstractBinary
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('twig_in_filter(')
-            ->subcompile($this->getNode('left'))
-            ->raw(', ')
-            ->subcompile($this->getNode('right'))
-            ->raw(')')
-        ;
-    }
-
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('in');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\InBinary', 'Twig_Node_Expression_Binary_In');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php
deleted file mode 100644
index 2b202daa72873ebaf400349d9b152f8cbda0a6f4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class LessBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('<');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\LessBinary', 'Twig_Node_Expression_Binary_Less');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php
deleted file mode 100644
index 4fffafea6dccce1320e06cb418968e67d860cd5f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class LessEqualBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('<=');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\LessEqualBinary', 'Twig_Node_Expression_Binary_LessEqual');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php
deleted file mode 100644
index ae810b2664a859b851c3ee941b530b5e378ad855..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class MatchesBinary extends AbstractBinary
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('preg_match(')
-            ->subcompile($this->getNode('right'))
-            ->raw(', ')
-            ->subcompile($this->getNode('left'))
-            ->raw(')')
-        ;
-    }
-
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\MatchesBinary', 'Twig_Node_Expression_Binary_Matches');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php
deleted file mode 100644
index e6a2b360346a89f0d0752c0d364a6289f31e0932..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class ModBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('%');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\ModBinary', 'Twig_Node_Expression_Binary_Mod');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php
deleted file mode 100644
index cd65f5dff2d01c78e0b2dc868c28f7501c7c4656..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class MulBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('*');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\MulBinary', 'Twig_Node_Expression_Binary_Mul');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php
deleted file mode 100644
index df5c6a23884d7ed740a287cd9bae52eb6b67e727..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class NotEqualBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('!=');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\NotEqualBinary', 'Twig_Node_Expression_Binary_NotEqual');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php
deleted file mode 100644
index ed2034e35ad3d36a777589173d4c35d3157f87f9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class NotInBinary extends AbstractBinary
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('!twig_in_filter(')
-            ->subcompile($this->getNode('left'))
-            ->raw(', ')
-            ->subcompile($this->getNode('right'))
-            ->raw(')')
-        ;
-    }
-
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('not in');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\NotInBinary', 'Twig_Node_Expression_Binary_NotIn');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php
deleted file mode 100644
index 8f9da43105c32adb60b6cf4e7e9781197c5ffb6f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class OrBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('||');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\OrBinary', 'Twig_Node_Expression_Binary_Or');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php
deleted file mode 100644
index 10a8d94cfe879a864750ead07431f494d8f94fa5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class PowerBinary extends AbstractBinary
-{
-    public function compile(Compiler $compiler)
-    {
-        if (\PHP_VERSION_ID >= 50600) {
-            return parent::compile($compiler);
-        }
-
-        $compiler
-            ->raw('pow(')
-            ->subcompile($this->getNode('left'))
-            ->raw(', ')
-            ->subcompile($this->getNode('right'))
-            ->raw(')')
-        ;
-    }
-
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('**');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\PowerBinary', 'Twig_Node_Expression_Binary_Power');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php
deleted file mode 100644
index e9c0cdf5e4131a57e32cf46460045c1f892e39be..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class RangeBinary extends AbstractBinary
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('range(')
-            ->subcompile($this->getNode('left'))
-            ->raw(', ')
-            ->subcompile($this->getNode('right'))
-            ->raw(')')
-        ;
-    }
-
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('..');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\RangeBinary', 'Twig_Node_Expression_Binary_Range');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php
deleted file mode 100644
index 1fe59fb417385fd257731c520e58f61679c7e37d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class StartsWithBinary extends AbstractBinary
-{
-    public function compile(Compiler $compiler)
-    {
-        $left = $compiler->getVarName();
-        $right = $compiler->getVarName();
-        $compiler
-            ->raw(sprintf('(is_string($%s = ', $left))
-            ->subcompile($this->getNode('left'))
-            ->raw(sprintf(') && is_string($%s = ', $right))
-            ->subcompile($this->getNode('right'))
-            ->raw(sprintf(') && (\'\' === $%2$s || 0 === strpos($%1$s, $%2$s)))', $left, $right))
-        ;
-    }
-
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\StartsWithBinary', 'Twig_Node_Expression_Binary_StartsWith');
diff --git a/vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php b/vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php
deleted file mode 100644
index 25469750aa0ca580446ec92b1127984314b6da24..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Binary;
-
-use Twig\Compiler;
-
-class SubBinary extends AbstractBinary
-{
-    public function operator(Compiler $compiler)
-    {
-        return $compiler->raw('-');
-    }
-}
-
-class_alias('Twig\Node\Expression\Binary\SubBinary', 'Twig_Node_Expression_Binary_Sub');
diff --git a/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php b/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
deleted file mode 100644
index 7e3c3e484d76044584e23f4ac6601a25ef06e557..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-use Twig\Node\Node;
-
-/**
- * Represents a block call node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class BlockReferenceExpression extends AbstractExpression
-{
-    /**
-     * @param Node|null $template
-     */
-    public function __construct(\Twig_NodeInterface $name, $template, $lineno, $tag = null)
-    {
-        if (\is_bool($template)) {
-            @trigger_error(sprintf('The %s method "$asString" argument is deprecated since version 1.28 and will be removed in 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-            $template = null;
-        }
-
-        $nodes = ['name' => $name];
-        if (null !== $template) {
-            $nodes['template'] = $template;
-        }
-
-        parent::__construct($nodes, ['is_defined_test' => false, 'output' => false], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        if ($this->getAttribute('is_defined_test')) {
-            $this->compileTemplateCall($compiler, 'hasBlock');
-        } else {
-            if ($this->getAttribute('output')) {
-                $compiler->addDebugInfo($this);
-
-                $this
-                    ->compileTemplateCall($compiler, 'displayBlock')
-                    ->raw(";\n");
-            } else {
-                $this->compileTemplateCall($compiler, 'renderBlock');
-            }
-        }
-    }
-
-    private function compileTemplateCall(Compiler $compiler, $method)
-    {
-        if (!$this->hasNode('template')) {
-            $compiler->write('$this');
-        } else {
-            $compiler
-                ->write('$this->loadTemplate(')
-                ->subcompile($this->getNode('template'))
-                ->raw(', ')
-                ->repr($this->getTemplateName())
-                ->raw(', ')
-                ->repr($this->getTemplateLine())
-                ->raw(')')
-            ;
-        }
-
-        $compiler->raw(sprintf('->%s', $method));
-        $this->compileBlockArguments($compiler);
-
-        return $compiler;
-    }
-
-    private function compileBlockArguments(Compiler $compiler)
-    {
-        $compiler
-            ->raw('(')
-            ->subcompile($this->getNode('name'))
-            ->raw(', $context');
-
-        if (!$this->hasNode('template')) {
-            $compiler->raw(', $blocks');
-        }
-
-        return $compiler->raw(')');
-    }
-}
-
-class_alias('Twig\Node\Expression\BlockReferenceExpression', 'Twig_Node_Expression_BlockReference');
diff --git a/vendor/twig/twig/src/Node/Expression/CallExpression.php b/vendor/twig/twig/src/Node/Expression/CallExpression.php
deleted file mode 100644
index d0667379d0e65e695dd4da2031f6b3b721fa5962..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/CallExpression.php
+++ /dev/null
@@ -1,315 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-use Twig\Error\SyntaxError;
-use Twig\Extension\ExtensionInterface;
-use Twig\Node\Node;
-
-abstract class CallExpression extends AbstractExpression
-{
-    private $reflector;
-
-    protected function compileCallable(Compiler $compiler)
-    {
-        $closingParenthesis = false;
-        $isArray = false;
-        if ($this->hasAttribute('callable') && $callable = $this->getAttribute('callable')) {
-            if (\is_string($callable) && false === strpos($callable, '::')) {
-                $compiler->raw($callable);
-            } else {
-                list($r, $callable) = $this->reflectCallable($callable);
-                if ($r instanceof \ReflectionMethod && \is_string($callable[0])) {
-                    if ($r->isStatic()) {
-                        $compiler->raw(sprintf('%s::%s', $callable[0], $callable[1]));
-                    } else {
-                        $compiler->raw(sprintf('$this->env->getRuntime(\'%s\')->%s', $callable[0], $callable[1]));
-                    }
-                } elseif ($r instanceof \ReflectionMethod && $callable[0] instanceof ExtensionInterface) {
-                    $compiler->raw(sprintf('$this->env->getExtension(\'%s\')->%s', \get_class($callable[0]), $callable[1]));
-                } else {
-                    $type = ucfirst($this->getAttribute('type'));
-                    $compiler->raw(sprintf('call_user_func_array($this->env->get%s(\'%s\')->getCallable(), ', $type, $this->getAttribute('name')));
-                    $closingParenthesis = true;
-                    $isArray = true;
-                }
-            }
-        } else {
-            $compiler->raw($this->getAttribute('thing')->compile());
-        }
-
-        $this->compileArguments($compiler, $isArray);
-
-        if ($closingParenthesis) {
-            $compiler->raw(')');
-        }
-    }
-
-    protected function compileArguments(Compiler $compiler, $isArray = false)
-    {
-        $compiler->raw($isArray ? '[' : '(');
-
-        $first = true;
-
-        if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) {
-            $compiler->raw('$this->env');
-            $first = false;
-        }
-
-        if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) {
-            if (!$first) {
-                $compiler->raw(', ');
-            }
-            $compiler->raw('$context');
-            $first = false;
-        }
-
-        if ($this->hasAttribute('arguments')) {
-            foreach ($this->getAttribute('arguments') as $argument) {
-                if (!$first) {
-                    $compiler->raw(', ');
-                }
-                $compiler->string($argument);
-                $first = false;
-            }
-        }
-
-        if ($this->hasNode('node')) {
-            if (!$first) {
-                $compiler->raw(', ');
-            }
-            $compiler->subcompile($this->getNode('node'));
-            $first = false;
-        }
-
-        if ($this->hasNode('arguments')) {
-            $callable = $this->hasAttribute('callable') ? $this->getAttribute('callable') : null;
-
-            $arguments = $this->getArguments($callable, $this->getNode('arguments'));
-
-            foreach ($arguments as $node) {
-                if (!$first) {
-                    $compiler->raw(', ');
-                }
-                $compiler->subcompile($node);
-                $first = false;
-            }
-        }
-
-        $compiler->raw($isArray ? ']' : ')');
-    }
-
-    protected function getArguments($callable, $arguments)
-    {
-        $callType = $this->getAttribute('type');
-        $callName = $this->getAttribute('name');
-
-        $parameters = [];
-        $named = false;
-        foreach ($arguments as $name => $node) {
-            if (!\is_int($name)) {
-                $named = true;
-                $name = $this->normalizeName($name);
-            } elseif ($named) {
-                throw new SyntaxError(sprintf('Positional arguments cannot be used after named arguments for %s "%s".', $callType, $callName), $this->getTemplateLine(), $this->getSourceContext());
-            }
-
-            $parameters[$name] = $node;
-        }
-
-        $isVariadic = $this->hasAttribute('is_variadic') && $this->getAttribute('is_variadic');
-        if (!$named && !$isVariadic) {
-            return $parameters;
-        }
-
-        if (!$callable) {
-            if ($named) {
-                $message = sprintf('Named arguments are not supported for %s "%s".', $callType, $callName);
-            } else {
-                $message = sprintf('Arbitrary positional arguments are not supported for %s "%s".', $callType, $callName);
-            }
-
-            throw new \LogicException($message);
-        }
-
-        $callableParameters = $this->getCallableParameters($callable, $isVariadic);
-        $arguments = [];
-        $names = [];
-        $missingArguments = [];
-        $optionalArguments = [];
-        $pos = 0;
-        foreach ($callableParameters as $callableParameter) {
-            $name = $this->normalizeName($callableParameter->name);
-            if (\PHP_VERSION_ID >= 80000 && 'range' === $callable) {
-                if ('start' === $name) {
-                    $name = 'low';
-                } elseif ('end' === $name) {
-                    $name = 'high';
-                }
-            }
-
-            $names[] = $name;
-
-            if (\array_key_exists($name, $parameters)) {
-                if (\array_key_exists($pos, $parameters)) {
-                    throw new SyntaxError(sprintf('Argument "%s" is defined twice for %s "%s".', $name, $callType, $callName), $this->getTemplateLine(), $this->getSourceContext());
-                }
-
-                if (\count($missingArguments)) {
-                    throw new SyntaxError(sprintf(
-                        'Argument "%s" could not be assigned for %s "%s(%s)" because it is mapped to an internal PHP function which cannot determine default value for optional argument%s "%s".',
-                        $name, $callType, $callName, implode(', ', $names), \count($missingArguments) > 1 ? 's' : '', implode('", "', $missingArguments)
-                    ), $this->getTemplateLine(), $this->getSourceContext());
-                }
-
-                $arguments = array_merge($arguments, $optionalArguments);
-                $arguments[] = $parameters[$name];
-                unset($parameters[$name]);
-                $optionalArguments = [];
-            } elseif (\array_key_exists($pos, $parameters)) {
-                $arguments = array_merge($arguments, $optionalArguments);
-                $arguments[] = $parameters[$pos];
-                unset($parameters[$pos]);
-                $optionalArguments = [];
-                ++$pos;
-            } elseif ($callableParameter->isDefaultValueAvailable()) {
-                $optionalArguments[] = new ConstantExpression($callableParameter->getDefaultValue(), -1);
-            } elseif ($callableParameter->isOptional()) {
-                if (empty($parameters)) {
-                    break;
-                } else {
-                    $missingArguments[] = $name;
-                }
-            } else {
-                throw new SyntaxError(sprintf('Value for argument "%s" is required for %s "%s".', $name, $callType, $callName), $this->getTemplateLine(), $this->getSourceContext());
-            }
-        }
-
-        if ($isVariadic) {
-            $arbitraryArguments = new ArrayExpression([], -1);
-            foreach ($parameters as $key => $value) {
-                if (\is_int($key)) {
-                    $arbitraryArguments->addElement($value);
-                } else {
-                    $arbitraryArguments->addElement($value, new ConstantExpression($key, -1));
-                }
-                unset($parameters[$key]);
-            }
-
-            if ($arbitraryArguments->count()) {
-                $arguments = array_merge($arguments, $optionalArguments);
-                $arguments[] = $arbitraryArguments;
-            }
-        }
-
-        if (!empty($parameters)) {
-            $unknownParameter = null;
-            foreach ($parameters as $parameter) {
-                if ($parameter instanceof Node) {
-                    $unknownParameter = $parameter;
-                    break;
-                }
-            }
-
-            throw new SyntaxError(
-                sprintf(
-                    'Unknown argument%s "%s" for %s "%s(%s)".',
-                    \count($parameters) > 1 ? 's' : '', implode('", "', array_keys($parameters)), $callType, $callName, implode(', ', $names)
-                ),
-                $unknownParameter ? $unknownParameter->getTemplateLine() : $this->getTemplateLine(),
-                $unknownParameter ? $unknownParameter->getSourceContext() : $this->getSourceContext()
-            );
-        }
-
-        return $arguments;
-    }
-
-    protected function normalizeName($name)
-    {
-        return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], ['\\1_\\2', '\\1_\\2'], $name));
-    }
-
-    private function getCallableParameters($callable, $isVariadic)
-    {
-        list($r) = $this->reflectCallable($callable);
-        if (null === $r) {
-            return [];
-        }
-
-        $parameters = $r->getParameters();
-        if ($this->hasNode('node')) {
-            array_shift($parameters);
-        }
-        if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) {
-            array_shift($parameters);
-        }
-        if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) {
-            array_shift($parameters);
-        }
-        if ($this->hasAttribute('arguments') && null !== $this->getAttribute('arguments')) {
-            foreach ($this->getAttribute('arguments') as $argument) {
-                array_shift($parameters);
-            }
-        }
-        if ($isVariadic) {
-            $argument = end($parameters);
-            $isArray = $argument && $argument->hasType() && 'array' === $argument->getType()->getName();
-            if ($isArray && $argument->isDefaultValueAvailable() && [] === $argument->getDefaultValue()) {
-                array_pop($parameters);
-            } else {
-                $callableName = $r->name;
-                if ($r instanceof \ReflectionMethod) {
-                    $callableName = $r->getDeclaringClass()->name.'::'.$callableName;
-                }
-
-                throw new \LogicException(sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = []".', $callableName, $this->getAttribute('type'), $this->getAttribute('name')));
-            }
-        }
-
-        return $parameters;
-    }
-
-    private function reflectCallable($callable)
-    {
-        if (null !== $this->reflector) {
-            return $this->reflector;
-        }
-
-        if (\is_array($callable)) {
-            if (!method_exists($callable[0], $callable[1])) {
-                // __call()
-                return [null, []];
-            }
-            $r = new \ReflectionMethod($callable[0], $callable[1]);
-        } elseif (\is_object($callable) && !$callable instanceof \Closure) {
-            $r = new \ReflectionObject($callable);
-            $r = $r->getMethod('__invoke');
-            $callable = [$callable, '__invoke'];
-        } elseif (\is_string($callable) && false !== $pos = strpos($callable, '::')) {
-            $class = substr($callable, 0, $pos);
-            $method = substr($callable, $pos + 2);
-            if (!method_exists($class, $method)) {
-                // __staticCall()
-                return [null, []];
-            }
-            $r = new \ReflectionMethod($callable);
-            $callable = [$class, $method];
-        } else {
-            $r = new \ReflectionFunction($callable);
-        }
-
-        return $this->reflector = [$r, $callable];
-    }
-}
-
-class_alias('Twig\Node\Expression\CallExpression', 'Twig_Node_Expression_Call');
diff --git a/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php b/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php
deleted file mode 100644
index b611218d31b862180a15be20d147ed591364efef..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-
-class ConditionalExpression extends AbstractExpression
-{
-    public function __construct(AbstractExpression $expr1, AbstractExpression $expr2, AbstractExpression $expr3, $lineno)
-    {
-        parent::__construct(['expr1' => $expr1, 'expr2' => $expr2, 'expr3' => $expr3], [], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('((')
-            ->subcompile($this->getNode('expr1'))
-            ->raw(') ? (')
-            ->subcompile($this->getNode('expr2'))
-            ->raw(') : (')
-            ->subcompile($this->getNode('expr3'))
-            ->raw('))')
-        ;
-    }
-}
-
-class_alias('Twig\Node\Expression\ConditionalExpression', 'Twig_Node_Expression_Conditional');
diff --git a/vendor/twig/twig/src/Node/Expression/ConstantExpression.php b/vendor/twig/twig/src/Node/Expression/ConstantExpression.php
deleted file mode 100644
index fd58264dca1bcc84a71f5f4902e0356dabc007a8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/ConstantExpression.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-
-class ConstantExpression extends AbstractExpression
-{
-    public function __construct($value, $lineno)
-    {
-        parent::__construct([], ['value' => $value], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->repr($this->getAttribute('value'));
-    }
-}
-
-class_alias('Twig\Node\Expression\ConstantExpression', 'Twig_Node_Expression_Constant');
diff --git a/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php b/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php
deleted file mode 100644
index 7c5e2d20aa46ddcfc4c393a88d0edd51eea29a7e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Filter;
-
-use Twig\Compiler;
-use Twig\Node\Expression\ConditionalExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Node\Expression\GetAttrExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Expression\Test\DefinedTest;
-use Twig\Node\Node;
-
-/**
- * Returns the value or the default value when it is undefined or empty.
- *
- *  {{ var.foo|default('foo item on var is not defined') }}
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class DefaultFilter extends FilterExpression
-{
-    public function __construct(\Twig_NodeInterface $node, ConstantExpression $filterName, \Twig_NodeInterface $arguments, $lineno, $tag = null)
-    {
-        $default = new FilterExpression($node, new ConstantExpression('default', $node->getTemplateLine()), $arguments, $node->getTemplateLine());
-
-        if ('default' === $filterName->getAttribute('value') && ($node instanceof NameExpression || $node instanceof GetAttrExpression)) {
-            $test = new DefinedTest(clone $node, 'defined', new Node(), $node->getTemplateLine());
-            $false = \count($arguments) ? $arguments->getNode(0) : new ConstantExpression('', $node->getTemplateLine());
-
-            $node = new ConditionalExpression($test, $default, $false, $node->getTemplateLine());
-        } else {
-            $node = $default;
-        }
-
-        parent::__construct($node, $filterName, $arguments, $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->subcompile($this->getNode('node'));
-    }
-}
-
-class_alias('Twig\Node\Expression\Filter\DefaultFilter', 'Twig_Node_Expression_Filter_Default');
diff --git a/vendor/twig/twig/src/Node/Expression/FilterExpression.php b/vendor/twig/twig/src/Node/Expression/FilterExpression.php
deleted file mode 100644
index 6131c2fd4033683076cd17d22072c945f375b503..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/FilterExpression.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-use Twig\TwigFilter;
-
-class FilterExpression extends CallExpression
-{
-    public function __construct(\Twig_NodeInterface $node, ConstantExpression $filterName, \Twig_NodeInterface $arguments, $lineno, $tag = null)
-    {
-        parent::__construct(['node' => $node, 'filter' => $filterName, 'arguments' => $arguments], [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $name = $this->getNode('filter')->getAttribute('value');
-        $filter = $compiler->getEnvironment()->getFilter($name);
-
-        $this->setAttribute('name', $name);
-        $this->setAttribute('type', 'filter');
-        $this->setAttribute('thing', $filter);
-        $this->setAttribute('needs_environment', $filter->needsEnvironment());
-        $this->setAttribute('needs_context', $filter->needsContext());
-        $this->setAttribute('arguments', $filter->getArguments());
-        if ($filter instanceof \Twig_FilterCallableInterface || $filter instanceof TwigFilter) {
-            $this->setAttribute('callable', $filter->getCallable());
-        }
-        if ($filter instanceof TwigFilter) {
-            $this->setAttribute('is_variadic', $filter->isVariadic());
-        }
-
-        $this->compileCallable($compiler);
-    }
-}
-
-class_alias('Twig\Node\Expression\FilterExpression', 'Twig_Node_Expression_Filter');
diff --git a/vendor/twig/twig/src/Node/Expression/FunctionExpression.php b/vendor/twig/twig/src/Node/Expression/FunctionExpression.php
deleted file mode 100644
index cf2c72b635f78ee09b0f0564ada6029d85667a1b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/FunctionExpression.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-use Twig\TwigFunction;
-
-class FunctionExpression extends CallExpression
-{
-    public function __construct($name, \Twig_NodeInterface $arguments, $lineno)
-    {
-        parent::__construct(['arguments' => $arguments], ['name' => $name, 'is_defined_test' => false], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $name = $this->getAttribute('name');
-        $function = $compiler->getEnvironment()->getFunction($name);
-
-        $this->setAttribute('name', $name);
-        $this->setAttribute('type', 'function');
-        $this->setAttribute('thing', $function);
-        $this->setAttribute('needs_environment', $function->needsEnvironment());
-        $this->setAttribute('needs_context', $function->needsContext());
-        $this->setAttribute('arguments', $function->getArguments());
-        if ($function instanceof \Twig_FunctionCallableInterface || $function instanceof TwigFunction) {
-            $callable = $function->getCallable();
-            if ('constant' === $name && $this->getAttribute('is_defined_test')) {
-                $callable = 'twig_constant_is_defined';
-            }
-
-            $this->setAttribute('callable', $callable);
-        }
-        if ($function instanceof TwigFunction) {
-            $this->setAttribute('is_variadic', $function->isVariadic());
-        }
-
-        $this->compileCallable($compiler);
-    }
-}
-
-class_alias('Twig\Node\Expression\FunctionExpression', 'Twig_Node_Expression_Function');
diff --git a/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php b/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
deleted file mode 100644
index 06511c773743ce3490bfe1a17101bc8d312f8d76..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-use Twig\Template;
-
-class GetAttrExpression extends AbstractExpression
-{
-    public function __construct(AbstractExpression $node, AbstractExpression $attribute, ?AbstractExpression $arguments, string $type, int $lineno)
-    {
-        $nodes = ['node' => $node, 'attribute' => $attribute];
-        if (null !== $arguments) {
-            $nodes['arguments'] = $arguments;
-        }
-
-        parent::__construct($nodes, ['type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'disable_c_ext' => false], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        if ($this->getAttribute('disable_c_ext')) {
-            @trigger_error(sprintf('Using the "disable_c_ext" attribute on %s is deprecated since version 1.30 and will be removed in 2.0.', __CLASS__), E_USER_DEPRECATED);
-        }
-
-        if (\function_exists('twig_template_get_attributes') && !$this->getAttribute('disable_c_ext')) {
-            $compiler->raw('twig_template_get_attributes($this, ');
-        } else {
-            $compiler->raw('$this->getAttribute(');
-        }
-
-        if ($this->getAttribute('ignore_strict_check')) {
-            $this->getNode('node')->setAttribute('ignore_strict_check', true);
-        }
-
-        $compiler->subcompile($this->getNode('node'));
-
-        $compiler->raw(', ')->subcompile($this->getNode('attribute'));
-
-        // only generate optional arguments when needed (to make generated code more readable)
-        $needFourth = $this->getAttribute('ignore_strict_check');
-        $needThird = $needFourth || $this->getAttribute('is_defined_test');
-        $needSecond = $needThird || Template::ANY_CALL !== $this->getAttribute('type');
-        $needFirst = $needSecond || $this->hasNode('arguments');
-
-        if ($needFirst) {
-            if ($this->hasNode('arguments')) {
-                $compiler->raw(', ')->subcompile($this->getNode('arguments'));
-            } else {
-                $compiler->raw(', []');
-            }
-        }
-
-        if ($needSecond) {
-            $compiler->raw(', ')->repr($this->getAttribute('type'));
-        }
-
-        if ($needThird) {
-            $compiler->raw(', ')->repr($this->getAttribute('is_defined_test'));
-        }
-
-        if ($needFourth) {
-            $compiler->raw(', ')->repr($this->getAttribute('ignore_strict_check'));
-        }
-
-        $compiler->raw(')');
-    }
-}
-
-class_alias('Twig\Node\Expression\GetAttrExpression', 'Twig_Node_Expression_GetAttr');
diff --git a/vendor/twig/twig/src/Node/Expression/InlinePrint.php b/vendor/twig/twig/src/Node/Expression/InlinePrint.php
deleted file mode 100644
index 469e73675a43f02bb4d988d4bea44eb880caf23e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/InlinePrint.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-use Twig\Node\Node;
-
-/**
- * @internal
- */
-final class InlinePrint extends AbstractExpression
-{
-    public function __construct(Node $node, $lineno)
-    {
-        parent::__construct(['node' => $node], [], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('print (')
-            ->subcompile($this->getNode('node'))
-            ->raw(')')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php b/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php
deleted file mode 100644
index f6311249dee691091421498d3003b86de837086a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-
-class MethodCallExpression extends AbstractExpression
-{
-    public function __construct(AbstractExpression $node, $method, ArrayExpression $arguments, $lineno)
-    {
-        parent::__construct(['node' => $node, 'arguments' => $arguments], ['method' => $method, 'safe' => false], $lineno);
-
-        if ($node instanceof NameExpression) {
-            $node->setAttribute('always_defined', true);
-        }
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->subcompile($this->getNode('node'))
-            ->raw('->')
-            ->raw($this->getAttribute('method'))
-            ->raw('(')
-        ;
-        $first = true;
-        foreach ($this->getNode('arguments')->getKeyValuePairs() as $pair) {
-            if (!$first) {
-                $compiler->raw(', ');
-            }
-            $first = false;
-
-            $compiler->subcompile($pair['value']);
-        }
-        $compiler->raw(')');
-    }
-}
-
-class_alias('Twig\Node\Expression\MethodCallExpression', 'Twig_Node_Expression_MethodCall');
diff --git a/vendor/twig/twig/src/Node/Expression/NameExpression.php b/vendor/twig/twig/src/Node/Expression/NameExpression.php
deleted file mode 100644
index e7be5ff547dee6ca8bf24e2e699c9bb321a91a1d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/NameExpression.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-
-class NameExpression extends AbstractExpression
-{
-    protected $specialVars = [
-        '_self' => '$this',
-        '_context' => '$context',
-        '_charset' => '$this->env->getCharset()',
-    ];
-
-    public function __construct($name, $lineno)
-    {
-        parent::__construct([], ['name' => $name, 'is_defined_test' => false, 'ignore_strict_check' => false, 'always_defined' => false], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $name = $this->getAttribute('name');
-
-        $compiler->addDebugInfo($this);
-
-        if ($this->getAttribute('is_defined_test')) {
-            if ($this->isSpecial()) {
-                $compiler->repr(true);
-            } elseif (\PHP_VERSION_ID >= 70400) {
-                $compiler
-                    ->raw('array_key_exists(')
-                    ->string($name)
-                    ->raw(', $context)')
-                ;
-            } else {
-                $compiler
-                    ->raw('(isset($context[')
-                    ->string($name)
-                    ->raw(']) || array_key_exists(')
-                    ->string($name)
-                    ->raw(', $context))')
-                ;
-            }
-        } elseif ($this->isSpecial()) {
-            $compiler->raw($this->specialVars[$name]);
-        } elseif ($this->getAttribute('always_defined')) {
-            $compiler
-                ->raw('$context[')
-                ->string($name)
-                ->raw(']')
-            ;
-        } else {
-            if (\PHP_VERSION_ID >= 70000) {
-                // use PHP 7 null coalescing operator
-                $compiler
-                    ->raw('($context[')
-                    ->string($name)
-                    ->raw('] ?? ')
-                ;
-
-                if ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) {
-                    $compiler->raw('null)');
-                } else {
-                    $compiler->raw('$this->getContext($context, ')->string($name)->raw('))');
-                }
-            } elseif (\PHP_VERSION_ID >= 50400) {
-                // PHP 5.4 ternary operator performance was optimized
-                $compiler
-                    ->raw('(isset($context[')
-                    ->string($name)
-                    ->raw(']) ? $context[')
-                    ->string($name)
-                    ->raw('] : ')
-                ;
-
-                if ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) {
-                    $compiler->raw('null)');
-                } else {
-                    $compiler->raw('$this->getContext($context, ')->string($name)->raw('))');
-                }
-            } else {
-                $compiler
-                    ->raw('$this->getContext($context, ')
-                    ->string($name)
-                ;
-
-                if ($this->getAttribute('ignore_strict_check')) {
-                    $compiler->raw(', true');
-                }
-
-                $compiler
-                    ->raw(')')
-                ;
-            }
-        }
-    }
-
-    public function isSpecial()
-    {
-        return isset($this->specialVars[$this->getAttribute('name')]);
-    }
-
-    public function isSimple()
-    {
-        return !$this->isSpecial() && !$this->getAttribute('is_defined_test');
-    }
-}
-
-class_alias('Twig\Node\Expression\NameExpression', 'Twig_Node_Expression_Name');
diff --git a/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php b/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
deleted file mode 100644
index 917d31a3b27a74082294684f5d44460229582692..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-use Twig\Node\Expression\Binary\AndBinary;
-use Twig\Node\Expression\Test\DefinedTest;
-use Twig\Node\Expression\Test\NullTest;
-use Twig\Node\Expression\Unary\NotUnary;
-use Twig\Node\Node;
-
-class NullCoalesceExpression extends ConditionalExpression
-{
-    public function __construct(\Twig_NodeInterface $left, \Twig_NodeInterface $right, $lineno)
-    {
-        $test = new DefinedTest(clone $left, 'defined', new Node(), $left->getTemplateLine());
-        // for "block()", we don't need the null test as the return value is always a string
-        if (!$left instanceof BlockReferenceExpression) {
-            $test = new AndBinary(
-                $test,
-                new NotUnary(new NullTest($left, 'null', new Node(), $left->getTemplateLine()), $left->getTemplateLine()),
-                $left->getTemplateLine()
-            );
-        }
-
-        parent::__construct($test, $left, $right, $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        /*
-         * This optimizes only one case. PHP 7 also supports more complex expressions
-         * that can return null. So, for instance, if log is defined, log("foo") ?? "..." works,
-         * but log($a["foo"]) ?? "..." does not if $a["foo"] is not defined. More advanced
-         * cases might be implemented as an optimizer node visitor, but has not been done
-         * as benefits are probably not worth the added complexity.
-         */
-        if (\PHP_VERSION_ID >= 70000 && $this->getNode('expr2') instanceof NameExpression) {
-            $this->getNode('expr2')->setAttribute('always_defined', true);
-            $compiler
-                ->raw('((')
-                ->subcompile($this->getNode('expr2'))
-                ->raw(') ?? (')
-                ->subcompile($this->getNode('expr3'))
-                ->raw('))')
-            ;
-        } else {
-            parent::compile($compiler);
-        }
-    }
-}
-
-class_alias('Twig\Node\Expression\NullCoalesceExpression', 'Twig_Node_Expression_NullCoalesce');
diff --git a/vendor/twig/twig/src/Node/Expression/ParentExpression.php b/vendor/twig/twig/src/Node/Expression/ParentExpression.php
deleted file mode 100644
index 12472830362a1705e698e28e41ec6addefc69940..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/ParentExpression.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-
-/**
- * Represents a parent node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ParentExpression extends AbstractExpression
-{
-    public function __construct($name, $lineno, $tag = null)
-    {
-        parent::__construct([], ['output' => false, 'name' => $name], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        if ($this->getAttribute('output')) {
-            $compiler
-                ->addDebugInfo($this)
-                ->write('$this->displayParentBlock(')
-                ->string($this->getAttribute('name'))
-                ->raw(", \$context, \$blocks);\n")
-            ;
-        } else {
-            $compiler
-                ->raw('$this->renderParentBlock(')
-                ->string($this->getAttribute('name'))
-                ->raw(', $context, $blocks)')
-            ;
-        }
-    }
-}
-
-class_alias('Twig\Node\Expression\ParentExpression', 'Twig_Node_Expression_Parent');
diff --git a/vendor/twig/twig/src/Node/Expression/TempNameExpression.php b/vendor/twig/twig/src/Node/Expression/TempNameExpression.php
deleted file mode 100644
index ce0a158981eda749aaa44519e5a57969ef5a48ac..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/TempNameExpression.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-
-class TempNameExpression extends AbstractExpression
-{
-    public function __construct($name, $lineno)
-    {
-        parent::__construct([], ['name' => $name], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('$_')
-            ->raw($this->getAttribute('name'))
-            ->raw('_')
-        ;
-    }
-}
-
-class_alias('Twig\Node\Expression\TempNameExpression', 'Twig_Node_Expression_TempName');
diff --git a/vendor/twig/twig/src/Node/Expression/Test/ConstantTest.php b/vendor/twig/twig/src/Node/Expression/Test/ConstantTest.php
deleted file mode 100644
index 78353a8b256aa79d3cbf8ff92d07285491876ade..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Test/ConstantTest.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Test;
-
-use Twig\Compiler;
-use Twig\Node\Expression\TestExpression;
-
-/**
- * Checks if a variable is the exact same value as a constant.
- *
- *    {% if post.status is constant('Post::PUBLISHED') %}
- *      the status attribute is exactly the same as Post::PUBLISHED
- *    {% endif %}
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ConstantTest extends TestExpression
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('(')
-            ->subcompile($this->getNode('node'))
-            ->raw(' === constant(')
-        ;
-
-        if ($this->getNode('arguments')->hasNode(1)) {
-            $compiler
-                ->raw('get_class(')
-                ->subcompile($this->getNode('arguments')->getNode(1))
-                ->raw(')."::".')
-            ;
-        }
-
-        $compiler
-            ->subcompile($this->getNode('arguments')->getNode(0))
-            ->raw('))')
-        ;
-    }
-}
-
-class_alias('Twig\Node\Expression\Test\ConstantTest', 'Twig_Node_Expression_Test_Constant');
diff --git a/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php b/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
deleted file mode 100644
index e2b3a0b8a90189ed8e2f0160c76af1186259ad6b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Test;
-
-use Twig\Compiler;
-use Twig\Error\SyntaxError;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\BlockReferenceExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FunctionExpression;
-use Twig\Node\Expression\GetAttrExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Expression\TestExpression;
-
-/**
- * Checks if a variable is defined in the current context.
- *
- *    {# defined works with variable names and variable attributes #}
- *    {% if foo is defined %}
- *        {# ... #}
- *    {% endif %}
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class DefinedTest extends TestExpression
-{
-    public function __construct(\Twig_NodeInterface $node, $name, ?\Twig_NodeInterface $arguments, $lineno)
-    {
-        if ($node instanceof NameExpression) {
-            $node->setAttribute('is_defined_test', true);
-        } elseif ($node instanceof GetAttrExpression) {
-            $node->setAttribute('is_defined_test', true);
-            $this->changeIgnoreStrictCheck($node);
-        } elseif ($node instanceof BlockReferenceExpression) {
-            $node->setAttribute('is_defined_test', true);
-        } elseif ($node instanceof FunctionExpression && 'constant' === $node->getAttribute('name')) {
-            $node->setAttribute('is_defined_test', true);
-        } elseif ($node instanceof ConstantExpression || $node instanceof ArrayExpression) {
-            $node = new ConstantExpression(true, $node->getTemplateLine());
-        } else {
-            throw new SyntaxError('The "defined" test only works with simple variables.', $lineno);
-        }
-
-        parent::__construct($node, $name, $arguments, $lineno);
-    }
-
-    protected function changeIgnoreStrictCheck(GetAttrExpression $node)
-    {
-        $node->setAttribute('ignore_strict_check', true);
-
-        if ($node->getNode('node') instanceof GetAttrExpression) {
-            $this->changeIgnoreStrictCheck($node->getNode('node'));
-        }
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->subcompile($this->getNode('node'));
-    }
-}
-
-class_alias('Twig\Node\Expression\Test\DefinedTest', 'Twig_Node_Expression_Test_Defined');
diff --git a/vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php b/vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php
deleted file mode 100644
index 05c8ad8f7c39f9743ab78db3c2c52933b46bae8c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Test;
-
-use Twig\Compiler;
-use Twig\Node\Expression\TestExpression;
-
-/**
- * Checks if a variable is divisible by a number.
- *
- *  {% if loop.index is divisible by(3) %}
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class DivisiblebyTest extends TestExpression
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('(0 == ')
-            ->subcompile($this->getNode('node'))
-            ->raw(' % ')
-            ->subcompile($this->getNode('arguments')->getNode(0))
-            ->raw(')')
-        ;
-    }
-}
-
-class_alias('Twig\Node\Expression\Test\DivisiblebyTest', 'Twig_Node_Expression_Test_Divisibleby');
diff --git a/vendor/twig/twig/src/Node/Expression/Test/EvenTest.php b/vendor/twig/twig/src/Node/Expression/Test/EvenTest.php
deleted file mode 100644
index 3b955d26a2fceb9c5ebf135914084f6fb7b3172c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Test/EvenTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Test;
-
-use Twig\Compiler;
-use Twig\Node\Expression\TestExpression;
-
-/**
- * Checks if a number is even.
- *
- *  {{ var is even }}
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class EvenTest extends TestExpression
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('(')
-            ->subcompile($this->getNode('node'))
-            ->raw(' % 2 == 0')
-            ->raw(')')
-        ;
-    }
-}
-
-class_alias('Twig\Node\Expression\Test\EvenTest', 'Twig_Node_Expression_Test_Even');
diff --git a/vendor/twig/twig/src/Node/Expression/Test/NullTest.php b/vendor/twig/twig/src/Node/Expression/Test/NullTest.php
deleted file mode 100644
index 24d399781ecd98c930dc0ab107e42955267d268f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Test/NullTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Test;
-
-use Twig\Compiler;
-use Twig\Node\Expression\TestExpression;
-
-/**
- * Checks that a variable is null.
- *
- *  {{ var is none }}
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class NullTest extends TestExpression
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('(null === ')
-            ->subcompile($this->getNode('node'))
-            ->raw(')')
-        ;
-    }
-}
-
-class_alias('Twig\Node\Expression\Test\NullTest', 'Twig_Node_Expression_Test_Null');
diff --git a/vendor/twig/twig/src/Node/Expression/Test/OddTest.php b/vendor/twig/twig/src/Node/Expression/Test/OddTest.php
deleted file mode 100644
index 2dc693a9ae6f613b1517e8f410330a014ceaaef1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Test/OddTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Test;
-
-use Twig\Compiler;
-use Twig\Node\Expression\TestExpression;
-
-/**
- * Checks if a number is odd.
- *
- *  {{ var is odd }}
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class OddTest extends TestExpression
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('(')
-            ->subcompile($this->getNode('node'))
-            ->raw(' % 2 == 1')
-            ->raw(')')
-        ;
-    }
-}
-
-class_alias('Twig\Node\Expression\Test\OddTest', 'Twig_Node_Expression_Test_Odd');
diff --git a/vendor/twig/twig/src/Node/Expression/Test/SameasTest.php b/vendor/twig/twig/src/Node/Expression/Test/SameasTest.php
deleted file mode 100644
index 75f2b82a5bbf8cbea257fc724450a2cc1b3c7044..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Test/SameasTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Test;
-
-use Twig\Compiler;
-use Twig\Node\Expression\TestExpression;
-
-/**
- * Checks if a variable is the same as another one (=== in PHP).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SameasTest extends TestExpression
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->raw('(')
-            ->subcompile($this->getNode('node'))
-            ->raw(' === ')
-            ->subcompile($this->getNode('arguments')->getNode(0))
-            ->raw(')')
-        ;
-    }
-}
-
-class_alias('Twig\Node\Expression\Test\SameasTest', 'Twig_Node_Expression_Test_Sameas');
diff --git a/vendor/twig/twig/src/Node/Expression/TestExpression.php b/vendor/twig/twig/src/Node/Expression/TestExpression.php
deleted file mode 100644
index fa3c18fbf75431a35c770c2e21f9f95c2469330a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/TestExpression.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression;
-
-use Twig\Compiler;
-use Twig\TwigTest;
-
-class TestExpression extends CallExpression
-{
-    public function __construct(\Twig_NodeInterface $node, $name, ?\Twig_NodeInterface $arguments, $lineno)
-    {
-        $nodes = ['node' => $node];
-        if (null !== $arguments) {
-            $nodes['arguments'] = $arguments;
-        }
-
-        parent::__construct($nodes, ['name' => $name], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $name = $this->getAttribute('name');
-        $test = $compiler->getEnvironment()->getTest($name);
-
-        $this->setAttribute('name', $name);
-        $this->setAttribute('type', 'test');
-        $this->setAttribute('thing', $test);
-        if ($test instanceof TwigTest) {
-            $this->setAttribute('arguments', $test->getArguments());
-        }
-        if ($test instanceof \Twig_TestCallableInterface || $test instanceof TwigTest) {
-            $this->setAttribute('callable', $test->getCallable());
-        }
-        if ($test instanceof TwigTest) {
-            $this->setAttribute('is_variadic', $test->isVariadic());
-        }
-
-        $this->compileCallable($compiler);
-    }
-}
-
-class_alias('Twig\Node\Expression\TestExpression', 'Twig_Node_Expression_Test');
diff --git a/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php b/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php
deleted file mode 100644
index 415c3d407e9e4aad02122698c464801370f9319e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Unary;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-
-abstract class AbstractUnary extends AbstractExpression
-{
-    public function __construct(\Twig_NodeInterface $node, $lineno)
-    {
-        parent::__construct(['node' => $node], [], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->raw(' ');
-        $this->operator($compiler);
-        $compiler->subcompile($this->getNode('node'));
-    }
-
-    abstract public function operator(Compiler $compiler);
-}
-
-class_alias('Twig\Node\Expression\Unary\AbstractUnary', 'Twig_Node_Expression_Unary');
diff --git a/vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php b/vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php
deleted file mode 100644
index dfb6f542954a0de504d9c5c62d0fcb5319301456..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Unary;
-
-use Twig\Compiler;
-
-class NegUnary extends AbstractUnary
-{
-    public function operator(Compiler $compiler)
-    {
-        $compiler->raw('-');
-    }
-}
-
-class_alias('Twig\Node\Expression\Unary\NegUnary', 'Twig_Node_Expression_Unary_Neg');
diff --git a/vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php b/vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php
deleted file mode 100644
index 7bdde96fffc7c84f255258cbae8bb7e23332b752..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Unary;
-
-use Twig\Compiler;
-
-class NotUnary extends AbstractUnary
-{
-    public function operator(Compiler $compiler)
-    {
-        $compiler->raw('!');
-    }
-}
-
-class_alias('Twig\Node\Expression\Unary\NotUnary', 'Twig_Node_Expression_Unary_Not');
diff --git a/vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php b/vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php
deleted file mode 100644
index 52d5d0c89a774a5368eaacdb7342dcbc7c4976f5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node\Expression\Unary;
-
-use Twig\Compiler;
-
-class PosUnary extends AbstractUnary
-{
-    public function operator(Compiler $compiler)
-    {
-        $compiler->raw('+');
-    }
-}
-
-class_alias('Twig\Node\Expression\Unary\PosUnary', 'Twig_Node_Expression_Unary_Pos');
diff --git a/vendor/twig/twig/src/Node/FlushNode.php b/vendor/twig/twig/src/Node/FlushNode.php
deleted file mode 100644
index 6cbc489a62de1222171b5924bfec3bd022cb9c75..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/FlushNode.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * Represents a flush node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FlushNode extends Node
-{
-    public function __construct($lineno, $tag)
-    {
-        parent::__construct([], [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write("flush();\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\FlushNode', 'Twig_Node_Flush');
diff --git a/vendor/twig/twig/src/Node/ForLoopNode.php b/vendor/twig/twig/src/Node/ForLoopNode.php
deleted file mode 100644
index 3902093556b93693981d8c3ed5fa111706e32be1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/ForLoopNode.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * Internal node used by the for node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ForLoopNode extends Node
-{
-    public function __construct($lineno, $tag = null)
-    {
-        parent::__construct([], ['with_loop' => false, 'ifexpr' => false, 'else' => false], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        if ($this->getAttribute('else')) {
-            $compiler->write("\$context['_iterated'] = true;\n");
-        }
-
-        if ($this->getAttribute('with_loop')) {
-            $compiler
-                ->write("++\$context['loop']['index0'];\n")
-                ->write("++\$context['loop']['index'];\n")
-                ->write("\$context['loop']['first'] = false;\n")
-            ;
-
-            if (!$this->getAttribute('ifexpr')) {
-                $compiler
-                    ->write("if (isset(\$context['loop']['length'])) {\n")
-                    ->indent()
-                    ->write("--\$context['loop']['revindex0'];\n")
-                    ->write("--\$context['loop']['revindex'];\n")
-                    ->write("\$context['loop']['last'] = 0 === \$context['loop']['revindex0'];\n")
-                    ->outdent()
-                    ->write("}\n")
-                ;
-            }
-        }
-    }
-}
-
-class_alias('Twig\Node\ForLoopNode', 'Twig_Node_ForLoop');
diff --git a/vendor/twig/twig/src/Node/ForNode.php b/vendor/twig/twig/src/Node/ForNode.php
deleted file mode 100644
index 111da37ea50cfedaef2a3a2d475271c5b64815bd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/ForNode.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\Expression\AssignNameExpression;
-
-/**
- * Represents a for node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ForNode extends Node
-{
-    protected $loop;
-
-    public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, ?AbstractExpression $ifexpr, \Twig_NodeInterface $body, ?\Twig_NodeInterface $else, $lineno, $tag = null)
-    {
-        $body = new Node([$body, $this->loop = new ForLoopNode($lineno, $tag)]);
-
-        if (null !== $ifexpr) {
-            $body = new IfNode(new Node([$ifexpr, $body]), null, $lineno, $tag);
-        }
-
-        $nodes = ['key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body];
-        if (null !== $else) {
-            $nodes['else'] = $else;
-        }
-
-        parent::__construct($nodes, ['with_loop' => true, 'ifexpr' => null !== $ifexpr], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write("\$context['_parent'] = \$context;\n")
-            ->write("\$context['_seq'] = twig_ensure_traversable(")
-            ->subcompile($this->getNode('seq'))
-            ->raw(");\n")
-        ;
-
-        if ($this->hasNode('else')) {
-            $compiler->write("\$context['_iterated'] = false;\n");
-        }
-
-        if ($this->getAttribute('with_loop')) {
-            $compiler
-                ->write("\$context['loop'] = [\n")
-                ->write("  'parent' => \$context['_parent'],\n")
-                ->write("  'index0' => 0,\n")
-                ->write("  'index'  => 1,\n")
-                ->write("  'first'  => true,\n")
-                ->write("];\n")
-            ;
-
-            if (!$this->getAttribute('ifexpr')) {
-                $compiler
-                    ->write("if (is_array(\$context['_seq']) || (is_object(\$context['_seq']) && \$context['_seq'] instanceof \Countable)) {\n")
-                    ->indent()
-                    ->write("\$length = count(\$context['_seq']);\n")
-                    ->write("\$context['loop']['revindex0'] = \$length - 1;\n")
-                    ->write("\$context['loop']['revindex'] = \$length;\n")
-                    ->write("\$context['loop']['length'] = \$length;\n")
-                    ->write("\$context['loop']['last'] = 1 === \$length;\n")
-                    ->outdent()
-                    ->write("}\n")
-                ;
-            }
-        }
-
-        $this->loop->setAttribute('else', $this->hasNode('else'));
-        $this->loop->setAttribute('with_loop', $this->getAttribute('with_loop'));
-        $this->loop->setAttribute('ifexpr', $this->getAttribute('ifexpr'));
-
-        $compiler
-            ->write("foreach (\$context['_seq'] as ")
-            ->subcompile($this->getNode('key_target'))
-            ->raw(' => ')
-            ->subcompile($this->getNode('value_target'))
-            ->raw(") {\n")
-            ->indent()
-            ->subcompile($this->getNode('body'))
-            ->outdent()
-            ->write("}\n")
-        ;
-
-        if ($this->hasNode('else')) {
-            $compiler
-                ->write("if (!\$context['_iterated']) {\n")
-                ->indent()
-                ->subcompile($this->getNode('else'))
-                ->outdent()
-                ->write("}\n")
-            ;
-        }
-
-        $compiler->write("\$_parent = \$context['_parent'];\n");
-
-        // remove some "private" loop variables (needed for nested loops)
-        $compiler->write('unset($context[\'_seq\'], $context[\'_iterated\'], $context[\''.$this->getNode('key_target')->getAttribute('name').'\'], $context[\''.$this->getNode('value_target')->getAttribute('name').'\'], $context[\'_parent\'], $context[\'loop\']);'."\n");
-
-        // keep the values set in the inner context for variables defined in the outer context
-        $compiler->write("\$context = array_intersect_key(\$context, \$_parent) + \$_parent;\n");
-    }
-}
-
-class_alias('Twig\Node\ForNode', 'Twig_Node_For');
diff --git a/vendor/twig/twig/src/Node/IfNode.php b/vendor/twig/twig/src/Node/IfNode.php
deleted file mode 100644
index da2ad344a7e1e4af6c0a64ee28a3c12a6bfe84a8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/IfNode.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * Represents an if node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class IfNode extends Node
-{
-    public function __construct(\Twig_NodeInterface $tests, ?\Twig_NodeInterface $else, $lineno, $tag = null)
-    {
-        $nodes = ['tests' => $tests];
-        if (null !== $else) {
-            $nodes['else'] = $else;
-        }
-
-        parent::__construct($nodes, [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->addDebugInfo($this);
-        for ($i = 0, $count = \count($this->getNode('tests')); $i < $count; $i += 2) {
-            if ($i > 0) {
-                $compiler
-                    ->outdent()
-                    ->write('} elseif (')
-                ;
-            } else {
-                $compiler
-                    ->write('if (')
-                ;
-            }
-
-            $compiler
-                ->subcompile($this->getNode('tests')->getNode($i))
-                ->raw(") {\n")
-                ->indent()
-                ->subcompile($this->getNode('tests')->getNode($i + 1))
-            ;
-        }
-
-        if ($this->hasNode('else')) {
-            $compiler
-                ->outdent()
-                ->write("} else {\n")
-                ->indent()
-                ->subcompile($this->getNode('else'))
-            ;
-        }
-
-        $compiler
-            ->outdent()
-            ->write("}\n");
-    }
-}
-
-class_alias('Twig\Node\IfNode', 'Twig_Node_If');
diff --git a/vendor/twig/twig/src/Node/ImportNode.php b/vendor/twig/twig/src/Node/ImportNode.php
deleted file mode 100644
index 236db8900ea29162be0c16daaaced5c15b55b6c0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/ImportNode.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\Expression\NameExpression;
-
-/**
- * Represents an import node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ImportNode extends Node
-{
-    public function __construct(AbstractExpression $expr, AbstractExpression $var, $lineno, $tag = null)
-    {
-        parent::__construct(['expr' => $expr, 'var' => $var], [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write('')
-            ->subcompile($this->getNode('var'))
-            ->raw(' = ')
-        ;
-
-        if ($this->getNode('expr') instanceof NameExpression && '_self' === $this->getNode('expr')->getAttribute('name')) {
-            $compiler->raw('$this');
-        } else {
-            $compiler
-                ->raw('$this->loadTemplate(')
-                ->subcompile($this->getNode('expr'))
-                ->raw(', ')
-                ->repr($this->getTemplateName())
-                ->raw(', ')
-                ->repr($this->getTemplateLine())
-                ->raw(')->unwrap()')
-            ;
-        }
-
-        $compiler->raw(";\n");
-    }
-}
-
-class_alias('Twig\Node\ImportNode', 'Twig_Node_Import');
diff --git a/vendor/twig/twig/src/Node/IncludeNode.php b/vendor/twig/twig/src/Node/IncludeNode.php
deleted file mode 100644
index d0b6184c86f999e4026bda277a0d142e4388f1eb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/IncludeNode.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-
-/**
- * Represents an include node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class IncludeNode extends Node implements NodeOutputInterface
-{
-    public function __construct(AbstractExpression $expr, ?AbstractExpression $variables, $only, $ignoreMissing, $lineno, $tag = null)
-    {
-        $nodes = ['expr' => $expr];
-        if (null !== $variables) {
-            $nodes['variables'] = $variables;
-        }
-
-        parent::__construct($nodes, ['only' => (bool) $only, 'ignore_missing' => (bool) $ignoreMissing], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->addDebugInfo($this);
-
-        if ($this->getAttribute('ignore_missing')) {
-            $template = $compiler->getVarName();
-
-            $compiler
-                ->write(sprintf("$%s = null;\n", $template))
-                ->write("try {\n")
-                ->indent()
-                ->write(sprintf('$%s = ', $template))
-            ;
-
-            $this->addGetTemplate($compiler);
-
-            $compiler
-                ->raw(";\n")
-                ->outdent()
-                ->write("} catch (LoaderError \$e) {\n")
-                ->indent()
-                ->write("// ignore missing template\n")
-                ->outdent()
-                ->write("}\n")
-                ->write(sprintf("if ($%s) {\n", $template))
-                ->indent()
-                ->write(sprintf('$%s->display(', $template))
-            ;
-            $this->addTemplateArguments($compiler);
-            $compiler
-                ->raw(");\n")
-                ->outdent()
-                ->write("}\n")
-            ;
-        } else {
-            $this->addGetTemplate($compiler);
-            $compiler->raw('->display(');
-            $this->addTemplateArguments($compiler);
-            $compiler->raw(");\n");
-        }
-    }
-
-    protected function addGetTemplate(Compiler $compiler)
-    {
-        $compiler
-            ->write('$this->loadTemplate(')
-            ->subcompile($this->getNode('expr'))
-            ->raw(', ')
-            ->repr($this->getTemplateName())
-            ->raw(', ')
-            ->repr($this->getTemplateLine())
-            ->raw(')')
-        ;
-    }
-
-    protected function addTemplateArguments(Compiler $compiler)
-    {
-        if (!$this->hasNode('variables')) {
-            $compiler->raw(false === $this->getAttribute('only') ? '$context' : '[]');
-        } elseif (false === $this->getAttribute('only')) {
-            $compiler
-                ->raw('twig_array_merge($context, ')
-                ->subcompile($this->getNode('variables'))
-                ->raw(')')
-            ;
-        } else {
-            $compiler->raw('twig_to_array(');
-            $compiler->subcompile($this->getNode('variables'));
-            $compiler->raw(')');
-        }
-    }
-}
-
-class_alias('Twig\Node\IncludeNode', 'Twig_Node_Include');
diff --git a/vendor/twig/twig/src/Node/MacroNode.php b/vendor/twig/twig/src/Node/MacroNode.php
deleted file mode 100644
index 6eb67955f4b36ffd830c81745eaaa58199d1af4b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/MacroNode.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Error\SyntaxError;
-
-/**
- * Represents a macro node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class MacroNode extends Node
-{
-    const VARARGS_NAME = 'varargs';
-
-    public function __construct($name, \Twig_NodeInterface $body, \Twig_NodeInterface $arguments, $lineno, $tag = null)
-    {
-        foreach ($arguments as $argumentName => $argument) {
-            if (self::VARARGS_NAME === $argumentName) {
-                throw new SyntaxError(sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $argument->getTemplateLine(), $argument->getSourceContext());
-            }
-        }
-
-        parent::__construct(['body' => $body, 'arguments' => $arguments], ['name' => $name], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write(sprintf('public function get%s(', $this->getAttribute('name')))
-        ;
-
-        $count = \count($this->getNode('arguments'));
-        $pos = 0;
-        foreach ($this->getNode('arguments') as $name => $default) {
-            $compiler
-                ->raw('$__'.$name.'__ = ')
-                ->subcompile($default)
-            ;
-
-            if (++$pos < $count) {
-                $compiler->raw(', ');
-            }
-        }
-
-        if (\PHP_VERSION_ID >= 50600) {
-            if ($count) {
-                $compiler->raw(', ');
-            }
-
-            $compiler->raw('...$__varargs__');
-        }
-
-        $compiler
-            ->raw(")\n")
-            ->write("{\n")
-            ->indent()
-        ;
-
-        $compiler
-            ->write("\$context = \$this->env->mergeGlobals([\n")
-            ->indent()
-        ;
-
-        foreach ($this->getNode('arguments') as $name => $default) {
-            $compiler
-                ->write('')
-                ->string($name)
-                ->raw(' => $__'.$name.'__')
-                ->raw(",\n")
-            ;
-        }
-
-        $compiler
-            ->write('')
-            ->string(self::VARARGS_NAME)
-            ->raw(' => ')
-        ;
-
-        if (\PHP_VERSION_ID >= 50600) {
-            $compiler->raw("\$__varargs__,\n");
-        } else {
-            $compiler
-                ->raw('func_num_args() > ')
-                ->repr($count)
-                ->raw(' ? array_slice(func_get_args(), ')
-                ->repr($count)
-                ->raw(") : [],\n")
-            ;
-        }
-
-        $compiler
-            ->outdent()
-            ->write("]);\n\n")
-            ->write("\$blocks = [];\n\n")
-        ;
-        if ($compiler->getEnvironment()->isDebug()) {
-            $compiler->write("ob_start();\n");
-        } else {
-            $compiler->write("ob_start(function () { return ''; });\n");
-        }
-        $compiler
-            ->write("try {\n")
-            ->indent()
-            ->subcompile($this->getNode('body'))
-            ->outdent()
-            ->write("} catch (\Exception \$e) {\n")
-            ->indent()
-            ->write("ob_end_clean();\n\n")
-            ->write("throw \$e;\n")
-            ->outdent()
-            ->write("} catch (\Throwable \$e) {\n")
-            ->indent()
-            ->write("ob_end_clean();\n\n")
-            ->write("throw \$e;\n")
-            ->outdent()
-            ->write("}\n\n")
-            ->write("return ('' === \$tmp = ob_get_clean()) ? '' : new Markup(\$tmp, \$this->env->getCharset());\n")
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\MacroNode', 'Twig_Node_Macro');
diff --git a/vendor/twig/twig/src/Node/ModuleNode.php b/vendor/twig/twig/src/Node/ModuleNode.php
deleted file mode 100644
index 89d602b97a15f6a879aa5e8d462eeb6ff1ce24a0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/ModuleNode.php
+++ /dev/null
@@ -1,492 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Source;
-
-/**
- * Represents a module node.
- *
- * Consider this class as being final. If you need to customize the behavior of
- * the generated class, consider adding nodes to the following nodes: display_start,
- * display_end, constructor_start, constructor_end, and class_end.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ModuleNode extends Node
-{
-    public function __construct(\Twig_NodeInterface $body, ?AbstractExpression $parent, \Twig_NodeInterface $blocks, \Twig_NodeInterface $macros, \Twig_NodeInterface $traits, $embeddedTemplates, $name, $source = '')
-    {
-        if (!$name instanceof Source) {
-            @trigger_error(sprintf('Passing a string as the $name argument of %s() is deprecated since version 1.27. Pass a \Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED);
-            $source = new Source($source, $name);
-        } else {
-            $source = $name;
-        }
-
-        $nodes = [
-            'body' => $body,
-            'blocks' => $blocks,
-            'macros' => $macros,
-            'traits' => $traits,
-            'display_start' => new Node(),
-            'display_end' => new Node(),
-            'constructor_start' => new Node(),
-            'constructor_end' => new Node(),
-            'class_end' => new Node(),
-        ];
-        if (null !== $parent) {
-            $nodes['parent'] = $parent;
-        }
-
-        // embedded templates are set as attributes so that they are only visited once by the visitors
-        parent::__construct($nodes, [
-            // source to be remove in 2.0
-            'source' => $source->getCode(),
-            // filename to be remove in 2.0 (use getTemplateName() instead)
-            'filename' => $source->getName(),
-            'index' => null,
-            'embedded_templates' => $embeddedTemplates,
-        ], 1);
-
-        // populate the template name of all node children
-        $this->setTemplateName($source->getName());
-        $this->setSourceContext($source);
-    }
-
-    public function setIndex($index)
-    {
-        $this->setAttribute('index', $index);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $this->compileTemplate($compiler);
-
-        foreach ($this->getAttribute('embedded_templates') as $template) {
-            $compiler->subcompile($template);
-        }
-    }
-
-    protected function compileTemplate(Compiler $compiler)
-    {
-        if (!$this->getAttribute('index')) {
-            $compiler->write('<?php');
-        }
-
-        $this->compileClassHeader($compiler);
-
-        if (
-            \count($this->getNode('blocks'))
-            || \count($this->getNode('traits'))
-            || !$this->hasNode('parent')
-            || $this->getNode('parent') instanceof ConstantExpression
-            || \count($this->getNode('constructor_start'))
-            || \count($this->getNode('constructor_end'))
-        ) {
-            $this->compileConstructor($compiler);
-        }
-
-        $this->compileGetParent($compiler);
-
-        $this->compileDisplay($compiler);
-
-        $compiler->subcompile($this->getNode('blocks'));
-
-        $this->compileMacros($compiler);
-
-        $this->compileGetTemplateName($compiler);
-
-        $this->compileIsTraitable($compiler);
-
-        $this->compileDebugInfo($compiler);
-
-        $this->compileGetSource($compiler);
-
-        $this->compileGetSourceContext($compiler);
-
-        $this->compileClassFooter($compiler);
-    }
-
-    protected function compileGetParent(Compiler $compiler)
-    {
-        if (!$this->hasNode('parent')) {
-            return;
-        }
-        $parent = $this->getNode('parent');
-
-        $compiler
-            ->write("protected function doGetParent(array \$context)\n", "{\n")
-            ->indent()
-            ->addDebugInfo($parent)
-            ->write('return ')
-        ;
-
-        if ($parent instanceof ConstantExpression) {
-            $compiler->subcompile($parent);
-        } else {
-            $compiler
-                ->raw('$this->loadTemplate(')
-                ->subcompile($parent)
-                ->raw(', ')
-                ->repr($this->getSourceContext()->getName())
-                ->raw(', ')
-                ->repr($parent->getTemplateLine())
-                ->raw(')')
-            ;
-        }
-
-        $compiler
-            ->raw(";\n")
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileClassHeader(Compiler $compiler)
-    {
-        $compiler
-            ->write("\n\n")
-        ;
-        if (!$this->getAttribute('index')) {
-            $compiler
-                ->write("use Twig\Environment;\n")
-                ->write("use Twig\Error\LoaderError;\n")
-                ->write("use Twig\Error\RuntimeError;\n")
-                ->write("use Twig\Markup;\n")
-                ->write("use Twig\Sandbox\SecurityError;\n")
-                ->write("use Twig\Sandbox\SecurityNotAllowedTagError;\n")
-                ->write("use Twig\Sandbox\SecurityNotAllowedFilterError;\n")
-                ->write("use Twig\Sandbox\SecurityNotAllowedFunctionError;\n")
-                ->write("use Twig\Source;\n")
-                ->write("use Twig\Template;\n\n")
-            ;
-        }
-        $compiler
-            // if the template name contains */, add a blank to avoid a PHP parse error
-            ->write('/* '.str_replace('*/', '* /', $this->getSourceContext()->getName())." */\n")
-            ->write('class '.$compiler->getEnvironment()->getTemplateClass($this->getSourceContext()->getName(), $this->getAttribute('index')))
-            ->raw(sprintf(" extends %s\n", $compiler->getEnvironment()->getBaseTemplateClass()))
-            ->write("{\n")
-            ->indent()
-        ;
-    }
-
-    protected function compileConstructor(Compiler $compiler)
-    {
-        $compiler
-            ->write("public function __construct(Environment \$env)\n", "{\n")
-            ->indent()
-            ->subcompile($this->getNode('constructor_start'))
-            ->write("parent::__construct(\$env);\n\n")
-        ;
-
-        // parent
-        if (!$this->hasNode('parent')) {
-            $compiler->write("\$this->parent = false;\n\n");
-        }
-
-        $countTraits = \count($this->getNode('traits'));
-        if ($countTraits) {
-            // traits
-            foreach ($this->getNode('traits') as $i => $trait) {
-                $this->compileLoadTemplate($compiler, $trait->getNode('template'), sprintf('$_trait_%s', $i));
-
-                $node = $trait->getNode('template');
-                $compiler
-                    ->addDebugInfo($node)
-                    ->write(sprintf("if (!\$_trait_%s->isTraitable()) {\n", $i))
-                    ->indent()
-                    ->write("throw new RuntimeError('Template \"'.")
-                    ->subcompile($trait->getNode('template'))
-                    ->raw(".'\" cannot be used as a trait.', ")
-                    ->repr($node->getTemplateLine())
-                    ->raw(", \$this->getSourceContext());\n")
-                    ->outdent()
-                    ->write("}\n")
-                    ->write(sprintf("\$_trait_%s_blocks = \$_trait_%s->getBlocks();\n\n", $i, $i))
-                ;
-
-                foreach ($trait->getNode('targets') as $key => $value) {
-                    $compiler
-                        ->write(sprintf('if (!isset($_trait_%s_blocks[', $i))
-                        ->string($key)
-                        ->raw("])) {\n")
-                        ->indent()
-                        ->write("throw new RuntimeError(sprintf('Block ")
-                        ->string($key)
-                        ->raw(' is not defined in trait ')
-                        ->subcompile($trait->getNode('template'))
-                        ->raw(".'), ")
-                        ->repr($node->getTemplateLine())
-                        ->raw(", \$this->getSourceContext());\n")
-                        ->outdent()
-                        ->write("}\n\n")
-
-                        ->write(sprintf('$_trait_%s_blocks[', $i))
-                        ->subcompile($value)
-                        ->raw(sprintf('] = $_trait_%s_blocks[', $i))
-                        ->string($key)
-                        ->raw(sprintf(']; unset($_trait_%s_blocks[', $i))
-                        ->string($key)
-                        ->raw("]);\n\n")
-                    ;
-                }
-            }
-
-            if ($countTraits > 1) {
-                $compiler
-                    ->write("\$this->traits = array_merge(\n")
-                    ->indent()
-                ;
-
-                for ($i = 0; $i < $countTraits; ++$i) {
-                    $compiler
-                        ->write(sprintf('$_trait_%s_blocks'.($i == $countTraits - 1 ? '' : ',')."\n", $i))
-                    ;
-                }
-
-                $compiler
-                    ->outdent()
-                    ->write(");\n\n")
-                ;
-            } else {
-                $compiler
-                    ->write("\$this->traits = \$_trait_0_blocks;\n\n")
-                ;
-            }
-
-            $compiler
-                ->write("\$this->blocks = array_merge(\n")
-                ->indent()
-                ->write("\$this->traits,\n")
-                ->write("[\n")
-            ;
-        } else {
-            $compiler
-                ->write("\$this->blocks = [\n")
-            ;
-        }
-
-        // blocks
-        $compiler
-            ->indent()
-        ;
-
-        foreach ($this->getNode('blocks') as $name => $node) {
-            $compiler
-                ->write(sprintf("'%s' => [\$this, 'block_%s'],\n", $name, $name))
-            ;
-        }
-
-        if ($countTraits) {
-            $compiler
-                ->outdent()
-                ->write("]\n")
-                ->outdent()
-                ->write(");\n")
-            ;
-        } else {
-            $compiler
-                ->outdent()
-                ->write("];\n")
-            ;
-        }
-
-        $compiler
-            ->subcompile($this->getNode('constructor_end'))
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileDisplay(Compiler $compiler)
-    {
-        $compiler
-            ->write("protected function doDisplay(array \$context, array \$blocks = [])\n", "{\n")
-            ->indent()
-            ->subcompile($this->getNode('display_start'))
-            ->subcompile($this->getNode('body'))
-        ;
-
-        if ($this->hasNode('parent')) {
-            $parent = $this->getNode('parent');
-
-            $compiler->addDebugInfo($parent);
-            if ($parent instanceof ConstantExpression) {
-                $compiler
-                    ->write('$this->parent = $this->loadTemplate(')
-                    ->subcompile($parent)
-                    ->raw(', ')
-                    ->repr($this->getSourceContext()->getName())
-                    ->raw(', ')
-                    ->repr($parent->getTemplateLine())
-                    ->raw(");\n")
-                ;
-                $compiler->write('$this->parent');
-            } else {
-                $compiler->write('$this->getParent($context)');
-            }
-            $compiler->raw("->display(\$context, array_merge(\$this->blocks, \$blocks));\n");
-        }
-
-        $compiler
-            ->subcompile($this->getNode('display_end'))
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileClassFooter(Compiler $compiler)
-    {
-        $compiler
-            ->subcompile($this->getNode('class_end'))
-            ->outdent()
-            ->write("}\n")
-        ;
-    }
-
-    protected function compileMacros(Compiler $compiler)
-    {
-        $compiler->subcompile($this->getNode('macros'));
-    }
-
-    protected function compileGetTemplateName(Compiler $compiler)
-    {
-        $compiler
-            ->write("public function getTemplateName()\n", "{\n")
-            ->indent()
-            ->write('return ')
-            ->repr($this->getSourceContext()->getName())
-            ->raw(";\n")
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileIsTraitable(Compiler $compiler)
-    {
-        // A template can be used as a trait if:
-        //   * it has no parent
-        //   * it has no macros
-        //   * it has no body
-        //
-        // Put another way, a template can be used as a trait if it
-        // only contains blocks and use statements.
-        $traitable = !$this->hasNode('parent') && 0 === \count($this->getNode('macros'));
-        if ($traitable) {
-            if ($this->getNode('body') instanceof BodyNode) {
-                $nodes = $this->getNode('body')->getNode(0);
-            } else {
-                $nodes = $this->getNode('body');
-            }
-
-            if (!\count($nodes)) {
-                $nodes = new Node([$nodes]);
-            }
-
-            foreach ($nodes as $node) {
-                if (!\count($node)) {
-                    continue;
-                }
-
-                if ($node instanceof TextNode && ctype_space($node->getAttribute('data'))) {
-                    continue;
-                }
-
-                if ($node instanceof BlockReferenceNode) {
-                    continue;
-                }
-
-                $traitable = false;
-                break;
-            }
-        }
-
-        if ($traitable) {
-            return;
-        }
-
-        $compiler
-            ->write("public function isTraitable()\n", "{\n")
-            ->indent()
-            ->write(sprintf("return %s;\n", $traitable ? 'true' : 'false'))
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileDebugInfo(Compiler $compiler)
-    {
-        $compiler
-            ->write("public function getDebugInfo()\n", "{\n")
-            ->indent()
-            ->write(sprintf("return %s;\n", str_replace("\n", '', var_export(array_reverse($compiler->getDebugInfo(), true), true))))
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileGetSource(Compiler $compiler)
-    {
-        $compiler
-            ->write("/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */\n")
-            ->write("public function getSource()\n", "{\n")
-            ->indent()
-            ->write("@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);\n\n")
-            ->write('return $this->getSourceContext()->getCode();')
-            ->raw("\n")
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileGetSourceContext(Compiler $compiler)
-    {
-        $compiler
-            ->write("public function getSourceContext()\n", "{\n")
-            ->indent()
-            ->write('return new Source(')
-            ->string($compiler->getEnvironment()->isDebug() ? $this->getSourceContext()->getCode() : '')
-            ->raw(', ')
-            ->string($this->getSourceContext()->getName())
-            ->raw(', ')
-            ->string($this->getSourceContext()->getPath())
-            ->raw(");\n")
-            ->outdent()
-            ->write("}\n")
-        ;
-    }
-
-    protected function compileLoadTemplate(Compiler $compiler, $node, $var)
-    {
-        if ($node instanceof ConstantExpression) {
-            $compiler
-                ->write(sprintf('%s = $this->loadTemplate(', $var))
-                ->subcompile($node)
-                ->raw(', ')
-                ->repr($node->getTemplateName())
-                ->raw(', ')
-                ->repr($node->getTemplateLine())
-                ->raw(");\n")
-            ;
-        } else {
-            throw new \LogicException('Trait templates can only be constant nodes.');
-        }
-    }
-}
-
-class_alias('Twig\Node\ModuleNode', 'Twig_Node_Module');
diff --git a/vendor/twig/twig/src/Node/Node.php b/vendor/twig/twig/src/Node/Node.php
deleted file mode 100644
index 5ec7a73f4c4680ba924317c835f035dbbada5813..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/Node.php
+++ /dev/null
@@ -1,274 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Source;
-
-/**
- * Represents a node in the AST.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Node implements \Twig_NodeInterface
-{
-    protected $nodes;
-    protected $attributes;
-    protected $lineno;
-    protected $tag;
-
-    private $name;
-    private $sourceContext;
-
-    /**
-     * @param array  $nodes      An array of named nodes
-     * @param array  $attributes An array of attributes (should not be nodes)
-     * @param int    $lineno     The line number
-     * @param string $tag        The tag name associated with the Node
-     */
-    public function __construct(array $nodes = [], array $attributes = [], $lineno = 0, $tag = null)
-    {
-        foreach ($nodes as $name => $node) {
-            if (!$node instanceof \Twig_NodeInterface) {
-                @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, static::class), E_USER_DEPRECATED);
-            }
-        }
-        $this->nodes = $nodes;
-        $this->attributes = $attributes;
-        $this->lineno = $lineno;
-        $this->tag = $tag;
-    }
-
-    public function __toString()
-    {
-        $attributes = [];
-        foreach ($this->attributes as $name => $value) {
-            $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true)));
-        }
-
-        $repr = [static::class.'('.implode(', ', $attributes)];
-
-        if (\count($this->nodes)) {
-            foreach ($this->nodes as $name => $node) {
-                $len = \strlen($name) + 4;
-                $noderepr = [];
-                foreach (explode("\n", (string) $node) as $line) {
-                    $noderepr[] = str_repeat(' ', $len).$line;
-                }
-
-                $repr[] = sprintf('  %s: %s', $name, ltrim(implode("\n", $noderepr)));
-            }
-
-            $repr[] = ')';
-        } else {
-            $repr[0] .= ')';
-        }
-
-        return implode("\n", $repr);
-    }
-
-    /**
-     * @deprecated since 1.16.1 (to be removed in 2.0)
-     */
-    public function toXml($asDom = false)
-    {
-        @trigger_error(sprintf('%s is deprecated since version 1.16.1 and will be removed in 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        $dom = new \DOMDocument('1.0', 'UTF-8');
-        $dom->formatOutput = true;
-        $dom->appendChild($xml = $dom->createElement('twig'));
-
-        $xml->appendChild($node = $dom->createElement('node'));
-        $node->setAttribute('class', static::class);
-
-        foreach ($this->attributes as $name => $value) {
-            $node->appendChild($attribute = $dom->createElement('attribute'));
-            $attribute->setAttribute('name', $name);
-            $attribute->appendChild($dom->createTextNode($value));
-        }
-
-        foreach ($this->nodes as $name => $n) {
-            if (null === $n) {
-                continue;
-            }
-
-            $child = $n->toXml(true)->getElementsByTagName('node')->item(0);
-            $child = $dom->importNode($child, true);
-            $child->setAttribute('name', $name);
-
-            $node->appendChild($child);
-        }
-
-        return $asDom ? $dom : $dom->saveXML();
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        foreach ($this->nodes as $node) {
-            $node->compile($compiler);
-        }
-    }
-
-    public function getTemplateLine()
-    {
-        return $this->lineno;
-    }
-
-    /**
-     * @deprecated since 1.27 (to be removed in 2.0)
-     */
-    public function getLine()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getTemplateLine() instead.', E_USER_DEPRECATED);
-
-        return $this->lineno;
-    }
-
-    public function getNodeTag()
-    {
-        return $this->tag;
-    }
-
-    /**
-     * @return bool
-     */
-    public function hasAttribute($name)
-    {
-        return \array_key_exists($name, $this->attributes);
-    }
-
-    /**
-     * @return mixed
-     */
-    public function getAttribute($name)
-    {
-        if (!\array_key_exists($name, $this->attributes)) {
-            throw new \LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, static::class));
-        }
-
-        return $this->attributes[$name];
-    }
-
-    /**
-     * @param string $name
-     * @param mixed  $value
-     */
-    public function setAttribute($name, $value)
-    {
-        $this->attributes[$name] = $value;
-    }
-
-    public function removeAttribute($name)
-    {
-        unset($this->attributes[$name]);
-    }
-
-    /**
-     * @return bool
-     */
-    public function hasNode($name)
-    {
-        return \array_key_exists($name, $this->nodes);
-    }
-
-    /**
-     * @return Node
-     */
-    public function getNode($name)
-    {
-        if (!\array_key_exists($name, $this->nodes)) {
-            throw new \LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, static::class));
-        }
-
-        return $this->nodes[$name];
-    }
-
-    public function setNode($name, $node = null)
-    {
-        if (!$node instanceof \Twig_NodeInterface) {
-            @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, static::class), E_USER_DEPRECATED);
-        }
-
-        $this->nodes[$name] = $node;
-    }
-
-    public function removeNode($name)
-    {
-        unset($this->nodes[$name]);
-    }
-
-    public function count()
-    {
-        return \count($this->nodes);
-    }
-
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->nodes);
-    }
-
-    public function setTemplateName($name)
-    {
-        $this->name = $name;
-        foreach ($this->nodes as $node) {
-            if (null !== $node) {
-                $node->setTemplateName($name);
-            }
-        }
-    }
-
-    public function getTemplateName()
-    {
-        return $this->name;
-    }
-
-    public function setSourceContext(Source $source)
-    {
-        $this->sourceContext = $source;
-        foreach ($this->nodes as $node) {
-            if ($node instanceof self) {
-                $node->setSourceContext($source);
-            }
-        }
-    }
-
-    public function getSourceContext()
-    {
-        return $this->sourceContext;
-    }
-
-    /**
-     * @deprecated since 1.27 (to be removed in 2.0)
-     */
-    public function setFilename($name)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use setTemplateName() instead.', E_USER_DEPRECATED);
-
-        $this->setTemplateName($name);
-    }
-
-    /**
-     * @deprecated since 1.27 (to be removed in 2.0)
-     */
-    public function getFilename()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getTemplateName() instead.', E_USER_DEPRECATED);
-
-        return $this->name;
-    }
-}
-
-class_alias('Twig\Node\Node', 'Twig_Node');
-
-// Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name.
-class_exists('Twig\Compiler');
diff --git a/vendor/twig/twig/src/Node/NodeCaptureInterface.php b/vendor/twig/twig/src/Node/NodeCaptureInterface.php
deleted file mode 100644
index 474003f34bda95d91d1c59a20d81f9c2fd490cbd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/NodeCaptureInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-/**
- * Represents a node that captures any nested displayable nodes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface NodeCaptureInterface
-{
-}
-
-class_alias('Twig\Node\NodeCaptureInterface', 'Twig_NodeCaptureInterface');
diff --git a/vendor/twig/twig/src/Node/NodeOutputInterface.php b/vendor/twig/twig/src/Node/NodeOutputInterface.php
deleted file mode 100644
index 8b046ee766180c566a1555eeaa27adf1d33b43a9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/NodeOutputInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-/**
- * Represents a displayable node in the AST.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface NodeOutputInterface
-{
-}
-
-class_alias('Twig\Node\NodeOutputInterface', 'Twig_NodeOutputInterface');
diff --git a/vendor/twig/twig/src/Node/PrintNode.php b/vendor/twig/twig/src/Node/PrintNode.php
deleted file mode 100644
index 27f1ca42272f2ca11d9291d3bf1100a8ceb119b4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/PrintNode.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\AbstractExpression;
-
-/**
- * Represents a node that outputs an expression.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class PrintNode extends Node implements NodeOutputInterface
-{
-    public function __construct(AbstractExpression $expr, $lineno, $tag = null)
-    {
-        parent::__construct(['expr' => $expr], [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write('echo ')
-            ->subcompile($this->getNode('expr'))
-            ->raw(";\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\PrintNode', 'Twig_Node_Print');
diff --git a/vendor/twig/twig/src/Node/SandboxNode.php b/vendor/twig/twig/src/Node/SandboxNode.php
deleted file mode 100644
index 3dcd4d8fa008b1d50e9557c1ff3ad33ec8a82882..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/SandboxNode.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * Represents a sandbox node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SandboxNode extends Node
-{
-    public function __construct(\Twig_NodeInterface $body, $lineno, $tag = null)
-    {
-        parent::__construct(['body' => $body], [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write("if (!\$alreadySandboxed = \$this->sandbox->isSandboxed()) {\n")
-            ->indent()
-            ->write("\$this->sandbox->enableSandbox();\n")
-            ->outdent()
-            ->write("}\n")
-            ->write("try {\n")
-            ->indent()
-            ->subcompile($this->getNode('body'))
-            ->outdent()
-            ->write("} finally {\n")
-            ->indent()
-            ->write("if (!\$alreadySandboxed) {\n")
-            ->indent()
-            ->write("\$this->sandbox->disableSandbox();\n")
-            ->outdent()
-            ->write("}\n")
-            ->outdent()
-            ->write("}\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\SandboxNode', 'Twig_Node_Sandbox');
diff --git a/vendor/twig/twig/src/Node/SandboxedPrintNode.php b/vendor/twig/twig/src/Node/SandboxedPrintNode.php
deleted file mode 100644
index 2359af911047977724cd29c8474d4e900e749ada..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/SandboxedPrintNode.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FilterExpression;
-
-/**
- * Adds a check for the __toString() method when the variable is an object and the sandbox is activated.
- *
- * When there is a simple Print statement, like {{ article }},
- * and if the sandbox is enabled, we need to check that the __toString()
- * method is allowed if 'article' is an object.
- *
- * Not used anymore, to be deprecated in 2.x and removed in 3.0
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SandboxedPrintNode extends PrintNode
-{
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write('echo ')
-        ;
-        $expr = $this->getNode('expr');
-        if ($expr instanceof ConstantExpression) {
-            $compiler
-                ->subcompile($expr)
-                ->raw(";\n")
-            ;
-        } else {
-            $compiler
-                ->write('$this->env->getExtension(\'\Twig\Extension\SandboxExtension\')->ensureToStringAllowed(')
-                ->subcompile($expr)
-                ->raw(");\n")
-            ;
-        }
-    }
-
-    /**
-     * Removes node filters.
-     *
-     * This is mostly needed when another visitor adds filters (like the escaper one).
-     *
-     * @return Node
-     */
-    protected function removeNodeFilter(Node $node)
-    {
-        if ($node instanceof FilterExpression) {
-            return $this->removeNodeFilter($node->getNode('node'));
-        }
-
-        return $node;
-    }
-}
-
-class_alias('Twig\Node\SandboxedPrintNode', 'Twig_Node_SandboxedPrint');
diff --git a/vendor/twig/twig/src/Node/SetNode.php b/vendor/twig/twig/src/Node/SetNode.php
deleted file mode 100644
index 656103b9fd20e6d6a278a8e5515ae3b40a477680..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/SetNode.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-use Twig\Node\Expression\ConstantExpression;
-
-/**
- * Represents a set node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SetNode extends Node implements NodeCaptureInterface
-{
-    public function __construct($capture, \Twig_NodeInterface $names, \Twig_NodeInterface $values, $lineno, $tag = null)
-    {
-        parent::__construct(['names' => $names, 'values' => $values], ['capture' => $capture, 'safe' => false], $lineno, $tag);
-
-        /*
-         * Optimizes the node when capture is used for a large block of text.
-         *
-         * {% set foo %}foo{% endset %} is compiled to $context['foo'] = new Twig\Markup("foo");
-         */
-        if ($this->getAttribute('capture')) {
-            $this->setAttribute('safe', true);
-
-            $values = $this->getNode('values');
-            if ($values instanceof TextNode) {
-                $this->setNode('values', new ConstantExpression($values->getAttribute('data'), $values->getTemplateLine()));
-                $this->setAttribute('capture', false);
-            }
-        }
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->addDebugInfo($this);
-
-        if (\count($this->getNode('names')) > 1) {
-            $compiler->write('list(');
-            foreach ($this->getNode('names') as $idx => $node) {
-                if ($idx) {
-                    $compiler->raw(', ');
-                }
-
-                $compiler->subcompile($node);
-            }
-            $compiler->raw(')');
-        } else {
-            if ($this->getAttribute('capture')) {
-                if ($compiler->getEnvironment()->isDebug()) {
-                    $compiler->write("ob_start();\n");
-                } else {
-                    $compiler->write("ob_start(function () { return ''; });\n");
-                }
-                $compiler
-                    ->subcompile($this->getNode('values'))
-                ;
-            }
-
-            $compiler->subcompile($this->getNode('names'), false);
-
-            if ($this->getAttribute('capture')) {
-                $compiler->raw(" = ('' === \$tmp = ob_get_clean()) ? '' : new Markup(\$tmp, \$this->env->getCharset())");
-            }
-        }
-
-        if (!$this->getAttribute('capture')) {
-            $compiler->raw(' = ');
-
-            if (\count($this->getNode('names')) > 1) {
-                $compiler->write('[');
-                foreach ($this->getNode('values') as $idx => $value) {
-                    if ($idx) {
-                        $compiler->raw(', ');
-                    }
-
-                    $compiler->subcompile($value);
-                }
-                $compiler->raw(']');
-            } else {
-                if ($this->getAttribute('safe')) {
-                    $compiler
-                        ->raw("('' === \$tmp = ")
-                        ->subcompile($this->getNode('values'))
-                        ->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())")
-                    ;
-                } else {
-                    $compiler->subcompile($this->getNode('values'));
-                }
-            }
-        }
-
-        $compiler->raw(";\n");
-    }
-}
-
-class_alias('Twig\Node\SetNode', 'Twig_Node_Set');
diff --git a/vendor/twig/twig/src/Node/SetTempNode.php b/vendor/twig/twig/src/Node/SetTempNode.php
deleted file mode 100644
index 918fb991de008d380e80c2558228b4d555697d8c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/SetTempNode.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * @internal
- */
-class SetTempNode extends Node
-{
-    public function __construct($name, $lineno)
-    {
-        parent::__construct([], ['name' => $name], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $name = $this->getAttribute('name');
-        $compiler
-            ->addDebugInfo($this)
-            ->write('if (isset($context[')
-            ->string($name)
-            ->raw('])) { $_')
-            ->raw($name)
-            ->raw('_ = $context[')
-            ->repr($name)
-            ->raw(']; } else { $_')
-            ->raw($name)
-            ->raw("_ = null; }\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\SetTempNode', 'Twig_Node_SetTemp');
diff --git a/vendor/twig/twig/src/Node/SpacelessNode.php b/vendor/twig/twig/src/Node/SpacelessNode.php
deleted file mode 100644
index c8d32daf6bda61edcdc7cc7c577a0c69b5ae09ae..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/SpacelessNode.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * Represents a spaceless node.
- *
- * It removes spaces between HTML tags.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SpacelessNode extends Node
-{
-    public function __construct(\Twig_NodeInterface $body, $lineno, $tag = 'spaceless')
-    {
-        parent::__construct(['body' => $body], [], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-        ;
-        if ($compiler->getEnvironment()->isDebug()) {
-            $compiler->write("ob_start();\n");
-        } else {
-            $compiler->write("ob_start(function () { return ''; });\n");
-        }
-        $compiler
-            ->subcompile($this->getNode('body'))
-            ->write("echo trim(preg_replace('/>\s+</', '><', ob_get_clean()));\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\SpacelessNode', 'Twig_Node_Spaceless');
diff --git a/vendor/twig/twig/src/Node/TextNode.php b/vendor/twig/twig/src/Node/TextNode.php
deleted file mode 100644
index 9ac435e904f3078e12bc0546114e27efad363fd2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/TextNode.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * Represents a text node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TextNode extends Node implements NodeOutputInterface
-{
-    public function __construct($data, $lineno)
-    {
-        parent::__construct([], ['data' => $data], $lineno);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write('echo ')
-            ->string($this->getAttribute('data'))
-            ->raw(";\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\TextNode', 'Twig_Node_Text');
diff --git a/vendor/twig/twig/src/Node/WithNode.php b/vendor/twig/twig/src/Node/WithNode.php
deleted file mode 100644
index d291dcf9aef16127c231e95d0e2a14b194657862..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Node/WithNode.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Node;
-
-use Twig\Compiler;
-
-/**
- * Represents a nested "with" scope.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class WithNode extends Node
-{
-    public function __construct(Node $body, ?Node $variables, $only, $lineno, $tag = null)
-    {
-        $nodes = ['body' => $body];
-        if (null !== $variables) {
-            $nodes['variables'] = $variables;
-        }
-
-        parent::__construct($nodes, ['only' => (bool) $only], $lineno, $tag);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler->addDebugInfo($this);
-
-        if ($this->hasNode('variables')) {
-            $node = $this->getNode('variables');
-            $varsName = $compiler->getVarName();
-            $compiler
-                ->write(sprintf('$%s = ', $varsName))
-                ->subcompile($node)
-                ->raw(";\n")
-                ->write(sprintf("if (!twig_test_iterable(\$%s)) {\n", $varsName))
-                ->indent()
-                ->write("throw new RuntimeError('Variables passed to the \"with\" tag must be a hash.', ")
-                ->repr($node->getTemplateLine())
-                ->raw(", \$this->getSourceContext());\n")
-                ->outdent()
-                ->write("}\n")
-                ->write(sprintf("\$%s = twig_to_array(\$%s);\n", $varsName, $varsName))
-            ;
-
-            if ($this->getAttribute('only')) {
-                $compiler->write("\$context = ['_parent' => \$context];\n");
-            } else {
-                $compiler->write("\$context['_parent'] = \$context;\n");
-            }
-
-            $compiler->write(sprintf("\$context = \$this->env->mergeGlobals(array_merge(\$context, \$%s));\n", $varsName));
-        } else {
-            $compiler->write("\$context['_parent'] = \$context;\n");
-        }
-
-        $compiler
-            ->subcompile($this->getNode('body'))
-            ->write("\$context = \$context['_parent'];\n")
-        ;
-    }
-}
-
-class_alias('Twig\Node\WithNode', 'Twig_Node_With');
diff --git a/vendor/twig/twig/src/NodeTraverser.php b/vendor/twig/twig/src/NodeTraverser.php
deleted file mode 100644
index bd25d3cc7489d5a707472899d067e4ce1bdb7b14..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/NodeTraverser.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-use Twig\NodeVisitor\NodeVisitorInterface;
-
-/**
- * A node traverser.
- *
- * It visits all nodes and their children and calls the given visitor for each.
- *
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class NodeTraverser
-{
-    protected $env;
-    protected $visitors = [];
-
-    /**
-     * @param NodeVisitorInterface[] $visitors
-     */
-    public function __construct(Environment $env, array $visitors = [])
-    {
-        $this->env = $env;
-        foreach ($visitors as $visitor) {
-            $this->addVisitor($visitor);
-        }
-    }
-
-    public function addVisitor(NodeVisitorInterface $visitor)
-    {
-        $this->visitors[$visitor->getPriority()][] = $visitor;
-    }
-
-    /**
-     * Traverses a node and calls the registered visitors.
-     *
-     * @return \Twig_NodeInterface
-     */
-    public function traverse(\Twig_NodeInterface $node)
-    {
-        ksort($this->visitors);
-        foreach ($this->visitors as $visitors) {
-            foreach ($visitors as $visitor) {
-                $node = $this->traverseForVisitor($visitor, $node);
-            }
-        }
-
-        return $node;
-    }
-
-    protected function traverseForVisitor(NodeVisitorInterface $visitor, \Twig_NodeInterface $node = null)
-    {
-        if (null === $node) {
-            return;
-        }
-
-        $node = $visitor->enterNode($node, $this->env);
-
-        foreach ($node as $k => $n) {
-            if (null === $n) {
-                continue;
-            }
-
-            if (false !== ($m = $this->traverseForVisitor($visitor, $n)) && null !== $m) {
-                if ($m !== $n) {
-                    $node->setNode($k, $m);
-                }
-            } else {
-                $node->removeNode($k);
-            }
-        }
-
-        return $visitor->leaveNode($node, $this->env);
-    }
-}
-
-class_alias('Twig\NodeTraverser', 'Twig_NodeTraverser');
diff --git a/vendor/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php b/vendor/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php
deleted file mode 100644
index b66c3c6f116a52947e52d312b2110b43947ce882..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\NodeVisitor;
-
-use Twig\Environment;
-use Twig\Node\Node;
-
-/**
- * Used to make node visitors compatible with Twig 1.x and 2.x.
- *
- * To be removed in Twig 3.1.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class AbstractNodeVisitor implements NodeVisitorInterface
-{
-    final public function enterNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        if (!$node instanceof Node) {
-            throw new \LogicException(sprintf('%s only supports \Twig\Node\Node instances.', __CLASS__));
-        }
-
-        return $this->doEnterNode($node, $env);
-    }
-
-    final public function leaveNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        if (!$node instanceof Node) {
-            throw new \LogicException(sprintf('%s only supports \Twig\Node\Node instances.', __CLASS__));
-        }
-
-        return $this->doLeaveNode($node, $env);
-    }
-
-    /**
-     * Called before child nodes are visited.
-     *
-     * @return Node The modified node
-     */
-    abstract protected function doEnterNode(Node $node, Environment $env);
-
-    /**
-     * Called after child nodes are visited.
-     *
-     * @return Node|false|null The modified node or null if the node must be removed
-     */
-    abstract protected function doLeaveNode(Node $node, Environment $env);
-}
-
-class_alias('Twig\NodeVisitor\AbstractNodeVisitor', 'Twig_BaseNodeVisitor');
diff --git a/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php b/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php
deleted file mode 100644
index f6e16fa7d77c5ef3777258f7daaf7f5d5371aed8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php
+++ /dev/null
@@ -1,209 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\NodeVisitor;
-
-use Twig\Environment;
-use Twig\Node\AutoEscapeNode;
-use Twig\Node\BlockNode;
-use Twig\Node\BlockReferenceNode;
-use Twig\Node\DoNode;
-use Twig\Node\Expression\ConditionalExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Node\Expression\InlinePrint;
-use Twig\Node\ImportNode;
-use Twig\Node\ModuleNode;
-use Twig\Node\Node;
-use Twig\Node\PrintNode;
-use Twig\NodeTraverser;
-
-/**
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class EscaperNodeVisitor extends AbstractNodeVisitor
-{
-    protected $statusStack = [];
-    protected $blocks = [];
-    protected $safeAnalysis;
-    protected $traverser;
-    protected $defaultStrategy = false;
-    protected $safeVars = [];
-
-    public function __construct()
-    {
-        $this->safeAnalysis = new SafeAnalysisNodeVisitor();
-    }
-
-    protected function doEnterNode(Node $node, Environment $env)
-    {
-        if ($node instanceof ModuleNode) {
-            if ($env->hasExtension('\Twig\Extension\EscaperExtension') && $defaultStrategy = $env->getExtension('\Twig\Extension\EscaperExtension')->getDefaultStrategy($node->getTemplateName())) {
-                $this->defaultStrategy = $defaultStrategy;
-            }
-            $this->safeVars = [];
-            $this->blocks = [];
-        } elseif ($node instanceof AutoEscapeNode) {
-            $this->statusStack[] = $node->getAttribute('value');
-        } elseif ($node instanceof BlockNode) {
-            $this->statusStack[] = isset($this->blocks[$node->getAttribute('name')]) ? $this->blocks[$node->getAttribute('name')] : $this->needEscaping($env);
-        } elseif ($node instanceof ImportNode) {
-            $this->safeVars[] = $node->getNode('var')->getAttribute('name');
-        }
-
-        return $node;
-    }
-
-    protected function doLeaveNode(Node $node, Environment $env)
-    {
-        if ($node instanceof ModuleNode) {
-            $this->defaultStrategy = false;
-            $this->safeVars = [];
-            $this->blocks = [];
-        } elseif ($node instanceof FilterExpression) {
-            return $this->preEscapeFilterNode($node, $env);
-        } elseif ($node instanceof PrintNode && false !== $type = $this->needEscaping($env)) {
-            $expression = $node->getNode('expr');
-            if ($expression instanceof ConditionalExpression && $this->shouldUnwrapConditional($expression, $env, $type)) {
-                return new DoNode($this->unwrapConditional($expression, $env, $type), $expression->getTemplateLine());
-            }
-
-            return $this->escapePrintNode($node, $env, $type);
-        }
-
-        if ($node instanceof AutoEscapeNode || $node instanceof BlockNode) {
-            array_pop($this->statusStack);
-        } elseif ($node instanceof BlockReferenceNode) {
-            $this->blocks[$node->getAttribute('name')] = $this->needEscaping($env);
-        }
-
-        return $node;
-    }
-
-    private function shouldUnwrapConditional(ConditionalExpression $expression, Environment $env, $type)
-    {
-        $expr2Safe = $this->isSafeFor($type, $expression->getNode('expr2'), $env);
-        $expr3Safe = $this->isSafeFor($type, $expression->getNode('expr3'), $env);
-
-        return $expr2Safe !== $expr3Safe;
-    }
-
-    private function unwrapConditional(ConditionalExpression $expression, Environment $env, $type)
-    {
-        // convert "echo a ? b : c" to "a ? echo b : echo c" recursively
-        $expr2 = $expression->getNode('expr2');
-        if ($expr2 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr2, $env, $type)) {
-            $expr2 = $this->unwrapConditional($expr2, $env, $type);
-        } else {
-            $expr2 = $this->escapeInlinePrintNode(new InlinePrint($expr2, $expr2->getTemplateLine()), $env, $type);
-        }
-        $expr3 = $expression->getNode('expr3');
-        if ($expr3 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr3, $env, $type)) {
-            $expr3 = $this->unwrapConditional($expr3, $env, $type);
-        } else {
-            $expr3 = $this->escapeInlinePrintNode(new InlinePrint($expr3, $expr3->getTemplateLine()), $env, $type);
-        }
-
-        return new ConditionalExpression($expression->getNode('expr1'), $expr2, $expr3, $expression->getTemplateLine());
-    }
-
-    private function escapeInlinePrintNode(InlinePrint $node, Environment $env, $type)
-    {
-        $expression = $node->getNode('node');
-
-        if ($this->isSafeFor($type, $expression, $env)) {
-            return $node;
-        }
-
-        return new InlinePrint($this->getEscaperFilter($type, $expression), $node->getTemplateLine());
-    }
-
-    protected function escapePrintNode(PrintNode $node, Environment $env, $type)
-    {
-        if (false === $type) {
-            return $node;
-        }
-
-        $expression = $node->getNode('expr');
-
-        if ($this->isSafeFor($type, $expression, $env)) {
-            return $node;
-        }
-
-        $class = \get_class($node);
-
-        return new $class($this->getEscaperFilter($type, $expression), $node->getTemplateLine());
-    }
-
-    protected function preEscapeFilterNode(FilterExpression $filter, Environment $env)
-    {
-        $name = $filter->getNode('filter')->getAttribute('value');
-
-        $type = $env->getFilter($name)->getPreEscape();
-        if (null === $type) {
-            return $filter;
-        }
-
-        $node = $filter->getNode('node');
-        if ($this->isSafeFor($type, $node, $env)) {
-            return $filter;
-        }
-
-        $filter->setNode('node', $this->getEscaperFilter($type, $node));
-
-        return $filter;
-    }
-
-    protected function isSafeFor($type, \Twig_NodeInterface $expression, $env)
-    {
-        $safe = $this->safeAnalysis->getSafe($expression);
-
-        if (null === $safe) {
-            if (null === $this->traverser) {
-                $this->traverser = new NodeTraverser($env, [$this->safeAnalysis]);
-            }
-
-            $this->safeAnalysis->setSafeVars($this->safeVars);
-
-            $this->traverser->traverse($expression);
-            $safe = $this->safeAnalysis->getSafe($expression);
-        }
-
-        return \in_array($type, $safe) || \in_array('all', $safe);
-    }
-
-    protected function needEscaping(Environment $env)
-    {
-        if (\count($this->statusStack)) {
-            return $this->statusStack[\count($this->statusStack) - 1];
-        }
-
-        return $this->defaultStrategy ? $this->defaultStrategy : false;
-    }
-
-    protected function getEscaperFilter($type, \Twig_NodeInterface $node)
-    {
-        $line = $node->getTemplateLine();
-        $name = new ConstantExpression('escape', $line);
-        $args = new Node([new ConstantExpression((string) $type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]);
-
-        return new FilterExpression($node, $name, $args, $line);
-    }
-
-    public function getPriority()
-    {
-        return 0;
-    }
-}
-
-class_alias('Twig\NodeVisitor\EscaperNodeVisitor', 'Twig_NodeVisitor_Escaper');
diff --git a/vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php b/vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php
deleted file mode 100644
index 9b8730b48deb4148e4c604f52b0bb67ec7445f1d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\NodeVisitor;
-
-use Twig\Environment;
-
-/**
- * Interface for node visitor classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface NodeVisitorInterface
-{
-    /**
-     * Called before child nodes are visited.
-     *
-     * @return \Twig_NodeInterface The modified node
-     */
-    public function enterNode(\Twig_NodeInterface $node, Environment $env);
-
-    /**
-     * Called after child nodes are visited.
-     *
-     * @return \Twig_NodeInterface|false|null The modified node or null if the node must be removed
-     */
-    public function leaveNode(\Twig_NodeInterface $node, Environment $env);
-
-    /**
-     * Returns the priority for this visitor.
-     *
-     * Priority should be between -10 and 10 (0 is the default).
-     *
-     * @return int The priority level
-     */
-    public function getPriority();
-}
-
-class_alias('Twig\NodeVisitor\NodeVisitorInterface', 'Twig_NodeVisitorInterface');
-
-// Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name.
-class_exists('Twig\Environment');
diff --git a/vendor/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php b/vendor/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php
deleted file mode 100644
index e5ea9b7cc396fcd21dfa2845dcd4f93f97b6383d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php
+++ /dev/null
@@ -1,273 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\NodeVisitor;
-
-use Twig\Environment;
-use Twig\Node\BlockReferenceNode;
-use Twig\Node\BodyNode;
-use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\Expression\BlockReferenceExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Node\Expression\FunctionExpression;
-use Twig\Node\Expression\GetAttrExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Expression\ParentExpression;
-use Twig\Node\Expression\TempNameExpression;
-use Twig\Node\ForNode;
-use Twig\Node\IncludeNode;
-use Twig\Node\Node;
-use Twig\Node\PrintNode;
-use Twig\Node\SetTempNode;
-
-/**
- * Tries to optimize the AST.
- *
- * This visitor is always the last registered one.
- *
- * You can configure which optimizations you want to activate via the
- * optimizer mode.
- *
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class OptimizerNodeVisitor extends AbstractNodeVisitor
-{
-    const OPTIMIZE_ALL = -1;
-    const OPTIMIZE_NONE = 0;
-    const OPTIMIZE_FOR = 2;
-    const OPTIMIZE_RAW_FILTER = 4;
-    const OPTIMIZE_VAR_ACCESS = 8;
-
-    protected $loops = [];
-    protected $loopsTargets = [];
-    protected $optimizers;
-    protected $prependedNodes = [];
-    protected $inABody = false;
-
-    /**
-     * @param int $optimizers The optimizer mode
-     */
-    public function __construct($optimizers = -1)
-    {
-        if (!\is_int($optimizers) || $optimizers > (self::OPTIMIZE_FOR | self::OPTIMIZE_RAW_FILTER | self::OPTIMIZE_VAR_ACCESS)) {
-            throw new \InvalidArgumentException(sprintf('Optimizer mode "%s" is not valid.', $optimizers));
-        }
-
-        $this->optimizers = $optimizers;
-    }
-
-    protected function doEnterNode(Node $node, Environment $env)
-    {
-        if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) {
-            $this->enterOptimizeFor($node, $env);
-        }
-
-        if (\PHP_VERSION_ID < 50400 && self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('\Twig\Extension\SandboxExtension')) {
-            if ($this->inABody) {
-                if (!$node instanceof AbstractExpression) {
-                    if ('Twig_Node' !== \get_class($node)) {
-                        array_unshift($this->prependedNodes, []);
-                    }
-                } else {
-                    $node = $this->optimizeVariables($node, $env);
-                }
-            } elseif ($node instanceof BodyNode) {
-                $this->inABody = true;
-            }
-        }
-
-        return $node;
-    }
-
-    protected function doLeaveNode(Node $node, Environment $env)
-    {
-        $expression = $node instanceof AbstractExpression;
-
-        if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) {
-            $this->leaveOptimizeFor($node, $env);
-        }
-
-        if (self::OPTIMIZE_RAW_FILTER === (self::OPTIMIZE_RAW_FILTER & $this->optimizers)) {
-            $node = $this->optimizeRawFilter($node, $env);
-        }
-
-        $node = $this->optimizePrintNode($node, $env);
-
-        if (self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('\Twig\Extension\SandboxExtension')) {
-            if ($node instanceof BodyNode) {
-                $this->inABody = false;
-            } elseif ($this->inABody) {
-                if (!$expression && 'Twig_Node' !== \get_class($node) && $prependedNodes = array_shift($this->prependedNodes)) {
-                    $nodes = [];
-                    foreach (array_unique($prependedNodes) as $name) {
-                        $nodes[] = new SetTempNode($name, $node->getTemplateLine());
-                    }
-
-                    $nodes[] = $node;
-                    $node = new Node($nodes);
-                }
-            }
-        }
-
-        return $node;
-    }
-
-    protected function optimizeVariables(\Twig_NodeInterface $node, Environment $env)
-    {
-        if ('Twig_Node_Expression_Name' === \get_class($node) && $node->isSimple()) {
-            $this->prependedNodes[0][] = $node->getAttribute('name');
-
-            return new TempNameExpression($node->getAttribute('name'), $node->getTemplateLine());
-        }
-
-        return $node;
-    }
-
-    /**
-     * Optimizes print nodes.
-     *
-     * It replaces:
-     *
-     *   * "echo $this->render(Parent)Block()" with "$this->display(Parent)Block()"
-     *
-     * @return \Twig_NodeInterface
-     */
-    protected function optimizePrintNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        if (!$node instanceof PrintNode) {
-            return $node;
-        }
-
-        $exprNode = $node->getNode('expr');
-        if (
-            $exprNode instanceof BlockReferenceExpression ||
-            $exprNode instanceof ParentExpression
-        ) {
-            $exprNode->setAttribute('output', true);
-
-            return $exprNode;
-        }
-
-        return $node;
-    }
-
-    /**
-     * Removes "raw" filters.
-     *
-     * @return \Twig_NodeInterface
-     */
-    protected function optimizeRawFilter(\Twig_NodeInterface $node, Environment $env)
-    {
-        if ($node instanceof FilterExpression && 'raw' == $node->getNode('filter')->getAttribute('value')) {
-            return $node->getNode('node');
-        }
-
-        return $node;
-    }
-
-    /**
-     * Optimizes "for" tag by removing the "loop" variable creation whenever possible.
-     */
-    protected function enterOptimizeFor(\Twig_NodeInterface $node, Environment $env)
-    {
-        if ($node instanceof ForNode) {
-            // disable the loop variable by default
-            $node->setAttribute('with_loop', false);
-            array_unshift($this->loops, $node);
-            array_unshift($this->loopsTargets, $node->getNode('value_target')->getAttribute('name'));
-            array_unshift($this->loopsTargets, $node->getNode('key_target')->getAttribute('name'));
-        } elseif (!$this->loops) {
-            // we are outside a loop
-            return;
-        }
-
-        // when do we need to add the loop variable back?
-
-        // the loop variable is referenced for the current loop
-        elseif ($node instanceof NameExpression && 'loop' === $node->getAttribute('name')) {
-            $node->setAttribute('always_defined', true);
-            $this->addLoopToCurrent();
-        }
-
-        // optimize access to loop targets
-        elseif ($node instanceof NameExpression && \in_array($node->getAttribute('name'), $this->loopsTargets)) {
-            $node->setAttribute('always_defined', true);
-        }
-
-        // block reference
-        elseif ($node instanceof BlockReferenceNode || $node instanceof BlockReferenceExpression) {
-            $this->addLoopToCurrent();
-        }
-
-        // include without the only attribute
-        elseif ($node instanceof IncludeNode && !$node->getAttribute('only')) {
-            $this->addLoopToAll();
-        }
-
-        // include function without the with_context=false parameter
-        elseif ($node instanceof FunctionExpression
-            && 'include' === $node->getAttribute('name')
-            && (!$node->getNode('arguments')->hasNode('with_context')
-                 || false !== $node->getNode('arguments')->getNode('with_context')->getAttribute('value')
-               )
-        ) {
-            $this->addLoopToAll();
-        }
-
-        // the loop variable is referenced via an attribute
-        elseif ($node instanceof GetAttrExpression
-            && (!$node->getNode('attribute') instanceof ConstantExpression
-                || 'parent' === $node->getNode('attribute')->getAttribute('value')
-               )
-            && (true === $this->loops[0]->getAttribute('with_loop')
-                || ($node->getNode('node') instanceof NameExpression
-                    && 'loop' === $node->getNode('node')->getAttribute('name')
-                   )
-               )
-        ) {
-            $this->addLoopToAll();
-        }
-    }
-
-    /**
-     * Optimizes "for" tag by removing the "loop" variable creation whenever possible.
-     */
-    protected function leaveOptimizeFor(\Twig_NodeInterface $node, Environment $env)
-    {
-        if ($node instanceof ForNode) {
-            array_shift($this->loops);
-            array_shift($this->loopsTargets);
-            array_shift($this->loopsTargets);
-        }
-    }
-
-    protected function addLoopToCurrent()
-    {
-        $this->loops[0]->setAttribute('with_loop', true);
-    }
-
-    protected function addLoopToAll()
-    {
-        foreach ($this->loops as $loop) {
-            $loop->setAttribute('with_loop', true);
-        }
-    }
-
-    public function getPriority()
-    {
-        return 255;
-    }
-}
-
-class_alias('Twig\NodeVisitor\OptimizerNodeVisitor', 'Twig_NodeVisitor_Optimizer');
diff --git a/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php b/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php
deleted file mode 100644
index 97a7a3e6eebda081db690f26cfc00ecd2c712f02..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\NodeVisitor;
-
-use Twig\Environment;
-use Twig\Node\Expression\BlockReferenceExpression;
-use Twig\Node\Expression\ConditionalExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Node\Expression\FunctionExpression;
-use Twig\Node\Expression\GetAttrExpression;
-use Twig\Node\Expression\MethodCallExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Expression\ParentExpression;
-use Twig\Node\Node;
-
-/**
- * @final
- */
-class SafeAnalysisNodeVisitor extends AbstractNodeVisitor
-{
-    protected $data = [];
-    protected $safeVars = [];
-
-    public function setSafeVars($safeVars)
-    {
-        $this->safeVars = $safeVars;
-    }
-
-    public function getSafe(\Twig_NodeInterface $node)
-    {
-        $hash = spl_object_hash($node);
-        if (!isset($this->data[$hash])) {
-            return;
-        }
-
-        foreach ($this->data[$hash] as $bucket) {
-            if ($bucket['key'] !== $node) {
-                continue;
-            }
-
-            if (\in_array('html_attr', $bucket['value'])) {
-                $bucket['value'][] = 'html';
-            }
-
-            return $bucket['value'];
-        }
-    }
-
-    protected function setSafe(\Twig_NodeInterface $node, array $safe)
-    {
-        $hash = spl_object_hash($node);
-        if (isset($this->data[$hash])) {
-            foreach ($this->data[$hash] as &$bucket) {
-                if ($bucket['key'] === $node) {
-                    $bucket['value'] = $safe;
-
-                    return;
-                }
-            }
-        }
-        $this->data[$hash][] = [
-            'key' => $node,
-            'value' => $safe,
-        ];
-    }
-
-    protected function doEnterNode(Node $node, Environment $env)
-    {
-        return $node;
-    }
-
-    protected function doLeaveNode(Node $node, Environment $env)
-    {
-        if ($node instanceof ConstantExpression) {
-            // constants are marked safe for all
-            $this->setSafe($node, ['all']);
-        } elseif ($node instanceof BlockReferenceExpression) {
-            // blocks are safe by definition
-            $this->setSafe($node, ['all']);
-        } elseif ($node instanceof ParentExpression) {
-            // parent block is safe by definition
-            $this->setSafe($node, ['all']);
-        } elseif ($node instanceof ConditionalExpression) {
-            // intersect safeness of both operands
-            $safe = $this->intersectSafe($this->getSafe($node->getNode('expr2')), $this->getSafe($node->getNode('expr3')));
-            $this->setSafe($node, $safe);
-        } elseif ($node instanceof FilterExpression) {
-            // filter expression is safe when the filter is safe
-            $name = $node->getNode('filter')->getAttribute('value');
-            $args = $node->getNode('arguments');
-            if (false !== $filter = $env->getFilter($name)) {
-                $safe = $filter->getSafe($args);
-                if (null === $safe) {
-                    $safe = $this->intersectSafe($this->getSafe($node->getNode('node')), $filter->getPreservesSafety());
-                }
-                $this->setSafe($node, $safe);
-            } else {
-                $this->setSafe($node, []);
-            }
-        } elseif ($node instanceof FunctionExpression) {
-            // function expression is safe when the function is safe
-            $name = $node->getAttribute('name');
-            $args = $node->getNode('arguments');
-            $function = $env->getFunction($name);
-            if (false !== $function) {
-                $this->setSafe($node, $function->getSafe($args));
-            } else {
-                $this->setSafe($node, []);
-            }
-        } elseif ($node instanceof MethodCallExpression) {
-            if ($node->getAttribute('safe')) {
-                $this->setSafe($node, ['all']);
-            } else {
-                $this->setSafe($node, []);
-            }
-        } elseif ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression) {
-            $name = $node->getNode('node')->getAttribute('name');
-            // attributes on template instances are safe
-            if ('_self' == $name || \in_array($name, $this->safeVars)) {
-                $this->setSafe($node, ['all']);
-            } else {
-                $this->setSafe($node, []);
-            }
-        } else {
-            $this->setSafe($node, []);
-        }
-
-        return $node;
-    }
-
-    protected function intersectSafe(array $a = null, array $b = null)
-    {
-        if (null === $a || null === $b) {
-            return [];
-        }
-
-        if (\in_array('all', $a)) {
-            return $b;
-        }
-
-        if (\in_array('all', $b)) {
-            return $a;
-        }
-
-        return array_intersect($a, $b);
-    }
-
-    public function getPriority()
-    {
-        return 0;
-    }
-}
-
-class_alias('Twig\NodeVisitor\SafeAnalysisNodeVisitor', 'Twig_NodeVisitor_SafeAnalysis');
diff --git a/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php b/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
deleted file mode 100644
index 9bee9f5cb5ce34c10d414ef8929b1be7054b4660..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\NodeVisitor;
-
-use Twig\Environment;
-use Twig\Node\CheckSecurityCallNode;
-use Twig\Node\CheckSecurityNode;
-use Twig\Node\CheckToStringNode;
-use Twig\Node\Expression\Binary\ConcatBinary;
-use Twig\Node\Expression\Binary\RangeBinary;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Node\Expression\FunctionExpression;
-use Twig\Node\Expression\GetAttrExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\ModuleNode;
-use Twig\Node\Node;
-use Twig\Node\PrintNode;
-use Twig\Node\SetNode;
-
-/**
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SandboxNodeVisitor extends AbstractNodeVisitor
-{
-    protected $inAModule = false;
-    protected $tags;
-    protected $filters;
-    protected $functions;
-
-    private $needsToStringWrap = false;
-
-    protected function doEnterNode(Node $node, Environment $env)
-    {
-        if ($node instanceof ModuleNode) {
-            $this->inAModule = true;
-            $this->tags = [];
-            $this->filters = [];
-            $this->functions = [];
-
-            return $node;
-        } elseif ($this->inAModule) {
-            // look for tags
-            if ($node->getNodeTag() && !isset($this->tags[$node->getNodeTag()])) {
-                $this->tags[$node->getNodeTag()] = $node;
-            }
-
-            // look for filters
-            if ($node instanceof FilterExpression && !isset($this->filters[$node->getNode('filter')->getAttribute('value')])) {
-                $this->filters[$node->getNode('filter')->getAttribute('value')] = $node;
-            }
-
-            // look for functions
-            if ($node instanceof FunctionExpression && !isset($this->functions[$node->getAttribute('name')])) {
-                $this->functions[$node->getAttribute('name')] = $node;
-            }
-
-            // the .. operator is equivalent to the range() function
-            if ($node instanceof RangeBinary && !isset($this->functions['range'])) {
-                $this->functions['range'] = $node;
-            }
-
-            if ($node instanceof PrintNode) {
-                $this->needsToStringWrap = true;
-                $this->wrapNode($node, 'expr');
-            }
-
-            if ($node instanceof SetNode && !$node->getAttribute('capture')) {
-                $this->needsToStringWrap = true;
-            }
-
-            // wrap outer nodes that can implicitly call __toString()
-            if ($this->needsToStringWrap) {
-                if ($node instanceof ConcatBinary) {
-                    $this->wrapNode($node, 'left');
-                    $this->wrapNode($node, 'right');
-                }
-                if ($node instanceof FilterExpression) {
-                    $this->wrapNode($node, 'node');
-                    $this->wrapArrayNode($node, 'arguments');
-                }
-                if ($node instanceof FunctionExpression) {
-                    $this->wrapArrayNode($node, 'arguments');
-                }
-            }
-        }
-
-        return $node;
-    }
-
-    protected function doLeaveNode(Node $node, Environment $env)
-    {
-        if ($node instanceof ModuleNode) {
-            $this->inAModule = false;
-
-            $node->setNode('constructor_end', new Node([new CheckSecurityCallNode(), $node->getNode('constructor_end')]));
-            $node->setNode('class_end', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')]));
-        } elseif ($this->inAModule) {
-            if ($node instanceof PrintNode || $node instanceof SetNode) {
-                $this->needsToStringWrap = false;
-            }
-        }
-
-        return $node;
-    }
-
-    private function wrapNode(Node $node, $name)
-    {
-        $expr = $node->getNode($name);
-        if ($expr instanceof NameExpression || $expr instanceof GetAttrExpression) {
-            $node->setNode($name, new CheckToStringNode($expr));
-        }
-    }
-
-    private function wrapArrayNode(Node $node, $name)
-    {
-        $args = $node->getNode($name);
-        foreach ($args as $name => $_) {
-            $this->wrapNode($args, $name);
-        }
-    }
-
-    public function getPriority()
-    {
-        return 0;
-    }
-}
-
-class_alias('Twig\NodeVisitor\SandboxNodeVisitor', 'Twig_NodeVisitor_Sandbox');
diff --git a/vendor/twig/twig/src/Parser.php b/vendor/twig/twig/src/Parser.php
deleted file mode 100644
index 9fb6a83a4e683ba7f49d683677b31d1ea6068f87..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Parser.php
+++ /dev/null
@@ -1,439 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\BlockNode;
-use Twig\Node\BlockReferenceNode;
-use Twig\Node\BodyNode;
-use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\MacroNode;
-use Twig\Node\ModuleNode;
-use Twig\Node\Node;
-use Twig\Node\NodeCaptureInterface;
-use Twig\Node\NodeOutputInterface;
-use Twig\Node\PrintNode;
-use Twig\Node\TextNode;
-use Twig\NodeVisitor\NodeVisitorInterface;
-use Twig\TokenParser\TokenParserInterface;
-
-/**
- * Default parser implementation.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Parser implements \Twig_ParserInterface
-{
-    protected $stack = [];
-    protected $stream;
-    protected $parent;
-    protected $handlers;
-    protected $visitors;
-    protected $expressionParser;
-    protected $blocks;
-    protected $blockStack;
-    protected $macros;
-    protected $env;
-    protected $reservedMacroNames;
-    protected $importedSymbols;
-    protected $traits;
-    protected $embeddedTemplates = [];
-    private $varNameSalt = 0;
-
-    public function __construct(Environment $env)
-    {
-        $this->env = $env;
-    }
-
-    /**
-     * @deprecated since 1.27 (to be removed in 2.0)
-     */
-    public function getEnvironment()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0.', E_USER_DEPRECATED);
-
-        return $this->env;
-    }
-
-    public function getVarName()
-    {
-        return sprintf('__internal_%s', hash('sha256', __METHOD__.$this->stream->getSourceContext()->getCode().$this->varNameSalt++));
-    }
-
-    /**
-     * @deprecated since 1.27 (to be removed in 2.0). Use $parser->getStream()->getSourceContext()->getPath() instead.
-     */
-    public function getFilename()
-    {
-        @trigger_error(sprintf('The "%s" method is deprecated since version 1.27 and will be removed in 2.0. Use $parser->getStream()->getSourceContext()->getPath() instead.', __METHOD__), E_USER_DEPRECATED);
-
-        return $this->stream->getSourceContext()->getName();
-    }
-
-    public function parse(TokenStream $stream, $test = null, $dropNeedle = false)
-    {
-        // push all variables into the stack to keep the current state of the parser
-        // using get_object_vars() instead of foreach would lead to https://bugs.php.net/71336
-        // This hack can be removed when min version if PHP 7.0
-        $vars = [];
-        foreach ($this as $k => $v) {
-            $vars[$k] = $v;
-        }
-
-        unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser'], $vars['reservedMacroNames']);
-        $this->stack[] = $vars;
-
-        // tag handlers
-        if (null === $this->handlers) {
-            $this->handlers = $this->env->getTokenParsers();
-            $this->handlers->setParser($this);
-        }
-
-        // node visitors
-        if (null === $this->visitors) {
-            $this->visitors = $this->env->getNodeVisitors();
-        }
-
-        if (null === $this->expressionParser) {
-            $this->expressionParser = new ExpressionParser($this, $this->env);
-        }
-
-        $this->stream = $stream;
-        $this->parent = null;
-        $this->blocks = [];
-        $this->macros = [];
-        $this->traits = [];
-        $this->blockStack = [];
-        $this->importedSymbols = [[]];
-        $this->embeddedTemplates = [];
-        $this->varNameSalt = 0;
-
-        try {
-            $body = $this->subparse($test, $dropNeedle);
-
-            if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) {
-                $body = new Node();
-            }
-        } catch (SyntaxError $e) {
-            if (!$e->getSourceContext()) {
-                $e->setSourceContext($this->stream->getSourceContext());
-            }
-
-            if (!$e->getTemplateLine()) {
-                $e->setTemplateLine($this->stream->getCurrent()->getLine());
-            }
-
-            throw $e;
-        }
-
-        $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Node($this->blocks), new Node($this->macros), new Node($this->traits), $this->embeddedTemplates, $stream->getSourceContext());
-
-        $traverser = new NodeTraverser($this->env, $this->visitors);
-
-        $node = $traverser->traverse($node);
-
-        // restore previous stack so previous parse() call can resume working
-        foreach (array_pop($this->stack) as $key => $val) {
-            $this->$key = $val;
-        }
-
-        return $node;
-    }
-
-    public function subparse($test, $dropNeedle = false)
-    {
-        $lineno = $this->getCurrentToken()->getLine();
-        $rv = [];
-        while (!$this->stream->isEOF()) {
-            switch ($this->getCurrentToken()->getType()) {
-                case Token::TEXT_TYPE:
-                    $token = $this->stream->next();
-                    $rv[] = new TextNode($token->getValue(), $token->getLine());
-                    break;
-
-                case Token::VAR_START_TYPE:
-                    $token = $this->stream->next();
-                    $expr = $this->expressionParser->parseExpression();
-                    $this->stream->expect(Token::VAR_END_TYPE);
-                    $rv[] = new PrintNode($expr, $token->getLine());
-                    break;
-
-                case Token::BLOCK_START_TYPE:
-                    $this->stream->next();
-                    $token = $this->getCurrentToken();
-
-                    if (Token::NAME_TYPE !== $token->getType()) {
-                        throw new SyntaxError('A block must start with a tag name.', $token->getLine(), $this->stream->getSourceContext());
-                    }
-
-                    if (null !== $test && \call_user_func($test, $token)) {
-                        if ($dropNeedle) {
-                            $this->stream->next();
-                        }
-
-                        if (1 === \count($rv)) {
-                            return $rv[0];
-                        }
-
-                        return new Node($rv, [], $lineno);
-                    }
-
-                    $subparser = $this->handlers->getTokenParser($token->getValue());
-                    if (null === $subparser) {
-                        if (null !== $test) {
-                            $e = new SyntaxError(sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->stream->getSourceContext());
-
-                            if (\is_array($test) && isset($test[0]) && $test[0] instanceof TokenParserInterface) {
-                                $e->appendMessage(sprintf(' (expecting closing tag for the "%s" tag defined near line %s).', $test[0]->getTag(), $lineno));
-                            }
-                        } else {
-                            $e = new SyntaxError(sprintf('Unknown "%s" tag.', $token->getValue()), $token->getLine(), $this->stream->getSourceContext());
-                            $e->addSuggestions($token->getValue(), array_keys($this->env->getTags()));
-                        }
-
-                        throw $e;
-                    }
-
-                    $this->stream->next();
-
-                    $node = $subparser->parse($token);
-                    if (null !== $node) {
-                        $rv[] = $node;
-                    }
-                    break;
-
-                default:
-                    throw new SyntaxError('Lexer or parser ended up in unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext());
-            }
-        }
-
-        if (1 === \count($rv)) {
-            return $rv[0];
-        }
-
-        return new Node($rv, [], $lineno);
-    }
-
-    /**
-     * @deprecated since 1.27 (to be removed in 2.0)
-     */
-    public function addHandler($name, $class)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0.', E_USER_DEPRECATED);
-
-        $this->handlers[$name] = $class;
-    }
-
-    /**
-     * @deprecated since 1.27 (to be removed in 2.0)
-     */
-    public function addNodeVisitor(NodeVisitorInterface $visitor)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0.', E_USER_DEPRECATED);
-
-        $this->visitors[] = $visitor;
-    }
-
-    public function getBlockStack()
-    {
-        return $this->blockStack;
-    }
-
-    public function peekBlockStack()
-    {
-        return isset($this->blockStack[\count($this->blockStack) - 1]) ? $this->blockStack[\count($this->blockStack) - 1] : null;
-    }
-
-    public function popBlockStack()
-    {
-        array_pop($this->blockStack);
-    }
-
-    public function pushBlockStack($name)
-    {
-        $this->blockStack[] = $name;
-    }
-
-    public function hasBlock($name)
-    {
-        return isset($this->blocks[$name]);
-    }
-
-    public function getBlock($name)
-    {
-        return $this->blocks[$name];
-    }
-
-    public function setBlock($name, BlockNode $value)
-    {
-        $this->blocks[$name] = new BodyNode([$value], [], $value->getTemplateLine());
-    }
-
-    public function hasMacro($name)
-    {
-        return isset($this->macros[$name]);
-    }
-
-    public function setMacro($name, MacroNode $node)
-    {
-        if ($this->isReservedMacroName($name)) {
-            throw new SyntaxError(sprintf('"%s" cannot be used as a macro name as it is a reserved keyword.', $name), $node->getTemplateLine(), $this->stream->getSourceContext());
-        }
-
-        $this->macros[$name] = $node;
-    }
-
-    public function isReservedMacroName($name)
-    {
-        if (null === $this->reservedMacroNames) {
-            $this->reservedMacroNames = [];
-            $r = new \ReflectionClass($this->env->getBaseTemplateClass());
-            foreach ($r->getMethods() as $method) {
-                $methodName = strtr($method->getName(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
-
-                if ('get' === substr($methodName, 0, 3) && isset($methodName[3])) {
-                    $this->reservedMacroNames[] = substr($methodName, 3);
-                }
-            }
-        }
-
-        return \in_array(strtr($name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), $this->reservedMacroNames);
-    }
-
-    public function addTrait($trait)
-    {
-        $this->traits[] = $trait;
-    }
-
-    public function hasTraits()
-    {
-        return \count($this->traits) > 0;
-    }
-
-    public function embedTemplate(ModuleNode $template)
-    {
-        $template->setIndex(mt_rand());
-
-        $this->embeddedTemplates[] = $template;
-    }
-
-    public function addImportedSymbol($type, $alias, $name = null, AbstractExpression $node = null)
-    {
-        $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $node];
-    }
-
-    public function getImportedSymbol($type, $alias)
-    {
-        if (null !== $this->peekBlockStack()) {
-            foreach ($this->importedSymbols as $functions) {
-                if (isset($functions[$type][$alias])) {
-                    if (\count($this->blockStack) > 1) {
-                        return null;
-                    }
-
-                    return $functions[$type][$alias];
-                }
-            }
-        } else {
-            return isset($this->importedSymbols[0][$type][$alias]) ? $this->importedSymbols[0][$type][$alias] : null;
-        }
-    }
-
-    public function isMainScope()
-    {
-        return 1 === \count($this->importedSymbols);
-    }
-
-    public function pushLocalScope()
-    {
-        array_unshift($this->importedSymbols, []);
-    }
-
-    public function popLocalScope()
-    {
-        array_shift($this->importedSymbols);
-    }
-
-    /**
-     * @return ExpressionParser
-     */
-    public function getExpressionParser()
-    {
-        return $this->expressionParser;
-    }
-
-    public function getParent()
-    {
-        return $this->parent;
-    }
-
-    public function setParent($parent)
-    {
-        $this->parent = $parent;
-    }
-
-    /**
-     * @return TokenStream
-     */
-    public function getStream()
-    {
-        return $this->stream;
-    }
-
-    /**
-     * @return Token
-     */
-    public function getCurrentToken()
-    {
-        return $this->stream->getCurrent();
-    }
-
-    protected function filterBodyNodes(\Twig_NodeInterface $node)
-    {
-        // check that the body does not contain non-empty output nodes
-        if (
-            ($node instanceof TextNode && !ctype_space($node->getAttribute('data')))
-            ||
-            (!$node instanceof TextNode && !$node instanceof BlockReferenceNode && $node instanceof NodeOutputInterface)
-        ) {
-            if (false !== strpos((string) $node, \chr(0xEF).\chr(0xBB).\chr(0xBF))) {
-                $t = substr($node->getAttribute('data'), 3);
-                if ('' === $t || ctype_space($t)) {
-                    // bypass empty nodes starting with a BOM
-                    return;
-                }
-            }
-
-            throw new SyntaxError('A template that extends another one cannot include content outside Twig blocks. Did you forget to put the content inside a {% block %} tag?', $node->getTemplateLine(), $this->stream->getSourceContext());
-        }
-
-        // bypass nodes that will "capture" the output
-        if ($node instanceof NodeCaptureInterface) {
-            return $node;
-        }
-
-        if ($node instanceof NodeOutputInterface) {
-            return;
-        }
-
-        foreach ($node as $k => $n) {
-            if (null !== $n && null === $this->filterBodyNodes($n)) {
-                $node->removeNode($k);
-            }
-        }
-
-        return $node;
-    }
-}
-
-class_alias('Twig\Parser', 'Twig_Parser');
diff --git a/vendor/twig/twig/src/Profiler/Dumper/BaseDumper.php b/vendor/twig/twig/src/Profiler/Dumper/BaseDumper.php
deleted file mode 100644
index d965dc75421e43cafe0b51edea5e25d5e26313c3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Profiler/Dumper/BaseDumper.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Profiler\Dumper;
-
-use Twig\Profiler\Profile;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class BaseDumper
-{
-    private $root;
-
-    public function dump(Profile $profile)
-    {
-        return $this->dumpProfile($profile);
-    }
-
-    abstract protected function formatTemplate(Profile $profile, $prefix);
-
-    abstract protected function formatNonTemplate(Profile $profile, $prefix);
-
-    abstract protected function formatTime(Profile $profile, $percent);
-
-    private function dumpProfile(Profile $profile, $prefix = '', $sibling = false)
-    {
-        if ($profile->isRoot()) {
-            $this->root = $profile->getDuration();
-            $start = $profile->getName();
-        } else {
-            if ($profile->isTemplate()) {
-                $start = $this->formatTemplate($profile, $prefix);
-            } else {
-                $start = $this->formatNonTemplate($profile, $prefix);
-            }
-            $prefix .= $sibling ? '│ ' : '  ';
-        }
-
-        $percent = $this->root ? $profile->getDuration() / $this->root * 100 : 0;
-
-        if ($profile->getDuration() * 1000 < 1) {
-            $str = $start."\n";
-        } else {
-            $str = sprintf("%s %s\n", $start, $this->formatTime($profile, $percent));
-        }
-
-        $nCount = \count($profile->getProfiles());
-        foreach ($profile as $i => $p) {
-            $str .= $this->dumpProfile($p, $prefix, $i + 1 !== $nCount);
-        }
-
-        return $str;
-    }
-}
-
-class_alias('Twig\Profiler\Dumper\BaseDumper', 'Twig_Profiler_Dumper_Base');
diff --git a/vendor/twig/twig/src/Profiler/Dumper/BlackfireDumper.php b/vendor/twig/twig/src/Profiler/Dumper/BlackfireDumper.php
deleted file mode 100644
index a1c3c7bce691b59d4585e666f40716e944648a51..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Profiler/Dumper/BlackfireDumper.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Profiler\Dumper;
-
-use Twig\Profiler\Profile;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final
- */
-class BlackfireDumper
-{
-    public function dump(Profile $profile)
-    {
-        $data = [];
-        $this->dumpProfile('main()', $profile, $data);
-        $this->dumpChildren('main()', $profile, $data);
-
-        $start = sprintf('%f', microtime(true));
-        $str = <<<EOF
-file-format: BlackfireProbe
-cost-dimensions: wt mu pmu
-request-start: {$start}
-
-
-EOF;
-
-        foreach ($data as $name => $values) {
-            $str .= "{$name}//{$values['ct']} {$values['wt']} {$values['mu']} {$values['pmu']}\n";
-        }
-
-        return $str;
-    }
-
-    private function dumpChildren($parent, Profile $profile, &$data)
-    {
-        foreach ($profile as $p) {
-            if ($p->isTemplate()) {
-                $name = $p->getTemplate();
-            } else {
-                $name = sprintf('%s::%s(%s)', $p->getTemplate(), $p->getType(), $p->getName());
-            }
-            $this->dumpProfile(sprintf('%s==>%s', $parent, $name), $p, $data);
-            $this->dumpChildren($name, $p, $data);
-        }
-    }
-
-    private function dumpProfile($edge, Profile $profile, &$data)
-    {
-        if (isset($data[$edge])) {
-            ++$data[$edge]['ct'];
-            $data[$edge]['wt'] += floor($profile->getDuration() * 1000000);
-            $data[$edge]['mu'] += $profile->getMemoryUsage();
-            $data[$edge]['pmu'] += $profile->getPeakMemoryUsage();
-        } else {
-            $data[$edge] = [
-                'ct' => 1,
-                'wt' => floor($profile->getDuration() * 1000000),
-                'mu' => $profile->getMemoryUsage(),
-                'pmu' => $profile->getPeakMemoryUsage(),
-            ];
-        }
-    }
-}
-
-class_alias('Twig\Profiler\Dumper\BlackfireDumper', 'Twig_Profiler_Dumper_Blackfire');
diff --git a/vendor/twig/twig/src/Profiler/Dumper/HtmlDumper.php b/vendor/twig/twig/src/Profiler/Dumper/HtmlDumper.php
deleted file mode 100644
index c70b405b30b5aac7b51933c706f69458eeafa990..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Profiler/Dumper/HtmlDumper.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Profiler\Dumper;
-
-use Twig\Profiler\Profile;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final
- */
-class HtmlDumper extends BaseDumper
-{
-    private static $colors = [
-        'block' => '#dfd',
-        'macro' => '#ddf',
-        'template' => '#ffd',
-        'big' => '#d44',
-    ];
-
-    public function dump(Profile $profile)
-    {
-        return '<pre>'.parent::dump($profile).'</pre>';
-    }
-
-    protected function formatTemplate(Profile $profile, $prefix)
-    {
-        return sprintf('%sâ”” <span style="background-color: %s">%s</span>', $prefix, self::$colors['template'], $profile->getTemplate());
-    }
-
-    protected function formatNonTemplate(Profile $profile, $prefix)
-    {
-        return sprintf('%sâ”” %s::%s(<span style="background-color: %s">%s</span>)', $prefix, $profile->getTemplate(), $profile->getType(), isset(self::$colors[$profile->getType()]) ? self::$colors[$profile->getType()] : 'auto', $profile->getName());
-    }
-
-    protected function formatTime(Profile $profile, $percent)
-    {
-        return sprintf('<span style="color: %s">%.2fms/%.0f%%</span>', $percent > 20 ? self::$colors['big'] : 'auto', $profile->getDuration() * 1000, $percent);
-    }
-}
-
-class_alias('Twig\Profiler\Dumper\HtmlDumper', 'Twig_Profiler_Dumper_Html');
diff --git a/vendor/twig/twig/src/Profiler/Dumper/TextDumper.php b/vendor/twig/twig/src/Profiler/Dumper/TextDumper.php
deleted file mode 100644
index c6b515891e7d1120e23143c614f506fc7a4cc524..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Profiler/Dumper/TextDumper.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Profiler\Dumper;
-
-use Twig\Profiler\Profile;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final
- */
-class TextDumper extends BaseDumper
-{
-    protected function formatTemplate(Profile $profile, $prefix)
-    {
-        return sprintf('%sâ”” %s', $prefix, $profile->getTemplate());
-    }
-
-    protected function formatNonTemplate(Profile $profile, $prefix)
-    {
-        return sprintf('%sâ”” %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), $profile->getName());
-    }
-
-    protected function formatTime(Profile $profile, $percent)
-    {
-        return sprintf('%.2fms/%.0f%%', $profile->getDuration() * 1000, $percent);
-    }
-}
-
-class_alias('Twig\Profiler\Dumper\TextDumper', 'Twig_Profiler_Dumper_Text');
diff --git a/vendor/twig/twig/src/Profiler/Node/EnterProfileNode.php b/vendor/twig/twig/src/Profiler/Node/EnterProfileNode.php
deleted file mode 100644
index 8ffd3dc78c691719d2228da97e2773add58a307a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Profiler/Node/EnterProfileNode.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Profiler\Node;
-
-use Twig\Compiler;
-use Twig\Node\Node;
-
-/**
- * Represents a profile enter node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class EnterProfileNode extends Node
-{
-    public function __construct($extensionName, $type, $name, $varName)
-    {
-        parent::__construct([], ['extension_name' => $extensionName, 'name' => $name, 'type' => $type, 'var_name' => $varName]);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->write(sprintf('$%s = $this->env->getExtension(', $this->getAttribute('var_name')))
-            ->repr($this->getAttribute('extension_name'))
-            ->raw(");\n")
-            ->write(sprintf('$%s->enter($%s = new \Twig\Profiler\Profile($this->getTemplateName(), ', $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof'))
-            ->repr($this->getAttribute('type'))
-            ->raw(', ')
-            ->repr($this->getAttribute('name'))
-            ->raw("));\n\n")
-        ;
-    }
-}
-
-class_alias('Twig\Profiler\Node\EnterProfileNode', 'Twig_Profiler_Node_EnterProfile');
diff --git a/vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php b/vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php
deleted file mode 100644
index 3b7a74d02638ecce320e34e447049ad59cb99eab..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Profiler\Node;
-
-use Twig\Compiler;
-use Twig\Node\Node;
-
-/**
- * Represents a profile leave node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class LeaveProfileNode extends Node
-{
-    public function __construct($varName)
-    {
-        parent::__construct([], ['var_name' => $varName]);
-    }
-
-    public function compile(Compiler $compiler)
-    {
-        $compiler
-            ->write("\n")
-            ->write(sprintf("\$%s->leave(\$%s);\n\n", $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof'))
-        ;
-    }
-}
-
-class_alias('Twig\Profiler\Node\LeaveProfileNode', 'Twig_Profiler_Node_LeaveProfile');
diff --git a/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php b/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php
deleted file mode 100644
index 41ca9e1f297df366d67b33cff9a5a590e4495744..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Profiler\NodeVisitor;
-
-use Twig\Environment;
-use Twig\Node\BlockNode;
-use Twig\Node\BodyNode;
-use Twig\Node\MacroNode;
-use Twig\Node\ModuleNode;
-use Twig\Node\Node;
-use Twig\NodeVisitor\AbstractNodeVisitor;
-use Twig\Profiler\Node\EnterProfileNode;
-use Twig\Profiler\Node\LeaveProfileNode;
-use Twig\Profiler\Profile;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final
- */
-class ProfilerNodeVisitor extends AbstractNodeVisitor
-{
-    private $extensionName;
-
-    public function __construct($extensionName)
-    {
-        $this->extensionName = $extensionName;
-    }
-
-    protected function doEnterNode(Node $node, Environment $env)
-    {
-        return $node;
-    }
-
-    protected function doLeaveNode(Node $node, Environment $env)
-    {
-        if ($node instanceof ModuleNode) {
-            $varName = $this->getVarName();
-            $node->setNode('display_start', new Node([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $varName), $node->getNode('display_start')]));
-            $node->setNode('display_end', new Node([new LeaveProfileNode($varName), $node->getNode('display_end')]));
-        } elseif ($node instanceof BlockNode) {
-            $varName = $this->getVarName();
-            $node->setNode('body', new BodyNode([
-                new EnterProfileNode($this->extensionName, Profile::BLOCK, $node->getAttribute('name'), $varName),
-                $node->getNode('body'),
-                new LeaveProfileNode($varName),
-            ]));
-        } elseif ($node instanceof MacroNode) {
-            $varName = $this->getVarName();
-            $node->setNode('body', new BodyNode([
-                new EnterProfileNode($this->extensionName, Profile::MACRO, $node->getAttribute('name'), $varName),
-                $node->getNode('body'),
-                new LeaveProfileNode($varName),
-            ]));
-        }
-
-        return $node;
-    }
-
-    private function getVarName()
-    {
-        return sprintf('__internal_%s', hash('sha256', $this->extensionName));
-    }
-
-    public function getPriority()
-    {
-        return 0;
-    }
-}
-
-class_alias('Twig\Profiler\NodeVisitor\ProfilerNodeVisitor', 'Twig_Profiler_NodeVisitor_Profiler');
diff --git a/vendor/twig/twig/src/Profiler/Profile.php b/vendor/twig/twig/src/Profiler/Profile.php
deleted file mode 100644
index d83da40af38e2419b11a7c2efad54bb6f823336a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Profiler/Profile.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Profiler;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final
- */
-class Profile implements \IteratorAggregate, \Serializable
-{
-    const ROOT = 'ROOT';
-    const BLOCK = 'block';
-    const TEMPLATE = 'template';
-    const MACRO = 'macro';
-
-    private $template;
-    private $name;
-    private $type;
-    private $starts = [];
-    private $ends = [];
-    private $profiles = [];
-
-    public function __construct($template = 'main', $type = self::ROOT, $name = 'main')
-    {
-        $this->template = $template;
-        $this->type = $type;
-        $this->name = 0 === strpos($name, '__internal_') ? 'INTERNAL' : $name;
-        $this->enter();
-    }
-
-    public function getTemplate()
-    {
-        return $this->template;
-    }
-
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function isRoot()
-    {
-        return self::ROOT === $this->type;
-    }
-
-    public function isTemplate()
-    {
-        return self::TEMPLATE === $this->type;
-    }
-
-    public function isBlock()
-    {
-        return self::BLOCK === $this->type;
-    }
-
-    public function isMacro()
-    {
-        return self::MACRO === $this->type;
-    }
-
-    public function getProfiles()
-    {
-        return $this->profiles;
-    }
-
-    public function addProfile(self $profile)
-    {
-        $this->profiles[] = $profile;
-    }
-
-    /**
-     * Returns the duration in microseconds.
-     *
-     * @return float
-     */
-    public function getDuration()
-    {
-        if ($this->isRoot() && $this->profiles) {
-            // for the root node with children, duration is the sum of all child durations
-            $duration = 0;
-            foreach ($this->profiles as $profile) {
-                $duration += $profile->getDuration();
-            }
-
-            return $duration;
-        }
-
-        return isset($this->ends['wt']) && isset($this->starts['wt']) ? $this->ends['wt'] - $this->starts['wt'] : 0;
-    }
-
-    /**
-     * Returns the memory usage in bytes.
-     *
-     * @return int
-     */
-    public function getMemoryUsage()
-    {
-        return isset($this->ends['mu']) && isset($this->starts['mu']) ? $this->ends['mu'] - $this->starts['mu'] : 0;
-    }
-
-    /**
-     * Returns the peak memory usage in bytes.
-     *
-     * @return int
-     */
-    public function getPeakMemoryUsage()
-    {
-        return isset($this->ends['pmu']) && isset($this->starts['pmu']) ? $this->ends['pmu'] - $this->starts['pmu'] : 0;
-    }
-
-    /**
-     * Starts the profiling.
-     */
-    public function enter()
-    {
-        $this->starts = [
-            'wt' => microtime(true),
-            'mu' => memory_get_usage(),
-            'pmu' => memory_get_peak_usage(),
-        ];
-    }
-
-    /**
-     * Stops the profiling.
-     */
-    public function leave()
-    {
-        $this->ends = [
-            'wt' => microtime(true),
-            'mu' => memory_get_usage(),
-            'pmu' => memory_get_peak_usage(),
-        ];
-    }
-
-    public function reset()
-    {
-        $this->starts = $this->ends = $this->profiles = [];
-        $this->enter();
-    }
-
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->profiles);
-    }
-
-    public function serialize()
-    {
-        return serialize($this->__serialize());
-    }
-
-    public function unserialize($data)
-    {
-        $this->__unserialize(unserialize($data));
-    }
-
-    /**
-     * @internal
-     */
-    public function __serialize()
-    {
-        return [$this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles];
-    }
-
-    /**
-     * @internal
-     */
-    public function __unserialize(array $data)
-    {
-        list($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles) = $data;
-    }
-}
-
-class_alias('Twig\Profiler\Profile', 'Twig_Profiler_Profile');
diff --git a/vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php b/vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php
deleted file mode 100644
index 04a6602f2298059964b52cc646845787146ca76d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\RuntimeLoader;
-
-use Psr\Container\ContainerInterface;
-
-/**
- * Lazily loads Twig runtime implementations from a PSR-11 container.
- *
- * Note that the runtime services MUST use their class names as identifiers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Robin Chalas <robin.chalas@gmail.com>
- */
-class ContainerRuntimeLoader implements RuntimeLoaderInterface
-{
-    private $container;
-
-    public function __construct(ContainerInterface $container)
-    {
-        $this->container = $container;
-    }
-
-    public function load($class)
-    {
-        if ($this->container->has($class)) {
-            return $this->container->get($class);
-        }
-    }
-}
-
-class_alias('Twig\RuntimeLoader\ContainerRuntimeLoader', 'Twig_ContainerRuntimeLoader');
diff --git a/vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php b/vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php
deleted file mode 100644
index 43b5f24ebac0a7295e09958f21a18d37ca4f9a89..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\RuntimeLoader;
-
-/**
- * Lazy loads the runtime implementations for a Twig element.
- *
- * @author Robin Chalas <robin.chalas@gmail.com>
- */
-class FactoryRuntimeLoader implements RuntimeLoaderInterface
-{
-    private $map;
-
-    /**
-     * @param array $map An array where keys are class names and values factory callables
-     */
-    public function __construct($map = [])
-    {
-        $this->map = $map;
-    }
-
-    public function load($class)
-    {
-        if (isset($this->map[$class])) {
-            $runtimeFactory = $this->map[$class];
-
-            return $runtimeFactory();
-        }
-    }
-}
-
-class_alias('Twig\RuntimeLoader\FactoryRuntimeLoader', 'Twig_FactoryRuntimeLoader');
diff --git a/vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php b/vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php
deleted file mode 100644
index 4eb5ad859994065a14826fbdbae4b1b9ee37edd9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\RuntimeLoader;
-
-/**
- * Creates runtime implementations for Twig elements (filters/functions/tests).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface RuntimeLoaderInterface
-{
-    /**
-     * Creates the runtime implementation of a Twig element (filter/function/test).
-     *
-     * @param string $class A runtime class
-     *
-     * @return object|null The runtime instance or null if the loader does not know how to create the runtime for this class
-     */
-    public function load($class);
-}
-
-class_alias('Twig\RuntimeLoader\RuntimeLoaderInterface', 'Twig_RuntimeLoaderInterface');
diff --git a/vendor/twig/twig/src/Sandbox/SecurityError.php b/vendor/twig/twig/src/Sandbox/SecurityError.php
deleted file mode 100644
index 5f96d46bd8458577460fa0f556206078d16f5f1c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Sandbox/SecurityError.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Sandbox;
-
-use Twig\Error\Error;
-
-/**
- * Exception thrown when a security error occurs at runtime.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SecurityError extends Error
-{
-}
-
-class_alias('Twig\Sandbox\SecurityError', 'Twig_Sandbox_SecurityError');
diff --git a/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php b/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php
deleted file mode 100644
index fa0fdee72f30b480e5dc506bc0752b731765cb7b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Sandbox;
-
-/**
- * Exception thrown when a not allowed filter is used in a template.
- *
- * @author Martin Hasoň <martin.hason@gmail.com>
- */
-class SecurityNotAllowedFilterError extends SecurityError
-{
-    private $filterName;
-
-    public function __construct($message, $functionName, $lineno = -1, $filename = null, \Exception $previous = null)
-    {
-        parent::__construct($message, $lineno, $filename, $previous);
-        $this->filterName = $functionName;
-    }
-
-    public function getFilterName()
-    {
-        return $this->filterName;
-    }
-}
-
-class_alias('Twig\Sandbox\SecurityNotAllowedFilterError', 'Twig_Sandbox_SecurityNotAllowedFilterError');
diff --git a/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php b/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php
deleted file mode 100644
index 8f23f93acd98bd986342f8ea2feb04dfff581b1a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Sandbox;
-
-/**
- * Exception thrown when a not allowed function is used in a template.
- *
- * @author Martin Hasoň <martin.hason@gmail.com>
- */
-class SecurityNotAllowedFunctionError extends SecurityError
-{
-    private $functionName;
-
-    public function __construct($message, $functionName, $lineno = -1, $filename = null, \Exception $previous = null)
-    {
-        parent::__construct($message, $lineno, $filename, $previous);
-        $this->functionName = $functionName;
-    }
-
-    public function getFunctionName()
-    {
-        return $this->functionName;
-    }
-}
-
-class_alias('Twig\Sandbox\SecurityNotAllowedFunctionError', 'Twig_Sandbox_SecurityNotAllowedFunctionError');
diff --git a/vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php b/vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php
deleted file mode 100644
index 62e13f49bde533f31f79e1a64c144bac4bd438d3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Sandbox;
-
-/**
- * Exception thrown when a not allowed class method is used in a template.
- *
- * @author Kit Burton-Senior <mail@kitbs.com>
- */
-class SecurityNotAllowedMethodError extends SecurityError
-{
-    private $className;
-    private $methodName;
-
-    public function __construct($message, $className, $methodName, $lineno = -1, $filename = null, \Exception $previous = null)
-    {
-        parent::__construct($message, $lineno, $filename, $previous);
-        $this->className = $className;
-        $this->methodName = $methodName;
-    }
-
-    public function getClassName()
-    {
-        return $this->className;
-    }
-
-    public function getMethodName()
-    {
-        return $this->methodName;
-    }
-}
-
-class_alias('Twig\Sandbox\SecurityNotAllowedMethodError', 'Twig_Sandbox_SecurityNotAllowedMethodError');
diff --git a/vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php b/vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php
deleted file mode 100644
index 3bf530574f85672e4217ead8f8152d0743f82003..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Sandbox;
-
-/**
- * Exception thrown when a not allowed class property is used in a template.
- *
- * @author Kit Burton-Senior <mail@kitbs.com>
- */
-class SecurityNotAllowedPropertyError extends SecurityError
-{
-    private $className;
-    private $propertyName;
-
-    public function __construct($message, $className, $propertyName, $lineno = -1, $filename = null, \Exception $previous = null)
-    {
-        parent::__construct($message, $lineno, $filename, $previous);
-        $this->className = $className;
-        $this->propertyName = $propertyName;
-    }
-
-    public function getClassName()
-    {
-        return $this->className;
-    }
-
-    public function getPropertyName()
-    {
-        return $this->propertyName;
-    }
-}
-
-class_alias('Twig\Sandbox\SecurityNotAllowedPropertyError', 'Twig_Sandbox_SecurityNotAllowedPropertyError');
diff --git a/vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php b/vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php
deleted file mode 100644
index de283b40cd7e9f96ce1443e3ecde7d6c94b53ecb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Sandbox;
-
-/**
- * Exception thrown when a not allowed tag is used in a template.
- *
- * @author Martin Hasoň <martin.hason@gmail.com>
- */
-class SecurityNotAllowedTagError extends SecurityError
-{
-    private $tagName;
-
-    public function __construct($message, $tagName, $lineno = -1, $filename = null, \Exception $previous = null)
-    {
-        parent::__construct($message, $lineno, $filename, $previous);
-        $this->tagName = $tagName;
-    }
-
-    public function getTagName()
-    {
-        return $this->tagName;
-    }
-}
-
-class_alias('Twig\Sandbox\SecurityNotAllowedTagError', 'Twig_Sandbox_SecurityNotAllowedTagError');
diff --git a/vendor/twig/twig/src/Sandbox/SecurityPolicy.php b/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
deleted file mode 100644
index 603843591af624a59472370a511895fc880dc880..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Sandbox;
-
-use Twig\Markup;
-
-/**
- * Represents a security policy which need to be enforced when sandbox mode is enabled.
- *
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SecurityPolicy implements SecurityPolicyInterface
-{
-    protected $allowedTags;
-    protected $allowedFilters;
-    protected $allowedMethods;
-    protected $allowedProperties;
-    protected $allowedFunctions;
-
-    public function __construct(array $allowedTags = [], array $allowedFilters = [], array $allowedMethods = [], array $allowedProperties = [], array $allowedFunctions = [])
-    {
-        $this->allowedTags = $allowedTags;
-        $this->allowedFilters = $allowedFilters;
-        $this->setAllowedMethods($allowedMethods);
-        $this->allowedProperties = $allowedProperties;
-        $this->allowedFunctions = $allowedFunctions;
-    }
-
-    public function setAllowedTags(array $tags)
-    {
-        $this->allowedTags = $tags;
-    }
-
-    public function setAllowedFilters(array $filters)
-    {
-        $this->allowedFilters = $filters;
-    }
-
-    public function setAllowedMethods(array $methods)
-    {
-        $this->allowedMethods = [];
-        foreach ($methods as $class => $m) {
-            $this->allowedMethods[$class] = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, \is_array($m) ? $m : [$m]);
-        }
-    }
-
-    public function setAllowedProperties(array $properties)
-    {
-        $this->allowedProperties = $properties;
-    }
-
-    public function setAllowedFunctions(array $functions)
-    {
-        $this->allowedFunctions = $functions;
-    }
-
-    public function checkSecurity($tags, $filters, $functions)
-    {
-        foreach ($tags as $tag) {
-            if (!\in_array($tag, $this->allowedTags)) {
-                throw new SecurityNotAllowedTagError(sprintf('Tag "%s" is not allowed.', $tag), $tag);
-            }
-        }
-
-        foreach ($filters as $filter) {
-            if (!\in_array($filter, $this->allowedFilters)) {
-                throw new SecurityNotAllowedFilterError(sprintf('Filter "%s" is not allowed.', $filter), $filter);
-            }
-        }
-
-        foreach ($functions as $function) {
-            if (!\in_array($function, $this->allowedFunctions)) {
-                throw new SecurityNotAllowedFunctionError(sprintf('Function "%s" is not allowed.', $function), $function);
-            }
-        }
-    }
-
-    public function checkMethodAllowed($obj, $method)
-    {
-        if ($obj instanceof \Twig_TemplateInterface || $obj instanceof Markup) {
-            return;
-        }
-
-        $allowed = false;
-        $method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
-        foreach ($this->allowedMethods as $class => $methods) {
-            if ($obj instanceof $class) {
-                $allowed = \in_array($method, $methods);
-
-                break;
-            }
-        }
-
-        if (!$allowed) {
-            $class = \get_class($obj);
-            throw new SecurityNotAllowedMethodError(sprintf('Calling "%s" method on a "%s" object is not allowed.', $method, $class), $class, $method);
-        }
-    }
-
-    public function checkPropertyAllowed($obj, $property)
-    {
-        $allowed = false;
-        foreach ($this->allowedProperties as $class => $properties) {
-            if ($obj instanceof $class) {
-                $allowed = \in_array($property, \is_array($properties) ? $properties : [$properties]);
-
-                break;
-            }
-        }
-
-        if (!$allowed) {
-            $class = \get_class($obj);
-            throw new SecurityNotAllowedPropertyError(sprintf('Calling "%s" property on a "%s" object is not allowed.', $property, $class), $class, $property);
-        }
-    }
-}
-
-class_alias('Twig\Sandbox\SecurityPolicy', 'Twig_Sandbox_SecurityPolicy');
diff --git a/vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php b/vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php
deleted file mode 100644
index a31863f6c27a4bb3aad3cf443d21571577ea9953..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Sandbox;
-
-/**
- * Interface that all security policy classes must implements.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface SecurityPolicyInterface
-{
-    public function checkSecurity($tags, $filters, $functions);
-
-    public function checkMethodAllowed($obj, $method);
-
-    public function checkPropertyAllowed($obj, $method);
-}
-
-class_alias('Twig\Sandbox\SecurityPolicyInterface', 'Twig_Sandbox_SecurityPolicyInterface');
diff --git a/vendor/twig/twig/src/Source.php b/vendor/twig/twig/src/Source.php
deleted file mode 100644
index 32a82163f4b999734b72c7a687521077f756f5dc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Source.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-/**
- * Holds information about a non-compiled Twig template.
- *
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Source
-{
-    private $code;
-    private $name;
-    private $path;
-
-    /**
-     * @param string $code The template source code
-     * @param string $name The template logical name
-     * @param string $path The filesystem path of the template if any
-     */
-    public function __construct($code, $name, $path = '')
-    {
-        $this->code = $code;
-        $this->name = $name;
-        $this->path = $path;
-    }
-
-    public function getCode()
-    {
-        return $this->code;
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function getPath()
-    {
-        return $this->path;
-    }
-}
-
-class_alias('Twig\Source', 'Twig_Source');
diff --git a/vendor/twig/twig/src/Template.php b/vendor/twig/twig/src/Template.php
deleted file mode 100644
index 032efe32699d46be8569bcdf368d296522892242..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Template.php
+++ /dev/null
@@ -1,731 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-use Twig\Error\Error;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-
-/**
- * Default base class for compiled templates.
- *
- * This class is an implementation detail of how template compilation currently
- * works, which might change. It should never be used directly. Use $twig->load()
- * instead, which returns an instance of \Twig\TemplateWrapper.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @internal
- */
-abstract class Template implements \Twig_TemplateInterface
-{
-    /**
-     * @internal
-     */
-    protected static $cache = [];
-
-    protected $parent;
-    protected $parents = [];
-    protected $env;
-    protected $blocks = [];
-    protected $traits = [];
-    protected $sandbox;
-
-    public function __construct(Environment $env)
-    {
-        $this->env = $env;
-    }
-
-    /**
-     * @internal this method will be removed in 2.0 and is only used internally to provide an upgrade path from 1.x to 2.0
-     */
-    public function __toString()
-    {
-        return $this->getTemplateName();
-    }
-
-    /**
-     * Returns the template name.
-     *
-     * @return string The template name
-     */
-    abstract public function getTemplateName();
-
-    /**
-     * Returns debug information about the template.
-     *
-     * @return array Debug information
-     */
-    public function getDebugInfo()
-    {
-        return [];
-    }
-
-    /**
-     * Returns the template source code.
-     *
-     * @return string The template source code
-     *
-     * @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead
-     */
-    public function getSource()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
-
-        return '';
-    }
-
-    /**
-     * Returns information about the original template source code.
-     *
-     * @return Source
-     */
-    public function getSourceContext()
-    {
-        return new Source('', $this->getTemplateName());
-    }
-
-    /**
-     * @deprecated since 1.20 (to be removed in 2.0)
-     */
-    public function getEnvironment()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.20 and will be removed in 2.0.', E_USER_DEPRECATED);
-
-        return $this->env;
-    }
-
-    /**
-     * Returns the parent template.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @return \Twig_TemplateInterface|TemplateWrapper|false The parent template or false if there is no parent
-     *
-     * @internal
-     */
-    public function getParent(array $context)
-    {
-        if (null !== $this->parent) {
-            return $this->parent;
-        }
-
-        try {
-            $parent = $this->doGetParent($context);
-
-            if (false === $parent) {
-                return false;
-            }
-
-            if ($parent instanceof self || $parent instanceof TemplateWrapper) {
-                return $this->parents[$parent->getSourceContext()->getName()] = $parent;
-            }
-
-            if (!isset($this->parents[$parent])) {
-                $this->parents[$parent] = $this->loadTemplate($parent);
-            }
-        } catch (LoaderError $e) {
-            $e->setSourceContext(null);
-            $e->guess();
-
-            throw $e;
-        }
-
-        return $this->parents[$parent];
-    }
-
-    protected function doGetParent(array $context)
-    {
-        return false;
-    }
-
-    public function isTraitable()
-    {
-        return true;
-    }
-
-    /**
-     * Displays a parent block.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @param string $name    The block name to display from the parent
-     * @param array  $context The context
-     * @param array  $blocks  The current set of blocks
-     */
-    public function displayParentBlock($name, array $context, array $blocks = [])
-    {
-        $name = (string) $name;
-
-        if (isset($this->traits[$name])) {
-            $this->traits[$name][0]->displayBlock($name, $context, $blocks, false);
-        } elseif (false !== $parent = $this->getParent($context)) {
-            $parent->displayBlock($name, $context, $blocks, false);
-        } else {
-            throw new RuntimeError(sprintf('The template has no parent and no traits defining the "%s" block.', $name), -1, $this->getSourceContext());
-        }
-    }
-
-    /**
-     * Displays a block.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @param string $name      The block name to display
-     * @param array  $context   The context
-     * @param array  $blocks    The current set of blocks
-     * @param bool   $useBlocks Whether to use the current set of blocks
-     */
-    public function displayBlock($name, array $context, array $blocks = [], $useBlocks = true)
-    {
-        $name = (string) $name;
-
-        if ($useBlocks && isset($blocks[$name])) {
-            $template = $blocks[$name][0];
-            $block = $blocks[$name][1];
-        } elseif (isset($this->blocks[$name])) {
-            $template = $this->blocks[$name][0];
-            $block = $this->blocks[$name][1];
-        } else {
-            $template = null;
-            $block = null;
-        }
-
-        // avoid RCEs when sandbox is enabled
-        if (null !== $template && !$template instanceof self) {
-            throw new \LogicException('A block must be a method on a \Twig\Template instance.');
-        }
-
-        if (null !== $template) {
-            try {
-                $template->$block($context, $blocks);
-            } catch (Error $e) {
-                if (!$e->getSourceContext()) {
-                    $e->setSourceContext($template->getSourceContext());
-                }
-
-                // this is mostly useful for \Twig\Error\LoaderError exceptions
-                // see \Twig\Error\LoaderError
-                if (-1 === $e->getTemplateLine()) {
-                    $e->guess();
-                }
-
-                throw $e;
-            } catch (\Exception $e) {
-                $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e);
-                $e->guess();
-
-                throw $e;
-            }
-        } elseif (false !== $parent = $this->getParent($context)) {
-            $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false);
-        } else {
-            @trigger_error(sprintf('Silent display of undefined block "%s" in template "%s" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block(\'%s\') is defined" expression to test for block existence.', $name, $this->getTemplateName(), $name), E_USER_DEPRECATED);
-        }
-    }
-
-    /**
-     * Renders a parent block.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @param string $name    The block name to render from the parent
-     * @param array  $context The context
-     * @param array  $blocks  The current set of blocks
-     *
-     * @return string The rendered block
-     */
-    public function renderParentBlock($name, array $context, array $blocks = [])
-    {
-        if ($this->env->isDebug()) {
-            ob_start();
-        } else {
-            ob_start(function () { return ''; });
-        }
-        $this->displayParentBlock($name, $context, $blocks);
-
-        return ob_get_clean();
-    }
-
-    /**
-     * Renders a block.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @param string $name      The block name to render
-     * @param array  $context   The context
-     * @param array  $blocks    The current set of blocks
-     * @param bool   $useBlocks Whether to use the current set of blocks
-     *
-     * @return string The rendered block
-     */
-    public function renderBlock($name, array $context, array $blocks = [], $useBlocks = true)
-    {
-        if ($this->env->isDebug()) {
-            ob_start();
-        } else {
-            ob_start(function () { return ''; });
-        }
-        $this->displayBlock($name, $context, $blocks, $useBlocks);
-
-        return ob_get_clean();
-    }
-
-    /**
-     * Returns whether a block exists or not in the current context of the template.
-     *
-     * This method checks blocks defined in the current template
-     * or defined in "used" traits or defined in parent templates.
-     *
-     * @param string $name    The block name
-     * @param array  $context The context
-     * @param array  $blocks  The current set of blocks
-     *
-     * @return bool true if the block exists, false otherwise
-     */
-    public function hasBlock($name, array $context = null, array $blocks = [])
-    {
-        if (null === $context) {
-            @trigger_error('The '.__METHOD__.' method is internal and should never be called; calling it directly is deprecated since version 1.28 and won\'t be possible anymore in 2.0.', E_USER_DEPRECATED);
-
-            return isset($this->blocks[(string) $name]);
-        }
-
-        if (isset($blocks[$name])) {
-            return $blocks[$name][0] instanceof self;
-        }
-
-        if (isset($this->blocks[$name])) {
-            return true;
-        }
-
-        if (false !== $parent = $this->getParent($context)) {
-            return $parent->hasBlock($name, $context);
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns all block names in the current context of the template.
-     *
-     * This method checks blocks defined in the current template
-     * or defined in "used" traits or defined in parent templates.
-     *
-     * @param array $context The context
-     * @param array $blocks  The current set of blocks
-     *
-     * @return array An array of block names
-     */
-    public function getBlockNames(array $context = null, array $blocks = [])
-    {
-        if (null === $context) {
-            @trigger_error('The '.__METHOD__.' method is internal and should never be called; calling it directly is deprecated since version 1.28 and won\'t be possible anymore in 2.0.', E_USER_DEPRECATED);
-
-            return array_keys($this->blocks);
-        }
-
-        $names = array_merge(array_keys($blocks), array_keys($this->blocks));
-
-        if (false !== $parent = $this->getParent($context)) {
-            $names = array_merge($names, $parent->getBlockNames($context));
-        }
-
-        return array_unique($names);
-    }
-
-    /**
-     * @return Template|TemplateWrapper
-     */
-    protected function loadTemplate($template, $templateName = null, $line = null, $index = null)
-    {
-        try {
-            if (\is_array($template)) {
-                return $this->env->resolveTemplate($template);
-            }
-
-            if ($template instanceof self || $template instanceof TemplateWrapper) {
-                return $template;
-            }
-
-            if ($template === $this->getTemplateName()) {
-                $class = static::class;
-                if (false !== $pos = strrpos($class, '___', -1)) {
-                    $class = substr($class, 0, $pos);
-                }
-
-                return $this->env->loadClass($class, $template, $index);
-            }
-
-            return $this->env->loadTemplate($template, $index);
-        } catch (Error $e) {
-            if (!$e->getSourceContext()) {
-                $e->setSourceContext($templateName ? new Source('', $templateName) : $this->getSourceContext());
-            }
-
-            if ($e->getTemplateLine() > 0) {
-                throw $e;
-            }
-
-            if (!$line) {
-                $e->guess();
-            } else {
-                $e->setTemplateLine($line);
-            }
-
-            throw $e;
-        }
-    }
-
-    /**
-     * @internal
-     *
-     * @return Template
-     */
-    public function unwrap()
-    {
-        return $this;
-    }
-
-    /**
-     * Returns all blocks.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @return array An array of blocks
-     */
-    public function getBlocks()
-    {
-        return $this->blocks;
-    }
-
-    public function display(array $context, array $blocks = [])
-    {
-        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
-    }
-
-    public function render(array $context)
-    {
-        $level = ob_get_level();
-        if ($this->env->isDebug()) {
-            ob_start();
-        } else {
-            ob_start(function () { return ''; });
-        }
-        try {
-            $this->display($context);
-        } catch (\Exception $e) {
-            while (ob_get_level() > $level) {
-                ob_end_clean();
-            }
-
-            throw $e;
-        } catch (\Throwable $e) {
-            while (ob_get_level() > $level) {
-                ob_end_clean();
-            }
-
-            throw $e;
-        }
-
-        return ob_get_clean();
-    }
-
-    protected function displayWithErrorHandling(array $context, array $blocks = [])
-    {
-        try {
-            $this->doDisplay($context, $blocks);
-        } catch (Error $e) {
-            if (!$e->getSourceContext()) {
-                $e->setSourceContext($this->getSourceContext());
-            }
-
-            // this is mostly useful for \Twig\Error\LoaderError exceptions
-            // see \Twig\Error\LoaderError
-            if (-1 === $e->getTemplateLine()) {
-                $e->guess();
-            }
-
-            throw $e;
-        } catch (\Exception $e) {
-            $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
-            $e->guess();
-
-            throw $e;
-        }
-    }
-
-    /**
-     * Auto-generated method to display the template with the given context.
-     *
-     * @param array $context An array of parameters to pass to the template
-     * @param array $blocks  An array of blocks to pass to the template
-     */
-    abstract protected function doDisplay(array $context, array $blocks = []);
-
-    /**
-     * Returns a variable from the context.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * This method should not be overridden in a sub-class as this is an
-     * implementation detail that has been introduced to optimize variable
-     * access for versions of PHP before 5.4. This is not a way to override
-     * the way to get a variable value.
-     *
-     * @param array  $context           The context
-     * @param string $item              The variable to return from the context
-     * @param bool   $ignoreStrictCheck Whether to ignore the strict variable check or not
-     *
-     * @return mixed The content of the context variable
-     *
-     * @throws RuntimeError if the variable does not exist and Twig is running in strict mode
-     *
-     * @internal
-     */
-    final protected function getContext($context, $item, $ignoreStrictCheck = false)
-    {
-        if (!\array_key_exists($item, $context)) {
-            if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
-                return;
-            }
-
-            throw new RuntimeError(sprintf('Variable "%s" does not exist.', $item), -1, $this->getSourceContext());
-        }
-
-        return $context[$item];
-    }
-
-    /**
-     * Returns the attribute value for a given array/object.
-     *
-     * @param mixed  $object            The object or array from where to get the item
-     * @param mixed  $item              The item to get from the array or object
-     * @param array  $arguments         An array of arguments to pass if the item is an object method
-     * @param string $type              The type of attribute (@see \Twig\Template constants)
-     * @param bool   $isDefinedTest     Whether this is only a defined check
-     * @param bool   $ignoreStrictCheck Whether to ignore the strict attribute check or not
-     *
-     * @return mixed The attribute value, or a Boolean when $isDefinedTest is true, or null when the attribute is not set and $ignoreStrictCheck is true
-     *
-     * @throws RuntimeError if the attribute does not exist and Twig is running in strict mode and $isDefinedTest is false
-     *
-     * @internal
-     */
-    protected function getAttribute($object, $item, array $arguments = [], $type = self::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false)
-    {
-        // array
-        if (self::METHOD_CALL !== $type) {
-            $arrayItem = \is_bool($item) || \is_float($item) ? (int) $item : $item;
-
-            if (((\is_array($object) || $object instanceof \ArrayObject) && (isset($object[$arrayItem]) || \array_key_exists($arrayItem, (array) $object)))
-                || ($object instanceof \ArrayAccess && isset($object[$arrayItem]))
-            ) {
-                if ($isDefinedTest) {
-                    return true;
-                }
-
-                return $object[$arrayItem];
-            }
-
-            if (self::ARRAY_CALL === $type || !\is_object($object)) {
-                if ($isDefinedTest) {
-                    return false;
-                }
-
-                if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
-                    return;
-                }
-
-                if ($object instanceof \ArrayAccess) {
-                    $message = sprintf('Key "%s" in object with ArrayAccess of class "%s" does not exist.', $arrayItem, \get_class($object));
-                } elseif (\is_object($object)) {
-                    $message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface.', $item, \get_class($object));
-                } elseif (\is_array($object)) {
-                    if (empty($object)) {
-                        $message = sprintf('Key "%s" does not exist as the array is empty.', $arrayItem);
-                    } else {
-                        $message = sprintf('Key "%s" for array with keys "%s" does not exist.', $arrayItem, implode(', ', array_keys($object)));
-                    }
-                } elseif (self::ARRAY_CALL === $type) {
-                    if (null === $object) {
-                        $message = sprintf('Impossible to access a key ("%s") on a null variable.', $item);
-                    } else {
-                        $message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, \gettype($object), $object);
-                    }
-                } elseif (null === $object) {
-                    $message = sprintf('Impossible to access an attribute ("%s") on a null variable.', $item);
-                } else {
-                    $message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, \gettype($object), $object);
-                }
-
-                throw new RuntimeError($message, -1, $this->getSourceContext());
-            }
-        }
-
-        if (!\is_object($object)) {
-            if ($isDefinedTest) {
-                return false;
-            }
-
-            if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
-                return;
-            }
-
-            if (null === $object) {
-                $message = sprintf('Impossible to invoke a method ("%s") on a null variable.', $item);
-            } elseif (\is_array($object)) {
-                $message = sprintf('Impossible to invoke a method ("%s") on an array.', $item);
-            } else {
-                $message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, \gettype($object), $object);
-            }
-
-            throw new RuntimeError($message, -1, $this->getSourceContext());
-        }
-
-        // object property
-        if (self::METHOD_CALL !== $type && !$object instanceof self) { // \Twig\Template does not have public properties, and we don't want to allow access to internal ones
-            if (isset($object->$item) || \array_key_exists((string) $item, (array) $object)) {
-                if ($isDefinedTest) {
-                    return true;
-                }
-
-                if ($this->env->hasExtension('\Twig\Extension\SandboxExtension')) {
-                    $this->env->getExtension('\Twig\Extension\SandboxExtension')->checkPropertyAllowed($object, $item);
-                }
-
-                return $object->$item;
-            }
-        }
-
-        $class = \get_class($object);
-
-        // object method
-        if (!isset(self::$cache[$class])) {
-            // get_class_methods returns all methods accessible in the scope, but we only want public ones to be accessible in templates
-            if ($object instanceof self) {
-                $ref = new \ReflectionClass($class);
-                $methods = [];
-
-                foreach ($ref->getMethods(\ReflectionMethod::IS_PUBLIC) as $refMethod) {
-                    // Accessing the environment from templates is forbidden to prevent untrusted changes to the environment
-                    if ('getenvironment' !== strtr($refMethod->name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')) {
-                        $methods[] = $refMethod->name;
-                    }
-                }
-            } else {
-                $methods = get_class_methods($object);
-            }
-            // sort values to have consistent behavior, so that "get" methods win precedence over "is" methods
-            sort($methods);
-
-            $cache = [];
-
-            foreach ($methods as $method) {
-                $cache[$method] = $method;
-                $cache[$lcName = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')] = $method;
-
-                if ('g' === $lcName[0] && 0 === strpos($lcName, 'get')) {
-                    $name = substr($method, 3);
-                    $lcName = substr($lcName, 3);
-                } elseif ('i' === $lcName[0] && 0 === strpos($lcName, 'is')) {
-                    $name = substr($method, 2);
-                    $lcName = substr($lcName, 2);
-                } else {
-                    continue;
-                }
-
-                // skip get() and is() methods (in which case, $name is empty)
-                if ($name) {
-                    if (!isset($cache[$name])) {
-                        $cache[$name] = $method;
-                    }
-                    if (!isset($cache[$lcName])) {
-                        $cache[$lcName] = $method;
-                    }
-                }
-            }
-            self::$cache[$class] = $cache;
-        }
-
-        $call = false;
-        if (isset(self::$cache[$class][$item])) {
-            $method = self::$cache[$class][$item];
-        } elseif (isset(self::$cache[$class][$lcItem = strtr($item, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')])) {
-            $method = self::$cache[$class][$lcItem];
-        } elseif (isset(self::$cache[$class]['__call'])) {
-            $method = $item;
-            $call = true;
-        } else {
-            if ($isDefinedTest) {
-                return false;
-            }
-
-            if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
-                return;
-            }
-
-            throw new RuntimeError(sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), -1, $this->getSourceContext());
-        }
-
-        if ($isDefinedTest) {
-            return true;
-        }
-
-        if ($this->env->hasExtension('\Twig\Extension\SandboxExtension')) {
-            $this->env->getExtension('\Twig\Extension\SandboxExtension')->checkMethodAllowed($object, $method);
-        }
-
-        // Some objects throw exceptions when they have __call, and the method we try
-        // to call is not supported. If ignoreStrictCheck is true, we should return null.
-        try {
-            if (!$arguments) {
-                $ret = $object->$method();
-            } else {
-                $ret = \call_user_func_array([$object, $method], $arguments);
-            }
-        } catch (\BadMethodCallException $e) {
-            if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) {
-                return;
-            }
-            throw $e;
-        }
-
-        // @deprecated in 1.28
-        if ($object instanceof \Twig_TemplateInterface) {
-            $self = $object->getTemplateName() === $this->getTemplateName();
-            $message = sprintf('Calling "%s" on template "%s" from template "%s" is deprecated since version 1.28 and won\'t be supported anymore in 2.0.', $item, $object->getTemplateName(), $this->getTemplateName());
-            if ('renderBlock' === $method || 'displayBlock' === $method) {
-                $message .= sprintf(' Use block("%s"%s) instead).', $arguments[0], $self ? '' : ', template');
-            } elseif ('hasBlock' === $method) {
-                $message .= sprintf(' Use "block("%s"%s) is defined" instead).', $arguments[0], $self ? '' : ', template');
-            } elseif ('render' === $method || 'display' === $method) {
-                $message .= sprintf(' Use include("%s") instead).', $object->getTemplateName());
-            }
-            @trigger_error($message, E_USER_DEPRECATED);
-
-            return '' === $ret ? '' : new Markup($ret, $this->env->getCharset());
-        }
-
-        return $ret;
-    }
-}
-
-class_alias('Twig\Template', 'Twig_Template');
diff --git a/vendor/twig/twig/src/TemplateWrapper.php b/vendor/twig/twig/src/TemplateWrapper.php
deleted file mode 100644
index e2654094e4ec65b756d5a79511fa71ff36a0379e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TemplateWrapper.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-/**
- * Exposes a template to userland.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-final class TemplateWrapper
-{
-    private $env;
-    private $template;
-
-    /**
-     * This method is for internal use only and should never be called
-     * directly (use Twig\Environment::load() instead).
-     *
-     * @internal
-     */
-    public function __construct(Environment $env, Template $template)
-    {
-        $this->env = $env;
-        $this->template = $template;
-    }
-
-    /**
-     * Renders the template.
-     *
-     * @param array $context An array of parameters to pass to the template
-     *
-     * @return string The rendered template
-     */
-    public function render($context = [])
-    {
-        // using func_get_args() allows to not expose the blocks argument
-        // as it should only be used by internal code
-        return $this->template->render($context, \func_num_args() > 1 ? func_get_arg(1) : []);
-    }
-
-    /**
-     * Displays the template.
-     *
-     * @param array $context An array of parameters to pass to the template
-     */
-    public function display($context = [])
-    {
-        // using func_get_args() allows to not expose the blocks argument
-        // as it should only be used by internal code
-        $this->template->display($context, \func_num_args() > 1 ? func_get_arg(1) : []);
-    }
-
-    /**
-     * Checks if a block is defined.
-     *
-     * @param string $name    The block name
-     * @param array  $context An array of parameters to pass to the template
-     *
-     * @return bool
-     */
-    public function hasBlock($name, $context = [])
-    {
-        return $this->template->hasBlock($name, $context);
-    }
-
-    /**
-     * Returns defined block names in the template.
-     *
-     * @param array $context An array of parameters to pass to the template
-     *
-     * @return string[] An array of defined template block names
-     */
-    public function getBlockNames($context = [])
-    {
-        return $this->template->getBlockNames($context);
-    }
-
-    /**
-     * Renders a template block.
-     *
-     * @param string $name    The block name to render
-     * @param array  $context An array of parameters to pass to the template
-     *
-     * @return string The rendered block
-     */
-    public function renderBlock($name, $context = [])
-    {
-        $context = $this->env->mergeGlobals($context);
-        $level = ob_get_level();
-        if ($this->env->isDebug()) {
-            ob_start();
-        } else {
-            ob_start(function () { return ''; });
-        }
-        try {
-            $this->template->displayBlock($name, $context);
-        } catch (\Exception $e) {
-            while (ob_get_level() > $level) {
-                ob_end_clean();
-            }
-
-            throw $e;
-        } catch (\Throwable $e) {
-            while (ob_get_level() > $level) {
-                ob_end_clean();
-            }
-
-            throw $e;
-        }
-
-        return ob_get_clean();
-    }
-
-    /**
-     * Displays a template block.
-     *
-     * @param string $name    The block name to render
-     * @param array  $context An array of parameters to pass to the template
-     */
-    public function displayBlock($name, $context = [])
-    {
-        $this->template->displayBlock($name, $this->env->mergeGlobals($context));
-    }
-
-    /**
-     * @return Source
-     */
-    public function getSourceContext()
-    {
-        return $this->template->getSourceContext();
-    }
-
-    /**
-     * @return string
-     */
-    public function getTemplateName()
-    {
-        return $this->template->getTemplateName();
-    }
-
-    /**
-     * @internal
-     *
-     * @return Template
-     */
-    public function unwrap()
-    {
-        return $this->template;
-    }
-}
-
-class_alias('Twig\TemplateWrapper', 'Twig_TemplateWrapper');
diff --git a/vendor/twig/twig/src/Test/IntegrationTestCase.php b/vendor/twig/twig/src/Test/IntegrationTestCase.php
deleted file mode 100644
index 905f9725e398594c2e04872c4eefc65c6a5bc875..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Test/IntegrationTestCase.php
+++ /dev/null
@@ -1,257 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Test;
-
-use PHPUnit\Framework\TestCase;
-use Twig\Environment;
-use Twig\Error\Error;
-use Twig\Extension\ExtensionInterface;
-use Twig\Loader\ArrayLoader;
-use Twig\Loader\SourceContextLoaderInterface;
-use Twig\RuntimeLoader\RuntimeLoaderInterface;
-use Twig\Source;
-use Twig\TwigFilter;
-use Twig\TwigFunction;
-use Twig\TwigTest;
-
-/**
- * Integration test helper.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Karma Dordrak <drak@zikula.org>
- */
-abstract class IntegrationTestCase extends TestCase
-{
-    /**
-     * @return string
-     */
-    abstract protected function getFixturesDir();
-
-    /**
-     * @return RuntimeLoaderInterface[]
-     */
-    protected function getRuntimeLoaders()
-    {
-        return [];
-    }
-
-    /**
-     * @return ExtensionInterface[]
-     */
-    protected function getExtensions()
-    {
-        return [];
-    }
-
-    /**
-     * @return TwigFilter[]
-     */
-    protected function getTwigFilters()
-    {
-        return [];
-    }
-
-    /**
-     * @return TwigFunction[]
-     */
-    protected function getTwigFunctions()
-    {
-        return [];
-    }
-
-    /**
-     * @return TwigTest[]
-     */
-    protected function getTwigTests()
-    {
-        return [];
-    }
-
-    /**
-     * @dataProvider getTests
-     */
-    public function testIntegration($file, $message, $condition, $templates, $exception, $outputs)
-    {
-        $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs);
-    }
-
-    /**
-     * @dataProvider getLegacyTests
-     * @group legacy
-     */
-    public function testLegacyIntegration($file, $message, $condition, $templates, $exception, $outputs)
-    {
-        $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs);
-    }
-
-    public function getTests($name, $legacyTests = false)
-    {
-        $fixturesDir = realpath($this->getFixturesDir());
-        $tests = [];
-
-        foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($fixturesDir), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
-            if (!preg_match('/\.test$/', $file)) {
-                continue;
-            }
-
-            if ($legacyTests xor false !== strpos($file->getRealpath(), '.legacy.test')) {
-                continue;
-            }
-
-            $test = file_get_contents($file->getRealpath());
-
-            if (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)\s*(?:--DATA--\s*(.*))?\s*--EXCEPTION--\s*(.*)/sx', $test, $match)) {
-                $message = $match[1];
-                $condition = $match[2];
-                $templates = self::parseTemplates($match[3]);
-                $exception = $match[5];
-                $outputs = [[null, $match[4], null, '']];
-            } elseif (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)--DATA--.*?--EXPECT--.*/s', $test, $match)) {
-                $message = $match[1];
-                $condition = $match[2];
-                $templates = self::parseTemplates($match[3]);
-                $exception = false;
-                preg_match_all('/--DATA--(.*?)(?:--CONFIG--(.*?))?--EXPECT--(.*?)(?=\-\-DATA\-\-|$)/s', $test, $outputs, PREG_SET_ORDER);
-            } else {
-                throw new \InvalidArgumentException(sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file)));
-            }
-
-            $tests[] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs];
-        }
-
-        if ($legacyTests && empty($tests)) {
-            // add a dummy test to avoid a PHPUnit message
-            return [['not', '-', '', [], '', []]];
-        }
-
-        return $tests;
-    }
-
-    public function getLegacyTests()
-    {
-        return $this->getTests('testLegacyIntegration', true);
-    }
-
-    protected function doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs)
-    {
-        if (!$outputs) {
-            $this->markTestSkipped('no tests to run');
-        }
-
-        if ($condition) {
-            eval('$ret = '.$condition.';');
-            if (!$ret) {
-                $this->markTestSkipped($condition);
-            }
-        }
-
-        $loader = new ArrayLoader($templates);
-
-        foreach ($outputs as $i => $match) {
-            $config = array_merge([
-                'cache' => false,
-                'strict_variables' => true,
-            ], $match[2] ? eval($match[2].';') : []);
-            $twig = new Environment($loader, $config);
-            $twig->addGlobal('global', 'global');
-            foreach ($this->getRuntimeLoaders() as $runtimeLoader) {
-                $twig->addRuntimeLoader($runtimeLoader);
-            }
-
-            foreach ($this->getExtensions() as $extension) {
-                $twig->addExtension($extension);
-            }
-
-            foreach ($this->getTwigFilters() as $filter) {
-                $twig->addFilter($filter);
-            }
-
-            foreach ($this->getTwigTests() as $test) {
-                $twig->addTest($test);
-            }
-
-            foreach ($this->getTwigFunctions() as $function) {
-                $twig->addFunction($function);
-            }
-
-            $p = new \ReflectionProperty($twig, 'templateClassPrefix');
-            $p->setAccessible(true);
-            $p->setValue($twig, '__TwigTemplate_'.hash('sha256', uniqid(mt_rand(), true), false).'_');
-
-            try {
-                $template = $twig->load('index.twig');
-            } catch (\Exception $e) {
-                if (false !== $exception) {
-                    $message = $e->getMessage();
-                    $this->assertSame(trim($exception), trim(sprintf('%s: %s', \get_class($e), $message)));
-                    $last = substr($message, \strlen($message) - 1);
-                    $this->assertTrue('.' === $last || '?' === $last, 'Exception message must end with a dot or a question mark.');
-
-                    return;
-                }
-
-                throw new Error(sprintf('%s: %s', \get_class($e), $e->getMessage()), -1, null, $e);
-            }
-
-            try {
-                $output = trim($template->render(eval($match[1].';')), "\n ");
-            } catch (\Exception $e) {
-                if (false !== $exception) {
-                    $this->assertSame(trim($exception), trim(sprintf('%s: %s', \get_class($e), $e->getMessage())));
-
-                    return;
-                }
-
-                $e = new Error(sprintf('%s: %s', \get_class($e), $e->getMessage()), -1, null, $e);
-
-                $output = trim(sprintf('%s: %s', \get_class($e), $e->getMessage()));
-            }
-
-            if (false !== $exception) {
-                list($class) = explode(':', $exception);
-                $constraintClass = class_exists('PHPUnit\Framework\Constraint\Exception') ? 'PHPUnit\Framework\Constraint\Exception' : 'PHPUnit_Framework_Constraint_Exception';
-                $this->assertThat(null, new $constraintClass($class));
-            }
-
-            $expected = trim($match[3], "\n ");
-
-            if ($expected !== $output) {
-                printf("Compiled templates that failed on case %d:\n", $i + 1);
-
-                foreach (array_keys($templates) as $name) {
-                    echo "Template: $name\n";
-                    $loader = $twig->getLoader();
-                    if (!$loader instanceof SourceContextLoaderInterface) {
-                        $source = new Source($loader->getSource($name), $name);
-                    } else {
-                        $source = $loader->getSourceContext($name);
-                    }
-                    echo $twig->compile($twig->parse($twig->tokenize($source)));
-                }
-            }
-            $this->assertEquals($expected, $output, $message.' (in '.$file.')');
-        }
-    }
-
-    protected static function parseTemplates($test)
-    {
-        $templates = [];
-        preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $test, $matches, PREG_SET_ORDER);
-        foreach ($matches as $match) {
-            $templates[($match[1] ?: 'index.twig')] = $match[2];
-        }
-
-        return $templates;
-    }
-}
-
-class_alias('Twig\Test\IntegrationTestCase', 'Twig_Test_IntegrationTestCase');
diff --git a/vendor/twig/twig/src/Test/NodeTestCase.php b/vendor/twig/twig/src/Test/NodeTestCase.php
deleted file mode 100644
index f3358cb9a363d848b3756b465813775741982c7e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Test/NodeTestCase.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Test;
-
-use PHPUnit\Framework\TestCase;
-use Twig\Compiler;
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-use Twig\Node\Node;
-
-abstract class NodeTestCase extends TestCase
-{
-    abstract public function getTests();
-
-    /**
-     * @dataProvider getTests
-     */
-    public function testCompile($node, $source, $environment = null, $isPattern = false)
-    {
-        $this->assertNodeCompilation($source, $node, $environment, $isPattern);
-    }
-
-    public function assertNodeCompilation($source, Node $node, Environment $environment = null, $isPattern = false)
-    {
-        $compiler = $this->getCompiler($environment);
-        $compiler->compile($node);
-
-        if ($isPattern) {
-            $this->assertStringMatchesFormat($source, trim($compiler->getSource()));
-        } else {
-            $this->assertEquals($source, trim($compiler->getSource()));
-        }
-    }
-
-    protected function getCompiler(Environment $environment = null)
-    {
-        return new Compiler(null === $environment ? $this->getEnvironment() : $environment);
-    }
-
-    protected function getEnvironment()
-    {
-        return new Environment(new ArrayLoader([]));
-    }
-
-    protected function getVariableGetter($name, $line = false)
-    {
-        $line = $line > 0 ? "// line {$line}\n" : '';
-
-        if (\PHP_VERSION_ID >= 70000) {
-            return sprintf('%s($context["%s"] ?? null)', $line, $name);
-        }
-
-        if (\PHP_VERSION_ID >= 50400) {
-            return sprintf('%s(isset($context["%s"]) ? $context["%s"] : null)', $line, $name, $name);
-        }
-
-        return sprintf('%s$this->getContext($context, "%s")', $line, $name);
-    }
-
-    protected function getAttributeGetter()
-    {
-        if (\function_exists('twig_template_get_attributes')) {
-            return 'twig_template_get_attributes($this, ';
-        }
-
-        return '$this->getAttribute(';
-    }
-}
-
-class_alias('Twig\Test\NodeTestCase', 'Twig_Test_NodeTestCase');
diff --git a/vendor/twig/twig/src/Token.php b/vendor/twig/twig/src/Token.php
deleted file mode 100644
index a0bb11af15eec7eb826175bc376447105ef4e3bf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Token.php
+++ /dev/null
@@ -1,215 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-/**
- * Represents a Token.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final
- */
-class Token
-{
-    protected $value;
-    protected $type;
-    protected $lineno;
-
-    const EOF_TYPE = -1;
-    const TEXT_TYPE = 0;
-    const BLOCK_START_TYPE = 1;
-    const VAR_START_TYPE = 2;
-    const BLOCK_END_TYPE = 3;
-    const VAR_END_TYPE = 4;
-    const NAME_TYPE = 5;
-    const NUMBER_TYPE = 6;
-    const STRING_TYPE = 7;
-    const OPERATOR_TYPE = 8;
-    const PUNCTUATION_TYPE = 9;
-    const INTERPOLATION_START_TYPE = 10;
-    const INTERPOLATION_END_TYPE = 11;
-    const ARROW_TYPE = 12;
-
-    /**
-     * @param int    $type   The type of the token
-     * @param string $value  The token value
-     * @param int    $lineno The line position in the source
-     */
-    public function __construct($type, $value, $lineno)
-    {
-        $this->type = $type;
-        $this->value = $value;
-        $this->lineno = $lineno;
-    }
-
-    public function __toString()
-    {
-        return sprintf('%s(%s)', self::typeToString($this->type, true), $this->value);
-    }
-
-    /**
-     * Tests the current token for a type and/or a value.
-     *
-     * Parameters may be:
-     *  * just type
-     *  * type and value (or array of possible values)
-     *  * just value (or array of possible values) (NAME_TYPE is used as type)
-     *
-     * @param array|string|int  $type   The type to test
-     * @param array|string|null $values The token value
-     *
-     * @return bool
-     */
-    public function test($type, $values = null)
-    {
-        if (null === $values && !\is_int($type)) {
-            $values = $type;
-            $type = self::NAME_TYPE;
-        }
-
-        return ($this->type === $type) && (
-            null === $values ||
-            (\is_array($values) && \in_array($this->value, $values)) ||
-            $this->value == $values
-        );
-    }
-
-    /**
-     * @return int
-     */
-    public function getLine()
-    {
-        return $this->lineno;
-    }
-
-    /**
-     * @return int
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * @return string
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Returns the constant representation (internal) of a given type.
-     *
-     * @param int  $type  The type as an integer
-     * @param bool $short Whether to return a short representation or not
-     *
-     * @return string The string representation
-     */
-    public static function typeToString($type, $short = false)
-    {
-        switch ($type) {
-            case self::EOF_TYPE:
-                $name = 'EOF_TYPE';
-                break;
-            case self::TEXT_TYPE:
-                $name = 'TEXT_TYPE';
-                break;
-            case self::BLOCK_START_TYPE:
-                $name = 'BLOCK_START_TYPE';
-                break;
-            case self::VAR_START_TYPE:
-                $name = 'VAR_START_TYPE';
-                break;
-            case self::BLOCK_END_TYPE:
-                $name = 'BLOCK_END_TYPE';
-                break;
-            case self::VAR_END_TYPE:
-                $name = 'VAR_END_TYPE';
-                break;
-            case self::NAME_TYPE:
-                $name = 'NAME_TYPE';
-                break;
-            case self::NUMBER_TYPE:
-                $name = 'NUMBER_TYPE';
-                break;
-            case self::STRING_TYPE:
-                $name = 'STRING_TYPE';
-                break;
-            case self::OPERATOR_TYPE:
-                $name = 'OPERATOR_TYPE';
-                break;
-            case self::PUNCTUATION_TYPE:
-                $name = 'PUNCTUATION_TYPE';
-                break;
-            case self::INTERPOLATION_START_TYPE:
-                $name = 'INTERPOLATION_START_TYPE';
-                break;
-            case self::INTERPOLATION_END_TYPE:
-                $name = 'INTERPOLATION_END_TYPE';
-                break;
-            case self::ARROW_TYPE:
-                $name = 'ARROW_TYPE';
-                break;
-            default:
-                throw new \LogicException(sprintf('Token of type "%s" does not exist.', $type));
-        }
-
-        return $short ? $name : 'Twig\Token::'.$name;
-    }
-
-    /**
-     * Returns the English representation of a given type.
-     *
-     * @param int $type The type as an integer
-     *
-     * @return string The string representation
-     */
-    public static function typeToEnglish($type)
-    {
-        switch ($type) {
-            case self::EOF_TYPE:
-                return 'end of template';
-            case self::TEXT_TYPE:
-                return 'text';
-            case self::BLOCK_START_TYPE:
-                return 'begin of statement block';
-            case self::VAR_START_TYPE:
-                return 'begin of print statement';
-            case self::BLOCK_END_TYPE:
-                return 'end of statement block';
-            case self::VAR_END_TYPE:
-                return 'end of print statement';
-            case self::NAME_TYPE:
-                return 'name';
-            case self::NUMBER_TYPE:
-                return 'number';
-            case self::STRING_TYPE:
-                return 'string';
-            case self::OPERATOR_TYPE:
-                return 'operator';
-            case self::PUNCTUATION_TYPE:
-                return 'punctuation';
-            case self::INTERPOLATION_START_TYPE:
-                return 'begin of string interpolation';
-            case self::INTERPOLATION_END_TYPE:
-                return 'end of string interpolation';
-            case self::ARROW_TYPE:
-                return 'arrow function';
-            default:
-                throw new \LogicException(sprintf('Token of type "%s" does not exist.', $type));
-        }
-    }
-}
-
-class_alias('Twig\Token', 'Twig_Token');
diff --git a/vendor/twig/twig/src/TokenParser/AbstractTokenParser.php b/vendor/twig/twig/src/TokenParser/AbstractTokenParser.php
deleted file mode 100644
index 2c2f90b7f117ccf91f5a8cc3ecef28f60ec59354..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/AbstractTokenParser.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Parser;
-
-/**
- * Base class for all token parsers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class AbstractTokenParser implements TokenParserInterface
-{
-    /**
-     * @var Parser
-     */
-    protected $parser;
-
-    public function setParser(Parser $parser)
-    {
-        $this->parser = $parser;
-    }
-}
-
-class_alias('Twig\TokenParser\AbstractTokenParser', 'Twig_TokenParser');
diff --git a/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php b/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php
deleted file mode 100644
index c75e5ef8aa9a345ed8c3caccf867cd437779dec9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Node\Expression\TempNameExpression;
-use Twig\Node\Node;
-use Twig\Node\PrintNode;
-use Twig\Node\SetNode;
-use Twig\Token;
-
-/**
- * Applies filters on a section of a template.
- *
- *   {% apply upper %}
- *      This text becomes uppercase
- *   {% endapply %}
- */
-final class ApplyTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-        $name = $this->parser->getVarName();
-
-        $ref = new TempNameExpression($name, $lineno);
-        $ref->setAttribute('always_defined', true);
-
-        $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag());
-
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse([$this, 'decideApplyEnd'], true);
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        return new Node([
-            new SetNode(true, $ref, $body, $lineno, $this->getTag()),
-            new PrintNode($filter, $lineno, $this->getTag()),
-        ]);
-    }
-
-    public function decideApplyEnd(Token $token)
-    {
-        return $token->test('endapply');
-    }
-
-    public function getTag()
-    {
-        return 'apply';
-    }
-}
diff --git a/vendor/twig/twig/src/TokenParser/AutoEscapeTokenParser.php b/vendor/twig/twig/src/TokenParser/AutoEscapeTokenParser.php
deleted file mode 100644
index 2cd0cc69d73681e496097c33f150073d3e5c5101..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/AutoEscapeTokenParser.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\AutoEscapeNode;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Token;
-
-/**
- * Marks a section of a template to be escaped or not.
- *
- *   {% autoescape true %}
- *     Everything will be automatically escaped in this block
- *   {% endautoescape %}
- *
- *   {% autoescape false %}
- *     Everything will be outputed as is in this block
- *   {% endautoescape %}
- *
- *   {% autoescape true js %}
- *     Everything will be automatically escaped in this block
- *     using the js escaping strategy
- *   {% endautoescape %}
- *
- * @final
- */
-class AutoEscapeTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-
-        if ($stream->test(Token::BLOCK_END_TYPE)) {
-            $value = 'html';
-        } else {
-            $expr = $this->parser->getExpressionParser()->parseExpression();
-            if (!$expr instanceof ConstantExpression) {
-                throw new SyntaxError('An escaping strategy must be a string or a bool.', $stream->getCurrent()->getLine(), $stream->getSourceContext());
-            }
-            $value = $expr->getAttribute('value');
-
-            $compat = true === $value || false === $value;
-
-            if (true === $value) {
-                $value = 'html';
-            }
-
-            if ($compat && $stream->test(Token::NAME_TYPE)) {
-                @trigger_error('Using the autoescape tag with "true" or "false" before the strategy name is deprecated since version 1.21.', E_USER_DEPRECATED);
-
-                if (false === $value) {
-                    throw new SyntaxError('Unexpected escaping strategy as you set autoescaping to false.', $stream->getCurrent()->getLine(), $stream->getSourceContext());
-                }
-
-                $value = $stream->next()->getValue();
-            }
-        }
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse([$this, 'decideBlockEnd'], true);
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        return new AutoEscapeNode($value, $body, $lineno, $this->getTag());
-    }
-
-    public function decideBlockEnd(Token $token)
-    {
-        return $token->test('endautoescape');
-    }
-
-    public function getTag()
-    {
-        return 'autoescape';
-    }
-}
-
-class_alias('Twig\TokenParser\AutoEscapeTokenParser', 'Twig_TokenParser_AutoEscape');
diff --git a/vendor/twig/twig/src/TokenParser/BlockTokenParser.php b/vendor/twig/twig/src/TokenParser/BlockTokenParser.php
deleted file mode 100644
index caf11f0b7266184549d6d27e755f7aae372ef5fa..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/BlockTokenParser.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\BlockNode;
-use Twig\Node\BlockReferenceNode;
-use Twig\Node\Node;
-use Twig\Node\PrintNode;
-use Twig\Token;
-
-/**
- * Marks a section of a template as being reusable.
- *
- *  {% block head %}
- *    <link rel="stylesheet" href="style.css" />
- *    <title>{% block title %}{% endblock %} - My Webpage</title>
- *  {% endblock %}
- *
- * @final
- */
-class BlockTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-        $name = $stream->expect(Token::NAME_TYPE)->getValue();
-        if ($this->parser->hasBlock($name)) {
-            throw new SyntaxError(sprintf("The block '%s' has already been defined line %d.", $name, $this->parser->getBlock($name)->getTemplateLine()), $stream->getCurrent()->getLine(), $stream->getSourceContext());
-        }
-        $this->parser->setBlock($name, $block = new BlockNode($name, new Node([]), $lineno));
-        $this->parser->pushLocalScope();
-        $this->parser->pushBlockStack($name);
-
-        if ($stream->nextIf(Token::BLOCK_END_TYPE)) {
-            $body = $this->parser->subparse([$this, 'decideBlockEnd'], true);
-            if ($token = $stream->nextIf(Token::NAME_TYPE)) {
-                $value = $token->getValue();
-
-                if ($value != $name) {
-                    throw new SyntaxError(sprintf('Expected endblock for block "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext());
-                }
-            }
-        } else {
-            $body = new Node([
-                new PrintNode($this->parser->getExpressionParser()->parseExpression(), $lineno),
-            ]);
-        }
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        $block->setNode('body', $body);
-        $this->parser->popBlockStack();
-        $this->parser->popLocalScope();
-
-        return new BlockReferenceNode($name, $lineno, $this->getTag());
-    }
-
-    public function decideBlockEnd(Token $token)
-    {
-        return $token->test('endblock');
-    }
-
-    public function getTag()
-    {
-        return 'block';
-    }
-}
-
-class_alias('Twig\TokenParser\BlockTokenParser', 'Twig_TokenParser_Block');
diff --git a/vendor/twig/twig/src/TokenParser/DeprecatedTokenParser.php b/vendor/twig/twig/src/TokenParser/DeprecatedTokenParser.php
deleted file mode 100644
index 6575cff167d21a41512210882ba87f0b19a5bf76..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/DeprecatedTokenParser.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Node\DeprecatedNode;
-use Twig\Token;
-
-/**
- * Deprecates a section of a template.
- *
- *    {% deprecated 'The "base.twig" template is deprecated, use "layout.twig" instead.' %}
- *    {% extends 'layout.html.twig' %}
- *
- * @author Yonel Ceruto <yonelceruto@gmail.com>
- *
- * @final
- */
-class DeprecatedTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $expr = $this->parser->getExpressionParser()->parseExpression();
-
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        return new DeprecatedNode($expr, $token->getLine(), $this->getTag());
-    }
-
-    public function getTag()
-    {
-        return 'deprecated';
-    }
-}
-
-class_alias('Twig\TokenParser\DeprecatedTokenParser', 'Twig_TokenParser_Deprecated');
diff --git a/vendor/twig/twig/src/TokenParser/DoTokenParser.php b/vendor/twig/twig/src/TokenParser/DoTokenParser.php
deleted file mode 100644
index e1eae10f230267258bd4c4a60544e18bfd9fd635..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/DoTokenParser.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Node\DoNode;
-use Twig\Token;
-
-/**
- * Evaluates an expression, discarding the returned value.
- *
- * @final
- */
-class DoTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $expr = $this->parser->getExpressionParser()->parseExpression();
-
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        return new DoNode($expr, $token->getLine(), $this->getTag());
-    }
-
-    public function getTag()
-    {
-        return 'do';
-    }
-}
-
-class_alias('Twig\TokenParser\DoTokenParser', 'Twig_TokenParser_Do');
diff --git a/vendor/twig/twig/src/TokenParser/EmbedTokenParser.php b/vendor/twig/twig/src/TokenParser/EmbedTokenParser.php
deleted file mode 100644
index 973ff2e45b1f55f1e2c1e72db0e3ca6423c51fb6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/EmbedTokenParser.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Node\EmbedNode;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Token;
-
-/**
- * Embeds a template.
- *
- * @final
- */
-class EmbedTokenParser extends IncludeTokenParser
-{
-    public function parse(Token $token)
-    {
-        $stream = $this->parser->getStream();
-
-        $parent = $this->parser->getExpressionParser()->parseExpression();
-
-        list($variables, $only, $ignoreMissing) = $this->parseArguments();
-
-        $parentToken = $fakeParentToken = new Token(Token::STRING_TYPE, '__parent__', $token->getLine());
-        if ($parent instanceof ConstantExpression) {
-            $parentToken = new Token(Token::STRING_TYPE, $parent->getAttribute('value'), $token->getLine());
-        } elseif ($parent instanceof NameExpression) {
-            $parentToken = new Token(Token::NAME_TYPE, $parent->getAttribute('name'), $token->getLine());
-        }
-
-        // inject a fake parent to make the parent() function work
-        $stream->injectTokens([
-            new Token(Token::BLOCK_START_TYPE, '', $token->getLine()),
-            new Token(Token::NAME_TYPE, 'extends', $token->getLine()),
-            $parentToken,
-            new Token(Token::BLOCK_END_TYPE, '', $token->getLine()),
-        ]);
-
-        $module = $this->parser->parse($stream, [$this, 'decideBlockEnd'], true);
-
-        // override the parent with the correct one
-        if ($fakeParentToken === $parentToken) {
-            $module->setNode('parent', $parent);
-        }
-
-        $this->parser->embedTemplate($module);
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        return new EmbedNode($module->getTemplateName(), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag());
-    }
-
-    public function decideBlockEnd(Token $token)
-    {
-        return $token->test('endembed');
-    }
-
-    public function getTag()
-    {
-        return 'embed';
-    }
-}
-
-class_alias('Twig\TokenParser\EmbedTokenParser', 'Twig_TokenParser_Embed');
diff --git a/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php b/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php
deleted file mode 100644
index e66789a7bdc34ae7369d7ce27ecd385d45924470..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\Node;
-use Twig\Token;
-
-/**
- * Extends a template by another one.
- *
- *  {% extends "base.html" %}
- *
- * @final
- */
-class ExtendsTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $stream = $this->parser->getStream();
-
-        if ($this->parser->peekBlockStack()) {
-            throw new SyntaxError('Cannot use "extend" in a block.', $token->getLine(), $stream->getSourceContext());
-        } elseif (!$this->parser->isMainScope()) {
-            throw new SyntaxError('Cannot use "extend" in a macro.', $token->getLine(), $stream->getSourceContext());
-        }
-
-        if (null !== $this->parser->getParent()) {
-            throw new SyntaxError('Multiple extends tags are forbidden.', $token->getLine(), $stream->getSourceContext());
-        }
-        $this->parser->setParent($this->parser->getExpressionParser()->parseExpression());
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        return new Node();
-    }
-
-    public function getTag()
-    {
-        return 'extends';
-    }
-}
-
-class_alias('Twig\TokenParser\ExtendsTokenParser', 'Twig_TokenParser_Extends');
diff --git a/vendor/twig/twig/src/TokenParser/FilterTokenParser.php b/vendor/twig/twig/src/TokenParser/FilterTokenParser.php
deleted file mode 100644
index dc07dcfa41ea155a32b30a8ea57ef7fc98cf28ac..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/FilterTokenParser.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Node\BlockNode;
-use Twig\Node\Expression\BlockReferenceExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\PrintNode;
-use Twig\Token;
-
-/**
- * Filters a section of a template by applying filters.
- *
- *   {% filter upper %}
- *      This text becomes uppercase
- *   {% endfilter %}
- *
- * @final
- */
-class FilterTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $name = $this->parser->getVarName();
-        $ref = new BlockReferenceExpression(new ConstantExpression($name, $token->getLine()), null, $token->getLine(), $this->getTag());
-
-        $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag());
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        $body = $this->parser->subparse([$this, 'decideBlockEnd'], true);
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        $block = new BlockNode($name, $body, $token->getLine());
-        $this->parser->setBlock($name, $block);
-
-        return new PrintNode($filter, $token->getLine(), $this->getTag());
-    }
-
-    public function decideBlockEnd(Token $token)
-    {
-        return $token->test('endfilter');
-    }
-
-    public function getTag()
-    {
-        return 'filter';
-    }
-}
-
-class_alias('Twig\TokenParser\FilterTokenParser', 'Twig_TokenParser_Filter');
diff --git a/vendor/twig/twig/src/TokenParser/FlushTokenParser.php b/vendor/twig/twig/src/TokenParser/FlushTokenParser.php
deleted file mode 100644
index b25524fa8da74895583cbf29cfdc6746d32ca1f3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/FlushTokenParser.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Node\FlushNode;
-use Twig\Token;
-
-/**
- * Flushes the output to the client.
- *
- * @see flush()
- *
- * @final
- */
-class FlushTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        return new FlushNode($token->getLine(), $this->getTag());
-    }
-
-    public function getTag()
-    {
-        return 'flush';
-    }
-}
-
-class_alias('Twig\TokenParser\FlushTokenParser', 'Twig_TokenParser_Flush');
diff --git a/vendor/twig/twig/src/TokenParser/ForTokenParser.php b/vendor/twig/twig/src/TokenParser/ForTokenParser.php
deleted file mode 100644
index 69278d98ed3fe8b4988186719985d83023450dc5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/ForTokenParser.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\GetAttrExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\ForNode;
-use Twig\Token;
-use Twig\TokenStream;
-
-/**
- * Loops over each item of a sequence.
- *
- *   <ul>
- *    {% for user in users %}
- *      <li>{{ user.username|e }}</li>
- *    {% endfor %}
- *   </ul>
- *
- * @final
- */
-class ForTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-        $targets = $this->parser->getExpressionParser()->parseAssignmentExpression();
-        $stream->expect(Token::OPERATOR_TYPE, 'in');
-        $seq = $this->parser->getExpressionParser()->parseExpression();
-
-        $ifexpr = null;
-        if ($stream->nextIf(Token::NAME_TYPE, 'if')) {
-            $ifexpr = $this->parser->getExpressionParser()->parseExpression();
-        }
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse([$this, 'decideForFork']);
-        if ('else' == $stream->next()->getValue()) {
-            $stream->expect(Token::BLOCK_END_TYPE);
-            $else = $this->parser->subparse([$this, 'decideForEnd'], true);
-        } else {
-            $else = null;
-        }
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        if (\count($targets) > 1) {
-            $keyTarget = $targets->getNode(0);
-            $keyTarget = new AssignNameExpression($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine());
-            $valueTarget = $targets->getNode(1);
-            $valueTarget = new AssignNameExpression($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine());
-        } else {
-            $keyTarget = new AssignNameExpression('_key', $lineno);
-            $valueTarget = $targets->getNode(0);
-            $valueTarget = new AssignNameExpression($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine());
-        }
-
-        if ($ifexpr) {
-            $this->checkLoopUsageCondition($stream, $ifexpr);
-            $this->checkLoopUsageBody($stream, $body);
-        }
-
-        return new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, $lineno, $this->getTag());
-    }
-
-    public function decideForFork(Token $token)
-    {
-        return $token->test(['else', 'endfor']);
-    }
-
-    public function decideForEnd(Token $token)
-    {
-        return $token->test('endfor');
-    }
-
-    // the loop variable cannot be used in the condition
-    protected function checkLoopUsageCondition(TokenStream $stream, \Twig_NodeInterface $node)
-    {
-        if ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression && 'loop' == $node->getNode('node')->getAttribute('name')) {
-            throw new SyntaxError('The "loop" variable cannot be used in a looping condition.', $node->getTemplateLine(), $stream->getSourceContext());
-        }
-
-        foreach ($node as $n) {
-            if (!$n) {
-                continue;
-            }
-
-            $this->checkLoopUsageCondition($stream, $n);
-        }
-    }
-
-    // check usage of non-defined loop-items
-    // it does not catch all problems (for instance when a for is included into another or when the variable is used in an include)
-    protected function checkLoopUsageBody(TokenStream $stream, \Twig_NodeInterface $node)
-    {
-        if ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression && 'loop' == $node->getNode('node')->getAttribute('name')) {
-            $attribute = $node->getNode('attribute');
-            if ($attribute instanceof ConstantExpression && \in_array($attribute->getAttribute('value'), ['length', 'revindex0', 'revindex', 'last'])) {
-                throw new SyntaxError(sprintf('The "loop.%s" variable is not defined when looping with a condition.', $attribute->getAttribute('value')), $node->getTemplateLine(), $stream->getSourceContext());
-            }
-        }
-
-        // should check for parent.loop.XXX usage
-        if ($node instanceof ForNode) {
-            return;
-        }
-
-        foreach ($node as $n) {
-            if (!$n) {
-                continue;
-            }
-
-            $this->checkLoopUsageBody($stream, $n);
-        }
-    }
-
-    public function getTag()
-    {
-        return 'for';
-    }
-}
-
-class_alias('Twig\TokenParser\ForTokenParser', 'Twig_TokenParser_For');
diff --git a/vendor/twig/twig/src/TokenParser/FromTokenParser.php b/vendor/twig/twig/src/TokenParser/FromTokenParser.php
deleted file mode 100644
index 4cce650d6177bc7438e83c5e58b78e7bb16ff544..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/FromTokenParser.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\ImportNode;
-use Twig\Token;
-
-/**
- * Imports macros.
- *
- *   {% from 'forms.html' import forms %}
- *
- * @final
- */
-class FromTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $macro = $this->parser->getExpressionParser()->parseExpression();
-        $stream = $this->parser->getStream();
-        $stream->expect(Token::NAME_TYPE, 'import');
-
-        $targets = [];
-        do {
-            $name = $stream->expect(Token::NAME_TYPE)->getValue();
-
-            $alias = $name;
-            if ($stream->nextIf('as')) {
-                $alias = $stream->expect(Token::NAME_TYPE)->getValue();
-            }
-
-            $targets[$name] = $alias;
-
-            if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) {
-                break;
-            }
-        } while (true);
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        $var = new AssignNameExpression($this->parser->getVarName(), $token->getLine());
-        $node = new ImportNode($macro, $var, $token->getLine(), $this->getTag());
-
-        foreach ($targets as $name => $alias) {
-            if ($this->parser->isReservedMacroName($name)) {
-                throw new SyntaxError(sprintf('"%s" cannot be an imported macro as it is a reserved keyword.', $name), $token->getLine(), $stream->getSourceContext());
-            }
-
-            $this->parser->addImportedSymbol('function', $alias, 'get'.$name, $var);
-        }
-
-        return $node;
-    }
-
-    public function getTag()
-    {
-        return 'from';
-    }
-}
-
-class_alias('Twig\TokenParser\FromTokenParser', 'Twig_TokenParser_From');
diff --git a/vendor/twig/twig/src/TokenParser/IfTokenParser.php b/vendor/twig/twig/src/TokenParser/IfTokenParser.php
deleted file mode 100644
index 2631a20cec588740580092c4a9e7f2e2f0d88d24..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/IfTokenParser.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\IfNode;
-use Twig\Node\Node;
-use Twig\Token;
-
-/**
- * Tests a condition.
- *
- *   {% if users %}
- *    <ul>
- *      {% for user in users %}
- *        <li>{{ user.username|e }}</li>
- *      {% endfor %}
- *    </ul>
- *   {% endif %}
- *
- * @final
- */
-class IfTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-        $expr = $this->parser->getExpressionParser()->parseExpression();
-        $stream = $this->parser->getStream();
-        $stream->expect(Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse([$this, 'decideIfFork']);
-        $tests = [$expr, $body];
-        $else = null;
-
-        $end = false;
-        while (!$end) {
-            switch ($stream->next()->getValue()) {
-                case 'else':
-                    $stream->expect(Token::BLOCK_END_TYPE);
-                    $else = $this->parser->subparse([$this, 'decideIfEnd']);
-                    break;
-
-                case 'elseif':
-                    $expr = $this->parser->getExpressionParser()->parseExpression();
-                    $stream->expect(Token::BLOCK_END_TYPE);
-                    $body = $this->parser->subparse([$this, 'decideIfFork']);
-                    $tests[] = $expr;
-                    $tests[] = $body;
-                    break;
-
-                case 'endif':
-                    $end = true;
-                    break;
-
-                default:
-                    throw new SyntaxError(sprintf('Unexpected end of template. Twig was looking for the following tags "else", "elseif", or "endif" to close the "if" block started at line %d).', $lineno), $stream->getCurrent()->getLine(), $stream->getSourceContext());
-            }
-        }
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        return new IfNode(new Node($tests), $else, $lineno, $this->getTag());
-    }
-
-    public function decideIfFork(Token $token)
-    {
-        return $token->test(['elseif', 'else', 'endif']);
-    }
-
-    public function decideIfEnd(Token $token)
-    {
-        return $token->test(['endif']);
-    }
-
-    public function getTag()
-    {
-        return 'if';
-    }
-}
-
-class_alias('Twig\TokenParser\IfTokenParser', 'Twig_TokenParser_If');
diff --git a/vendor/twig/twig/src/TokenParser/ImportTokenParser.php b/vendor/twig/twig/src/TokenParser/ImportTokenParser.php
deleted file mode 100644
index 88395b924892a87b9babef9a5165c9cd06a16fb7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/ImportTokenParser.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\ImportNode;
-use Twig\Token;
-
-/**
- * Imports macros.
- *
- *   {% import 'forms.html' as forms %}
- *
- * @final
- */
-class ImportTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $macro = $this->parser->getExpressionParser()->parseExpression();
-        $this->parser->getStream()->expect(Token::NAME_TYPE, 'as');
-        $var = new AssignNameExpression($this->parser->getStream()->expect(Token::NAME_TYPE)->getValue(), $token->getLine());
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        $this->parser->addImportedSymbol('template', $var->getAttribute('name'));
-
-        return new ImportNode($macro, $var, $token->getLine(), $this->getTag());
-    }
-
-    public function getTag()
-    {
-        return 'import';
-    }
-}
-
-class_alias('Twig\TokenParser\ImportTokenParser', 'Twig_TokenParser_Import');
diff --git a/vendor/twig/twig/src/TokenParser/IncludeTokenParser.php b/vendor/twig/twig/src/TokenParser/IncludeTokenParser.php
deleted file mode 100644
index 57aa4cf41afe9273b5a4e76768678daddf6f259c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/IncludeTokenParser.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Node\IncludeNode;
-use Twig\Token;
-
-/**
- * Includes a template.
- *
- *   {% include 'header.html' %}
- *     Body
- *   {% include 'footer.html' %}
- */
-class IncludeTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $expr = $this->parser->getExpressionParser()->parseExpression();
-
-        list($variables, $only, $ignoreMissing) = $this->parseArguments();
-
-        return new IncludeNode($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag());
-    }
-
-    protected function parseArguments()
-    {
-        $stream = $this->parser->getStream();
-
-        $ignoreMissing = false;
-        if ($stream->nextIf(Token::NAME_TYPE, 'ignore')) {
-            $stream->expect(Token::NAME_TYPE, 'missing');
-
-            $ignoreMissing = true;
-        }
-
-        $variables = null;
-        if ($stream->nextIf(Token::NAME_TYPE, 'with')) {
-            $variables = $this->parser->getExpressionParser()->parseExpression();
-        }
-
-        $only = false;
-        if ($stream->nextIf(Token::NAME_TYPE, 'only')) {
-            $only = true;
-        }
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        return [$variables, $only, $ignoreMissing];
-    }
-
-    public function getTag()
-    {
-        return 'include';
-    }
-}
-
-class_alias('Twig\TokenParser\IncludeTokenParser', 'Twig_TokenParser_Include');
diff --git a/vendor/twig/twig/src/TokenParser/MacroTokenParser.php b/vendor/twig/twig/src/TokenParser/MacroTokenParser.php
deleted file mode 100644
index a0d66e7bea802c42a053f10ddd0d956f151e94a2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/MacroTokenParser.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\BodyNode;
-use Twig\Node\MacroNode;
-use Twig\Node\Node;
-use Twig\Token;
-
-/**
- * Defines a macro.
- *
- *   {% macro input(name, value, type, size) %}
- *      <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
- *   {% endmacro %}
- *
- * @final
- */
-class MacroTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-        $name = $stream->expect(Token::NAME_TYPE)->getValue();
-
-        $arguments = $this->parser->getExpressionParser()->parseArguments(true, true);
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-        $this->parser->pushLocalScope();
-        $body = $this->parser->subparse([$this, 'decideBlockEnd'], true);
-        if ($token = $stream->nextIf(Token::NAME_TYPE)) {
-            $value = $token->getValue();
-
-            if ($value != $name) {
-                throw new SyntaxError(sprintf('Expected endmacro for macro "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext());
-            }
-        }
-        $this->parser->popLocalScope();
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        $this->parser->setMacro($name, new MacroNode($name, new BodyNode([$body]), $arguments, $lineno, $this->getTag()));
-
-        return new Node();
-    }
-
-    public function decideBlockEnd(Token $token)
-    {
-        return $token->test('endmacro');
-    }
-
-    public function getTag()
-    {
-        return 'macro';
-    }
-}
-
-class_alias('Twig\TokenParser\MacroTokenParser', 'Twig_TokenParser_Macro');
diff --git a/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php b/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php
deleted file mode 100644
index 0f3ad9e3e6c70aef58348322c36034fe9ef27df8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\IncludeNode;
-use Twig\Node\SandboxNode;
-use Twig\Node\TextNode;
-use Twig\Token;
-
-/**
- * Marks a section of a template as untrusted code that must be evaluated in the sandbox mode.
- *
- *    {% sandbox %}
- *        {% include 'user.html' %}
- *    {% endsandbox %}
- *
- * @see https://twig.symfony.com/doc/api.html#sandbox-extension for details
- *
- * @final
- */
-class SandboxTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $stream = $this->parser->getStream();
-        $stream->expect(Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse([$this, 'decideBlockEnd'], true);
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        // in a sandbox tag, only include tags are allowed
-        if (!$body instanceof IncludeNode) {
-            foreach ($body as $node) {
-                if ($node instanceof TextNode && ctype_space($node->getAttribute('data'))) {
-                    continue;
-                }
-
-                if (!$node instanceof IncludeNode) {
-                    throw new SyntaxError('Only "include" tags are allowed within a "sandbox" section.', $node->getTemplateLine(), $stream->getSourceContext());
-                }
-            }
-        }
-
-        return new SandboxNode($body, $token->getLine(), $this->getTag());
-    }
-
-    public function decideBlockEnd(Token $token)
-    {
-        return $token->test('endsandbox');
-    }
-
-    public function getTag()
-    {
-        return 'sandbox';
-    }
-}
-
-class_alias('Twig\TokenParser\SandboxTokenParser', 'Twig_TokenParser_Sandbox');
diff --git a/vendor/twig/twig/src/TokenParser/SetTokenParser.php b/vendor/twig/twig/src/TokenParser/SetTokenParser.php
deleted file mode 100644
index eebebc698513f9031fa8b808ed0dc974975269fe..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/SetTokenParser.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\SetNode;
-use Twig\Token;
-
-/**
- * Defines a variable.
- *
- *  {% set foo = 'foo' %}
- *  {% set foo = [1, 2] %}
- *  {% set foo = {'foo': 'bar'} %}
- *  {% set foo = 'foo' ~ 'bar' %}
- *  {% set foo, bar = 'foo', 'bar' %}
- *  {% set foo %}Some content{% endset %}
- *
- * @final
- */
-class SetTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-        $names = $this->parser->getExpressionParser()->parseAssignmentExpression();
-
-        $capture = false;
-        if ($stream->nextIf(Token::OPERATOR_TYPE, '=')) {
-            $values = $this->parser->getExpressionParser()->parseMultitargetExpression();
-
-            $stream->expect(Token::BLOCK_END_TYPE);
-
-            if (\count($names) !== \count($values)) {
-                throw new SyntaxError('When using set, you must have the same number of variables and assignments.', $stream->getCurrent()->getLine(), $stream->getSourceContext());
-            }
-        } else {
-            $capture = true;
-
-            if (\count($names) > 1) {
-                throw new SyntaxError('When using set with a block, you cannot have a multi-target.', $stream->getCurrent()->getLine(), $stream->getSourceContext());
-            }
-
-            $stream->expect(Token::BLOCK_END_TYPE);
-
-            $values = $this->parser->subparse([$this, 'decideBlockEnd'], true);
-            $stream->expect(Token::BLOCK_END_TYPE);
-        }
-
-        return new SetNode($capture, $names, $values, $lineno, $this->getTag());
-    }
-
-    public function decideBlockEnd(Token $token)
-    {
-        return $token->test('endset');
-    }
-
-    public function getTag()
-    {
-        return 'set';
-    }
-}
-
-class_alias('Twig\TokenParser\SetTokenParser', 'Twig_TokenParser_Set');
diff --git a/vendor/twig/twig/src/TokenParser/SpacelessTokenParser.php b/vendor/twig/twig/src/TokenParser/SpacelessTokenParser.php
deleted file mode 100644
index 5b5656bc64fe54a5798207655a8df75a806d17c9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/SpacelessTokenParser.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Node\SpacelessNode;
-use Twig\Token;
-
-/**
- * Remove whitespaces between HTML tags.
- *
- *   {% spaceless %}
- *      <div>
- *          <strong>foo</strong>
- *      </div>
- *   {% endspaceless %}
- *   {# output will be <div><strong>foo</strong></div> #}
- *
- * @final
- */
-class SpacelessTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $lineno = $token->getLine();
-
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse([$this, 'decideSpacelessEnd'], true);
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        return new SpacelessNode($body, $lineno, $this->getTag());
-    }
-
-    public function decideSpacelessEnd(Token $token)
-    {
-        return $token->test('endspaceless');
-    }
-
-    public function getTag()
-    {
-        return 'spaceless';
-    }
-}
-
-class_alias('Twig\TokenParser\SpacelessTokenParser', 'Twig_TokenParser_Spaceless');
diff --git a/vendor/twig/twig/src/TokenParser/TokenParserInterface.php b/vendor/twig/twig/src/TokenParser/TokenParserInterface.php
deleted file mode 100644
index 4b603b213ff826d3bbd792d5901acacc0ab989be..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/TokenParserInterface.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Error\SyntaxError;
-use Twig\Parser;
-use Twig\Token;
-
-/**
- * Interface implemented by token parsers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface TokenParserInterface
-{
-    /**
-     * Sets the parser associated with this token parser.
-     */
-    public function setParser(Parser $parser);
-
-    /**
-     * Parses a token and returns a node.
-     *
-     * @return \Twig_NodeInterface
-     *
-     * @throws SyntaxError
-     */
-    public function parse(Token $token);
-
-    /**
-     * Gets the tag name associated with this token parser.
-     *
-     * @return string The tag name
-     */
-    public function getTag();
-}
-
-class_alias('Twig\TokenParser\TokenParserInterface', 'Twig_TokenParserInterface');
-
-// Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name.
-class_exists('Twig\Token');
-class_exists('Twig\Parser');
diff --git a/vendor/twig/twig/src/TokenParser/UseTokenParser.php b/vendor/twig/twig/src/TokenParser/UseTokenParser.php
deleted file mode 100644
index d2e39aabeeacd7530bb210e950ebed2c4be97f8c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/UseTokenParser.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Error\SyntaxError;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Node;
-use Twig\Token;
-
-/**
- * Imports blocks defined in another template into the current template.
- *
- *    {% extends "base.html" %}
- *
- *    {% use "blocks.html" %}
- *
- *    {% block title %}{% endblock %}
- *    {% block content %}{% endblock %}
- *
- * @see https://twig.symfony.com/doc/templates.html#horizontal-reuse for details.
- *
- * @final
- */
-class UseTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $template = $this->parser->getExpressionParser()->parseExpression();
-        $stream = $this->parser->getStream();
-
-        if (!$template instanceof ConstantExpression) {
-            throw new SyntaxError('The template references in a "use" statement must be a string.', $stream->getCurrent()->getLine(), $stream->getSourceContext());
-        }
-
-        $targets = [];
-        if ($stream->nextIf('with')) {
-            do {
-                $name = $stream->expect(Token::NAME_TYPE)->getValue();
-
-                $alias = $name;
-                if ($stream->nextIf('as')) {
-                    $alias = $stream->expect(Token::NAME_TYPE)->getValue();
-                }
-
-                $targets[$name] = new ConstantExpression($alias, -1);
-
-                if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) {
-                    break;
-                }
-            } while (true);
-        }
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        $this->parser->addTrait(new Node(['template' => $template, 'targets' => new Node($targets)]));
-
-        return new Node();
-    }
-
-    public function getTag()
-    {
-        return 'use';
-    }
-}
-
-class_alias('Twig\TokenParser\UseTokenParser', 'Twig_TokenParser_Use');
diff --git a/vendor/twig/twig/src/TokenParser/WithTokenParser.php b/vendor/twig/twig/src/TokenParser/WithTokenParser.php
deleted file mode 100644
index 411e2b4a139d846b82b4fb3b521f218ebea121ad..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenParser/WithTokenParser.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\TokenParser;
-
-use Twig\Node\WithNode;
-use Twig\Token;
-
-/**
- * Creates a nested scope.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final
- */
-class WithTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $stream = $this->parser->getStream();
-
-        $variables = null;
-        $only = false;
-        if (!$stream->test(Token::BLOCK_END_TYPE)) {
-            $variables = $this->parser->getExpressionParser()->parseExpression();
-            $only = $stream->nextIf(Token::NAME_TYPE, 'only');
-        }
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        $body = $this->parser->subparse([$this, 'decideWithEnd'], true);
-
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        return new WithNode($body, $variables, $only, $token->getLine(), $this->getTag());
-    }
-
-    public function decideWithEnd(Token $token)
-    {
-        return $token->test('endwith');
-    }
-
-    public function getTag()
-    {
-        return 'with';
-    }
-}
-
-class_alias('Twig\TokenParser\WithTokenParser', 'Twig_TokenParser_With');
diff --git a/vendor/twig/twig/src/TokenStream.php b/vendor/twig/twig/src/TokenStream.php
deleted file mode 100644
index 4597816959b7204d862b6f1129685581f8685b96..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TokenStream.php
+++ /dev/null
@@ -1,201 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- * (c) Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-use Twig\Error\SyntaxError;
-
-/**
- * Represents a token stream.
- *
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TokenStream
-{
-    protected $tokens;
-    protected $current = 0;
-    protected $filename;
-
-    private $source;
-
-    /**
-     * @param array       $tokens An array of tokens
-     * @param string|null $name   The name of the template which tokens are associated with
-     * @param string|null $source The source code associated with the tokens
-     */
-    public function __construct(array $tokens, $name = null, $source = null)
-    {
-        if (!$name instanceof Source) {
-            if (null !== $name || null !== $source) {
-                @trigger_error(sprintf('Passing a string as the $name argument of %s() is deprecated since version 1.27. Pass a \Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED);
-            }
-            $this->source = new Source($source, $name);
-        } else {
-            $this->source = $name;
-        }
-
-        $this->tokens = $tokens;
-
-        // deprecated, not used anymore, to be removed in 2.0
-        $this->filename = $this->source->getName();
-    }
-
-    public function __toString()
-    {
-        return implode("\n", $this->tokens);
-    }
-
-    public function injectTokens(array $tokens)
-    {
-        $this->tokens = array_merge(\array_slice($this->tokens, 0, $this->current), $tokens, \array_slice($this->tokens, $this->current));
-    }
-
-    /**
-     * Sets the pointer to the next token and returns the old one.
-     *
-     * @return Token
-     */
-    public function next()
-    {
-        if (!isset($this->tokens[++$this->current])) {
-            throw new SyntaxError('Unexpected end of template.', $this->tokens[$this->current - 1]->getLine(), $this->source);
-        }
-
-        return $this->tokens[$this->current - 1];
-    }
-
-    /**
-     * Tests a token, sets the pointer to the next one and returns it or throws a syntax error.
-     *
-     * @return Token|null The next token if the condition is true, null otherwise
-     */
-    public function nextIf($primary, $secondary = null)
-    {
-        if ($this->tokens[$this->current]->test($primary, $secondary)) {
-            return $this->next();
-        }
-    }
-
-    /**
-     * Tests a token and returns it or throws a syntax error.
-     *
-     * @return Token
-     */
-    public function expect($type, $value = null, $message = null)
-    {
-        $token = $this->tokens[$this->current];
-        if (!$token->test($type, $value)) {
-            $line = $token->getLine();
-            throw new SyntaxError(sprintf('%sUnexpected token "%s"%s ("%s" expected%s).',
-                $message ? $message.'. ' : '',
-                Token::typeToEnglish($token->getType()),
-                $token->getValue() ? sprintf(' of value "%s"', $token->getValue()) : '',
-                Token::typeToEnglish($type), $value ? sprintf(' with value "%s"', $value) : ''),
-                $line,
-                $this->source
-            );
-        }
-        $this->next();
-
-        return $token;
-    }
-
-    /**
-     * Looks at the next token.
-     *
-     * @param int $number
-     *
-     * @return Token
-     */
-    public function look($number = 1)
-    {
-        if (!isset($this->tokens[$this->current + $number])) {
-            throw new SyntaxError('Unexpected end of template.', $this->tokens[$this->current + $number - 1]->getLine(), $this->source);
-        }
-
-        return $this->tokens[$this->current + $number];
-    }
-
-    /**
-     * Tests the current token.
-     *
-     * @return bool
-     */
-    public function test($primary, $secondary = null)
-    {
-        return $this->tokens[$this->current]->test($primary, $secondary);
-    }
-
-    /**
-     * Checks if end of stream was reached.
-     *
-     * @return bool
-     */
-    public function isEOF()
-    {
-        return Token::EOF_TYPE === $this->tokens[$this->current]->getType();
-    }
-
-    /**
-     * @return Token
-     */
-    public function getCurrent()
-    {
-        return $this->tokens[$this->current];
-    }
-
-    /**
-     * Gets the name associated with this stream (null if not defined).
-     *
-     * @return string|null
-     *
-     * @deprecated since 1.27 (to be removed in 2.0)
-     */
-    public function getFilename()
-    {
-        @trigger_error(sprintf('The %s() method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED);
-
-        return $this->source->getName();
-    }
-
-    /**
-     * Gets the source code associated with this stream.
-     *
-     * @return string
-     *
-     * @internal Don't use this as it might be empty depending on the environment configuration
-     *
-     * @deprecated since 1.27 (to be removed in 2.0)
-     */
-    public function getSource()
-    {
-        @trigger_error(sprintf('The %s() method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED);
-
-        return $this->source->getCode();
-    }
-
-    /**
-     * Gets the source associated with this stream.
-     *
-     * @return Source
-     *
-     * @internal
-     */
-    public function getSourceContext()
-    {
-        return $this->source;
-    }
-}
-
-class_alias('Twig\TokenStream', 'Twig_TokenStream');
diff --git a/vendor/twig/twig/src/TwigFilter.php b/vendor/twig/twig/src/TwigFilter.php
deleted file mode 100644
index 089a6d1b8895e8daf80b7eed12152778c8577473..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TwigFilter.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-use Twig\Node\Node;
-
-/**
- * Represents a template filter.
- *
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TwigFilter
-{
-    protected $name;
-    protected $callable;
-    protected $options;
-    protected $arguments = [];
-
-    public function __construct($name, $callable, array $options = [])
-    {
-        $this->name = $name;
-        $this->callable = $callable;
-        $this->options = array_merge([
-            'needs_environment' => false,
-            'needs_context' => false,
-            'is_variadic' => false,
-            'is_safe' => null,
-            'is_safe_callback' => null,
-            'pre_escape' => null,
-            'preserves_safety' => null,
-            'node_class' => '\Twig\Node\Expression\FilterExpression',
-            'deprecated' => false,
-            'alternative' => null,
-        ], $options);
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function getCallable()
-    {
-        return $this->callable;
-    }
-
-    public function getNodeClass()
-    {
-        return $this->options['node_class'];
-    }
-
-    public function setArguments($arguments)
-    {
-        $this->arguments = $arguments;
-    }
-
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    public function needsEnvironment()
-    {
-        return $this->options['needs_environment'];
-    }
-
-    public function needsContext()
-    {
-        return $this->options['needs_context'];
-    }
-
-    public function getSafe(Node $filterArgs)
-    {
-        if (null !== $this->options['is_safe']) {
-            return $this->options['is_safe'];
-        }
-
-        if (null !== $this->options['is_safe_callback']) {
-            return \call_user_func($this->options['is_safe_callback'], $filterArgs);
-        }
-    }
-
-    public function getPreservesSafety()
-    {
-        return $this->options['preserves_safety'];
-    }
-
-    public function getPreEscape()
-    {
-        return $this->options['pre_escape'];
-    }
-
-    public function isVariadic()
-    {
-        return $this->options['is_variadic'];
-    }
-
-    public function isDeprecated()
-    {
-        return (bool) $this->options['deprecated'];
-    }
-
-    public function getDeprecatedVersion()
-    {
-        return $this->options['deprecated'];
-    }
-
-    public function getAlternative()
-    {
-        return $this->options['alternative'];
-    }
-}
-
-class_alias('Twig\TwigFilter', 'Twig_SimpleFilter');
-
-// Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name.
-class_exists('Twig\Node\Node');
diff --git a/vendor/twig/twig/src/TwigFunction.php b/vendor/twig/twig/src/TwigFunction.php
deleted file mode 100644
index 374f07071e6738b6cf01e3313deab6865f23bdb3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TwigFunction.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-use Twig\Node\Node;
-
-/**
- * Represents a template function.
- *
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TwigFunction
-{
-    protected $name;
-    protected $callable;
-    protected $options;
-    protected $arguments = [];
-
-    public function __construct($name, $callable, array $options = [])
-    {
-        $this->name = $name;
-        $this->callable = $callable;
-        $this->options = array_merge([
-            'needs_environment' => false,
-            'needs_context' => false,
-            'is_variadic' => false,
-            'is_safe' => null,
-            'is_safe_callback' => null,
-            'node_class' => '\Twig\Node\Expression\FunctionExpression',
-            'deprecated' => false,
-            'alternative' => null,
-        ], $options);
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function getCallable()
-    {
-        return $this->callable;
-    }
-
-    public function getNodeClass()
-    {
-        return $this->options['node_class'];
-    }
-
-    public function setArguments($arguments)
-    {
-        $this->arguments = $arguments;
-    }
-
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    public function needsEnvironment()
-    {
-        return $this->options['needs_environment'];
-    }
-
-    public function needsContext()
-    {
-        return $this->options['needs_context'];
-    }
-
-    public function getSafe(Node $functionArgs)
-    {
-        if (null !== $this->options['is_safe']) {
-            return $this->options['is_safe'];
-        }
-
-        if (null !== $this->options['is_safe_callback']) {
-            return \call_user_func($this->options['is_safe_callback'], $functionArgs);
-        }
-
-        return [];
-    }
-
-    public function isVariadic()
-    {
-        return $this->options['is_variadic'];
-    }
-
-    public function isDeprecated()
-    {
-        return (bool) $this->options['deprecated'];
-    }
-
-    public function getDeprecatedVersion()
-    {
-        return $this->options['deprecated'];
-    }
-
-    public function getAlternative()
-    {
-        return $this->options['alternative'];
-    }
-}
-
-class_alias('Twig\TwigFunction', 'Twig_SimpleFunction');
-
-// Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name.
-class_exists('Twig\Node\Node');
diff --git a/vendor/twig/twig/src/TwigTest.php b/vendor/twig/twig/src/TwigTest.php
deleted file mode 100644
index 962872d03ebe87d9823fddf4ff32cab5ea8558a3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/TwigTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig;
-
-/**
- * Represents a template test.
- *
- * @final
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TwigTest
-{
-    protected $name;
-    protected $callable;
-    protected $options;
-
-    private $arguments = [];
-
-    public function __construct($name, $callable, array $options = [])
-    {
-        $this->name = $name;
-        $this->callable = $callable;
-        $this->options = array_merge([
-            'is_variadic' => false,
-            'node_class' => '\Twig\Node\Expression\TestExpression',
-            'deprecated' => false,
-            'alternative' => null,
-            'one_mandatory_argument' => false,
-        ], $options);
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function getCallable()
-    {
-        return $this->callable;
-    }
-
-    public function getNodeClass()
-    {
-        return $this->options['node_class'];
-    }
-
-    public function isVariadic()
-    {
-        return $this->options['is_variadic'];
-    }
-
-    public function isDeprecated()
-    {
-        return (bool) $this->options['deprecated'];
-    }
-
-    public function getDeprecatedVersion()
-    {
-        return $this->options['deprecated'];
-    }
-
-    public function getAlternative()
-    {
-        return $this->options['alternative'];
-    }
-
-    public function setArguments($arguments)
-    {
-        $this->arguments = $arguments;
-    }
-
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    public function hasOneMandatoryArgument(): bool
-    {
-        return (bool) $this->options['one_mandatory_argument'];
-    }
-}
-
-class_alias('Twig\TwigTest', 'Twig_SimpleTest');
diff --git a/vendor/twig/twig/src/Util/DeprecationCollector.php b/vendor/twig/twig/src/Util/DeprecationCollector.php
deleted file mode 100644
index 09917e927c1ab735793dedc53b3b46a2081157ee..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Util/DeprecationCollector.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Util;
-
-use Twig\Environment;
-use Twig\Error\SyntaxError;
-use Twig\Source;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final
- */
-class DeprecationCollector
-{
-    private $twig;
-    private $deprecations;
-
-    public function __construct(Environment $twig)
-    {
-        $this->twig = $twig;
-    }
-
-    /**
-     * Returns deprecations for templates contained in a directory.
-     *
-     * @param string $dir A directory where templates are stored
-     * @param string $ext Limit the loaded templates by extension
-     *
-     * @return array An array of deprecations
-     */
-    public function collectDir($dir, $ext = '.twig')
-    {
-        $iterator = new \RegexIterator(
-            new \RecursiveIteratorIterator(
-                new \RecursiveDirectoryIterator($dir), \RecursiveIteratorIterator::LEAVES_ONLY
-            ), '{'.preg_quote($ext).'$}'
-        );
-
-        return $this->collect(new TemplateDirIterator($iterator));
-    }
-
-    /**
-     * Returns deprecations for passed templates.
-     *
-     * @param \Traversable $iterator An iterator of templates (where keys are template names and values the contents of the template)
-     *
-     * @return array An array of deprecations
-     */
-    public function collect(\Traversable $iterator)
-    {
-        $this->deprecations = [];
-
-        set_error_handler([$this, 'errorHandler']);
-
-        foreach ($iterator as $name => $contents) {
-            try {
-                $this->twig->parse($this->twig->tokenize(new Source($contents, $name)));
-            } catch (SyntaxError $e) {
-                // ignore templates containing syntax errors
-            }
-        }
-
-        restore_error_handler();
-
-        $deprecations = $this->deprecations;
-        $this->deprecations = [];
-
-        return $deprecations;
-    }
-
-    /**
-     * @internal
-     */
-    public function errorHandler($type, $msg)
-    {
-        if (E_USER_DEPRECATED === $type) {
-            $this->deprecations[] = $msg;
-        }
-    }
-}
-
-class_alias('Twig\Util\DeprecationCollector', 'Twig_Util_DeprecationCollector');
diff --git a/vendor/twig/twig/src/Util/TemplateDirIterator.php b/vendor/twig/twig/src/Util/TemplateDirIterator.php
deleted file mode 100644
index 1ab0dac59d59359f2856757b70a6047e25c6704b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/src/Util/TemplateDirIterator.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Twig\Util;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TemplateDirIterator extends \IteratorIterator
-{
-    public function current()
-    {
-        return file_get_contents(parent::current());
-    }
-
-    public function key()
-    {
-        return (string) parent::key();
-    }
-}
-
-class_alias('Twig\Util\TemplateDirIterator', 'Twig_Util_TemplateDirIterator');