diff --git a/.env b/.env new file mode 100644 index 000000000..9620e59fb --- /dev/null +++ b/.env @@ -0,0 +1,77 @@ +# In all environments, the following files are loaded if they exist, +# the latter taking precedence over the former: +# +# * .env contains default values for the environment variables needed by the app +# * .env.local uncommitted file with local overrides +# * .env.$APP_ENV committed environment-specific defaults +# * .env.$APP_ENV.local uncommitted environment-specific overrides +# +# Real environment variables win over .env files. +# +# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. +# https://symfony.com/doc/current/configuration/secrets.html +# +# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). +# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration + +DOMAIN_NAME=https://your-wallabag-url.instance +SERVER_NAME="Your wallabag instance" + +# two factor stuff +TWOFACTOR_AUTH=true +TWOFACTOR_SENDER=no-reply@wallabag.org + +# fosuser stuff +FOSUSER_REGISTRATION=true +FOSUSER_CONFIRMATION=true + +# how long the access token should live in seconds for the API +FOS_OAUTH_SERVER_ACCESS_TOKEN_LIFETIME=3600 +# how long the refresh token should life in seconds for the API +FOS_OAUTH_SERVER_REFRESH_TOKEN_LIFETIME=1209600 + +FROM_EMAIL=no-reply@wallabag.org + +RSS_LIMIT=50 + +LOCALE=en +DATABASE_TABLE_PREFIX=wallabag_ + +# redis stuff +REDIS_SCHEME=tcp +REDIS_HOST=localhost +REDIS_PORT=6379 +REDIS_PATH=null +REDIS_PASSWORD=null + +###> doctrine/doctrine-bundle ### +# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url +# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml +# +DATABASE_URL="sqlite:///%kernel.project_dir%/data/db/wallabag.sqlite" +# DATABASE_URL="mysql://root:@127.0.0.1:3306/wallabag?serverVersion=8&charset=utf8mb4" +# DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=14&charset=utf8" +###< doctrine/doctrine-bundle ### + +###> nelmio/cors-bundle ### +CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$' +###< nelmio/cors-bundle ### + +###> php-amqplib/rabbitmq-bundle ### +RABBITMQ_URL=amqp://guest:guest@localhost:5672 +###< php-amqplib/rabbitmq-bundle ### + +###> sentry/sentry-symfony ### +SENTRY_DSN= +###< sentry/sentry-symfony ### + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET=b6b54475f34a3238dec16508c4903ca0 +#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 +#TRUSTED_HOSTS='^(localhost|example\.com)$' +###< symfony/framework-bundle ### + +###> symfony/mailer ### +MAILER_DSN=smtp://127.0.0.1 +###< symfony/mailer ### diff --git a/.env.test b/.env.test new file mode 100644 index 000000000..99e9f56ce --- /dev/null +++ b/.env.test @@ -0,0 +1,7 @@ +# define your env variables for the test env here +KERNEL_CLASS='App\Kernel' +APP_SECRET='$ecretf0rt3st' +SYMFONY_DEPRECATIONS_HELPER=999999 +PANTHER_APP_ENV=panther +PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots +DATABASE_URL="mysql://root:root@127.0.0.1:3306/wallabag_test?serverVersion=8&charset=utf8mb4" diff --git a/.env.test.mysql b/.env.test.mysql new file mode 100644 index 000000000..99e9f56ce --- /dev/null +++ b/.env.test.mysql @@ -0,0 +1,7 @@ +# define your env variables for the test env here +KERNEL_CLASS='App\Kernel' +APP_SECRET='$ecretf0rt3st' +SYMFONY_DEPRECATIONS_HELPER=999999 +PANTHER_APP_ENV=panther +PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots +DATABASE_URL="mysql://root:root@127.0.0.1:3306/wallabag_test?serverVersion=8&charset=utf8mb4" diff --git a/.env.test.pgsql b/.env.test.pgsql new file mode 100644 index 000000000..f3249afad --- /dev/null +++ b/.env.test.pgsql @@ -0,0 +1,7 @@ +# define your env variables for the test env here +KERNEL_CLASS='App\Kernel' +APP_SECRET='$ecretf0rt3st' +SYMFONY_DEPRECATIONS_HELPER=999999 +PANTHER_APP_ENV=panther +PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots +DATABASE_URL="postgresql://wallabag:wallabagrocks@localhost:5432/wallabag_test?serverVersion=14&charset=utf8" diff --git a/.env.test.sqlite b/.env.test.sqlite new file mode 100644 index 000000000..c845c6e8e --- /dev/null +++ b/.env.test.sqlite @@ -0,0 +1,7 @@ +# define your env variables for the test env here +KERNEL_CLASS='App\Kernel' +APP_SECRET='$ecretf0rt3st' +SYMFONY_DEPRECATIONS_HELPER=999999 +PANTHER_APP_ENV=panther +PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots +DATABASE_URL="sqlite:///%test_database_path%" diff --git a/.gitattributes b/.gitattributes index 3b534030c..bd329a0ed 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,5 +3,6 @@ /.github export-ignore /.gitignore export-ignore /phpstan.neon export-ignore +/phpstan-baseline.neon export-ignore /phpunit.xml.dist export-ignore /tests export-ignore diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 03ee1aee2..b51f637f4 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -48,7 +48,7 @@ jobs: run: "php bin/phpstan analyse --no-progress --error-format=checkstyle | cs2pr" - name: "Run TwigCS" - run: "php bin/twigcs --severity=error --display=blocking --reporter checkstyle app/ src/ | cs2pr" + run: "php bin/twigcs --severity=error --display=blocking --reporter checkstyle templates/ | cs2pr" - name: "Run ergebnis/composer-normalize" run: "composer normalize --dry-run --no-check-lock" diff --git a/.github/workflows/upload-release-package.yml b/.github/workflows/upload-release-package.yml index f76516c37..1131102d9 100644 --- a/.github/workflows/upload-release-package.yml +++ b/.github/workflows/upload-release-package.yml @@ -23,7 +23,7 @@ jobs: with: coverage: "none" php-version: "${{ matrix.php }}" - tools: pecl, composer:2.2 + tools: pecl extensions: pdo, pdo_mysql, pdo_sqlite, pdo_pgsql, curl, imagick, pgsql, gd, tidy ini-values: "date.timezone=Europe/Paris" env: diff --git a/.gitignore b/.gitignore index 2504e972d..365d9ecef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,34 +1,27 @@ -# Cache, logs & sessions +# Cache, log & sessions /var/* !/var/cache /var/cache/* !var/cache/.gitkeep -!/var/logs -/var/logs/* -!var/logs/.gitkeep +!/var/log +/var/log/* +!var/log/.gitkeep !/var/sessions /var/sessions/* !var/sessions/.gitkeep /bin/* !/bin/console -.php-cs-fixer.php -.php-cs-fixer.cache -.phpunit.result.cache -phpunit.xml # Parameters /app/config/parameters.yml -# Managed by Composer -/vendor/ - # Assets and user uploads -web/uploads/ -/web/bundles/* -!/web/bundles/.gitkeep -/web/assets/images/* -!web/assets/images/.gitkeep -/web/wallassets/*.dev.js +public/uploads/ +/public/bundles/* +!/public/bundles/.gitkeep +/public/assets/images/* +!public/assets/images/.gitkeep +/public/wallassets/*.dev.js # Build /app/build @@ -47,9 +40,6 @@ data/db/wallabag*.sqlite # assets stuff node_modules/ bin -app/Resources/build/ -!/src/Wallabag/CoreBundle/Resources/public -/src/Wallabag/CoreBundle/Resources/public/* # Test-generated files admin-export.json @@ -57,4 +47,24 @@ specialexport.json /data/site-credentials-secret-key.txt # Custom CSS file -web/custom.css +public/custom.css + +###> friendsofphp/php-cs-fixer ### +/.php-cs-fixer.php +/.php-cs-fixer.cache +###< friendsofphp/php-cs-fixer ### + +###> symfony/phpunit-bridge ### +.phpunit.result.cache +/phpunit.xml +###< symfony/phpunit-bridge ### + +###> symfony/framework-bundle ### +/.env.local +/.env.local.php +/.env.*.local +/config/secrets/prod/prod.decrypt.private.php +/public/bundles/ +/var/ +/vendor/ +###< symfony/framework-bundle ### diff --git a/GNUmakefile b/GNUmakefile index 1fcf581aa..d4c8dc7a4 100755 --- a/GNUmakefile +++ b/GNUmakefile @@ -36,7 +36,7 @@ build: ## Run webpack prepare: clean ## Prepare database for testsuite ifdef DB - cp app/config/tests/parameters_test.$(DB).yml app/config/parameters_test.yml + cp .env.test.$(DB) .env.test endif -php bin/console doctrine:database:drop --force --env=test php bin/console doctrine:database:create --env=test diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md index 30dc85411..7c5739648 100644 --- a/RELEASE_PROCESS.md +++ b/RELEASE_PROCESS.md @@ -9,7 +9,7 @@ During this documentation, we assume the release is `$LAST_WALLABAG_RELEASE` (li #### Prepare the release - Update these files with new information - - `app/config/wallabag.yml` (`wallabag_core.version`) + - `config/wallabag.yaml` (`wallabag.version`) - `CHANGELOG.md` - Create a PR named "Prepare $LAST_WALLABAG_RELEASE release". - Wait for test to be ok, merge it. @@ -19,7 +19,7 @@ During this documentation, we assume the release is `$LAST_WALLABAG_RELEASE` (li - [Create the new release on GitHub](https://github.com/wallabag/wallabag/releases/new) by targetting the `master` branch or any appropriate branch (for instance backports). - Update [website](https://github.com/wallabag/website) to change MD5 sum and create the release blog post (based on the changelog). - Update Dockerfile https://github.com/wallabag/docker (and create a new tag) -- Put the next patch version suffixed with `-dev` in `app/config/wallabag.yml` (`wallabag_core.version`) +- Put the next patch version suffixed with `-dev` in `config/wallabag.yaml` (`wallabag.version`) - Drink a :beer:! ### Target PHP version diff --git a/app/config/config_dev.yml b/app/config/config_dev.yml deleted file mode 100644 index 2e41c7606..000000000 --- a/app/config/config_dev.yml +++ /dev/null @@ -1,48 +0,0 @@ -imports: - - { resource: config.yml } - -framework: - router: - resource: "%kernel.project_dir%/app/config/routing_dev.yml" - strict_requirements: true - profiler: - only_exceptions: false - - mailer: - # see https://mailcatcher.me/ - dsn: smtp://127.0.0.1:1025 - -web_profiler: - toolbar: true - intercept_redirects: false - -monolog: - handlers: - main: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug - channels: ['!event'] - console: - type: console - bubble: false - verbosity_levels: - VERBOSITY_VERBOSE: INFO - VERBOSITY_VERY_VERBOSE: DEBUG - channels: ['!event', '!doctrine'] - console_very_verbose: - type: console - bubble: false - verbosity_levels: - VERBOSITY_VERBOSE: NOTICE - VERBOSITY_VERY_VERBOSE: NOTICE - VERBOSITY_DEBUG: DEBUG - channels: [doctrine] - -# If you want to use cache for queries used in WallabagExtension -# Uncomment the following lines -#doctrine: -# orm: -# metadata_cache_driver: apcu -# result_cache_driver: apcu -# query_cache_driver: apcu diff --git a/app/config/config_prod.yml b/app/config/config_prod.yml deleted file mode 100644 index 59d2e9e20..000000000 --- a/app/config/config_prod.yml +++ /dev/null @@ -1,28 +0,0 @@ -imports: - - { resource: config.yml } - -framework: - assets: - # json_manifest_path: '%kernel.project_dir%/web/bundles/wallabagcore/manifest.json' - -#doctrine: -# orm: -# metadata_cache_driver: apc -# result_cache_driver: apc -# query_cache_driver: apc - -monolog: - handlers: - main: - type: fingers_crossed - action_level: error - handler: nested - nested: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug - console: - type: console - -sentry: - dsn: "%sentry_dsn%" diff --git a/app/config/config_test.yml b/app/config/config_test.yml deleted file mode 100644 index d738a49d6..000000000 --- a/app/config/config_test.yml +++ /dev/null @@ -1,38 +0,0 @@ -imports: - - { resource: config_dev.yml } - - { resource: parameters_test.yml } - - { resource: services_test.yml } - -framework: - test: ~ - session: - storage_id: session.storage.mock_file - profiler: - collect: false - translator: - enabled: false - mailer: - dsn: 'null://null' - -web_profiler: - toolbar: false - intercept_redirects: false - -doctrine: - dbal: - driver: "%test_database_driver%" - host: "%test_database_host%" - port: "%test_database_port%" - dbname: "%test_database_name%" - user: "%test_database_user%" - password: "%test_database_password%" - charset: "%test_database_charset%" - path: "%env(TEST_DATABASE_PATH)%" - - orm: - metadata_cache_driver: - type: service - id: filesystem_cache - query_cache_driver: - type: service - id: filesystem_cache diff --git a/app/config/parameters_addons.yml b/app/config/parameters_addons.yml deleted file mode 100644 index 4948f3851..000000000 --- a/app/config/parameters_addons.yml +++ /dev/null @@ -1,9 +0,0 @@ -parameters: - addons_url: - firefox: https://addons.mozilla.org/firefox/addon/wallabagger/ - chrome: https://chrome.google.com/webstore/detail/wallabagger/gbmgphmejlcoihgedabhgjdkcahacjlj - opera: https://addons.opera.com/en/extensions/details/wallabagger/?display=en - f_droid: https://f-droid.org/app/fr.gaulupeau.apps.InThePoche - google_play: https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche - ios: https://itunes.apple.com/app/wallabag-2/id1170800946?mt=8 - windows: https://www.microsoft.com/store/apps/wallabag/9nblggh11646 diff --git a/app/config/routing_dev.yml b/app/config/routing_dev.yml deleted file mode 100644 index a57028de1..000000000 --- a/app/config/routing_dev.yml +++ /dev/null @@ -1,14 +0,0 @@ -_wdt: - resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" - prefix: /_wdt - -_profiler: - resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" - prefix: /_profiler - -_errors: - resource: '@TwigBundle/Resources/config/routing/errors.xml' - prefix: /_error - -_main: - resource: routing.yml diff --git a/app/Resources/static/themes/_global/global.scss b/assets/themes/_global/global.scss similarity index 100% rename from app/Resources/static/themes/_global/global.scss rename to assets/themes/_global/global.scss diff --git a/app/Resources/static/themes/_global/img/bg-select.png b/assets/themes/_global/img/bg-select.png similarity index 100% rename from app/Resources/static/themes/_global/img/bg-select.png rename to assets/themes/_global/img/bg-select.png diff --git a/app/Resources/static/themes/_global/img/icons/Diaspora-asterisk.svg b/assets/themes/_global/img/icons/Diaspora-asterisk.svg similarity index 100% rename from app/Resources/static/themes/_global/img/icons/Diaspora-asterisk.svg rename to assets/themes/_global/img/icons/Diaspora-asterisk.svg diff --git a/app/Resources/static/themes/_global/img/icons/diaspora-icon--black.png b/assets/themes/_global/img/icons/diaspora-icon--black.png similarity index 100% rename from app/Resources/static/themes/_global/img/icons/diaspora-icon--black.png rename to assets/themes/_global/img/icons/diaspora-icon--black.png diff --git a/app/Resources/static/themes/_global/img/icons/diaspora-icon--white.png b/assets/themes/_global/img/icons/diaspora-icon--white.png similarity index 100% rename from app/Resources/static/themes/_global/img/icons/diaspora-icon--white.png rename to assets/themes/_global/img/icons/diaspora-icon--white.png diff --git a/app/Resources/static/themes/_global/img/icons/scuttle.png b/assets/themes/_global/img/icons/scuttle.png similarity index 100% rename from app/Resources/static/themes/_global/img/icons/scuttle.png rename to assets/themes/_global/img/icons/scuttle.png diff --git a/app/Resources/static/themes/_global/img/icons/shaarli.png b/assets/themes/_global/img/icons/shaarli.png similarity index 100% rename from app/Resources/static/themes/_global/img/icons/shaarli.png rename to assets/themes/_global/img/icons/shaarli.png diff --git a/app/Resources/static/themes/_global/img/icons/unmark-icon--black.png b/assets/themes/_global/img/icons/unmark-icon--black.png similarity index 100% rename from app/Resources/static/themes/_global/img/icons/unmark-icon--black.png rename to assets/themes/_global/img/icons/unmark-icon--black.png diff --git a/app/Resources/static/themes/_global/img/list.png b/assets/themes/_global/img/list.png similarity index 100% rename from app/Resources/static/themes/_global/img/list.png rename to assets/themes/_global/img/list.png diff --git a/app/Resources/static/themes/_global/img/table.png b/assets/themes/_global/img/table.png similarity index 100% rename from app/Resources/static/themes/_global/img/table.png rename to assets/themes/_global/img/table.png diff --git a/app/Resources/static/themes/_global/index.js b/assets/themes/_global/index.js similarity index 100% rename from app/Resources/static/themes/_global/index.js rename to assets/themes/_global/index.js diff --git a/app/Resources/static/themes/_global/js/bookmarklet.js b/assets/themes/_global/js/bookmarklet.js similarity index 100% rename from app/Resources/static/themes/_global/js/bookmarklet.js rename to assets/themes/_global/js/bookmarklet.js diff --git a/app/Resources/static/themes/_global/js/highlight.js b/assets/themes/_global/js/highlight.js similarity index 100% rename from app/Resources/static/themes/_global/js/highlight.js rename to assets/themes/_global/js/highlight.js diff --git a/app/Resources/static/themes/_global/js/shortcuts/entry.js b/assets/themes/_global/js/shortcuts/entry.js similarity index 100% rename from app/Resources/static/themes/_global/js/shortcuts/entry.js rename to assets/themes/_global/js/shortcuts/entry.js diff --git a/app/Resources/static/themes/_global/js/shortcuts/main.js b/assets/themes/_global/js/shortcuts/main.js similarity index 100% rename from app/Resources/static/themes/_global/js/shortcuts/main.js rename to assets/themes/_global/js/shortcuts/main.js diff --git a/app/Resources/static/themes/_global/js/tools.js b/assets/themes/_global/js/tools.js similarity index 100% rename from app/Resources/static/themes/_global/js/tools.js rename to assets/themes/_global/js/tools.js diff --git a/app/Resources/static/themes/_global/share.js b/assets/themes/_global/share.js similarity index 100% rename from app/Resources/static/themes/_global/share.js rename to assets/themes/_global/share.js diff --git a/app/Resources/static/themes/_global/share.scss b/assets/themes/_global/share.scss similarity index 100% rename from app/Resources/static/themes/_global/share.scss rename to assets/themes/_global/share.scss diff --git a/app/Resources/static/themes/material/css/article.scss b/assets/themes/material/css/article.scss similarity index 100% rename from app/Resources/static/themes/material/css/article.scss rename to assets/themes/material/css/article.scss diff --git a/app/Resources/static/themes/material/css/cards.scss b/assets/themes/material/css/cards.scss similarity index 100% rename from app/Resources/static/themes/material/css/cards.scss rename to assets/themes/material/css/cards.scss diff --git a/app/Resources/static/themes/material/css/dark_theme.scss b/assets/themes/material/css/dark_theme.scss similarity index 100% rename from app/Resources/static/themes/material/css/dark_theme.scss rename to assets/themes/material/css/dark_theme.scss diff --git a/app/Resources/static/themes/material/css/entries.scss b/assets/themes/material/css/entries.scss similarity index 100% rename from app/Resources/static/themes/material/css/entries.scss rename to assets/themes/material/css/entries.scss diff --git a/app/Resources/static/themes/material/css/filters.scss b/assets/themes/material/css/filters.scss similarity index 100% rename from app/Resources/static/themes/material/css/filters.scss rename to assets/themes/material/css/filters.scss diff --git a/app/Resources/static/themes/material/css/fonts.scss b/assets/themes/material/css/fonts.scss similarity index 100% rename from app/Resources/static/themes/material/css/fonts.scss rename to assets/themes/material/css/fonts.scss diff --git a/app/Resources/static/themes/material/css/icons.scss b/assets/themes/material/css/icons.scss similarity index 100% rename from app/Resources/static/themes/material/css/icons.scss rename to assets/themes/material/css/icons.scss diff --git a/app/Resources/static/themes/material/css/index.scss b/assets/themes/material/css/index.scss similarity index 100% rename from app/Resources/static/themes/material/css/index.scss rename to assets/themes/material/css/index.scss diff --git a/app/Resources/static/themes/material/css/layout.scss b/assets/themes/material/css/layout.scss similarity index 100% rename from app/Resources/static/themes/material/css/layout.scss rename to assets/themes/material/css/layout.scss diff --git a/app/Resources/static/themes/material/css/media_queries.scss b/assets/themes/material/css/media_queries.scss similarity index 100% rename from app/Resources/static/themes/material/css/media_queries.scss rename to assets/themes/material/css/media_queries.scss diff --git a/app/Resources/static/themes/material/css/nav.scss b/assets/themes/material/css/nav.scss similarity index 100% rename from app/Resources/static/themes/material/css/nav.scss rename to assets/themes/material/css/nav.scss diff --git a/app/Resources/static/themes/material/css/print.scss b/assets/themes/material/css/print.scss similarity index 100% rename from app/Resources/static/themes/material/css/print.scss rename to assets/themes/material/css/print.scss diff --git a/app/Resources/static/themes/material/css/sidenav.scss b/assets/themes/material/css/sidenav.scss similarity index 100% rename from app/Resources/static/themes/material/css/sidenav.scss rename to assets/themes/material/css/sidenav.scss diff --git a/app/Resources/static/themes/material/css/variables.scss b/assets/themes/material/css/variables.scss similarity index 100% rename from app/Resources/static/themes/material/css/variables.scss rename to assets/themes/material/css/variables.scss diff --git a/app/Resources/static/themes/material/css/various.scss b/assets/themes/material/css/various.scss similarity index 100% rename from app/Resources/static/themes/material/css/various.scss rename to assets/themes/material/css/various.scss diff --git a/app/Resources/static/themes/material/index.js b/assets/themes/material/index.js similarity index 100% rename from app/Resources/static/themes/material/index.js rename to assets/themes/material/index.js diff --git a/app/Resources/static/themes/material/js/shortcuts/entry.js b/assets/themes/material/js/shortcuts/entry.js similarity index 100% rename from app/Resources/static/themes/material/js/shortcuts/entry.js rename to assets/themes/material/js/shortcuts/entry.js diff --git a/app/Resources/static/themes/material/js/shortcuts/main.js b/assets/themes/material/js/shortcuts/main.js similarity index 100% rename from app/Resources/static/themes/material/js/shortcuts/main.js rename to assets/themes/material/js/shortcuts/main.js diff --git a/app/Resources/static/themes/material/js/tools.js b/assets/themes/material/js/tools.js similarity index 100% rename from app/Resources/static/themes/material/js/tools.js rename to assets/themes/material/js/tools.js diff --git a/bin/console b/bin/console index 8cef40b2c..5de0e1c5b 100755 --- a/bin/console +++ b/bin/console @@ -1,27 +1,42 @@ #!/usr/bin/env php getParameterOption(['--env', '-e'], getenv('SYMFONY_ENV') ?: 'dev', true); -$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption('--no-debug', true) && $env !== 'prod'; - -if ($debug) { - Debug::enable(); +if (!class_exists(Application::class)) { + throw new LogicException('You need to add "symfony/framework-bundle" as a Composer dependency.'); } -$kernel = new AppKernel($env, $debug); +$input = new ArgvInput(); +if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) { + putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env); +} + +if ($input->hasParameterOption('--no-debug', true)) { + putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0'); +} + +require dirname(__DIR__).'/config/bootstrap.php'; + +if ($_SERVER['APP_DEBUG']) { + umask(0000); + + if (class_exists(Debug::class)) { + Debug::enable(); + } +} + +$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); $application = new Application($kernel); $application->run($input); diff --git a/composer.json b/composer.json index 5f9ad3607..1052609bb 100644 --- a/composer.json +++ b/composer.json @@ -78,7 +78,6 @@ "guzzlehttp/guzzle": "^5.3.1", "guzzlehttp/psr7": "^2.5", "html2text/html2text": "^4.1", - "incenteev/composer-parameter-handler": "^2.1", "j0k3r/graby": "^2.0", "javibravo/simpleue": "^2.0", "jms/serializer": "^3.17", @@ -118,11 +117,19 @@ "sensio/framework-extra-bundle": "^6.2", "sentry/sentry-symfony": "4.9.2", "stof/doctrine-extensions-bundle": "^1.2", - "symfony/dom-crawler": "^4.0", - "symfony/mailer": "^4.0", - "symfony/monolog-bundle": "^3.1", + "symfony/asset": "4.4.*", + "symfony/config": "4.4.*", + "symfony/dom-crawler": "4.4.*", + "symfony/flex": "^1.19", + "symfony/form": "4.4.*", + "symfony/mailer": "4.4.*", + "symfony/monolog-bundle": "^3.8", "symfony/proxy-manager-bridge": "^4.4", - "symfony/symfony": "^4.0", + "symfony/security-bundle": "4.4.*", + "symfony/templating": "4.4.*", + "symfony/translation": "4.4.*", + "symfony/twig-bundle": "4.4.*", + "symfony/validator": "4.4.*", "tecnickcom/tcpdf": "^6.3.0", "twig/extra-bundle": "^3.4", "twig/string-extra": "^3.4", @@ -134,7 +141,7 @@ }, "require-dev": { "dama/doctrine-test-bundle": "^7.1", - "doctrine/doctrine-fixtures-bundle": "~3.0", + "doctrine/doctrine-fixtures-bundle": "^3.4", "ergebnis/composer-normalize": "^2.28", "friendsofphp/php-cs-fixer": "~3.4", "friendsoftwig/twigcs": "^6.0", @@ -145,8 +152,16 @@ "phpstan/phpstan-doctrine": "^1.3", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-symfony": "^1.2", + "symfony/browser-kit": "4.4.*", + "symfony/css-selector": "4.4.*", + "symfony/dotenv": "4.4.*", "symfony/maker-bundle": "^1.18", - "symfony/phpunit-bridge": "~6.0" + "symfony/phpunit-bridge": "~6.0", + "symfony/stopwatch": "4.4.*", + "symfony/web-profiler-bundle": "4.4.*" + }, + "conflict": { + "symfony/symfony": "*" }, "suggest": { "ext-imagick": "To keep GIF animation when downloading image is enabled" @@ -155,24 +170,18 @@ "prefer-stable": true, "autoload": { "psr-4": { - "Wallabag\\": "src/Wallabag/" - }, - "classmap": [ - "app/AppKernel.php", - "app/AppCache.php" - ] + "App\\": "src/" + } }, "autoload-dev": { "psr-4": { - "Tests\\": "tests/" - }, - "files": [ - "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php" - ] + "App\\Tests\\": "tests/" + } }, "config": { "allow-plugins": { "phpstan/extension-installer": true, + "symfony/flex": true, "php-http/discovery": true, "ergebnis/composer-normalize": true }, @@ -183,22 +192,22 @@ "sort-packages": true }, "extra": { - "incenteev-parameters": { - "file": "app/config/parameters.yml" - }, - "public-dir": "web" + "symfony": { + "allow-contrib": true, + "docker": false, + "require": "4.4.*" + } }, "scripts": { "post-install-cmd": [ - "@post-cmd" + "@auto-scripts" ], "post-update-cmd": [ - "@post-cmd" + "@auto-scripts" ], - "post-cmd": [ - "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", - "bin/console cache:clear --no-warmup", - "bin/console assets:install web --symlink --relative" - ] + "auto-scripts": { + "cache:clear": "symfony-cmd", + "assets:install %PUBLIC_DIR%": "symfony-cmd" + } } } diff --git a/composer.lock b/composer.lock index cc78109df..6669cf10e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1f7c20bf034c1595dacf792986d5d42a", + "content-hash": "694739d5d5425ad821c0337b2d015ac0", "packages": [ { "name": "babdev/pagerfanta-bundle", @@ -2689,16 +2689,16 @@ }, { "name": "gedmo/doctrine-extensions", - "version": "v3.11.1", + "version": "v3.12.0", "source": { "type": "git", "url": "https://github.com/doctrine-extensions/DoctrineExtensions.git", - "reference": "ae4bdf0d567e06b6bb1902a560ee78961b230953" + "reference": "eef4b4978118fdb4c0a03509325e807ad96e3bec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/ae4bdf0d567e06b6bb1902a560ee78961b230953", - "reference": "ae4bdf0d567e06b6bb1902a560ee78961b230953", + "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/eef4b4978118fdb4c0a03509325e807ad96e3bec", + "reference": "eef4b4978118fdb4c0a03509325e807ad96e3bec", "shasum": "" }, "require": { @@ -2714,7 +2714,6 @@ "symfony/deprecation-contracts": "^2.1 || ^3.0" }, "conflict": { - "doctrine/cache": "<1.11", "doctrine/dbal": "<2.13.1 || ^3.0 <3.2", "doctrine/mongodb-odm": "<2.3", "doctrine/orm": "<2.10.2", @@ -2726,25 +2725,25 @@ "doctrine/doctrine-bundle": "^2.3", "doctrine/mongodb-odm": "^2.3", "doctrine/orm": "^2.10.2", - "friendsofphp/php-cs-fixer": "^3.4.0,<3.10", + "friendsofphp/php-cs-fixer": "^3.4.0 <3.10", "nesbot/carbon": "^2.55", - "phpstan/phpstan": "^1.9", + "phpstan/phpstan": "^1.10.2", "phpstan/phpstan-doctrine": "^1.0", "phpstan/phpstan-phpunit": "^1.0", "phpunit/phpunit": "^8.5 || ^9.5", + "rector/rector": "^0.15.20", "symfony/console": "^4.4 || ^5.3 || ^6.0", "symfony/phpunit-bridge": "^6.0", "symfony/yaml": "^4.4 || ^5.3 || ^6.0" }, "suggest": { "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM", - "doctrine/orm": "to use the extensions with the ORM", - "symfony/cache": "to cache parsed annotations" + "doctrine/orm": "to use the extensions with the ORM" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.12-dev" + "dev-main": "3.13-dev" } }, "autoload": { @@ -2792,10 +2791,28 @@ "support": { "email": "gediminas.morkevicius@gmail.com", "issues": "https://github.com/doctrine-extensions/DoctrineExtensions/issues", - "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.11.1", + "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.12.0", "wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc" }, - "time": "2023-02-20T19:24:07+00:00" + "funding": [ + { + "url": "https://github.com/l3pp4rd", + "type": "github" + }, + { + "url": "https://github.com/mbabker", + "type": "github" + }, + { + "url": "https://github.com/phansys", + "type": "github" + }, + { + "url": "https://github.com/stof", + "type": "github" + } + ], + "time": "2023-07-08T20:38:42+00:00" }, { "name": "grandt/binstring", @@ -4435,61 +4452,6 @@ }, "time": "2021-07-21T13:50:14+00:00" }, - { - "name": "incenteev/composer-parameter-handler", - "version": "v2.1.5", - "source": { - "type": "git", - "url": "https://github.com/Incenteev/ParameterHandler.git", - "reference": "e1dd118763503f7fd766f907013e1d76d525fcc4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/e1dd118763503f7fd766f907013e1d76d525fcc4", - "reference": "e1dd118763503f7fd766f907013e1d76d525fcc4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/yaml": "^2.3 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "composer/composer": "^1.0@dev", - "symfony/filesystem": "^2.3 || ^3 || ^4 || ^5 || ^6.0", - "symfony/phpunit-bridge": "^3.4.47 || ^4.4.41 || ^5.4.8 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Incenteev\\ParameterHandler\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - } - ], - "description": "Composer script handling your ignored parameter file", - "homepage": "https://github.com/Incenteev/ParameterHandler", - "keywords": [ - "parameters management" - ], - "support": { - "issues": "https://github.com/Incenteev/ParameterHandler/issues", - "source": "https://github.com/Incenteev/ParameterHandler/tree/v2.1.5" - }, - "time": "2022-05-25T10:57:22+00:00" - }, { "name": "j0k3r/graby", "version": "2.4.4", @@ -7492,16 +7454,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.20", + "version": "3.0.21", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "543a1da81111a0bfd6ae7bbc2865c5e89ed3fc67" + "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/543a1da81111a0bfd6ae7bbc2865c5e89ed3fc67", - "reference": "543a1da81111a0bfd6ae7bbc2865c5e89ed3fc67", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4580645d3fc05c189024eb3b834c6c1e4f0f30a1", + "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1", "shasum": "" }, "require": { @@ -7582,7 +7544,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.20" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.21" }, "funding": [ { @@ -7598,7 +7560,7 @@ "type": "tidelift" } ], - "time": "2023-06-13T06:30:34+00:00" + "time": "2023-07-09T15:24:48+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -8165,58 +8127,6 @@ }, "time": "2023-04-04T09:50:52+00:00" }, - { - "name": "psr/link", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/link.git", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Link\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for HTTP links", - "keywords": [ - "http", - "http-link", - "link", - "psr", - "psr-13", - "rest" - ], - "support": { - "source": "https://github.com/php-fig/link/tree/master" - }, - "time": "2016-10-28T16:06:13+00:00" - }, { "name": "psr/log", "version": "1.1.4", @@ -8883,16 +8793,16 @@ }, { "name": "sentry/sentry", - "version": "3.19.1", + "version": "3.20.1", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "dd1057fb37d4484ebb2d1bc9b05fa5969c078436" + "reference": "644ad9768c18139a80ac510090fad000d9ffd8a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/dd1057fb37d4484ebb2d1bc9b05fa5969c078436", - "reference": "dd1057fb37d4484ebb2d1bc9b05fa5969c078436", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/644ad9768c18139a80ac510090fad000d9ffd8a4", + "reference": "644ad9768c18139a80ac510090fad000d9ffd8a4", "shasum": "" }, "require": { @@ -8972,7 +8882,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/3.19.1" + "source": "https://github.com/getsentry/sentry-php/tree/3.20.1" }, "funding": [ { @@ -8984,7 +8894,7 @@ "type": "custom" } ], - "time": "2023-05-25T06:19:09+00:00" + "time": "2023-06-26T11:01:40+00:00" }, { "name": "sentry/sentry-symfony", @@ -9379,54 +9289,128 @@ "time": "2023-05-22T18:25:15+00:00" }, { - "name": "symfony/contracts", - "version": "v1.1.13", + "name": "symfony/asset", + "version": "v4.4.46", "source": { "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "9e27f5c175ecbd6fff554d839ff4a432da797168" + "url": "https://github.com/symfony/asset.git", + "reference": "6ef0f9f352f90c469e8b363ebc038d81a7198873" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/9e27f5c175ecbd6fff554d839ff4a432da797168", - "reference": "9e27f5c175ecbd6fff554d839ff4a432da797168", + "url": "https://api.github.com/repos/symfony/asset/zipball/6ef0f9f352f90c469e8b363ebc038d81a7198873", + "reference": "6ef0f9f352f90c469e8b363ebc038d81a7198873", "shasum": "" }, "require": { "php": ">=7.1.3", - "psr/cache": "^1.0|^2.0|^3.0", - "psr/container": "^1.0" - }, - "replace": { - "symfony/cache-contracts": "self.version", - "symfony/event-dispatcher-contracts": "self.version", - "symfony/http-client-contracts": "self.version", - "symfony/service-contracts": "self.version", - "symfony/translation-contracts": "self.version" + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/polyfill-intl-idn": "^1.10" + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/http-kernel": "^3.4|^4.0|^5.0" }, "suggest": { - "psr/event-dispatcher": "When using the EventDispatcher contracts", - "symfony/cache-implementation": "", - "symfony/event-dispatcher-implementation": "", - "symfony/http-client-implementation": "", - "symfony/service-implementation": "", - "symfony/translation-implementation": "" + "symfony/http-foundation": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.1-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\": "" + "Symfony\\Component\\Asset\\": "" }, "exclude-from-classmap": [ - "**/Tests/" + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/asset/tree/v4.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" + } + ], + "time": "2022-08-30T22:05:24+00:00" + }, + { + "name": "symfony/cache", + "version": "v4.4.48", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "3b98ed664887ad197b8ede3da2432787212eb915" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/3b98ed664887ad197b8ede3da2432787212eb915", + "reference": "3b98ed664887ad197b8ede3da2432787212eb915", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/cache": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.2|^5.0" + }, + "conflict": { + "doctrine/dbal": "<2.7", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4|>=5.0", + "symfony/var-dumper": "<4.4" + }, + "provide": { + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0|2.0", + "symfony/cache-implementation": "1.0|2.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.7|^3.0", + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0|^2.0", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.1|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/var-dumper": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -9443,18 +9427,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A set of abstractions extracted out of the Symfony components", + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "caching", + "psr6" ], "support": { - "source": "https://github.com/symfony/contracts/tree/v1.1.13" + "source": "https://github.com/symfony/cache/tree/v4.4.48" }, "funding": [ { @@ -9470,7 +9450,409 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2022-10-17T20:21:54+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" + }, + "suggest": { + "symfony/cache-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Cache\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/config", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658", + "reference": "ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" + }, + "conflict": { + "symfony/finder": "<3.4" + }, + "require-dev": { + "symfony/event-dispatcher": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/messenger": "^4.1|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/config/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-20T09:59:04+00:00" + }, + { + "name": "symfony/console", + "version": "v4.4.49", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", + "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/lock": "<4.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/event-dispatcher": "^4.3", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^4.3|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/console/tree/v4.4.49" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-05T17:10:16+00:00" + }, + { + "name": "symfony/debug", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "1a692492190773c5310bc7877cb590c04c2f05be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", + "reference": "1a692492190773c5310bc7877cb590c04c2f05be", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2|^3" + }, + "conflict": { + "symfony/http-kernel": "<3.4" + }, + "require-dev": { + "symfony/http-kernel": "^3.4|^4.0|^5.0" + }, + "type": "library", + "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": "Provides tools to ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug/tree/v4.4.44" + }, + "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" + } + ], + "abandoned": "symfony/error-handler", + "time": "2022-07-28T16:29:46+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v4.4.49", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "9065fe97dbd38a897e95ea254eb5ddfe1310f734" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/9065fe97dbd38a897e95ea254eb5ddfe1310f734", + "reference": "9065fe97dbd38a897e95ea254eb5ddfe1310f734", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/container": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/config": "<4.3|>=5.0", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<4.4.26" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/config": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/yaml": "^4.4.26|^5.0" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows you to standardize and centralize the way objects are constructed in your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dependency-injection/tree/v4.4.49" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-16T16:18:09+00:00" }, { "name": "symfony/deprecation-contracts", @@ -9539,6 +9921,1646 @@ ], "time": "2022-01-02T09:53:40+00:00" }, + { + "name": "symfony/doctrine-bridge", + "version": "v4.4.48", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-bridge.git", + "reference": "8dbbec53714eb512321380d582b45ff7e074a5d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/8dbbec53714eb512321380d582b45ff7e074a5d6", + "reference": "8dbbec53714eb512321380d582b45ff7e074a5d6", + "shasum": "" + }, + "require": { + "doctrine/event-manager": "~1.0", + "doctrine/persistence": "^1.3|^2|^3", + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "doctrine/dbal": "<2.7", + "doctrine/lexer": "<1.1", + "doctrine/orm": "<2.6.3", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/dependency-injection": "<3.4", + "symfony/form": "<4.4", + "symfony/http-kernel": "<4.3.7", + "symfony/messenger": "<4.3", + "symfony/proxy-manager-bridge": "<4.4.19", + "symfony/security-core": "<4.4", + "symfony/validator": "<4.4.2|<5.0.2,>=5.0" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.8", + "doctrine/annotations": "^1.10.4", + "doctrine/collections": "~1.0", + "doctrine/data-fixtures": "^1.1", + "doctrine/dbal": "^2.7|^3.0", + "doctrine/orm": "^2.6.3", + "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/form": "^4.4.41|^5.0.11", + "symfony/http-kernel": "^4.3.7", + "symfony/messenger": "^4.4|^5.0", + "symfony/property-access": "^3.4|^4.0|^5.0", + "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/proxy-manager-bridge": "^3.4|^4.0|^5.0", + "symfony/security-core": "^4.4|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/translation": "^3.4|^4.0|^5.0", + "symfony/validator": "^4.4.2|^5.0.2", + "symfony/var-dumper": "^3.4|^4.0|^5.0" + }, + "suggest": { + "doctrine/data-fixtures": "", + "doctrine/dbal": "", + "doctrine/orm": "", + "symfony/form": "", + "symfony/property-info": "", + "symfony/validator": "" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Doctrine\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Doctrine with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/doctrine-bridge/tree/v4.4.48" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-10-14T11:24:01+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v4.4.45", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "4b8daf6c56801e6d664224261cb100b73edc78a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4b8daf6c56801e6d664224261cb100b73edc78a5", + "reference": "4b8daf6c56801e6d664224261cb100b73edc78a5", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v4.4.45" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-08-03T12:57:57+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "be731658121ef2d8be88f3a1ec938148a9237291" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/be731658121ef2d8be88f3a1ec938148a9237291", + "reference": "be731658121ef2d8be88f3a1ec938148a9237291", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2|^3", + "symfony/debug": "^4.4.5", + "symfony/var-dumper": "^4.4|^5.0" + }, + "require-dev": { + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-28T16:29:46+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "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": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-20T09:59:04+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:41:36+00:00" + }, + { + "name": "symfony/expression-language", + "version": "v4.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/expression-language.git", + "reference": "e4964c7636e19f6008660f450c09121c80c2a7b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/e4964c7636e19f6008660f450c09121c80c2a7b9", + "reference": "e4964c7636e19f6008660f450c09121c80c2a7b9", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/cache": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1|^2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ExpressionLanguage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an engine that can compile and evaluate expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/expression-language/tree/v4.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-10-03T15:15:11+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v4.4.42", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "815412ee8971209bd4c1eecd5f4f481eacd44bf5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/815412ee8971209bd4c1eecd5f4f481eacd44bf5", + "reference": "815412ee8971209bd4c1eecd5f4f481eacd44bf5", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v4.4.42" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-20T08:49:14+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "66bd787edb5e42ff59d3523f623895af05043e4f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/66bd787edb5e42ff59d3523f623895af05043e4f", + "reference": "66bd787edb5e42ff59d3523f623895af05043e4f", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-29T07:35:46+00:00" + }, + { + "name": "symfony/flex", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/flex.git", + "reference": "49059a10127ac8270957e116a2251ae535d202ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/flex/zipball/49059a10127ac8270957e116a2251ae535d202ac", + "reference": "49059a10127ac8270957e116a2251ae535d202ac", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=7.1" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "symfony/dotenv": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/phpunit-bridge": "^4.4.12|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Flex\\Flex" + }, + "autoload": { + "psr-4": { + "Symfony\\Flex\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "Composer plugin for Symfony", + "support": { + "issues": "https://github.com/symfony/flex/issues", + "source": "https://github.com/symfony/flex/tree/v1.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" + } + ], + "time": "2023-05-26T16:25:26+00:00" + }, + { + "name": "symfony/form", + "version": "v4.4.48", + "source": { + "type": "git", + "url": "https://github.com/symfony/form.git", + "reference": "e1d137b13e0ec2cb5c5e38debca7a510c6f858c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/form/zipball/e1d137b13e0ec2cb5c5e38debca7a510c6f858c6", + "reference": "e1d137b13e0ec2cb5c5e38debca7a510c6f858c6", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/event-dispatcher": "^4.3", + "symfony/intl": "^4.4|^5.0", + "symfony/options-resolver": "~4.3|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/property-access": "^3.4.40|^4.4.8|^5.0.8", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<4.3", + "symfony/dependency-injection": "<3.4", + "symfony/doctrine-bridge": "<3.4", + "symfony/framework-bundle": "<3.4", + "symfony/http-kernel": "<4.4", + "symfony/intl": "<4.3", + "symfony/translation": "<4.2", + "symfony/twig-bridge": "<3.4.5|<4.0.5,>=4.0" + }, + "require-dev": { + "doctrine/collections": "~1.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^4.3|^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/http-kernel": "^4.4", + "symfony/security-csrf": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.2|^5.0", + "symfony/validator": "^4.4.17|^5.1.9", + "symfony/var-dumper": "^4.3|^5.0" + }, + "suggest": { + "symfony/security-csrf": "For protecting forms against CSRF attacks.", + "symfony/twig-bridge": "For templating with Twig.", + "symfony/validator": "For form validation." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Form\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows to easily create, process and reuse HTML forms", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/form/tree/v4.4.48" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-10-22T05:50:33+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v4.4.49", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "d8cf2558249004a29b8e27b1f6eae52337ff471b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/d8cf2558249004a29b8e27b1f6eae52337ff471b", + "reference": "d8cf2558249004a29b8e27b1f6eae52337ff471b", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.1.3", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4.11|~5.0.11|^5.1.3", + "symfony/dependency-injection": "^4.4.38|^5.0.1", + "symfony/error-handler": "^4.4.1|^5.0.1", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/routing": "^4.4.12|^5.1.4" + }, + "conflict": { + "doctrine/persistence": "<1.3", + "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.3.0|1.3.*", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/asset": "<3.4", + "symfony/browser-kit": "<4.3", + "symfony/console": "<4.4.21", + "symfony/dom-crawler": "<4.3", + "symfony/dotenv": "<4.3.6", + "symfony/form": "<4.3.5", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<4.4", + "symfony/messenger": "<4.4", + "symfony/mime": "<4.4", + "symfony/property-info": "<3.4", + "symfony/security-bundle": "<4.4", + "symfony/serializer": "<4.4", + "symfony/stopwatch": "<3.4", + "symfony/translation": "<4.4", + "symfony/twig-bridge": "<4.1.1", + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<4.4", + "symfony/web-profiler-bundle": "<4.4", + "symfony/workflow": "<4.3.6" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "doctrine/persistence": "^1.3|^2|^3", + "paragonie/sodium_compat": "^1.8", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.3|^5.0", + "symfony/console": "^4.4.42|^5.4.9", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7", + "symfony/dotenv": "^4.3.6|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^4.3.5|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/security-core": "^3.4|^4.4|^5.2", + "symfony/security-csrf": "^3.4|^4.0|^5.0", + "symfony/security-http": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^4.3.6|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "suggest": { + "ext-apcu": "For best performance of the system caches", + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/framework-bundle/tree/v4.4.49" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-05T15:42:31+00:00" + }, + { + "name": "symfony/http-client", + "version": "v4.4.49", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "0185497cd61440bdf68df7d81241b97a543e9c3f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/0185497cd61440bdf68df7d81241b97a543e9c3f", + "reference": "0185497cd61440bdf68df7d81241b97a543e9c3f", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2|^3", + "symfony/http-client-contracts": "^1.1.10|^2", + "symfony/polyfill-php73": "^1.11", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.0|^2" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "1.1|2.0" + }, + "require-dev": { + "guzzlehttp/promises": "^1.4", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^4.3|^5.0", + "symfony/http-kernel": "^4.4.13", + "symfony/process": "^4.2|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-client/tree/v4.4.49" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T19:03:45+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/http-client-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T15:48:08+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v4.4.49", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "191413c7b832c015bb38eae963f2e57498c3c173" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/191413c7b832c015bb38eae963f2e57498c3c173", + "reference": "191413c7b832c015bb38eae963f2e57498c3c173", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/mime": "^4.3|^5.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/expression-language": "^3.4|^4.0|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v4.4.49" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-04T16:17:57+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v4.4.50", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "aa6df6c045f034aa13ac752fc234bb300b9488ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/aa6df6c045f034aa13ac752fc234bb300b9488ef", + "reference": "aa6df6c045f034aa13ac752fc234bb300b9488ef", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2", + "symfony/error-handler": "^4.4", + "symfony/event-dispatcher": "^4.4", + "symfony/http-client-contracts": "^1.1|^2", + "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "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.43|<2.13,>=2" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.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.43|^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v4.4.50" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-01T08:01:31+00:00" + }, + { + "name": "symfony/inflector", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/inflector.git", + "reference": "66185be61805b1e44a5c4000929e700228d426cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/inflector/zipball/66185be61805b1e44a5c4000929e700228d426cc", + "reference": "66185be61805b1e44a5c4000929e700228d426cc", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Inflector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts words between their singular and plural forms (English only)", + "homepage": "https://symfony.com", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string", + "symfony", + "words" + ], + "support": { + "source": "https://github.com/symfony/inflector/tree/v4.4.44" + }, + "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" + } + ], + "abandoned": "EnglishInflector from the String component", + "time": "2022-07-20T09:59:04+00:00" + }, + { + "name": "symfony/intl", + "version": "v4.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/intl.git", + "reference": "f1d0f9d91ab482d33423b788999fbb43c34a9a59" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/intl/zipball/f1d0f9d91ab482d33423b788999fbb43c34a9a59", + "reference": "f1d0f9d91ab482d33423b788999fbb43c34a9a59", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/filesystem": "^3.4|^4.0|^5.0" + }, + "suggest": { + "ext-intl": "to use the component with locales other than \"en\"" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Intl\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Eriksen Costa", + "email": "eriksen.costa@infranology.com.br" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library", + "homepage": "https://symfony.com", + "keywords": [ + "i18n", + "icu", + "internationalization", + "intl", + "l10n", + "localization" + ], + "support": { + "source": "https://github.com/symfony/intl/tree/v4.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-10-03T15:15:11+00:00" + }, + { + "name": "symfony/mailer", + "version": "v4.4.49", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "554b8c0dc2db9d74e760fd6b726f527364f03302" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/554b8c0dc2db9d74e760fd6b726f527364f03302", + "reference": "554b8c0dc2db9d74e760fd6b726f527364f03302", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3", + "php": ">=7.1.3", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^4.3", + "symfony/mime": "^4.4.21|^5.2.6", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/http-kernel": "<4.4", + "symfony/sendgrid-mailer": "<4.4" + }, + "require-dev": { + "symfony/amazon-mailer": "^4.4|^5.0", + "symfony/google-mailer": "^4.4|^5.0", + "symfony/http-client-contracts": "^1.1|^2", + "symfony/mailchimp-mailer": "^4.4|^5.0", + "symfony/mailgun-mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/postmark-mailer": "^4.4|^5.0", + "symfony/sendgrid-mailer": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v4.4.49" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-04T06:30:35+00:00" + }, + { + "name": "symfony/mime", + "version": "v4.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "0eaf33cd6d1b3eaa50e7bc48b17f6e45789df35d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/0eaf33cd6d1b3eaa50e7bc48b17f6e45789df35d", + "reference": "0eaf33cd6d1b3eaa50e7bc48b17f6e45789df35d", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "symfony/dependency-injection": "^3.4|^4.1|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v4.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-10-03T15:15:11+00:00" + }, + { + "name": "symfony/monolog-bridge", + "version": "v4.4.43", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "ad09c9980b912e757c4ecd8363cebf3039d1d471" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/ad09c9980b912e757c4ecd8363cebf3039d1d471", + "reference": "ad09c9980b912e757c4ecd8363cebf3039d1d471", + "shasum": "" + }, + "require": { + "monolog/monolog": "^1.25.1", + "php": ">=7.1.3", + "symfony/http-kernel": "^4.3", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/console": "<3.4", + "symfony/http-foundation": "<3.4" + }, + "require-dev": { + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/security-core": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", + "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", + "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Monolog\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Monolog with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/monolog-bridge/tree/v4.4.43" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-16T12:12:11+00:00" + }, { "name": "symfony/monolog-bundle", "version": "v3.8.0", @@ -9620,6 +11642,73 @@ ], "time": "2022-05-10T14:24:36+00:00" }, + { + "name": "symfony/options-resolver", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "583f56160f716dd435f1cd721fd14b548f4bb510" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/583f56160f716dd435f1cd721fd14b548f4bb510", + "reference": "583f56160f716dd435f1cd721fd14b548f4bb510", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-20T09:59:04+00:00" + }, { "name": "symfony/polyfill-ctype", "version": "v1.27.0", @@ -10441,6 +12530,242 @@ ], "time": "2022-11-03T14:55:06+00:00" }, + { + "name": "symfony/property-access", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "d49682f6f0764df725c95128213a38f7e0a9f358" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/d49682f6f0764df725c95128213a38f7e0a9f358", + "reference": "d49682f6f0764df725c95128213a38f7e0a9f358", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/inflector": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/cache": "^3.4|^4.0|^5.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" + ], + "support": { + "source": "https://github.com/symfony/property-access/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-27T13:16:42+00:00" + }, + { + "name": "symfony/property-info", + "version": "v4.4.49", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "971cf46634e44d93d2174cf004555b69b19c9487" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/971cf46634e44d93d2174cf004555b69b19c9487", + "reference": "971cf46634e44d93d2174cf004555b69b19c9487", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/inflector": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.3.0|1.3.*", + "symfony/dependency-injection": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/cache": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/serializer": "^3.4|^4.0|^5.0" + }, + "suggest": { + "phpdocumentor/reflection-docblock": "To use the PHPDoc", + "psr/cache-implementation": "To cache results", + "symfony/doctrine-bridge": "To use Doctrine metadata", + "symfony/serializer": "To use Serializer metadata" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], + "support": { + "source": "https://github.com/symfony/property-info/tree/v4.4.49" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-15T11:00:03+00:00" + }, + { + "name": "symfony/proxy-manager-bridge", + "version": "v4.4.39", + "source": { + "type": "git", + "url": "https://github.com/symfony/proxy-manager-bridge.git", + "reference": "66c4de1f6fc16371c06762d6b7fafab2308a15a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/66c4de1f6fc16371c06762d6b7fafab2308a15a1", + "reference": "66c4de1f6fc16371c06762d6b7fafab2308a15a1", + "shasum": "" + }, + "require": { + "friendsofphp/proxy-manager-lts": "^1.0.2", + "php": ">=7.1.3", + "symfony/dependency-injection": "^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/config": "^3.4|^4.0|^5.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\ProxyManager\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for ProxyManager with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v4.4.39" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-02-25T10:38:15+00:00" + }, { "name": "symfony/psr-http-message-bridge", "version": "v2.1.4", @@ -10529,6 +12854,737 @@ ], "time": "2022-11-28T22:46:34+00:00" }, + { + "name": "symfony/routing", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/f7751fd8b60a07f3f349947a309b5bdfce22d6ae", + "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "psr/log": "^1|^2|^3", + "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" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-20T09:59:04+00:00" + }, + { + "name": "symfony/security-bundle", + "version": "v4.4.50", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-bundle.git", + "reference": "076fd2088ada33d760758d98ff07ddedbf567946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/076fd2088ada33d760758d98ff07ddedbf567946", + "reference": "076fd2088ada33d760758d98ff07ddedbf567946", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.1.3", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^4.4", + "symfony/security-csrf": "^4.2|^5.0", + "symfony/security-guard": "^4.2|^5.0", + "symfony/security-http": "^4.4.50" + }, + "conflict": { + "symfony/browser-kit": "<4.2", + "symfony/console": "<3.4", + "symfony/framework-bundle": "<4.4", + "symfony/ldap": "<4.4", + "symfony/twig-bundle": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.2|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^3.4|^4.0|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/translation": "^3.4|^4.0|^5.0", + "symfony/twig-bridge": "^3.4|^4.0|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SecurityBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-bundle/tree/v4.4.50" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-24T10:39:54+00:00" + }, + { + "name": "symfony/security-core", + "version": "v4.4.48", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-core.git", + "reference": "423ccb332784b236dfe6c5f396d0ac49db57c914" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-core/zipball/423ccb332784b236dfe6c5f396d0ac49db57c914", + "reference": "423ccb332784b236dfe6c5f396d0ac49db57c914", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/ldap": "<4.4", + "symfony/security-guard": "<4.3" + }, + "require-dev": { + "psr/container": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/ldap": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^3.4.31|^4.3.4|^5.0" + }, + "suggest": { + "psr/container-implementation": "To instantiate the Security class", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/ldap": "For using LDAP integration", + "symfony/validator": "For using the user password constraint" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Core\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - Core Library", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-core/tree/v4.4.48" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-10-22T05:50:33+00:00" + }, + { + "name": "symfony/security-csrf", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-csrf.git", + "reference": "45c956ef58135091f53732646a0acd28034f02c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/45c956ef58135091f53732646a0acd28034f02c0", + "reference": "45c956ef58135091f53732646a0acd28034f02c0", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^3.4|^4.0|^5.0" + }, + "conflict": { + "symfony/http-foundation": "<3.4" + }, + "require-dev": { + "symfony/http-foundation": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/http-foundation": "For using the class SessionTokenStorage." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Csrf\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - CSRF Library", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-csrf/tree/v4.4.37" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:41:36+00:00" + }, + { + "name": "symfony/security-guard", + "version": "v4.4.46", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-guard.git", + "reference": "f199eb1b19db11ce254b891580728c45a7ccacfd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/f199eb1b19db11ce254b891580728c45a7ccacfd", + "reference": "f199eb1b19db11ce254b891580728c45a7ccacfd", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/security-core": "^3.4.22|^4.2.3|^5.0", + "symfony/security-http": "^4.4.1" + }, + "require-dev": { + "psr/log": "^1|^2|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Guard\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - Guard", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-guard/tree/v4.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" + } + ], + "time": "2022-09-23T06:06:49+00:00" + }, + { + "name": "symfony/security-http", + "version": "v4.4.50", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-http.git", + "reference": "7fa4a0cac16f02cb534a6e9adcdb17385f94004f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-http/zipball/7fa4a0cac16f02cb534a6e9adcdb17385f94004f", + "reference": "7fa4a0cac16f02cb534a6e9adcdb17385f94004f", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/property-access": "^3.4|^4.0|^5.0", + "symfony/security-core": "^4.4.8" + }, + "conflict": { + "symfony/event-dispatcher": ">=5", + "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0" + }, + "suggest": { + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Http\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - HTTP Integration", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-http/tree/v4.4.50" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-24T10:39:54+00:00" + }, + { + "name": "symfony/serializer", + "version": "v4.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer.git", + "reference": "6e01d63c55657930a6de03d6e36aae50af98888d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer/zipball/6e01d63c55657930a6de03d6e36aae50af98888d", + "reference": "6e01d63c55657930a6de03d6e36aae50af98888d", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.3.0|1.3.*", + "symfony/dependency-injection": "<3.4", + "symfony/property-access": "<3.4", + "symfony/property-info": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "symfony/cache": "^3.4|^4.0|^5.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/property-access": "^4.4.36|^5.3.13", + "symfony/property-info": "^3.4.13|~4.0|^5.0", + "symfony/validator": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping.", + "psr/cache-implementation": "For using the metadata cache.", + "symfony/config": "For using the XML mapping loader.", + "symfony/http-foundation": "For using a MIME type guesser within the DataUriNormalizer.", + "symfony/property-access": "For using the ObjectNormalizer.", + "symfony/property-info": "To deserialize relations.", + "symfony/yaml": "For using the default YAML mapping loader." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Serializer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/serializer/tree/v4.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-09-19T08:38:33+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-30T19:17:29+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v4.4.46", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "757660703fbd139eea0001b759c6c3bf5bc3ea52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/757660703fbd139eea0001b759c6c3bf5bc3ea52", + "reference": "757660703fbd139eea0001b759c6c3bf5bc3ea52", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/service-contracts": "^1.0|^2" + }, + "require-dev": { + "symfony/polyfill-php72": "~1.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v4.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" + } + ], + "time": "2022-09-28T12:53:24+00:00" + }, { "name": "symfony/string", "version": "v5.4.22", @@ -10616,171 +13672,36 @@ "time": "2023-03-14T06:11:53+00:00" }, { - "name": "symfony/symfony", - "version": "v4.4.50", + "name": "symfony/templating", + "version": "v4.4.44", "source": { "type": "git", - "url": "https://github.com/symfony/symfony.git", - "reference": "6bc1c2e2506327daa9a2359ec45f7098ca947728" + "url": "https://github.com/symfony/templating.git", + "reference": "2bfe94a5ebe0176612186e5f6b6a08a480c9e1f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/symfony/zipball/6bc1c2e2506327daa9a2359ec45f7098ca947728", - "reference": "6bc1c2e2506327daa9a2359ec45f7098ca947728", + "url": "https://api.github.com/repos/symfony/templating/zipball/2bfe94a5ebe0176612186e5f6b6a08a480c9e1f9", + "reference": "2bfe94a5ebe0176612186e5f6b6a08a480c9e1f9", "shasum": "" }, "require": { - "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^1.3|^2|^3", - "ext-xml": "*", - "friendsofphp/proxy-manager-lts": "^1.0.2", "php": ">=7.1.3", - "psr/cache": "^1.0|^2.0", - "psr/container": "^1.0", - "psr/link": "^1.0", - "psr/log": "^1|^2", - "symfony/contracts": "^1.1.8", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", - "symfony/polyfill-php73": "^1.11", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "twig/twig": "^1.43|^2.13|^3.0.4" - }, - "conflict": { - "doctrine/dbal": "<2.7", - "egulias/email-validator": "~3.0.0", - "masterminds/html5": "<2.6", - "monolog/monolog": ">=2", - "ocramius/proxy-manager": "<2.1", - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "phpunit/phpunit": "<5.4.3" - }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/cache-implementation": "1.0|2.0", - "psr/container-implementation": "1.0", - "psr/event-dispatcher-implementation": "1.0", - "psr/http-client-implementation": "1.0", - "psr/link-implementation": "1.0", - "psr/log-implementation": "1.0|2.0", - "psr/simple-cache-implementation": "1.0|2.0", - "symfony/cache-implementation": "1.0|2.0", - "symfony/event-dispatcher-implementation": "1.1", - "symfony/http-client-implementation": "1.1|2.0", - "symfony/service-implementation": "1.0|2.0", - "symfony/translation-implementation": "1.0|2.0" - }, - "replace": { - "symfony/amazon-mailer": "self.version", - "symfony/asset": "self.version", - "symfony/browser-kit": "self.version", - "symfony/cache": "self.version", - "symfony/config": "self.version", - "symfony/console": "self.version", - "symfony/css-selector": "self.version", - "symfony/debug": "self.version", - "symfony/debug-bundle": "self.version", - "symfony/dependency-injection": "self.version", - "symfony/doctrine-bridge": "self.version", - "symfony/dom-crawler": "self.version", - "symfony/dotenv": "self.version", - "symfony/error-handler": "self.version", - "symfony/event-dispatcher": "self.version", - "symfony/expression-language": "self.version", - "symfony/filesystem": "self.version", - "symfony/finder": "self.version", - "symfony/form": "self.version", - "symfony/framework-bundle": "self.version", - "symfony/google-mailer": "self.version", - "symfony/http-client": "self.version", - "symfony/http-foundation": "self.version", - "symfony/http-kernel": "self.version", - "symfony/inflector": "self.version", - "symfony/intl": "self.version", - "symfony/ldap": "self.version", - "symfony/lock": "self.version", - "symfony/mailchimp-mailer": "self.version", - "symfony/mailer": "self.version", - "symfony/mailgun-mailer": "self.version", - "symfony/messenger": "self.version", - "symfony/mime": "self.version", - "symfony/monolog-bridge": "self.version", - "symfony/options-resolver": "self.version", - "symfony/postmark-mailer": "self.version", - "symfony/process": "self.version", - "symfony/property-access": "self.version", - "symfony/property-info": "self.version", - "symfony/proxy-manager-bridge": "self.version", - "symfony/routing": "self.version", - "symfony/security": "self.version", - "symfony/security-bundle": "self.version", - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version", - "symfony/sendgrid-mailer": "self.version", - "symfony/serializer": "self.version", - "symfony/stopwatch": "self.version", - "symfony/templating": "self.version", - "symfony/translation": "self.version", - "symfony/twig-bridge": "self.version", - "symfony/twig-bundle": "self.version", - "symfony/validator": "self.version", - "symfony/var-dumper": "self.version", - "symfony/var-exporter": "self.version", - "symfony/web-link": "self.version", - "symfony/web-profiler-bundle": "self.version", - "symfony/web-server-bundle": "self.version", - "symfony/workflow": "self.version", - "symfony/yaml": "self.version" + "symfony/polyfill-ctype": "~1.8" }, "require-dev": { - "cache/integration-tests": "dev-master", - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.6|^2.0", - "doctrine/collections": "~1.0", - "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.7|^3.0", - "doctrine/orm": "^2.6.3", - "egulias/email-validator": "^2.1.10|^3.1", - "guzzlehttp/promises": "^1.4", - "masterminds/html5": "^2.6", - "monolog/monolog": "^1.25.1", - "nyholm/psr7": "^1.0", - "paragonie/sodium_compat": "^1.8", - "php-http/httplug": "^1.0|^2.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "predis/predis": "~1.1", - "psr/http-client": "^1.0", - "psr/simple-cache": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.2", - "symfony/security-acl": "~2.8|~3.0", - "twig/cssinliner-extra": "^2.12|^3", - "twig/inky-extra": "^2.12|^3", - "twig/markdown-extra": "^2.12|^3" + "psr/log": "^1|^2|^3" + }, + "suggest": { + "psr/log-implementation": "For using debug logging in loaders" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Bundle\\": "src/Symfony/Bundle/", - "Symfony\\Component\\": "src/Symfony/Component/", - "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", - "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", - "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", - "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/" + "Symfony\\Component\\Templating\\": "" }, - "classmap": [ - "src/Symfony/Component/Intl/Resources/stubs" - ], "exclude-from-classmap": [ - "**/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -10797,14 +13718,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "The Symfony PHP framework", + "description": "Provides all the tools needed to build any kind of template system", "homepage": "https://symfony.com", - "keywords": [ - "framework" - ], "support": { - "issues": "https://github.com/symfony/symfony/issues", - "source": "https://github.com/symfony/symfony/tree/v4.4.50" + "source": "https://github.com/symfony/templating/tree/v4.4.44" }, "funding": [ { @@ -10820,7 +13737,718 @@ "type": "tidelift" } ], - "time": "2023-02-01T08:01:44+00:00" + "time": "2022-06-27T13:16:42+00:00" + }, + { + "name": "symfony/translation", + "version": "v4.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "45036b1d53accc48fe9bab71ccd86d57eba0dd94" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/45036b1d53accc48fe9bab71ccd86d57eba0dd94", + "reference": "45036b1d53accc48fe9bab71ccd86d57eba0dd94", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "symfony/translation-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/finder": "~2.8|~3.0|~4.0|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/intl": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v4.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-10-03T15:15:11+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-27T16:58:25+00:00" + }, + { + "name": "symfony/twig-bridge", + "version": "v4.4.49", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "d6b0fbfd5e2fab79c0c7b8dfe579e47ee0999113" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d6b0fbfd5e2fab79c0c7b8dfe579e47ee0999113", + "reference": "d6b0fbfd5e2fab79c0c7b8dfe579e47ee0999113", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^1.1|^2", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "conflict": { + "symfony/console": "<3.4", + "symfony/form": "<4.4", + "symfony/http-foundation": "<4.3", + "symfony/translation": "<4.2", + "symfony/workflow": "<4.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/form": "^4.4.17", + "symfony/http-foundation": "^4.3|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/intl": "^4.4|^5.0", + "symfony/mime": "^4.3|^5.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/security-acl": "^2.8|^3.0", + "symfony/security-core": "^3.0|^4.0|^5.0", + "symfony/security-csrf": "^3.4|^4.0|^5.0", + "symfony/security-http": "^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.1|^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^4.3|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/cssinliner-extra": "^2.12|^3", + "twig/inky-extra": "^2.12|^3", + "twig/markdown-extra": "^2.12|^3" + }, + "suggest": { + "symfony/asset": "For using the AssetExtension", + "symfony/expression-language": "For using the ExpressionExtension", + "symfony/finder": "", + "symfony/form": "For using the FormExtension", + "symfony/http-kernel": "For using the HttpKernelExtension", + "symfony/routing": "For using the RoutingExtension", + "symfony/security-core": "For using the SecurityExtension", + "symfony/security-csrf": "For using the CsrfExtension", + "symfony/security-http": "For using the LogoutUrlExtension", + "symfony/stopwatch": "For using the StopwatchExtension", + "symfony/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" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Twig\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Twig with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bridge/tree/v4.4.49" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T09:41:56+00:00" + }, + { + "name": "symfony/twig-bundle", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "164c1edc69f2c7ee337323efc78a8a8a263f45ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/164c1edc69f2c7ee337323efc78a8a8a263f45ff", + "reference": "164c1edc69f2c7ee337323efc78a8a8a263f45ff", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/http-foundation": "^4.3|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/twig-bridge": "^4.4|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "conflict": { + "symfony/dependency-injection": "<4.1", + "symfony/framework-bundle": "<4.4", + "symfony/translation": "<4.2" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^4.2.5|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/form": "^3.4|^4.0|^5.0", + "symfony/framework-bundle": "^4.4|^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/web-link": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\TwigBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a tight integration of Twig into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bundle/tree/v4.4.41" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T15:19:55+00:00" + }, + { + "name": "symfony/validator", + "version": "v4.4.48", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "54781a4c41efbd283b779110bf8ae7f263737775" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/54781a4c41efbd283b779110bf8ae7f263737775", + "reference": "54781a4c41efbd283b779110bf8ae7f263737775", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^1.1|^2" + }, + "conflict": { + "doctrine/lexer": "<1.1", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4", + "symfony/intl": "<4.3", + "symfony/translation": ">=5.0", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "egulias/email-validator": "^2.1.10|^3", + "symfony/cache": "^3.4|^4.0|^5.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.3|^5.0", + "symfony/http-foundation": "^4.1|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/intl": "^4.3|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/property-access": "^3.4|^4.0|^5.0", + "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.2", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader.", + "egulias/email-validator": "Strict (RFC compliant) email validation", + "psr/cache-implementation": "For using the mapping cache.", + "symfony/config": "", + "symfony/expression-language": "For using the Expression validator", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For accessing properties within comparison constraints", + "symfony/property-info": "To automatically add NotNull and Type constraints", + "symfony/translation": "For translating validation errors.", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to validate values", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/validator/tree/v4.4.48" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-10-25T13:54:11+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v4.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "1069c7a3fca74578022fab6f81643248d02f8e63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1069c7a3fca74578022fab6f81643248d02f8e63", + "reference": "1069c7a3fca74578022fab6f81643248d02f8e63", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v4.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-10-03T15:15:11+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "be74908a6942fdd331554b3cec27ff41b45ccad4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/be74908a6942fdd331554b3cec27ff41b45ccad4", + "reference": "be74908a6942fdd331554b3cec27ff41b45ccad4", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v5.4.21" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-21T19:46:44+00:00" + }, + { + "name": "symfony/yaml", + "version": "v4.4.45", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", + "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v4.4.45" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-08-02T15:47:23+00:00" }, { "name": "tecnickcom/tcpdf", @@ -12829,16 +16457,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.5", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" + "reference": "19526a33fb561ef417e822e85f08a00db4059c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", - "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", + "reference": "19526a33fb561ef417e822e85f08a00db4059c17", "shasum": "" }, "require": { @@ -12879,9 +16507,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" }, - "time": "2023-05-19T20:20:00+00:00" + "time": "2023-06-25T14:52:30+00:00" }, { "name": "php-cs-fixer/diff", @@ -13297,6 +16925,213 @@ }, "time": "2023-05-16T12:46:15+00:00" }, + { + "name": "symfony/browser-kit", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb", + "reference": "2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.3|^5.0", + "symfony/mime": "^4.3|^5.0", + "symfony/process": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/browser-kit/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-25T12:56:14+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", + "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-27T13:16:42+00:00" + }, + { + "name": "symfony/dotenv", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "require-dev": { + "symfony/process": "^3.4.2|^4.0|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Dotenv\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Registers environment variables from a .env file", + "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "source": "https://github.com/symfony/dotenv/tree/v4.4.37" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:41:36+00:00" + }, { "name": "symfony/maker-bundle", "version": "v1.39.1", @@ -13465,6 +17300,147 @@ } ], "time": "2023-06-23T13:25:16+00:00" + }, + { + "name": "symfony/process", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", + "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-27T13:16:42+00:00" + }, + { + "name": "symfony/web-profiler-bundle", + "version": "v4.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "c173202d8ce82fde63ec0953eaffdf065018b8f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/c173202d8ce82fde63ec0953eaffdf065018b8f4", + "reference": "c173202d8ce82fde63ec0953eaffdf065018b8f4", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/config": "^4.2|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/routing": "^4.3|^5.0", + "symfony/twig-bundle": "^4.2|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "conflict": { + "symfony/form": "<4.3", + "symfony/messenger": "<4.2" + }, + "require-dev": { + "symfony/browser-kit": "^4.3|^5.0", + "symfony/console": "^4.3|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a development tool that gives detailed information about the execution of any request", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/web-profiler-bundle/tree/v4.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-09-29T14:10:52+00:00" } ], "aliases": [], diff --git a/config/bootstrap.php b/config/bootstrap.php new file mode 100644 index 000000000..d43714ff7 --- /dev/null +++ b/config/bootstrap.php @@ -0,0 +1,23 @@ +=1.2) +if (is_array($env = @include dirname(__DIR__) . '/.env.local.php') && (!isset($env['APP_ENV']) || ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env['APP_ENV']) === $env['APP_ENV'])) { + (new Dotenv(false))->populate($env); +} else { + // load all the .env files + (new Dotenv(false))->loadEnv(dirname(__DIR__) . '/.env'); +} + +$_SERVER += $_ENV; +$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; +$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; +$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], \FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; diff --git a/config/bundles.php b/config/bundles.php new file mode 100644 index 000000000..f2b743913 --- /dev/null +++ b/config/bundles.php @@ -0,0 +1,34 @@ + ['all' => true], + BD\GuzzleSiteAuthenticatorBundle\BDGuzzleSiteAuthenticatorBundle::class => ['all' => true], + Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], + Craue\ConfigBundle\CraueConfigBundle::class => ['all' => true], + DAMA\DoctrineTestBundle\DAMADoctrineTestBundle::class => ['test' => true], + Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], + Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], + FOS\JsRoutingBundle\FOSJsRoutingBundle::class => ['all' => true], + FOS\OAuthServerBundle\FOSOAuthServerBundle::class => ['all' => true], + FOS\RestBundle\FOSRestBundle::class => ['all' => true], + FOS\UserBundle\FOSUserBundle::class => ['all' => true], + KPhoen\RulerZBundle\KPhoenRulerZBundle::class => ['all' => true], + Lexik\Bundle\FormFilterBundle\LexikFormFilterBundle::class => ['all' => true], + Nelmio\ApiDocBundle\NelmioApiDocBundle::class => ['all' => true], + Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], + OldSound\RabbitMqBundle\OldSoundRabbitMqBundle::class => ['all' => true], + Http\HttplugBundle\HttplugBundle::class => ['all' => true], + Scheb\TwoFactorBundle\SchebTwoFactorBundle::class => ['all' => true], + Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], + Sentry\SentryBundle\SentryBundle::class => ['prod' => true], + Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle::class => ['all' => true], + Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], + JMS\SerializerBundle\JMSSerializerBundle::class => ['all' => true], + Bazinga\Bundle\HateoasBundle\BazingaHateoasBundle::class => ['all' => true], + Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], + Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], +]; diff --git a/config/packages/bazinga_hateoas.yaml b/config/packages/bazinga_hateoas.yaml new file mode 100644 index 000000000..93a743d33 --- /dev/null +++ b/config/packages/bazinga_hateoas.yaml @@ -0,0 +1,4 @@ +# For full configuration see https://github.com/willdurand/BazingaHateoasBundle/blob/master/Resources/doc/index.md#reference-configuration +bazinga_hateoas: + twig_extension: + enabled: true diff --git a/config/packages/cache.yaml b/config/packages/cache.yaml new file mode 100644 index 000000000..6899b7200 --- /dev/null +++ b/config/packages/cache.yaml @@ -0,0 +1,19 @@ +framework: + cache: + # Unique name of your app: used to compute stable namespaces for cache keys. + #prefix_seed: your_vendor_name/app_name + + # The "app" cache stores to the filesystem by default. + # The data in this cache should persist between deploys. + # Other options include: + + # Redis + #app: cache.adapter.redis + #default_redis_provider: redis://localhost + + # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) + #app: cache.adapter.apcu + + # Namespaced pools use the above "app" backend by default + #pools: + #my.dedicated.cache: null diff --git a/config/packages/craue_config.yaml b/config/packages/craue_config.yaml new file mode 100644 index 000000000..c7ae05a67 --- /dev/null +++ b/config/packages/craue_config.yaml @@ -0,0 +1,3 @@ +# define custom entity so we can override length attribute to fix utf8mb4 issue +craue_config: + entity_name: App\Entity\InternalSetting diff --git a/config/packages/dev/framework.yaml b/config/packages/dev/framework.yaml new file mode 100644 index 000000000..460a437f4 --- /dev/null +++ b/config/packages/dev/framework.yaml @@ -0,0 +1,9 @@ +framework: + router: + strict_requirements: true + profiler: + only_exceptions: false + + mailer: + # see https://mailcatcher.me/ + dsn: smtp://127.0.0.1:1025 diff --git a/config/packages/dev/jsm_serializer.yaml b/config/packages/dev/jsm_serializer.yaml new file mode 100644 index 000000000..f94604102 --- /dev/null +++ b/config/packages/dev/jsm_serializer.yaml @@ -0,0 +1,7 @@ +jms_serializer: + visitors: + json_serialization: + options: + - JSON_PRETTY_PRINT + - JSON_UNESCAPED_SLASHES + - JSON_PRESERVE_ZERO_FRACTION diff --git a/config/packages/dev/monolog.yaml b/config/packages/dev/monolog.yaml new file mode 100644 index 000000000..b1998da1a --- /dev/null +++ b/config/packages/dev/monolog.yaml @@ -0,0 +1,19 @@ +monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + channels: ["!event"] + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine", "!console"] diff --git a/config/packages/dev/web_profiler.yaml b/config/packages/dev/web_profiler.yaml new file mode 100644 index 000000000..1f1cb2bb4 --- /dev/null +++ b/config/packages/dev/web_profiler.yaml @@ -0,0 +1,3 @@ +web_profiler: + toolbar: true + intercept_redirects: false diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml new file mode 100644 index 000000000..a1402acba --- /dev/null +++ b/config/packages/doctrine.yaml @@ -0,0 +1,32 @@ +doctrine: + dbal: + url: '%env(resolve:DATABASE_URL)%' + + orm: + auto_generate_proxy_classes: "%kernel.debug%" + auto_mapping: true + mappings: + App: + is_bundle: false + type: annotation + dir: '%kernel.project_dir%/src/Entity' + prefix: 'App\Entity' + alias: App + +# doctrine: +# dbal: +# url: '%env(resolve:DATABASE_URL)%' + +# # IMPORTANT: You MUST configure your server version, +# # either here or in the DATABASE_URL env var (see .env file) +# #server_version: '14' +# orm: +# auto_generate_proxy_classes: true +# naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware +# auto_mapping: true +# mappings: +# App: +# is_bundle: false +# dir: '%kernel.project_dir%/src/Entity' +# prefix: 'App\Entity' +# alias: App diff --git a/config/packages/doctrine_migrations.yaml b/config/packages/doctrine_migrations.yaml new file mode 100644 index 000000000..f46aee58a --- /dev/null +++ b/config/packages/doctrine_migrations.yaml @@ -0,0 +1,12 @@ +doctrine_migrations: + migrations_paths: + # namespace is arbitrary but should be different from App\Migrations + # as migrations classes should NOT be autoloaded + 'DoctrineMigrations': '%kernel.project_dir%/migrations' + enable_profiler: false + storage: + table_storage: + table_name: 'migration_versions' + version_column_name: 'version' + version_column_length: 192 + executed_at_column_name: 'executed_at' diff --git a/config/packages/fos_js_routing.yaml b/config/packages/fos_js_routing.yaml new file mode 100644 index 000000000..fe8ed3dc2 --- /dev/null +++ b/config/packages/fos_js_routing.yaml @@ -0,0 +1,13 @@ +fos_js_routing: + routes_to_expose: + - homepage + - starred + - archive + - all + - tag + - config + - import + - developer + - howto + - fos_user_security_logout + - new diff --git a/config/packages/fos_oauth_server.yaml b/config/packages/fos_oauth_server.yaml new file mode 100644 index 000000000..21abfa029 --- /dev/null +++ b/config/packages/fos_oauth_server.yaml @@ -0,0 +1,12 @@ +# Read the documentation: https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/doc/index.md#step-5-configure-fosoauthserverbundle +fos_oauth_server: + db_driver: orm + client_class: App\Entity\Client + access_token_class: App\Entity\AccessToken + refresh_token_class: App\Entity\RefreshToken + auth_code_class: App\Entity\AuthCode + service: + user_provider: fos_user.user_provider.username_email + options: + refresh_token_lifetime: "%env(FOS_OAUTH_SERVER_REFRESH_TOKEN_LIFETIME)%" + access_token_lifetime: "%env(FOS_OAUTH_SERVER_ACCESS_TOKEN_LIFETIME)%" diff --git a/config/packages/fos_rest.yaml b/config/packages/fos_rest.yaml new file mode 100644 index 000000000..a11642039 --- /dev/null +++ b/config/packages/fos_rest.yaml @@ -0,0 +1,34 @@ +fos_rest: + param_fetcher_listener: true + body_listener: true + view: + mime_types: + csv: + - 'text/csv' + - 'text/plain' + pdf: + - 'application/pdf' + epub: + - 'application/epub+zip' + mobi: + - 'application/x-mobipocket-ebook' + view_response_listener: 'force' + formats: + xml: true + json: true + txt: true + csv: true + pdf: true + epub: true + mobi: true + failed_validation: HTTP_BAD_REQUEST + routing_loader: false + format_listener: + enabled: true + rules: + - { path: "^/api/entries/([0-9]+)/export.(.*)", priorities: ['epub', 'mobi', 'pdf', 'txt', 'csv'], fallback_format: json, prefer_extension: false } + - { path: "^/api", priorities: ['json', 'xml'], fallback_format: json, prefer_extension: false } + - { path: "^/annotations", priorities: ['json', 'xml'], fallback_format: json, prefer_extension: false } + # for an unknown reason, EACH REQUEST goes to FOS\RestBundle\EventListener\FormatListener + # so we need to add custom rule for custom api export but also for all other routes of the application... + - { path: '^/', priorities: ['text/html', '*/*'], fallback_format: html, prefer_extension: false } diff --git a/config/packages/fos_user.yaml b/config/packages/fos_user.yaml new file mode 100644 index 000000000..cec2fcd54 --- /dev/null +++ b/config/packages/fos_user.yaml @@ -0,0 +1,12 @@ +fos_user: + db_driver: orm + firewall_name: secured_area + user_class: App\Entity\User + registration: + confirmation: + enabled: '%env(bool:FOSUSER_CONFIRMATION)%' + from_email: + address: '%env(FROM_EMAIL)%' + sender_name: wallabag + service: + mailer: App\Mailer\UserMailer diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml new file mode 100644 index 000000000..728f575ad --- /dev/null +++ b/config/packages/framework.yaml @@ -0,0 +1,24 @@ +# see https://symfony.com/doc/current/reference/configuration/framework.html +framework: + translator: + enabled: true + fallback: "%env(LOCALE)%" + default_path: '%kernel.project_dir%/translations' + secret: '%env(APP_SECRET)%' + router: + strict_requirements: ~ + form: ~ + csrf_protection: ~ + validation: + enable_annotations: true + templating: + engines: ['twig'] + default_locale: "%env(LOCALE)%" + trusted_hosts: ~ + session: + # handler_id set to null will use default session handler from php.ini + handler_id: session.handler.native_file + save_path: "%kernel.project_dir%/var/sessions/%kernel.environment%" + fragments: ~ + http_method_override: true + assets: ~ diff --git a/config/packages/http_discovery.yaml b/config/packages/http_discovery.yaml new file mode 100644 index 000000000..2a789e73c --- /dev/null +++ b/config/packages/http_discovery.yaml @@ -0,0 +1,10 @@ +services: + Psr\Http\Message\RequestFactoryInterface: '@http_discovery.psr17_factory' + Psr\Http\Message\ResponseFactoryInterface: '@http_discovery.psr17_factory' + Psr\Http\Message\ServerRequestFactoryInterface: '@http_discovery.psr17_factory' + Psr\Http\Message\StreamFactoryInterface: '@http_discovery.psr17_factory' + Psr\Http\Message\UploadedFileFactoryInterface: '@http_discovery.psr17_factory' + Psr\Http\Message\UriFactoryInterface: '@http_discovery.psr17_factory' + + http_discovery.psr17_factory: + class: Http\Discovery\Psr17Factory diff --git a/config/packages/httplug.yaml b/config/packages/httplug.yaml new file mode 100644 index 000000000..4b176344a --- /dev/null +++ b/config/packages/httplug.yaml @@ -0,0 +1,21 @@ +httplug: + clients: + wallabag_core: + factory: App\Helper\HttpClientFactory + config: + defaults: + timeout: 10 + plugins: ['httplug.plugin.logger'] + wallabag_core.entry.download_images: + factory: 'httplug.factory.auto' + plugins: ['httplug.plugin.logger'] + wallabag_import.pocket.client: + factory: 'httplug.factory.auto' + plugins: + - 'httplug.plugin.logger' + - header_defaults: + headers: + 'content-type': 'application/json' + 'X-Accept': 'application/json' + discovery: + client: false diff --git a/config/packages/jms_serializer.yaml b/config/packages/jms_serializer.yaml new file mode 100644 index 000000000..d0d9a98ac --- /dev/null +++ b/config/packages/jms_serializer.yaml @@ -0,0 +1,9 @@ +jms_serializer: + handlers: + # to be removed if we switch to (default) ISO8601 datetime instead of ATOM + # see: https://github.com/schmittjoh/JMSSerializerBundle/pull/494 + datetime: + default_format: "Y-m-d\\TH:i:sO" # ATOMjms_serializer: + visitors: + xml_serialization: + format_output: '%kernel.debug%' diff --git a/config/packages/kphoen_rulerz.yaml b/config/packages/kphoen_rulerz.yaml new file mode 100644 index 000000000..e7d643f80 --- /dev/null +++ b/config/packages/kphoen_rulerz.yaml @@ -0,0 +1,3 @@ +kphoen_rulerz: + targets: + doctrine: true diff --git a/config/packages/mailer.yaml b/config/packages/mailer.yaml new file mode 100644 index 000000000..56a650d89 --- /dev/null +++ b/config/packages/mailer.yaml @@ -0,0 +1,3 @@ +framework: + mailer: + dsn: '%env(MAILER_DSN)%' diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml new file mode 100644 index 000000000..b996d5579 --- /dev/null +++ b/config/packages/monolog.yaml @@ -0,0 +1,3 @@ +monolog: + channels: + - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists diff --git a/config/packages/nelmio_api_doc.yaml b/config/packages/nelmio_api_doc.yaml new file mode 100644 index 000000000..d5a26fb2b --- /dev/null +++ b/config/packages/nelmio_api_doc.yaml @@ -0,0 +1,17 @@ +nelmio_api_doc: + areas: # to filter documented areas + path_patterns: + - ^/api(?!/doc$) # Accepts routes under /api except /api/doc + documentation: + info: + title: wallabag API documentation + description: This is the API documentation of wallabag + version: 2.x + securityDefinitions: + Bearer: + type: apiKey + description: 'Value: Bearer {jwt}' + name: Authorization + in: header + security: + - Bearer: [] diff --git a/config/packages/nelmio_cors.yaml b/config/packages/nelmio_cors.yaml new file mode 100644 index 000000000..0a7c0b8fe --- /dev/null +++ b/config/packages/nelmio_cors.yaml @@ -0,0 +1,28 @@ +nelmio_cors: + defaults: + allow_credentials: false + allow_origin: [] + allow_headers: [] + allow_methods: [] + expose_headers: [] + max_age: 0 + hosts: [] + #origin_regex: false + paths: + '^/api/': + allow_origin: ['*'] + allow_headers: ['Authorization','content-type'] + allow_methods: ['POST', 'PUT', 'PATCH','GET', 'DELETE'] + max_age: 3600 + '^/oauth/': + allow_origin: ['*'] + allow_headers: ['Authorization','content-type'] + allow_methods: ['POST', 'PUT', 'GET', 'DELETE'] + max_age: 3600 + '^/': + #origin_regex: true + allow_origin: ['*'] + allow_headers: ['Authorization','content-type'] + allow_methods: ['POST', 'PUT', 'GET', 'DELETE'] + max_age: 3600 + hosts: ['^api\.'] diff --git a/config/packages/old_sound_rabbit_mq.yaml b/config/packages/old_sound_rabbit_mq.yaml new file mode 100644 index 000000000..c283f61af --- /dev/null +++ b/config/packages/old_sound_rabbit_mq.yaml @@ -0,0 +1,148 @@ +old_sound_rabbit_mq: + connections: + default: + url: '%env(RABBITMQ_URL)%' + vhost: / + lazy: true + producers: + import_pocket: + connection: default + exchange_options: + name: 'wallabag.import.pocket' + type: topic + import_readability: + connection: default + exchange_options: + name: 'wallabag.import.readability' + type: topic + import_pinboard: + connection: default + exchange_options: + name: 'wallabag.import.pinboard' + type: topic + import_delicious: + connection: default + exchange_options: + name: 'wallabag.import.delicious' + type: topic + import_instapaper: + connection: default + exchange_options: + name: 'wallabag.import.instapaper' + type: topic + import_wallabag_v1: + connection: default + exchange_options: + name: 'wallabag.import.wallabag_v1' + type: topic + import_wallabag_v2: + connection: default + exchange_options: + name: 'wallabag.import.wallabag_v2' + type: topic + import_elcurator: + connection: default + exchange_options: + name: 'wallabag.import.elcurator' + type: topic + import_firefox: + connection: default + exchange_options: + name: 'wallabag.import.firefox' + type: topic + import_chrome: + connection: default + exchange_options: + name: 'wallabag.import.chrome' + type: topic + consumers: + import_pocket: + connection: default + exchange_options: + name: 'wallabag.import.pocket' + type: topic + queue_options: + name: 'wallabag.import.pocket' + callback: wallabag_import.consumer.amqp.pocket + qos_options: {prefetch_count: 10} + import_readability: + connection: default + exchange_options: + name: 'wallabag.import.readability' + type: topic + queue_options: + name: 'wallabag.import.readability' + callback: wallabag_import.consumer.amqp.readability + qos_options: {prefetch_count: 10} + import_instapaper: + connection: default + exchange_options: + name: 'wallabag.import.instapaper' + type: topic + queue_options: + name: 'wallabag.import.instapaper' + callback: wallabag_import.consumer.amqp.instapaper + qos_options: {prefetch_count: 10} + import_pinboard: + connection: default + exchange_options: + name: 'wallabag.import.pinboard' + type: topic + queue_options: + name: 'wallabag.import.pinboard' + callback: wallabag_import.consumer.amqp.pinboard + qos_options: {prefetch_count: 10} + import_delicious: + connection: default + exchange_options: + name: 'wallabag.import.delicious' + type: topic + queue_options: + name: 'wallabag.import.delicious' + callback: wallabag_import.consumer.amqp.delicious + qos_options: {prefetch_count: 10} + import_wallabag_v1: + connection: default + exchange_options: + name: 'wallabag.import.wallabag_v1' + type: topic + queue_options: + name: 'wallabag.import.wallabag_v1' + callback: wallabag_import.consumer.amqp.wallabag_v1 + qos_options: {prefetch_count: 10} + import_wallabag_v2: + connection: default + exchange_options: + name: 'wallabag.import.wallabag_v2' + type: topic + queue_options: + name: 'wallabag.import.wallabag_v2' + callback: wallabag_import.consumer.amqp.wallabag_v2 + qos_options: {prefetch_count: 10} + import_elcurator: + connection: default + exchange_options: + name: 'wallabag.import.elcurator' + type: topic + queue_options: + name: 'wallabag.import.elcurator' + callback: wallabag_import.consumer.amqp.elcurator + qos_options: {prefetch_count: 10} + import_firefox: + connection: default + exchange_options: + name: 'wallabag.import.firefox' + type: topic + queue_options: + name: 'wallabag.import.firefox' + callback: wallabag_import.consumer.amqp.firefox + qos_options: {prefetch_count: 10} + import_chrome: + connection: default + exchange_options: + name: 'wallabag.import.chrome' + type: topic + queue_options: + name: 'wallabag.import.chrome' + callback: wallabag_import.consumer.amqp.chrome + qos_options: {prefetch_count: 10} diff --git a/config/packages/prod/doctrine.yaml b/config/packages/prod/doctrine.yaml new file mode 100644 index 000000000..5dc700dda --- /dev/null +++ b/config/packages/prod/doctrine.yaml @@ -0,0 +1,18 @@ +doctrine: + orm: + auto_generate_proxy_classes: false + proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies' + query_cache_driver: + type: pool + pool: doctrine.system_cache_pool + result_cache_driver: + type: pool + pool: doctrine.result_cache_pool + +framework: + cache: + pools: + doctrine.result_cache_pool: + adapter: cache.app + doctrine.system_cache_pool: + adapter: cache.system diff --git a/config/packages/prod/jsm_serializer.yaml b/config/packages/prod/jsm_serializer.yaml new file mode 100644 index 000000000..89c86c893 --- /dev/null +++ b/config/packages/prod/jsm_serializer.yaml @@ -0,0 +1,6 @@ +jms_serializer: + visitors: + json_serialization: + options: + - JSON_UNESCAPED_SLASHES + - JSON_PRESERVE_ZERO_FRACTION diff --git a/config/packages/prod/monolog.yaml b/config/packages/prod/monolog.yaml new file mode 100644 index 000000000..9c22a5a3f --- /dev/null +++ b/config/packages/prod/monolog.yaml @@ -0,0 +1,21 @@ +monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + buffer_size: 50 # How many messages should be saved? Prevent memory leaks + nested: + type: stream + path: php://stderr + level: debug + formatter: monolog.formatter.json + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine"] + deprecation: + type: stream + channels: [deprecation] + path: php://stderr diff --git a/config/packages/prod/routing.yaml b/config/packages/prod/routing.yaml new file mode 100644 index 000000000..b3e6a0af2 --- /dev/null +++ b/config/packages/prod/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: null diff --git a/config/packages/prod/sentry.yaml b/config/packages/prod/sentry.yaml new file mode 100644 index 000000000..a5ccf756b --- /dev/null +++ b/config/packages/prod/sentry.yaml @@ -0,0 +1,22 @@ +sentry: + dsn: '%env(SENTRY_DSN)%' + options: + excluded_exceptions: + - Symfony\Component\HttpKernel\Exception\NotFoundHttpException + - Symfony\Component\Security\Core\Exception\AccessDeniedException + +# If you are using Monolog, you also need these additional configuration and services to log the errors correctly: +# https://docs.sentry.io/platforms/php/guides/symfony/#monolog-integration +# register_error_listener: false + +# monolog: +# handlers: +# sentry: +# type: service +# id: Sentry\Monolog\Handler + +# services: +# Sentry\Monolog\Handler: +# arguments: +# $hub: '@Sentry\State\HubInterface' +# $level: !php/const Monolog\Logger::ERROR diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml new file mode 100644 index 000000000..b45c1cec7 --- /dev/null +++ b/config/packages/routing.yaml @@ -0,0 +1,7 @@ +framework: + router: + utf8: true + + # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. + # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands + #default_uri: http://localhost diff --git a/config/packages/scheb_2fa.yaml b/config/packages/scheb_2fa.yaml new file mode 100644 index 000000000..b9bb80958 --- /dev/null +++ b/config/packages/scheb_2fa.yaml @@ -0,0 +1,28 @@ +# See the configuration reference at https://symfony.com/bundles/SchebTwoFactorBundle/5.x/configuration.html +scheb_two_factor: + # security_tokens: + # - Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken + # If you're using guard-based authentication, you have to use this one: + # - Symfony\Component\Security\Guard\Token\PostAuthenticationGuardToken + # If you're using authenticator-based security (introduced in Symfony 5.1), you have to use this one: + # - Symfony\Component\Security\Http\Authenticator\Token\PostAuthenticationToken + + trusted_device: + enabled: true + cookie_name: wllbg_trusted_computer + lifetime: 2592000 + + backup_codes: + enabled: "%env(TWOFACTOR_AUTH)%" + + google: + enabled: "%env(TWOFACTOR_AUTH)%" + issuer: "%env(SERVER_NAME)%" + template: "Authentication/form.html.twig" + + email: + enabled: "%env(TWOFACTOR_AUTH)%" + sender_email: "%env(TWOFACTOR_SENDER)%" + digits: 6 + template: "Authentication/form.html.twig" + mailer: App\Mailer\AuthCodeMailer diff --git a/app/config/security.yml b/config/packages/security.yaml similarity index 97% rename from app/config/security.yml rename to config/packages/security.yaml index 9ab516215..ac2640422 100644 --- a/app/config/security.yml +++ b/config/packages/security.yaml @@ -9,7 +9,7 @@ security: providers: administrators: entity: - class: 'Wallabag\UserBundle\Entity\User' + class: 'App\Entity\User' property: username fos_userbundle: id: fos_user.user_provider.username_email @@ -45,7 +45,7 @@ security: anonymous: true remember_me: - secret: "%secret%" + secret: "%env(APP_SECRET)%" lifetime: 31536000 path: / domain: ~ diff --git a/config/packages/sensio_framework_extra.yaml b/config/packages/sensio_framework_extra.yaml new file mode 100644 index 000000000..84334642f --- /dev/null +++ b/config/packages/sensio_framework_extra.yaml @@ -0,0 +1,4 @@ +# see https://github.com/symfony/symfony-standard/pull/1133 +sensio_framework_extra: + router: + annotations: false diff --git a/config/packages/stof_doctrine_extensions.yaml b/config/packages/stof_doctrine_extensions.yaml new file mode 100644 index 000000000..f13e9a4ac --- /dev/null +++ b/config/packages/stof_doctrine_extensions.yaml @@ -0,0 +1,9 @@ +# Read the documentation: https://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle/index.html +# See the official DoctrineExtensions documentation for more details: https://github.com/doctrine-extensions/DoctrineExtensions/tree/main/doc +stof_doctrine_extensions: + default_locale: "%env(LOCALE)%" + translation_fallback: true + orm: + default: + tree: true + sluggable: true diff --git a/config/packages/test/dama_doctrine_test_bundle.yaml b/config/packages/test/dama_doctrine_test_bundle.yaml new file mode 100644 index 000000000..80b009117 --- /dev/null +++ b/config/packages/test/dama_doctrine_test_bundle.yaml @@ -0,0 +1,4 @@ +dama_doctrine_test: + enable_static_connection: true + enable_static_meta_data_cache: true + enable_static_query_cache: true diff --git a/config/packages/test/doctrine.yaml b/config/packages/test/doctrine.yaml new file mode 100644 index 000000000..4f706dc11 --- /dev/null +++ b/config/packages/test/doctrine.yaml @@ -0,0 +1,8 @@ +doctrine: + orm: + metadata_cache_driver: + type: service + id: filesystem_cache + query_cache_driver: + type: service + id: filesystem_cache diff --git a/config/packages/test/framework.yaml b/config/packages/test/framework.yaml new file mode 100644 index 000000000..6e03815e0 --- /dev/null +++ b/config/packages/test/framework.yaml @@ -0,0 +1,10 @@ +framework: + test: ~ + session: + storage_id: session.storage.mock_file + profiler: + collect: false + translator: + enabled: false + mailer: + dsn: 'null://null' diff --git a/config/packages/test/monolog.yaml b/config/packages/test/monolog.yaml new file mode 100644 index 000000000..fc40641dc --- /dev/null +++ b/config/packages/test/monolog.yaml @@ -0,0 +1,12 @@ +monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + channels: ["!event"] + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug diff --git a/config/packages/test/twig.yaml b/config/packages/test/twig.yaml new file mode 100644 index 000000000..8c6e0b401 --- /dev/null +++ b/config/packages/test/twig.yaml @@ -0,0 +1,2 @@ +twig: + strict_variables: true diff --git a/config/packages/test/validator.yaml b/config/packages/test/validator.yaml new file mode 100644 index 000000000..1e5ab7880 --- /dev/null +++ b/config/packages/test/validator.yaml @@ -0,0 +1,3 @@ +framework: + validation: + not_compromised_password: false diff --git a/config/packages/test/web_profiler.yaml b/config/packages/test/web_profiler.yaml new file mode 100644 index 000000000..03752de21 --- /dev/null +++ b/config/packages/test/web_profiler.yaml @@ -0,0 +1,6 @@ +web_profiler: + toolbar: false + intercept_redirects: false + +framework: + profiler: { collect: false } diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml new file mode 100644 index 000000000..05a2b3d82 --- /dev/null +++ b/config/packages/translation.yaml @@ -0,0 +1,6 @@ +framework: + default_locale: en + translator: + default_path: '%kernel.project_dir%/translations' + fallbacks: + - en diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml new file mode 100644 index 000000000..55c391311 --- /dev/null +++ b/config/packages/twig.yaml @@ -0,0 +1,14 @@ +# twig: +# default_path: '%kernel.project_dir%/templates' +# debug: '%kernel.debug%' +# strict_variables: '%kernel.debug%' +# exception_controller: null + +twig: + debug: "%kernel.debug%" + strict_variables: "%kernel.debug%" + form_themes: + - "@LexikFormFilter/Form/form_div_layout.html.twig" + exception_controller: App\Controller\ExceptionController:showAction + globals: + registration_enabled: '%env(bool:FOSUSER_REGISTRATION)%' diff --git a/config/packages/validator.yaml b/config/packages/validator.yaml new file mode 100644 index 000000000..350786a13 --- /dev/null +++ b/config/packages/validator.yaml @@ -0,0 +1,8 @@ +framework: + validation: + email_validation_mode: html5 + + # Enables validator auto-mapping support. + # For instance, basic validation constraints will be inferred from Doctrine's metadata. + #auto_mapping: + # App\Entity\: [] diff --git a/config/preload.php b/config/preload.php new file mode 100644 index 000000000..d7e9b316e --- /dev/null +++ b/config/preload.php @@ -0,0 +1,9 @@ +container->getParameter('wallabag_core.default_ignore_origin_instance_rules') as $entity) { + foreach ($this->container->getParameter('wallabag.default_ignore_origin_instance_rules') as $entity) { $previous_rule = $this->container ->get('doctrine.orm.default_entity_manager') ->getConnection() diff --git a/app/DoctrineMigrations/Version20200414120227.php b/migrations/Version20200414120227.php similarity index 84% rename from app/DoctrineMigrations/Version20200414120227.php rename to migrations/Version20200414120227.php index a24ce45ee..9b26886fa 100644 --- a/app/DoctrineMigrations/Version20200414120227.php +++ b/migrations/Version20200414120227.php @@ -1,10 +1,10 @@ @@ -15,8 +15,29 @@ - + + + + + + + + + + + + + + + + + + + + + + @@ -24,9 +45,7 @@ src vendor - src/Wallabag/*Bundle/Resources - src/Wallabag/*Bundle/Tests - src/Wallabag/*Bundle/DataFixtures + src/DataFixtures @@ -34,4 +53,7 @@ + + + diff --git a/web/.htaccess b/public/.htaccess similarity index 100% rename from web/.htaccess rename to public/.htaccess diff --git a/var/logs/.gitkeep b/public/assets/images/.gitkeep similarity index 100% rename from var/logs/.gitkeep rename to public/assets/images/.gitkeep diff --git a/web/favicon.ico b/public/favicon.ico similarity index 100% rename from web/favicon.ico rename to public/favicon.ico diff --git a/web/img/appicon/apple-touch-icon-114.png b/public/img/appicon/apple-touch-icon-114.png similarity index 100% rename from web/img/appicon/apple-touch-icon-114.png rename to public/img/appicon/apple-touch-icon-114.png diff --git a/web/img/appicon/apple-touch-icon-120.png b/public/img/appicon/apple-touch-icon-120.png similarity index 100% rename from web/img/appicon/apple-touch-icon-120.png rename to public/img/appicon/apple-touch-icon-120.png diff --git a/web/img/appicon/apple-touch-icon-144.png b/public/img/appicon/apple-touch-icon-144.png similarity index 100% rename from web/img/appicon/apple-touch-icon-144.png rename to public/img/appicon/apple-touch-icon-144.png diff --git a/web/img/appicon/apple-touch-icon-152.png b/public/img/appicon/apple-touch-icon-152.png similarity index 100% rename from web/img/appicon/apple-touch-icon-152.png rename to public/img/appicon/apple-touch-icon-152.png diff --git a/web/img/appicon/apple-touch-icon-512.png b/public/img/appicon/apple-touch-icon-512.png similarity index 100% rename from web/img/appicon/apple-touch-icon-512.png rename to public/img/appicon/apple-touch-icon-512.png diff --git a/web/img/appicon/apple-touch-icon-57.png b/public/img/appicon/apple-touch-icon-57.png similarity index 100% rename from web/img/appicon/apple-touch-icon-57.png rename to public/img/appicon/apple-touch-icon-57.png diff --git a/web/img/appicon/apple-touch-icon-72.png b/public/img/appicon/apple-touch-icon-72.png similarity index 100% rename from web/img/appicon/apple-touch-icon-72.png rename to public/img/appicon/apple-touch-icon-72.png diff --git a/web/img/appicon/apple-touch-icon-76.png b/public/img/appicon/apple-touch-icon-76.png similarity index 100% rename from web/img/appicon/apple-touch-icon-76.png rename to public/img/appicon/apple-touch-icon-76.png diff --git a/web/img/appicon/apple-touch-icon.png b/public/img/appicon/apple-touch-icon.png similarity index 100% rename from web/img/appicon/apple-touch-icon.png rename to public/img/appicon/apple-touch-icon.png diff --git a/web/img/logo-square.svg b/public/img/logo-square.svg similarity index 100% rename from web/img/logo-square.svg rename to public/img/logo-square.svg diff --git a/web/img/logo-w.png b/public/img/logo-w.png similarity index 100% rename from web/img/logo-w.png rename to public/img/logo-w.png diff --git a/web/img/logo-wallabag.svg b/public/img/logo-wallabag.svg similarity index 100% rename from web/img/logo-wallabag.svg rename to public/img/logo-wallabag.svg diff --git a/public/index.php b/public/index.php new file mode 100644 index 000000000..61652d4b2 --- /dev/null +++ b/public/index.php @@ -0,0 +1,27 @@ +handle($request); +$response->send(); +$kernel->terminate($request, $response); diff --git a/web/js/fos_js_routes.js b/public/js/fos_js_routes.js similarity index 100% rename from web/js/fos_js_routes.js rename to public/js/fos_js_routes.js diff --git a/web/manifest.json b/public/manifest.json similarity index 100% rename from web/manifest.json rename to public/manifest.json diff --git a/web/robots.txt b/public/robots.txt similarity index 100% rename from web/robots.txt rename to public/robots.txt diff --git a/web/wallassets/themes/_global/img/icons/diaspora-icon--black.png b/public/wallassets/assets/themes/_global/img/icons/diaspora-icon--black.png similarity index 100% rename from web/wallassets/themes/_global/img/icons/diaspora-icon--black.png rename to public/wallassets/assets/themes/_global/img/icons/diaspora-icon--black.png diff --git a/web/wallassets/themes/_global/img/icons/scuttle.png b/public/wallassets/assets/themes/_global/img/icons/scuttle.png similarity index 100% rename from web/wallassets/themes/_global/img/icons/scuttle.png rename to public/wallassets/assets/themes/_global/img/icons/scuttle.png diff --git a/web/wallassets/themes/_global/img/icons/shaarli.png b/public/wallassets/assets/themes/_global/img/icons/shaarli.png similarity index 100% rename from web/wallassets/themes/_global/img/icons/shaarli.png rename to public/wallassets/assets/themes/_global/img/icons/shaarli.png diff --git a/web/wallassets/themes/_global/img/icons/unmark-icon--black.png b/public/wallassets/assets/themes/_global/img/icons/unmark-icon--black.png similarity index 100% rename from web/wallassets/themes/_global/img/icons/unmark-icon--black.png rename to public/wallassets/assets/themes/_global/img/icons/unmark-icon--black.png diff --git a/web/wallassets/fonts/IcoMoon-Free.ttf b/public/wallassets/fonts/IcoMoon-Free.ttf similarity index 100% rename from web/wallassets/fonts/IcoMoon-Free.ttf rename to public/wallassets/fonts/IcoMoon-Free.ttf diff --git a/web/wallassets/fonts/MaterialIcons-Regular.eot b/public/wallassets/fonts/MaterialIcons-Regular.eot similarity index 100% rename from web/wallassets/fonts/MaterialIcons-Regular.eot rename to public/wallassets/fonts/MaterialIcons-Regular.eot diff --git a/web/wallassets/fonts/MaterialIcons-Regular.ttf b/public/wallassets/fonts/MaterialIcons-Regular.ttf similarity index 100% rename from web/wallassets/fonts/MaterialIcons-Regular.ttf rename to public/wallassets/fonts/MaterialIcons-Regular.ttf diff --git a/web/wallassets/fonts/MaterialIcons-Regular.woff b/public/wallassets/fonts/MaterialIcons-Regular.woff similarity index 100% rename from web/wallassets/fonts/MaterialIcons-Regular.woff rename to public/wallassets/fonts/MaterialIcons-Regular.woff diff --git a/web/wallassets/fonts/MaterialIcons-Regular.woff2 b/public/wallassets/fonts/MaterialIcons-Regular.woff2 similarity index 100% rename from web/wallassets/fonts/MaterialIcons-Regular.woff2 rename to public/wallassets/fonts/MaterialIcons-Regular.woff2 diff --git a/web/wallassets/fonts/Roboto-Bold.woff b/public/wallassets/fonts/Roboto-Bold.woff similarity index 100% rename from web/wallassets/fonts/Roboto-Bold.woff rename to public/wallassets/fonts/Roboto-Bold.woff diff --git a/web/wallassets/fonts/Roboto-Bold.woff2 b/public/wallassets/fonts/Roboto-Bold.woff2 similarity index 100% rename from web/wallassets/fonts/Roboto-Bold.woff2 rename to public/wallassets/fonts/Roboto-Bold.woff2 diff --git a/web/wallassets/fonts/Roboto-Light.woff b/public/wallassets/fonts/Roboto-Light.woff similarity index 100% rename from web/wallassets/fonts/Roboto-Light.woff rename to public/wallassets/fonts/Roboto-Light.woff diff --git a/web/wallassets/fonts/Roboto-Light.woff2 b/public/wallassets/fonts/Roboto-Light.woff2 similarity index 100% rename from web/wallassets/fonts/Roboto-Light.woff2 rename to public/wallassets/fonts/Roboto-Light.woff2 diff --git a/web/wallassets/fonts/Roboto-Medium.woff b/public/wallassets/fonts/Roboto-Medium.woff similarity index 100% rename from web/wallassets/fonts/Roboto-Medium.woff rename to public/wallassets/fonts/Roboto-Medium.woff diff --git a/web/wallassets/fonts/Roboto-Medium.woff2 b/public/wallassets/fonts/Roboto-Medium.woff2 similarity index 100% rename from web/wallassets/fonts/Roboto-Medium.woff2 rename to public/wallassets/fonts/Roboto-Medium.woff2 diff --git a/web/wallassets/fonts/Roboto-Regular.woff b/public/wallassets/fonts/Roboto-Regular.woff similarity index 100% rename from web/wallassets/fonts/Roboto-Regular.woff rename to public/wallassets/fonts/Roboto-Regular.woff diff --git a/web/wallassets/fonts/Roboto-Regular.woff2 b/public/wallassets/fonts/Roboto-Regular.woff2 similarity index 100% rename from web/wallassets/fonts/Roboto-Regular.woff2 rename to public/wallassets/fonts/Roboto-Regular.woff2 diff --git a/web/wallassets/fonts/Roboto-Thin.woff b/public/wallassets/fonts/Roboto-Thin.woff similarity index 100% rename from web/wallassets/fonts/Roboto-Thin.woff rename to public/wallassets/fonts/Roboto-Thin.woff diff --git a/web/wallassets/fonts/Roboto-Thin.woff2 b/public/wallassets/fonts/Roboto-Thin.woff2 similarity index 100% rename from web/wallassets/fonts/Roboto-Thin.woff2 rename to public/wallassets/fonts/Roboto-Thin.woff2 diff --git a/web/wallassets/fonts/lato-black-italic.woff b/public/wallassets/fonts/lato-black-italic.woff similarity index 100% rename from web/wallassets/fonts/lato-black-italic.woff rename to public/wallassets/fonts/lato-black-italic.woff diff --git a/web/wallassets/fonts/lato-black-italic.woff2 b/public/wallassets/fonts/lato-black-italic.woff2 similarity index 100% rename from web/wallassets/fonts/lato-black-italic.woff2 rename to public/wallassets/fonts/lato-black-italic.woff2 diff --git a/web/wallassets/fonts/lato-black.woff b/public/wallassets/fonts/lato-black.woff similarity index 100% rename from web/wallassets/fonts/lato-black.woff rename to public/wallassets/fonts/lato-black.woff diff --git a/web/wallassets/fonts/lato-black.woff2 b/public/wallassets/fonts/lato-black.woff2 similarity index 100% rename from web/wallassets/fonts/lato-black.woff2 rename to public/wallassets/fonts/lato-black.woff2 diff --git a/web/wallassets/fonts/lato-bold-italic.woff b/public/wallassets/fonts/lato-bold-italic.woff similarity index 100% rename from web/wallassets/fonts/lato-bold-italic.woff rename to public/wallassets/fonts/lato-bold-italic.woff diff --git a/web/wallassets/fonts/lato-bold-italic.woff2 b/public/wallassets/fonts/lato-bold-italic.woff2 similarity index 100% rename from web/wallassets/fonts/lato-bold-italic.woff2 rename to public/wallassets/fonts/lato-bold-italic.woff2 diff --git a/web/wallassets/fonts/lato-bold.woff b/public/wallassets/fonts/lato-bold.woff similarity index 100% rename from web/wallassets/fonts/lato-bold.woff rename to public/wallassets/fonts/lato-bold.woff diff --git a/web/wallassets/fonts/lato-bold.woff2 b/public/wallassets/fonts/lato-bold.woff2 similarity index 100% rename from web/wallassets/fonts/lato-bold.woff2 rename to public/wallassets/fonts/lato-bold.woff2 diff --git a/web/wallassets/fonts/lato-hairline-italic.woff b/public/wallassets/fonts/lato-hairline-italic.woff similarity index 100% rename from web/wallassets/fonts/lato-hairline-italic.woff rename to public/wallassets/fonts/lato-hairline-italic.woff diff --git a/web/wallassets/fonts/lato-hairline-italic.woff2 b/public/wallassets/fonts/lato-hairline-italic.woff2 similarity index 100% rename from web/wallassets/fonts/lato-hairline-italic.woff2 rename to public/wallassets/fonts/lato-hairline-italic.woff2 diff --git a/web/wallassets/fonts/lato-hairline.woff b/public/wallassets/fonts/lato-hairline.woff similarity index 100% rename from web/wallassets/fonts/lato-hairline.woff rename to public/wallassets/fonts/lato-hairline.woff diff --git a/web/wallassets/fonts/lato-hairline.woff2 b/public/wallassets/fonts/lato-hairline.woff2 similarity index 100% rename from web/wallassets/fonts/lato-hairline.woff2 rename to public/wallassets/fonts/lato-hairline.woff2 diff --git a/web/wallassets/fonts/lato-heavy-italic.woff b/public/wallassets/fonts/lato-heavy-italic.woff similarity index 100% rename from web/wallassets/fonts/lato-heavy-italic.woff rename to public/wallassets/fonts/lato-heavy-italic.woff diff --git a/web/wallassets/fonts/lato-heavy-italic.woff2 b/public/wallassets/fonts/lato-heavy-italic.woff2 similarity index 100% rename from web/wallassets/fonts/lato-heavy-italic.woff2 rename to public/wallassets/fonts/lato-heavy-italic.woff2 diff --git a/web/wallassets/fonts/lato-heavy.woff b/public/wallassets/fonts/lato-heavy.woff similarity index 100% rename from web/wallassets/fonts/lato-heavy.woff rename to public/wallassets/fonts/lato-heavy.woff diff --git a/web/wallassets/fonts/lato-heavy.woff2 b/public/wallassets/fonts/lato-heavy.woff2 similarity index 100% rename from web/wallassets/fonts/lato-heavy.woff2 rename to public/wallassets/fonts/lato-heavy.woff2 diff --git a/web/wallassets/fonts/lato-light-italic.woff b/public/wallassets/fonts/lato-light-italic.woff similarity index 100% rename from web/wallassets/fonts/lato-light-italic.woff rename to public/wallassets/fonts/lato-light-italic.woff diff --git a/web/wallassets/fonts/lato-light-italic.woff2 b/public/wallassets/fonts/lato-light-italic.woff2 similarity index 100% rename from web/wallassets/fonts/lato-light-italic.woff2 rename to public/wallassets/fonts/lato-light-italic.woff2 diff --git a/web/wallassets/fonts/lato-light.woff b/public/wallassets/fonts/lato-light.woff similarity index 100% rename from web/wallassets/fonts/lato-light.woff rename to public/wallassets/fonts/lato-light.woff diff --git a/web/wallassets/fonts/lato-light.woff2 b/public/wallassets/fonts/lato-light.woff2 similarity index 100% rename from web/wallassets/fonts/lato-light.woff2 rename to public/wallassets/fonts/lato-light.woff2 diff --git a/web/wallassets/fonts/lato-medium-italic.woff b/public/wallassets/fonts/lato-medium-italic.woff similarity index 100% rename from web/wallassets/fonts/lato-medium-italic.woff rename to public/wallassets/fonts/lato-medium-italic.woff diff --git a/web/wallassets/fonts/lato-medium-italic.woff2 b/public/wallassets/fonts/lato-medium-italic.woff2 similarity index 100% rename from web/wallassets/fonts/lato-medium-italic.woff2 rename to public/wallassets/fonts/lato-medium-italic.woff2 diff --git a/web/wallassets/fonts/lato-medium.woff b/public/wallassets/fonts/lato-medium.woff similarity index 100% rename from web/wallassets/fonts/lato-medium.woff rename to public/wallassets/fonts/lato-medium.woff diff --git a/web/wallassets/fonts/lato-medium.woff2 b/public/wallassets/fonts/lato-medium.woff2 similarity index 100% rename from web/wallassets/fonts/lato-medium.woff2 rename to public/wallassets/fonts/lato-medium.woff2 diff --git a/web/wallassets/fonts/lato-normal-italic.woff b/public/wallassets/fonts/lato-normal-italic.woff similarity index 100% rename from web/wallassets/fonts/lato-normal-italic.woff rename to public/wallassets/fonts/lato-normal-italic.woff diff --git a/web/wallassets/fonts/lato-normal-italic.woff2 b/public/wallassets/fonts/lato-normal-italic.woff2 similarity index 100% rename from web/wallassets/fonts/lato-normal-italic.woff2 rename to public/wallassets/fonts/lato-normal-italic.woff2 diff --git a/web/wallassets/fonts/lato-normal.woff b/public/wallassets/fonts/lato-normal.woff similarity index 100% rename from web/wallassets/fonts/lato-normal.woff rename to public/wallassets/fonts/lato-normal.woff diff --git a/web/wallassets/fonts/lato-normal.woff2 b/public/wallassets/fonts/lato-normal.woff2 similarity index 100% rename from web/wallassets/fonts/lato-normal.woff2 rename to public/wallassets/fonts/lato-normal.woff2 diff --git a/web/wallassets/fonts/lato-semibold-italic.woff b/public/wallassets/fonts/lato-semibold-italic.woff similarity index 100% rename from web/wallassets/fonts/lato-semibold-italic.woff rename to public/wallassets/fonts/lato-semibold-italic.woff diff --git a/web/wallassets/fonts/lato-semibold-italic.woff2 b/public/wallassets/fonts/lato-semibold-italic.woff2 similarity index 100% rename from web/wallassets/fonts/lato-semibold-italic.woff2 rename to public/wallassets/fonts/lato-semibold-italic.woff2 diff --git a/web/wallassets/fonts/lato-semibold.woff b/public/wallassets/fonts/lato-semibold.woff similarity index 100% rename from web/wallassets/fonts/lato-semibold.woff rename to public/wallassets/fonts/lato-semibold.woff diff --git a/web/wallassets/fonts/lato-semibold.woff2 b/public/wallassets/fonts/lato-semibold.woff2 similarity index 100% rename from web/wallassets/fonts/lato-semibold.woff2 rename to public/wallassets/fonts/lato-semibold.woff2 diff --git a/web/wallassets/fonts/lato-thin-italic.woff b/public/wallassets/fonts/lato-thin-italic.woff similarity index 100% rename from web/wallassets/fonts/lato-thin-italic.woff rename to public/wallassets/fonts/lato-thin-italic.woff diff --git a/web/wallassets/fonts/lato-thin-italic.woff2 b/public/wallassets/fonts/lato-thin-italic.woff2 similarity index 100% rename from web/wallassets/fonts/lato-thin-italic.woff2 rename to public/wallassets/fonts/lato-thin-italic.woff2 diff --git a/web/wallassets/fonts/lato-thin.woff b/public/wallassets/fonts/lato-thin.woff similarity index 100% rename from web/wallassets/fonts/lato-thin.woff rename to public/wallassets/fonts/lato-thin.woff diff --git a/web/wallassets/fonts/lato-thin.woff2 b/public/wallassets/fonts/lato-thin.woff2 similarity index 100% rename from web/wallassets/fonts/lato-thin.woff2 rename to public/wallassets/fonts/lato-thin.woff2 diff --git a/web/wallassets/img/annotator-glyph-sprite.png b/public/wallassets/img/annotator-glyph-sprite.png similarity index 100% rename from web/wallassets/img/annotator-glyph-sprite.png rename to public/wallassets/img/annotator-glyph-sprite.png diff --git a/web/wallassets/img/annotator-icon-sprite.png b/public/wallassets/img/annotator-icon-sprite.png similarity index 100% rename from web/wallassets/img/annotator-icon-sprite.png rename to public/wallassets/img/annotator-icon-sprite.png diff --git a/web/wallassets/manifest.json b/public/wallassets/manifest.json similarity index 88% rename from web/wallassets/manifest.json rename to public/wallassets/manifest.json index 5954415df..86b0dcaf1 100644 --- a/web/wallassets/manifest.json +++ b/public/wallassets/manifest.json @@ -1,4 +1,8 @@ { + "assets/themes/_global/img/icons/diaspora-icon--black.png": "assets/themes/_global/img/icons/diaspora-icon--black.png", + "assets/themes/_global/img/icons/scuttle.png": "assets/themes/_global/img/icons/scuttle.png", + "assets/themes/_global/img/icons/shaarli.png": "assets/themes/_global/img/icons/shaarli.png", + "assets/themes/_global/img/icons/unmark-icon--black.png": "assets/themes/_global/img/icons/unmark-icon--black.png", "fonts/IcoMoon-Free.ttf": "fonts/IcoMoon-Free.ttf", "fonts/lato-black-italic.woff": "fonts/lato-black-italic.woff", "fonts/lato-black-italic.woff2": "fonts/lato-black-italic.woff2", @@ -58,9 +62,5 @@ "material.js.map": "material.js.map", "public.css": "public.css", "public.css.map": "public.css.map", - "public.js": "public.js", - "themes/_global/img/icons/diaspora-icon--black.png": "themes/_global/img/icons/diaspora-icon--black.png", - "themes/_global/img/icons/scuttle.png": "themes/_global/img/icons/scuttle.png", - "themes/_global/img/icons/shaarli.png": "themes/_global/img/icons/shaarli.png", - "themes/_global/img/icons/unmark-icon--black.png": "themes/_global/img/icons/unmark-icon--black.png" + "public.js": "public.js" } \ No newline at end of file diff --git a/web/wallassets/material.css b/public/wallassets/material.css similarity index 100% rename from web/wallassets/material.css rename to public/wallassets/material.css diff --git a/public/wallassets/material.css.map b/public/wallassets/material.css.map new file mode 100644 index 000000000..a8e9e59b5 --- /dev/null +++ b/public/wallassets/material.css.map @@ -0,0 +1 @@ +{"version":3,"file":"material.css","mappings":"AAAA;;;;EAAA,CAKA,iBACE,oCAGF,sBACE,yBAGF,2BACE,oCAGF,qCACE,yBAGF,2BACE,oCAGF,qCACE,yBAGF,2BACE,oCAGF,qCACE,yBAGF,2BACE,oCAGF,qCACE,yBAGF,2BACE,oCAGF,qCACE,yBAGF,0BACE,oCAGF,oCACE,yBAGF,0BACE,oCAGF,oCACE,yBAGF,0BACE,oCAGF,oCACE,yBAGF,0BACE,oCAGF,oCACE,yBAGF,KACE,oCAGF,UACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,cACE,oCAGF,wBACE,yBAGF,cACE,oCAGF,wBACE,yBAGF,cACE,oCAGF,wBACE,yBAGF,cACE,oCAGF,wBACE,yBAGF,cACE,oCAGF,wBACE,yBAGF,cACE,oCAGF,wBACE,yBAGF,cACE,oCAGF,wBACE,yBAGF,cACE,oCAGF,wBACE,yBAGF,MACE,oCAGF,WACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,QACE,oCAGF,aACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,iCAGF,2BACE,sBAGF,aACE,oCAGF,kBACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,QACE,oCAGF,aACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,MACE,oCAGF,WACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,YACE,oCAGF,iBACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,MACE,oCAGF,WACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,MACE,oCAGF,WACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,OACE,oCAGF,YACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,aACE,oCAGF,kBACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,MACE,oCAGF,WACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,QACE,oCAGF,aACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,iCAGF,2BACE,sBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,OACE,oCAGF,YACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,QACE,oCAGF,aACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,kBACE,oCAGF,4BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,aACE,oCAGF,kBACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,uBACE,oCAGF,iCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,sBACE,oCAGF,gCACE,yBAGF,OACE,oCAGF,YACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,iBACE,oCAGF,2BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,WACE,oCAGF,gBACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,qBACE,oCAGF,+BACE,yBAGF,oBACE,oCAGF,8BACE,yBAGF,oBACE,oCAGF,8BACE,yBAGF,oBACE,oCAGF,8BACE,yBAGF,oBACE,oCAGF,8BACE,yBAGF,MACE,oCAGF,WACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,iCAGF,0BACE,sBAGF,gBACE,oCAGF,0BACE,yBAGF,gBACE,oCAGF,0BACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,eACE,oCAGF,yBACE,yBAGF,OACE,iCAGF,YACE,sBAGF,OACE,iCAGF,YACE,sBAGF,aACE,0CAGF,kBACE,+BAGF,4EAMA,KACE,uBAEA,0BAEA,8BAOF,KACE,SAWF,2FAaE,cAOF,4BAIE,qBAEA,wBAQF,sBACE,aACA,SAOF,kBAEE,aAQF,EACE,+BAOF,iBAEE,UAQF,YACE,yBAMF,SAEE,iBAMF,IACE,kBAOF,GACE,cACA,eAMF,KACE,gBACA,WAMF,MACE,cAMF,QAEE,cACA,cACA,kBACA,wBAGF,IACE,WAGF,IACE,eAQF,IACE,SAMF,eACE,gBAQF,OACE,gBAMF,GACE,uBACA,SAMF,IACE,cAMF,kBAIE,gCACA,cAeF,sCAKE,cAEA,aAEA,SAOF,OACE,iBASF,cAEE,oBAUF,oEAIE,0BAEA,eAOF,sCAEE,eAMF,iDAEE,SACA,UAOF,MACE,mBAUF,uCAEE,sBAEA,UASF,4FAEE,YAOF,mBACE,6BAEA,uBASF,+FAEE,wBAMF,SACE,wBACA,aACA,2BAOF,OACE,SAEA,UAOF,SACE,cAOF,SACE,iBAQF,MACE,yBACA,iBAGF,MAEE,UAGF,KACE,sBAGF,mBACE,mBAGF,yBACE,eACA,qBAGF,4BACE,qBAGF,EACE,cACA,qBACA,0CAGF,gBAGE,aAGQ,mBAGV,UACE,WAGF,WACE,2BAGF,+GACE,iGAGF,gEACE,iGAGF,WACE,kGAGF,WACE,mGAGF,kBACE,uGAGF,WACE,yGAGF,WACE,2BACA,aAGF,iBACE,2BACA,oEAGF,SACE,WACA,gBACA,yBAGF,WACE,cACA,oBACA,8BAGF,EACE,oBAGF,OACE,WACA,kBAGF,QACE,YACA,iBAGF,OACE,eAGF,QACE,eAGF,SACE,eAGF,QACE,eAGF,0CAEE,eACA,YAGF,eACE,qBACA,kBACA,kBACA,mBACA,YAGF,iBACE,WACA,qBACA,iBACA,eACA,iBAGF,wBACE,WAGF,sBACE,yBAGF,0BACE,eACA,WAGF,iBACE,eAGF,2BACE,qBACA,WAGF,0CACE,YACE,WAEF,wCAEE,UAEF,qBACE,UACA,gBACA,oBAIJ,YACE,eACA,2BAGF,+FAGE,qBACA,WACA,eAGF,mBACE,YACA,2BACA,mBACA,qBACA,6BACA,mBACA,kBACA,eACA,oBACA,mCAGF,+BACE,aAGF,uBACE,WAGF,oBACE,kBACA,gBACA,aAGF,UACE,kBACA,MACA,OACA,QACA,SACA,WAGF,cACE,aACA,kBACA,SACA,SACA,eACA,gBAEA,+BAEQ,2BAGV,qBACE,kBAGF,QACE,0BAMF,qBACE,UAGF,SACE,UAEQ,uBAMV,0CACE,4CACE,yBAIJ,0CACE,sBACE,yBAIJ,0CACE,oBACE,yBAIJ,gEACE,kBACE,yBAIJ,0CACE,oBACE,yBAIJ,0CACE,eACE,0BAIJ,gEACE,gBACE,0BAIJ,0CACE,eACE,0BAIJ,0CACE,uBACE,0BAIJ,0CACE,yBACE,0BAIJ,0CACE,sBACE,mBAIJ,aACE,iBACA,yBAGF,+BACE,gBACA,gBAGA,aAGQ,mBACR,iBACA,2BACA,oCAGF,YACE,YAGF,MACE,WACA,cAGF,gDAEE,gCAGF,sCACE,yBAGF,0BACE,gBAGF,yBACE,sCAGF,+BACE,yBAGF,sDACE,kBAGF,MACE,gCAGF,MACE,iBACA,mBACA,gBACA,sBACA,kBAGF,0CACE,uBACE,WACA,yBACA,iBACA,cACA,kBAGF,uCACE,YAEF,oDAEE,SACA,mBAEF,0BACE,gBAEF,6BACE,cACA,WAEF,gCACE,cACA,mBAEF,2CACE,YAEF,6BACE,cACA,WACA,kBACA,gBACA,mBAEF,gCACE,qBACA,mBAEF,0BACE,cACA,iBAEF,0BACE,cACA,kBACA,gBAEF,0BACE,eAEF,6BACE,SACA,+BAEF,mCACE,gBACA,cAEF,mCACE,cACA,eACA,gBAEF,mCACE,SAEF,yCACE,gCAIJ,YACE,sBACA,yBACA,kBACA,gBACA,kBAGF,6BACE,sBACA,mBACA,kBACA,SACA,gCAGF,oCACE,gBACA,kBACA,kBAGF,4CACE,kBACA,WACA,YACA,gBACA,UACA,qBACA,sBAGF,6CACE,eACA,iBACA,WACA,sBACA,kBAGF,2CACE,eAGF,sCACE,SAGF,uDACE,kBACA,SACA,WAGF,wCACE,mBAGF,oCACE,yBACA,cAGF,uDACE,WAGF,8BACE,cACA,gBACA,cAGF,iDACE,sBAGF,2CACE,sBACA,gCACA,kBAGF,yCACE,kBAGF,gDACE,kBAGF,mBACE,YACA,cAGF,yBACE,SACA,YAGF,iBACE,kBACA,sBACA,SACA,gBAGF,uEACE,kBACA,MACA,OACA,WACA,YAGF,UACE,kBACA,WACA,cACA,WACA,yBACA,kBACA,sBACA,gBAGF,uBACE,kBACA,MACA,OACA,SACA,yBACA,4BAGF,yBACE,yBAGF,gCACE,WACA,kBACA,yBACA,MACA,OACA,SACA,uBAEQ,8EAGV,+BACE,WACA,kBACA,yBACA,MACA,OACA,SACA,uBAEQ,+EAEA,sBAkBV,yBACE,GACE,UACA,WAEF,IACE,UACA,WAEF,KACE,UACA,YAmBJ,+BACE,GACE,WACA,WAEF,IACE,UACA,UAEF,KACE,UACA,WAOJ,MACE,wBAGF,YACE,gBAGF,aACE,iBAGF,sBACE,kBAGF,MACE,sBAGF,OACE,uBAGF,sDAEE,2BACA,yBACA,sBAEA,iBAGF,QACE,kBAGF,cACE,cACA,iBACA,kBAGF,UACE,cACA,mBACA,gBACA,uBAGF,YACE,qBAGF,WACE,eACA,cACA,iBACA,kBACA,eACA,iBACA,YACA,cACA,YACA,sBAGF,eACE,gBACA,gBACA,WACA,yBACA,kBAGF,qBACE,eAGF,sCACE,qCAGF,oBACE,qBACA,WACA,gBACA,iBACA,YAGF,4BACE,+BAGF,wBACE,+BAGF,qBACE,gBAIF,gBACE,kCAGQ,6BAGV,WACE,cACA,iBACA,UAGF,0CACE,WACE,WAIJ,0CACE,WACE,WAIJ,gBACE,qBACA,sBAGF,SACE,iBACA,oBAGF,gBACE,UAGF,oBACE,iBAGF,oBACE,cAGF,KACE,iBACA,kBACA,mBAGF,WACE,WACA,cACA,WAGF,UACE,WACA,sBACA,iBACA,eAGF,gDACE,kBAGF,aACE,oBACA,iBACA,UACA,WAGF,aACE,qBACA,iBACA,UACA,WAGF,aACE,UACA,iBACA,UACA,WAGF,aACE,qBACA,iBACA,UACA,WAGF,aACE,qBACA,iBACA,UACA,WAGF,aACE,UACA,iBACA,UACA,WAGF,aACE,qBACA,iBACA,UACA,WAGF,aACE,qBACA,iBACA,UACA,WAGF,aACE,UACA,iBACA,UACA,WAGF,cACE,qBACA,iBACA,UACA,WAGF,cACE,qBACA,iBACA,UACA,WAGF,cACE,WACA,iBACA,UACA,WAGF,oBACE,0BAGF,kBACE,oBAGF,kBACE,mBAGF,oBACE,2BAGF,kBACE,qBAGF,kBACE,oBAGF,oBACE,gBAGF,kBACE,UAGF,kBACE,SAGF,oBACE,2BAGF,kBACE,qBAGF,kBACE,oBAGF,oBACE,2BAGF,kBACE,qBAGF,kBACE,oBAGF,oBACE,gBAGF,kBACE,UAGF,kBACE,SAGF,oBACE,2BAGF,kBACE,qBAGF,kBACE,oBAGF,oBACE,2BAGF,kBACE,qBAGF,kBACE,oBAGF,oBACE,gBAGF,kBACE,UAGF,kBACE,SAGF,qBACE,2BAGF,mBACE,qBAGF,mBACE,oBAGF,qBACE,2BAGF,mBACE,qBAGF,mBACE,oBAGF,qBACE,iBAGF,mBACE,WAGF,mBACE,UAGF,0CACE,aACE,oBACA,iBACA,UACA,WAEF,aACE,qBACA,iBACA,UACA,WAEF,aACE,UACA,iBACA,UACA,WAEF,aACE,qBACA,iBACA,UACA,WAEF,aACE,qBACA,iBACA,UACA,WAEF,aACE,UACA,iBACA,UACA,WAEF,aACE,qBACA,iBACA,UACA,WAEF,aACE,qBACA,iBACA,UACA,WAEF,aACE,UACA,iBACA,UACA,WAEF,cACE,qBACA,iBACA,UACA,WAEF,cACE,qBACA,iBACA,UACA,WAEF,cACE,WACA,iBACA,UACA,WAEF,oBACE,0BAEF,kBACE,oBAEF,kBACE,mBAEF,oBACE,2BAEF,kBACE,qBAEF,kBACE,oBAEF,oBACE,gBAEF,kBACE,UAEF,kBACE,SAEF,oBACE,2BAEF,kBACE,qBAEF,kBACE,oBAEF,oBACE,2BAEF,kBACE,qBAEF,kBACE,oBAEF,oBACE,gBAEF,kBACE,UAEF,kBACE,SAEF,oBACE,2BAEF,kBACE,qBAEF,kBACE,oBAEF,oBACE,2BAEF,kBACE,qBAEF,kBACE,oBAEF,oBACE,gBAEF,kBACE,UAEF,kBACE,SAEF,qBACE,2BAEF,mBACE,qBAEF,mBACE,oBAEF,qBACE,2BAEF,mBACE,qBAEF,mBACE,oBAEF,qBACE,iBAEF,mBACE,WAEF,mBACE,WAIJ,0CACE,aACE,oBACA,iBACA,UACA,WAEF,aACE,qBACA,iBACA,UACA,WAEF,aACE,UACA,iBACA,UACA,WAEF,aACE,qBACA,iBACA,UACA,WAEF,aACE,qBACA,iBACA,UACA,WAEF,aACE,UACA,iBACA,UACA,WAEF,aACE,qBACA,iBACA,UACA,WAEF,aACE,qBACA,iBACA,UACA,WAEF,aACE,UACA,iBACA,UACA,WAEF,cACE,qBACA,iBACA,UACA,WAEF,cACE,qBACA,iBACA,UACA,WAEF,cACE,WACA,iBACA,UACA,WAEF,oBACE,0BAEF,kBACE,oBAEF,kBACE,mBAEF,oBACE,2BAEF,kBACE,qBAEF,kBACE,oBAEF,oBACE,gBAEF,kBACE,UAEF,kBACE,SAEF,oBACE,2BAEF,kBACE,qBAEF,kBACE,oBAEF,oBACE,2BAEF,kBACE,qBAEF,kBACE,oBAEF,oBACE,gBAEF,kBACE,UAEF,kBACE,SAEF,oBACE,2BAEF,kBACE,qBAEF,kBACE,oBAEF,oBACE,2BAEF,kBACE,qBAEF,kBACE,oBAEF,oBACE,gBAEF,kBACE,UAEF,kBACE,SAEF,qBACE,2BAEF,mBACE,qBAEF,mBACE,oBAEF,qBACE,2BAEF,mBACE,qBAEF,mBACE,oBAEF,qBACE,iBAEF,mBACE,WAEF,mBACE,WAIJ,2CACE,cACE,oBACA,iBACA,UACA,WAEF,cACE,qBACA,iBACA,UACA,WAEF,cACE,UACA,iBACA,UACA,WAEF,cACE,qBACA,iBACA,UACA,WAEF,cACE,qBACA,iBACA,UACA,WAEF,cACE,UACA,iBACA,UACA,WAEF,cACE,qBACA,iBACA,UACA,WAEF,cACE,qBACA,iBACA,UACA,WAEF,cACE,UACA,iBACA,UACA,WAEF,eACE,qBACA,iBACA,UACA,WAEF,eACE,qBACA,iBACA,UACA,WAEF,eACE,WACA,iBACA,UACA,WAEF,qBACE,0BAEF,mBACE,oBAEF,mBACE,mBAEF,qBACE,2BAEF,mBACE,qBAEF,mBACE,oBAEF,qBACE,gBAEF,mBACE,UAEF,mBACE,SAEF,qBACE,2BAEF,mBACE,qBAEF,mBACE,oBAEF,qBACE,2BAEF,mBACE,qBAEF,mBACE,oBAEF,qBACE,gBAEF,mBACE,UAEF,mBACE,SAEF,qBACE,2BAEF,mBACE,qBAEF,mBACE,oBAEF,qBACE,2BAEF,mBACE,qBAEF,mBACE,oBAEF,qBACE,gBAEF,mBACE,UAEF,mBACE,SAEF,sBACE,2BAEF,oBACE,qBAEF,oBACE,oBAEF,sBACE,2BAEF,oBACE,qBAEF,oBACE,oBAEF,sBACE,iBAEF,oBACE,WAEF,oBACE,WAIJ,IACE,WACA,yBACA,WACA,YACA,iBAGF,iBACE,YAGF,8BACE,gBACA,YAGF,8BACE,kBACA,mBAGF,MACE,WAGF,+DAGE,cACA,eACA,YACA,iBAGF,iBACE,kBACA,YAGF,0CACE,sBACE,cAIJ,qBACE,WACA,kBACA,UACA,YACA,cAGF,uBACE,YACA,iBAGF,gBACE,kBACA,WACA,qBACA,iBACA,UACA,mBAGF,uBACE,SAEQ,2BAGV,0CACE,gBACE,SAEQ,2BAEV,2CACE,UAEQ,eAEV,qBACE,WAEF,sBACE,YACA,WAIJ,sBACE,YACA,UAGF,+GAGE,WACA,kBAGF,eACE,qBACA,eACA,eAGF,OACE,SAGF,UACE,gCACA,WACA,UAGF,iBACE,gCAGF,SACE,gCACA,eACA,WACA,cACA,eACA,eAGF,2FACE,gBACA,iBACA,kBAGF,2KACE,eACA,oBAGF,eACE,gCAGF,YACE,WAGF,SACE,YAGF,iBACE,SACA,YAGF,uBACE,YACA,iBACA,YACA,kBAGF,yOACE,YACA,gBAGF,uBACE,MACA,OAGF,yBACE,2BACA,qBAGF,gCACE,WAGF,cACE,kBACA,YACA,YAGF,kBACE,eAGF,0CACE,8BACE,gBAEF,qEACE,YACA,iBAEF,cACE,aAIJ,WACE,qBACA,sIACA,gBAGF,WACE,qBACA,uIACA,gBAGF,WACE,qBACA,yIACA,gBAGF,WACE,qBACA,wIACA,gBAGF,WACE,qBACA,sIACA,gBAGF,EACE,qBAGF,KACE,gBACA,gCACA,mBACA,sBAGF,sCACE,KACE,gBAIJ,0CACE,KACE,kBAIJ,2CACE,KACE,gBAIJ,kBACE,gBACA,gBAGF,8BACE,oBAGF,GACE,iBACA,iBACA,0BAGF,GACE,kBACA,iBACA,4BAGF,GACE,kBACA,iBACA,4BAGF,GACE,kBACA,iBACA,2BAGF,GACE,kBACA,iBACA,0BAGF,GACE,eACA,iBACA,uBAGF,GACE,kBAGF,OACE,gBAGF,MACE,cAGF,sCACE,gBAGF,MACE,gBAGF,WACE,gBAGF,0CACE,WACE,kBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,mBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,mBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,mBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,oBAIJ,0CACE,WACE,mBAIJ,0CACE,WACE,kBAIJ,kBAEE,wEACA,CAGF,4BAEU,mBAER,mCACA,CAGF,2BAEU,mBAGV,YACE,2BACA,aACA,sBACA,kBACA,sBAGF,MACE,kBACA,sBACA,sBACA,2BACA,kBAGF,kBACE,eACA,gBAGF,4BACE,eAGF,qCACE,kBAGF,yEACE,eACA,gBAGF,mHACE,eAGF,+EACE,gBACA,gBAGF,4EACE,kBACA,SACA,OACA,QAGF,YACE,aAGF,aACE,aAGF,YACE,aAGF,iBAGE,aAGF,0GACE,YACA,gBACA,iBAGF,sHACE,YAGF,6BACE,cAGF,iCACE,0BACA,eACA,WAGF,+BAGE,aAGQ,sBAGA,OACR,kBAGF,6CAGU,YAGV,iCACE,UAGF,iCACE,UACA,oBAGF,kBACE,kBAGF,sBACE,cACA,0BACA,kBACA,OACA,QACA,MACA,SACA,WAGF,8BACE,WACA,kBACA,SACA,OACA,eACA,aAGF,oBACE,aACA,0BAGF,sBACE,SACA,cAGF,gCACE,cACA,iBACA,kBAGF,kCACE,iBAGF,mBACE,kBACA,yBACA,0CACA,kBAGF,8BACE,0BAGF,kFACE,cACA,kBACA,0BACA,yBAGF,wFACE,cAGF,mBACE,aACA,kBACA,sBACA,WACA,gBACA,OACA,SACA,YACA,UACA,aAGF,+BACE,eACA,cAGF,iBACE,cACA,eACA,cAGF,0CACE,iBACE,eACA,WAIJ,gEACE,iBACE,QACA,UACA,eAIJ,0CACE,iBACE,QACA,SACA,eAIJ,OACE,kBACA,SACA,WACA,WACA,gBACA,kBACA,eACA,YACA,gBACA,kBACA,qBACA,yBACA,kBACA,iBACA,gBACA,WAGA,aAGQ,mBAGA,8BAGV,+CACE,SACA,iBAGF,eACE,mBAGF,0CACE,OACE,WACA,iBAIJ,gEACE,OACE,YAIJ,0CACE,OACE,aAIJ,MACE,kBACA,gBACA,kBACA,YACA,WACA,sBACA,cACA,mBAGF,uBACE,+BAGF,kHAGE,2BAGF,yEAEE,WAGF,kCACE,sBAGF,uBAGE,aAGF,4BAGE,YAGF,WACE,qBACA,kBACA,iBACA,YACA,UACA,SACA,yBAGF,aACE,2BACA,cACA,WACA,YACA,eACA,eACA,uBACA,gBACA,2BAGF,uCACE,+BACA,cAGF,kDAEE,2BACA,eAGF,iBACE,kBACA,SACA,WACA,yBACA,uBAGF,0CACE,MAGE,aAEF,WAGE,YAEF,aACE,gBAIJ,kBACE,iBACA,eACA,aACA,+BACA,kBACA,WACA,gBACA,iBACA,UACA,kBACA,kBACA,2BACA,gBACA,OACA,MACA,oBACA,kBAGF,UACE,kBACA,UACA,WACA,WACA,0BACA,yBACA,WAEQ,wBACR,kBAGF,0BAEE,YACA,kBACA,qBACA,YACA,iBACA,eACA,yBACA,sBACA,0CAGF,qSAcE,oBACA,oCACA,gBACA,yBACA,eAGF,+XAcE,oCACA,yBAGF,mDAIE,eACA,UAGF,6DAIE,iBACA,oBAGF,gDAEE,yBAGF,gBACE,qBACA,WACA,yBACA,kBACA,oBACA,wBACA,eAGF,4BACE,yBAGF,cACE,qBACA,WACA,kBACA,gBACA,UACA,WACA,YACA,iBACA,UACA,yBACA,kBACA,eACA,eACA,sBAGF,oBACE,yBAGF,qBACE,gBAGF,wBACE,WACA,YAGF,oCACE,aAGF,0BACE,iBAGF,0BACE,kBACA,WACA,aAGF,+BACE,WACA,UAGF,gBACE,cACA,qBACA,kBACA,WACA,iBACA,iBAGF,oBACE,YAGF,kBACE,eACA,WACA,YACA,iBACA,gBACA,YAGF,4BACE,mBAGF,6BACE,mBAGF,gCACE,iBACA,WACA,QAEQ,2BACR,YACA,UACA,YAIF,mCACE,qBACA,qBAGF,0BACE,UACA,YAGF,qCACE,UAGF,6BAGE,aACA,MACA,SAGF,gCAGU,OACR,qBACA,SACA,YACA,gBAGF,kCACE,cACA,gBACA,kBACA,WACA,YACA,+BACA,gBACA,WACA,iBACA,UAGF,oCACE,oBAGF,qBACE,OACA,QACA,kBACA,kBACA,YACA,SACA,kBAGF,wBACE,mBAGF,oCACE,UAGF,gCACE,kBACA,MACA,OACA,WACA,WACA,YACA,yBACA,kBAEQ,mBAGV,UACE,gBACA,+BACA,cACA,eACA,gCAGF,iCACE,+BAGF,gCACE,gCACA,gBAGF,iBACE,gCAGF,mBACE,0CACA,yBACA,eAGF,WACE,YACA,iBAGF,aACE,iBAGF,WACE,cAGF,kBACE,sBACA,SACA,aACA,gBACA,iBACA,gBACA,UACA,kBACA,YACA,yBAGF,qBACE,WACA,sBACA,eACA,gBACA,mBACA,WACA,gBACA,oBAGF,qFACE,sBAGF,qCACE,yBAGF,6BACE,aACA,WAGF,iDACE,eACA,cACA,cACA,iBACA,kBAGF,gCACE,QACA,OACA,YAGF,yBACE,eACA,oBACA,WACA,kBACA,WAGF,yDACE,QACA,OACA,YAGF;;;;;;;EAAA,CAQA,cACE,kBACA,eACA,qBACA,gBACA,yBACG,sBAEK,iBACR,0CACA,sBACA,UACA,wBAGF,4BACE,kBACA,kBACA,WACA,YACA,iBACA,kBACA,UACA,0BACA,4BAEA,sCAGQ,mBACR,oBAGF,wCACE,uCAGF,sCACE,oCAGF,yCACE,qCAGF,yCACE,oCAGF,yCACE,qCAGF,wCACE,oCAGF,uCACE,oCAGF,kGACE,SACA,kBACA,kBACA,uBACA,gBAGF,kBACE,kBACA,WAGF,oBACE,2BAGF,cAEU,wBACR,2EAGF,qBACE,mBACA,sBAGF,yCACE,kBACA,MACA,OACA,UAGF,cACE,kBACA,YACA,aACA,kBACA,kBACA,wBAGF,aACE,cAIF,4BACE,WAGF,OACE,aACA,eACA,OACA,QACA,yBACA,UACA,eACA,UACA,YACA,gBACA,kBACA,wBAGF,0CACE,OACE,WAIJ,wCACE,aAGF,sBACE,aAGF,oBACE,eAGF,qBACE,0BACA,yBACA,gBACA,YACA,WAGF,yFACE,YACA,aAGF,eACE,eACA,YACA,WACA,OACA,SACA,QACA,YACA,WACA,gBACA,aACA,oBAGF,0BACE,UACA,WAGF,yCACE,kBACA,yBACA,gBACA,WACA,gBAGF,wCACE,oCACA,kBACA,SAGF,oBACE,SACA,aACA,SACA,WACA,eACA,gBACA,2BAGF,aACE,0BACA,4BACA,2BACA,sBAGF,oBACE,cACA,eACA,gBACA,iBACA,eACA,sBACA,6BAGF,sBACE,WACA,iBACA,iBACA,cACA,WACA,kBACA,kBAGF,kBACE,aACA,6BACA,sBACA,aAGF,oDAEE,YACA,gBAGF,0DAEE,UAGF,kEAEE,+BACA,YACA,oBACA,eACA,eAGF,8EAEE,iCAGF,sEAEE,oBAGF,8DAEE,SACA,sBAGF,wEAEE,wBAGF,oBACE,YACA,gBAGF,uBACE,oEACA,cACA,4DAGF,8BACE,qEACA,cAGF,MACE,qBACA,YACA,eACA,gBACA,qBACA,iBACA,eACA,mBACA,yBACA,kBACA,iBAGF,UACE,WACA,qBACA,YACA,WACA,kBAGF,aACE,eACA,YACA,eACA,iBACA,iBAGF,OACE,YACA,gCACA,gBACA,kBACA,gBACA,aACA,mBAGF,aACE,gCACA,6BAGF,aACE,YAGF,sBACE,yBACA,WAGF,cACE,gBACA,SACA,qBACA,qBACA,eACA,YACA,iBACA,UACA,SACA,qBACA,uBAGF,oBACE,oBACA,2BAGF,6BACE,aAGF,eACE,iBACA,UACA,wBAGF,mBACE,gBAEQ,4BAGV,eACE,cAEA,eACA,kBACA,uBACA,mCAGF,kCACE,WAGF,sBAEE,gBAGF,qBACE,eACA,MACA,QACA,SACA,OACA,yBACA,aACA,oBAGF,qBACE,eACA,aACA,WACA,iBACA,SACA,OACA,WACA,kBACA,eACA,YACA,aACA,mCAGF,aACE,0BAGF,aACE,aACA,yBAGF,MACE,gBACA,cAMF,4BACE,cAGF,kBAEE,cAGF,mBAEE,cAGF,uBACE,cAIF,gQAaE,+BACA,YACA,gCACA,gBACA,aACA,YACA,WACA,eACA,kBACA,UACA,gBACA,uBACA,mBAGF,42BAyBE,sBACA,yCAGF,wgCA0BE,sBAGF,8hBAaE,gCACA,6BAGF,4mBAaE,cAGF,0uBAyBE,gCACA,6BAGF,kiCA0BE,2BACA,cACA,UAGF,8xBAyBE,gCACA,6BAGF,slCA0BE,yBACA,cACA,UAGF,mcAaE,WACA,oBAGF,4ZAaE,cACA,WACA,kBACA,SACA,UACA,mDAGF,aACE,kBACA,gBAGF,oBACE,qBACA,sBACA,gBAGF,+DAEE,mBAGF,uBACE,YAGF,wEAEE,iCAGF,mBACE,cACA,kBACA,UACA,OACA,eACA,YACA,wBACA,mBAGF,2CACE,gBAEQ,4BAGV,qBACE,kBACA,WACA,eACA,qBAGF,4BACE,cAGF,oKAKE,iBACA,UACA,wBAGF,2BACE,iBAGF,0CACE,2BACE,UACA,yBAIJ,0CACE,2BACE,UACA,yBAKJ,gCACE,cACA,oBACA,kBACA,wBAGF,sCACE,sBACA,SACA,gBACA,WAGF,gKAGE,WAGF,sCACE,UAGF,sGAEE,kBACA,MACA,WACA,oBACA,eACA,eACA,qBAIF,SACE,WACA,YACA,+BAGF,8BACE,kBAEA,yBAEA,YACA,gBAGF,WACE,aACA,qBACA,qBACA,yBAEA,mBAEA,kBACA,MAIF,sBACE,iBACA,cACA,UACA,gBAGF,oCACE,WAGF,6BACE,YACA,WACA,gBAKF,gDAEE,kBACA,aACA,UAGF,4DAEE,kBACA,kBACA,eACA,qBACA,YACA,iBACA,eACA,qBAEA,yBACG,sBAEK,iBAGV,mDAEE,WACA,kBACA,OACA,MACA,WACA,WACA,YACA,UACA,qBAIF,uOAME,kBAGF,+EAEE,yBAGF,uCAEU,mBAIV,kCACE,+BAGF,sHAGE,yBAGF,2EAEE,yBAGF,iCAEU,sBAIV,0CAEU,qBAIV,uCACE,qCAIF,oDACE,iCAGF,mDACE,YACA,iCAIF,4FAEE,+BACA,6BAGF,4BACE,sBAGF,iDACE,6BAGF,0CACE,iCACA,qBAMF,OACE,mBACA,gBAGF,kBACE,gBAIF,sDAEE,kBACA,aACA,UAOF,sBACE,kBACA,kBACA,eACA,qBACA,YACA,iBACA,eACA,yBAEA,sBAEA,wBAEA,qBAIF,yEAEE,WACA,kBACA,MACA,OACA,WACA,YACA,UACA,yBACA,kBACA,eACA,eAGF,4CACE,SAEQ,mBAGV,oDACE,YACA,iCAGF,yCAEU,mBACR,SACA,kBACA,qCACA,gCAGF,qCACE,SACA,UACA,WACA,YACA,mCACA,oCACA,+BACA,gCAEQ,wBACR,mCACQ,2BAEA,2BAGV,8CACE,uCACA,wCAIF,2CACE,UACA,WACA,WACA,YACA,gBACA,iBACA,+BACA,mBAEQ,wBACR,mCACQ,2BAEA,2BAGV,oDACE,uCACA,+BAGF,sCACE,kBAGF,6EAEE,WACA,OACA,kBAEA,mGACA,UAGF,qDACE,QACA,SACA,+BACA,SACA,SAEA,yBAEA,2BAGF,oDACE,YACA,WACA,+BACA,yBACA,QACA,UAGF,+CACE,MACA,SACA,UACA,YACA,mCACA,oCACA,4BACA,6BAEA,yBAEA,2BAGF,8CACE,MACA,WACA,YACA,yBACA,yBACA,UAGF,mDACE,kBACA,qBACA,gCAGF,2DACE,kBACA,yBACA,qBAGF,8DACE,+BACA,+BAGF,6DACE,2BACA,yBAGF,wDACE,+BAGF,uDACE,yBACA,qBAKF,kBAEE,yBACA,sBACA,wBACA,qBAGF,cACE,eAGF,mCACE,UACA,QACA,SAGF,kDACE,yBAGF,wDACE,yBACA,UAGF,qBACE,WACA,qBACA,kBACA,WACA,YACA,yBACA,mBACA,kBACA,+BACA,sBACA,cAGF,2BACE,WACA,kBACA,qBACA,WACA,YACA,yBACA,mBACA,wCACA,UACA,SACA,iEAGF,wIAEE,uEAGF,uHAEE,mEAGF,8CACE,eAGF,4HAEE,yBAKF,OACE,aAGF,uBACE,cAGF,OACE,sCACA,WACA,YACA,yBACA,kBACA,YAGF,cACE,kBAGF,gBACE,kBAGF,sCACE,kBACA,eACA,+BACA,YACA,gCACA,aACA,YACA,iBACA,WACA,eACA,kBACA,UACA,cAGF,2BACE,cACA,kBACA,QACA,MACA,SACA,YACA,cACA,eACA,iBAGF,oCACE,sBAGF,sBACE,kBACA,UACA,gBAGF,gBACE,qBAGF,+CACE,qBACA,eACA,yBAEA,sBAEA,qBAEA,uCAGF,kBACE,qBAGF,4FAGE,qBACA,+BAGF,wBACE,iBACA,UACA,wBAGF,cACE,iBAGF,wBACE,YACA,WACA,gBACA,YAGF,6BACE,0BAGF,2CACE,qBAGF,kCACE,qBAGF,gDACE,kBAKF,YACE,kBAGF,+BACE,gBACA,kBAGF,4BACE,WAGF,wCACE,WACA,YACA,iBAGF,iBACE,eAGF,6BACE,kBACA,MACA,QACA,OACA,SACA,WACA,SACA,UACA,eACA,eACA,UACA,wBAKF,aACE,kBAGF,2CAEE,eAGF,kBACE,kBACA,+BACA,YACA,aACA,WACA,cACA,UAGF,wBACE,aAGF,yBACE,kBACA,SACA,OACA,YACA,SACA,QACA,kBACA,yBACA,gBAEQ,yBAEA,yBAGV,gCACE,cACA,WACA,kBACA,cACA,YAEQ,wBAGV,gCACE,4BAGF,uCACE,WACA,iBACA,eACA,eAGF,kBACE,wBAGF,iDACE,WACA,mBACA,YAGF,wCACE,wBACA,YACA,YACA,WACA,kBACA,yBAEQ,yBACR,kBACA,sCAGF,uDACE,gBAGF,kBAEE,sBAIF,oCACE,WACA,gBACA,YAGF,oCACE,YACA,YACA,WACA,kBACA,mBACA,gBAGF,iCACE,uBACA,oBAGF,0CACE,gBAGF,6BACE,WACA,yBACA,2BACA,mBAEA,oBAGF,kCACE,gBAGF,kCACE,gBAGF,6BACE,YACA,YACA,WACA,kBACA,mBAGF,wCACE,gBAGF,wCACE,gBAMF,yBACE,eAGF,sBACE,cAGF,qBACE,qBACA,gBACA,cACA,kBACA,cACA,mBACA,kBACA,qBAGF,2BACE,cACA,kBACA,8BAGF,4BACE,gBACA,kBACA,8BAGF,UACE,eACA,YACA,OACA,MACA,SAEQ,4BACR,YACA,yBACA,uBACA,oBACA,sBACA,YACA,gBACA,sBACA,mCACQ,2BAEA,4BAGV,wBACE,QAEQ,2BACR,UAEQ,2BAGV,uBACE,SAGF,aACE,WACA,iBAGF,oBACE,iCAGF,eACE,sBACA,cACA,eACA,gBACA,YACA,iBACA,eAGF,qBACE,iCAGF,yHACE,iBAGF,iGACE,WAGF,wBACE,cAGF,uFACE,yBAGF,kCACE,yBAGF,gHAGE,WACA,YACA,iBACA,kBACA,WACA,sBAGF,mBACE,iBAGF,qBACE,eACA,oBACA,sBACA,eACA,gBACA,iBAGF,2BACE,+BAGF,oBACE,kBACA,oBACA,kBAGF,sBACE,YACA,UAGF,4BACE,+BAGF,gCACE,gBACA,kBACA,MACA,QACA,SACA,OACA,WAGF,iFACE,cAGF,4BACE,YACA,WAGF,qDAEE,eACA,iBAGF,0BACE,gBACA,gBAGF,2BACE,oBACA,gBAGF,aACE,YACA,WACA,eACA,MACA,YAGF,gBACE,OAEQ,wBACR,eAGF,8BACE,QACA,UAGF,0CACE,gBAEU,4BAEV,8BAEU,2BAEV,YACE,eAEF,oBACE,qBAIJ,4HAEE,yBAGF,gIAEE,WAGF,4BACE,UAGF,iBACE,eACA,MACA,OACA,QACA,aACA,gCACA,YACA,oBA4BF,mBACE,qBACA,kBACA,WACA,YAGF,yBACE,WACA,YAGF,uBACE,WACA,YAGF,0BAGE,kDASF,4BACE,GAEU,0BAIZ,eACE,kBACA,WACA,YACA,UACA,qBAGF,iCAEE,qBAGF,+BAEE,qBAGF,qCAEE,qBAGF,mCAEE,qBAgBF,oCAGE,kJAGF,mCAGE,iJAGF,sCAGE,oJAGF,qCAGE,mJAGF,6LAME,UAEA,+EAsCF,8BACE,MAEU,yBAGV,IAEU,yBAGV,MAEU,yBAGV,IAEU,yBAGV,MAEU,yBAGV,IAEU,yBAGV,MAEU,yBAGV,GAEU,2BA0BZ,4BACE,KACE,UAEF,IACE,UAEF,IACE,UAEF,IACE,UAEF,IACE,UAEF,KACE,WAsBJ,2BACE,KACE,UAEF,IACE,UAEF,IACE,UAEF,IACE,UAEF,IACE,WAsBJ,8BACE,KACE,UAEF,IACE,UAEF,IACE,UAEF,IACE,UAEF,IACE,WAsBJ,6BACE,KACE,UAEF,IACE,UAEF,IACE,UAEF,IACE,UAEF,KACE,WAQJ,WACE,kBACA,MACA,SACA,UACA,YACA,gBACA,qBAGF,mBACE,YACA,WAGF,gBACE,qBACA,kBACA,UACA,YACA,gBACA,qBAGF,wBACE,WACA,YACA,iBAEA,mBACA,qBACA,6CACA,kBAEA,eACA,kBACA,MACA,QACA,SAGF,6BACE,OACA,4CAEA,yBAGF,8BACE,WACA,2CAEA,0BAGF,qCAGE,sEAGF,sCAGE,uEAeF,qBACE,KAEU,yBAEV,IAEU,wBAEV,GAEU,0BAgBZ,sBACE,KAEU,0BAEV,IAEU,uBAEV,GAEU,2BAIZ,2BAGE,8FAYF,oBACE,KACE,UAEF,GACE,WAIJ,QACE,kBACA,aACA,WAGF,mBACE,YACA,WACA,kBACA,MACA,OACA,QACA,SAGF,6BACE,YAGF,iCACE,UACA,YAGF,gBACE,yBACA,SACA,aAGF,mBACE,UACA,kBACA,MACA,OACA,UACA,WACA,eACA,gBAGF,uBACE,YACA,WACA,sBACA,2BAGF,4BACE,WACA,kBACA,QACA,SACA,UACA,UAGF,8BACE,cAGF,0BACE,UAGF,oBACE,kBACA,kBACA,OACA,QACA,SACA,SAGF,oCACE,qBACA,kBACA,eACA,YACA,WACA,cACA,yBACA,gCACA,kBAGF,2CACE,yBAGF,UACE,gBACA,kBACA,WACA,aAEQ,kBAEA,4BAEA,wBAGV,0BACE,MACA,OACA,SAGF,+CACE,kBACA,OACA,QACA,YACA,UAGF,+DACE,YAGF,yCACE,WACA,YACA,iBACA,kBACA,MACA,OAGF,4CACE,eACA,gBACA,iBAGF,2CACE,eAGF,yBACE,aACA,YACA,aACA,kBACA,MACA,OAGF,6BACE,WAGF,sBACE,kBACA,kBACA,OACA,QACA,SACA,SAGF,sCACE,qBACA,kBACA,eACA,WACA,UACA,gBACA,sCACA,gCACA,kBAGF,6CACE,sBAGF,uGAEE,oBAGF,oBACE,YACA,aACA,eACA,aACA,kBACA,6BAGF,yBACE,mBACA,yBAGF,qCAEU,mBACR,YAEA,kGACA,CAGF,kDAEU,mBAGV,iDACE,mBAEQ,qEAER,qDACA,CAGF,YACE,kBACA,eACA,kBACA,yBACA,wGACA,WACA,YACA,UAEQ,mBAER,kGACA,CAGF,oBACE,kBACA,mBAGF,iBACE,kBACA,kBACA,cAGF,iDACE,WACA,cACA,kBACA,WACA,YACA,kBACA,sBAGF,yBAEU,mBAER,wBACA,CAGF,wBACE,kBAEA,mDAEA,WAGF,mBACE,QACA,SAEQ,gCACR,cACA,6BAGF,gGACE,gBAGF,0CACE,gCACE,YACA,cAIJ,OACE,iBACA,kBAGF,eACE,WACA,cACA,kBACA,WACA,YACA,MACA,OACA,yBACA,sBAEA,qCAGQ,qEACR,WAqBF,2BACE,GACE,UAEQ,mBAEV,IACE,UAEQ,qBAEV,KACE,UAEQ,sBAUZ,QACE,eACA,gBACA,gBACA,WACA,kBACA,cACA,yBACA,sBAEA,iBAMF,eACE,eAMF,qCACE,qBAMF,gBACE,WACA,gBACA,iCAGF;;;EAAA,CAUA,+BAEE,SACA,OACA,QACA,SAMF,gBACE,eACA,gDACA,mCAMF,eACE,kBACA,cACA,gBACA,YACA,iBACA,gEACA,wBACA,eACA,UACA,6BAGF,6BACE,eACE,iBACA,SACA,aACA,gBAIJ,6BACE,eACE,oBAOJ,cACE,cACA,WACA,YAGF,6BACE,cACE,eAOJ,aACE,gBACA,mBACA,sBAGF,6BACE,aACE,cACA,sBACA,yBACA,sBACA,0BACA,6CAOJ,gCACE,MACA,yBACA,uGACA,OACA,2BACA,oCAGF,+BACE,MACA,kEACA,0BACA,eACA,UAGF,6BACE,+BACE,QACA,aAUJ,qCACE,qBAGF,eACE,cACA,gBAGF,6BACE,+BACE,QACA,aAUJ,aACE,cAMF,gBACE,kBACA,kBACA,iBAMF,6BAEE,qBACA,kBACA,mBAMF,6CAEE,WACA,UACA,kBACA,mBAGF,uCACE,eACA,sBACA,UAGF,sCACE,eACA,sBACA,UAGF,yDAEE,6BAMF,sCAEE,kBACA,oBACA,UACA,WACA,uBACA,YAGF,mBACE,UACA,qBAGF,mBACE,WACA,oBAGF,sHAIE,eACA,gBACA,2BACA,0BAMF,eACE,kBACA,yBACA,iBACA,mBACA,eACA,WACA,iBACA,mBAGF,oCACE,kBAGF,kBACE,SACA,UAMF,iBACE,oBACA,gBACA,qBACA,WACA,gBAIF,6BACE,iBACE,qBAOJ,oBACE,kBACA,cACA,oBACA,iBACA,gBACA,+BAGF,8BACE,sBAGF,4BACE,eACA,WACA,gBAGF,uBACE,aACA,iBACA,WAGF,6BACE,eACA,WACA,gBAGF,2EAEE,eAGF,4FAGE,kBAEQ,sBACR,mBACA,WAGF,4FAGE,mBACA,qBACA,WACA,eAGF,sGAEE,gBAMF,gBACE,kBAGA,aAGQ,mBAGA,8BAGV,qEAGE,sBACA,gBACA,eACA,gBACA,iBACA,UACA,qBACA,sBAGF,uFAGE,eACA,WACA,mBACA,4BAGF,uFAGE,mBACA,6BACA,aAGF,0FAGE,kBACA,qBACA,SAGF,4DAEE,YACA,mBAGF,8BACE,YACA,QACA,+BACA,sCAGF,8BACE,YACA,YACA,0BAGF,8BACE,YACA,WACA,mBACA,gBACA,mBACA,WAGF,wEAEE,mBACA,qBACA,WACA,eAGF,wCACE,sBAMF,aACE,kBACA,gBAGF,sBACE,kBACA,yBACA,WACA,oBACA,gBAGF,kDAEE,eACA,WACA,mBAGF,yBACE,yBACA,aACA,gBACA,kBACA,eACA,mBAGF,uBACE,yBACA,eAGF,qBACE,iBACA,gBAGF,sBACE,iBACA,2BAGF,aACE,UAGF,4BACE,eAGF,kCACE,YAGF,eACE,aACA,mBAGF,sBACE,cACA,oBACA,iBACA,gBACA,+BAGF,gCACE,cAGF,sDACE,WAGF,iBACE,gBAGF,4FAGE,kBAEQ,qBACR,yBACA,WAGF,8JAGE,yBAGF,gBACE,iBACA,iBAGF,8BACE,iBACA,eACA,cAGF,oDAEE,YACA,oCACA,uCACA,iCACA,QACA,SACA,cACA,cAGF,0BACE,eACA,gCAGF,iFACE,yBASF,cACE,gBACA,sBACA,SAMF,mBACE,6BACA,0BACA,mBACA,kBACA,gBACA,qBAGF,4BACE,mBACE,kBAKJ,yBACE,eACA,WACA,mBACA,qBACA,WAIF,gCACE,qBACA,WAGF,uFAEE,eACA,WACA,mBAIF,8GAGE,mBACA,WACA,WAIF,8GAGE,mBACA,qBACA,WACA,eACA,kBACA,aAMF,qCACE,cACA,UACA,kBACA,mBACA,gBACA,SACA,gBACA,gBACA,kBACA,yBACA,WAGF,sFAEE,WACA,mBACA,gBACA,kBACA,eACA,WACA,aAGF,4CACE,YACA,WACA,iBACA,iBAGF,oGAEE,WASF,6BACE,gBACA,gBAMF,2BACE,cACA,mBACA,UAGF,6BACE,2BACE,mB;AClvRJ,0DAGC,wDACA,mBACA,gBACA,SACA,UACA,gBAIA,gBAGA,mBACA,gBACA,cAMD,iBACC,yDACA,4BAGD,0RAOC,yDACA,4BAMD,cACC,mBACA,+BACA,wGAGD,wBACC,mBACA,8BACA,wGAMD,mBACC,kBAKD,oDAGC,aAGD,kBACC,aAGD,sEAIC,kBACA,eACA,cAGD,gBACC,aACA,kBAMD,iBACC,iBACA,kBACA,WACA,YACA,6BAGD,uBACC,+BAGD,wBACC,iCAGD,wBACC,cACA,WACA,YACA,cACA,YACA,gBACA,mBACA,eAQD,iBACC,QACA,SAGD,kBACC,SACA,UACA,YACA,WACA,gBACA,yBACA,uCACA,yBACA,sCAGA,kBAGA,wCACA,qCAGD,sCACC,UACA,YAGD,sCACC,YACA,QAGD,yBACC,iBAGD,uEAEC,UACA,SACA,gBAGD,wBACC,WACA,cACA,WACA,YACA,wBACA,kBACA,aACA,SAGD,4CACC,UACA,UAGD,4CACC,4BACA,YACA,SAGD,qHAGC,kBACA,eAGD,kCACC,6BACA,0CAGD,8CACC,gBAGD,wDAEC,6BACA,2CAMD,sBACC,gBAGD,0EAEC,iBAMD,2FAEC,iBACA,oBACA,cACA,eACA,kBACA,gBACA,gBAGD,sCACC,kBACA,QACA,UACA,iBACA,UAIA,+BACA,YAGD,0GAEC,UAGD,qFAEC,eACA,qBACA,WACA,YACA,gBACA,YACA,WACA,mBACA,+BACA,aAGD,kMAIC,WAGD,mGAEC,UAGD,uDACC,aAGD,sDACC,4BAGD,wDACC,4BAGD,sDACC,6BAMD,kCACC,kBAGD,wCACC,MACA,eACA,eACA,eAGD,mFAEC,cACA,eACA,iBACA,YACA,SACA,cACA,gBAGA,yBACA,sBACA,YAGD,8DACC,WACA,UAGD,0EACC,kBACA,yBACA,0BAGD,6EACC,YACA,sBACA,0BACA,4CAGD,+EACC,WACA,sBACA,0BAGD,uDACC,iBAIA,0BAGD,+FAEC,yBACA,aAGD,2GAEC,WACA,YACA,UACA,eACA,iBACA,eAGD,sCACC,gBAGD,8GAGC,iBACA,YACA,6BACA,yBAmBA,4GAcA,uHACC,CAGD,oHACC,CAMD,0BAGD,yDACC,gBACA,gCAIA,0BAGD,uEAEC,kBACA,qBACA,qBACA,cACA,0CACA,qBACA,iBACA,eACA,iBACA,yBACA,yBAsBA,oIAaA,mFACC,CAED,gFACC,CAKD,kBAGD,0BACC,kBACA,QACA,SACA,cACA,WACA,WACA,YACA,gBACA,4BAGD,qMAKC,aACA,qBACA,yBAsBA,iIAOA,WACA,qCAGD,gEAEC,gBACA,6BAGD,wFAEC,qBACA,yBAsBA,gIASD,yCACC,6BAGD,uJAGC,gBACA,6BAGD,0CACC,4BAGD,2EACC,yBAGD,6DACC,4BACA,YAGD,kBACC,kBACA,MACA,QACA,WACA,YACA,+BAGD,sCACC,WACA,OACA,6BAGD,sCACC,SACA,SACA,+BAGD,yDACC,6BAMD,kBACC,WACA,eACA,UACA,OACA,WACA,eACA,iBACA,kBACA,gBACA,0BACA,gCAIA,4BAGD,0BACC,qBAGD,wBACC,qBAGD,oBACC,SAGD,oBACC,WAGD,uBACC,MAMD,gBACC,mBAGD,+BACC,qBACA,cACA,kBACA,gBACA,iBACA,yBAIA,kBAMD,kBACC,eACA,MACA,QACA,OACA,gBACA,cACA,YACA,gCACA,kBACA,mBAIA,gBAKA,iDACC,CACD,8CACC,CAGF,yBACC,eACA,iBACA,cACA,yCACA,kBACA,SAID,4FAEC,kBACA,qBACA,gBACA,iBACA,cACA,iBAGD,yGAEC,gBACA,cACA,WACA,iBAIA,4BAGD,mDACC,iBAGD,mDACC,cACA,YACA,wBACA,sBACA,yBACA,iBACA,gBACA,iBACA,gBACA,eACA,YACA,WACA,yBAIA,4BAKA,4CACC,CACD,yCACC,CAIF,yDACC,aACA,sBAGD,0CACC,kBACA,UACA,QACA,YACA,mBACA,WACA,YACA,4BACA,WAGD,gGAEC,WAGD,iDACC,UAGD,sDACC,yBACA,UACA,mBACA,WACA,gBAOA,mFACC,CAED,gFACC,CAIF,8KAGC,oBAGD,4DACC,kBACA,QACA,SACA,WACA,cACA,UACA,WACA,6BAGD,kEACC,6BAGD,sEAIC,4BACA,iBAGD,4EACC,UACA,UACA,6BAGD,kFACC,6BAGD,qBACC,mBACA,+BACA,wGAGD,uBACC,sB;AC13BD,WACA,4BACE,kBACA,gBACA,mBACA,4CACA,yLAEA,iBAEF,4BACE,mBACA,kBACA,eACA,qBAEA,cACA,oBACA,sBACA,iBACA,mBACA,kBAEA,mCAEA,kCAEA,kCAEA,6BAEA,6BACA,WACE,8BACF,WACE,8BACF,WACE,6BACF,WACE,8BACF,WACE,8BACF,WACE,8BACF,WACE,8BACF,WACE,8BACF,WACE,8BACF,WACE,sCACF,WACE,8BACF,WACE,8BACF,WACE,4BACF,WACE,iCACF,WACE,uCACF,WACE,8BACF,WACE,8BACF,WACE,8BACF,WACE,8BACF,WACE,8BACF,WACE,4BACF,WACE,iCACF,WACE,6BACF,WACE,+BACF,WACE,sCACF,WACE,6BACF,WACE,qCACF,WACE,uCACF,WACE,4BACF,WACE,iCACF,WACE,6BACF,WACE,4BACF,WACE,uCACF,WACE,4CACF,WACE,4BACF,WACE,iCACF,WACE,6BACF,WACE,4BACF,WACE,4BACF,WACE,iCACF,WACE,6BACF,WACE,+BACF,WACE,sCACF,WACE,oCACF,WACE,4BACF,WACE,iCACF,WACE,6BACF,WACE,4BACF,WACE,iCACF,WACE,6BACF,WACE,4BACF,WACE,iCACF,WACE,6BACF,WACE,4BACF,WACE,iCACF,WACE,6BACF,WACE,4BACF,WACE,gCACF,WACE,qCACF,WACE,sCACF,WACE,oCACF,WACE,2CACF,WACE,sCACF,WACE,0CACF,WACE,mCACF,WACE,2CACF,WACE,wCACF,WACE,+CACF,WACE,oCACF,WACE,uCACF,WACE,qCACF,WACE,iCACF,WACE,4BACF,WACE,4BACF,WACE,oCACF,WACE,kCACF,WACE,kCACF,WACE,gCACF,WACE,qCACF,WACE,iCACF,WACE,iCACF,WACE,kCACF,WACE,mCACF,WACE,2CACF,WACE,oCACF,WACE,iCACF,WACE,sCACF,WACE,oCACF,WACE,iCACF,WACE,qCACF,WACE,yCACF,WACE,sCACF,WACE,4CACF,WACE,qCACF,WACE,iCACF,WACE,0CACF,WACE,iCACF,WACE,qCACF,WACE,2CACF,WACE,sCACF,WACE,qCACF,WACE,iCACF,WACE,oCACF,WACE,+BACF,WACE,6CACF,WACE,8BACF,WACE,kCACF,WACE,oCACF,WACE,4BACF,WACE,0CACF,WACE,iDACF,WACE,sDACF,WACE,mDACF,WACE,oDACF,WACE,qDACF,WACE,mDACF,WACE,oDACF,WACE,sCACF,WACE,iCACF,WACE,wCACF,WACE,4CACF,WACE,8CACF,WACE,yCACF,WACE,wCACF,WACE,gCACF,WACE,wCACF,WACE,8BACF,WACE,kCACF,WACE,kCACF,WACE,iCACF,WACE,8BACF,WACE,gDACF,WACE,8CACF,WACE,+CACF,WACE,8CACF,WACE,8CACF,WACE,2CACF,WACE,kCACF,WACE,sCACF,WACE,gCACF,WACE,kCACF,WACE,wCACF,WACE,oCACF,WACE,kCACF,WACE,+BACF,WACE,gCACF,WACE,kCACF,WACE,qCACF,WACE,4BACF,WACE,kCACF,WACE,4BACF,WACE,qCACF,WACE,yCACF,WACE,yCACF,WACE,qCACF,WACE,8BACF,WACE,iCACF,WACE,6BACF,WACE,oCACF,WACE,qCACF,WACE,gCACF,WACE,mCACF,WACE,mCACF,WACE,uCACF,WACE,2CACF,WACE,0CACF,WACE,0CACF,WACE,2CACF,WACE,wCACF,WACE,uCACF,WACE,wCACF,WACE,+CACF,WACE,sCACF,WACE,sCACF,WACE,0CACF,WACE,mCACF,WACE,oCACF,WACE,wCACF,WACE,qCACF,WACE,kCACF,WACE,gCACF,WACE,qCACF,WACE,mCACF,WACE,mCACF,WACE,uCACF,WACE,wCACF,WACE,0CACF,WACE,4CACF,WACE,6CACF,WACE,kCACF,WACE,4CACF,WACE,6CACF,WACE,wCACF,WACE,yCACF,WACE,4BACF,WACE,qCACF,WACE,oCACF,WACE,qCACF,WACE,mCACF,WACE,oCACF,WACE,oCACF,WACE,mCACF,WACE,mCACF,WACE,qCACF,WACE,4CACF,WACE,4CACF,WACE,oCACF,WACE,sCACF,WACE,wCACF,WACE,qCACF,WACE,mCACF,WACE,kCACF,WACE,qCACF,WACE,uCACF,WACE,kCACF,WACE,iCACF,WACE,8CACF,WACE,kCACF,WACE,iCACF,WACE,kCACF,WACE,+BACF,WACE,qCACF,WACE,8BACF,WACE,sCACF,WACE,gCACF,WACE,gCACF,WACE,+BACF,WACE,kCACF,WACE,yCACF,WACE,iCACF,WACE,gCACF,WACE,sCACF,WACE,sCACF,WACE,sCACF,WACE,sCACF,WACE,sCACF,WACE,sCACF,WACE,sCACF,WACE,sCACF,WACE,8CACF,WACE,qCACF,WACE,sCACF,WACE,oCACF,WACE,wCACF,WACE,qCACF,WACE,4BACF,WACE,qCACF,WACE,sCACF,WACE,uCACF,WACE,gCACF,WACE,oCACF,WACE,iCACF,WACE,8BACF,WACE,qCACF,WACE,gCACF,WACE,gCACF,WACE,+BACF,WACE,sCACF,WACE,8BACF,WACE,sCACF,WACE,kCACF,WACE,kCACF,WACE,wCACF,WACE,4CACF,WACE,2CACF,WACE,wCACF,WACE,4CACF,WACE,sCACF,WACE,oCACF,WACE,iCACF,WACE,gCACF,WACE,6BACF,WACE,6BACF,WACE,oCACF,WACE,iCACF,WACE,qCACF,WACE,uCACF,WACE,wCACF,WACE,yCACF,WACE,wCACF,WACE,kCACF,WACE,mCACF,WACE,sCACF,WACE,qCACF,WACE,qCACF,WACE,0CACF,WACE,qCACF,WACE,oCACF,WACE,qCACF,WACE,qCACF,WACE,qCACF,WACE,mCACF,WACE,wCACF,WACE,4BACF,WACE,2CACF,WACE,yCACF,WACE,qCACF,WACE,qCACF,WACE,qCACF,WACE,qCACF,WACE,qCACF,WACE,qCACF,WACE,qCACF,WACE,wCACF,WACE,wCACF,WACE,uCACF,WACE,0CACF,WACE,0CACF,WACE,8CACF,WACE,qCACF,WACE,uCACF,WACE,8CACF,WACE,wCACF,WACE,sCACF,WACE,8BACF,WACE,qCACF,WACE,mCACF,WACE,8BACF,WACE,qCACF,WACE,iCACF,WACE,mCACF,WACE,kCACF,WACE,iCACF,WACE,wCACF,WACE,8BACF,WACE,8BACF,WACE,+BACF,WACE,6BACF,WACE,kCACF,WACE,uCACF,WACE,uCACF,WACE,0CACF,WACE,4CACF,WACE,2CACF,WACE,6BACF,WACE,iCACF,WACE,kCACF,WACE,mCACF,WACE,oCACF,WACE,6CACF,WACE,sCACF,WACE,mCACF,WACE,uCACF,WACE,+BACF,WACE,mCACF,WACE,uCACF,WACE,qCACF,WACE,sCACF,WACE,uCACF,WACE,oCACF,WACE,oCACF,WACE,qCACF,WACE,iCACF,WACE,+BACF,WACE,4CACF,WACE,6CACF,WACE,0CACF,WACE,kCACF,WACE,mCACF,WACE,mCACF,WACE,sCACF,WACE,wCACF,WACE,oCACF,WACE,kCACF,WACE,8BACF,WACE,+BACF,WACE,6BACF,WACE,uCACF,WACE,2CACF,WACE,+BACF,WACE,yCACF,WACE,iCACF,WACE,oCACF,WACE,mCACF,WACE,kCACF,WACE,4CACF,WACE,0CACF,WACE,8BACF,WACE,kCACF,WACE,+BACF,WACE,sCACF,WACE,uCACF,WACE,yCACF,WACE,6BACF,WACE,oCACF,WACE,4CACF,WACE,8BACF,WACE,kCACF,WACE,gDACF,WACE,qCACF,WACE,6CACF,WACE,kCACF,WACE,sCACF,WACE,kCACF,WACE,qCACF,WACE,sCACF,WACE,mCACF,WACE,uCACF,WACE,2CACF,WACE,+BACF,WACE,+BACF,WACE,6CACF,WACE,8BACF,WACE,oCACF,WACE,0CACF,WACE,8BACF,WACE,kCACF,WACE,8BACF,WACE,yCACF,WACE,uCACF,WACE,gDACF,WACE,2CACF,WACE,8BACF,WACE,qCACF,WACE,mCACF,WACE,uCACF,WACE,kCACF,WACE,oCACF,WACE,mCACF,WACE,qCACF,WACE,uCACF,WACE,4BACF,WACE,mCACF,WACE,6BACF,WACE,iCACF,WACE,+BACF,WACE,qCACF,WACE,oCACF,WACE,6CACF,WACE,mCACF,WACE,iCACF,WACE,gCACF,WACE,qCACF,WACE,0CACF,WACE,+BACF,WACE,gCACF,WACE,gCACF,WACE,uCACF,WACE,4CACF,WACE,gCACF,WACE,iCACF,WACE,iCACF,WACE,yCACF,WACE,4CACF,WACE,gDACF,WACE,qCACF,WACE,4CACF,WACE,qCACF,WACE,qCACF,WACE,qCACF,WACE,sCACF,WACE,wCACF,WACE,oCACF,WACE,iCACF,WACE,qCACF,WACE,oCACF,WACE,sCACF,WACE,yCACF,WACE,0CACF,WACE,6CACF,WACE,iCACF,WACE,uCACF,WACE,sCACF,WACE,gDACF,WACE,+BACF,WACE,iCACF,WACE,kCACF,WACE,oCACF,WACE,uCACF,WACE,gCACF,WACE,oCACF,WACE,+BACF,WACE,0CACF,WACE,oCACF,WACE,wCACF,WACE,qCACF,WACE,6BACF,WACE,qCACF,WACE,6BACF,WACE,kCACF,WACE,iCACF,WACE,iCACF,WACE,iCACF,WACE,iCACF,WACE,kCACF,WACE,uCACF,WACE,sCACF,WACE,sCACF,WACE,oCACF,WACE,oCACF,WACE,qCACF,WACE,4BACF,WACE,yCACF,WACE,0CACF,WACE,uCACF,WACE,sCACF,WACE,uCACF,WACE,uCACF,WACE,uCACF,WACE,qCACF,WACE,sCACF,WACE,iCACF,WACE,wCACF,WACE,gCACF,WACE,kCACF,WACE,kCACF,WACE,kCACF,WACE,4CACF,WACE,mCACF,WACE,yCACF,WACE,oCACF,WACE,uCACF,WACE,sCACF,WACE,0CACF,WACE,mCACF,WACE,gCACF,WACE,uCACF,WACE,mCACF,WACE,+BACF,WACE,6BACF,WACE,+BACF,WACE,+BACF,WACE,uCACF,WACE,uCACF,WACE,qCACF,WACE,wCACF,WACE,sCACF,WACE,uCACF,WACE,sCACF,WACE,wCACF,WACE,oCACF,WACE,iCACF,WACE,wCACF,WACE,6BACF,WACE,gDACF,WACE,oCACF,WACE,wCACF,WACE,gCACF,WACE,wCACF,WACE,4CACF,WACE,uCACF,WACE,mCACF,WACE,0CACF,WACE,uCACF,WACE,gCACF,WACE,qCACF,WACE,sCACF,WACE,mCACF,WACE,gCACF,WACE,gCACF,WACE,mCACF,WACE,+BACF,WACE,sCACF,WACE,mCACF,WACE,wCACF,WACE,wCACF,WACE,+CACF,WACE,uCACF,WACE,8CACF,WACE,uCACF,WACE,8CACF,WACE,yCACF,WACE,uCACF,WACE,2CACF,WACE,kDACF,WACE,uCACF,WACE,0CACF,WACE,iDACF,WACE,yCACF,WACE,2CACF,WACE,kDACF,WACE,wCACF,WACE,mCACF,WACE,4CACF,WACE,yCACF,WACE,kCACF,WACE,gCACF,WACE,iCACF,WACE,yCACF,WACE,yCACF,WACE,4BACF,WACE,mCACF,WACE,uCACF,WACE,uCACF,WACE,sCACF,WACE,uCACF,WACE,2CACF,WACE,2CACF,WACE,0CACF,WACE,wDACF,WACE,oCACF,WACE,qCACF,WACE,6BACF,WACE,yCACF,WACE,+BACF,WACE,mCACF,WACE,wCACF,WACE,4CACF,WACE,6BACF,WACE,iCACF,WACE,qCACF,WACE,oCACF,WACE,oCACF,WACE,kCACF,WACE,mCACF,WACE,qCACF,WACE,iCACF,WACE,qCACF,WACE,wCACF,WACE,iCACF,WACE,sCACF,WACE,6CACF,WACE,oCACF,WACE,+BACF,WACE,oCACF,WACE,uCACF,WACE,6BACF,WACE,kCACF,WACE,wCACF,WACE,gDACF,WACE,4CACF,WACE,kDACF,WACE,4CACF,WACE,4BACF,WACE,qCACF,WACE,4BACF,WACE,4BACF,WACE,qCACF,WACE,qCACF,WACE,qCACF,WACE,gCACF,WACE,wCACF,WACE,6BACF,WACE,4BACF,WACE,wCACF,WACE,uCACF,WACE,6BACF,WACE,wCACF,WACE,sCACF,WACE,sCACF,WACE,0CACF,WACE,kCACF,WACE,2CACF,WACE,iCACF,WACE,kCACF,WACE,4BACF,WACE,gCACF,WACE,8BACF,WACE,gCACF,WACE,sCACF,WACE,sCACF,WACE,sCACF,WACE,qCACF,WACE,uCACF,WACE,uCACF,WACE,0CACF,WACE,yCACF,WACE,4CACF,WACE,iCACF,WACE,8BACF,WACE,kCACF,WACE,4CACF,WACE,wCACF,WACE,uCACF,WACE,qCACF,WACE,oCACF,WACE,4CACF,WACE,qCACF,WACE,sCACF,WACE,qCACF,WACE,sCACF,WACE,6CACF,WACE,4CACF,WACE,oCACF,WACE,gDACF,WACE,4CACF,WACE,kCACF,WACE,8BACF,WACE,sCACF,WACE,kCACF,WACE,0CACF,WACE,6BACF,WACE,oCACF,WACE,mCACF,WACE,8BACF,WACE,wCACF,WACE,mCACF,WACE,mCACF,WACE,qCACF,WACE,mCACF,WACE,oCACF,WACE,+BACF,WACE,2CACF,WACE,oCACF,WACE,oCACF,WACE,iCACF,WACE,gCACF,WACE,oCACF,WACE,iCACF,WACE,yCACF,WACE,yCACF,WACE,uCACF,WACE,uCACF,WACE,wCACF,WACE,wCACF,WACE,sCACF,WACE,kCACF,WACE,sCACF,WACE,6BACF,WACE,gDACF,WACE,4CACF,WACE,iCACF,WACE,mCACF,WACE,gCACF,WACE,wCACF,WACE,qCACF,WACE,oCACF,WACE,iCACF,WACE,iCACF,WACE,wCACF,WACE,yCACF,WACE,4BACF,WACE,2CACF,WACE,uCACF,WACE,6BACF,WACE,iCACF,WACE,+BACF,WACE,8BACF,WACE,iCACF,WACE,kCACF,WACE,4CACF,WACE,kCACF,WACE,kCACF,WACE,2CACF,WACE,kCACF,WACE,sCACF,WACE,2CACF,WACE,0CACF,WACE,kCACF,WACE,qCACF,WACE,oCACF,WACE,+BACF,WACE,iCACF,WACE,iCACF,WACE,iCACF,WACE,iCACF,WACE,iCACF,WACE,iCACF,WACE,iCACF,WACE,iCACF,WACE,iCACF,WACE,sCACF,WACE,mCACF,WACE,uCACF,WACE,uCACF,WACE,4CACF,WACE,qCACF,WACE,sCACF,WACE,mCACF,WACE,oCACF,WACE,wCACF,WACE,wCACF,WACE,oCACF,WACE,0CACF,WACE,uCACF,WACE,qCACF,WACE,qCACF,WACE,oCACF,WACE,0CACF,WACE,qCACF,WACE,yCACF,WACE,mCACF,WACE,kCACF,WACE,mCACF,WACE,mCACF,WACE,+BACF,WACE,uCACF,WACE,6BACF,WACE,oCACF,WACE,8BACF,WACE,8BACF,WACE,mCACF,WACE,kCACF,WACE,iCACF,WACE,uCACF,WACE,sCACF,WACE,iCACF,WACE,+BACF,WACE,qCACF,WACE,oCACF,WACE,uCACF,WACE,6BACF,WACE,4CACF,WACE,wCACF,WACE,qCACF,WACE,sCACF,WACE,8BACF,WACE,oCACF,WACE,qCACF,WACE,gCACF,WACE,iCACF,WACE,8BACF,WACE,+BACF,WACE,oCACF,WACE,sCACF,WACE,mCACF,WACE,oCACF,WACE,sCACF,WACE,uCACF,WACE,mCACF,WACE,yCACF,WACE,sCACF,WACE,0CACF,WACE,kCACF,WACE,+BACF,WACE,kCACF,WACE,mCACF,WACE,4CACF,WACE,6CACF,WACE,0CACF,WACE,2CACF,WACE,oCACF,WACE,qCACF,WACE,0CACF,WACE,2CACF,WACE,0CACF,WACE,+CACF,WACE,+CACF,WACE,sCACF,WACE,4CACF,WACE,6CACF,WACE,6CACF,WACE,iDACF,WACE,wCACF,WACE,qCACF,WACE,qCACF,WACE,sCACF,WACE,oCACF,WACE,6CACF,WACE,oDACF,WACE,oDACF,WACE,yCACF,WACE,0CACF,WACE,6BACF,WACE,8BACF,WACE,gCACF,WACE,mCACF,WACE,mCACF,WACE,kCACF,WACE,yCACF,WACE,mCACF,WACE,uCACF,WACE,0CACF,WACE,mCACF,WACE,mCACF,WACE,wCACF,WACE,kCACF,WACE,qCACF,WACE,oCACF,WACE,gCACF,WACE,8BACF,WACE,+BACF,WACE,kCACF,WACE,8BACF,WACE,0CACF,WACE,gCACF,WACE,gCACF,WACE,4BACF,WACE,gCACF,WACE,6BACF,WACE,6BACF,WACE,6BACF,WACE,oCACF,WACE,gCACF,WACE,iCACF,WACE,kCACF,WACE,kCACF,WACE,sCACF,WACE,gCACF,WACE,8BACF,WACE,iCACF,WACE,gCACF,WACE,8BACF,WACE,mCACF,WACE,8BACF,WACE,iCACF,WACE,iCACF,WACE,yCACF,WACE,iCACF,WACE,gCACF,WACE,kCACF,WACE,8BACF,WACE,kCACF,WACE,kCACF,WACE,qCACF,WACE,mCACF,WACE,+BACF,WACE,qCACF,WACE,0CACF,WACE,6BACF,WACE,kCACF,WACE,iCACF,WACE,iCACF,WACE,2BACF,WACE,iCACF,WACE,wCACF,WACE,4CACF,WACE,gCACF,WACE,uCACF,WACE,+BACF,WACE,sCACF,WACE,iCACF,WACE,mCACF,WACE,iCACF,WACE,mCACF,WACE,2CACF,WACE,gCACF,WACE,oCACF,WACE,oCACF,WACE,gCACF,WACE,0CACF,WACE,gCACF,WACE,yCACF,WACE,qCACF,WACE,kCACF,WACE,+BACF,WACE,6BACF,WACE,oCACF,WACE,qCACF,WACE,6BACF,WACE,gCACF,WACE,mCACF,WACE,oCACF,WACE,qCACF,WACE,kCACF,WACE,sCACF,WACE,sCACF,WACE,yCACF,WACE,+BACF,WACE,gCACF,WACE,oCACF,WACE,2CACF,WACE,6BACF,WACE,4BACF,WACE,gCACF,WACE,wCACF,WACE,6BACF,WACE,oCACF,WACE,iCACF,WACE,kCACF,WACE,4CACF,WACE,kCACF,WACE,8CACF,WACE,wCACF,WACE,yCACF,WACE,gCACF,WACE,8BACF,WACE,oCACF,WACE,yCACF,WACE,2CACF,WACE,wCACF,WACE,uCACF,WACE,sCACF,WACE,8BACF,WACE,qCACF,WACE,kCACF,WACE,mCACF,WACE,oCACF,WACE,6BACF,WACE,6BACF,WACE,8BACF,WACE,4BACF,WACE,6BACF,WACE,oCACF,WACE,iCACF,WACE,8BACF,WACE,2CACF,WACE,4CACF,WACE,qCACF,WACE,2CACF,WACE,wCACF,WACE,sCACF,WACE,0CACF,WACE,8BACF,WACE,0CACF,WACE,gDACF,WACE,6BACF,WACE,qCACF,WACE,8BACF,WACE,qCACF,WACE,8CACF,WACE,uCACF,WACE,0CACF,WACE,wCACF,WACE,0CACF,WACE,oCACF,WACE,0CACF,WACE,qCACF,WACE,iCACF,WACE,wCACF,WACE,uCACF,WACE,iDACF,WACE,kCACF,WACE,yCACF,WACE,kCACF,WACE,oCACF,WACE,sCACF,WACE,0CACF,WACE,yCACF,WACE,kCACF,WACE,6BACF,WACE,4BACF,WACE,mCACF,WACE,kCACF,WACE,mCACF,WACE,kCACF,WACE,mCACF,WACE,iCACF,WACE,qCACF,WACE,4BACF,WACE,gCACF,WACE,iCACF,WACE,qCACF,WACE,4CACF,WACE,4CACF,WACE,6CACF,WACE,0CACF,WACE,2CACF,WACE,0CACF,WACE,yCACF,WACE,6CACF,WACE,yCACF,WACE,6CACF,WACE,mDACF,WACE,mDACF,WACE,oDACF,WACE,iDACF,WACE,sCACF,WACE,wCACF,WACE,4CACF,WACE,wCACF,WACE,qCACF,WACE,uCACF,WACE,iCACF,WACE,gCACF,WACE,oCACF,WACE,8BACF,WACE,wCACF,WACE,gDACF,WACE,kCACF,WACE,sCACF,WACE,4BACF,WACE,kCACF,WACE,kCACF,WACE,iCACF,WACE,+BACF,WACE,0CACF,WACE,mCACF,WACE,uCACF,WACE,kCACF,WACE,+BACF,WACE,+BACF,WACE,qCACF,WACE,oCACF,WACE,iCACF,WACE,oCACF,WACE,2CACF,WACE,sCACF,WACE,6BACF,WACE,kCACF,WACE,oCACF,WACE,0CACF,WACE,sCACF,WACE,sCACF,WACE,8BACF,WACE,mCACF,WACE,kCACF,WACE,yCACF,WACE,0CACF,WACE,kCACF,WACE,mCACF,WACE,oCACF,WACE,qCACF,WACE,6BACF,WACE,iCACF,WACE,sCACF,WACE,+BACF,WACE,6BACF,WACE,iCACF,WACE,kCACF,WACE,gCACF,WACE,+BACF,WACE,uCACF,WACE,sCACF,WACE,kCACF,WACE,yCACF,WACE,kCACF,WACE,mCACF,WACE,uCACF,WACE,gDACF,WACE,qCACF,WACE,oCACF,WACE,8CACF,WACE,sCACF,WACE,0CACF,WACE,4CACF,WACE,uCACF,WACE,oCACF,WACE,8CACF,WACE,sCACF,WACE,mCACF,WACE,qCACF,WACE,oCACF,WACE,sCACF,WACE,uCACF,WACE,oCACF,WACE,oCACF,WACE,mCACF,WACE,qCACF,WACE,0CACF,WACE,yCACF,WACE,wCACF,WACE,yCACF,WACE,kCACF,WACE,uCACF,WACE,mCACF,WACE,sCACF,WACE,0CACF,WACE,yCACF,WACE,qCACF,WACE,oCACF,WACE,qCACF,WACE,2CACF,WACE,6BACF,WACE,mCACF,WACE,kCACF,WACE,qCACF,WACE,oCACF,WACE,mCACF,WACE,8BACF,WACE,iCACF,WACE,+BACF,WACE,8BACF,WACE,gCACF,WACE,gCACF,WACE,gCACF,WACE,gCACF,WACE,kCACF,WACE,kCACF,WACE,6BACF,WACE,8BACF,WACE,qCACF,WACE,gCACF,WACE,uCACF,WACE,4CACF,WACE,gCACF,WACE,qCACF,WACE,+BACF,WACE,6BACF,WACE,kCACF,WACE,qCACF,WACE,6BACF,WACE,4BACF,WACE,wCACF,WACE,uCACF,WACE,sCACF,WACE,4BACF,WACE,uCACF,WACE,iCACF,WACE,+BACF,WACE,uCACF,WACE,uCACF,WACE,yCACF,WACE,wCACF,WACE,0CACF,WACE,6CACF,WACE,mCACF,WACE,2CACF,WACE,8BACF,WACE,iCACF,WACE,4CACF,WACE,2CACF,WACE,kCACF,WACE,4CACF,WACE,yCACF,WACE,mCACF,WACE,0CACF,WACE,qCACF,WACE,+BACF,WACE,6BACF,WACE,kCACF,WACE,kCACF,WACE,8BACF,WACE,mCACF,WACE,gCACF,WACE,kCACF,WACE,0CACF,WACE,4BACF,WACE,yCACF,WACE,wCACF,WACE,iCACF,WACE,gCACF,WACE,kCACF,WACE,sCACF,WACE,iCACF,WACE,oCACF,WACE,+CACF,WACE,0CACF,WACE,4BACF,WACE,wCACF,WACE,mCACF,WACE,4CACF,WACE,uCACF,WACE,6BACF,WACE,qCACF,WACE,kCACF,WACE,0CACF,WACE,qCACF,WACE,mCACF,WACE,uCACF,WACE,qCACF,WACE,uCACF,WACE,wCACF,WACE,8BACF,WACE,kCACF,WACE,wCACF,WACE,gCACF,WACE,sCACF,WACE,uCACF,WACE,0CACF,WACE,6BACF,WACE,iCACF,WACE,8BACF,WACE,6BACF,WACE,mCACF,WACE,kCACF,WACE,kCACF,WACE,+BACF,WACE,2CACF,WACE,0CACF,WACE,yCACF,WACE,4CACF,WACE,6CACF,WACE,mCACF,WACE,8BACF,WACE,kCACF,WACE,sCACF,WACE,gCACF,WACE,8BACF,WACE,uCACF,WACE,qCACF,WACE,+BACF,WACE,2BACF,WACE,wCACF,WACE,sCACF,WACE,yCACF,WACE,+BACF,WACE,mCACF,WACE,kCACF,WACE,oCACF,WACE,uCACF,WACE,yCACF,WACE,yCACF,WACE,oCACF,WACE,4BACF,WACE,+BACF,WACE,sCACF,WACE,wCACF,WACE,sCACF,WACE,mCACF,WACE,gCACF,WACE,yCACF,WACE,qCACF,WACE,mCACF,WACE,6CACF,WACE,qCACF,WACE,sCACF,WACE,uCACF,WACE,qCACF,WACE,qCACF,WACE,2CACF,WACE,2CACF,WACE,2CACF,WACE,kCACF,WACE,qCACF,WACE,kCACF,WACE,kCACF,WACE,kCACF,WACE,4BACF,WACE,sCACF,WACE,kCACF,WACE,mCACF,WACE,yCACF,WACE,oCACF,WACE,oCACF,WACE,yCACF,WACE,oCACF,WACE,gCACF,WACE,iCACF,WACE,kCACF,WACE,sCACF,WACE,oDACF,WACE,iCACF,WACE,gCACF,WACE,mCACF,WACE,iCACF,WACE,wCACF,WACE,wCACF,WACE,uCACF,WACE,+BACF,WACE,oCACF,WACE,oCACF,WACE,oCACF,WACE,0CACF,WACE,uCACF,WACE,8BACF,WACE,mCACF,WACE,mCACF,WACE,uCACF,WACE,uCACF,WACE,4CACF,WACE,oCACF,WACE,6BACF,WACE,iCACF,WACE,iCACF,WACE,8BACF,WACE,yCACF,WACE,+CACF,WACE,sCACF,WACE,6CACF,WACE,2CACF,WACE,0CACF,WACE,yCACF,WACE,6CACF,WACE,sCACF,WACE,oCACF,WACE,gCACF,WACE,qCACF,WACE,oCACF,WACE,sCACF,WACE,mCACF,WACE,2CACF,WACE,uCACF,WACE,0CACF,WACE,gCACF,WACE,wCACF,WACE,qCACF,WACE,oCACF,WACE,wCACF,WACE,kCACF,WACE,qCACF,WACE,gCACF,WACE,iCACF,WACE,+BACF,WACE,sCACF,WACE,sCACF,WACE,+BACF,WACE,sCACF,WACE,+BACF,WACE,gCACF,WACE,8BACF,WACE,iCACF,WACE,6BACF,WACE,gCACF,WACE,iCACF,WACE,qCACF,WACE,iCACF,WACE,0CACF,WACE,yCACF,WACE,4CACF,WACE,mDACF,WACE,6CACF,WACE,oDACF,WACE,0CACF,WACE,iDACF,WACE,4CACF,WACE,mDACF,WACE,oCACF,WACE,6BACF,WACE,mCACF,WACE,iCACF,WACE,gCACF,WACE,8BACF,WACE,qCACF,WACE,4CACF,WACE,6CACF,WACE,2CACF,WACE,gCACF,WACE,iCACF,WACE,+BACF,WACE,mCACF,WACE,gCACF,WACE,wCACF,WACE,iCACF,WACE,+BACF,WACE,mCACF,WACE,uCACF,WACE,gCACF,WACE,wCACF,WACE,yCACF,WACE,8CACF,WACE,0CACF,WACE,yCACF,WACE,gDACF,WACE,sCACF,WACE,mCACF,WACE,uCACF,WACE,uCACF,WACE,+BACF,WACE,mCACF,WACE,uCACF,WACE,yCACF,WACE,4CACF,WACE,mCACF,WACE,uCACF,WACE,mCACF,WACE,0CACF,WACE,sCACF,WACE,4CACF,WACE,sCACF,WACE,wCACF,WACE,uCACF,WACE,qCACF,WACE,4CACF,WACE,6BACF,WACE,iCACF,WACE,8BACF,WACE,sCACF,WACE,gDACF,WACE,uCACF,WACE,uCACF,WACE,sCACF,WACE,wCACF,WACE,sCACF,WACE,qCACF,WACE,qCACF,WACE,qCACF,WACE,qCACF,WACE,kCACF,WACE,wCACF,WACE,uCACF,WACE,sCACF,WACE,uCACF,WACE,wCACF,WACE,8BACF,WACE,oCACF,WACE,qCACF,WACE,0CACF,WACE,2CACF,WACE,qCACF,WACE,sCACF,WACE,iDACF,WACE,gDACF,WACE,gDACF,WACE,4BACF,WACE,8BACF,WACE,kCACF,WACE,uCACF,WACE,2CACF,WACE,+CACF,WACE,kCACF,WACE,0CACF,WACE,2CACF,WACE,4BACF,WACE,iCACF,WACE,gCACF,WACE,mCACF,WACE,8BACF,WACE,0CACF,WACE,4BACF,WACE,8BACF,WACE,mCACF,WACE,mCACF,WACE,oCACF,WACE,yCACF,WACE,2CACF,WACE,4CACF,WACE,sCACF,WACE,sCACF,WACE,oCACF,WACE,qCACF,WACE,2CACF,WACE,kDACF,WACE,4CACF,WACE,sCACF,WACE,wCACF,WACE,iCACF,WACE,iCACF,WACE,iCACF,WACE,sCACF,WACE,+BACF,WACE,6BACF,WACE,iCACF,WACE,gCACF,WACE,6BACF,WACE,0CACF,WACE,iCACF,WACE,iCACF,WACE,8BACF,WACE,oCACF,WACE,kCACF,WACE,2CACF,WACE,gDACF,WACE,uCACF,WACE,uCACF,WACE,gCACF,WACE,qCACF,WACE,oCACF,WACE,8BACF,WACE,uCACF,WACE,sCACF,WACE,oCACF,WACE,6CACF,WACE,mDACF,WACE,gCACF,WACE,qCACF,WACE,mCACF,WACE,uCACF,WACE,+BACF,WACE,mCACF,WACE,gCACF,WACE,+CACF,WACE,oCACF,WACE,iCACF,WACE,gCACF,WACE,kCACF,WACE,wCACF,WACE,sCACF,WACE,oCACF,WACE,wCACF,WACE,sCACF,WACE,8BACF,WACE,oCACF,WACE,wCACF,WACE,8CACF,WACE,4CACF,WACE,mCACF,WACE,6BACF,WACE,8BACF,WACE,qCACF,WACE,8BACF,WACE,8BACF,WACE,6CACF,WACE,yCACF,WACE,wCACF,WACE,+CACF,WACE,sCACF,WACE,qCACF,WACE,kCACF,WACE,mCACF,WACE,oCACF,WACE,gCACF,WACE,+BACF,WACE,kCACF,WACE,0CACF,WACE,gCACF,WACE,qCACF,WACE,sCACF,WACE,kCACF,WACE,0CACF,WACE,kCACF,WACE,kCACF,WACE,+BACF,WACE,+BACF,WACE,6BACF,WACE,wCACF,WACE,gCACF,WACE,oCACF,WACE,+BACF,WACE,sCACF,WACE,8CACF,WACE,oCACF,WACE,0CACF,WACE,yCACF,WACE,uCACF,WACE,oCACF,WACE,6CACF,WACE,gCACF,WACE,oCACF,WACE,+BACF,WACE,kCACF,WACE,mCACF,WACE,sCACF,WACE,+BACF,WACE,kCACF,WACE,kCACF,WACE,iCACF,WACE,6CACF,WACE,8BACF,WACE,kCACF,WACE,+BACF,WACE,6CACF,WACE,mCACF,WACE,uCACF,WACE,qCACF,WACE,sCACF,WACE,iCACF,WACE,oCACF,WACE,mCACF,WACE,wCACF,WACE,gCACF,WACE,2CACF,WACE,qCACF,WACE,gCACF,WACE,kCACF,WACE,oCACF,WACE,+BACF,WACE,sCACF,WACE,sCACF,WACE,6CACF,WACE,uCACF,WACE,gCACF,WACE,6BACF,WACE,yCACF,WACE,qCACF,WACE,8CACF,WACE,6CACF,WACE,oCACF,WACE,qCACF,WACE,wCACF,WACE,yCACF,WACE,uCACF,WACE,8BACF,WACE,+BACF,WACE,+BACF,WACE,iCACF,WACE,6BACF,WACE,4BACF,WACE,6BACF,WACE,oCACF,WACE,mCACF,WACE,4CACF,WACE,kCACF,WACE,qCACF,WACE,uCACF,WACE,gCACF,WACE,kCACF,WACE,kCACF,WACE,sCACF,WACE,6BACF,WACE,iCACF,WACE,gCACF,WACE,qCACF,WACE,gCACF,WACE,8BACF,WACE,gCACF,WACE,qCACF,WACE,iCACF,WACE,sCACF,WACE,+BACF,WACE,+BACF,WACE,gCACF,WACE,8BACF,WACE,mCACF,WACE,8CACF,WACE,6CACF,WACE,6CACF,WACE,wCACF,WACE,4CACF,WACE,8CACF,WACE,qCACF,WACE,mCACF,WACE,2CACF,WACE,qCACF,WACE,2BACF,WACE,gCACF,WACE,sCACF,WACE,mCACF,WACE,+BACF,WACE,mCACF,WACE,iCACF,WACE,wCACF,WACE,6CACF,WACE,gDACF,WACE,gCACF,WACE,mCACF,WACE,yCACF,WACE,6BACF,WACE,6BACF,WACE,yCACF,WACE,4CACF,WACE,uCACF,WACE,oCACF,WACE,wCACF,WACE,sCACF,WACE,gCACF,WACE,oCACF,WACE,+CACF,WACE,0CACF,WACE,4CACF,WACE,gDACF,WACE,oDACF,WACE,iDACF,WACE,iCACF,WACE,iCACF,WACE,+CACF,WACE,8CACF,WACE,gDACF,WACE,2CACF,WACE,4CACF,WACE,sCACF,WACE,yCACF,WACE,0CACF,WACE,+CACF,WACE,iDACF,WACE,iDACF,WACE,4CACF,WACE,8CACF,WACE,0CACF,WACE,uCACF,WACE,uCACF,WACE,wCACF,WACE,yCACF,WACE,iDACF,WACE,uCACF,WACE,oCACF,WACE,8BACF,WACE,2CACF,WACE,uCACF,WACE,+BACF,WACE,oCACF,WACE,6BACF,WACE,+BACF,WACE,iCACF,WACE,gCACF,WACE,qCACF,WACE,wCACF,WACE,sCACF,WACE,+CACF,WACE,mCACF,WACE,iCACF,WACE,mCACF,WACE,+BACF,WACE,gCACF,WACE,mCACF,WACE,sCACF,WACE,6BACF,WACE,sCACF,WACE,8CACF,WACE,8CACF,WACE,4CACF,WACE,kDACF,WACE,kDACF,WACE,oEACF,WACE,oEACF,WACE,+CACF,WACE,+CACF,WACE,6CACF,WACE,4CACF,WACE,0CACF,WACE,0CACF,WACE,+CACF,WACE,wCACF,WACE,4DACF,WACE,wCACF,WACE,oDACF,WACE,sEACF,WACE,mDACF,WACE,iCACF,WACE,iCACF,WACE,uCACF,WACE,0CACF,WACE,mCACF,WACE,4BACF,WACE,sCACF,WACE,kCACF,WACE,sCACF,WACE,iCACF,WACE,kCACF,WACE,0CACF,WACE,qCACF,WACE,sCACF,WACE,qCACF,WACE,kCACF,WACE,mCACF,WACE,mCACF,WACE,sCACF,WACE,4BACF,WACE,mCACF,WACE,iCACF,WACE,uCACF,WACE,+BACF,WACE,qCACF,WACE,gCACF,WACE,mCACF,WACE,oCACF,WACE,6BACF,WACE,wCACF,WACE,oCACF,WACE,6BACF,WACE,sCACF,WACE,4BACF,WACE,qCACF,WACE,+BACF,WACE,8BACF,WACE,sCACF,WACE,mCACF,WACE,mCACF,WACE,4BACF,WACE,kCACF,WACE,wCACF,WACE,sCACF,WACE,0CACF,WACE,yCACF,WACE,gCACF,WACE,sCACF,WACE,sCACF,WACE,0CACF,WACE,sCACF,WACE,8BACF,WACE,mCACF,WACE,oCACF,WACE,8BACF,WACE,+BACF,WACE,mCACF,WACE,wCACF,WACE,0CACF,WACE,uCACF,WACE,uCACF,WACE,wCACF,WACE,oCACF,WACE,0CACF,WACE,wCACF,WACE,sCACF,WACE,uCACF,WACE,4CACF,WACE,mCACF,WACE,2CACF,WACE,qCACF,WACE,qCACF,WACE,sCACF,WACE,sCACF,WACE,0CACF,WACE,+BACF,WACE,oCACF,WACE,mCACF,WACE,0CACF,WACE,2CACF,WACE,gCACF,WACE,+BACF,WACE,6BACF,WACE,oCACF,WACE,8CACF,WACE,kCACF,WACE,qCACF,WACE,uCACF,WACE,kCACF,WACE,8BACF,WACE,8BACF,WACE,+CACF,WACE,8CACF,WACE,+CACF,WACE,8CACF,WACE,sCACF,WACE,6BACF,WACE,oCACF,WACE,0CACF,WACE,gCACF,WACE,8BACF,WACE,6CACF,WACE,mCACF,WACE,8BACF,WACE,iCACF,WACE,mCACF,WACE,+BACF,WACE,mCACF,WACE,wCACF,WACE,iCACF,WACE,8BACF,WACE,gDACF,WACE,iDACF,WACE,gCACF,WACE,kCACF,WACE,sCACF,WACE,kCACF,WACE,sCACF,WACE,+BACF,WACE,kCACF,WACE,8BACF,WACE,sCACF,WACE,oCACF,WACE,+CACF,WACE,2CACF,WACE,gCACF,WACE,sCACF,WACE,gCACF,WACE,uCACF,WACE,mCACF,WACE,mCACF,WACE,+CACF,WACE,kCACF,WACE,yCACF,WACE,6CACF,WACE,8BACF,WACE,mCACF,WACE,uCACF,WACE,mCACF,WACE,uCACF,WACE,oCACF,WACE,wCACF,WACE,iCACF,WACE,qCACF,WACE,uCACF,WACE,+CACF,WACE,mDACF,WACE,uCACF,WACE,sCACF,WACE,oCACF,WACE,qCACF,WACE,qCACF,WACE,kCACF,WACE,6BACF,WACE,iCACF,WACE,sCACF,WACE,kCACF,WACE,qCACF,WACE,+CACF,WACE,oDACF,WACE,uDACF,WACE,sCACF,WACE,0CACF,WACE,yCACF,WACE,4BACF,WACE,uCACF,WACE,kCACF,WACE,oCACF,WACE,yCACF,WACE,mCACF,WACE,mCACF,WACE,+BACF,WACE,uCACF,WACE,mCACF,WACE,4BACF,WACE,kCACF,WACE,uCACF,WACE,qCACF,WACE,8BACF,WACE,6BACF,WACE,iCACF,WACE,mCACF,WACE,iCACF,WACE,wCACF,WACE,qCACF,WACE,iCACF,WACE,gCACF,WACE,sCACF,WACE,oCACF,WACE,oCACF,WACE,sCACF,WACE,uCACF,WACE,6CACF,WACE,gDACF,WACE,8CACF,WACE,2CACF,WACE,2CACF,WACE,qCACF,WACE,gCACF,WACE,gCACF,WACE,uCACF,WACE,iCACF,WACE,mCACF,WACE,wCACF,WACE,mCACF,WACE,uCACF,WACE,2CACF,WACE,iCACF,WACE,qCACF,WACE,yCACF,WACE,uCACF,WACE,qCACF,WACE,+BACF,WACE,sCACF,WACE,kCACF,WACE,iCACF,WACE,8BACF,WACE,iCACF,WACE,wCACF,WACE,gCACF,WACE,uCACF,WACE,kCACF,WACE,yCACF,WACE,oCACF,WACE,8BACF,WACE,4BACF,WACE,8BACF,WACE,mCACF,WACE,kCACF,WACE,8BACF,WACE,6BACF,WACE,iCACF,WACE,8BACF,WACE,gCACF,WACE,kCACF,WACE,6BACF,WACE,6BACF,WACE,sCACF,WACE,gCACF,WACE,8BACF,WACE,6BACF,WACE,mCACF,WACE,kDACF,WACE,kCACF,WACE,oCACF,WACE,0CACF,WACE,kCACF,WACE,uCACF,WACE,sCACF,WACE,sCACF,WACE,yCACF,WACE,oCACF,WACE,oCACF,WACE,qCACF,WACE,4BACF,WACE,gCACF,WACE,4BACF,WACE,6BACF,WACE,iCACF,WACE,kCACF,WACE,mCACF,WACE,wCACF,WACE,yCACF,WACE,yCACF,WACE,0CACF,WACE,kCACF,WACE,sCACF,WACE,2BACF,WACE,+BACF,WACE,oCACF,WACE,sCACF,WACE,oCACF,WACE,qCACF,WACE,iCACF,WACE,kCACF,WACE,6BACF,WACE,oCACF,WACE,oCACF,WACE,oCACF,WACE,oCACF,WACE,iCACF,WACE,+BACF,WACE,wCACF,WACE,gCACF,WACE,+BACF,WACE,oCACF,WACE,4BACF,WACE,gCACF,WACE,iCACF,WACE,kCACF,WACE,qCACF,WACE,iCACF,WACE,sCACF,WACE,8CACF,WACE,8CACF,WACE,2CACF,WACE,4CACF,WACE,wCACF,WACE,+CACF,WACE,uCACF,WACE,kCACF,WACE,mCACF,WACE,0CACF,WACE,2CACF,WACE,yCACF,WACE,mCACF,WACE,oCACF,WACE,sCACF,WACE,uCACF,WACE,qCACF,WACE,iCACF,WACE,qCACF,WACE,wCACF,WACE,4CACF,WACE,oCACF,WACE,mCACF,WACE,sCACF,WACE,oCACF,WACE,yCACF,WACE,mCACF,WACE,uCACF,WACE,qCACF,WACE,yCACF,WACE,kCACF,WACE,iCACF,WACE,sCACF,WACE,mCACF,WACE,oCACF,WACE,kCACF,WACE,oCACF,WACE,mCACF,WACE,qCACF,WACE,oCACF,WACE,sCACF,WACE,kCACF,WACE,iCACF,WACE,8BACF,WACE,mCACF,WACE,uCACF,WACE,mCACF,WACE,uCACF,WACE,kCACF,WACE,gCACF,WACE,oCACF,WACE,wCACF,WACE,oCACF,WACE,mCACF,WACE,kCACF,WACE,2CACF,WACE,gCACF,WACE,oCACF,WACE,iCACF,WACE,+BACF,WACE,+BACF,WACE,wCACF,WACE,0CACF,WACE,sCACF,WACE,kCACF,WACE,kCACF,WACE,gCACF,WACE,sCACF,WACE,6BACF,WACE,8BACF,WACE,oCACF,WACE,kCACF,WACE,8BACF,WACE,qCACF,WACE,mCACF,WACE,wCACF,WACE,8BACF,WACE,oCACF,WACE,gCACF,WACE,kCACF,WACE,wCACF,WACE,sCACF,WACE,iCACF,WACE,iCACF,WACE,sCACF,WACE,oCACF,WACE,2BACF,WACE,4BACF,WACE,kCACF,WACE,sCACF,WACE,oCACF,WACE,gCACF,WACE,+BACF,WACE,gCACF,WACE,6BACF,WACE,iCACF,WACE,iCACF,WACE,0CACF,WACE,sCACF,WACE,gCACF,WACE,mCACF,WACE,qCACF,WACE,mCACF,WACE,6BACF,WACE,mCACF,WACE,mCACF,WACE,qCACF,WACE,uCACF,WACE,qCACF,WACE,kCACF,WACE,kCACF,WACE,iCACF,WACE,sCACF,WACE,6CACF,WACE,uCACF,WACE,6CACF,WACE,qDACF,WACE,2CACF,WACE,mCACF,WACE,+BACF,WACE,iCACF,WACE,8BACF,WACE,qCACF,WACE,kCACF,WACE,6BACF,WACE,qCACF,WACE,iCACF,WACE,qCACF,WACE,0CACF,WACE,mCACF,WACE,0CACF,WACE,2CACF,WACE,kCACF,WACE,uCACF,WACE,gCACF,WACE,6BACF,WACE,6CACF,WACE,gCACF,WACE,oCACF,WACE,iCACF,WACE,qCACF,G;ACh0IF;;CAAA,CAIA,WACE,iBACA,gBACA,kBACA,kCACA,mHAGF,WACE,iBACA,gBACA,kBACA,kCACA,mHAGF,WACE,iBACA,gBACA,kBACA,kCACA,mHAGF,WACE,iBACA,gBACA,kBACA,kCACA,mHAGF,WACE,iBACA,gBACA,kBACA,kCACA,mHAGF,WACE,iBACA,gBACA,kBACA,kCACA,qHAGF,WACE,iBACA,gBACA,kBACA,kCACA,qHAGF,WACE,iBACA,gBACA,kBACA,kCACA,qHAGF,WACE,0BACA,gBACA,kBACA,kCACA,qHAGF,WACE,0BACA,gBACA,kBACA,kCACA,qHAGF,WACE,iBACA,gBACA,kBACA,kCACA,qHAGF,WACE,iBACA,gBACA,kBACA,kCACA,qHAGF,WACE,iBACA,gBACA,kBACA,kCACA,qHAGF,WACE,iBACA,gBACA,kBACA,kCACA,qHAGF,WACE,iBACA,gBACA,kBACA,kCACA,qHAGF,WACE,iBACA,gBACA,kBACA,kCACA,qHAGF,WACE,iBACA,gBACA,kBACA,kCACA,I;ACxIF,qCACA,qCACA,qCACA,qCAGA,8CACA,0DAGA,oCACA,gE;ACZA,w1B;ACAA,SCIA,cACE,cACA,eACA,iBACA,sBACA,yBACA,kBAEA,aACE,eACA,kBACA,yBACA,yHAEA,aAME,mKAEA,eACE,qBAIJ,gBACE,qBAGF,gBACE,qBAGF,gBACE,qBAGF,gBACE,qBAGF,gBACE,qBAGF,gBACE,oBAGF,gCACE,qBACA,0BAGF,yBACE,qBAGF,iBACE,4CAGF,oBAEE,6BAGF,iBACE,yBAGF,gBACE,8BAIJ,cAEE,YACA,cAGF,qBACE,kBACA,yBACA,WACA,aACA,sBACA,eACA,gBACA,cACA,mBACA,kBACA,oBAGF,aACE,uBACA,uBAIA,YACE,mBACA,8BAEA,cACE,mBACA,iCAEA,mBACE,sBACA,eACA,kDAEA,aACE,iBACA,eACA,gCAIJ,UACE,qBACA,6BAIJ,WACE,qBACA,sBAIJ,wBACE,sBACA,gBACA,kBACA,YACA,iBACA,+CAEA,UAEE,uCAGF,WACE,eACA,iBACA,iBACA,cAMR,qBACE,0BACA,gCAEA,QACE,gBACA,mBAGF,SACE,4BACA,oBAGF,sBACE,yBAEA,SACE,gCAIJ,WACE,sDAEA,yBACE,WAKN,cACE,MACA,WACA,WACA,SACA,aACA,eCnMA,eACE,qBAuBF,mBACE,YACA,gEAGF,kBAEE,gBACA,eACA,gEACA,+CAGF,oBACE,8DAGF,cAEE,6BACA,wDAGF,aAEE,+BAGF,gBACE,eACA,0BAGF,iBACE,SACA,WACA,cACA,iCAGF,iBACE,oCAGF,oBACE,yBCtEc,aDwEd,iBACA,kBACA,WACA,eACA,4BACA,gBACA,uBACA,mBACA,oCAGF,kBACE,oBAGF,2BACE,6BAEA,QACE,eACA,iBACA,sBAGF,UACE,SACA,4BAGF,UACE,0BAGF,YACE,0BACA,kCApGJ,mBACE,sBACA,uGAEA,mBAEE,uCAGF,gBACE,mBAgGJ,WACE,uBAGF,aACE,UAGF,eACE,iBACA,kBACA,YAIJ,YACE,YACA,sBACA,+BAGF,sBACE,mBACA,gBACA,cACA,kFAGF,WAGE,+BACA,yBACA,cACA,6GAEA,uBACE,2CAIJ,0BAEE,qCACA,yBC7JgB,kBD+JhB,WACA,eACA,iBACA,uBAGF,sBACE,mBACA,0BACA,gBACA,qBAGF,YACE,sGAGF,oBAKE,mBACA,WACA,gBAGF,uBACE,gBACA,mBACA,uBACA,gBACA,gBAGF,YACE,gBACA,YACA,sBAGF,eACE,cACA,gBAGF,YACE,kBAGF,gBACE,kBAGF,YACE,4DACA,qBAGF,WACE,mBACA,eAGF,YACE,mBACA,mCAEA,cACE,iBACA,6BAGF,eACE,gBACA,kBACA,OACA,4BAGF,eACE,aACA,aACA,oCAEA,eACE,kCAGF,wBCxPc,cD0PZ,gBACA,kBACA,iBACA,YACA,uEAEA,UAEE,mDAGF,WACE,eACA,iBACA,iBACA,0CAlQN,mBACE,sBACA,cAqQE,eACA,iBACA,uHArQF,mBAEE,+CAGF,gBACE,2DAiQA,cACE,gCAKN,MACE,6BAGF,MACE,aACA,eACA,oBACA,YACA,cACA,qBAGF,oBACE,uCAIJ,UAEE,uCAGF,eACE,YACA,yEAGF,qBAEE,qBAGF,mBACE,cAGF,YACE,iBACA,iBACA,SACA,aAGF,YACE,SACA,YACA,sBACA,QAIF,YACE,SACA,eE9UF,yBACE,0BAEA,iBACE,gBACA,OACA,oBAGF,WACE,sBAGF,WAKE,iBACA,gBACA,oBACA,wBAPA,cACE,oCAWJ,iBACE,gBACA,OACA,+BAGF,iBACE,UAIJ,eACE,aAGF,iBACE,UACA,8BAEA,WACE,YACA,UAIJ,YACE,oBACA,eACA,8BACA,sBAEA,mBACE,YAGF,UACE,gBAKF,YACE,SACA,eACA,6BACA,6DAEA,YAEE,gBAIJ,SACE,8GAEA,wBAGE,mCAGF,iBACE,gCAIJ,cAEE,YACA,cACA,iBACA,uBAGF,iBACE,iBACA,4BAGF,cACE,YACA,cACA,WACA,cAIJ,kBACE,SAGF,YACE,uBAGF,YACE,oBAIA,eACE,cACA,aAGF,kBACE,iBCpIF,SACE,WACA,4BAGF,WACE,aACA,MCRJ,YACE,iBACA,sBACA,mBACA,iBAEA,SACE,iBACA,gBAIJ,4BACE,GAGF,aHhBkB,+BGoBlB,WAGE,YAGF,eACE,OAGF,aACE,eAGE,YACE,iBAGF,YACE,YACA,mBAGF,wBACE,KC7CN,WACE,oBACA,WAIA,UACE,gBAGF,wBACE,kCAIJ,aACE,mBACA,mBACA,oBACA,YACA,cACA,+BACA,YACA,iBAGF,YACE,iCACA,eACA,8BACA,mBACA,mBAEA,iBACE,iCAIJ,WACE,cACA,YAGF,YACE,mBAGF,YACE,YACA,yBACA,iEAGF,qBAGE,aAGF,8BACE,qBAEA,QACE,iBACA,gCAGF,aACE,oBACA,YACA,sCAGF,QACE,gBACA,WACA,gBAIJ,YACE,mBACA,mCAIA,SACE,oCAGF,mBACE,eACA,eACA,qBACA,6BAGF,YACE,OACA,iBACA,mBACA,+EAGF,wBAEE,kCAIJ,qBAEE,kBAGF,SACE,+BACA,YACA,wBAEA,wBACE,yCAIJ,WAEE,iBAGF,YACE,gBAGF,YACE,wBAGF,eACE,MACA,mBAGF,UACE,sBAEA,eACE,mBACA,wBAGF,YACE,kBACA,mBACA,oBACA,0BAIJ,iBACE,YACE,mBAGF,eACE,cACA,YCrKJ,WACE,cAEA,SACE,2BAEA,kBACE,mDAGF,UACE,cACA,aAIJ,QACE,mBAGF,cACE,iBACA,YACA,mEAGF,WAEE,iBACA,eACA,mBAGF,aACE,kBACA,SAIJ,gBACE,kBAGF,WACE,gEC1CA,eAEE,iCAIF,kBACE,2BAIJ,cACE,wBAGF,QACE,mBACA,OAGF,YACE,MAGF,MACE,mgBC9BA,wBAiBE,qFAGF,wBAEE,2QAGF,wBAME,wCAGF,wBACE,yBAGF,0BACE,0CAGF,oBACE,wEAGF,wBAEE,yXAGF,aAYE,yEAGF,mCAGE,sCAGF,wBACE,4BAGF,wBACE,iCAGF,wBACE,mJAGF,wBAGE,sBAGF,2BACE,4DAGF,wBAEE,0BAGF,8BACE,oFAGF,mBAGE,mHAGF,iBAIE,mCAGF,qBACE,iDAGF,aAEE,yBACA,2CAGF,qBACE,wBACE,aC1HN,mBACE,4CACA,mBACA,kBACA,iBCFF,4BACE,mBACA,kBACA,eACA,UACA,WACA,qBACA,cACA,oBACA,sBACA,iBACA,mBACA,cACA,mCAGA,kCAGA,kCAGA,6BAGA,wBAEA,cACE,wBAGF,cACE,wBAGF,cACE,wBAGF,cACE,0BAGF,qBACE,uCAEA,qBACE,2BAIJ,UACE,wCAEA,0BACE,kDAUN,mBAEE,WACA,kBACA,mBACA,oBACA,oBACA,cACA,qBACA,iBAGA,6BACA,mBAGF,WACE,sBAGF,WACE,wBAGF,WACE,oBAGF,WACE,oBAGF,WACE,cAGF,2BACE,8BACA,0BACA,iBACA,sBAEA,UACE,cACA,WACA,YACA,WACA,qBACA,+BAGF,uEACE,6BAGF,uEACE,8BAGF,uEACE,8BAGF,uEACE,4BAIJ,WACE,yBAGF,WACE,uBAGF,WACE,qBAGF,WACE,uBAGF,WACE,sBAGF,WACE,uBAGF,WACE,oBAGF,WACE,gDAGF,aAEE,gCACA,mBACA,4DAGF,mCAEE,cCvLF,KAGE,iBACE,sBACA,OAGF,UACE,KAGF,yBACE,wLAMF,uBAeE,MAGF,yBACE,UAGF,yBACE,SAGF,sBACE,wBAIF,2BACE,oBAIF,4BACE,0BAIF,mBACE,OAGF,UACE,SACA,UACA,UAGF,UACE,4CCnEJ,aACE,2DACE,4CAIJ,6CACE,kBAGE,aAGF,gBACE,uCAIJ,gBACE,iBACE,4CAIJ,uBACE,cAIE,OAGF,aACE,cACA,QAGF,cACE,YACA,qBAGF,oBACE,gBAGF,aACE,mBAGF,6BACE,UAGF,cACE,iBACA,kBACA,qBACA,eACA,oBAEA,gBACE,cAIJ,sBACE,mBAEA,SACE,OAIJ,oBACE,YACA,MAGF,cACE,YAGF,YACE,gBAGF,mBACE,yCAEA,UAEE,2BAIJ,UACE,wCAGF,OACE,oEAIJ,aACE,cACE,cACA,mEAIJ,aAEI,SACE,cACA,cAGF,cACE,cACA,cAGF,cACE,cACA,cAGF,SACE,cACA,cAGF,aACE,cACA,cAGF,cACE,cACA,cAGF,SACE,cACA,cAGF,cACE,cACA,cAGF,cACE,cACA,eAGF,UACE,cACA,4CAKN,YACE,YACE,aAGF,SACE,WAGF,SACE,0CAGF,YACE,oBAIJ,KACE,aACE,kD","sources":["webpack://wallabag/./node_modules/materialize-css/dist/css/materialize.css","webpack://wallabag/./node_modules/annotator/css/annotator.css","webpack://wallabag/./node_modules/material-design-icons-iconfont/dist/material-design-icons.css","webpack://wallabag/./node_modules/lato-font/css/lato-font.css","webpack://wallabag/./assets/themes/_global/global.scss","webpack://wallabag/./node_modules/highlight.js/styles/atom-one-light.css","webpack://wallabag/./assets/themes/material/css/index.scss","webpack://wallabag/./assets/themes/material/css/article.scss","webpack://wallabag/./assets/themes/material/css/cards.scss","webpack://wallabag/./assets/themes/material/css/variables.scss","webpack://wallabag/./assets/themes/material/css/entries.scss","webpack://wallabag/./assets/themes/material/css/filters.scss","webpack://wallabag/./assets/themes/material/css/layout.scss","webpack://wallabag/./assets/themes/material/css/nav.scss","webpack://wallabag/./assets/themes/material/css/sidenav.scss","webpack://wallabag/./assets/themes/material/css/various.scss","webpack://wallabag/./assets/themes/material/css/dark_theme.scss","webpack://wallabag/./assets/themes/material/css/fonts.scss","webpack://wallabag/./assets/themes/material/css/icons.scss","webpack://wallabag/./assets/themes/material/css/print.scss","webpack://wallabag/./assets/themes/material/css/media_queries.scss"],"sourcesContent":["/*!\n * Materialize v0.98.2 (http://materializecss.com)\n * Copyright 2014-2015 Materialize\n * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)\n */\n.materialize-red {\n background-color: #e51c23 !important;\n}\n\n.materialize-red-text {\n color: #e51c23 !important;\n}\n\n.materialize-red.lighten-5 {\n background-color: #fdeaeb !important;\n}\n\n.materialize-red-text.text-lighten-5 {\n color: #fdeaeb !important;\n}\n\n.materialize-red.lighten-4 {\n background-color: #f8c1c3 !important;\n}\n\n.materialize-red-text.text-lighten-4 {\n color: #f8c1c3 !important;\n}\n\n.materialize-red.lighten-3 {\n background-color: #f3989b !important;\n}\n\n.materialize-red-text.text-lighten-3 {\n color: #f3989b !important;\n}\n\n.materialize-red.lighten-2 {\n background-color: #ee6e73 !important;\n}\n\n.materialize-red-text.text-lighten-2 {\n color: #ee6e73 !important;\n}\n\n.materialize-red.lighten-1 {\n background-color: #ea454b !important;\n}\n\n.materialize-red-text.text-lighten-1 {\n color: #ea454b !important;\n}\n\n.materialize-red.darken-1 {\n background-color: #d0181e !important;\n}\n\n.materialize-red-text.text-darken-1 {\n color: #d0181e !important;\n}\n\n.materialize-red.darken-2 {\n background-color: #b9151b !important;\n}\n\n.materialize-red-text.text-darken-2 {\n color: #b9151b !important;\n}\n\n.materialize-red.darken-3 {\n background-color: #a21318 !important;\n}\n\n.materialize-red-text.text-darken-3 {\n color: #a21318 !important;\n}\n\n.materialize-red.darken-4 {\n background-color: #8b1014 !important;\n}\n\n.materialize-red-text.text-darken-4 {\n color: #8b1014 !important;\n}\n\n.red {\n background-color: #F44336 !important;\n}\n\n.red-text {\n color: #F44336 !important;\n}\n\n.red.lighten-5 {\n background-color: #FFEBEE !important;\n}\n\n.red-text.text-lighten-5 {\n color: #FFEBEE !important;\n}\n\n.red.lighten-4 {\n background-color: #FFCDD2 !important;\n}\n\n.red-text.text-lighten-4 {\n color: #FFCDD2 !important;\n}\n\n.red.lighten-3 {\n background-color: #EF9A9A !important;\n}\n\n.red-text.text-lighten-3 {\n color: #EF9A9A !important;\n}\n\n.red.lighten-2 {\n background-color: #E57373 !important;\n}\n\n.red-text.text-lighten-2 {\n color: #E57373 !important;\n}\n\n.red.lighten-1 {\n background-color: #EF5350 !important;\n}\n\n.red-text.text-lighten-1 {\n color: #EF5350 !important;\n}\n\n.red.darken-1 {\n background-color: #E53935 !important;\n}\n\n.red-text.text-darken-1 {\n color: #E53935 !important;\n}\n\n.red.darken-2 {\n background-color: #D32F2F !important;\n}\n\n.red-text.text-darken-2 {\n color: #D32F2F !important;\n}\n\n.red.darken-3 {\n background-color: #C62828 !important;\n}\n\n.red-text.text-darken-3 {\n color: #C62828 !important;\n}\n\n.red.darken-4 {\n background-color: #B71C1C !important;\n}\n\n.red-text.text-darken-4 {\n color: #B71C1C !important;\n}\n\n.red.accent-1 {\n background-color: #FF8A80 !important;\n}\n\n.red-text.text-accent-1 {\n color: #FF8A80 !important;\n}\n\n.red.accent-2 {\n background-color: #FF5252 !important;\n}\n\n.red-text.text-accent-2 {\n color: #FF5252 !important;\n}\n\n.red.accent-3 {\n background-color: #FF1744 !important;\n}\n\n.red-text.text-accent-3 {\n color: #FF1744 !important;\n}\n\n.red.accent-4 {\n background-color: #D50000 !important;\n}\n\n.red-text.text-accent-4 {\n color: #D50000 !important;\n}\n\n.pink {\n background-color: #e91e63 !important;\n}\n\n.pink-text {\n color: #e91e63 !important;\n}\n\n.pink.lighten-5 {\n background-color: #fce4ec !important;\n}\n\n.pink-text.text-lighten-5 {\n color: #fce4ec !important;\n}\n\n.pink.lighten-4 {\n background-color: #f8bbd0 !important;\n}\n\n.pink-text.text-lighten-4 {\n color: #f8bbd0 !important;\n}\n\n.pink.lighten-3 {\n background-color: #f48fb1 !important;\n}\n\n.pink-text.text-lighten-3 {\n color: #f48fb1 !important;\n}\n\n.pink.lighten-2 {\n background-color: #f06292 !important;\n}\n\n.pink-text.text-lighten-2 {\n color: #f06292 !important;\n}\n\n.pink.lighten-1 {\n background-color: #ec407a !important;\n}\n\n.pink-text.text-lighten-1 {\n color: #ec407a !important;\n}\n\n.pink.darken-1 {\n background-color: #d81b60 !important;\n}\n\n.pink-text.text-darken-1 {\n color: #d81b60 !important;\n}\n\n.pink.darken-2 {\n background-color: #c2185b !important;\n}\n\n.pink-text.text-darken-2 {\n color: #c2185b !important;\n}\n\n.pink.darken-3 {\n background-color: #ad1457 !important;\n}\n\n.pink-text.text-darken-3 {\n color: #ad1457 !important;\n}\n\n.pink.darken-4 {\n background-color: #880e4f !important;\n}\n\n.pink-text.text-darken-4 {\n color: #880e4f !important;\n}\n\n.pink.accent-1 {\n background-color: #ff80ab !important;\n}\n\n.pink-text.text-accent-1 {\n color: #ff80ab !important;\n}\n\n.pink.accent-2 {\n background-color: #ff4081 !important;\n}\n\n.pink-text.text-accent-2 {\n color: #ff4081 !important;\n}\n\n.pink.accent-3 {\n background-color: #f50057 !important;\n}\n\n.pink-text.text-accent-3 {\n color: #f50057 !important;\n}\n\n.pink.accent-4 {\n background-color: #c51162 !important;\n}\n\n.pink-text.text-accent-4 {\n color: #c51162 !important;\n}\n\n.purple {\n background-color: #9c27b0 !important;\n}\n\n.purple-text {\n color: #9c27b0 !important;\n}\n\n.purple.lighten-5 {\n background-color: #f3e5f5 !important;\n}\n\n.purple-text.text-lighten-5 {\n color: #f3e5f5 !important;\n}\n\n.purple.lighten-4 {\n background-color: #e1bee7 !important;\n}\n\n.purple-text.text-lighten-4 {\n color: #e1bee7 !important;\n}\n\n.purple.lighten-3 {\n background-color: #ce93d8 !important;\n}\n\n.purple-text.text-lighten-3 {\n color: #ce93d8 !important;\n}\n\n.purple.lighten-2 {\n background-color: #ba68c8 !important;\n}\n\n.purple-text.text-lighten-2 {\n color: #ba68c8 !important;\n}\n\n.purple.lighten-1 {\n background-color: #ab47bc !important;\n}\n\n.purple-text.text-lighten-1 {\n color: #ab47bc !important;\n}\n\n.purple.darken-1 {\n background-color: #8e24aa !important;\n}\n\n.purple-text.text-darken-1 {\n color: #8e24aa !important;\n}\n\n.purple.darken-2 {\n background-color: #7b1fa2 !important;\n}\n\n.purple-text.text-darken-2 {\n color: #7b1fa2 !important;\n}\n\n.purple.darken-3 {\n background-color: #6a1b9a !important;\n}\n\n.purple-text.text-darken-3 {\n color: #6a1b9a !important;\n}\n\n.purple.darken-4 {\n background-color: #4a148c !important;\n}\n\n.purple-text.text-darken-4 {\n color: #4a148c !important;\n}\n\n.purple.accent-1 {\n background-color: #ea80fc !important;\n}\n\n.purple-text.text-accent-1 {\n color: #ea80fc !important;\n}\n\n.purple.accent-2 {\n background-color: #e040fb !important;\n}\n\n.purple-text.text-accent-2 {\n color: #e040fb !important;\n}\n\n.purple.accent-3 {\n background-color: #d500f9 !important;\n}\n\n.purple-text.text-accent-3 {\n color: #d500f9 !important;\n}\n\n.purple.accent-4 {\n background-color: #aa00ff !important;\n}\n\n.purple-text.text-accent-4 {\n color: #aa00ff !important;\n}\n\n.deep-purple {\n background-color: #673ab7 !important;\n}\n\n.deep-purple-text {\n color: #673ab7 !important;\n}\n\n.deep-purple.lighten-5 {\n background-color: #ede7f6 !important;\n}\n\n.deep-purple-text.text-lighten-5 {\n color: #ede7f6 !important;\n}\n\n.deep-purple.lighten-4 {\n background-color: #d1c4e9 !important;\n}\n\n.deep-purple-text.text-lighten-4 {\n color: #d1c4e9 !important;\n}\n\n.deep-purple.lighten-3 {\n background-color: #b39ddb !important;\n}\n\n.deep-purple-text.text-lighten-3 {\n color: #b39ddb !important;\n}\n\n.deep-purple.lighten-2 {\n background-color: #9575cd !important;\n}\n\n.deep-purple-text.text-lighten-2 {\n color: #9575cd !important;\n}\n\n.deep-purple.lighten-1 {\n background-color: #7e57c2 !important;\n}\n\n.deep-purple-text.text-lighten-1 {\n color: #7e57c2 !important;\n}\n\n.deep-purple.darken-1 {\n background-color: #5e35b1 !important;\n}\n\n.deep-purple-text.text-darken-1 {\n color: #5e35b1 !important;\n}\n\n.deep-purple.darken-2 {\n background-color: #512da8 !important;\n}\n\n.deep-purple-text.text-darken-2 {\n color: #512da8 !important;\n}\n\n.deep-purple.darken-3 {\n background-color: #4527a0 !important;\n}\n\n.deep-purple-text.text-darken-3 {\n color: #4527a0 !important;\n}\n\n.deep-purple.darken-4 {\n background-color: #311b92 !important;\n}\n\n.deep-purple-text.text-darken-4 {\n color: #311b92 !important;\n}\n\n.deep-purple.accent-1 {\n background-color: #b388ff !important;\n}\n\n.deep-purple-text.text-accent-1 {\n color: #b388ff !important;\n}\n\n.deep-purple.accent-2 {\n background-color: #7c4dff !important;\n}\n\n.deep-purple-text.text-accent-2 {\n color: #7c4dff !important;\n}\n\n.deep-purple.accent-3 {\n background-color: #651fff !important;\n}\n\n.deep-purple-text.text-accent-3 {\n color: #651fff !important;\n}\n\n.deep-purple.accent-4 {\n background-color: #6200ea !important;\n}\n\n.deep-purple-text.text-accent-4 {\n color: #6200ea !important;\n}\n\n.indigo {\n background-color: #3f51b5 !important;\n}\n\n.indigo-text {\n color: #3f51b5 !important;\n}\n\n.indigo.lighten-5 {\n background-color: #e8eaf6 !important;\n}\n\n.indigo-text.text-lighten-5 {\n color: #e8eaf6 !important;\n}\n\n.indigo.lighten-4 {\n background-color: #c5cae9 !important;\n}\n\n.indigo-text.text-lighten-4 {\n color: #c5cae9 !important;\n}\n\n.indigo.lighten-3 {\n background-color: #9fa8da !important;\n}\n\n.indigo-text.text-lighten-3 {\n color: #9fa8da !important;\n}\n\n.indigo.lighten-2 {\n background-color: #7986cb !important;\n}\n\n.indigo-text.text-lighten-2 {\n color: #7986cb !important;\n}\n\n.indigo.lighten-1 {\n background-color: #5c6bc0 !important;\n}\n\n.indigo-text.text-lighten-1 {\n color: #5c6bc0 !important;\n}\n\n.indigo.darken-1 {\n background-color: #3949ab !important;\n}\n\n.indigo-text.text-darken-1 {\n color: #3949ab !important;\n}\n\n.indigo.darken-2 {\n background-color: #303f9f !important;\n}\n\n.indigo-text.text-darken-2 {\n color: #303f9f !important;\n}\n\n.indigo.darken-3 {\n background-color: #283593 !important;\n}\n\n.indigo-text.text-darken-3 {\n color: #283593 !important;\n}\n\n.indigo.darken-4 {\n background-color: #1a237e !important;\n}\n\n.indigo-text.text-darken-4 {\n color: #1a237e !important;\n}\n\n.indigo.accent-1 {\n background-color: #8c9eff !important;\n}\n\n.indigo-text.text-accent-1 {\n color: #8c9eff !important;\n}\n\n.indigo.accent-2 {\n background-color: #536dfe !important;\n}\n\n.indigo-text.text-accent-2 {\n color: #536dfe !important;\n}\n\n.indigo.accent-3 {\n background-color: #3d5afe !important;\n}\n\n.indigo-text.text-accent-3 {\n color: #3d5afe !important;\n}\n\n.indigo.accent-4 {\n background-color: #304ffe !important;\n}\n\n.indigo-text.text-accent-4 {\n color: #304ffe !important;\n}\n\n.blue {\n background-color: #2196F3 !important;\n}\n\n.blue-text {\n color: #2196F3 !important;\n}\n\n.blue.lighten-5 {\n background-color: #E3F2FD !important;\n}\n\n.blue-text.text-lighten-5 {\n color: #E3F2FD !important;\n}\n\n.blue.lighten-4 {\n background-color: #BBDEFB !important;\n}\n\n.blue-text.text-lighten-4 {\n color: #BBDEFB !important;\n}\n\n.blue.lighten-3 {\n background-color: #90CAF9 !important;\n}\n\n.blue-text.text-lighten-3 {\n color: #90CAF9 !important;\n}\n\n.blue.lighten-2 {\n background-color: #64B5F6 !important;\n}\n\n.blue-text.text-lighten-2 {\n color: #64B5F6 !important;\n}\n\n.blue.lighten-1 {\n background-color: #42A5F5 !important;\n}\n\n.blue-text.text-lighten-1 {\n color: #42A5F5 !important;\n}\n\n.blue.darken-1 {\n background-color: #1E88E5 !important;\n}\n\n.blue-text.text-darken-1 {\n color: #1E88E5 !important;\n}\n\n.blue.darken-2 {\n background-color: #1976D2 !important;\n}\n\n.blue-text.text-darken-2 {\n color: #1976D2 !important;\n}\n\n.blue.darken-3 {\n background-color: #1565C0 !important;\n}\n\n.blue-text.text-darken-3 {\n color: #1565C0 !important;\n}\n\n.blue.darken-4 {\n background-color: #0D47A1 !important;\n}\n\n.blue-text.text-darken-4 {\n color: #0D47A1 !important;\n}\n\n.blue.accent-1 {\n background-color: #82B1FF !important;\n}\n\n.blue-text.text-accent-1 {\n color: #82B1FF !important;\n}\n\n.blue.accent-2 {\n background-color: #448AFF !important;\n}\n\n.blue-text.text-accent-2 {\n color: #448AFF !important;\n}\n\n.blue.accent-3 {\n background-color: #2979FF !important;\n}\n\n.blue-text.text-accent-3 {\n color: #2979FF !important;\n}\n\n.blue.accent-4 {\n background-color: #2962FF !important;\n}\n\n.blue-text.text-accent-4 {\n color: #2962FF !important;\n}\n\n.light-blue {\n background-color: #03a9f4 !important;\n}\n\n.light-blue-text {\n color: #03a9f4 !important;\n}\n\n.light-blue.lighten-5 {\n background-color: #e1f5fe !important;\n}\n\n.light-blue-text.text-lighten-5 {\n color: #e1f5fe !important;\n}\n\n.light-blue.lighten-4 {\n background-color: #b3e5fc !important;\n}\n\n.light-blue-text.text-lighten-4 {\n color: #b3e5fc !important;\n}\n\n.light-blue.lighten-3 {\n background-color: #81d4fa !important;\n}\n\n.light-blue-text.text-lighten-3 {\n color: #81d4fa !important;\n}\n\n.light-blue.lighten-2 {\n background-color: #4fc3f7 !important;\n}\n\n.light-blue-text.text-lighten-2 {\n color: #4fc3f7 !important;\n}\n\n.light-blue.lighten-1 {\n background-color: #29b6f6 !important;\n}\n\n.light-blue-text.text-lighten-1 {\n color: #29b6f6 !important;\n}\n\n.light-blue.darken-1 {\n background-color: #039be5 !important;\n}\n\n.light-blue-text.text-darken-1 {\n color: #039be5 !important;\n}\n\n.light-blue.darken-2 {\n background-color: #0288d1 !important;\n}\n\n.light-blue-text.text-darken-2 {\n color: #0288d1 !important;\n}\n\n.light-blue.darken-3 {\n background-color: #0277bd !important;\n}\n\n.light-blue-text.text-darken-3 {\n color: #0277bd !important;\n}\n\n.light-blue.darken-4 {\n background-color: #01579b !important;\n}\n\n.light-blue-text.text-darken-4 {\n color: #01579b !important;\n}\n\n.light-blue.accent-1 {\n background-color: #80d8ff !important;\n}\n\n.light-blue-text.text-accent-1 {\n color: #80d8ff !important;\n}\n\n.light-blue.accent-2 {\n background-color: #40c4ff !important;\n}\n\n.light-blue-text.text-accent-2 {\n color: #40c4ff !important;\n}\n\n.light-blue.accent-3 {\n background-color: #00b0ff !important;\n}\n\n.light-blue-text.text-accent-3 {\n color: #00b0ff !important;\n}\n\n.light-blue.accent-4 {\n background-color: #0091ea !important;\n}\n\n.light-blue-text.text-accent-4 {\n color: #0091ea !important;\n}\n\n.cyan {\n background-color: #00bcd4 !important;\n}\n\n.cyan-text {\n color: #00bcd4 !important;\n}\n\n.cyan.lighten-5 {\n background-color: #e0f7fa !important;\n}\n\n.cyan-text.text-lighten-5 {\n color: #e0f7fa !important;\n}\n\n.cyan.lighten-4 {\n background-color: #b2ebf2 !important;\n}\n\n.cyan-text.text-lighten-4 {\n color: #b2ebf2 !important;\n}\n\n.cyan.lighten-3 {\n background-color: #80deea !important;\n}\n\n.cyan-text.text-lighten-3 {\n color: #80deea !important;\n}\n\n.cyan.lighten-2 {\n background-color: #4dd0e1 !important;\n}\n\n.cyan-text.text-lighten-2 {\n color: #4dd0e1 !important;\n}\n\n.cyan.lighten-1 {\n background-color: #26c6da !important;\n}\n\n.cyan-text.text-lighten-1 {\n color: #26c6da !important;\n}\n\n.cyan.darken-1 {\n background-color: #00acc1 !important;\n}\n\n.cyan-text.text-darken-1 {\n color: #00acc1 !important;\n}\n\n.cyan.darken-2 {\n background-color: #0097a7 !important;\n}\n\n.cyan-text.text-darken-2 {\n color: #0097a7 !important;\n}\n\n.cyan.darken-3 {\n background-color: #00838f !important;\n}\n\n.cyan-text.text-darken-3 {\n color: #00838f !important;\n}\n\n.cyan.darken-4 {\n background-color: #006064 !important;\n}\n\n.cyan-text.text-darken-4 {\n color: #006064 !important;\n}\n\n.cyan.accent-1 {\n background-color: #84ffff !important;\n}\n\n.cyan-text.text-accent-1 {\n color: #84ffff !important;\n}\n\n.cyan.accent-2 {\n background-color: #18ffff !important;\n}\n\n.cyan-text.text-accent-2 {\n color: #18ffff !important;\n}\n\n.cyan.accent-3 {\n background-color: #00e5ff !important;\n}\n\n.cyan-text.text-accent-3 {\n color: #00e5ff !important;\n}\n\n.cyan.accent-4 {\n background-color: #00b8d4 !important;\n}\n\n.cyan-text.text-accent-4 {\n color: #00b8d4 !important;\n}\n\n.teal {\n background-color: #009688 !important;\n}\n\n.teal-text {\n color: #009688 !important;\n}\n\n.teal.lighten-5 {\n background-color: #e0f2f1 !important;\n}\n\n.teal-text.text-lighten-5 {\n color: #e0f2f1 !important;\n}\n\n.teal.lighten-4 {\n background-color: #b2dfdb !important;\n}\n\n.teal-text.text-lighten-4 {\n color: #b2dfdb !important;\n}\n\n.teal.lighten-3 {\n background-color: #80cbc4 !important;\n}\n\n.teal-text.text-lighten-3 {\n color: #80cbc4 !important;\n}\n\n.teal.lighten-2 {\n background-color: #4db6ac !important;\n}\n\n.teal-text.text-lighten-2 {\n color: #4db6ac !important;\n}\n\n.teal.lighten-1 {\n background-color: #26a69a !important;\n}\n\n.teal-text.text-lighten-1 {\n color: #26a69a !important;\n}\n\n.teal.darken-1 {\n background-color: #00897b !important;\n}\n\n.teal-text.text-darken-1 {\n color: #00897b !important;\n}\n\n.teal.darken-2 {\n background-color: #00796b !important;\n}\n\n.teal-text.text-darken-2 {\n color: #00796b !important;\n}\n\n.teal.darken-3 {\n background-color: #00695c !important;\n}\n\n.teal-text.text-darken-3 {\n color: #00695c !important;\n}\n\n.teal.darken-4 {\n background-color: #004d40 !important;\n}\n\n.teal-text.text-darken-4 {\n color: #004d40 !important;\n}\n\n.teal.accent-1 {\n background-color: #a7ffeb !important;\n}\n\n.teal-text.text-accent-1 {\n color: #a7ffeb !important;\n}\n\n.teal.accent-2 {\n background-color: #64ffda !important;\n}\n\n.teal-text.text-accent-2 {\n color: #64ffda !important;\n}\n\n.teal.accent-3 {\n background-color: #1de9b6 !important;\n}\n\n.teal-text.text-accent-3 {\n color: #1de9b6 !important;\n}\n\n.teal.accent-4 {\n background-color: #00bfa5 !important;\n}\n\n.teal-text.text-accent-4 {\n color: #00bfa5 !important;\n}\n\n.green {\n background-color: #4CAF50 !important;\n}\n\n.green-text {\n color: #4CAF50 !important;\n}\n\n.green.lighten-5 {\n background-color: #E8F5E9 !important;\n}\n\n.green-text.text-lighten-5 {\n color: #E8F5E9 !important;\n}\n\n.green.lighten-4 {\n background-color: #C8E6C9 !important;\n}\n\n.green-text.text-lighten-4 {\n color: #C8E6C9 !important;\n}\n\n.green.lighten-3 {\n background-color: #A5D6A7 !important;\n}\n\n.green-text.text-lighten-3 {\n color: #A5D6A7 !important;\n}\n\n.green.lighten-2 {\n background-color: #81C784 !important;\n}\n\n.green-text.text-lighten-2 {\n color: #81C784 !important;\n}\n\n.green.lighten-1 {\n background-color: #66BB6A !important;\n}\n\n.green-text.text-lighten-1 {\n color: #66BB6A !important;\n}\n\n.green.darken-1 {\n background-color: #43A047 !important;\n}\n\n.green-text.text-darken-1 {\n color: #43A047 !important;\n}\n\n.green.darken-2 {\n background-color: #388E3C !important;\n}\n\n.green-text.text-darken-2 {\n color: #388E3C !important;\n}\n\n.green.darken-3 {\n background-color: #2E7D32 !important;\n}\n\n.green-text.text-darken-3 {\n color: #2E7D32 !important;\n}\n\n.green.darken-4 {\n background-color: #1B5E20 !important;\n}\n\n.green-text.text-darken-4 {\n color: #1B5E20 !important;\n}\n\n.green.accent-1 {\n background-color: #B9F6CA !important;\n}\n\n.green-text.text-accent-1 {\n color: #B9F6CA !important;\n}\n\n.green.accent-2 {\n background-color: #69F0AE !important;\n}\n\n.green-text.text-accent-2 {\n color: #69F0AE !important;\n}\n\n.green.accent-3 {\n background-color: #00E676 !important;\n}\n\n.green-text.text-accent-3 {\n color: #00E676 !important;\n}\n\n.green.accent-4 {\n background-color: #00C853 !important;\n}\n\n.green-text.text-accent-4 {\n color: #00C853 !important;\n}\n\n.light-green {\n background-color: #8bc34a !important;\n}\n\n.light-green-text {\n color: #8bc34a !important;\n}\n\n.light-green.lighten-5 {\n background-color: #f1f8e9 !important;\n}\n\n.light-green-text.text-lighten-5 {\n color: #f1f8e9 !important;\n}\n\n.light-green.lighten-4 {\n background-color: #dcedc8 !important;\n}\n\n.light-green-text.text-lighten-4 {\n color: #dcedc8 !important;\n}\n\n.light-green.lighten-3 {\n background-color: #c5e1a5 !important;\n}\n\n.light-green-text.text-lighten-3 {\n color: #c5e1a5 !important;\n}\n\n.light-green.lighten-2 {\n background-color: #aed581 !important;\n}\n\n.light-green-text.text-lighten-2 {\n color: #aed581 !important;\n}\n\n.light-green.lighten-1 {\n background-color: #9ccc65 !important;\n}\n\n.light-green-text.text-lighten-1 {\n color: #9ccc65 !important;\n}\n\n.light-green.darken-1 {\n background-color: #7cb342 !important;\n}\n\n.light-green-text.text-darken-1 {\n color: #7cb342 !important;\n}\n\n.light-green.darken-2 {\n background-color: #689f38 !important;\n}\n\n.light-green-text.text-darken-2 {\n color: #689f38 !important;\n}\n\n.light-green.darken-3 {\n background-color: #558b2f !important;\n}\n\n.light-green-text.text-darken-3 {\n color: #558b2f !important;\n}\n\n.light-green.darken-4 {\n background-color: #33691e !important;\n}\n\n.light-green-text.text-darken-4 {\n color: #33691e !important;\n}\n\n.light-green.accent-1 {\n background-color: #ccff90 !important;\n}\n\n.light-green-text.text-accent-1 {\n color: #ccff90 !important;\n}\n\n.light-green.accent-2 {\n background-color: #b2ff59 !important;\n}\n\n.light-green-text.text-accent-2 {\n color: #b2ff59 !important;\n}\n\n.light-green.accent-3 {\n background-color: #76ff03 !important;\n}\n\n.light-green-text.text-accent-3 {\n color: #76ff03 !important;\n}\n\n.light-green.accent-4 {\n background-color: #64dd17 !important;\n}\n\n.light-green-text.text-accent-4 {\n color: #64dd17 !important;\n}\n\n.lime {\n background-color: #cddc39 !important;\n}\n\n.lime-text {\n color: #cddc39 !important;\n}\n\n.lime.lighten-5 {\n background-color: #f9fbe7 !important;\n}\n\n.lime-text.text-lighten-5 {\n color: #f9fbe7 !important;\n}\n\n.lime.lighten-4 {\n background-color: #f0f4c3 !important;\n}\n\n.lime-text.text-lighten-4 {\n color: #f0f4c3 !important;\n}\n\n.lime.lighten-3 {\n background-color: #e6ee9c !important;\n}\n\n.lime-text.text-lighten-3 {\n color: #e6ee9c !important;\n}\n\n.lime.lighten-2 {\n background-color: #dce775 !important;\n}\n\n.lime-text.text-lighten-2 {\n color: #dce775 !important;\n}\n\n.lime.lighten-1 {\n background-color: #d4e157 !important;\n}\n\n.lime-text.text-lighten-1 {\n color: #d4e157 !important;\n}\n\n.lime.darken-1 {\n background-color: #c0ca33 !important;\n}\n\n.lime-text.text-darken-1 {\n color: #c0ca33 !important;\n}\n\n.lime.darken-2 {\n background-color: #afb42b !important;\n}\n\n.lime-text.text-darken-2 {\n color: #afb42b !important;\n}\n\n.lime.darken-3 {\n background-color: #9e9d24 !important;\n}\n\n.lime-text.text-darken-3 {\n color: #9e9d24 !important;\n}\n\n.lime.darken-4 {\n background-color: #827717 !important;\n}\n\n.lime-text.text-darken-4 {\n color: #827717 !important;\n}\n\n.lime.accent-1 {\n background-color: #f4ff81 !important;\n}\n\n.lime-text.text-accent-1 {\n color: #f4ff81 !important;\n}\n\n.lime.accent-2 {\n background-color: #eeff41 !important;\n}\n\n.lime-text.text-accent-2 {\n color: #eeff41 !important;\n}\n\n.lime.accent-3 {\n background-color: #c6ff00 !important;\n}\n\n.lime-text.text-accent-3 {\n color: #c6ff00 !important;\n}\n\n.lime.accent-4 {\n background-color: #aeea00 !important;\n}\n\n.lime-text.text-accent-4 {\n color: #aeea00 !important;\n}\n\n.yellow {\n background-color: #ffeb3b !important;\n}\n\n.yellow-text {\n color: #ffeb3b !important;\n}\n\n.yellow.lighten-5 {\n background-color: #fffde7 !important;\n}\n\n.yellow-text.text-lighten-5 {\n color: #fffde7 !important;\n}\n\n.yellow.lighten-4 {\n background-color: #fff9c4 !important;\n}\n\n.yellow-text.text-lighten-4 {\n color: #fff9c4 !important;\n}\n\n.yellow.lighten-3 {\n background-color: #fff59d !important;\n}\n\n.yellow-text.text-lighten-3 {\n color: #fff59d !important;\n}\n\n.yellow.lighten-2 {\n background-color: #fff176 !important;\n}\n\n.yellow-text.text-lighten-2 {\n color: #fff176 !important;\n}\n\n.yellow.lighten-1 {\n background-color: #ffee58 !important;\n}\n\n.yellow-text.text-lighten-1 {\n color: #ffee58 !important;\n}\n\n.yellow.darken-1 {\n background-color: #fdd835 !important;\n}\n\n.yellow-text.text-darken-1 {\n color: #fdd835 !important;\n}\n\n.yellow.darken-2 {\n background-color: #fbc02d !important;\n}\n\n.yellow-text.text-darken-2 {\n color: #fbc02d !important;\n}\n\n.yellow.darken-3 {\n background-color: #f9a825 !important;\n}\n\n.yellow-text.text-darken-3 {\n color: #f9a825 !important;\n}\n\n.yellow.darken-4 {\n background-color: #f57f17 !important;\n}\n\n.yellow-text.text-darken-4 {\n color: #f57f17 !important;\n}\n\n.yellow.accent-1 {\n background-color: #ffff8d !important;\n}\n\n.yellow-text.text-accent-1 {\n color: #ffff8d !important;\n}\n\n.yellow.accent-2 {\n background-color: #ffff00 !important;\n}\n\n.yellow-text.text-accent-2 {\n color: #ffff00 !important;\n}\n\n.yellow.accent-3 {\n background-color: #ffea00 !important;\n}\n\n.yellow-text.text-accent-3 {\n color: #ffea00 !important;\n}\n\n.yellow.accent-4 {\n background-color: #ffd600 !important;\n}\n\n.yellow-text.text-accent-4 {\n color: #ffd600 !important;\n}\n\n.amber {\n background-color: #ffc107 !important;\n}\n\n.amber-text {\n color: #ffc107 !important;\n}\n\n.amber.lighten-5 {\n background-color: #fff8e1 !important;\n}\n\n.amber-text.text-lighten-5 {\n color: #fff8e1 !important;\n}\n\n.amber.lighten-4 {\n background-color: #ffecb3 !important;\n}\n\n.amber-text.text-lighten-4 {\n color: #ffecb3 !important;\n}\n\n.amber.lighten-3 {\n background-color: #ffe082 !important;\n}\n\n.amber-text.text-lighten-3 {\n color: #ffe082 !important;\n}\n\n.amber.lighten-2 {\n background-color: #ffd54f !important;\n}\n\n.amber-text.text-lighten-2 {\n color: #ffd54f !important;\n}\n\n.amber.lighten-1 {\n background-color: #ffca28 !important;\n}\n\n.amber-text.text-lighten-1 {\n color: #ffca28 !important;\n}\n\n.amber.darken-1 {\n background-color: #ffb300 !important;\n}\n\n.amber-text.text-darken-1 {\n color: #ffb300 !important;\n}\n\n.amber.darken-2 {\n background-color: #ffa000 !important;\n}\n\n.amber-text.text-darken-2 {\n color: #ffa000 !important;\n}\n\n.amber.darken-3 {\n background-color: #ff8f00 !important;\n}\n\n.amber-text.text-darken-3 {\n color: #ff8f00 !important;\n}\n\n.amber.darken-4 {\n background-color: #ff6f00 !important;\n}\n\n.amber-text.text-darken-4 {\n color: #ff6f00 !important;\n}\n\n.amber.accent-1 {\n background-color: #ffe57f !important;\n}\n\n.amber-text.text-accent-1 {\n color: #ffe57f !important;\n}\n\n.amber.accent-2 {\n background-color: #ffd740 !important;\n}\n\n.amber-text.text-accent-2 {\n color: #ffd740 !important;\n}\n\n.amber.accent-3 {\n background-color: #ffc400 !important;\n}\n\n.amber-text.text-accent-3 {\n color: #ffc400 !important;\n}\n\n.amber.accent-4 {\n background-color: #ffab00 !important;\n}\n\n.amber-text.text-accent-4 {\n color: #ffab00 !important;\n}\n\n.orange {\n background-color: #ff9800 !important;\n}\n\n.orange-text {\n color: #ff9800 !important;\n}\n\n.orange.lighten-5 {\n background-color: #fff3e0 !important;\n}\n\n.orange-text.text-lighten-5 {\n color: #fff3e0 !important;\n}\n\n.orange.lighten-4 {\n background-color: #ffe0b2 !important;\n}\n\n.orange-text.text-lighten-4 {\n color: #ffe0b2 !important;\n}\n\n.orange.lighten-3 {\n background-color: #ffcc80 !important;\n}\n\n.orange-text.text-lighten-3 {\n color: #ffcc80 !important;\n}\n\n.orange.lighten-2 {\n background-color: #ffb74d !important;\n}\n\n.orange-text.text-lighten-2 {\n color: #ffb74d !important;\n}\n\n.orange.lighten-1 {\n background-color: #ffa726 !important;\n}\n\n.orange-text.text-lighten-1 {\n color: #ffa726 !important;\n}\n\n.orange.darken-1 {\n background-color: #fb8c00 !important;\n}\n\n.orange-text.text-darken-1 {\n color: #fb8c00 !important;\n}\n\n.orange.darken-2 {\n background-color: #f57c00 !important;\n}\n\n.orange-text.text-darken-2 {\n color: #f57c00 !important;\n}\n\n.orange.darken-3 {\n background-color: #ef6c00 !important;\n}\n\n.orange-text.text-darken-3 {\n color: #ef6c00 !important;\n}\n\n.orange.darken-4 {\n background-color: #e65100 !important;\n}\n\n.orange-text.text-darken-4 {\n color: #e65100 !important;\n}\n\n.orange.accent-1 {\n background-color: #ffd180 !important;\n}\n\n.orange-text.text-accent-1 {\n color: #ffd180 !important;\n}\n\n.orange.accent-2 {\n background-color: #ffab40 !important;\n}\n\n.orange-text.text-accent-2 {\n color: #ffab40 !important;\n}\n\n.orange.accent-3 {\n background-color: #ff9100 !important;\n}\n\n.orange-text.text-accent-3 {\n color: #ff9100 !important;\n}\n\n.orange.accent-4 {\n background-color: #ff6d00 !important;\n}\n\n.orange-text.text-accent-4 {\n color: #ff6d00 !important;\n}\n\n.deep-orange {\n background-color: #ff5722 !important;\n}\n\n.deep-orange-text {\n color: #ff5722 !important;\n}\n\n.deep-orange.lighten-5 {\n background-color: #fbe9e7 !important;\n}\n\n.deep-orange-text.text-lighten-5 {\n color: #fbe9e7 !important;\n}\n\n.deep-orange.lighten-4 {\n background-color: #ffccbc !important;\n}\n\n.deep-orange-text.text-lighten-4 {\n color: #ffccbc !important;\n}\n\n.deep-orange.lighten-3 {\n background-color: #ffab91 !important;\n}\n\n.deep-orange-text.text-lighten-3 {\n color: #ffab91 !important;\n}\n\n.deep-orange.lighten-2 {\n background-color: #ff8a65 !important;\n}\n\n.deep-orange-text.text-lighten-2 {\n color: #ff8a65 !important;\n}\n\n.deep-orange.lighten-1 {\n background-color: #ff7043 !important;\n}\n\n.deep-orange-text.text-lighten-1 {\n color: #ff7043 !important;\n}\n\n.deep-orange.darken-1 {\n background-color: #f4511e !important;\n}\n\n.deep-orange-text.text-darken-1 {\n color: #f4511e !important;\n}\n\n.deep-orange.darken-2 {\n background-color: #e64a19 !important;\n}\n\n.deep-orange-text.text-darken-2 {\n color: #e64a19 !important;\n}\n\n.deep-orange.darken-3 {\n background-color: #d84315 !important;\n}\n\n.deep-orange-text.text-darken-3 {\n color: #d84315 !important;\n}\n\n.deep-orange.darken-4 {\n background-color: #bf360c !important;\n}\n\n.deep-orange-text.text-darken-4 {\n color: #bf360c !important;\n}\n\n.deep-orange.accent-1 {\n background-color: #ff9e80 !important;\n}\n\n.deep-orange-text.text-accent-1 {\n color: #ff9e80 !important;\n}\n\n.deep-orange.accent-2 {\n background-color: #ff6e40 !important;\n}\n\n.deep-orange-text.text-accent-2 {\n color: #ff6e40 !important;\n}\n\n.deep-orange.accent-3 {\n background-color: #ff3d00 !important;\n}\n\n.deep-orange-text.text-accent-3 {\n color: #ff3d00 !important;\n}\n\n.deep-orange.accent-4 {\n background-color: #dd2c00 !important;\n}\n\n.deep-orange-text.text-accent-4 {\n color: #dd2c00 !important;\n}\n\n.brown {\n background-color: #795548 !important;\n}\n\n.brown-text {\n color: #795548 !important;\n}\n\n.brown.lighten-5 {\n background-color: #efebe9 !important;\n}\n\n.brown-text.text-lighten-5 {\n color: #efebe9 !important;\n}\n\n.brown.lighten-4 {\n background-color: #d7ccc8 !important;\n}\n\n.brown-text.text-lighten-4 {\n color: #d7ccc8 !important;\n}\n\n.brown.lighten-3 {\n background-color: #bcaaa4 !important;\n}\n\n.brown-text.text-lighten-3 {\n color: #bcaaa4 !important;\n}\n\n.brown.lighten-2 {\n background-color: #a1887f !important;\n}\n\n.brown-text.text-lighten-2 {\n color: #a1887f !important;\n}\n\n.brown.lighten-1 {\n background-color: #8d6e63 !important;\n}\n\n.brown-text.text-lighten-1 {\n color: #8d6e63 !important;\n}\n\n.brown.darken-1 {\n background-color: #6d4c41 !important;\n}\n\n.brown-text.text-darken-1 {\n color: #6d4c41 !important;\n}\n\n.brown.darken-2 {\n background-color: #5d4037 !important;\n}\n\n.brown-text.text-darken-2 {\n color: #5d4037 !important;\n}\n\n.brown.darken-3 {\n background-color: #4e342e !important;\n}\n\n.brown-text.text-darken-3 {\n color: #4e342e !important;\n}\n\n.brown.darken-4 {\n background-color: #3e2723 !important;\n}\n\n.brown-text.text-darken-4 {\n color: #3e2723 !important;\n}\n\n.blue-grey {\n background-color: #607d8b !important;\n}\n\n.blue-grey-text {\n color: #607d8b !important;\n}\n\n.blue-grey.lighten-5 {\n background-color: #eceff1 !important;\n}\n\n.blue-grey-text.text-lighten-5 {\n color: #eceff1 !important;\n}\n\n.blue-grey.lighten-4 {\n background-color: #cfd8dc !important;\n}\n\n.blue-grey-text.text-lighten-4 {\n color: #cfd8dc !important;\n}\n\n.blue-grey.lighten-3 {\n background-color: #b0bec5 !important;\n}\n\n.blue-grey-text.text-lighten-3 {\n color: #b0bec5 !important;\n}\n\n.blue-grey.lighten-2 {\n background-color: #90a4ae !important;\n}\n\n.blue-grey-text.text-lighten-2 {\n color: #90a4ae !important;\n}\n\n.blue-grey.lighten-1 {\n background-color: #78909c !important;\n}\n\n.blue-grey-text.text-lighten-1 {\n color: #78909c !important;\n}\n\n.blue-grey.darken-1 {\n background-color: #546e7a !important;\n}\n\n.blue-grey-text.text-darken-1 {\n color: #546e7a !important;\n}\n\n.blue-grey.darken-2 {\n background-color: #455a64 !important;\n}\n\n.blue-grey-text.text-darken-2 {\n color: #455a64 !important;\n}\n\n.blue-grey.darken-3 {\n background-color: #37474f !important;\n}\n\n.blue-grey-text.text-darken-3 {\n color: #37474f !important;\n}\n\n.blue-grey.darken-4 {\n background-color: #263238 !important;\n}\n\n.blue-grey-text.text-darken-4 {\n color: #263238 !important;\n}\n\n.grey {\n background-color: #9e9e9e !important;\n}\n\n.grey-text {\n color: #9e9e9e !important;\n}\n\n.grey.lighten-5 {\n background-color: #fafafa !important;\n}\n\n.grey-text.text-lighten-5 {\n color: #fafafa !important;\n}\n\n.grey.lighten-4 {\n background-color: #f5f5f5 !important;\n}\n\n.grey-text.text-lighten-4 {\n color: #f5f5f5 !important;\n}\n\n.grey.lighten-3 {\n background-color: #eeeeee !important;\n}\n\n.grey-text.text-lighten-3 {\n color: #eeeeee !important;\n}\n\n.grey.lighten-2 {\n background-color: #e0e0e0 !important;\n}\n\n.grey-text.text-lighten-2 {\n color: #e0e0e0 !important;\n}\n\n.grey.lighten-1 {\n background-color: #bdbdbd !important;\n}\n\n.grey-text.text-lighten-1 {\n color: #bdbdbd !important;\n}\n\n.grey.darken-1 {\n background-color: #757575 !important;\n}\n\n.grey-text.text-darken-1 {\n color: #757575 !important;\n}\n\n.grey.darken-2 {\n background-color: #616161 !important;\n}\n\n.grey-text.text-darken-2 {\n color: #616161 !important;\n}\n\n.grey.darken-3 {\n background-color: #424242 !important;\n}\n\n.grey-text.text-darken-3 {\n color: #424242 !important;\n}\n\n.grey.darken-4 {\n background-color: #212121 !important;\n}\n\n.grey-text.text-darken-4 {\n color: #212121 !important;\n}\n\n.black {\n background-color: #000000 !important;\n}\n\n.black-text {\n color: #000000 !important;\n}\n\n.white {\n background-color: #FFFFFF !important;\n}\n\n.white-text {\n color: #FFFFFF !important;\n}\n\n.transparent {\n background-color: transparent !important;\n}\n\n.transparent-text {\n color: transparent !important;\n}\n\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n * without disabling user zoom.\n */\nhtml {\n font-family: sans-serif;\n /* 1 */\n -ms-text-size-adjust: 100%;\n /* 2 */\n -webkit-text-size-adjust: 100%;\n /* 2 */\n}\n\n/**\n * Remove default margin.\n */\nbody {\n margin: 0;\n}\n\n/* HTML5 display definitions\n ========================================================================== */\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n /* 1 */\n vertical-align: baseline;\n /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n[hidden],\ntemplate {\n display: none;\n}\n\n/* Links\n ========================================================================== */\n/**\n * Remove the gray background color from active links in IE 10.\n */\na {\n background-color: transparent;\n}\n\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\na:active,\na:hover {\n outline: 0;\n}\n\n/* Text-level semantics\n ========================================================================== */\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\nb,\nstrong {\n font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari and Chrome.\n */\ndfn {\n font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\nmark {\n background: #ff0;\n color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n/* Embedded content\n ========================================================================== */\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\nimg {\n border: 0;\n}\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\nsvg:not(:root) {\n overflow: hidden;\n}\n\n/* Grouping content\n ========================================================================== */\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\nfigure {\n margin: 1em 40px;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\npre {\n overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Forms\n ========================================================================== */\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n /* 1 */\n font: inherit;\n /* 2 */\n margin: 0;\n /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\nbutton {\n overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\nbutton,\nselect {\n text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n /* 2 */\n cursor: pointer;\n /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\ninput {\n line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n /* 1 */\n padding: 0;\n /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n /* 1 */\n box-sizing: content-box;\n /* 2 */\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\nlegend {\n border: 0;\n /* 1 */\n padding: 0;\n /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\ntextarea {\n overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\noptgroup {\n font-weight: bold;\n}\n\n/* Tables\n ========================================================================== */\n/**\n * Remove most spacing between table cells.\n */\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n\nhtml {\n box-sizing: border-box;\n}\n\n*, *:before, *:after {\n box-sizing: inherit;\n}\n\nul:not(.browser-default) {\n padding-left: 0;\n list-style-type: none;\n}\n\nul:not(.browser-default) li {\n list-style-type: none;\n}\n\na {\n color: #039be5;\n text-decoration: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.valign-wrapper {\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-align-items: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.clearfix {\n clear: both;\n}\n\n.z-depth-0 {\n box-shadow: none !important;\n}\n\n.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, .collapsible, .side-nav {\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);\n}\n\n.z-depth-1-half, .btn:hover, .btn-large:hover, .btn-floating:hover {\n box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2);\n}\n\n.z-depth-2 {\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);\n}\n\n.z-depth-3 {\n box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.3);\n}\n\n.z-depth-4, .modal {\n box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3);\n}\n\n.z-depth-5 {\n box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3);\n}\n\n.hoverable {\n transition: box-shadow .25s;\n box-shadow: 0;\n}\n\n.hoverable:hover {\n transition: box-shadow .25s;\n box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n\n.divider {\n height: 1px;\n overflow: hidden;\n background-color: #e0e0e0;\n}\n\nblockquote {\n margin: 20px 0;\n padding-left: 1.5rem;\n border-left: 5px solid #ee6e73;\n}\n\ni {\n line-height: inherit;\n}\n\ni.left {\n float: left;\n margin-right: 15px;\n}\n\ni.right {\n float: right;\n margin-left: 15px;\n}\n\ni.tiny {\n font-size: 1rem;\n}\n\ni.small {\n font-size: 2rem;\n}\n\ni.medium {\n font-size: 4rem;\n}\n\ni.large {\n font-size: 6rem;\n}\n\nimg.responsive-img,\nvideo.responsive-video {\n max-width: 100%;\n height: auto;\n}\n\n.pagination li {\n display: inline-block;\n border-radius: 2px;\n text-align: center;\n vertical-align: top;\n height: 30px;\n}\n\n.pagination li a {\n color: #444;\n display: inline-block;\n font-size: 1.2rem;\n padding: 0 10px;\n line-height: 30px;\n}\n\n.pagination li.active a {\n color: #fff;\n}\n\n.pagination li.active {\n background-color: #ee6e73;\n}\n\n.pagination li.disabled a {\n cursor: default;\n color: #999;\n}\n\n.pagination li i {\n font-size: 2rem;\n}\n\n.pagination li.pages ul li {\n display: inline-block;\n float: none;\n}\n\n@media only screen and (max-width: 992px) {\n .pagination {\n width: 100%;\n }\n .pagination li.prev,\n .pagination li.next {\n width: 10%;\n }\n .pagination li.pages {\n width: 80%;\n overflow: hidden;\n white-space: nowrap;\n }\n}\n\n.breadcrumb {\n font-size: 18px;\n color: rgba(255, 255, 255, 0.7);\n}\n\n.breadcrumb i,\n.breadcrumb [class^=\"mdi-\"], .breadcrumb [class*=\"mdi-\"],\n.breadcrumb i.material-icons {\n display: inline-block;\n float: left;\n font-size: 24px;\n}\n\n.breadcrumb:before {\n content: '\\E5CC';\n color: rgba(255, 255, 255, 0.7);\n vertical-align: top;\n display: inline-block;\n font-family: 'Material Icons';\n font-weight: normal;\n font-style: normal;\n font-size: 25px;\n margin: 0 10px 0 8px;\n -webkit-font-smoothing: antialiased;\n}\n\n.breadcrumb:first-child:before {\n display: none;\n}\n\n.breadcrumb:last-child {\n color: #fff;\n}\n\n.parallax-container {\n position: relative;\n overflow: hidden;\n height: 500px;\n}\n\n.parallax {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: -1;\n}\n\n.parallax img {\n display: none;\n position: absolute;\n left: 50%;\n bottom: 0;\n min-width: 100%;\n min-height: 100%;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n}\n\n.pin-top, .pin-bottom {\n position: relative;\n}\n\n.pinned {\n position: fixed !important;\n}\n\n/*********************\n Transition Classes\n**********************/\nul.staggered-list li {\n opacity: 0;\n}\n\n.fade-in {\n opacity: 0;\n -webkit-transform-origin: 0 50%;\n transform-origin: 0 50%;\n}\n\n/*********************\n Media Query Classes\n**********************/\n@media only screen and (max-width: 600px) {\n .hide-on-small-only, .hide-on-small-and-down {\n display: none !important;\n }\n}\n\n@media only screen and (max-width: 992px) {\n .hide-on-med-and-down {\n display: none !important;\n }\n}\n\n@media only screen and (min-width: 601px) {\n .hide-on-med-and-up {\n display: none !important;\n }\n}\n\n@media only screen and (min-width: 600px) and (max-width: 992px) {\n .hide-on-med-only {\n display: none !important;\n }\n}\n\n@media only screen and (min-width: 993px) {\n .hide-on-large-only {\n display: none !important;\n }\n}\n\n@media only screen and (min-width: 993px) {\n .show-on-large {\n display: block !important;\n }\n}\n\n@media only screen and (min-width: 600px) and (max-width: 992px) {\n .show-on-medium {\n display: block !important;\n }\n}\n\n@media only screen and (max-width: 600px) {\n .show-on-small {\n display: block !important;\n }\n}\n\n@media only screen and (min-width: 601px) {\n .show-on-medium-and-up {\n display: block !important;\n }\n}\n\n@media only screen and (max-width: 992px) {\n .show-on-medium-and-down {\n display: block !important;\n }\n}\n\n@media only screen and (max-width: 600px) {\n .center-on-small-only {\n text-align: center;\n }\n}\n\n.page-footer {\n padding-top: 20px;\n background-color: #ee6e73;\n}\n\n.page-footer .footer-copyright {\n overflow: hidden;\n min-height: 50px;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-align-items: center;\n -ms-flex-align: center;\n align-items: center;\n padding: 10px 0px;\n color: rgba(255, 255, 255, 0.8);\n background-color: rgba(51, 51, 51, 0.08);\n}\n\ntable, th, td {\n border: none;\n}\n\ntable {\n width: 100%;\n display: table;\n}\n\ntable.bordered > thead > tr,\ntable.bordered > tbody > tr {\n border-bottom: 1px solid #d0d0d0;\n}\n\ntable.striped > tbody > tr:nth-child(odd) {\n background-color: #f2f2f2;\n}\n\ntable.striped > tbody > tr > td {\n border-radius: 0;\n}\n\ntable.highlight > tbody > tr {\n transition: background-color .25s ease;\n}\n\ntable.highlight > tbody > tr:hover {\n background-color: #f2f2f2;\n}\n\ntable.centered thead tr th, table.centered tbody tr td {\n text-align: center;\n}\n\nthead {\n border-bottom: 1px solid #d0d0d0;\n}\n\ntd, th {\n padding: 15px 5px;\n display: table-cell;\n text-align: left;\n vertical-align: middle;\n border-radius: 2px;\n}\n\n@media only screen and (max-width: 992px) {\n table.responsive-table {\n width: 100%;\n border-collapse: collapse;\n border-spacing: 0;\n display: block;\n position: relative;\n /* sort out borders */\n }\n table.responsive-table td:empty:before {\n content: '\\00a0';\n }\n table.responsive-table th,\n table.responsive-table td {\n margin: 0;\n vertical-align: top;\n }\n table.responsive-table th {\n text-align: left;\n }\n table.responsive-table thead {\n display: block;\n float: left;\n }\n table.responsive-table thead tr {\n display: block;\n padding: 0 10px 0 0;\n }\n table.responsive-table thead tr th::before {\n content: \"\\00a0\";\n }\n table.responsive-table tbody {\n display: block;\n width: auto;\n position: relative;\n overflow-x: auto;\n white-space: nowrap;\n }\n table.responsive-table tbody tr {\n display: inline-block;\n vertical-align: top;\n }\n table.responsive-table th {\n display: block;\n text-align: right;\n }\n table.responsive-table td {\n display: block;\n min-height: 1.25em;\n text-align: left;\n }\n table.responsive-table tr {\n padding: 0 10px;\n }\n table.responsive-table thead {\n border: 0;\n border-right: 1px solid #d0d0d0;\n }\n table.responsive-table.bordered th {\n border-bottom: 0;\n border-left: 0;\n }\n table.responsive-table.bordered td {\n border-left: 0;\n border-right: 0;\n border-bottom: 0;\n }\n table.responsive-table.bordered tr {\n border: 0;\n }\n table.responsive-table.bordered tbody tr {\n border-right: 1px solid #d0d0d0;\n }\n}\n\n.collection {\n margin: 0.5rem 0 1rem 0;\n border: 1px solid #e0e0e0;\n border-radius: 2px;\n overflow: hidden;\n position: relative;\n}\n\n.collection .collection-item {\n background-color: #fff;\n line-height: 1.5rem;\n padding: 10px 20px;\n margin: 0;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.collection .collection-item.avatar {\n min-height: 84px;\n padding-left: 72px;\n position: relative;\n}\n\n.collection .collection-item.avatar .circle {\n position: absolute;\n width: 42px;\n height: 42px;\n overflow: hidden;\n left: 15px;\n display: inline-block;\n vertical-align: middle;\n}\n\n.collection .collection-item.avatar i.circle {\n font-size: 18px;\n line-height: 42px;\n color: #fff;\n background-color: #999;\n text-align: center;\n}\n\n.collection .collection-item.avatar .title {\n font-size: 16px;\n}\n\n.collection .collection-item.avatar p {\n margin: 0;\n}\n\n.collection .collection-item.avatar .secondary-content {\n position: absolute;\n top: 16px;\n right: 16px;\n}\n\n.collection .collection-item:last-child {\n border-bottom: none;\n}\n\n.collection .collection-item.active {\n background-color: #26a69a;\n color: #eafaf9;\n}\n\n.collection .collection-item.active .secondary-content {\n color: #fff;\n}\n\n.collection a.collection-item {\n display: block;\n transition: .25s;\n color: #26a69a;\n}\n\n.collection a.collection-item:not(.active):hover {\n background-color: #ddd;\n}\n\n.collection.with-header .collection-header {\n background-color: #fff;\n border-bottom: 1px solid #e0e0e0;\n padding: 10px 20px;\n}\n\n.collection.with-header .collection-item {\n padding-left: 30px;\n}\n\n.collection.with-header .collection-item.avatar {\n padding-left: 72px;\n}\n\n.secondary-content {\n float: right;\n color: #26a69a;\n}\n\n.collapsible .collection {\n margin: 0;\n border: none;\n}\n\n.video-container {\n position: relative;\n padding-bottom: 56.25%;\n height: 0;\n overflow: hidden;\n}\n\n.video-container iframe, .video-container object, .video-container embed {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.progress {\n position: relative;\n height: 4px;\n display: block;\n width: 100%;\n background-color: #acece6;\n border-radius: 2px;\n margin: 0.5rem 0 1rem 0;\n overflow: hidden;\n}\n\n.progress .determinate {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n background-color: #26a69a;\n transition: width .3s linear;\n}\n\n.progress .indeterminate {\n background-color: #26a69a;\n}\n\n.progress .indeterminate:before {\n content: '';\n position: absolute;\n background-color: inherit;\n top: 0;\n left: 0;\n bottom: 0;\n will-change: left, right;\n -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n}\n\n.progress .indeterminate:after {\n content: '';\n position: absolute;\n background-color: inherit;\n top: 0;\n left: 0;\n bottom: 0;\n will-change: left, right;\n -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;\n animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;\n -webkit-animation-delay: 1.15s;\n animation-delay: 1.15s;\n}\n\n@-webkit-keyframes indeterminate {\n 0% {\n left: -35%;\n right: 100%;\n }\n 60% {\n left: 100%;\n right: -90%;\n }\n 100% {\n left: 100%;\n right: -90%;\n }\n}\n\n@keyframes indeterminate {\n 0% {\n left: -35%;\n right: 100%;\n }\n 60% {\n left: 100%;\n right: -90%;\n }\n 100% {\n left: 100%;\n right: -90%;\n }\n}\n\n@-webkit-keyframes indeterminate-short {\n 0% {\n left: -200%;\n right: 100%;\n }\n 60% {\n left: 107%;\n right: -8%;\n }\n 100% {\n left: 107%;\n right: -8%;\n }\n}\n\n@keyframes indeterminate-short {\n 0% {\n left: -200%;\n right: 100%;\n }\n 60% {\n left: 107%;\n right: -8%;\n }\n 100% {\n left: 107%;\n right: -8%;\n }\n}\n\n/*******************\n Utility Classes\n*******************/\n.hide {\n display: none !important;\n}\n\n.left-align {\n text-align: left;\n}\n\n.right-align {\n text-align: right;\n}\n\n.center, .center-align {\n text-align: center;\n}\n\n.left {\n float: left !important;\n}\n\n.right {\n float: right !important;\n}\n\n.no-select, input[type=range],\ninput[type=range] + .thumb {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.circle {\n border-radius: 50%;\n}\n\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n.truncate {\n display: block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.no-padding {\n padding: 0 !important;\n}\n\nspan.badge {\n min-width: 3rem;\n padding: 0 6px;\n margin-left: 14px;\n text-align: center;\n font-size: 1rem;\n line-height: 22px;\n height: 22px;\n color: #757575;\n float: right;\n box-sizing: border-box;\n}\n\nspan.badge.new {\n font-weight: 300;\n font-size: 0.8rem;\n color: #fff;\n background-color: #26a69a;\n border-radius: 2px;\n}\n\nspan.badge.new:after {\n content: \" new\";\n}\n\nspan.badge[data-badge-caption]::after {\n content: \" \" attr(data-badge-caption);\n}\n\nnav ul a span.badge {\n display: inline-block;\n float: none;\n margin-left: 4px;\n line-height: 22px;\n height: 22px;\n}\n\n.collection-item span.badge {\n margin-top: calc(0.75rem - 11px);\n}\n\n.collapsible span.badge {\n margin-top: calc(1.5rem - 11px);\n}\n\n.side-nav span.badge {\n margin-top: calc(24px - 11px);\n}\n\n/* This is needed for some mobile phones to display the Google Icon font properly */\n.material-icons {\n text-rendering: optimizeLegibility;\n -webkit-font-feature-settings: 'liga';\n -moz-font-feature-settings: 'liga';\n font-feature-settings: 'liga';\n}\n\n.container {\n margin: 0 auto;\n max-width: 1280px;\n width: 90%;\n}\n\n@media only screen and (min-width: 601px) {\n .container {\n width: 85%;\n }\n}\n\n@media only screen and (min-width: 993px) {\n .container {\n width: 70%;\n }\n}\n\n.container .row {\n margin-left: -0.75rem;\n margin-right: -0.75rem;\n}\n\n.section {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n.section.no-pad {\n padding: 0;\n}\n\n.section.no-pad-bot {\n padding-bottom: 0;\n}\n\n.section.no-pad-top {\n padding-top: 0;\n}\n\n.row {\n margin-left: auto;\n margin-right: auto;\n margin-bottom: 20px;\n}\n\n.row:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n.row .col {\n float: left;\n box-sizing: border-box;\n padding: 0 0.75rem;\n min-height: 1px;\n}\n\n.row .col[class*=\"push-\"], .row .col[class*=\"pull-\"] {\n position: relative;\n}\n\n.row .col.s1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.s2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.s3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.s4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.s5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.s6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.s7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.s8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.s9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.s10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.s11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.s12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n\n.row .col.offset-s1 {\n margin-left: 8.3333333333%;\n}\n\n.row .col.pull-s1 {\n right: 8.3333333333%;\n}\n\n.row .col.push-s1 {\n left: 8.3333333333%;\n}\n\n.row .col.offset-s2 {\n margin-left: 16.6666666667%;\n}\n\n.row .col.pull-s2 {\n right: 16.6666666667%;\n}\n\n.row .col.push-s2 {\n left: 16.6666666667%;\n}\n\n.row .col.offset-s3 {\n margin-left: 25%;\n}\n\n.row .col.pull-s3 {\n right: 25%;\n}\n\n.row .col.push-s3 {\n left: 25%;\n}\n\n.row .col.offset-s4 {\n margin-left: 33.3333333333%;\n}\n\n.row .col.pull-s4 {\n right: 33.3333333333%;\n}\n\n.row .col.push-s4 {\n left: 33.3333333333%;\n}\n\n.row .col.offset-s5 {\n margin-left: 41.6666666667%;\n}\n\n.row .col.pull-s5 {\n right: 41.6666666667%;\n}\n\n.row .col.push-s5 {\n left: 41.6666666667%;\n}\n\n.row .col.offset-s6 {\n margin-left: 50%;\n}\n\n.row .col.pull-s6 {\n right: 50%;\n}\n\n.row .col.push-s6 {\n left: 50%;\n}\n\n.row .col.offset-s7 {\n margin-left: 58.3333333333%;\n}\n\n.row .col.pull-s7 {\n right: 58.3333333333%;\n}\n\n.row .col.push-s7 {\n left: 58.3333333333%;\n}\n\n.row .col.offset-s8 {\n margin-left: 66.6666666667%;\n}\n\n.row .col.pull-s8 {\n right: 66.6666666667%;\n}\n\n.row .col.push-s8 {\n left: 66.6666666667%;\n}\n\n.row .col.offset-s9 {\n margin-left: 75%;\n}\n\n.row .col.pull-s9 {\n right: 75%;\n}\n\n.row .col.push-s9 {\n left: 75%;\n}\n\n.row .col.offset-s10 {\n margin-left: 83.3333333333%;\n}\n\n.row .col.pull-s10 {\n right: 83.3333333333%;\n}\n\n.row .col.push-s10 {\n left: 83.3333333333%;\n}\n\n.row .col.offset-s11 {\n margin-left: 91.6666666667%;\n}\n\n.row .col.pull-s11 {\n right: 91.6666666667%;\n}\n\n.row .col.push-s11 {\n left: 91.6666666667%;\n}\n\n.row .col.offset-s12 {\n margin-left: 100%;\n}\n\n.row .col.pull-s12 {\n right: 100%;\n}\n\n.row .col.push-s12 {\n left: 100%;\n}\n\n@media only screen and (min-width: 601px) {\n .row .col.m1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.offset-m1 {\n margin-left: 8.3333333333%;\n }\n .row .col.pull-m1 {\n right: 8.3333333333%;\n }\n .row .col.push-m1 {\n left: 8.3333333333%;\n }\n .row .col.offset-m2 {\n margin-left: 16.6666666667%;\n }\n .row .col.pull-m2 {\n right: 16.6666666667%;\n }\n .row .col.push-m2 {\n left: 16.6666666667%;\n }\n .row .col.offset-m3 {\n margin-left: 25%;\n }\n .row .col.pull-m3 {\n right: 25%;\n }\n .row .col.push-m3 {\n left: 25%;\n }\n .row .col.offset-m4 {\n margin-left: 33.3333333333%;\n }\n .row .col.pull-m4 {\n right: 33.3333333333%;\n }\n .row .col.push-m4 {\n left: 33.3333333333%;\n }\n .row .col.offset-m5 {\n margin-left: 41.6666666667%;\n }\n .row .col.pull-m5 {\n right: 41.6666666667%;\n }\n .row .col.push-m5 {\n left: 41.6666666667%;\n }\n .row .col.offset-m6 {\n margin-left: 50%;\n }\n .row .col.pull-m6 {\n right: 50%;\n }\n .row .col.push-m6 {\n left: 50%;\n }\n .row .col.offset-m7 {\n margin-left: 58.3333333333%;\n }\n .row .col.pull-m7 {\n right: 58.3333333333%;\n }\n .row .col.push-m7 {\n left: 58.3333333333%;\n }\n .row .col.offset-m8 {\n margin-left: 66.6666666667%;\n }\n .row .col.pull-m8 {\n right: 66.6666666667%;\n }\n .row .col.push-m8 {\n left: 66.6666666667%;\n }\n .row .col.offset-m9 {\n margin-left: 75%;\n }\n .row .col.pull-m9 {\n right: 75%;\n }\n .row .col.push-m9 {\n left: 75%;\n }\n .row .col.offset-m10 {\n margin-left: 83.3333333333%;\n }\n .row .col.pull-m10 {\n right: 83.3333333333%;\n }\n .row .col.push-m10 {\n left: 83.3333333333%;\n }\n .row .col.offset-m11 {\n margin-left: 91.6666666667%;\n }\n .row .col.pull-m11 {\n right: 91.6666666667%;\n }\n .row .col.push-m11 {\n left: 91.6666666667%;\n }\n .row .col.offset-m12 {\n margin-left: 100%;\n }\n .row .col.pull-m12 {\n right: 100%;\n }\n .row .col.push-m12 {\n left: 100%;\n }\n}\n\n@media only screen and (min-width: 993px) {\n .row .col.l1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.offset-l1 {\n margin-left: 8.3333333333%;\n }\n .row .col.pull-l1 {\n right: 8.3333333333%;\n }\n .row .col.push-l1 {\n left: 8.3333333333%;\n }\n .row .col.offset-l2 {\n margin-left: 16.6666666667%;\n }\n .row .col.pull-l2 {\n right: 16.6666666667%;\n }\n .row .col.push-l2 {\n left: 16.6666666667%;\n }\n .row .col.offset-l3 {\n margin-left: 25%;\n }\n .row .col.pull-l3 {\n right: 25%;\n }\n .row .col.push-l3 {\n left: 25%;\n }\n .row .col.offset-l4 {\n margin-left: 33.3333333333%;\n }\n .row .col.pull-l4 {\n right: 33.3333333333%;\n }\n .row .col.push-l4 {\n left: 33.3333333333%;\n }\n .row .col.offset-l5 {\n margin-left: 41.6666666667%;\n }\n .row .col.pull-l5 {\n right: 41.6666666667%;\n }\n .row .col.push-l5 {\n left: 41.6666666667%;\n }\n .row .col.offset-l6 {\n margin-left: 50%;\n }\n .row .col.pull-l6 {\n right: 50%;\n }\n .row .col.push-l6 {\n left: 50%;\n }\n .row .col.offset-l7 {\n margin-left: 58.3333333333%;\n }\n .row .col.pull-l7 {\n right: 58.3333333333%;\n }\n .row .col.push-l7 {\n left: 58.3333333333%;\n }\n .row .col.offset-l8 {\n margin-left: 66.6666666667%;\n }\n .row .col.pull-l8 {\n right: 66.6666666667%;\n }\n .row .col.push-l8 {\n left: 66.6666666667%;\n }\n .row .col.offset-l9 {\n margin-left: 75%;\n }\n .row .col.pull-l9 {\n right: 75%;\n }\n .row .col.push-l9 {\n left: 75%;\n }\n .row .col.offset-l10 {\n margin-left: 83.3333333333%;\n }\n .row .col.pull-l10 {\n right: 83.3333333333%;\n }\n .row .col.push-l10 {\n left: 83.3333333333%;\n }\n .row .col.offset-l11 {\n margin-left: 91.6666666667%;\n }\n .row .col.pull-l11 {\n right: 91.6666666667%;\n }\n .row .col.push-l11 {\n left: 91.6666666667%;\n }\n .row .col.offset-l12 {\n margin-left: 100%;\n }\n .row .col.pull-l12 {\n right: 100%;\n }\n .row .col.push-l12 {\n left: 100%;\n }\n}\n\n@media only screen and (min-width: 1201px) {\n .row .col.xl1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.offset-xl1 {\n margin-left: 8.3333333333%;\n }\n .row .col.pull-xl1 {\n right: 8.3333333333%;\n }\n .row .col.push-xl1 {\n left: 8.3333333333%;\n }\n .row .col.offset-xl2 {\n margin-left: 16.6666666667%;\n }\n .row .col.pull-xl2 {\n right: 16.6666666667%;\n }\n .row .col.push-xl2 {\n left: 16.6666666667%;\n }\n .row .col.offset-xl3 {\n margin-left: 25%;\n }\n .row .col.pull-xl3 {\n right: 25%;\n }\n .row .col.push-xl3 {\n left: 25%;\n }\n .row .col.offset-xl4 {\n margin-left: 33.3333333333%;\n }\n .row .col.pull-xl4 {\n right: 33.3333333333%;\n }\n .row .col.push-xl4 {\n left: 33.3333333333%;\n }\n .row .col.offset-xl5 {\n margin-left: 41.6666666667%;\n }\n .row .col.pull-xl5 {\n right: 41.6666666667%;\n }\n .row .col.push-xl5 {\n left: 41.6666666667%;\n }\n .row .col.offset-xl6 {\n margin-left: 50%;\n }\n .row .col.pull-xl6 {\n right: 50%;\n }\n .row .col.push-xl6 {\n left: 50%;\n }\n .row .col.offset-xl7 {\n margin-left: 58.3333333333%;\n }\n .row .col.pull-xl7 {\n right: 58.3333333333%;\n }\n .row .col.push-xl7 {\n left: 58.3333333333%;\n }\n .row .col.offset-xl8 {\n margin-left: 66.6666666667%;\n }\n .row .col.pull-xl8 {\n right: 66.6666666667%;\n }\n .row .col.push-xl8 {\n left: 66.6666666667%;\n }\n .row .col.offset-xl9 {\n margin-left: 75%;\n }\n .row .col.pull-xl9 {\n right: 75%;\n }\n .row .col.push-xl9 {\n left: 75%;\n }\n .row .col.offset-xl10 {\n margin-left: 83.3333333333%;\n }\n .row .col.pull-xl10 {\n right: 83.3333333333%;\n }\n .row .col.push-xl10 {\n left: 83.3333333333%;\n }\n .row .col.offset-xl11 {\n margin-left: 91.6666666667%;\n }\n .row .col.pull-xl11 {\n right: 91.6666666667%;\n }\n .row .col.push-xl11 {\n left: 91.6666666667%;\n }\n .row .col.offset-xl12 {\n margin-left: 100%;\n }\n .row .col.pull-xl12 {\n right: 100%;\n }\n .row .col.push-xl12 {\n left: 100%;\n }\n}\n\nnav {\n color: #fff;\n background-color: #ee6e73;\n width: 100%;\n height: 56px;\n line-height: 56px;\n}\n\nnav.nav-extended {\n height: auto;\n}\n\nnav.nav-extended .nav-wrapper {\n min-height: 56px;\n height: auto;\n}\n\nnav.nav-extended .nav-content {\n position: relative;\n line-height: normal;\n}\n\nnav a {\n color: #fff;\n}\n\nnav i,\nnav [class^=\"mdi-\"], nav [class*=\"mdi-\"],\nnav i.material-icons {\n display: block;\n font-size: 24px;\n height: 56px;\n line-height: 56px;\n}\n\nnav .nav-wrapper {\n position: relative;\n height: 100%;\n}\n\n@media only screen and (min-width: 993px) {\n nav a.button-collapse {\n display: none;\n }\n}\n\nnav .button-collapse {\n float: left;\n position: relative;\n z-index: 1;\n height: 56px;\n margin: 0 18px;\n}\n\nnav .button-collapse i {\n height: 56px;\n line-height: 56px;\n}\n\nnav .brand-logo {\n position: absolute;\n color: #fff;\n display: inline-block;\n font-size: 2.1rem;\n padding: 0;\n white-space: nowrap;\n}\n\nnav .brand-logo.center {\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n}\n\n@media only screen and (max-width: 992px) {\n nav .brand-logo {\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n }\n nav .brand-logo.left, nav .brand-logo.right {\n padding: 0;\n -webkit-transform: none;\n transform: none;\n }\n nav .brand-logo.left {\n left: 0.5rem;\n }\n nav .brand-logo.right {\n right: 0.5rem;\n left: auto;\n }\n}\n\nnav .brand-logo.right {\n right: 0.5rem;\n padding: 0;\n}\n\nnav .brand-logo i,\nnav .brand-logo [class^=\"mdi-\"], nav .brand-logo [class*=\"mdi-\"],\nnav .brand-logo i.material-icons {\n float: left;\n margin-right: 15px;\n}\n\nnav .nav-title {\n display: inline-block;\n font-size: 32px;\n padding: 28px 0;\n}\n\nnav ul {\n margin: 0;\n}\n\nnav ul li {\n transition: background-color .3s;\n float: left;\n padding: 0;\n}\n\nnav ul li.active {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\nnav ul a {\n transition: background-color .3s;\n font-size: 1rem;\n color: #fff;\n display: block;\n padding: 0 15px;\n cursor: pointer;\n}\n\nnav ul a.btn, nav ul a.btn-large, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating {\n margin-top: -2px;\n margin-left: 15px;\n margin-right: 15px;\n}\n\nnav ul a.btn > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-flat > .material-icons, nav ul a.btn-floating > .material-icons {\n height: inherit;\n line-height: inherit;\n}\n\nnav ul a:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\nnav ul.left {\n float: left;\n}\n\nnav form {\n height: 100%;\n}\n\nnav .input-field {\n margin: 0;\n height: 100%;\n}\n\nnav .input-field input {\n height: 100%;\n font-size: 1.2rem;\n border: none;\n padding-left: 2rem;\n}\n\nnav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid {\n border: none;\n box-shadow: none;\n}\n\nnav .input-field label {\n top: 0;\n left: 0;\n}\n\nnav .input-field label i {\n color: rgba(255, 255, 255, 0.7);\n transition: color .3s;\n}\n\nnav .input-field label.active i {\n color: #fff;\n}\n\n.navbar-fixed {\n position: relative;\n height: 56px;\n z-index: 997;\n}\n\n.navbar-fixed nav {\n position: fixed;\n}\n\n@media only screen and (min-width: 601px) {\n nav.nav-extended .nav-wrapper {\n min-height: 64px;\n }\n nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i {\n height: 64px;\n line-height: 64px;\n }\n .navbar-fixed {\n height: 64px;\n }\n}\n\n@font-face {\n font-family: \"Roboto\";\n src: local(Roboto Thin), url(\"../fonts/roboto/Roboto-Thin.woff2\") format(\"woff2\"), url(\"../fonts/roboto/Roboto-Thin.woff\") format(\"woff\");\n font-weight: 100;\n}\n\n@font-face {\n font-family: \"Roboto\";\n src: local(Roboto Light), url(\"../fonts/roboto/Roboto-Light.woff2\") format(\"woff2\"), url(\"../fonts/roboto/Roboto-Light.woff\") format(\"woff\");\n font-weight: 300;\n}\n\n@font-face {\n font-family: \"Roboto\";\n src: local(Roboto Regular), url(\"../fonts/roboto/Roboto-Regular.woff2\") format(\"woff2\"), url(\"../fonts/roboto/Roboto-Regular.woff\") format(\"woff\");\n font-weight: 400;\n}\n\n@font-face {\n font-family: \"Roboto\";\n src: local(Roboto Medium), url(\"../fonts/roboto/Roboto-Medium.woff2\") format(\"woff2\"), url(\"../fonts/roboto/Roboto-Medium.woff\") format(\"woff\");\n font-weight: 500;\n}\n\n@font-face {\n font-family: \"Roboto\";\n src: local(Roboto Bold), url(\"../fonts/roboto/Roboto-Bold.woff2\") format(\"woff2\"), url(\"../fonts/roboto/Roboto-Bold.woff\") format(\"woff\");\n font-weight: 700;\n}\n\na {\n text-decoration: none;\n}\n\nhtml {\n line-height: 1.5;\n font-family: \"Roboto\", sans-serif;\n font-weight: normal;\n color: rgba(0, 0, 0, 0.87);\n}\n\n@media only screen and (min-width: 0) {\n html {\n font-size: 14px;\n }\n}\n\n@media only screen and (min-width: 992px) {\n html {\n font-size: 14.5px;\n }\n}\n\n@media only screen and (min-width: 1200px) {\n html {\n font-size: 15px;\n }\n}\n\nh1, h2, h3, h4, h5, h6 {\n font-weight: 400;\n line-height: 1.1;\n}\n\nh1 a, h2 a, h3 a, h4 a, h5 a, h6 a {\n font-weight: inherit;\n}\n\nh1 {\n font-size: 4.2rem;\n line-height: 110%;\n margin: 2.1rem 0 1.68rem 0;\n}\n\nh2 {\n font-size: 3.56rem;\n line-height: 110%;\n margin: 1.78rem 0 1.424rem 0;\n}\n\nh3 {\n font-size: 2.92rem;\n line-height: 110%;\n margin: 1.46rem 0 1.168rem 0;\n}\n\nh4 {\n font-size: 2.28rem;\n line-height: 110%;\n margin: 1.14rem 0 0.912rem 0;\n}\n\nh5 {\n font-size: 1.64rem;\n line-height: 110%;\n margin: 0.82rem 0 0.656rem 0;\n}\n\nh6 {\n font-size: 1rem;\n line-height: 110%;\n margin: 0.5rem 0 0.4rem 0;\n}\n\nem {\n font-style: italic;\n}\n\nstrong {\n font-weight: 500;\n}\n\nsmall {\n font-size: 75%;\n}\n\n.light, .page-footer .footer-copyright {\n font-weight: 300;\n}\n\n.thin {\n font-weight: 200;\n}\n\n.flow-text {\n font-weight: 300;\n}\n\n@media only screen and (min-width: 360px) {\n .flow-text {\n font-size: 1.2rem;\n }\n}\n\n@media only screen and (min-width: 390px) {\n .flow-text {\n font-size: 1.224rem;\n }\n}\n\n@media only screen and (min-width: 420px) {\n .flow-text {\n font-size: 1.248rem;\n }\n}\n\n@media only screen and (min-width: 450px) {\n .flow-text {\n font-size: 1.272rem;\n }\n}\n\n@media only screen and (min-width: 480px) {\n .flow-text {\n font-size: 1.296rem;\n }\n}\n\n@media only screen and (min-width: 510px) {\n .flow-text {\n font-size: 1.32rem;\n }\n}\n\n@media only screen and (min-width: 540px) {\n .flow-text {\n font-size: 1.344rem;\n }\n}\n\n@media only screen and (min-width: 570px) {\n .flow-text {\n font-size: 1.368rem;\n }\n}\n\n@media only screen and (min-width: 600px) {\n .flow-text {\n font-size: 1.392rem;\n }\n}\n\n@media only screen and (min-width: 630px) {\n .flow-text {\n font-size: 1.416rem;\n }\n}\n\n@media only screen and (min-width: 660px) {\n .flow-text {\n font-size: 1.44rem;\n }\n}\n\n@media only screen and (min-width: 690px) {\n .flow-text {\n font-size: 1.464rem;\n }\n}\n\n@media only screen and (min-width: 720px) {\n .flow-text {\n font-size: 1.488rem;\n }\n}\n\n@media only screen and (min-width: 750px) {\n .flow-text {\n font-size: 1.512rem;\n }\n}\n\n@media only screen and (min-width: 780px) {\n .flow-text {\n font-size: 1.536rem;\n }\n}\n\n@media only screen and (min-width: 810px) {\n .flow-text {\n font-size: 1.56rem;\n }\n}\n\n@media only screen and (min-width: 840px) {\n .flow-text {\n font-size: 1.584rem;\n }\n}\n\n@media only screen and (min-width: 870px) {\n .flow-text {\n font-size: 1.608rem;\n }\n}\n\n@media only screen and (min-width: 900px) {\n .flow-text {\n font-size: 1.632rem;\n }\n}\n\n@media only screen and (min-width: 930px) {\n .flow-text {\n font-size: 1.656rem;\n }\n}\n\n@media only screen and (min-width: 960px) {\n .flow-text {\n font-size: 1.68rem;\n }\n}\n\n@media only screen and (max-width: 360px) {\n .flow-text {\n font-size: 1.2rem;\n }\n}\n\n.scale-transition {\n transition: -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;\n transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;\n transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;\n}\n\n.scale-transition.scale-out {\n -webkit-transform: scale(0);\n transform: scale(0);\n transition: -webkit-transform .2s !important;\n transition: transform .2s !important;\n transition: transform .2s, -webkit-transform .2s !important;\n}\n\n.scale-transition.scale-in {\n -webkit-transform: scale(1);\n transform: scale(1);\n}\n\n.card-panel {\n transition: box-shadow .25s;\n padding: 24px;\n margin: 0.5rem 0 1rem 0;\n border-radius: 2px;\n background-color: #fff;\n}\n\n.card {\n position: relative;\n margin: 0.5rem 0 1rem 0;\n background-color: #fff;\n transition: box-shadow .25s;\n border-radius: 2px;\n}\n\n.card .card-title {\n font-size: 24px;\n font-weight: 300;\n}\n\n.card .card-title.activator {\n cursor: pointer;\n}\n\n.card.small, .card.medium, .card.large {\n position: relative;\n}\n\n.card.small .card-image, .card.medium .card-image, .card.large .card-image {\n max-height: 60%;\n overflow: hidden;\n}\n\n.card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content {\n max-height: 40%;\n}\n\n.card.small .card-content, .card.medium .card-content, .card.large .card-content {\n max-height: 100%;\n overflow: hidden;\n}\n\n.card.small .card-action, .card.medium .card-action, .card.large .card-action {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n.card.small {\n height: 300px;\n}\n\n.card.medium {\n height: 400px;\n}\n\n.card.large {\n height: 500px;\n}\n\n.card.horizontal {\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n}\n\n.card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image {\n height: 100%;\n max-height: none;\n overflow: visible;\n}\n\n.card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img {\n height: 100%;\n}\n\n.card.horizontal .card-image {\n max-width: 50%;\n}\n\n.card.horizontal .card-image img {\n border-radius: 2px 0 0 2px;\n max-width: 100%;\n width: auto;\n}\n\n.card.horizontal .card-stacked {\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-flex-direction: column;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-flex: 1;\n -ms-flex: 1;\n flex: 1;\n position: relative;\n}\n\n.card.horizontal .card-stacked .card-content {\n -webkit-flex-grow: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n}\n\n.card.sticky-action .card-action {\n z-index: 2;\n}\n\n.card.sticky-action .card-reveal {\n z-index: 1;\n padding-bottom: 64px;\n}\n\n.card .card-image {\n position: relative;\n}\n\n.card .card-image img {\n display: block;\n border-radius: 2px 2px 0 0;\n position: relative;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n width: 100%;\n}\n\n.card .card-image .card-title {\n color: #fff;\n position: absolute;\n bottom: 0;\n left: 0;\n max-width: 100%;\n padding: 24px;\n}\n\n.card .card-content {\n padding: 24px;\n border-radius: 0 0 2px 2px;\n}\n\n.card .card-content p {\n margin: 0;\n color: inherit;\n}\n\n.card .card-content .card-title {\n display: block;\n line-height: 32px;\n margin-bottom: 8px;\n}\n\n.card .card-content .card-title i {\n line-height: 32px;\n}\n\n.card .card-action {\n position: relative;\n background-color: inherit;\n border-top: 1px solid rgba(160, 160, 160, 0.2);\n padding: 16px 24px;\n}\n\n.card .card-action:last-child {\n border-radius: 0 0 2px 2px;\n}\n\n.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating) {\n color: #ffab40;\n margin-right: 24px;\n transition: color .3s ease;\n text-transform: uppercase;\n}\n\n.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover {\n color: #ffd8a6;\n}\n\n.card .card-reveal {\n padding: 24px;\n position: absolute;\n background-color: #fff;\n width: 100%;\n overflow-y: auto;\n left: 0;\n top: 100%;\n height: 100%;\n z-index: 3;\n display: none;\n}\n\n.card .card-reveal .card-title {\n cursor: pointer;\n display: block;\n}\n\n#toast-container {\n display: block;\n position: fixed;\n z-index: 10000;\n}\n\n@media only screen and (max-width: 600px) {\n #toast-container {\n min-width: 100%;\n bottom: 0%;\n }\n}\n\n@media only screen and (min-width: 601px) and (max-width: 992px) {\n #toast-container {\n left: 5%;\n bottom: 7%;\n max-width: 90%;\n }\n}\n\n@media only screen and (min-width: 993px) {\n #toast-container {\n top: 10%;\n right: 7%;\n max-width: 86%;\n }\n}\n\n.toast {\n border-radius: 2px;\n top: 35px;\n width: auto;\n clear: both;\n margin-top: 10px;\n position: relative;\n max-width: 100%;\n height: auto;\n min-height: 48px;\n line-height: 1.5em;\n word-break: break-all;\n background-color: #323232;\n padding: 10px 25px;\n font-size: 1.1rem;\n font-weight: 300;\n color: #fff;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-align-items: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-justify-content: space-between;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n\n.toast .btn, .toast .btn-large, .toast .btn-flat {\n margin: 0;\n margin-left: 3rem;\n}\n\n.toast.rounded {\n border-radius: 24px;\n}\n\n@media only screen and (max-width: 600px) {\n .toast {\n width: 100%;\n border-radius: 0;\n }\n}\n\n@media only screen and (min-width: 601px) and (max-width: 992px) {\n .toast {\n float: left;\n }\n}\n\n@media only screen and (min-width: 993px) {\n .toast {\n float: right;\n }\n}\n\n.tabs {\n position: relative;\n overflow-x: auto;\n overflow-y: hidden;\n height: 48px;\n width: 100%;\n background-color: #fff;\n margin: 0 auto;\n white-space: nowrap;\n}\n\n.tabs.tabs-transparent {\n background-color: transparent;\n}\n\n.tabs.tabs-transparent .tab a,\n.tabs.tabs-transparent .tab.disabled a,\n.tabs.tabs-transparent .tab.disabled a:hover {\n color: rgba(255, 255, 255, 0.7);\n}\n\n.tabs.tabs-transparent .tab a:hover,\n.tabs.tabs-transparent .tab a.active {\n color: #fff;\n}\n\n.tabs.tabs-transparent .indicator {\n background-color: #fff;\n}\n\n.tabs.tabs-fixed-width {\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n}\n\n.tabs.tabs-fixed-width .tab {\n -webkit-flex-grow: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n}\n\n.tabs .tab {\n display: inline-block;\n text-align: center;\n line-height: 48px;\n height: 48px;\n padding: 0;\n margin: 0;\n text-transform: uppercase;\n}\n\n.tabs .tab a {\n color: rgba(238, 110, 115, 0.7);\n display: block;\n width: 100%;\n height: 100%;\n padding: 0 24px;\n font-size: 14px;\n text-overflow: ellipsis;\n overflow: hidden;\n transition: color .28s ease;\n}\n\n.tabs .tab a:hover, .tabs .tab a.active {\n background-color: transparent;\n color: #ee6e73;\n}\n\n.tabs .tab.disabled a,\n.tabs .tab.disabled a:hover {\n color: rgba(238, 110, 115, 0.7);\n cursor: default;\n}\n\n.tabs .indicator {\n position: absolute;\n bottom: 0;\n height: 2px;\n background-color: #f6b2b5;\n will-change: left, right;\n}\n\n@media only screen and (max-width: 992px) {\n .tabs {\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n }\n .tabs .tab {\n -webkit-flex-grow: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n }\n .tabs .tab a {\n padding: 0 12px;\n }\n}\n\n.material-tooltip {\n padding: 10px 8px;\n font-size: 1rem;\n z-index: 2000;\n background-color: transparent;\n border-radius: 2px;\n color: #fff;\n min-height: 36px;\n line-height: 120%;\n opacity: 0;\n position: absolute;\n text-align: center;\n max-width: calc(100% - 4px);\n overflow: hidden;\n left: 0;\n top: 0;\n pointer-events: none;\n visibility: hidden;\n}\n\n.backdrop {\n position: absolute;\n opacity: 0;\n height: 7px;\n width: 14px;\n border-radius: 0 0 50% 50%;\n background-color: #323232;\n z-index: -1;\n -webkit-transform-origin: 50% 0%;\n transform-origin: 50% 0%;\n visibility: hidden;\n}\n\n.btn, .btn-large,\n.btn-flat {\n border: none;\n border-radius: 2px;\n display: inline-block;\n height: 36px;\n line-height: 36px;\n padding: 0 2rem;\n text-transform: uppercase;\n vertical-align: middle;\n -webkit-tap-highlight-color: transparent;\n}\n\n.btn.disabled, .disabled.btn-large,\n.btn-floating.disabled,\n.btn-large.disabled,\n.btn-flat.disabled,\n.btn:disabled,\n.btn-large:disabled,\n.btn-floating:disabled,\n.btn-large:disabled,\n.btn-flat:disabled,\n.btn[disabled],\n[disabled].btn-large,\n.btn-floating[disabled],\n.btn-large[disabled],\n.btn-flat[disabled] {\n pointer-events: none;\n background-color: #DFDFDF !important;\n box-shadow: none;\n color: #9F9F9F !important;\n cursor: default;\n}\n\n.btn.disabled:hover, .disabled.btn-large:hover,\n.btn-floating.disabled:hover,\n.btn-large.disabled:hover,\n.btn-flat.disabled:hover,\n.btn:disabled:hover,\n.btn-large:disabled:hover,\n.btn-floating:disabled:hover,\n.btn-large:disabled:hover,\n.btn-flat:disabled:hover,\n.btn[disabled]:hover,\n[disabled].btn-large:hover,\n.btn-floating[disabled]:hover,\n.btn-large[disabled]:hover,\n.btn-flat[disabled]:hover {\n background-color: #DFDFDF !important;\n color: #9F9F9F !important;\n}\n\n.btn, .btn-large,\n.btn-floating,\n.btn-large,\n.btn-flat {\n font-size: 1rem;\n outline: 0;\n}\n\n.btn i, .btn-large i,\n.btn-floating i,\n.btn-large i,\n.btn-flat i {\n font-size: 1.3rem;\n line-height: inherit;\n}\n\n.btn:focus, .btn-large:focus,\n.btn-floating:focus {\n background-color: #1d7d74;\n}\n\n.btn, .btn-large {\n text-decoration: none;\n color: #fff;\n background-color: #26a69a;\n text-align: center;\n letter-spacing: .5px;\n transition: .2s ease-out;\n cursor: pointer;\n}\n\n.btn:hover, .btn-large:hover {\n background-color: #2bbbad;\n}\n\n.btn-floating {\n display: inline-block;\n color: #fff;\n position: relative;\n overflow: hidden;\n z-index: 1;\n width: 40px;\n height: 40px;\n line-height: 40px;\n padding: 0;\n background-color: #26a69a;\n border-radius: 50%;\n transition: .3s;\n cursor: pointer;\n vertical-align: middle;\n}\n\n.btn-floating:hover {\n background-color: #26a69a;\n}\n\n.btn-floating:before {\n border-radius: 0;\n}\n\n.btn-floating.btn-large {\n width: 56px;\n height: 56px;\n}\n\n.btn-floating.btn-large.halfway-fab {\n bottom: -28px;\n}\n\n.btn-floating.btn-large i {\n line-height: 56px;\n}\n\n.btn-floating.halfway-fab {\n position: absolute;\n right: 24px;\n bottom: -20px;\n}\n\n.btn-floating.halfway-fab.left {\n right: auto;\n left: 24px;\n}\n\n.btn-floating i {\n width: inherit;\n display: inline-block;\n text-align: center;\n color: #fff;\n font-size: 1.6rem;\n line-height: 40px;\n}\n\nbutton.btn-floating {\n border: none;\n}\n\n.fixed-action-btn {\n position: fixed;\n right: 23px;\n bottom: 23px;\n padding-top: 15px;\n margin-bottom: 0;\n z-index: 998;\n}\n\n.fixed-action-btn.active ul {\n visibility: visible;\n}\n\n.fixed-action-btn.horizontal {\n padding: 0 0 0 15px;\n}\n\n.fixed-action-btn.horizontal ul {\n text-align: right;\n right: 64px;\n top: 50%;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n height: 100%;\n left: auto;\n width: 500px;\n /*width 100% only goes to width of button container */\n}\n\n.fixed-action-btn.horizontal ul li {\n display: inline-block;\n margin: 15px 15px 0 0;\n}\n\n.fixed-action-btn.toolbar {\n padding: 0;\n height: 56px;\n}\n\n.fixed-action-btn.toolbar.active > a i {\n opacity: 0;\n}\n\n.fixed-action-btn.toolbar ul {\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n top: 0;\n bottom: 0;\n}\n\n.fixed-action-btn.toolbar ul li {\n -webkit-flex: 1;\n -ms-flex: 1;\n flex: 1;\n display: inline-block;\n margin: 0;\n height: 100%;\n transition: none;\n}\n\n.fixed-action-btn.toolbar ul li a {\n display: block;\n overflow: hidden;\n position: relative;\n width: 100%;\n height: 100%;\n background-color: transparent;\n box-shadow: none;\n color: #fff;\n line-height: 56px;\n z-index: 1;\n}\n\n.fixed-action-btn.toolbar ul li a i {\n line-height: inherit;\n}\n\n.fixed-action-btn ul {\n left: 0;\n right: 0;\n text-align: center;\n position: absolute;\n bottom: 64px;\n margin: 0;\n visibility: hidden;\n}\n\n.fixed-action-btn ul li {\n margin-bottom: 15px;\n}\n\n.fixed-action-btn ul a.btn-floating {\n opacity: 0;\n}\n\n.fixed-action-btn .fab-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n z-index: -1;\n width: 40px;\n height: 40px;\n background-color: #26a69a;\n border-radius: 50%;\n -webkit-transform: scale(0);\n transform: scale(0);\n}\n\n.btn-flat {\n box-shadow: none;\n background-color: transparent;\n color: #343434;\n cursor: pointer;\n transition: background-color .2s;\n}\n\n.btn-flat:focus, .btn-flat:active {\n background-color: transparent;\n}\n\n.btn-flat:focus, .btn-flat:hover {\n background-color: rgba(0, 0, 0, 0.1);\n box-shadow: none;\n}\n\n.btn-flat:active {\n background-color: rgba(0, 0, 0, 0.2);\n}\n\n.btn-flat.disabled {\n background-color: transparent !important;\n color: #b3b3b3 !important;\n cursor: default;\n}\n\n.btn-large {\n height: 54px;\n line-height: 54px;\n}\n\n.btn-large i {\n font-size: 1.6rem;\n}\n\n.btn-block {\n display: block;\n}\n\n.dropdown-content {\n background-color: #fff;\n margin: 0;\n display: none;\n min-width: 100px;\n max-height: 650px;\n overflow-y: auto;\n opacity: 0;\n position: absolute;\n z-index: 999;\n will-change: width, height;\n}\n\n.dropdown-content li {\n clear: both;\n color: rgba(0, 0, 0, 0.87);\n cursor: pointer;\n min-height: 50px;\n line-height: 1.5rem;\n width: 100%;\n text-align: left;\n text-transform: none;\n}\n\n.dropdown-content li:hover, .dropdown-content li.active, .dropdown-content li.selected {\n background-color: #eee;\n}\n\n.dropdown-content li.active.selected {\n background-color: #e1e1e1;\n}\n\n.dropdown-content li.divider {\n min-height: 0;\n height: 1px;\n}\n\n.dropdown-content li > a, .dropdown-content li > span {\n font-size: 16px;\n color: #26a69a;\n display: block;\n line-height: 22px;\n padding: 14px 16px;\n}\n\n.dropdown-content li > span > label {\n top: 1px;\n left: 0;\n height: 18px;\n}\n\n.dropdown-content li > a > i {\n height: inherit;\n line-height: inherit;\n float: left;\n margin: 0 24px 0 0;\n width: 24px;\n}\n\n.input-field.col .dropdown-content [type=\"checkbox\"] + label {\n top: 1px;\n left: 0;\n height: 18px;\n}\n\n/*!\n * Waves v0.6.0\n * http://fian.my.id/Waves\n *\n * Copyright 2014 Alfiana E. Sibuea and other contributors\n * Released under the MIT license\n * https://github.com/fians/Waves/blob/master/LICENSE\n */\n.waves-effect {\n position: relative;\n cursor: pointer;\n display: inline-block;\n overflow: hidden;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n vertical-align: middle;\n z-index: 1;\n transition: .3s ease-out;\n}\n\n.waves-effect .waves-ripple {\n position: absolute;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n margin-top: -10px;\n margin-left: -10px;\n opacity: 0;\n background: rgba(0, 0, 0, 0.2);\n transition: all 0.7s ease-out;\n transition-property: opacity, -webkit-transform;\n transition-property: transform, opacity;\n transition-property: transform, opacity, -webkit-transform;\n -webkit-transform: scale(0);\n transform: scale(0);\n pointer-events: none;\n}\n\n.waves-effect.waves-light .waves-ripple {\n background-color: rgba(255, 255, 255, 0.45);\n}\n\n.waves-effect.waves-red .waves-ripple {\n background-color: rgba(244, 67, 54, 0.7);\n}\n\n.waves-effect.waves-yellow .waves-ripple {\n background-color: rgba(255, 235, 59, 0.7);\n}\n\n.waves-effect.waves-orange .waves-ripple {\n background-color: rgba(255, 152, 0, 0.7);\n}\n\n.waves-effect.waves-purple .waves-ripple {\n background-color: rgba(156, 39, 176, 0.7);\n}\n\n.waves-effect.waves-green .waves-ripple {\n background-color: rgba(76, 175, 80, 0.7);\n}\n\n.waves-effect.waves-teal .waves-ripple {\n background-color: rgba(0, 150, 136, 0.7);\n}\n\n.waves-effect input[type=\"button\"], .waves-effect input[type=\"reset\"], .waves-effect input[type=\"submit\"] {\n border: 0;\n font-style: normal;\n font-size: inherit;\n text-transform: inherit;\n background: none;\n}\n\n.waves-effect img {\n position: relative;\n z-index: -1;\n}\n\n.waves-notransition {\n transition: none !important;\n}\n\n.waves-circle {\n -webkit-transform: translateZ(0);\n transform: translateZ(0);\n -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);\n}\n\n.waves-input-wrapper {\n border-radius: 0.2em;\n vertical-align: bottom;\n}\n\n.waves-input-wrapper .waves-button-input {\n position: relative;\n top: 0;\n left: 0;\n z-index: 1;\n}\n\n.waves-circle {\n text-align: center;\n width: 2.5em;\n height: 2.5em;\n line-height: 2.5em;\n border-radius: 50%;\n -webkit-mask-image: none;\n}\n\n.waves-block {\n display: block;\n}\n\n/* Firefox Bug: link not triggered */\n.waves-effect .waves-ripple {\n z-index: -1;\n}\n\n.modal {\n display: none;\n position: fixed;\n left: 0;\n right: 0;\n background-color: #fafafa;\n padding: 0;\n max-height: 70%;\n width: 55%;\n margin: auto;\n overflow-y: auto;\n border-radius: 2px;\n will-change: top, opacity;\n}\n\n@media only screen and (max-width: 992px) {\n .modal {\n width: 80%;\n }\n}\n\n.modal h1, .modal h2, .modal h3, .modal h4 {\n margin-top: 0;\n}\n\n.modal .modal-content {\n padding: 24px;\n}\n\n.modal .modal-close {\n cursor: pointer;\n}\n\n.modal .modal-footer {\n border-radius: 0 0 2px 2px;\n background-color: #fafafa;\n padding: 4px 6px;\n height: 56px;\n width: 100%;\n}\n\n.modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat {\n float: right;\n margin: 6px 0;\n}\n\n.modal-overlay {\n position: fixed;\n z-index: 999;\n top: -100px;\n left: 0;\n bottom: 0;\n right: 0;\n height: 125%;\n width: 100%;\n background: #000;\n display: none;\n will-change: opacity;\n}\n\n.modal.modal-fixed-footer {\n padding: 0;\n height: 70%;\n}\n\n.modal.modal-fixed-footer .modal-content {\n position: absolute;\n height: calc(100% - 56px);\n max-height: 100%;\n width: 100%;\n overflow-y: auto;\n}\n\n.modal.modal-fixed-footer .modal-footer {\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n position: absolute;\n bottom: 0;\n}\n\n.modal.bottom-sheet {\n top: auto;\n bottom: -100%;\n margin: 0;\n width: 100%;\n max-height: 45%;\n border-radius: 0;\n will-change: bottom, opacity;\n}\n\n.collapsible {\n border-top: 1px solid #ddd;\n border-right: 1px solid #ddd;\n border-left: 1px solid #ddd;\n margin: 0.5rem 0 1rem 0;\n}\n\n.collapsible-header {\n display: block;\n cursor: pointer;\n min-height: 3rem;\n line-height: 3rem;\n padding: 0 1rem;\n background-color: #fff;\n border-bottom: 1px solid #ddd;\n}\n\n.collapsible-header i {\n width: 2rem;\n font-size: 1.6rem;\n line-height: 3rem;\n display: block;\n float: left;\n text-align: center;\n margin-right: 1rem;\n}\n\n.collapsible-body {\n display: none;\n border-bottom: 1px solid #ddd;\n box-sizing: border-box;\n padding: 2rem;\n}\n\n.side-nav .collapsible,\n.side-nav.fixed .collapsible {\n border: none;\n box-shadow: none;\n}\n\n.side-nav .collapsible li,\n.side-nav.fixed .collapsible li {\n padding: 0;\n}\n\n.side-nav .collapsible-header,\n.side-nav.fixed .collapsible-header {\n background-color: transparent;\n border: none;\n line-height: inherit;\n height: inherit;\n padding: 0 16px;\n}\n\n.side-nav .collapsible-header:hover,\n.side-nav.fixed .collapsible-header:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.side-nav .collapsible-header i,\n.side-nav.fixed .collapsible-header i {\n line-height: inherit;\n}\n\n.side-nav .collapsible-body,\n.side-nav.fixed .collapsible-body {\n border: 0;\n background-color: #fff;\n}\n\n.side-nav .collapsible-body li a,\n.side-nav.fixed .collapsible-body li a {\n padding: 0 23.5px 0 31px;\n}\n\n.collapsible.popout {\n border: none;\n box-shadow: none;\n}\n\n.collapsible.popout > li {\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\n margin: 0 24px;\n transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n\n.collapsible.popout > li.active {\n box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);\n margin: 16px 0;\n}\n\n.chip {\n display: inline-block;\n height: 32px;\n font-size: 13px;\n font-weight: 500;\n color: rgba(0, 0, 0, 0.6);\n line-height: 32px;\n padding: 0 12px;\n border-radius: 16px;\n background-color: #e4e4e4;\n margin-bottom: 5px;\n margin-right: 5px;\n}\n\n.chip > img {\n float: left;\n margin: 0 8px 0 -12px;\n height: 32px;\n width: 32px;\n border-radius: 50%;\n}\n\n.chip .close {\n cursor: pointer;\n float: right;\n font-size: 16px;\n line-height: 32px;\n padding-left: 8px;\n}\n\n.chips {\n border: none;\n border-bottom: 1px solid #9e9e9e;\n box-shadow: none;\n margin: 0 0 20px 0;\n min-height: 45px;\n outline: none;\n transition: all .3s;\n}\n\n.chips.focus {\n border-bottom: 1px solid #26a69a;\n box-shadow: 0 1px 0 0 #26a69a;\n}\n\n.chips:hover {\n cursor: text;\n}\n\n.chips .chip.selected {\n background-color: #26a69a;\n color: #fff;\n}\n\n.chips .input {\n background: none;\n border: 0;\n color: rgba(0, 0, 0, 0.6);\n display: inline-block;\n font-size: 1rem;\n height: 3rem;\n line-height: 32px;\n outline: 0;\n margin: 0;\n padding: 0 !important;\n width: 120px !important;\n}\n\n.chips .input:focus {\n border: 0 !important;\n box-shadow: none !important;\n}\n\n.chips .autocomplete-content {\n margin-top: 0;\n}\n\n.prefix ~ .chips {\n margin-left: 3rem;\n width: 92%;\n width: calc(100% - 3rem);\n}\n\n.chips:empty ~ label {\n font-size: 0.8rem;\n -webkit-transform: translateY(-140%);\n transform: translateY(-140%);\n}\n\n.materialboxed {\n display: block;\n cursor: -webkit-zoom-in;\n cursor: zoom-in;\n position: relative;\n transition: opacity .4s;\n -webkit-backface-visibility: hidden;\n}\n\n.materialboxed:hover:not(.active) {\n opacity: .8;\n}\n\n.materialboxed.active {\n cursor: -webkit-zoom-out;\n cursor: zoom-out;\n}\n\n#materialbox-overlay {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: #292929;\n z-index: 1000;\n will-change: opacity;\n}\n\n.materialbox-caption {\n position: fixed;\n display: none;\n color: #fff;\n line-height: 50px;\n bottom: 0;\n left: 0;\n width: 100%;\n text-align: center;\n padding: 0% 15%;\n height: 50px;\n z-index: 1000;\n -webkit-font-smoothing: antialiased;\n}\n\nselect:focus {\n outline: 1px solid #c9f3ef;\n}\n\nbutton:focus {\n outline: none;\n background-color: #2ab7a9;\n}\n\nlabel {\n font-size: 0.8rem;\n color: #9e9e9e;\n}\n\n/* Text Inputs + Textarea\n ========================================================================== */\n/* Style Placeholders */\n::-webkit-input-placeholder {\n color: #d1d1d1;\n}\n\n:-moz-placeholder {\n /* Firefox 18- */\n color: #d1d1d1;\n}\n\n::-moz-placeholder {\n /* Firefox 19+ */\n color: #d1d1d1;\n}\n\n:-ms-input-placeholder {\n color: #d1d1d1;\n}\n\n/* Text inputs */\ninput:not([type]),\ninput[type=text],\ninput[type=password],\ninput[type=email],\ninput[type=url],\ninput[type=time],\ninput[type=date],\ninput[type=datetime],\ninput[type=datetime-local],\ninput[type=tel],\ninput[type=number],\ninput[type=search],\ntextarea.materialize-textarea {\n background-color: transparent;\n border: none;\n border-bottom: 1px solid #9e9e9e;\n border-radius: 0;\n outline: none;\n height: 3rem;\n width: 100%;\n font-size: 1rem;\n margin: 0 0 20px 0;\n padding: 0;\n box-shadow: none;\n box-sizing: content-box;\n transition: all 0.3s;\n}\n\ninput:not([type]):disabled, input:not([type])[readonly=\"readonly\"],\ninput[type=text]:disabled,\ninput[type=text][readonly=\"readonly\"],\ninput[type=password]:disabled,\ninput[type=password][readonly=\"readonly\"],\ninput[type=email]:disabled,\ninput[type=email][readonly=\"readonly\"],\ninput[type=url]:disabled,\ninput[type=url][readonly=\"readonly\"],\ninput[type=time]:disabled,\ninput[type=time][readonly=\"readonly\"],\ninput[type=date]:disabled,\ninput[type=date][readonly=\"readonly\"],\ninput[type=datetime]:disabled,\ninput[type=datetime][readonly=\"readonly\"],\ninput[type=datetime-local]:disabled,\ninput[type=datetime-local][readonly=\"readonly\"],\ninput[type=tel]:disabled,\ninput[type=tel][readonly=\"readonly\"],\ninput[type=number]:disabled,\ninput[type=number][readonly=\"readonly\"],\ninput[type=search]:disabled,\ninput[type=search][readonly=\"readonly\"],\ntextarea.materialize-textarea:disabled,\ntextarea.materialize-textarea[readonly=\"readonly\"] {\n color: rgba(0, 0, 0, 0.26);\n border-bottom: 1px dotted rgba(0, 0, 0, 0.26);\n}\n\ninput:not([type]):disabled + label,\ninput:not([type])[readonly=\"readonly\"] + label,\ninput[type=text]:disabled + label,\ninput[type=text][readonly=\"readonly\"] + label,\ninput[type=password]:disabled + label,\ninput[type=password][readonly=\"readonly\"] + label,\ninput[type=email]:disabled + label,\ninput[type=email][readonly=\"readonly\"] + label,\ninput[type=url]:disabled + label,\ninput[type=url][readonly=\"readonly\"] + label,\ninput[type=time]:disabled + label,\ninput[type=time][readonly=\"readonly\"] + label,\ninput[type=date]:disabled + label,\ninput[type=date][readonly=\"readonly\"] + label,\ninput[type=datetime]:disabled + label,\ninput[type=datetime][readonly=\"readonly\"] + label,\ninput[type=datetime-local]:disabled + label,\ninput[type=datetime-local][readonly=\"readonly\"] + label,\ninput[type=tel]:disabled + label,\ninput[type=tel][readonly=\"readonly\"] + label,\ninput[type=number]:disabled + label,\ninput[type=number][readonly=\"readonly\"] + label,\ninput[type=search]:disabled + label,\ninput[type=search][readonly=\"readonly\"] + label,\ntextarea.materialize-textarea:disabled + label,\ntextarea.materialize-textarea[readonly=\"readonly\"] + label {\n color: rgba(0, 0, 0, 0.26);\n}\n\ninput:not([type]):focus:not([readonly]),\ninput[type=text]:focus:not([readonly]),\ninput[type=password]:focus:not([readonly]),\ninput[type=email]:focus:not([readonly]),\ninput[type=url]:focus:not([readonly]),\ninput[type=time]:focus:not([readonly]),\ninput[type=date]:focus:not([readonly]),\ninput[type=datetime]:focus:not([readonly]),\ninput[type=datetime-local]:focus:not([readonly]),\ninput[type=tel]:focus:not([readonly]),\ninput[type=number]:focus:not([readonly]),\ninput[type=search]:focus:not([readonly]),\ntextarea.materialize-textarea:focus:not([readonly]) {\n border-bottom: 1px solid #26a69a;\n box-shadow: 0 1px 0 0 #26a69a;\n}\n\ninput:not([type]):focus:not([readonly]) + label,\ninput[type=text]:focus:not([readonly]) + label,\ninput[type=password]:focus:not([readonly]) + label,\ninput[type=email]:focus:not([readonly]) + label,\ninput[type=url]:focus:not([readonly]) + label,\ninput[type=time]:focus:not([readonly]) + label,\ninput[type=date]:focus:not([readonly]) + label,\ninput[type=datetime]:focus:not([readonly]) + label,\ninput[type=datetime-local]:focus:not([readonly]) + label,\ninput[type=tel]:focus:not([readonly]) + label,\ninput[type=number]:focus:not([readonly]) + label,\ninput[type=search]:focus:not([readonly]) + label,\ntextarea.materialize-textarea:focus:not([readonly]) + label {\n color: #26a69a;\n}\n\ninput:not([type]).valid, input:not([type]):focus.valid,\ninput[type=text].valid,\ninput[type=text]:focus.valid,\ninput[type=password].valid,\ninput[type=password]:focus.valid,\ninput[type=email].valid,\ninput[type=email]:focus.valid,\ninput[type=url].valid,\ninput[type=url]:focus.valid,\ninput[type=time].valid,\ninput[type=time]:focus.valid,\ninput[type=date].valid,\ninput[type=date]:focus.valid,\ninput[type=datetime].valid,\ninput[type=datetime]:focus.valid,\ninput[type=datetime-local].valid,\ninput[type=datetime-local]:focus.valid,\ninput[type=tel].valid,\ninput[type=tel]:focus.valid,\ninput[type=number].valid,\ninput[type=number]:focus.valid,\ninput[type=search].valid,\ninput[type=search]:focus.valid,\ntextarea.materialize-textarea.valid,\ntextarea.materialize-textarea:focus.valid {\n border-bottom: 1px solid #4CAF50;\n box-shadow: 0 1px 0 0 #4CAF50;\n}\n\ninput:not([type]).valid + label:after,\ninput:not([type]):focus.valid + label:after,\ninput[type=text].valid + label:after,\ninput[type=text]:focus.valid + label:after,\ninput[type=password].valid + label:after,\ninput[type=password]:focus.valid + label:after,\ninput[type=email].valid + label:after,\ninput[type=email]:focus.valid + label:after,\ninput[type=url].valid + label:after,\ninput[type=url]:focus.valid + label:after,\ninput[type=time].valid + label:after,\ninput[type=time]:focus.valid + label:after,\ninput[type=date].valid + label:after,\ninput[type=date]:focus.valid + label:after,\ninput[type=datetime].valid + label:after,\ninput[type=datetime]:focus.valid + label:after,\ninput[type=datetime-local].valid + label:after,\ninput[type=datetime-local]:focus.valid + label:after,\ninput[type=tel].valid + label:after,\ninput[type=tel]:focus.valid + label:after,\ninput[type=number].valid + label:after,\ninput[type=number]:focus.valid + label:after,\ninput[type=search].valid + label:after,\ninput[type=search]:focus.valid + label:after,\ntextarea.materialize-textarea.valid + label:after,\ntextarea.materialize-textarea:focus.valid + label:after {\n content: attr(data-success);\n color: #4CAF50;\n opacity: 1;\n}\n\ninput:not([type]).invalid, input:not([type]):focus.invalid,\ninput[type=text].invalid,\ninput[type=text]:focus.invalid,\ninput[type=password].invalid,\ninput[type=password]:focus.invalid,\ninput[type=email].invalid,\ninput[type=email]:focus.invalid,\ninput[type=url].invalid,\ninput[type=url]:focus.invalid,\ninput[type=time].invalid,\ninput[type=time]:focus.invalid,\ninput[type=date].invalid,\ninput[type=date]:focus.invalid,\ninput[type=datetime].invalid,\ninput[type=datetime]:focus.invalid,\ninput[type=datetime-local].invalid,\ninput[type=datetime-local]:focus.invalid,\ninput[type=tel].invalid,\ninput[type=tel]:focus.invalid,\ninput[type=number].invalid,\ninput[type=number]:focus.invalid,\ninput[type=search].invalid,\ninput[type=search]:focus.invalid,\ntextarea.materialize-textarea.invalid,\ntextarea.materialize-textarea:focus.invalid {\n border-bottom: 1px solid #F44336;\n box-shadow: 0 1px 0 0 #F44336;\n}\n\ninput:not([type]).invalid + label:after,\ninput:not([type]):focus.invalid + label:after,\ninput[type=text].invalid + label:after,\ninput[type=text]:focus.invalid + label:after,\ninput[type=password].invalid + label:after,\ninput[type=password]:focus.invalid + label:after,\ninput[type=email].invalid + label:after,\ninput[type=email]:focus.invalid + label:after,\ninput[type=url].invalid + label:after,\ninput[type=url]:focus.invalid + label:after,\ninput[type=time].invalid + label:after,\ninput[type=time]:focus.invalid + label:after,\ninput[type=date].invalid + label:after,\ninput[type=date]:focus.invalid + label:after,\ninput[type=datetime].invalid + label:after,\ninput[type=datetime]:focus.invalid + label:after,\ninput[type=datetime-local].invalid + label:after,\ninput[type=datetime-local]:focus.invalid + label:after,\ninput[type=tel].invalid + label:after,\ninput[type=tel]:focus.invalid + label:after,\ninput[type=number].invalid + label:after,\ninput[type=number]:focus.invalid + label:after,\ninput[type=search].invalid + label:after,\ninput[type=search]:focus.invalid + label:after,\ntextarea.materialize-textarea.invalid + label:after,\ntextarea.materialize-textarea:focus.invalid + label:after {\n content: attr(data-error);\n color: #F44336;\n opacity: 1;\n}\n\ninput:not([type]).validate + label,\ninput[type=text].validate + label,\ninput[type=password].validate + label,\ninput[type=email].validate + label,\ninput[type=url].validate + label,\ninput[type=time].validate + label,\ninput[type=date].validate + label,\ninput[type=datetime].validate + label,\ninput[type=datetime-local].validate + label,\ninput[type=tel].validate + label,\ninput[type=number].validate + label,\ninput[type=search].validate + label,\ntextarea.materialize-textarea.validate + label {\n width: 100%;\n pointer-events: none;\n}\n\ninput:not([type]) + label:after,\ninput[type=text] + label:after,\ninput[type=password] + label:after,\ninput[type=email] + label:after,\ninput[type=url] + label:after,\ninput[type=time] + label:after,\ninput[type=date] + label:after,\ninput[type=datetime] + label:after,\ninput[type=datetime-local] + label:after,\ninput[type=tel] + label:after,\ninput[type=number] + label:after,\ninput[type=search] + label:after,\ntextarea.materialize-textarea + label:after {\n display: block;\n content: \"\";\n position: absolute;\n top: 60px;\n opacity: 0;\n transition: .2s opacity ease-out, .2s color ease-out;\n}\n\n.input-field {\n position: relative;\n margin-top: 1rem;\n}\n\n.input-field.inline {\n display: inline-block;\n vertical-align: middle;\n margin-left: 5px;\n}\n\n.input-field.inline input,\n.input-field.inline .select-dropdown {\n margin-bottom: 1rem;\n}\n\n.input-field.col label {\n left: 0.75rem;\n}\n\n.input-field.col .prefix ~ label,\n.input-field.col .prefix ~ .validate ~ label {\n width: calc(100% - 3rem - 1.5rem);\n}\n\n.input-field label {\n color: #9e9e9e;\n position: absolute;\n top: 0.8rem;\n left: 0;\n font-size: 1rem;\n cursor: text;\n transition: .2s ease-out;\n text-align: initial;\n}\n\n.input-field label:not(.label-icon).active {\n font-size: 0.8rem;\n -webkit-transform: translateY(-140%);\n transform: translateY(-140%);\n}\n\n.input-field .prefix {\n position: absolute;\n width: 3rem;\n font-size: 2rem;\n transition: color .2s;\n}\n\n.input-field .prefix.active {\n color: #26a69a;\n}\n\n.input-field .prefix ~ input,\n.input-field .prefix ~ textarea,\n.input-field .prefix ~ label,\n.input-field .prefix ~ .validate ~ label,\n.input-field .prefix ~ .autocomplete-content {\n margin-left: 3rem;\n width: 92%;\n width: calc(100% - 3rem);\n}\n\n.input-field .prefix ~ label {\n margin-left: 3rem;\n}\n\n@media only screen and (max-width: 992px) {\n .input-field .prefix ~ input {\n width: 86%;\n width: calc(100% - 3rem);\n }\n}\n\n@media only screen and (max-width: 600px) {\n .input-field .prefix ~ input {\n width: 80%;\n width: calc(100% - 3rem);\n }\n}\n\n/* Search Field */\n.input-field input[type=search] {\n display: block;\n line-height: inherit;\n padding-left: 4rem;\n width: calc(100% - 4rem);\n}\n\n.input-field input[type=search]:focus {\n background-color: #fff;\n border: 0;\n box-shadow: none;\n color: #444;\n}\n\n.input-field input[type=search]:focus + label i,\n.input-field input[type=search]:focus ~ .mdi-navigation-close,\n.input-field input[type=search]:focus ~ .material-icons {\n color: #444;\n}\n\n.input-field input[type=search] + label {\n left: 1rem;\n}\n\n.input-field input[type=search] ~ .mdi-navigation-close,\n.input-field input[type=search] ~ .material-icons {\n position: absolute;\n top: 0;\n right: 1rem;\n color: transparent;\n cursor: pointer;\n font-size: 2rem;\n transition: .3s color;\n}\n\n/* Textarea */\ntextarea {\n width: 100%;\n height: 3rem;\n background-color: transparent;\n}\n\ntextarea.materialize-textarea {\n overflow-y: hidden;\n /* prevents scroll bar flash */\n padding: .8rem 0 1.6rem 0;\n /* prevents text jump on Enter keypress */\n resize: none;\n min-height: 3rem;\n}\n\n.hiddendiv {\n display: none;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-wrap: break-word;\n /* future version of deprecated 'word-wrap' */\n padding-top: 1.2rem;\n /* prevents text jump on Enter keypress */\n position: absolute;\n top: 0;\n}\n\n/* Autocomplete */\n.autocomplete-content {\n margin-top: -20px;\n display: block;\n opacity: 1;\n position: static;\n}\n\n.autocomplete-content li .highlight {\n color: #444;\n}\n\n.autocomplete-content li img {\n height: 40px;\n width: 40px;\n margin: 5px 15px;\n}\n\n/* Radio Buttons\n ========================================================================== */\n[type=\"radio\"]:not(:checked),\n[type=\"radio\"]:checked {\n position: absolute;\n left: -9999px;\n opacity: 0;\n}\n\n[type=\"radio\"]:not(:checked) + label,\n[type=\"radio\"]:checked + label {\n position: relative;\n padding-left: 35px;\n cursor: pointer;\n display: inline-block;\n height: 25px;\n line-height: 25px;\n font-size: 1rem;\n transition: .28s ease;\n /* webkit (konqueror) browsers */\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n[type=\"radio\"] + label:before,\n[type=\"radio\"] + label:after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n margin: 4px;\n width: 16px;\n height: 16px;\n z-index: 0;\n transition: .28s ease;\n}\n\n/* Unchecked styles */\n[type=\"radio\"]:not(:checked) + label:before,\n[type=\"radio\"]:not(:checked) + label:after,\n[type=\"radio\"]:checked + label:before,\n[type=\"radio\"]:checked + label:after,\n[type=\"radio\"].with-gap:checked + label:before,\n[type=\"radio\"].with-gap:checked + label:after {\n border-radius: 50%;\n}\n\n[type=\"radio\"]:not(:checked) + label:before,\n[type=\"radio\"]:not(:checked) + label:after {\n border: 2px solid #5a5a5a;\n}\n\n[type=\"radio\"]:not(:checked) + label:after {\n -webkit-transform: scale(0);\n transform: scale(0);\n}\n\n/* Checked styles */\n[type=\"radio\"]:checked + label:before {\n border: 2px solid transparent;\n}\n\n[type=\"radio\"]:checked + label:after,\n[type=\"radio\"].with-gap:checked + label:before,\n[type=\"radio\"].with-gap:checked + label:after {\n border: 2px solid #26a69a;\n}\n\n[type=\"radio\"]:checked + label:after,\n[type=\"radio\"].with-gap:checked + label:after {\n background-color: #26a69a;\n}\n\n[type=\"radio\"]:checked + label:after {\n -webkit-transform: scale(1.02);\n transform: scale(1.02);\n}\n\n/* Radio With gap */\n[type=\"radio\"].with-gap:checked + label:after {\n -webkit-transform: scale(0.5);\n transform: scale(0.5);\n}\n\n/* Focused styles */\n[type=\"radio\"].tabbed:focus + label:before {\n box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);\n}\n\n/* Disabled Radio With gap */\n[type=\"radio\"].with-gap:disabled:checked + label:before {\n border: 2px solid rgba(0, 0, 0, 0.26);\n}\n\n[type=\"radio\"].with-gap:disabled:checked + label:after {\n border: none;\n background-color: rgba(0, 0, 0, 0.26);\n}\n\n/* Disabled style */\n[type=\"radio\"]:disabled:not(:checked) + label:before,\n[type=\"radio\"]:disabled:checked + label:before {\n background-color: transparent;\n border-color: rgba(0, 0, 0, 0.26);\n}\n\n[type=\"radio\"]:disabled + label {\n color: rgba(0, 0, 0, 0.26);\n}\n\n[type=\"radio\"]:disabled:not(:checked) + label:before {\n border-color: rgba(0, 0, 0, 0.26);\n}\n\n[type=\"radio\"]:disabled:checked + label:after {\n background-color: rgba(0, 0, 0, 0.26);\n border-color: #BDBDBD;\n}\n\n/* Checkboxes\n ========================================================================== */\n/* CUSTOM CSS CHECKBOXES */\nform p {\n margin-bottom: 10px;\n text-align: left;\n}\n\nform p:last-child {\n margin-bottom: 0;\n}\n\n/* Remove default checkbox */\n[type=\"checkbox\"]:not(:checked),\n[type=\"checkbox\"]:checked {\n position: absolute;\n left: -9999px;\n opacity: 0;\n}\n\n[type=\"checkbox\"] {\n /* checkbox aspect */\n}\n\n[type=\"checkbox\"] + label {\n position: relative;\n padding-left: 35px;\n cursor: pointer;\n display: inline-block;\n height: 25px;\n line-height: 25px;\n font-size: 1rem;\n -webkit-user-select: none;\n /* webkit (safari, chrome) browsers */\n -moz-user-select: none;\n /* mozilla browsers */\n -khtml-user-select: none;\n /* webkit (konqueror) browsers */\n -ms-user-select: none;\n /* IE10+ */\n}\n\n[type=\"checkbox\"] + label:before,\n[type=\"checkbox\"]:not(.filled-in) + label:after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 18px;\n height: 18px;\n z-index: 0;\n border: 2px solid #5a5a5a;\n border-radius: 1px;\n margin-top: 2px;\n transition: .2s;\n}\n\n[type=\"checkbox\"]:not(.filled-in) + label:after {\n border: 0;\n -webkit-transform: scale(0);\n transform: scale(0);\n}\n\n[type=\"checkbox\"]:not(:checked):disabled + label:before {\n border: none;\n background-color: rgba(0, 0, 0, 0.26);\n}\n\n[type=\"checkbox\"].tabbed:focus + label:after {\n -webkit-transform: scale(1);\n transform: scale(1);\n border: 0;\n border-radius: 50%;\n box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n[type=\"checkbox\"]:checked + label:before {\n top: -4px;\n left: -5px;\n width: 12px;\n height: 22px;\n border-top: 2px solid transparent;\n border-left: 2px solid transparent;\n border-right: 2px solid #26a69a;\n border-bottom: 2px solid #26a69a;\n -webkit-transform: rotate(40deg);\n transform: rotate(40deg);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-transform-origin: 100% 100%;\n transform-origin: 100% 100%;\n}\n\n[type=\"checkbox\"]:checked:disabled + label:before {\n border-right: 2px solid rgba(0, 0, 0, 0.26);\n border-bottom: 2px solid rgba(0, 0, 0, 0.26);\n}\n\n/* Indeterminate checkbox */\n[type=\"checkbox\"]:indeterminate + label:before {\n top: -11px;\n left: -12px;\n width: 10px;\n height: 22px;\n border-top: none;\n border-left: none;\n border-right: 2px solid #26a69a;\n border-bottom: none;\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-transform-origin: 100% 100%;\n transform-origin: 100% 100%;\n}\n\n[type=\"checkbox\"]:indeterminate:disabled + label:before {\n border-right: 2px solid rgba(0, 0, 0, 0.26);\n background-color: transparent;\n}\n\n[type=\"checkbox\"].filled-in + label:after {\n border-radius: 2px;\n}\n\n[type=\"checkbox\"].filled-in + label:before,\n[type=\"checkbox\"].filled-in + label:after {\n content: '';\n left: 0;\n position: absolute;\n /* .1s delay is for check animation */\n transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;\n z-index: 1;\n}\n\n[type=\"checkbox\"].filled-in:not(:checked) + label:before {\n width: 0;\n height: 0;\n border: 3px solid transparent;\n left: 6px;\n top: 10px;\n -webkit-transform: rotateZ(37deg);\n transform: rotateZ(37deg);\n -webkit-transform-origin: 20% 40%;\n transform-origin: 100% 100%;\n}\n\n[type=\"checkbox\"].filled-in:not(:checked) + label:after {\n height: 20px;\n width: 20px;\n background-color: transparent;\n border: 2px solid #5a5a5a;\n top: 0px;\n z-index: 0;\n}\n\n[type=\"checkbox\"].filled-in:checked + label:before {\n top: 0;\n left: 1px;\n width: 8px;\n height: 13px;\n border-top: 2px solid transparent;\n border-left: 2px solid transparent;\n border-right: 2px solid #fff;\n border-bottom: 2px solid #fff;\n -webkit-transform: rotateZ(37deg);\n transform: rotateZ(37deg);\n -webkit-transform-origin: 100% 100%;\n transform-origin: 100% 100%;\n}\n\n[type=\"checkbox\"].filled-in:checked + label:after {\n top: 0;\n width: 20px;\n height: 20px;\n border: 2px solid #26a69a;\n background-color: #26a69a;\n z-index: 0;\n}\n\n[type=\"checkbox\"].filled-in.tabbed:focus + label:after {\n border-radius: 2px;\n border-color: #5a5a5a;\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n[type=\"checkbox\"].filled-in.tabbed:checked:focus + label:after {\n border-radius: 2px;\n background-color: #26a69a;\n border-color: #26a69a;\n}\n\n[type=\"checkbox\"].filled-in:disabled:not(:checked) + label:before {\n background-color: transparent;\n border: 2px solid transparent;\n}\n\n[type=\"checkbox\"].filled-in:disabled:not(:checked) + label:after {\n border-color: transparent;\n background-color: #BDBDBD;\n}\n\n[type=\"checkbox\"].filled-in:disabled:checked + label:before {\n background-color: transparent;\n}\n\n[type=\"checkbox\"].filled-in:disabled:checked + label:after {\n background-color: #BDBDBD;\n border-color: #BDBDBD;\n}\n\n/* Switch\n ========================================================================== */\n.switch,\n.switch * {\n -webkit-user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -ms-user-select: none;\n}\n\n.switch label {\n cursor: pointer;\n}\n\n.switch label input[type=checkbox] {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.switch label input[type=checkbox]:checked + .lever {\n background-color: #84c7c1;\n}\n\n.switch label input[type=checkbox]:checked + .lever:after {\n background-color: #26a69a;\n left: 24px;\n}\n\n.switch label .lever {\n content: \"\";\n display: inline-block;\n position: relative;\n width: 40px;\n height: 15px;\n background-color: #818181;\n border-radius: 15px;\n margin-right: 10px;\n transition: background 0.3s ease;\n vertical-align: middle;\n margin: 0 16px;\n}\n\n.switch label .lever:after {\n content: \"\";\n position: absolute;\n display: inline-block;\n width: 21px;\n height: 21px;\n background-color: #F1F1F1;\n border-radius: 21px;\n box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4);\n left: -5px;\n top: -3px;\n transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease;\n}\n\ninput[type=checkbox]:checked:not(:disabled) ~ .lever:active::after,\ninput[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::after {\n box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(38, 166, 154, 0.1);\n}\n\ninput[type=checkbox]:not(:disabled) ~ .lever:active:after,\ninput[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::after {\n box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.08);\n}\n\n.switch input[type=checkbox][disabled] + .lever {\n cursor: default;\n}\n\n.switch label input[type=checkbox][disabled] + .lever:after,\n.switch label input[type=checkbox][disabled]:checked + .lever:after {\n background-color: #BDBDBD;\n}\n\n/* Select Field\n ========================================================================== */\nselect {\n display: none;\n}\n\nselect.browser-default {\n display: block;\n}\n\nselect {\n background-color: rgba(255, 255, 255, 0.9);\n width: 100%;\n padding: 5px;\n border: 1px solid #f2f2f2;\n border-radius: 2px;\n height: 3rem;\n}\n\n.select-label {\n position: absolute;\n}\n\n.select-wrapper {\n position: relative;\n}\n\n.select-wrapper input.select-dropdown {\n position: relative;\n cursor: pointer;\n background-color: transparent;\n border: none;\n border-bottom: 1px solid #9e9e9e;\n outline: none;\n height: 3rem;\n line-height: 3rem;\n width: 100%;\n font-size: 1rem;\n margin: 0 0 20px 0;\n padding: 0;\n display: block;\n}\n\n.select-wrapper span.caret {\n color: initial;\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n height: 10px;\n margin: auto 0;\n font-size: 10px;\n line-height: 10px;\n}\n\n.select-wrapper span.caret.disabled {\n color: rgba(0, 0, 0, 0.26);\n}\n\n.select-wrapper + label {\n position: absolute;\n top: -14px;\n font-size: 0.8rem;\n}\n\nselect:disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.select-wrapper input.select-dropdown:disabled {\n color: rgba(0, 0, 0, 0.3);\n cursor: default;\n -webkit-user-select: none;\n /* webkit (safari, chrome) browsers */\n -moz-user-select: none;\n /* mozilla browsers */\n -ms-user-select: none;\n /* IE10+ */\n border-bottom: 1px solid rgba(0, 0, 0, 0.3);\n}\n\n.select-wrapper i {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.select-dropdown li.disabled,\n.select-dropdown li.disabled > span,\n.select-dropdown li.optgroup {\n color: rgba(0, 0, 0, 0.3);\n background-color: transparent;\n}\n\n.prefix ~ .select-wrapper {\n margin-left: 3rem;\n width: 92%;\n width: calc(100% - 3rem);\n}\n\n.prefix ~ label {\n margin-left: 3rem;\n}\n\n.select-dropdown li img {\n height: 40px;\n width: 40px;\n margin: 5px 15px;\n float: right;\n}\n\n.select-dropdown li.optgroup {\n border-top: 1px solid #eee;\n}\n\n.select-dropdown li.optgroup.selected > span {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.select-dropdown li.optgroup > span {\n color: rgba(0, 0, 0, 0.4);\n}\n\n.select-dropdown li.optgroup ~ li.optgroup-option {\n padding-left: 1rem;\n}\n\n/* File Input\n ========================================================================== */\n.file-field {\n position: relative;\n}\n\n.file-field .file-path-wrapper {\n overflow: hidden;\n padding-left: 10px;\n}\n\n.file-field input.file-path {\n width: 100%;\n}\n\n.file-field .btn, .file-field .btn-large {\n float: left;\n height: 3rem;\n line-height: 3rem;\n}\n\n.file-field span {\n cursor: pointer;\n}\n\n.file-field input[type=file] {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n margin: 0;\n padding: 0;\n font-size: 20px;\n cursor: pointer;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n\n/* Range\n ========================================================================== */\n.range-field {\n position: relative;\n}\n\ninput[type=range],\ninput[type=range] + .thumb {\n cursor: pointer;\n}\n\ninput[type=range] {\n position: relative;\n background-color: transparent;\n border: none;\n outline: none;\n width: 100%;\n margin: 15px 0;\n padding: 0;\n}\n\ninput[type=range]:focus {\n outline: none;\n}\n\ninput[type=range] + .thumb {\n position: absolute;\n top: 10px;\n left: 0;\n border: none;\n height: 0;\n width: 0;\n border-radius: 50%;\n background-color: #26a69a;\n margin-left: 7px;\n -webkit-transform-origin: 50% 50%;\n transform-origin: 50% 50%;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\n\ninput[type=range] + .thumb .value {\n display: block;\n width: 30px;\n text-align: center;\n color: #26a69a;\n font-size: 0;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n\ninput[type=range] + .thumb.active {\n border-radius: 50% 50% 50% 0;\n}\n\ninput[type=range] + .thumb.active .value {\n color: #fff;\n margin-left: -1px;\n margin-top: 8px;\n font-size: 10px;\n}\n\ninput[type=range] {\n -webkit-appearance: none;\n}\n\ninput[type=range]::-webkit-slider-runnable-track {\n height: 3px;\n background: #c2c0c2;\n border: none;\n}\n\ninput[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: 14px;\n width: 14px;\n border-radius: 50%;\n background-color: #26a69a;\n -webkit-transform-origin: 50% 50%;\n transform-origin: 50% 50%;\n margin: -5px 0 0 0;\n transition: .3s;\n}\n\ninput[type=range]:focus::-webkit-slider-runnable-track {\n background: #ccc;\n}\n\ninput[type=range] {\n /* fix for FF unable to apply focus style bug */\n border: 1px solid white;\n /*required for proper track sizing in FF*/\n}\n\ninput[type=range]::-moz-range-track {\n height: 3px;\n background: #ddd;\n border: none;\n}\n\ninput[type=range]::-moz-range-thumb {\n border: none;\n height: 14px;\n width: 14px;\n border-radius: 50%;\n background: #26a69a;\n margin-top: -5px;\n}\n\ninput[type=range]:-moz-focusring {\n outline: 1px solid #fff;\n outline-offset: -1px;\n}\n\ninput[type=range]:focus::-moz-range-track {\n background: #ccc;\n}\n\ninput[type=range]::-ms-track {\n height: 3px;\n background: transparent;\n border-color: transparent;\n border-width: 6px 0;\n /*remove default tick marks*/\n color: transparent;\n}\n\ninput[type=range]::-ms-fill-lower {\n background: #777;\n}\n\ninput[type=range]::-ms-fill-upper {\n background: #ddd;\n}\n\ninput[type=range]::-ms-thumb {\n border: none;\n height: 14px;\n width: 14px;\n border-radius: 50%;\n background: #26a69a;\n}\n\ninput[type=range]:focus::-ms-fill-lower {\n background: #888;\n}\n\ninput[type=range]:focus::-ms-fill-upper {\n background: #ccc;\n}\n\n/***************\n Nav List\n***************/\n.table-of-contents.fixed {\n position: fixed;\n}\n\n.table-of-contents li {\n padding: 2px 0;\n}\n\n.table-of-contents a {\n display: inline-block;\n font-weight: 300;\n color: #757575;\n padding-left: 20px;\n height: 1.5rem;\n line-height: 1.5rem;\n letter-spacing: .4;\n display: inline-block;\n}\n\n.table-of-contents a:hover {\n color: #a8a8a8;\n padding-left: 19px;\n border-left: 1px solid #ee6e73;\n}\n\n.table-of-contents a.active {\n font-weight: 500;\n padding-left: 18px;\n border-left: 2px solid #ee6e73;\n}\n\n.side-nav {\n position: fixed;\n width: 300px;\n left: 0;\n top: 0;\n margin: 0;\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n height: 100%;\n height: calc(100% + 60px);\n height: -moz-calc(100%);\n padding-bottom: 60px;\n background-color: #fff;\n z-index: 999;\n overflow-y: auto;\n will-change: transform;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-transform: translateX(-105%);\n transform: translateX(-105%);\n}\n\n.side-nav.right-aligned {\n right: 0;\n -webkit-transform: translateX(105%);\n transform: translateX(105%);\n left: auto;\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n}\n\n.side-nav .collapsible {\n margin: 0;\n}\n\n.side-nav li {\n float: none;\n line-height: 48px;\n}\n\n.side-nav li.active {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.side-nav li > a {\n color: rgba(0, 0, 0, 0.87);\n display: block;\n font-size: 14px;\n font-weight: 500;\n height: 48px;\n line-height: 48px;\n padding: 0 32px;\n}\n\n.side-nav li > a:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.side-nav li > a.btn, .side-nav li > a.btn-large, .side-nav li > a.btn-large, .side-nav li > a.btn-flat, .side-nav li > a.btn-floating {\n margin: 10px 15px;\n}\n\n.side-nav li > a.btn, .side-nav li > a.btn-large, .side-nav li > a.btn-large, .side-nav li > a.btn-floating {\n color: #fff;\n}\n\n.side-nav li > a.btn-flat {\n color: #343434;\n}\n\n.side-nav li > a.btn:hover, .side-nav li > a.btn-large:hover, .side-nav li > a.btn-large:hover {\n background-color: #2bbbad;\n}\n\n.side-nav li > a.btn-floating:hover {\n background-color: #26a69a;\n}\n\n.side-nav li > a > i,\n.side-nav li > a > [class^=\"mdi-\"], .side-nav li > a li > a > [class*=\"mdi-\"],\n.side-nav li > a > i.material-icons {\n float: left;\n height: 48px;\n line-height: 48px;\n margin: 0 32px 0 0;\n width: 24px;\n color: rgba(0, 0, 0, 0.54);\n}\n\n.side-nav .divider {\n margin: 8px 0 0 0;\n}\n\n.side-nav .subheader {\n cursor: initial;\n pointer-events: none;\n color: rgba(0, 0, 0, 0.54);\n font-size: 14px;\n font-weight: 500;\n line-height: 48px;\n}\n\n.side-nav .subheader:hover {\n background-color: transparent;\n}\n\n.side-nav .userView {\n position: relative;\n padding: 32px 32px 0;\n margin-bottom: 8px;\n}\n\n.side-nav .userView > a {\n height: auto;\n padding: 0;\n}\n\n.side-nav .userView > a:hover {\n background-color: transparent;\n}\n\n.side-nav .userView .background {\n overflow: hidden;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n}\n\n.side-nav .userView .circle, .side-nav .userView .name, .side-nav .userView .email {\n display: block;\n}\n\n.side-nav .userView .circle {\n height: 64px;\n width: 64px;\n}\n\n.side-nav .userView .name,\n.side-nav .userView .email {\n font-size: 14px;\n line-height: 24px;\n}\n\n.side-nav .userView .name {\n margin-top: 16px;\n font-weight: 500;\n}\n\n.side-nav .userView .email {\n padding-bottom: 16px;\n font-weight: 400;\n}\n\n.drag-target {\n height: 100%;\n width: 10px;\n position: fixed;\n top: 0;\n z-index: 998;\n}\n\n.side-nav.fixed {\n left: 0;\n -webkit-transform: translateX(0);\n transform: translateX(0);\n position: fixed;\n}\n\n.side-nav.fixed.right-aligned {\n right: 0;\n left: auto;\n}\n\n@media only screen and (max-width: 992px) {\n .side-nav.fixed {\n -webkit-transform: translateX(-105%);\n transform: translateX(-105%);\n }\n .side-nav.fixed.right-aligned {\n -webkit-transform: translateX(105%);\n transform: translateX(105%);\n }\n .side-nav a {\n padding: 0 16px;\n }\n .side-nav .userView {\n padding: 16px 16px 0;\n }\n}\n\n.side-nav .collapsible-body > ul:not(.collapsible) > li.active,\n.side-nav.fixed .collapsible-body > ul:not(.collapsible) > li.active {\n background-color: #ee6e73;\n}\n\n.side-nav .collapsible-body > ul:not(.collapsible) > li.active a,\n.side-nav.fixed .collapsible-body > ul:not(.collapsible) > li.active a {\n color: #fff;\n}\n\n.side-nav .collapsible-body {\n padding: 0;\n}\n\n#sidenav-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 120vh;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 997;\n will-change: opacity;\n}\n\n/*\n @license\n Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n Code distributed by Google as part of the polymer project is also\n subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n/**************************/\n/* STYLES FOR THE SPINNER */\n/**************************/\n/*\n * Constants:\n * STROKEWIDTH = 3px\n * ARCSIZE = 270 degrees (amount of circle the arc takes up)\n * ARCTIME = 1333ms (time it takes to expand and contract arc)\n * ARCSTARTROT = 216 degrees (how much the start location of the arc\n * should rotate each time, 216 gives us a\n * 5 pointed star shape (it's 360/5 * 3).\n * For a 7 pointed star, we might do\n * 360/7 * 3 = 154.286)\n * CONTAINERWIDTH = 28px\n * SHRINK_TIME = 400ms\n */\n.preloader-wrapper {\n display: inline-block;\n position: relative;\n width: 50px;\n height: 50px;\n}\n\n.preloader-wrapper.small {\n width: 36px;\n height: 36px;\n}\n\n.preloader-wrapper.big {\n width: 64px;\n height: 64px;\n}\n\n.preloader-wrapper.active {\n /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */\n -webkit-animation: container-rotate 1568ms linear infinite;\n animation: container-rotate 1568ms linear infinite;\n}\n\n@-webkit-keyframes container-rotate {\n to {\n -webkit-transform: rotate(360deg);\n }\n}\n\n@keyframes container-rotate {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n.spinner-layer {\n position: absolute;\n width: 100%;\n height: 100%;\n opacity: 0;\n border-color: #26a69a;\n}\n\n.spinner-blue,\n.spinner-blue-only {\n border-color: #4285f4;\n}\n\n.spinner-red,\n.spinner-red-only {\n border-color: #db4437;\n}\n\n.spinner-yellow,\n.spinner-yellow-only {\n border-color: #f4b400;\n}\n\n.spinner-green,\n.spinner-green-only {\n border-color: #0f9d58;\n}\n\n/**\n * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):\n *\n * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't\n * guarantee that the animation will start _exactly_ after that value. So we avoid using\n * animation-delay and instead set custom keyframes for each color (as redundant as it\n * seems).\n *\n * We write out each animation in full (instead of separating animation-name,\n * animation-duration, etc.) because under the polyfill, Safari does not recognize those\n * specific properties properly, treats them as -webkit-animation, and overrides the\n * other animation rules. See https://github.com/Polymer/platform/issues/53.\n */\n.active .spinner-layer.spinner-blue {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer.spinner-red {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer.spinner-yellow {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer.spinner-green {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer,\n.active .spinner-layer.spinner-blue-only,\n.active .spinner-layer.spinner-red-only,\n.active .spinner-layer.spinner-yellow-only,\n.active .spinner-layer.spinner-green-only {\n /* durations: 4 * ARCTIME */\n opacity: 1;\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n@-webkit-keyframes fill-unfill-rotate {\n 12.5% {\n -webkit-transform: rotate(135deg);\n }\n /* 0.5 * ARCSIZE */\n 25% {\n -webkit-transform: rotate(270deg);\n }\n /* 1 * ARCSIZE */\n 37.5% {\n -webkit-transform: rotate(405deg);\n }\n /* 1.5 * ARCSIZE */\n 50% {\n -webkit-transform: rotate(540deg);\n }\n /* 2 * ARCSIZE */\n 62.5% {\n -webkit-transform: rotate(675deg);\n }\n /* 2.5 * ARCSIZE */\n 75% {\n -webkit-transform: rotate(810deg);\n }\n /* 3 * ARCSIZE */\n 87.5% {\n -webkit-transform: rotate(945deg);\n }\n /* 3.5 * ARCSIZE */\n to {\n -webkit-transform: rotate(1080deg);\n }\n /* 4 * ARCSIZE */\n}\n\n@keyframes fill-unfill-rotate {\n 12.5% {\n -webkit-transform: rotate(135deg);\n transform: rotate(135deg);\n }\n /* 0.5 * ARCSIZE */\n 25% {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n }\n /* 1 * ARCSIZE */\n 37.5% {\n -webkit-transform: rotate(405deg);\n transform: rotate(405deg);\n }\n /* 1.5 * ARCSIZE */\n 50% {\n -webkit-transform: rotate(540deg);\n transform: rotate(540deg);\n }\n /* 2 * ARCSIZE */\n 62.5% {\n -webkit-transform: rotate(675deg);\n transform: rotate(675deg);\n }\n /* 2.5 * ARCSIZE */\n 75% {\n -webkit-transform: rotate(810deg);\n transform: rotate(810deg);\n }\n /* 3 * ARCSIZE */\n 87.5% {\n -webkit-transform: rotate(945deg);\n transform: rotate(945deg);\n }\n /* 3.5 * ARCSIZE */\n to {\n -webkit-transform: rotate(1080deg);\n transform: rotate(1080deg);\n }\n /* 4 * ARCSIZE */\n}\n\n@-webkit-keyframes blue-fade-in-out {\n from {\n opacity: 1;\n }\n 25% {\n opacity: 1;\n }\n 26% {\n opacity: 0;\n }\n 89% {\n opacity: 0;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes blue-fade-in-out {\n from {\n opacity: 1;\n }\n 25% {\n opacity: 1;\n }\n 26% {\n opacity: 0;\n }\n 89% {\n opacity: 0;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@-webkit-keyframes red-fade-in-out {\n from {\n opacity: 0;\n }\n 15% {\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n opacity: 1;\n }\n 51% {\n opacity: 0;\n }\n}\n\n@keyframes red-fade-in-out {\n from {\n opacity: 0;\n }\n 15% {\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n opacity: 1;\n }\n 51% {\n opacity: 0;\n }\n}\n\n@-webkit-keyframes yellow-fade-in-out {\n from {\n opacity: 0;\n }\n 40% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 75% {\n opacity: 1;\n }\n 76% {\n opacity: 0;\n }\n}\n\n@keyframes yellow-fade-in-out {\n from {\n opacity: 0;\n }\n 40% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 75% {\n opacity: 1;\n }\n 76% {\n opacity: 0;\n }\n}\n\n@-webkit-keyframes green-fade-in-out {\n from {\n opacity: 0;\n }\n 65% {\n opacity: 0;\n }\n 75% {\n opacity: 1;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n\n@keyframes green-fade-in-out {\n from {\n opacity: 0;\n }\n 65% {\n opacity: 0;\n }\n 75% {\n opacity: 1;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n\n/**\n * Patch the gap that appear between the two adjacent div.circle-clipper while the\n * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).\n */\n.gap-patch {\n position: absolute;\n top: 0;\n left: 45%;\n width: 10%;\n height: 100%;\n overflow: hidden;\n border-color: inherit;\n}\n\n.gap-patch .circle {\n width: 1000%;\n left: -450%;\n}\n\n.circle-clipper {\n display: inline-block;\n position: relative;\n width: 50%;\n height: 100%;\n overflow: hidden;\n border-color: inherit;\n}\n\n.circle-clipper .circle {\n width: 200%;\n height: 100%;\n border-width: 3px;\n /* STROKEWIDTH */\n border-style: solid;\n border-color: inherit;\n border-bottom-color: transparent !important;\n border-radius: 50%;\n -webkit-animation: none;\n animation: none;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n}\n\n.circle-clipper.left .circle {\n left: 0;\n border-right-color: transparent !important;\n -webkit-transform: rotate(129deg);\n transform: rotate(129deg);\n}\n\n.circle-clipper.right .circle {\n left: -100%;\n border-left-color: transparent !important;\n -webkit-transform: rotate(-129deg);\n transform: rotate(-129deg);\n}\n\n.active .circle-clipper.left .circle {\n /* duration: ARCTIME */\n -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .circle-clipper.right .circle {\n /* duration: ARCTIME */\n -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n@-webkit-keyframes left-spin {\n from {\n -webkit-transform: rotate(130deg);\n }\n 50% {\n -webkit-transform: rotate(-5deg);\n }\n to {\n -webkit-transform: rotate(130deg);\n }\n}\n\n@keyframes left-spin {\n from {\n -webkit-transform: rotate(130deg);\n transform: rotate(130deg);\n }\n 50% {\n -webkit-transform: rotate(-5deg);\n transform: rotate(-5deg);\n }\n to {\n -webkit-transform: rotate(130deg);\n transform: rotate(130deg);\n }\n}\n\n@-webkit-keyframes right-spin {\n from {\n -webkit-transform: rotate(-130deg);\n }\n 50% {\n -webkit-transform: rotate(5deg);\n }\n to {\n -webkit-transform: rotate(-130deg);\n }\n}\n\n@keyframes right-spin {\n from {\n -webkit-transform: rotate(-130deg);\n transform: rotate(-130deg);\n }\n 50% {\n -webkit-transform: rotate(5deg);\n transform: rotate(5deg);\n }\n to {\n -webkit-transform: rotate(-130deg);\n transform: rotate(-130deg);\n }\n}\n\n#spinnerContainer.cooldown {\n /* duration: SHRINK_TIME */\n -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);\n animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@-webkit-keyframes fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@keyframes fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n.slider {\n position: relative;\n height: 400px;\n width: 100%;\n}\n\n.slider.fullscreen {\n height: 100%;\n width: 100%;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.slider.fullscreen ul.slides {\n height: 100%;\n}\n\n.slider.fullscreen ul.indicators {\n z-index: 2;\n bottom: 30px;\n}\n\n.slider .slides {\n background-color: #9e9e9e;\n margin: 0;\n height: 400px;\n}\n\n.slider .slides li {\n opacity: 0;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n width: 100%;\n height: inherit;\n overflow: hidden;\n}\n\n.slider .slides li img {\n height: 100%;\n width: 100%;\n background-size: cover;\n background-position: center;\n}\n\n.slider .slides li .caption {\n color: #fff;\n position: absolute;\n top: 15%;\n left: 15%;\n width: 70%;\n opacity: 0;\n}\n\n.slider .slides li .caption p {\n color: #e0e0e0;\n}\n\n.slider .slides li.active {\n z-index: 2;\n}\n\n.slider .indicators {\n position: absolute;\n text-align: center;\n left: 0;\n right: 0;\n bottom: 0;\n margin: 0;\n}\n\n.slider .indicators .indicator-item {\n display: inline-block;\n position: relative;\n cursor: pointer;\n height: 16px;\n width: 16px;\n margin: 0 12px;\n background-color: #e0e0e0;\n transition: background-color .3s;\n border-radius: 50%;\n}\n\n.slider .indicators .indicator-item.active {\n background-color: #4CAF50;\n}\n\n.carousel {\n overflow: hidden;\n position: relative;\n width: 100%;\n height: 400px;\n -webkit-perspective: 500px;\n perspective: 500px;\n -webkit-transform-style: preserve-3d;\n transform-style: preserve-3d;\n -webkit-transform-origin: 0% 50%;\n transform-origin: 0% 50%;\n}\n\n.carousel.carousel-slider {\n top: 0;\n left: 0;\n height: 0;\n}\n\n.carousel.carousel-slider .carousel-fixed-item {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 20px;\n z-index: 1;\n}\n\n.carousel.carousel-slider .carousel-fixed-item.with-indicators {\n bottom: 68px;\n}\n\n.carousel.carousel-slider .carousel-item {\n width: 100%;\n height: 100%;\n min-height: 400px;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.carousel.carousel-slider .carousel-item h2 {\n font-size: 24px;\n font-weight: 500;\n line-height: 32px;\n}\n\n.carousel.carousel-slider .carousel-item p {\n font-size: 15px;\n}\n\n.carousel .carousel-item {\n display: none;\n width: 200px;\n height: 200px;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.carousel .carousel-item > img {\n width: 100%;\n}\n\n.carousel .indicators {\n position: absolute;\n text-align: center;\n left: 0;\n right: 0;\n bottom: 0;\n margin: 0;\n}\n\n.carousel .indicators .indicator-item {\n display: inline-block;\n position: relative;\n cursor: pointer;\n height: 8px;\n width: 8px;\n margin: 24px 4px;\n background-color: rgba(255, 255, 255, 0.5);\n transition: background-color .3s;\n border-radius: 50%;\n}\n\n.carousel .indicators .indicator-item.active {\n background-color: #fff;\n}\n\n.carousel.scrolling .carousel-item .materialboxed,\n.carousel .carousel-item:not(.active) .materialboxed {\n pointer-events: none;\n}\n\n.tap-target-wrapper {\n width: 800px;\n height: 800px;\n position: fixed;\n z-index: 1000;\n visibility: hidden;\n transition: visibility 0s .3s;\n}\n\n.tap-target-wrapper.open {\n visibility: visible;\n transition: visibility 0s;\n}\n\n.tap-target-wrapper.open .tap-target {\n -webkit-transform: scale(1);\n transform: scale(1);\n opacity: .95;\n transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);\n transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);\n transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);\n}\n\n.tap-target-wrapper.open .tap-target-wave::before {\n -webkit-transform: scale(1);\n transform: scale(1);\n}\n\n.tap-target-wrapper.open .tap-target-wave::after {\n visibility: visible;\n -webkit-animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;\n animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;\n transition: opacity .3s, visibility 0s 1s, -webkit-transform .3s;\n transition: opacity .3s, transform .3s, visibility 0s 1s;\n transition: opacity .3s, transform .3s, visibility 0s 1s, -webkit-transform .3s;\n}\n\n.tap-target {\n position: absolute;\n font-size: 1rem;\n border-radius: 50%;\n background-color: #ee6e73;\n box-shadow: 0 20px 20px 0 rgba(0, 0, 0, 0.14), 0 10px 50px 0 rgba(0, 0, 0, 0.12), 0 30px 10px -20px rgba(0, 0, 0, 0.2);\n width: 100%;\n height: 100%;\n opacity: 0;\n -webkit-transform: scale(0);\n transform: scale(0);\n transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);\n transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);\n transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);\n}\n\n.tap-target-content {\n position: relative;\n display: table-cell;\n}\n\n.tap-target-wave {\n position: absolute;\n border-radius: 50%;\n z-index: 10001;\n}\n\n.tap-target-wave::before, .tap-target-wave::after {\n content: '';\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: #ffffff;\n}\n\n.tap-target-wave::before {\n -webkit-transform: scale(0);\n transform: scale(0);\n transition: -webkit-transform .3s;\n transition: transform .3s;\n transition: transform .3s, -webkit-transform .3s;\n}\n\n.tap-target-wave::after {\n visibility: hidden;\n transition: opacity .3s, visibility 0s, -webkit-transform .3s;\n transition: opacity .3s, transform .3s, visibility 0s;\n transition: opacity .3s, transform .3s, visibility 0s, -webkit-transform .3s;\n z-index: -1;\n}\n\n.tap-target-origin {\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n z-index: 10002;\n position: absolute !important;\n}\n\n.tap-target-origin:not(.btn):not(.btn-large), .tap-target-origin:not(.btn):not(.btn-large):hover {\n background: none;\n}\n\n@media only screen and (max-width: 600px) {\n .tap-target, .tap-target-wrapper {\n width: 600px;\n height: 600px;\n }\n}\n\n.pulse {\n overflow: initial;\n position: relative;\n}\n\n.pulse::before {\n content: '';\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n background-color: inherit;\n border-radius: inherit;\n transition: opacity .3s, -webkit-transform .3s;\n transition: opacity .3s, transform .3s;\n transition: opacity .3s, transform .3s, -webkit-transform .3s;\n -webkit-animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;\n animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;\n z-index: -1;\n}\n\n@-webkit-keyframes pulse-animation {\n 0% {\n opacity: 1;\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 0;\n -webkit-transform: scale(1.5);\n transform: scale(1.5);\n }\n 100% {\n opacity: 0;\n -webkit-transform: scale(1.5);\n transform: scale(1.5);\n }\n}\n\n@keyframes pulse-animation {\n 0% {\n opacity: 1;\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 0;\n -webkit-transform: scale(1.5);\n transform: scale(1.5);\n }\n 100% {\n opacity: 0;\n -webkit-transform: scale(1.5);\n transform: scale(1.5);\n }\n}\n\n/* ==========================================================================\n $BASE-PICKER\n ========================================================================== */\n/**\n * Note: the root picker element should *NOT* be styled more than what's here.\n */\n.picker {\n font-size: 16px;\n text-align: left;\n line-height: 1.2;\n color: #000000;\n position: absolute;\n z-index: 10000;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n/**\n * The picker input element.\n */\n.picker__input {\n cursor: default;\n}\n\n/**\n * When the picker is opened, the input element is \"activated\".\n */\n.picker__input.picker__input--active {\n border-color: #0089ec;\n}\n\n/**\n * The holder is the only \"scrollable\" top-level container element.\n */\n.picker__holder {\n width: 100%;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n/*!\n * Default mobile-first, responsive styling for pickadate.js\n * Demo: http://amsul.github.io/pickadate.js\n */\n/**\n * Note: the root picker element should *NOT* be styled more than what's here.\n */\n/**\n * Make the holder and frame fullscreen.\n */\n.picker__holder,\n.picker__frame {\n bottom: 0;\n left: 0;\n right: 0;\n top: 100%;\n}\n\n/**\n * The holder should overlay the entire screen.\n */\n.picker__holder {\n position: fixed;\n transition: background 0.15s ease-out, top 0s 0.15s;\n -webkit-backface-visibility: hidden;\n}\n\n/**\n * The frame that bounds the box contents of the picker.\n */\n.picker__frame {\n position: absolute;\n margin: 0 auto;\n min-width: 256px;\n width: 300px;\n max-height: 350px;\n -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n filter: alpha(opacity=0);\n -moz-opacity: 0;\n opacity: 0;\n transition: all 0.15s ease-out;\n}\n\n@media (min-height: 28.875em) {\n .picker__frame {\n overflow: visible;\n top: auto;\n bottom: -100%;\n max-height: 80%;\n }\n}\n\n@media (min-height: 40.125em) {\n .picker__frame {\n margin-bottom: 7.5%;\n }\n}\n\n/**\n * The wrapper sets the stage to vertically align the box contents.\n */\n.picker__wrap {\n display: table;\n width: 100%;\n height: 100%;\n}\n\n@media (min-height: 28.875em) {\n .picker__wrap {\n display: block;\n }\n}\n\n/**\n * The box contains all the picker contents.\n */\n.picker__box {\n background: #ffffff;\n display: table-cell;\n vertical-align: middle;\n}\n\n@media (min-height: 28.875em) {\n .picker__box {\n display: block;\n border: 1px solid #777777;\n border-top-color: #898989;\n border-bottom-width: 0;\n border-radius: 5px 5px 0 0;\n box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24);\n }\n}\n\n/**\n * When the picker opens...\n */\n.picker--opened .picker__holder {\n top: 0;\n background: transparent;\n -ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)\";\n zoom: 1;\n background: rgba(0, 0, 0, 0.32);\n transition: background 0.15s ease-out;\n}\n\n.picker--opened .picker__frame {\n top: 0;\n -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n filter: alpha(opacity=100);\n -moz-opacity: 1;\n opacity: 1;\n}\n\n@media (min-height: 35.875em) {\n .picker--opened .picker__frame {\n top: 10%;\n bottom: auto;\n }\n}\n\n/**\n * For `large` screens, transform into an inline picker.\n */\n/* ==========================================================================\n CUSTOM MATERIALIZE STYLES\n ========================================================================== */\n.picker__input.picker__input--active {\n border-color: #E3F2FD;\n}\n\n.picker__frame {\n margin: 0 auto;\n max-width: 325px;\n}\n\n@media (min-height: 38.875em) {\n .picker--opened .picker__frame {\n top: 10%;\n bottom: auto;\n }\n}\n\n/* ==========================================================================\n $BASE-DATE-PICKER\n ========================================================================== */\n/**\n * The picker box.\n */\n.picker__box {\n padding: 0 1em;\n}\n\n/**\n * The header containing the month and year stuff.\n */\n.picker__header {\n text-align: center;\n position: relative;\n margin-top: .75em;\n}\n\n/**\n * The month and year labels.\n */\n.picker__month,\n.picker__year {\n display: inline-block;\n margin-left: .25em;\n margin-right: .25em;\n}\n\n/**\n * The month and year selectors.\n */\n.picker__select--month,\n.picker__select--year {\n height: 2em;\n padding: 0;\n margin-left: .25em;\n margin-right: .25em;\n}\n\n.picker__select--month.browser-default {\n display: inline;\n background-color: #FFFFFF;\n width: 40%;\n}\n\n.picker__select--year.browser-default {\n display: inline;\n background-color: #FFFFFF;\n width: 26%;\n}\n\n.picker__select--month:focus,\n.picker__select--year:focus {\n border-color: rgba(0, 0, 0, 0.05);\n}\n\n/**\n * The month navigation buttons.\n */\n.picker__nav--prev,\n.picker__nav--next {\n position: absolute;\n padding: .5em 1.25em;\n width: 1em;\n height: 1em;\n box-sizing: content-box;\n top: -0.25em;\n}\n\n.picker__nav--prev {\n left: -1em;\n padding-right: 1.25em;\n}\n\n.picker__nav--next {\n right: -1em;\n padding-left: 1.25em;\n}\n\n.picker__nav--disabled,\n.picker__nav--disabled:hover,\n.picker__nav--disabled:before,\n.picker__nav--disabled:before:hover {\n cursor: default;\n background: none;\n border-right-color: #f5f5f5;\n border-left-color: #f5f5f5;\n}\n\n/**\n * The calendar table of dates\n */\n.picker__table {\n text-align: center;\n border-collapse: collapse;\n border-spacing: 0;\n table-layout: fixed;\n font-size: 1rem;\n width: 100%;\n margin-top: .75em;\n margin-bottom: .5em;\n}\n\n.picker__table th, .picker__table td {\n text-align: center;\n}\n\n.picker__table td {\n margin: 0;\n padding: 0;\n}\n\n/**\n * The weekday labels\n */\n.picker__weekday {\n width: 14.285714286%;\n font-size: .75em;\n padding-bottom: .25em;\n color: #999999;\n font-weight: 500;\n /* Increase the spacing a tad */\n}\n\n@media (min-height: 33.875em) {\n .picker__weekday {\n padding-bottom: .5em;\n }\n}\n\n/**\n * The days on the calendar\n */\n.picker__day--today {\n position: relative;\n color: #595959;\n letter-spacing: -.3;\n padding: .75rem 0;\n font-weight: 400;\n border: 1px solid transparent;\n}\n\n.picker__day--disabled:before {\n border-top-color: #aaaaaa;\n}\n\n.picker__day--infocus:hover {\n cursor: pointer;\n color: #000;\n font-weight: 500;\n}\n\n.picker__day--outfocus {\n display: none;\n padding: .75rem 0;\n color: #fff;\n}\n\n.picker__day--outfocus:hover {\n cursor: pointer;\n color: #dddddd;\n font-weight: 500;\n}\n\n.picker__day--highlighted:hover,\n.picker--focused .picker__day--highlighted {\n cursor: pointer;\n}\n\n.picker__day--selected,\n.picker__day--selected:hover,\n.picker--focused .picker__day--selected {\n border-radius: 50%;\n -webkit-transform: scale(0.75);\n transform: scale(0.75);\n background: #0089ec;\n color: #ffffff;\n}\n\n.picker__day--disabled,\n.picker__day--disabled:hover,\n.picker--focused .picker__day--disabled {\n background: #f5f5f5;\n border-color: #f5f5f5;\n color: #dddddd;\n cursor: default;\n}\n\n.picker__day--highlighted.picker__day--disabled,\n.picker__day--highlighted.picker__day--disabled:hover {\n background: #bbbbbb;\n}\n\n/**\n * The footer containing the \"today\", \"clear\", and \"close\" buttons.\n */\n.picker__footer {\n text-align: center;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-align-items: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-justify-content: space-between;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n\n.picker__button--today,\n.picker__button--clear,\n.picker__button--close {\n border: 1px solid #ffffff;\n background: #ffffff;\n font-size: .8em;\n padding: .66em 0;\n font-weight: bold;\n width: 33%;\n display: inline-block;\n vertical-align: bottom;\n}\n\n.picker__button--today:hover,\n.picker__button--clear:hover,\n.picker__button--close:hover {\n cursor: pointer;\n color: #000000;\n background: #b1dcfb;\n border-bottom-color: #b1dcfb;\n}\n\n.picker__button--today:focus,\n.picker__button--clear:focus,\n.picker__button--close:focus {\n background: #b1dcfb;\n border-color: rgba(0, 0, 0, 0.05);\n outline: none;\n}\n\n.picker__button--today:before,\n.picker__button--clear:before,\n.picker__button--close:before {\n position: relative;\n display: inline-block;\n height: 0;\n}\n\n.picker__button--today:before,\n.picker__button--clear:before {\n content: \" \";\n margin-right: .45em;\n}\n\n.picker__button--today:before {\n top: -0.05em;\n width: 0;\n border-top: 0.66em solid #0059bc;\n border-left: .66em solid transparent;\n}\n\n.picker__button--clear:before {\n top: -0.25em;\n width: .66em;\n border-top: 3px solid #ee2200;\n}\n\n.picker__button--close:before {\n content: \"\\D7\";\n top: -0.1em;\n vertical-align: top;\n font-size: 1.1em;\n margin-right: .35em;\n color: #777777;\n}\n\n.picker__button--today[disabled],\n.picker__button--today[disabled]:hover {\n background: #f5f5f5;\n border-color: #f5f5f5;\n color: #dddddd;\n cursor: default;\n}\n\n.picker__button--today[disabled]:before {\n border-top-color: #aaaaaa;\n}\n\n/* ==========================================================================\n CUSTOM MATERIALIZE STYLES\n ========================================================================== */\n.picker__box {\n border-radius: 2px;\n overflow: hidden;\n}\n\n.picker__date-display {\n text-align: center;\n background-color: #26a69a;\n color: #fff;\n padding-bottom: 15px;\n font-weight: 300;\n}\n\n.picker__nav--prev:hover,\n.picker__nav--next:hover {\n cursor: pointer;\n color: #000000;\n background: #a1ded8;\n}\n\n.picker__weekday-display {\n background-color: #1f897f;\n padding: 10px;\n font-weight: 200;\n letter-spacing: .5;\n font-size: 1rem;\n margin-bottom: 15px;\n}\n\n.picker__month-display {\n text-transform: uppercase;\n font-size: 2rem;\n}\n\n.picker__day-display {\n font-size: 4.5rem;\n font-weight: 400;\n}\n\n.picker__year-display {\n font-size: 1.8rem;\n color: rgba(255, 255, 255, 0.4);\n}\n\n.picker__box {\n padding: 0;\n}\n\n.picker__calendar-container {\n padding: 0 1rem;\n}\n\n.picker__calendar-container thead {\n border: none;\n}\n\n.picker__table {\n margin-top: 0;\n margin-bottom: .5em;\n}\n\n.picker__day--infocus {\n color: #595959;\n letter-spacing: -.3;\n padding: .75rem 0;\n font-weight: 400;\n border: 1px solid transparent;\n}\n\n.picker__day.picker__day--today {\n color: #26a69a;\n}\n\n.picker__day.picker__day--today.picker__day--selected {\n color: #fff;\n}\n\n.picker__weekday {\n font-size: .9rem;\n}\n\n.picker__day--selected,\n.picker__day--selected:hover,\n.picker--focused .picker__day--selected {\n border-radius: 50%;\n -webkit-transform: scale(0.9);\n transform: scale(0.9);\n background-color: #26a69a;\n color: #ffffff;\n}\n\n.picker__day--selected.picker__day--outfocus,\n.picker__day--selected:hover.picker__day--outfocus,\n.picker--focused .picker__day--selected.picker__day--outfocus {\n background-color: #a1ded8;\n}\n\n.picker__footer {\n text-align: right;\n padding: 5px 10px;\n}\n\n.picker__close, .picker__today {\n font-size: 1.1rem;\n padding: 0 1rem;\n color: #26a69a;\n}\n\n.picker__nav--prev:before,\n.picker__nav--next:before {\n content: \" \";\n border-top: .5em solid transparent;\n border-bottom: .5em solid transparent;\n border-right: 0.75em solid #676767;\n width: 0;\n height: 0;\n display: block;\n margin: 0 auto;\n}\n\n.picker__nav--next:before {\n border-right: 0;\n border-left: 0.75em solid #676767;\n}\n\nbutton.picker__today:focus, button.picker__clear:focus, button.picker__close:focus {\n background-color: #a1ded8;\n}\n\n/* ==========================================================================\n $BASE-TIME-PICKER\n ========================================================================== */\n/**\n * The list of times.\n */\n.picker__list {\n list-style: none;\n padding: 0.75em 0 4.2em;\n margin: 0;\n}\n\n/**\n * The times on the clock.\n */\n.picker__list-item {\n border-bottom: 1px solid #dddddd;\n border-top: 1px solid #dddddd;\n margin-bottom: -1px;\n position: relative;\n background: #ffffff;\n padding: .75em 1.25em;\n}\n\n@media (min-height: 46.75em) {\n .picker__list-item {\n padding: .5em 1em;\n }\n}\n\n/* Hovered time */\n.picker__list-item:hover {\n cursor: pointer;\n color: #000000;\n background: #b1dcfb;\n border-color: #0089ec;\n z-index: 10;\n}\n\n/* Highlighted and hovered/focused time */\n.picker__list-item--highlighted {\n border-color: #0089ec;\n z-index: 10;\n}\n\n.picker__list-item--highlighted:hover,\n.picker--focused .picker__list-item--highlighted {\n cursor: pointer;\n color: #000000;\n background: #b1dcfb;\n}\n\n/* Selected and hovered/focused time */\n.picker__list-item--selected,\n.picker__list-item--selected:hover,\n.picker--focused .picker__list-item--selected {\n background: #0089ec;\n color: #ffffff;\n z-index: 10;\n}\n\n/* Disabled time */\n.picker__list-item--disabled,\n.picker__list-item--disabled:hover,\n.picker--focused .picker__list-item--disabled {\n background: #f5f5f5;\n border-color: #f5f5f5;\n color: #dddddd;\n cursor: default;\n border-color: #dddddd;\n z-index: auto;\n}\n\n/**\n * The clear button\n */\n.picker--time .picker__button--clear {\n display: block;\n width: 80%;\n margin: 1em auto 0;\n padding: 1em 1.25em;\n background: none;\n border: 0;\n font-weight: 500;\n font-size: .67em;\n text-align: center;\n text-transform: uppercase;\n color: #666;\n}\n\n.picker--time .picker__button--clear:hover,\n.picker--time .picker__button--clear:focus {\n color: #000000;\n background: #b1dcfb;\n background: #ee2200;\n border-color: #ee2200;\n cursor: pointer;\n color: #ffffff;\n outline: none;\n}\n\n.picker--time .picker__button--clear:before {\n top: -0.25em;\n color: #666;\n font-size: 1.25em;\n font-weight: bold;\n}\n\n.picker--time .picker__button--clear:hover:before,\n.picker--time .picker__button--clear:focus:before {\n color: #ffffff;\n}\n\n/* ==========================================================================\n $DEFAULT-TIME-PICKER\n ========================================================================== */\n/**\n * The frame the bounds the time picker.\n */\n.picker--time .picker__frame {\n min-width: 256px;\n max-width: 320px;\n}\n\n/**\n * The picker box.\n */\n.picker--time .picker__box {\n font-size: 1em;\n background: #f2f2f2;\n padding: 0;\n}\n\n@media (min-height: 40.125em) {\n .picker--time .picker__box {\n margin-bottom: 5em;\n }\n}\n","/* Base Reset\n-------------------------------------------------------------------- */\n\n.annotator-notice,\n.annotator-filter *,\n.annotator-widget * {\n\tfont-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n\tfont-weight: normal;\n\ttext-align: left;\n\tmargin: 0;\n\tpadding: 0;\n\tbackground: none;\n\t-webkit-transition: none;\n\t-moz-transition: none;\n\t-o-transition: none;\n\ttransition: none;\n\t-moz-box-shadow: none;\n\t-webkit-box-shadow: none;\n\t-o-box-shadow: none;\n\tbox-shadow: none;\n\tcolor: rgb(144, 144, 144);\n}\n\n/* Images\n-------------------------------------------------------------------- */\n\n.annotator-adder {\n\tbackground-image: url(../img/annotator-icon-sprite.png?embed);\n\tbackground-repeat: no-repeat;\n}\n\n.annotator-resize,\n.annotator-widget:after,\n.annotator-editor a:after,\n.annotator-viewer .annotator-controls button,\n.annotator-viewer .annotator-controls a,\n.annotator-filter .annotator-filter-navigation button:after,\n.annotator-filter .annotator-filter-property .annotator-filter-clear {\n\tbackground-image: url(../img/annotator-glyph-sprite.png?embed);\n\tbackground-repeat: no-repeat;\n}\n\n/* Annotator Highlight\n-------------------------------------------------------------------- */\n\n.annotator-hl {\n\tbackground: #FFFF0A;\n\tbackground: rgba(255, 255, 10, 0.3);\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4DFFFF0A, endColorstr=#4DFFFF0A)\"; /* 0.3 == 4D in MS filters */\n}\n\n.annotator-hl-temporary {\n\tbackground: #007CFF;\n\tbackground: rgba(0, 124, 255, 0.3);\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4D007CFF, endColorstr=#4D007CFF)\"; /* 0.3 == 4D in MS filters */\n}\n\n/* Annotator Wrapper\n-------------------------------------------------------------------- */\n\n.annotator-wrapper {\n\tposition: relative;\n}\n\n/* NB: If you change the list of classes for which z-index is set,\n you should update setupDynamicStyle() in annotator.ui.main */\n.annotator-adder,\n.annotator-outer,\n.annotator-notice {\n\tz-index: 1020;\n}\n\n.annotator-filter {\n\tz-index: 1010;\n}\n\n.annotator-adder,\n.annotator-outer,\n.annotator-widget,\n.annotator-notice {\n\tposition: absolute;\n\tfont-size: 10px;\n\tline-height: 1;\n}\n\n.annotator-hide {\n\tdisplay: none;\n\tvisibility: hidden;\n}\n\n/* Annotator Adder\n-------------------------------------------------------------------- */\n\n.annotator-adder {\n\tmargin-top: -48px;\n\tmargin-left: -24px;\n\twidth: 48px;\n\theight: 48px;\n\tbackground-position: left top;\n}\n\n.annotator-adder:hover {\n\tbackground-position: center top;\n}\n\n.annotator-adder:active {\n\tbackground-position: center right;\n}\n\n.annotator-adder button {\n\tdisplay: block;\n\twidth: 36px;\n\theight: 41px;\n\tmargin: 0 auto;\n\tborder: none;\n\tbackground: none;\n\ttext-indent: -999em;\n\tcursor: pointer;\n}\n\n/* Annotator Widget\n \n This applies to both the Viewer and the Editor\n-------------------------------------------------------------------- */\n\n.annotator-outer {\n\twidth: 0;\n\theight: 0;\n}\n\n.annotator-widget {\n\tmargin: 0;\n\tpadding: 0;\n\tbottom: 15px;\n\tleft: -18px;\n\tmin-width: 265px;\n\tbackground-color: #FBFBFB;\n\tbackground-color: rgba(251, 251, 251, 0.98);\n\tborder: 1px solid #7A7A7A;\n\tborder: 1px solid rgba(122, 122, 122, 0.6);\n\t-webkit-border-radius: 5px;\n\t-moz-border-radius: 5px;\n\tborder-radius: 5px;\n\t-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);\n\t-moz-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);\n\t-o-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);\n\tbox-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);\n}\n\n.annotator-invert-x .annotator-widget {\n\tleft: auto;\n\tright: -18px;\n}\n\n.annotator-invert-y .annotator-widget {\n\tbottom: auto;\n\ttop: 8px;\n}\n\n.annotator-widget strong {\n\tfont-weight: bold;\n}\n\n.annotator-widget .annotator-listing,\n.annotator-widget .annotator-item {\n\tpadding: 0;\n\tmargin: 0;\n\tlist-style: none;\n}\n\n.annotator-widget:after {\n\tcontent: \"\";\n\tdisplay: block;\n\twidth: 18px;\n\theight: 10px;\n\tbackground-position: 0 0;\n\tposition: absolute;\n\tbottom: -10px;\n\tleft: 8px;\n}\n\n.annotator-invert-x .annotator-widget:after {\n\tleft: auto;\n\tright: 8px;\n}\n\n.annotator-invert-y .annotator-widget:after {\n\tbackground-position: 0 -15px;\n\tbottom: auto;\n\ttop: -9px;\n}\n\n.annotator-widget .annotator-item,\n.annotator-editor .annotator-item input,\n.annotator-editor .annotator-item textarea {\n\tposition: relative;\n\tfont-size: 12px;\n}\n\n.annotator-viewer .annotator-item {\n\tborder-top: 2px solid #7A7A7A;\n\tborder-top: 2px solid rgba(122, 122, 122, 0.2);\n}\n\n.annotator-widget .annotator-item:first-child {\n\tborder-top: none;\n}\n\n.annotator-editor .annotator-item,\n.annotator-viewer div {\n\tborder-top: 1px solid #858585;\n\tborder-top: 1px solid rgba(133, 133, 133, 0.11);\n}\n\n/* Annotator Viewer\n-------------------------------------------------------------------- */\n\n.annotator-viewer div {\n\tpadding: 6px 6px;\n}\n\n.annotator-viewer .annotator-item ol,\n.annotator-viewer .annotator-item ul {\n\tpadding: 4px 16px;\n}\n\n.annotator-viewer .annotator-item li {\n}\n\n.annotator-viewer div:first-of-type,\n.annotator-editor .annotator-item:first-child textarea {\n\tpadding-top: 12px;\n\tpadding-bottom: 12px;\n\tcolor: rgb(60, 60, 60);\n\tfont-size: 13px;\n\tfont-style: italic;\n\tline-height: 1.3;\n\tborder-top: none;\n}\n\n.annotator-viewer .annotator-controls {\n\tposition: relative;\n\ttop: 5px;\n\tright: 5px;\n\tpadding-left: 5px;\n\topacity: 0;\n\t-webkit-transition: opacity 0.2s ease-in;\n\t-moz-transition: opacity 0.2s ease-in;\n\t-o-transition: opacity 0.2s ease-in;\n\ttransition: opacity 0.2s ease-in;\n\tfloat: right;\n}\n\n.annotator-viewer li:hover .annotator-controls,\n.annotator-viewer li .annotator-controls.annotator-visible {\n\topacity: 1;\n}\n\n.annotator-viewer .annotator-controls button,\n.annotator-viewer .annotator-controls a {\n\tcursor: pointer;\n\tdisplay: inline-block;\n\twidth: 13px;\n\theight: 13px;\n\tmargin-left: 2px;\n\tborder: none;\n\topacity: 0.2;\n\ttext-indent: -900em;\n\tbackground-color: transparent;\n\toutline: none;\n}\n\n.annotator-viewer .annotator-controls button:hover,\n.annotator-viewer .annotator-controls button:focus,\n.annotator-viewer .annotator-controls a:hover,\n.annotator-viewer .annotator-controls a:focus {\n\topacity: 0.9;\n}\n\n.annotator-viewer .annotator-controls button:active,\n.annotator-viewer .annotator-controls a:active {\n\topacity: 1;\n}\n\n.annotator-viewer .annotator-controls button[disabled] {\n\tdisplay: none;\n}\n\n.annotator-viewer .annotator-controls .annotator-edit {\n\tbackground-position: 0 -60px;\n}\n\n.annotator-viewer .annotator-controls .annotator-delete {\n\tbackground-position: 0 -75px;\n}\n\n.annotator-viewer .annotator-controls .annotator-link {\n\tbackground-position: 0 -270px;\n}\n\n/* Annotator Editor\n-------------------------------------------------------------------- */\n\n.annotator-editor .annotator-item {\n\tposition: relative;\n}\n\n.annotator-editor .annotator-item label {\n\ttop: 0;\n\tdisplay: inline;\n\tcursor: pointer;\n\tfont-size: 12px;\n}\n\n.annotator-editor .annotator-item input,\n.annotator-editor .annotator-item textarea {\n\tdisplay: block;\n\tmin-width: 100%;\n\tpadding: 10px 8px;\n\tborder: none;\n\tmargin: 0;\n\tcolor: rgb(60, 60, 60);\n\tbackground: none;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-o-box-sizing: border-box;\n\tbox-sizing: border-box;\n\tresize: none;\n}\n\n.annotator-editor .annotator-item textarea::-webkit-scrollbar {\n\theight: 8px;\n\twidth: 8px;\n}\n\n.annotator-editor .annotator-item textarea::-webkit-scrollbar-track-piece {\n\tmargin: 13px 0 3px;\n\tbackground-color: #e5e5e5;\n\t-webkit-border-radius: 4px;\n}\n\n.annotator-editor .annotator-item textarea::-webkit-scrollbar-thumb:vertical {\n\theight: 25px;\n\tbackground-color: #ccc;\n\t-webkit-border-radius: 4px;\n\t-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\n}\n\n.annotator-editor .annotator-item textarea::-webkit-scrollbar-thumb:horizontal {\n\twidth: 25px;\n\tbackground-color: #ccc;\n\t-webkit-border-radius: 4px;\n}\n\n.annotator-editor .annotator-item:first-child textarea {\n\tmin-height: 5.5em;\n\t-webkit-border-radius: 5px 5px 0 0;\n\t-moz-border-radius: 5px 5px 0 0;\n\t-o-border-radius: 5px 5px 0 0;\n\tborder-radius: 5px 5px 0 0;\n}\n\n.annotator-editor .annotator-item input:focus,\n.annotator-editor .annotator-item textarea:focus{\n\tbackground-color: rgb(243, 243, 243);\n\toutline: none;\n}\n\n.annotator-editor .annotator-item input[type=radio],\n.annotator-editor .annotator-item input[type=checkbox] {\n\twidth: auto;\n\tmin-width: 0;\n\tpadding: 0;\n\tdisplay: inline;\n\tmargin: 0 4px 0 0;\n\tcursor: pointer;\n}\n\n.annotator-editor .annotator-checkbox {\n\tpadding: 8px 6px;\n}\n\n.annotator-filter,\n.annotator-filter .annotator-filter-navigation button,\n.annotator-editor .annotator-controls {\n\ttext-align: right;\n\tpadding: 3px;\n\tborder-top: 1px solid rgb(212,212,212);\n\tbackground-color: rgb(212, 212, 212);\n\tbackground-image: -webkit-gradient(\n\t\tlinear, left top, left bottom,\n\t\tfrom(rgb(245, 245, 245)),\n\t\tcolor-stop(0.6, rgb(220, 220, 220)),\n\t\tto(rgb(210, 210, 210))\n\t);\n\tbackground-image: -moz-linear-gradient(\n\t to bottom,\n\t rgb(245, 245, 245),\n\t rgb(220, 220, 220) 60%,\n\t rgb(210, 210, 210)\n\t);\n\tbackground-image: -webkit-linear-gradient(\n\t to bottom,\n\t rgb(245, 245, 245),\n\t rgb(220, 220, 220) 60%,\n\t rgb(210, 210, 210)\n\t);\n\tbackground-image: linear-gradient(\n\t to bottom,\n\t rgb(245, 245, 245),\n\t rgb(220, 220, 220) 60%,\n\t rgb(210, 210, 210)\n\t);\n\t-webkit-box-shadow: \n\t\tinset 1px 0 0 rgba(255, 255, 255, 0.7),\n\t\tinset -1px 0 0 rgba(255, 255, 255, 0.7),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.7);\n\t-moz-box-shadow: \n\t\tinset 1px 0 0 rgba(255, 255, 255, 0.7),\n\t\tinset -1px 0 0 rgba(255, 255, 255, 0.7),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.7);\n\t-o-box-shadow: \n\t\tinset 1px 0 0 rgba(255, 255, 255, 0.7),\n\t\tinset -1px 0 0 rgba(255, 255, 255, 0.7),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.7);\n\tbox-shadow: \n\t\tinset 1px 0 0 rgba(255, 255, 255, 0.7),\n\t\tinset -1px 0 0 rgba(255, 255, 255, 0.7),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.7);\n\t-webkit-border-radius: 0 0 5px 5px;\n\t-moz-border-radius: 0 0 5px 5px;\n\t-o-border-radius: 0 0 5px 5px;\n\tborder-radius: 0 0 5px 5px;\n}\n\n.annotator-editor.annotator-invert-y .annotator-controls {\n\tborder-top: none;\n\tborder-bottom: 1px solid rgb(180, 180, 180);\n\t-webkit-border-radius: 5px 5px 0 0;\n\t-moz-border-radius: 5px 5px 0 0;\n\t-o-border-radius: 5px 5px 0 0;\n\tborder-radius: 5px 5px 0 0;\n}\n\n.annotator-editor a,\n.annotator-filter .annotator-filter-property label {\n\tposition: relative;\n\tdisplay: inline-block;\n\tpadding: 0 6px 0 22px;\n\tcolor: rgb(54, 54, 54);\n\ttext-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);\n\ttext-decoration: none;\n\tline-height: 24px;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tborder: 1px solid rgb(162, 162, 162);\n\tbackground-color: rgb(212, 212, 212);\n\tbackground-image: -webkit-gradient(\n\t\tlinear, left top, left bottom,\n\t\tfrom(rgb(245, 245, 245)),\n\t\tcolor-stop(0.5, rgb(210, 210, 210)),\n\t\tcolor-stop(0.5, rgb(190, 190, 190)),\n\t\tto(rgb(210, 210, 210))\n\t);\n\tbackground-image: -moz-linear-gradient(\n\t to bottom,\n\t rgb(245, 245, 245),\n\t rgb(210, 210, 210) 50%,\n\t rgb(190, 190, 190) 50%,\n\t rgb(210, 210, 210)\n\t);\n\tbackground-image: -webkit-linear-gradient(\n\t to bottom,\n\t rgb(245, 245, 245),\n\t rgb(210, 210, 210) 50%,\n\t rgb(190, 190, 190) 50%,\n\t rgb(210, 210, 210)\n\t);\n\tbackground-image: linear-gradient(\n\t to bottom,\n\t rgb(245, 245, 245),\n\t rgb(210, 210, 210) 50%,\n\t rgb(190, 190, 190) 50%,\n\t rgb(210, 210, 210)\n\t);\n\t-webkit-box-shadow: \n\t\tinset 0 0 5px rgba(255, 255, 255, 0.2),\n\t\tinset 0 0 1px rgba(255, 255, 255, 0.8);\n\t-moz-box-shadow:\n\t\tinset 0 0 5px rgba(255, 255, 255, 0.2),\n\t\tinset 0 0 1px rgba(255, 255, 255, 0.8);\n\t-o-box-shadow:\n\t\tinset 0 0 5px rgba(255, 255, 255, 0.2),\n\t\tinset 0 0 1px rgba(255, 255, 255, 0.8);\n\tbox-shadow:\n\t\tinset 0 0 5px rgba(255, 255, 255, 0.2),\n\t\tinset 0 0 1px rgba(255, 255, 255, 0.8);\n\t-webkit-border-radius: 5px;\n\t-moz-border-radius: 5px;\n\t-o-border-radius: 5px;\n\tborder-radius: 5px;\n}\n\n.annotator-editor a:after {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 5px;\n\tdisplay: block;\n\tcontent: \"\";\n\twidth: 15px;\n\theight: 15px;\n\tmargin-top: -7px;\n\tbackground-position: 0 -90px;\n}\n\n.annotator-editor a:hover,\n.annotator-editor a:focus,\n.annotator-editor a.annotator-focus,\n.annotator-filter .annotator-filter-active label,\n.annotator-filter .annotator-filter-navigation button:hover {\n\toutline: none;\n\tborder-color: rgb(67, 90, 160);\n\tbackground-color: rgb(56, 101, 249);\n\tbackground-image: -webkit-gradient(\n\t\tlinear, left top, left bottom,\n\t\tfrom(rgb(118, 145, 251)),\n\t\tcolor-stop(0.5, rgb(80, 117, 251)),\n\t\tcolor-stop(0.5, rgb(56, 101, 249)),\n\t\tto(rgb(54, 101, 250))\n\t);\n\tbackground-image: -moz-linear-gradient(\n\t to bottom,\n\t rgb(118, 145, 251),\n\t rgb(80, 117, 251) 50%,\n\t rgb(56, 101, 249) 50%,\n\t rgb(54, 101, 250)\n\t);\n\tbackground-image: -webkit-linear-gradient(\n\t to bottom,\n\t rgb(118, 145, 251),\n\t rgb(80, 117, 251) 50%,\n\t rgb(56, 101, 249) 50%,\n\t rgb(54, 101, 250)\n\t);\n\tbackground-image: linear-gradient(\n\t to bottom,\n\t rgb(118, 145, 251),\n\t rgb(80, 117, 251) 50%,\n\t rgb(56, 101, 249) 50%,\n\t rgb(54, 101, 250)\n\t);\n\tcolor: rgb(255, 255, 255);\n\ttext-shadow: 0 -1px 0 rgba(0, 0, 0, 0.42);\n}\n\n.annotator-editor a:hover:after,\n.annotator-editor a:focus:after {\n\tmargin-top: -8px;\n\tbackground-position: 0 -105px;\n}\n\n.annotator-editor a:active,\n.annotator-filter .annotator-filter-navigation button:active {\n\tborder-color: rgb(112, 12, 73);\n\tbackground-color: rgb(209, 46, 142);\n\tbackground-image: -webkit-gradient(\n\t\tlinear, left top, left bottom,\n\t\tfrom(rgb(252, 124, 202)),\n\t\tcolor-stop(0.5, rgb(232, 93, 178)),\n\t\tcolor-stop(0.5, rgb(209, 46, 142)),\n\t\tto(rgb(255, 0, 156))\n\t);\n\tbackground-image: -moz-linear-gradient(\n\t to bottom,\n\t rgb(252, 124, 202),\n\t rgb(232, 93, 178) 50%,\n\t rgb(209, 46, 142) 50%,\n\t rgb(255, 0, 156)\n\t);\n\tbackground-image: -webkit-linear-gradient(\n\t to bottom,\n\t rgb(252, 124, 202),\n\t rgb(232, 93, 178) 50%,\n\t rgb(209, 46, 142) 50%,\n\t rgb(255, 0, 156)\n\t);\n\tbackground-image: linear-gradient(\n\t to bottom,\n\t rgb(252, 124, 202),\n\t rgb(232, 93, 178) 50%,\n\t rgb(209, 46, 142) 50%,\n\t rgb(255, 0, 156)\n\t);\n}\n\n.annotator-editor a.annotator-save:after {\n\tbackground-position: 0 -120px;\n}\n\n.annotator-editor a.annotator-save:hover:after,\n.annotator-editor a.annotator-save:focus:after,\n.annotator-editor a.annotator-save.annotator-focus:after {\n\tmargin-top: -8px;\n\tbackground-position: 0 -135px;\n}\n\n.annotator-editor .annotator-widget:after {\n\tbackground-position: 0 -30px;\n}\n\n.annotator-editor.annotator-invert-y .annotator-widget .annotator-controls {\n\tbackground-color: #f2f2f2;\n}\n\n.annotator-editor.annotator-invert-y .annotator-widget:after {\n\tbackground-position: 0 -45px;\n\theight: 11px;\n}\n\n.annotator-resize {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\twidth: 12px;\n\theight: 12px;\n\tbackground-position: 2px -150px;\n}\n\n.annotator-invert-x .annotator-resize {\n\tright: auto;\n\tleft: 0;\n\tbackground-position: 0 -195px;\n}\n\n.annotator-invert-y .annotator-resize {\n\ttop: auto;\n\tbottom: 0;\n\tbackground-position: 2px -165px;\n}\n\n.annotator-invert-y.annotator-invert-x .annotator-resize {\n\tbackground-position: 0 -180px;\n}\n\n/* Annotator Notification\n-------------------------------------------------------------------- */\n\n.annotator-notice {\n\tcolor: #fff;\n\tposition: fixed;\n\ttop: -54px;\n\tleft: 0;\n\twidth: 100%;\n\tfont-size: 14px;\n\tline-height: 50px;\n\ttext-align: center;\n\tbackground: black;\n\tbackground: rgba(0, 0, 0, 0.9);\n\tborder-bottom: 4px solid #d4d4d4;\n\t-webkit-transition: top 0.4s ease-out;\n\t-moz-transition: top 0.4s ease-out;\n\t-o-transition: top 0.4s ease-out;\n\ttransition: top 0.4s ease-out;\n}\n\n.annotator-notice-success {\n\tborder-color: #3665f9;\n}\n\n.annotator-notice-error {\n\tborder-color: #ff7e00;\n}\n\n.annotator-notice p {\n\tmargin: 0;\n}\n\n.annotator-notice a {\n\tcolor: #fff;\n}\n\n.annotator-notice-show {\n\ttop: 0;\n}\n\n/* Annotator Tags\n-------------------------------------------------------------------- */\n\n.annotator-tags {\n\tmargin-bottom: -2px;\n}\n\n.annotator-tags .annotator-tag {\n\tdisplay: inline-block;\n\tpadding: 0 8px;\n\tmargin-bottom: 2px;\n\tline-height: 1.6;\n\tfont-weight: bold;\n\tbackground-color: rgb(230, 230, 230);\n\t-webkit-border-radius: 8px;\n\t-moz-border-radius: 8px;\n\t-o-border-radius: 8px;\n\tborder-radius: 8px;\n}\n\n/* Annotator Filter\n-------------------------------------------------------------------- */\n\n.annotator-filter {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n\ttext-align: left;\n\tline-height: 0;\n\tborder: none;\n\tborder-bottom: 1px solid #878787;\n\tpadding-left: 10px;\n\tpadding-right: 10px;\n\t-webkit-border-radius: 0;\n\t-moz-border-radius: 0;\n\t-o-border-radius: 0;\n\tborder-radius: 0;\n\t-webkit-box-shadow: \n\t\tinset 0 -1px 0 rgba(255, 255, 255, 0.3);\n\t-moz-box-shadow: \n\t\tinset 0 -1px 0 rgba(255, 255, 255, 0.3);\n\t-o-box-shadow: \n\t\tinset 0 -1px 0 rgba(255, 255, 255, 0.3);\n\tbox-shadow: \n\t\tinset 0 -1px 0 rgba(255, 255, 255, 0.3);\n}\n\n.annotator-filter strong {\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tcolor: #3c3c3c;\n\ttext-shadow: 0 1px 0 rgba(255, 255, 255, 0.7);\n\tposition: relative;\n\ttop: -9px;\n}\n\n\n.annotator-filter .annotator-filter-property,\n.annotator-filter .annotator-filter-navigation {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tline-height: 10px;\n\tpadding: 2px 0;\n\tmargin-right: 8px;\n}\n\n.annotator-filter .annotator-filter-property label,\n.annotator-filter .annotator-filter-navigation button {\n\ttext-align: left;\n\tdisplay: block;\n\tfloat: left;\n\tline-height: 20px;\n\t-webkit-border-radius: 10px 0 0 10px;\n\t-moz-border-radius: 10px 0 0 10px;\n\t-o-border-radius: 10px 0 0 10px;\n\tborder-radius: 10px 0 0 10px;\n}\n\n.annotator-filter .annotator-filter-property label {\n\tpadding-left: 8px;\n}\n\n.annotator-filter .annotator-filter-property input {\n\tdisplay: block;\n\tfloat: right;\n\t-webkit-appearance: none;\n\tbackground-color: #fff;\n\tborder: 1px solid #878787;\n\tborder-left: none;\n\tpadding: 2px 4px;\n\tline-height: 16px;\n\tmin-height: 16px;\n\tfont-size: 12px;\n\twidth: 150px;\n\tcolor: #333;\n\tbackground-color: #f8f8f8;\n\t-webkit-border-radius: 0 10px 10px 0;\n\t-moz-border-radius: 0 10px 10px 0;\n\t-o-border-radius: 0 10px 10px 0;\n\tborder-radius: 0 10px 10px 0;\n\t-webkit-box-shadow: \n\t\tinset 0 1px 1px rgba(0, 0, 0, 0.2);\n\t-moz-box-shadow: \n\t\tinset 0 1px 1px rgba(0, 0, 0, 0.2);\n\t-o-box-shadow: \n\t\tinset 0 1px 1px rgba(0, 0, 0, 0.2);\n\tbox-shadow: \n\t\tinset 0 1px 1px rgba(0, 0, 0, 0.2);\n\t\n}\n\n.annotator-filter .annotator-filter-property input:focus {\n\toutline: none;\n\tbackground-color: #fff;\n}\n\n.annotator-filter .annotator-filter-clear {\n\tposition: absolute;\n\tright: 3px;\n\ttop: 6px;\n\tborder: none;\n\ttext-indent: -900em;\n\twidth: 15px;\n\theight: 15px;\n\tbackground-position: 0 -90px;\n\topacity: 0.4;\n}\n\n.annotator-filter .annotator-filter-clear:hover,\n.annotator-filter .annotator-filter-clear:focus {\n\topacity: 0.8;\n}\n\n.annotator-filter .annotator-filter-clear:active {\n\topacity: 1;\n}\n\n.annotator-filter .annotator-filter-navigation button {\n\tborder: 1px solid rgb(162, 162, 162);\n\tpadding: 0;\n\ttext-indent: -900px;\n\twidth: 20px;\n\tmin-height: 22px;\n\t-webkit-box-shadow: \n\t\tinset 0 0 5px rgba(255, 255, 255, 0.2),\n\t\tinset 0 0 1px rgba(255, 255, 255, 0.8);\n\t-moz-box-shadow:\n\t\tinset 0 0 5px rgba(255, 255, 255, 0.2),\n\t\tinset 0 0 1px rgba(255, 255, 255, 0.8);\n\t-o-box-shadow:\n\t\tinset 0 0 5px rgba(255, 255, 255, 0.2),\n\t\tinset 0 0 1px rgba(255, 255, 255, 0.8);\n\tbox-shadow:\n\t\tinset 0 0 5px rgba(255, 255, 255, 0.2),\n\t\tinset 0 0 1px rgba(255, 255, 255, 0.8);\n}\n\n.annotator-filter .annotator-filter-navigation button,\n.annotator-filter .annotator-filter-navigation button:hover,\n.annotator-filter .annotator-filter-navigation button:focus {\n\tcolor: transparent;\n}\n\n.annotator-filter .annotator-filter-navigation button:after {\n\tposition: absolute;\n\ttop: 8px;\n\tleft: 8px;\n\tcontent: \"\";\n\tdisplay: block;\n\twidth: 9px;\n\theight: 9px;\n\tbackground-position: 0 -210px;\n}\n\n.annotator-filter .annotator-filter-navigation button:hover:after {\n\tbackground-position: 0 -225px;\n}\n\n.annotator-filter .annotator-filter-navigation .annotator-filter-next {\n\t-webkit-border-radius: 0 10px 10px 0;\n\t-moz-border-radius: 0 10px 10px 0;\n\t-o-border-radius: 0 10px 10px 0;\n\tborder-radius: 0 10px 10px 0;\n\tborder-left: none;\n}\n\n.annotator-filter .annotator-filter-navigation .annotator-filter-next:after {\n\tleft: auto;\n\tright: 7px;\n\tbackground-position: 0 -240px;\n}\n\n.annotator-filter .annotator-filter-navigation .annotator-filter-next:hover:after {\n\tbackground-position: 0 -255px;\n}\n\n.annotator-hl-active {\n\tbackground: #FFFF0A;\n\tbackground: rgba(255, 255, 10, 0.8);\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#CCFFFF0A, endColorstr=#CCFFFF0A)\"; /* 0.8 == CC in MS filters */\n}\n\n.annotator-hl-filtered {\n\tbackground-color: transparent;\n}\n","@charset \"UTF-8\";\n@font-face {\n font-family: 'Material Icons';\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"./fonts/MaterialIcons-Regular.eot\");\n /* For IE6-8 */\n src: local(\"☺\"), url(\"./fonts/MaterialIcons-Regular.woff2\") format(\"woff2\"), url(\"./fonts/MaterialIcons-Regular.woff\") format(\"woff\"), url(\"./fonts/MaterialIcons-Regular.ttf\") format(\"truetype\"); }\n\n.material-icons {\n font-family: 'Material Icons';\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n /* Preferred icon size */\n display: inline-block;\n line-height: 1;\n text-transform: none;\n letter-spacing: normal;\n word-wrap: normal;\n white-space: nowrap;\n /* Respect document layout direction */\n direction: inherit;\n /* Support for all WebKit browsers. */\n -webkit-font-smoothing: antialiased;\n /* Support for Safari and Chrome. */\n text-rendering: optimizeLegibility;\n /* Support for Firefox. */\n -moz-osx-font-smoothing: grayscale;\n /* Support for IE. */\n font-feature-settings: 'liga'; }\n .material-icons._10k:before {\n content: \"\\e951\"; }\n .material-icons._10mp:before {\n content: \"\\e952\"; }\n .material-icons._11mp:before {\n content: \"\\e953\"; }\n .material-icons._123:before {\n content: \"\\eb8d\"; }\n .material-icons._12mp:before {\n content: \"\\e954\"; }\n .material-icons._13mp:before {\n content: \"\\e955\"; }\n .material-icons._14mp:before {\n content: \"\\e956\"; }\n .material-icons._15mp:before {\n content: \"\\e957\"; }\n .material-icons._16mp:before {\n content: \"\\e958\"; }\n .material-icons._17mp:before {\n content: \"\\e959\"; }\n .material-icons._18_up_rating:before {\n content: \"\\f8fd\"; }\n .material-icons._18mp:before {\n content: \"\\e95a\"; }\n .material-icons._19mp:before {\n content: \"\\e95b\"; }\n .material-icons._1k:before {\n content: \"\\e95c\"; }\n .material-icons._1k_plus:before {\n content: \"\\e95d\"; }\n .material-icons._1x_mobiledata:before {\n content: \"\\efcd\"; }\n .material-icons._20mp:before {\n content: \"\\e95e\"; }\n .material-icons._21mp:before {\n content: \"\\e95f\"; }\n .material-icons._22mp:before {\n content: \"\\e960\"; }\n .material-icons._23mp:before {\n content: \"\\e961\"; }\n .material-icons._24mp:before {\n content: \"\\e962\"; }\n .material-icons._2k:before {\n content: \"\\e963\"; }\n .material-icons._2k_plus:before {\n content: \"\\e964\"; }\n .material-icons._2mp:before {\n content: \"\\e965\"; }\n .material-icons._30fps:before {\n content: \"\\efce\"; }\n .material-icons._30fps_select:before {\n content: \"\\efcf\"; }\n .material-icons._360:before {\n content: \"\\e577\"; }\n .material-icons._3d_rotation:before {\n content: \"\\e84d\"; }\n .material-icons._3g_mobiledata:before {\n content: \"\\efd0\"; }\n .material-icons._3k:before {\n content: \"\\e966\"; }\n .material-icons._3k_plus:before {\n content: \"\\e967\"; }\n .material-icons._3mp:before {\n content: \"\\e968\"; }\n .material-icons._3p:before {\n content: \"\\efd1\"; }\n .material-icons._4g_mobiledata:before {\n content: \"\\efd2\"; }\n .material-icons._4g_plus_mobiledata:before {\n content: \"\\efd3\"; }\n .material-icons._4k:before {\n content: \"\\e072\"; }\n .material-icons._4k_plus:before {\n content: \"\\e969\"; }\n .material-icons._4mp:before {\n content: \"\\e96a\"; }\n .material-icons._5g:before {\n content: \"\\ef38\"; }\n .material-icons._5k:before {\n content: \"\\e96b\"; }\n .material-icons._5k_plus:before {\n content: \"\\e96c\"; }\n .material-icons._5mp:before {\n content: \"\\e96d\"; }\n .material-icons._60fps:before {\n content: \"\\efd4\"; }\n .material-icons._60fps_select:before {\n content: \"\\efd5\"; }\n .material-icons._6_ft_apart:before {\n content: \"\\f21e\"; }\n .material-icons._6k:before {\n content: \"\\e96e\"; }\n .material-icons._6k_plus:before {\n content: \"\\e96f\"; }\n .material-icons._6mp:before {\n content: \"\\e970\"; }\n .material-icons._7k:before {\n content: \"\\e971\"; }\n .material-icons._7k_plus:before {\n content: \"\\e972\"; }\n .material-icons._7mp:before {\n content: \"\\e973\"; }\n .material-icons._8k:before {\n content: \"\\e974\"; }\n .material-icons._8k_plus:before {\n content: \"\\e975\"; }\n .material-icons._8mp:before {\n content: \"\\e976\"; }\n .material-icons._9k:before {\n content: \"\\e977\"; }\n .material-icons._9k_plus:before {\n content: \"\\e978\"; }\n .material-icons._9mp:before {\n content: \"\\e979\"; }\n .material-icons.abc:before {\n content: \"\\eb94\"; }\n .material-icons.ac_unit:before {\n content: \"\\eb3b\"; }\n .material-icons.access_alarm:before {\n content: \"\\e190\"; }\n .material-icons.access_alarms:before {\n content: \"\\e191\"; }\n .material-icons.access_time:before {\n content: \"\\e192\"; }\n .material-icons.access_time_filled:before {\n content: \"\\efd6\"; }\n .material-icons.accessibility:before {\n content: \"\\e84e\"; }\n .material-icons.accessibility_new:before {\n content: \"\\e92c\"; }\n .material-icons.accessible:before {\n content: \"\\e914\"; }\n .material-icons.accessible_forward:before {\n content: \"\\e934\"; }\n .material-icons.account_balance:before {\n content: \"\\e84f\"; }\n .material-icons.account_balance_wallet:before {\n content: \"\\e850\"; }\n .material-icons.account_box:before {\n content: \"\\e851\"; }\n .material-icons.account_circle:before {\n content: \"\\e853\"; }\n .material-icons.account_tree:before {\n content: \"\\e97a\"; }\n .material-icons.ad_units:before {\n content: \"\\ef39\"; }\n .material-icons.adb:before {\n content: \"\\e60e\"; }\n .material-icons.add:before {\n content: \"\\e145\"; }\n .material-icons.add_a_photo:before {\n content: \"\\e439\"; }\n .material-icons.add_alarm:before {\n content: \"\\e193\"; }\n .material-icons.add_alert:before {\n content: \"\\e003\"; }\n .material-icons.add_box:before {\n content: \"\\e146\"; }\n .material-icons.add_business:before {\n content: \"\\e729\"; }\n .material-icons.add_call:before {\n content: \"\\e0e8\"; }\n .material-icons.add_card:before {\n content: \"\\eb86\"; }\n .material-icons.add_chart:before {\n content: \"\\e97b\"; }\n .material-icons.add_circle:before {\n content: \"\\e147\"; }\n .material-icons.add_circle_outline:before {\n content: \"\\e148\"; }\n .material-icons.add_comment:before {\n content: \"\\e266\"; }\n .material-icons.add_home:before {\n content: \"\\f8eb\"; }\n .material-icons.add_home_work:before {\n content: \"\\f8ed\"; }\n .material-icons.add_ic_call:before {\n content: \"\\e97c\"; }\n .material-icons.add_link:before {\n content: \"\\e178\"; }\n .material-icons.add_location:before {\n content: \"\\e567\"; }\n .material-icons.add_location_alt:before {\n content: \"\\ef3a\"; }\n .material-icons.add_moderator:before {\n content: \"\\e97d\"; }\n .material-icons.add_photo_alternate:before {\n content: \"\\e43e\"; }\n .material-icons.add_reaction:before {\n content: \"\\e1d3\"; }\n .material-icons.add_road:before {\n content: \"\\ef3b\"; }\n .material-icons.add_shopping_cart:before {\n content: \"\\e854\"; }\n .material-icons.add_task:before {\n content: \"\\f23a\"; }\n .material-icons.add_to_drive:before {\n content: \"\\e65c\"; }\n .material-icons.add_to_home_screen:before {\n content: \"\\e1fe\"; }\n .material-icons.add_to_photos:before {\n content: \"\\e39d\"; }\n .material-icons.add_to_queue:before {\n content: \"\\e05c\"; }\n .material-icons.addchart:before {\n content: \"\\ef3c\"; }\n .material-icons.adf_scanner:before {\n content: \"\\eada\"; }\n .material-icons.adjust:before {\n content: \"\\e39e\"; }\n .material-icons.admin_panel_settings:before {\n content: \"\\ef3d\"; }\n .material-icons.adobe:before {\n content: \"\\ea96\"; }\n .material-icons.ads_click:before {\n content: \"\\e762\"; }\n .material-icons.agriculture:before {\n content: \"\\ea79\"; }\n .material-icons.air:before {\n content: \"\\efd8\"; }\n .material-icons.airline_seat_flat:before {\n content: \"\\e630\"; }\n .material-icons.airline_seat_flat_angled:before {\n content: \"\\e631\"; }\n .material-icons.airline_seat_individual_suite:before {\n content: \"\\e632\"; }\n .material-icons.airline_seat_legroom_extra:before {\n content: \"\\e633\"; }\n .material-icons.airline_seat_legroom_normal:before {\n content: \"\\e634\"; }\n .material-icons.airline_seat_legroom_reduced:before {\n content: \"\\e635\"; }\n .material-icons.airline_seat_recline_extra:before {\n content: \"\\e636\"; }\n .material-icons.airline_seat_recline_normal:before {\n content: \"\\e637\"; }\n .material-icons.airline_stops:before {\n content: \"\\e7d0\"; }\n .material-icons.airlines:before {\n content: \"\\e7ca\"; }\n .material-icons.airplane_ticket:before {\n content: \"\\efd9\"; }\n .material-icons.airplanemode_active:before {\n content: \"\\e195\"; }\n .material-icons.airplanemode_inactive:before {\n content: \"\\e194\"; }\n .material-icons.airplanemode_off:before {\n content: \"\\e194\"; }\n .material-icons.airplanemode_on:before {\n content: \"\\e195\"; }\n .material-icons.airplay:before {\n content: \"\\e055\"; }\n .material-icons.airport_shuttle:before {\n content: \"\\eb3c\"; }\n .material-icons.alarm:before {\n content: \"\\e855\"; }\n .material-icons.alarm_add:before {\n content: \"\\e856\"; }\n .material-icons.alarm_off:before {\n content: \"\\e857\"; }\n .material-icons.alarm_on:before {\n content: \"\\e858\"; }\n .material-icons.album:before {\n content: \"\\e019\"; }\n .material-icons.align_horizontal_center:before {\n content: \"\\e00f\"; }\n .material-icons.align_horizontal_left:before {\n content: \"\\e00d\"; }\n .material-icons.align_horizontal_right:before {\n content: \"\\e010\"; }\n .material-icons.align_vertical_bottom:before {\n content: \"\\e015\"; }\n .material-icons.align_vertical_center:before {\n content: \"\\e011\"; }\n .material-icons.align_vertical_top:before {\n content: \"\\e00c\"; }\n .material-icons.all_inbox:before {\n content: \"\\e97f\"; }\n .material-icons.all_inclusive:before {\n content: \"\\eb3d\"; }\n .material-icons.all_out:before {\n content: \"\\e90b\"; }\n .material-icons.alt_route:before {\n content: \"\\f184\"; }\n .material-icons.alternate_email:before {\n content: \"\\e0e6\"; }\n .material-icons.amp_stories:before {\n content: \"\\ea13\"; }\n .material-icons.analytics:before {\n content: \"\\ef3e\"; }\n .material-icons.anchor:before {\n content: \"\\f1cd\"; }\n .material-icons.android:before {\n content: \"\\e859\"; }\n .material-icons.animation:before {\n content: \"\\e71c\"; }\n .material-icons.announcement:before {\n content: \"\\e85a\"; }\n .material-icons.aod:before {\n content: \"\\efda\"; }\n .material-icons.apartment:before {\n content: \"\\ea40\"; }\n .material-icons.api:before {\n content: \"\\f1b7\"; }\n .material-icons.app_blocking:before {\n content: \"\\ef3f\"; }\n .material-icons.app_registration:before {\n content: \"\\ef40\"; }\n .material-icons.app_settings_alt:before {\n content: \"\\ef41\"; }\n .material-icons.app_shortcut:before {\n content: \"\\eae4\"; }\n .material-icons.apple:before {\n content: \"\\ea80\"; }\n .material-icons.approval:before {\n content: \"\\e982\"; }\n .material-icons.apps:before {\n content: \"\\e5c3\"; }\n .material-icons.apps_outage:before {\n content: \"\\e7cc\"; }\n .material-icons.architecture:before {\n content: \"\\ea3b\"; }\n .material-icons.archive:before {\n content: \"\\e149\"; }\n .material-icons.area_chart:before {\n content: \"\\e770\"; }\n .material-icons.arrow_back:before {\n content: \"\\e5c4\"; }\n .material-icons.arrow_back_ios:before {\n content: \"\\e5e0\"; }\n .material-icons.arrow_back_ios_new:before {\n content: \"\\e2ea\"; }\n .material-icons.arrow_circle_down:before {\n content: \"\\f181\"; }\n .material-icons.arrow_circle_left:before {\n content: \"\\eaa7\"; }\n .material-icons.arrow_circle_right:before {\n content: \"\\eaaa\"; }\n .material-icons.arrow_circle_up:before {\n content: \"\\f182\"; }\n .material-icons.arrow_downward:before {\n content: \"\\e5db\"; }\n .material-icons.arrow_drop_down:before {\n content: \"\\e5c5\"; }\n .material-icons.arrow_drop_down_circle:before {\n content: \"\\e5c6\"; }\n .material-icons.arrow_drop_up:before {\n content: \"\\e5c7\"; }\n .material-icons.arrow_forward:before {\n content: \"\\e5c8\"; }\n .material-icons.arrow_forward_ios:before {\n content: \"\\e5e1\"; }\n .material-icons.arrow_left:before {\n content: \"\\e5de\"; }\n .material-icons.arrow_right:before {\n content: \"\\e5df\"; }\n .material-icons.arrow_right_alt:before {\n content: \"\\e941\"; }\n .material-icons.arrow_upward:before {\n content: \"\\e5d8\"; }\n .material-icons.art_track:before {\n content: \"\\e060\"; }\n .material-icons.article:before {\n content: \"\\ef42\"; }\n .material-icons.aspect_ratio:before {\n content: \"\\e85b\"; }\n .material-icons.assessment:before {\n content: \"\\e85c\"; }\n .material-icons.assignment:before {\n content: \"\\e85d\"; }\n .material-icons.assignment_ind:before {\n content: \"\\e85e\"; }\n .material-icons.assignment_late:before {\n content: \"\\e85f\"; }\n .material-icons.assignment_return:before {\n content: \"\\e860\"; }\n .material-icons.assignment_returned:before {\n content: \"\\e861\"; }\n .material-icons.assignment_turned_in:before {\n content: \"\\e862\"; }\n .material-icons.assistant:before {\n content: \"\\e39f\"; }\n .material-icons.assistant_direction:before {\n content: \"\\e988\"; }\n .material-icons.assistant_navigation:before {\n content: \"\\e989\"; }\n .material-icons.assistant_photo:before {\n content: \"\\e3a0\"; }\n .material-icons.assured_workload:before {\n content: \"\\eb6f\"; }\n .material-icons.atm:before {\n content: \"\\e573\"; }\n .material-icons.attach_email:before {\n content: \"\\ea5e\"; }\n .material-icons.attach_file:before {\n content: \"\\e226\"; }\n .material-icons.attach_money:before {\n content: \"\\e227\"; }\n .material-icons.attachment:before {\n content: \"\\e2bc\"; }\n .material-icons.attractions:before {\n content: \"\\ea52\"; }\n .material-icons.attribution:before {\n content: \"\\efdb\"; }\n .material-icons.audio_file:before {\n content: \"\\eb82\"; }\n .material-icons.audiotrack:before {\n content: \"\\e3a1\"; }\n .material-icons.auto_awesome:before {\n content: \"\\e65f\"; }\n .material-icons.auto_awesome_mosaic:before {\n content: \"\\e660\"; }\n .material-icons.auto_awesome_motion:before {\n content: \"\\e661\"; }\n .material-icons.auto_delete:before {\n content: \"\\ea4c\"; }\n .material-icons.auto_fix_high:before {\n content: \"\\e663\"; }\n .material-icons.auto_fix_normal:before {\n content: \"\\e664\"; }\n .material-icons.auto_fix_off:before {\n content: \"\\e665\"; }\n .material-icons.auto_graph:before {\n content: \"\\e4fb\"; }\n .material-icons.auto_mode:before {\n content: \"\\ec20\"; }\n .material-icons.auto_stories:before {\n content: \"\\e666\"; }\n .material-icons.autofps_select:before {\n content: \"\\efdc\"; }\n .material-icons.autorenew:before {\n content: \"\\e863\"; }\n .material-icons.av_timer:before {\n content: \"\\e01b\"; }\n .material-icons.baby_changing_station:before {\n content: \"\\f19b\"; }\n .material-icons.back_hand:before {\n content: \"\\e764\"; }\n .material-icons.backpack:before {\n content: \"\\f19c\"; }\n .material-icons.backspace:before {\n content: \"\\e14a\"; }\n .material-icons.backup:before {\n content: \"\\e864\"; }\n .material-icons.backup_table:before {\n content: \"\\ef43\"; }\n .material-icons.badge:before {\n content: \"\\ea67\"; }\n .material-icons.bakery_dining:before {\n content: \"\\ea53\"; }\n .material-icons.balance:before {\n content: \"\\eaf6\"; }\n .material-icons.balcony:before {\n content: \"\\e58f\"; }\n .material-icons.ballot:before {\n content: \"\\e172\"; }\n .material-icons.bar_chart:before {\n content: \"\\e26b\"; }\n .material-icons.batch_prediction:before {\n content: \"\\f0f5\"; }\n .material-icons.bathroom:before {\n content: \"\\efdd\"; }\n .material-icons.bathtub:before {\n content: \"\\ea41\"; }\n .material-icons.battery_0_bar:before {\n content: \"\\ebdc\"; }\n .material-icons.battery_1_bar:before {\n content: \"\\ebd9\"; }\n .material-icons.battery_2_bar:before {\n content: \"\\ebe0\"; }\n .material-icons.battery_3_bar:before {\n content: \"\\ebdd\"; }\n .material-icons.battery_4_bar:before {\n content: \"\\ebe2\"; }\n .material-icons.battery_5_bar:before {\n content: \"\\ebd4\"; }\n .material-icons.battery_6_bar:before {\n content: \"\\ebd2\"; }\n .material-icons.battery_alert:before {\n content: \"\\e19c\"; }\n .material-icons.battery_charging_full:before {\n content: \"\\e1a3\"; }\n .material-icons.battery_full:before {\n content: \"\\e1a4\"; }\n .material-icons.battery_saver:before {\n content: \"\\efde\"; }\n .material-icons.battery_std:before {\n content: \"\\e1a5\"; }\n .material-icons.battery_unknown:before {\n content: \"\\e1a6\"; }\n .material-icons.beach_access:before {\n content: \"\\eb3e\"; }\n .material-icons.bed:before {\n content: \"\\efdf\"; }\n .material-icons.bedroom_baby:before {\n content: \"\\efe0\"; }\n .material-icons.bedroom_child:before {\n content: \"\\efe1\"; }\n .material-icons.bedroom_parent:before {\n content: \"\\efe2\"; }\n .material-icons.bedtime:before {\n content: \"\\ef44\"; }\n .material-icons.bedtime_off:before {\n content: \"\\eb76\"; }\n .material-icons.beenhere:before {\n content: \"\\e52d\"; }\n .material-icons.bento:before {\n content: \"\\f1f4\"; }\n .material-icons.bike_scooter:before {\n content: \"\\ef45\"; }\n .material-icons.biotech:before {\n content: \"\\ea3a\"; }\n .material-icons.blender:before {\n content: \"\\efe3\"; }\n .material-icons.blinds:before {\n content: \"\\e286\"; }\n .material-icons.blinds_closed:before {\n content: \"\\ec1f\"; }\n .material-icons.block:before {\n content: \"\\e14b\"; }\n .material-icons.block_flipped:before {\n content: \"\\ef46\"; }\n .material-icons.bloodtype:before {\n content: \"\\efe4\"; }\n .material-icons.bluetooth:before {\n content: \"\\e1a7\"; }\n .material-icons.bluetooth_audio:before {\n content: \"\\e60f\"; }\n .material-icons.bluetooth_connected:before {\n content: \"\\e1a8\"; }\n .material-icons.bluetooth_disabled:before {\n content: \"\\e1a9\"; }\n .material-icons.bluetooth_drive:before {\n content: \"\\efe5\"; }\n .material-icons.bluetooth_searching:before {\n content: \"\\e1aa\"; }\n .material-icons.blur_circular:before {\n content: \"\\e3a2\"; }\n .material-icons.blur_linear:before {\n content: \"\\e3a3\"; }\n .material-icons.blur_off:before {\n content: \"\\e3a4\"; }\n .material-icons.blur_on:before {\n content: \"\\e3a5\"; }\n .material-icons.bolt:before {\n content: \"\\ea0b\"; }\n .material-icons.book:before {\n content: \"\\e865\"; }\n .material-icons.book_online:before {\n content: \"\\f217\"; }\n .material-icons.bookmark:before {\n content: \"\\e866\"; }\n .material-icons.bookmark_add:before {\n content: \"\\e598\"; }\n .material-icons.bookmark_added:before {\n content: \"\\e599\"; }\n .material-icons.bookmark_border:before {\n content: \"\\e867\"; }\n .material-icons.bookmark_outline:before {\n content: \"\\e867\"; }\n .material-icons.bookmark_remove:before {\n content: \"\\e59a\"; }\n .material-icons.bookmarks:before {\n content: \"\\e98b\"; }\n .material-icons.border_all:before {\n content: \"\\e228\"; }\n .material-icons.border_bottom:before {\n content: \"\\e229\"; }\n .material-icons.border_clear:before {\n content: \"\\e22a\"; }\n .material-icons.border_color:before {\n content: \"\\e22b\"; }\n .material-icons.border_horizontal:before {\n content: \"\\e22c\"; }\n .material-icons.border_inner:before {\n content: \"\\e22d\"; }\n .material-icons.border_left:before {\n content: \"\\e22e\"; }\n .material-icons.border_outer:before {\n content: \"\\e22f\"; }\n .material-icons.border_right:before {\n content: \"\\e230\"; }\n .material-icons.border_style:before {\n content: \"\\e231\"; }\n .material-icons.border_top:before {\n content: \"\\e232\"; }\n .material-icons.border_vertical:before {\n content: \"\\e233\"; }\n .material-icons.boy:before {\n content: \"\\eb67\"; }\n .material-icons.branding_watermark:before {\n content: \"\\e06b\"; }\n .material-icons.breakfast_dining:before {\n content: \"\\ea54\"; }\n .material-icons.brightness_1:before {\n content: \"\\e3a6\"; }\n .material-icons.brightness_2:before {\n content: \"\\e3a7\"; }\n .material-icons.brightness_3:before {\n content: \"\\e3a8\"; }\n .material-icons.brightness_4:before {\n content: \"\\e3a9\"; }\n .material-icons.brightness_5:before {\n content: \"\\e3aa\"; }\n .material-icons.brightness_6:before {\n content: \"\\e3ab\"; }\n .material-icons.brightness_7:before {\n content: \"\\e3ac\"; }\n .material-icons.brightness_auto:before {\n content: \"\\e1ab\"; }\n .material-icons.brightness_high:before {\n content: \"\\e1ac\"; }\n .material-icons.brightness_low:before {\n content: \"\\e1ad\"; }\n .material-icons.brightness_medium:before {\n content: \"\\e1ae\"; }\n .material-icons.broadcast_on_home:before {\n content: \"\\f8f8\"; }\n .material-icons.broadcast_on_personal:before {\n content: \"\\f8f9\"; }\n .material-icons.broken_image:before {\n content: \"\\e3ad\"; }\n .material-icons.browse_gallery:before {\n content: \"\\ebd1\"; }\n .material-icons.browser_not_supported:before {\n content: \"\\ef47\"; }\n .material-icons.browser_updated:before {\n content: \"\\e7cf\"; }\n .material-icons.brunch_dining:before {\n content: \"\\ea73\"; }\n .material-icons.brush:before {\n content: \"\\e3ae\"; }\n .material-icons.bubble_chart:before {\n content: \"\\e6dd\"; }\n .material-icons.bug_report:before {\n content: \"\\e868\"; }\n .material-icons.build:before {\n content: \"\\e869\"; }\n .material-icons.build_circle:before {\n content: \"\\ef48\"; }\n .material-icons.bungalow:before {\n content: \"\\e591\"; }\n .material-icons.burst_mode:before {\n content: \"\\e43c\"; }\n .material-icons.bus_alert:before {\n content: \"\\e98f\"; }\n .material-icons.business:before {\n content: \"\\e0af\"; }\n .material-icons.business_center:before {\n content: \"\\eb3f\"; }\n .material-icons.cabin:before {\n content: \"\\e589\"; }\n .material-icons.cable:before {\n content: \"\\efe6\"; }\n .material-icons.cached:before {\n content: \"\\e86a\"; }\n .material-icons.cake:before {\n content: \"\\e7e9\"; }\n .material-icons.calculate:before {\n content: \"\\ea5f\"; }\n .material-icons.calendar_month:before {\n content: \"\\ebcc\"; }\n .material-icons.calendar_today:before {\n content: \"\\e935\"; }\n .material-icons.calendar_view_day:before {\n content: \"\\e936\"; }\n .material-icons.calendar_view_month:before {\n content: \"\\efe7\"; }\n .material-icons.calendar_view_week:before {\n content: \"\\efe8\"; }\n .material-icons.call:before {\n content: \"\\e0b0\"; }\n .material-icons.call_end:before {\n content: \"\\e0b1\"; }\n .material-icons.call_made:before {\n content: \"\\e0b2\"; }\n .material-icons.call_merge:before {\n content: \"\\e0b3\"; }\n .material-icons.call_missed:before {\n content: \"\\e0b4\"; }\n .material-icons.call_missed_outgoing:before {\n content: \"\\e0e4\"; }\n .material-icons.call_received:before {\n content: \"\\e0b5\"; }\n .material-icons.call_split:before {\n content: \"\\e0b6\"; }\n .material-icons.call_to_action:before {\n content: \"\\e06c\"; }\n .material-icons.camera:before {\n content: \"\\e3af\"; }\n .material-icons.camera_alt:before {\n content: \"\\e3b0\"; }\n .material-icons.camera_enhance:before {\n content: \"\\e8fc\"; }\n .material-icons.camera_front:before {\n content: \"\\e3b1\"; }\n .material-icons.camera_indoor:before {\n content: \"\\efe9\"; }\n .material-icons.camera_outdoor:before {\n content: \"\\efea\"; }\n .material-icons.camera_rear:before {\n content: \"\\e3b2\"; }\n .material-icons.camera_roll:before {\n content: \"\\e3b3\"; }\n .material-icons.cameraswitch:before {\n content: \"\\efeb\"; }\n .material-icons.campaign:before {\n content: \"\\ef49\"; }\n .material-icons.cancel:before {\n content: \"\\e5c9\"; }\n .material-icons.cancel_presentation:before {\n content: \"\\e0e9\"; }\n .material-icons.cancel_schedule_send:before {\n content: \"\\ea39\"; }\n .material-icons.candlestick_chart:before {\n content: \"\\ead4\"; }\n .material-icons.car_crash:before {\n content: \"\\ebf2\"; }\n .material-icons.car_rental:before {\n content: \"\\ea55\"; }\n .material-icons.car_repair:before {\n content: \"\\ea56\"; }\n .material-icons.card_giftcard:before {\n content: \"\\e8f6\"; }\n .material-icons.card_membership:before {\n content: \"\\e8f7\"; }\n .material-icons.card_travel:before {\n content: \"\\e8f8\"; }\n .material-icons.carpenter:before {\n content: \"\\f1f8\"; }\n .material-icons.cases:before {\n content: \"\\e992\"; }\n .material-icons.casino:before {\n content: \"\\eb40\"; }\n .material-icons.cast:before {\n content: \"\\e307\"; }\n .material-icons.cast_connected:before {\n content: \"\\e308\"; }\n .material-icons.cast_for_education:before {\n content: \"\\efec\"; }\n .material-icons.castle:before {\n content: \"\\eab1\"; }\n .material-icons.catching_pokemon:before {\n content: \"\\e508\"; }\n .material-icons.category:before {\n content: \"\\e574\"; }\n .material-icons.celebration:before {\n content: \"\\ea65\"; }\n .material-icons.cell_tower:before {\n content: \"\\ebba\"; }\n .material-icons.cell_wifi:before {\n content: \"\\e0ec\"; }\n .material-icons.center_focus_strong:before {\n content: \"\\e3b4\"; }\n .material-icons.center_focus_weak:before {\n content: \"\\e3b5\"; }\n .material-icons.chair:before {\n content: \"\\efed\"; }\n .material-icons.chair_alt:before {\n content: \"\\efee\"; }\n .material-icons.chalet:before {\n content: \"\\e585\"; }\n .material-icons.change_circle:before {\n content: \"\\e2e7\"; }\n .material-icons.change_history:before {\n content: \"\\e86b\"; }\n .material-icons.charging_station:before {\n content: \"\\f19d\"; }\n .material-icons.chat:before {\n content: \"\\e0b7\"; }\n .material-icons.chat_bubble:before {\n content: \"\\e0ca\"; }\n .material-icons.chat_bubble_outline:before {\n content: \"\\e0cb\"; }\n .material-icons.check:before {\n content: \"\\e5ca\"; }\n .material-icons.check_box:before {\n content: \"\\e834\"; }\n .material-icons.check_box_outline_blank:before {\n content: \"\\e835\"; }\n .material-icons.check_circle:before {\n content: \"\\e86c\"; }\n .material-icons.check_circle_outline:before {\n content: \"\\e92d\"; }\n .material-icons.checklist:before {\n content: \"\\e6b1\"; }\n .material-icons.checklist_rtl:before {\n content: \"\\e6b3\"; }\n .material-icons.checkroom:before {\n content: \"\\f19e\"; }\n .material-icons.chevron_left:before {\n content: \"\\e5cb\"; }\n .material-icons.chevron_right:before {\n content: \"\\e5cc\"; }\n .material-icons.child_care:before {\n content: \"\\eb41\"; }\n .material-icons.child_friendly:before {\n content: \"\\eb42\"; }\n .material-icons.chrome_reader_mode:before {\n content: \"\\e86d\"; }\n .material-icons.church:before {\n content: \"\\eaae\"; }\n .material-icons.circle:before {\n content: \"\\ef4a\"; }\n .material-icons.circle_notifications:before {\n content: \"\\e994\"; }\n .material-icons.class:before {\n content: \"\\e86e\"; }\n .material-icons.clean_hands:before {\n content: \"\\f21f\"; }\n .material-icons.cleaning_services:before {\n content: \"\\f0ff\"; }\n .material-icons.clear:before {\n content: \"\\e14c\"; }\n .material-icons.clear_all:before {\n content: \"\\e0b8\"; }\n .material-icons.close:before {\n content: \"\\e5cd\"; }\n .material-icons.close_fullscreen:before {\n content: \"\\f1cf\"; }\n .material-icons.closed_caption:before {\n content: \"\\e01c\"; }\n .material-icons.closed_caption_disabled:before {\n content: \"\\f1dc\"; }\n .material-icons.closed_caption_off:before {\n content: \"\\e996\"; }\n .material-icons.cloud:before {\n content: \"\\e2bd\"; }\n .material-icons.cloud_circle:before {\n content: \"\\e2be\"; }\n .material-icons.cloud_done:before {\n content: \"\\e2bf\"; }\n .material-icons.cloud_download:before {\n content: \"\\e2c0\"; }\n .material-icons.cloud_off:before {\n content: \"\\e2c1\"; }\n .material-icons.cloud_queue:before {\n content: \"\\e2c2\"; }\n .material-icons.cloud_sync:before {\n content: \"\\eb5a\"; }\n .material-icons.cloud_upload:before {\n content: \"\\e2c3\"; }\n .material-icons.cloudy_snowing:before {\n content: \"\\e810\"; }\n .material-icons.co2:before {\n content: \"\\e7b0\"; }\n .material-icons.co_present:before {\n content: \"\\eaf0\"; }\n .material-icons.code:before {\n content: \"\\e86f\"; }\n .material-icons.code_off:before {\n content: \"\\e4f3\"; }\n .material-icons.coffee:before {\n content: \"\\efef\"; }\n .material-icons.coffee_maker:before {\n content: \"\\eff0\"; }\n .material-icons.collections:before {\n content: \"\\e3b6\"; }\n .material-icons.collections_bookmark:before {\n content: \"\\e431\"; }\n .material-icons.color_lens:before {\n content: \"\\e3b7\"; }\n .material-icons.colorize:before {\n content: \"\\e3b8\"; }\n .material-icons.comment:before {\n content: \"\\e0b9\"; }\n .material-icons.comment_bank:before {\n content: \"\\ea4e\"; }\n .material-icons.comments_disabled:before {\n content: \"\\e7a2\"; }\n .material-icons.commit:before {\n content: \"\\eaf5\"; }\n .material-icons.commute:before {\n content: \"\\e940\"; }\n .material-icons.compare:before {\n content: \"\\e3b9\"; }\n .material-icons.compare_arrows:before {\n content: \"\\e915\"; }\n .material-icons.compass_calibration:before {\n content: \"\\e57c\"; }\n .material-icons.compost:before {\n content: \"\\e761\"; }\n .material-icons.compress:before {\n content: \"\\e94d\"; }\n .material-icons.computer:before {\n content: \"\\e30a\"; }\n .material-icons.confirmation_num:before {\n content: \"\\e638\"; }\n .material-icons.confirmation_number:before {\n content: \"\\e638\"; }\n .material-icons.connect_without_contact:before {\n content: \"\\f223\"; }\n .material-icons.connected_tv:before {\n content: \"\\e998\"; }\n .material-icons.connecting_airports:before {\n content: \"\\e7c9\"; }\n .material-icons.construction:before {\n content: \"\\ea3c\"; }\n .material-icons.contact_mail:before {\n content: \"\\e0d0\"; }\n .material-icons.contact_page:before {\n content: \"\\f22e\"; }\n .material-icons.contact_phone:before {\n content: \"\\e0cf\"; }\n .material-icons.contact_support:before {\n content: \"\\e94c\"; }\n .material-icons.contactless:before {\n content: \"\\ea71\"; }\n .material-icons.contacts:before {\n content: \"\\e0ba\"; }\n .material-icons.content_copy:before {\n content: \"\\e14d\"; }\n .material-icons.content_cut:before {\n content: \"\\e14e\"; }\n .material-icons.content_paste:before {\n content: \"\\e14f\"; }\n .material-icons.content_paste_go:before {\n content: \"\\ea8e\"; }\n .material-icons.content_paste_off:before {\n content: \"\\e4f8\"; }\n .material-icons.content_paste_search:before {\n content: \"\\ea9b\"; }\n .material-icons.contrast:before {\n content: \"\\eb37\"; }\n .material-icons.control_camera:before {\n content: \"\\e074\"; }\n .material-icons.control_point:before {\n content: \"\\e3ba\"; }\n .material-icons.control_point_duplicate:before {\n content: \"\\e3bb\"; }\n .material-icons.cookie:before {\n content: \"\\eaac\"; }\n .material-icons.copy_all:before {\n content: \"\\e2ec\"; }\n .material-icons.copyright:before {\n content: \"\\e90c\"; }\n .material-icons.coronavirus:before {\n content: \"\\f221\"; }\n .material-icons.corporate_fare:before {\n content: \"\\f1d0\"; }\n .material-icons.cottage:before {\n content: \"\\e587\"; }\n .material-icons.countertops:before {\n content: \"\\f1f7\"; }\n .material-icons.create:before {\n content: \"\\e150\"; }\n .material-icons.create_new_folder:before {\n content: \"\\e2cc\"; }\n .material-icons.credit_card:before {\n content: \"\\e870\"; }\n .material-icons.credit_card_off:before {\n content: \"\\e4f4\"; }\n .material-icons.credit_score:before {\n content: \"\\eff1\"; }\n .material-icons.crib:before {\n content: \"\\e588\"; }\n .material-icons.crisis_alert:before {\n content: \"\\ebe9\"; }\n .material-icons.crop:before {\n content: \"\\e3be\"; }\n .material-icons.crop_16_9:before {\n content: \"\\e3bc\"; }\n .material-icons.crop_3_2:before {\n content: \"\\e3bd\"; }\n .material-icons.crop_5_4:before {\n content: \"\\e3bf\"; }\n .material-icons.crop_7_5:before {\n content: \"\\e3c0\"; }\n .material-icons.crop_din:before {\n content: \"\\e3c1\"; }\n .material-icons.crop_free:before {\n content: \"\\e3c2\"; }\n .material-icons.crop_landscape:before {\n content: \"\\e3c3\"; }\n .material-icons.crop_original:before {\n content: \"\\e3c4\"; }\n .material-icons.crop_portrait:before {\n content: \"\\e3c5\"; }\n .material-icons.crop_rotate:before {\n content: \"\\e437\"; }\n .material-icons.crop_square:before {\n content: \"\\e3c6\"; }\n .material-icons.cruelty_free:before {\n content: \"\\e799\"; }\n .material-icons.css:before {\n content: \"\\eb93\"; }\n .material-icons.currency_bitcoin:before {\n content: \"\\ebc5\"; }\n .material-icons.currency_exchange:before {\n content: \"\\eb70\"; }\n .material-icons.currency_franc:before {\n content: \"\\eafa\"; }\n .material-icons.currency_lira:before {\n content: \"\\eaef\"; }\n .material-icons.currency_pound:before {\n content: \"\\eaf1\"; }\n .material-icons.currency_ruble:before {\n content: \"\\eaec\"; }\n .material-icons.currency_rupee:before {\n content: \"\\eaf7\"; }\n .material-icons.currency_yen:before {\n content: \"\\eafb\"; }\n .material-icons.currency_yuan:before {\n content: \"\\eaf9\"; }\n .material-icons.curtains:before {\n content: \"\\ec1e\"; }\n .material-icons.curtains_closed:before {\n content: \"\\ec1d\"; }\n .material-icons.cyclone:before {\n content: \"\\ebd5\"; }\n .material-icons.dangerous:before {\n content: \"\\e99a\"; }\n .material-icons.dark_mode:before {\n content: \"\\e51c\"; }\n .material-icons.dashboard:before {\n content: \"\\e871\"; }\n .material-icons.dashboard_customize:before {\n content: \"\\e99b\"; }\n .material-icons.data_array:before {\n content: \"\\ead1\"; }\n .material-icons.data_exploration:before {\n content: \"\\e76f\"; }\n .material-icons.data_object:before {\n content: \"\\ead3\"; }\n .material-icons.data_saver_off:before {\n content: \"\\eff2\"; }\n .material-icons.data_saver_on:before {\n content: \"\\eff3\"; }\n .material-icons.data_thresholding:before {\n content: \"\\eb9f\"; }\n .material-icons.data_usage:before {\n content: \"\\e1af\"; }\n .material-icons.dataset:before {\n content: \"\\f8ee\"; }\n .material-icons.dataset_linked:before {\n content: \"\\f8ef\"; }\n .material-icons.date_range:before {\n content: \"\\e916\"; }\n .material-icons.deblur:before {\n content: \"\\eb77\"; }\n .material-icons.deck:before {\n content: \"\\ea42\"; }\n .material-icons.dehaze:before {\n content: \"\\e3c7\"; }\n .material-icons.delete:before {\n content: \"\\e872\"; }\n .material-icons.delete_forever:before {\n content: \"\\e92b\"; }\n .material-icons.delete_outline:before {\n content: \"\\e92e\"; }\n .material-icons.delete_sweep:before {\n content: \"\\e16c\"; }\n .material-icons.delivery_dining:before {\n content: \"\\ea72\"; }\n .material-icons.density_large:before {\n content: \"\\eba9\"; }\n .material-icons.density_medium:before {\n content: \"\\eb9e\"; }\n .material-icons.density_small:before {\n content: \"\\eba8\"; }\n .material-icons.departure_board:before {\n content: \"\\e576\"; }\n .material-icons.description:before {\n content: \"\\e873\"; }\n .material-icons.deselect:before {\n content: \"\\ebb6\"; }\n .material-icons.design_services:before {\n content: \"\\f10a\"; }\n .material-icons.desk:before {\n content: \"\\f8f4\"; }\n .material-icons.desktop_access_disabled:before {\n content: \"\\e99d\"; }\n .material-icons.desktop_mac:before {\n content: \"\\e30b\"; }\n .material-icons.desktop_windows:before {\n content: \"\\e30c\"; }\n .material-icons.details:before {\n content: \"\\e3c8\"; }\n .material-icons.developer_board:before {\n content: \"\\e30d\"; }\n .material-icons.developer_board_off:before {\n content: \"\\e4ff\"; }\n .material-icons.developer_mode:before {\n content: \"\\e1b0\"; }\n .material-icons.device_hub:before {\n content: \"\\e335\"; }\n .material-icons.device_thermostat:before {\n content: \"\\e1ff\"; }\n .material-icons.device_unknown:before {\n content: \"\\e339\"; }\n .material-icons.devices:before {\n content: \"\\e1b1\"; }\n .material-icons.devices_fold:before {\n content: \"\\ebde\"; }\n .material-icons.devices_other:before {\n content: \"\\e337\"; }\n .material-icons.dialer_sip:before {\n content: \"\\e0bb\"; }\n .material-icons.dialpad:before {\n content: \"\\e0bc\"; }\n .material-icons.diamond:before {\n content: \"\\ead5\"; }\n .material-icons.difference:before {\n content: \"\\eb7d\"; }\n .material-icons.dining:before {\n content: \"\\eff4\"; }\n .material-icons.dinner_dining:before {\n content: \"\\ea57\"; }\n .material-icons.directions:before {\n content: \"\\e52e\"; }\n .material-icons.directions_bike:before {\n content: \"\\e52f\"; }\n .material-icons.directions_boat:before {\n content: \"\\e532\"; }\n .material-icons.directions_boat_filled:before {\n content: \"\\eff5\"; }\n .material-icons.directions_bus:before {\n content: \"\\e530\"; }\n .material-icons.directions_bus_filled:before {\n content: \"\\eff6\"; }\n .material-icons.directions_car:before {\n content: \"\\e531\"; }\n .material-icons.directions_car_filled:before {\n content: \"\\eff7\"; }\n .material-icons.directions_ferry:before {\n content: \"\\e532\"; }\n .material-icons.directions_off:before {\n content: \"\\f10f\"; }\n .material-icons.directions_railway:before {\n content: \"\\e534\"; }\n .material-icons.directions_railway_filled:before {\n content: \"\\eff8\"; }\n .material-icons.directions_run:before {\n content: \"\\e566\"; }\n .material-icons.directions_subway:before {\n content: \"\\e533\"; }\n .material-icons.directions_subway_filled:before {\n content: \"\\eff9\"; }\n .material-icons.directions_train:before {\n content: \"\\e534\"; }\n .material-icons.directions_transit:before {\n content: \"\\e535\"; }\n .material-icons.directions_transit_filled:before {\n content: \"\\effa\"; }\n .material-icons.directions_walk:before {\n content: \"\\e536\"; }\n .material-icons.dirty_lens:before {\n content: \"\\ef4b\"; }\n .material-icons.disabled_by_default:before {\n content: \"\\f230\"; }\n .material-icons.disabled_visible:before {\n content: \"\\e76e\"; }\n .material-icons.disc_full:before {\n content: \"\\e610\"; }\n .material-icons.discord:before {\n content: \"\\ea6c\"; }\n .material-icons.discount:before {\n content: \"\\ebc9\"; }\n .material-icons.display_settings:before {\n content: \"\\eb97\"; }\n .material-icons.dnd_forwardslash:before {\n content: \"\\e611\"; }\n .material-icons.dns:before {\n content: \"\\e875\"; }\n .material-icons.do_disturb:before {\n content: \"\\f08c\"; }\n .material-icons.do_disturb_alt:before {\n content: \"\\f08d\"; }\n .material-icons.do_disturb_off:before {\n content: \"\\f08e\"; }\n .material-icons.do_disturb_on:before {\n content: \"\\f08f\"; }\n .material-icons.do_not_disturb:before {\n content: \"\\e612\"; }\n .material-icons.do_not_disturb_alt:before {\n content: \"\\e611\"; }\n .material-icons.do_not_disturb_off:before {\n content: \"\\e643\"; }\n .material-icons.do_not_disturb_on:before {\n content: \"\\e644\"; }\n .material-icons.do_not_disturb_on_total_silence:before {\n content: \"\\effb\"; }\n .material-icons.do_not_step:before {\n content: \"\\f19f\"; }\n .material-icons.do_not_touch:before {\n content: \"\\f1b0\"; }\n .material-icons.dock:before {\n content: \"\\e30e\"; }\n .material-icons.document_scanner:before {\n content: \"\\e5fa\"; }\n .material-icons.domain:before {\n content: \"\\e7ee\"; }\n .material-icons.domain_add:before {\n content: \"\\eb62\"; }\n .material-icons.domain_disabled:before {\n content: \"\\e0ef\"; }\n .material-icons.domain_verification:before {\n content: \"\\ef4c\"; }\n .material-icons.done:before {\n content: \"\\e876\"; }\n .material-icons.done_all:before {\n content: \"\\e877\"; }\n .material-icons.done_outline:before {\n content: \"\\e92f\"; }\n .material-icons.donut_large:before {\n content: \"\\e917\"; }\n .material-icons.donut_small:before {\n content: \"\\e918\"; }\n .material-icons.door_back:before {\n content: \"\\effc\"; }\n .material-icons.door_front:before {\n content: \"\\effd\"; }\n .material-icons.door_sliding:before {\n content: \"\\effe\"; }\n .material-icons.doorbell:before {\n content: \"\\efff\"; }\n .material-icons.double_arrow:before {\n content: \"\\ea50\"; }\n .material-icons.downhill_skiing:before {\n content: \"\\e509\"; }\n .material-icons.download:before {\n content: \"\\f090\"; }\n .material-icons.download_done:before {\n content: \"\\f091\"; }\n .material-icons.download_for_offline:before {\n content: \"\\f000\"; }\n .material-icons.downloading:before {\n content: \"\\f001\"; }\n .material-icons.drafts:before {\n content: \"\\e151\"; }\n .material-icons.drag_handle:before {\n content: \"\\e25d\"; }\n .material-icons.drag_indicator:before {\n content: \"\\e945\"; }\n .material-icons.draw:before {\n content: \"\\e746\"; }\n .material-icons.drive_eta:before {\n content: \"\\e613\"; }\n .material-icons.drive_file_move:before {\n content: \"\\e675\"; }\n .material-icons.drive_file_move_outline:before {\n content: \"\\e9a1\"; }\n .material-icons.drive_file_move_rtl:before {\n content: \"\\e76d\"; }\n .material-icons.drive_file_rename_outline:before {\n content: \"\\e9a2\"; }\n .material-icons.drive_folder_upload:before {\n content: \"\\e9a3\"; }\n .material-icons.dry:before {\n content: \"\\f1b3\"; }\n .material-icons.dry_cleaning:before {\n content: \"\\ea58\"; }\n .material-icons.duo:before {\n content: \"\\e9a5\"; }\n .material-icons.dvr:before {\n content: \"\\e1b2\"; }\n .material-icons.dynamic_feed:before {\n content: \"\\ea14\"; }\n .material-icons.dynamic_form:before {\n content: \"\\f1bf\"; }\n .material-icons.e_mobiledata:before {\n content: \"\\f002\"; }\n .material-icons.earbuds:before {\n content: \"\\f003\"; }\n .material-icons.earbuds_battery:before {\n content: \"\\f004\"; }\n .material-icons.east:before {\n content: \"\\f1df\"; }\n .material-icons.eco:before {\n content: \"\\ea35\"; }\n .material-icons.edgesensor_high:before {\n content: \"\\f005\"; }\n .material-icons.edgesensor_low:before {\n content: \"\\f006\"; }\n .material-icons.edit:before {\n content: \"\\e3c9\"; }\n .material-icons.edit_attributes:before {\n content: \"\\e578\"; }\n .material-icons.edit_calendar:before {\n content: \"\\e742\"; }\n .material-icons.edit_location:before {\n content: \"\\e568\"; }\n .material-icons.edit_location_alt:before {\n content: \"\\e1c5\"; }\n .material-icons.edit_note:before {\n content: \"\\e745\"; }\n .material-icons.edit_notifications:before {\n content: \"\\e525\"; }\n .material-icons.edit_off:before {\n content: \"\\e950\"; }\n .material-icons.edit_road:before {\n content: \"\\ef4d\"; }\n .material-icons.egg:before {\n content: \"\\eacc\"; }\n .material-icons.egg_alt:before {\n content: \"\\eac8\"; }\n .material-icons.eject:before {\n content: \"\\e8fb\"; }\n .material-icons.elderly:before {\n content: \"\\f21a\"; }\n .material-icons.elderly_woman:before {\n content: \"\\eb69\"; }\n .material-icons.electric_bike:before {\n content: \"\\eb1b\"; }\n .material-icons.electric_bolt:before {\n content: \"\\ec1c\"; }\n .material-icons.electric_car:before {\n content: \"\\eb1c\"; }\n .material-icons.electric_meter:before {\n content: \"\\ec1b\"; }\n .material-icons.electric_moped:before {\n content: \"\\eb1d\"; }\n .material-icons.electric_rickshaw:before {\n content: \"\\eb1e\"; }\n .material-icons.electric_scooter:before {\n content: \"\\eb1f\"; }\n .material-icons.electrical_services:before {\n content: \"\\f102\"; }\n .material-icons.elevator:before {\n content: \"\\f1a0\"; }\n .material-icons.email:before {\n content: \"\\e0be\"; }\n .material-icons.emergency:before {\n content: \"\\e1eb\"; }\n .material-icons.emergency_recording:before {\n content: \"\\ebf4\"; }\n .material-icons.emergency_share:before {\n content: \"\\ebf6\"; }\n .material-icons.emoji_emotions:before {\n content: \"\\ea22\"; }\n .material-icons.emoji_events:before {\n content: \"\\ea23\"; }\n .material-icons.emoji_flags:before {\n content: \"\\ea1a\"; }\n .material-icons.emoji_food_beverage:before {\n content: \"\\ea1b\"; }\n .material-icons.emoji_nature:before {\n content: \"\\ea1c\"; }\n .material-icons.emoji_objects:before {\n content: \"\\ea24\"; }\n .material-icons.emoji_people:before {\n content: \"\\ea1d\"; }\n .material-icons.emoji_symbols:before {\n content: \"\\ea1e\"; }\n .material-icons.emoji_transportation:before {\n content: \"\\ea1f\"; }\n .material-icons.energy_savings_leaf:before {\n content: \"\\ec1a\"; }\n .material-icons.engineering:before {\n content: \"\\ea3d\"; }\n .material-icons.enhance_photo_translate:before {\n content: \"\\e8fc\"; }\n .material-icons.enhanced_encryption:before {\n content: \"\\e63f\"; }\n .material-icons.equalizer:before {\n content: \"\\e01d\"; }\n .material-icons.error:before {\n content: \"\\e000\"; }\n .material-icons.error_outline:before {\n content: \"\\e001\"; }\n .material-icons.escalator:before {\n content: \"\\f1a1\"; }\n .material-icons.escalator_warning:before {\n content: \"\\f1ac\"; }\n .material-icons.euro:before {\n content: \"\\ea15\"; }\n .material-icons.euro_symbol:before {\n content: \"\\e926\"; }\n .material-icons.ev_station:before {\n content: \"\\e56d\"; }\n .material-icons.event:before {\n content: \"\\e878\"; }\n .material-icons.event_available:before {\n content: \"\\e614\"; }\n .material-icons.event_busy:before {\n content: \"\\e615\"; }\n .material-icons.event_note:before {\n content: \"\\e616\"; }\n .material-icons.event_repeat:before {\n content: \"\\eb7b\"; }\n .material-icons.event_seat:before {\n content: \"\\e903\"; }\n .material-icons.exit_to_app:before {\n content: \"\\e879\"; }\n .material-icons.expand:before {\n content: \"\\e94f\"; }\n .material-icons.expand_circle_down:before {\n content: \"\\e7cd\"; }\n .material-icons.expand_less:before {\n content: \"\\e5ce\"; }\n .material-icons.expand_more:before {\n content: \"\\e5cf\"; }\n .material-icons.explicit:before {\n content: \"\\e01e\"; }\n .material-icons.explore:before {\n content: \"\\e87a\"; }\n .material-icons.explore_off:before {\n content: \"\\e9a8\"; }\n .material-icons.exposure:before {\n content: \"\\e3ca\"; }\n .material-icons.exposure_minus_1:before {\n content: \"\\e3cb\"; }\n .material-icons.exposure_minus_2:before {\n content: \"\\e3cc\"; }\n .material-icons.exposure_neg_1:before {\n content: \"\\e3cb\"; }\n .material-icons.exposure_neg_2:before {\n content: \"\\e3cc\"; }\n .material-icons.exposure_plus_1:before {\n content: \"\\e3cd\"; }\n .material-icons.exposure_plus_2:before {\n content: \"\\e3ce\"; }\n .material-icons.exposure_zero:before {\n content: \"\\e3cf\"; }\n .material-icons.extension:before {\n content: \"\\e87b\"; }\n .material-icons.extension_off:before {\n content: \"\\e4f5\"; }\n .material-icons.face:before {\n content: \"\\e87c\"; }\n .material-icons.face_retouching_natural:before {\n content: \"\\ef4e\"; }\n .material-icons.face_retouching_off:before {\n content: \"\\f007\"; }\n .material-icons.facebook:before {\n content: \"\\f234\"; }\n .material-icons.fact_check:before {\n content: \"\\f0c5\"; }\n .material-icons.factory:before {\n content: \"\\ebbc\"; }\n .material-icons.family_restroom:before {\n content: \"\\f1a2\"; }\n .material-icons.fast_forward:before {\n content: \"\\e01f\"; }\n .material-icons.fast_rewind:before {\n content: \"\\e020\"; }\n .material-icons.fastfood:before {\n content: \"\\e57a\"; }\n .material-icons.favorite:before {\n content: \"\\e87d\"; }\n .material-icons.favorite_border:before {\n content: \"\\e87e\"; }\n .material-icons.favorite_outline:before {\n content: \"\\e87e\"; }\n .material-icons.fax:before {\n content: \"\\ead8\"; }\n .material-icons.featured_play_list:before {\n content: \"\\e06d\"; }\n .material-icons.featured_video:before {\n content: \"\\e06e\"; }\n .material-icons.feed:before {\n content: \"\\f009\"; }\n .material-icons.feedback:before {\n content: \"\\e87f\"; }\n .material-icons.female:before {\n content: \"\\e590\"; }\n .material-icons.fence:before {\n content: \"\\f1f6\"; }\n .material-icons.festival:before {\n content: \"\\ea68\"; }\n .material-icons.fiber_dvr:before {\n content: \"\\e05d\"; }\n .material-icons.fiber_manual_record:before {\n content: \"\\e061\"; }\n .material-icons.fiber_new:before {\n content: \"\\e05e\"; }\n .material-icons.fiber_pin:before {\n content: \"\\e06a\"; }\n .material-icons.fiber_smart_record:before {\n content: \"\\e062\"; }\n .material-icons.file_copy:before {\n content: \"\\e173\"; }\n .material-icons.file_download:before {\n content: \"\\e2c4\"; }\n .material-icons.file_download_done:before {\n content: \"\\e9aa\"; }\n .material-icons.file_download_off:before {\n content: \"\\e4fe\"; }\n .material-icons.file_open:before {\n content: \"\\eaf3\"; }\n .material-icons.file_present:before {\n content: \"\\ea0e\"; }\n .material-icons.file_upload:before {\n content: \"\\e2c6\"; }\n .material-icons.filter:before {\n content: \"\\e3d3\"; }\n .material-icons.filter_1:before {\n content: \"\\e3d0\"; }\n .material-icons.filter_2:before {\n content: \"\\e3d1\"; }\n .material-icons.filter_3:before {\n content: \"\\e3d2\"; }\n .material-icons.filter_4:before {\n content: \"\\e3d4\"; }\n .material-icons.filter_5:before {\n content: \"\\e3d5\"; }\n .material-icons.filter_6:before {\n content: \"\\e3d6\"; }\n .material-icons.filter_7:before {\n content: \"\\e3d7\"; }\n .material-icons.filter_8:before {\n content: \"\\e3d8\"; }\n .material-icons.filter_9:before {\n content: \"\\e3d9\"; }\n .material-icons.filter_9_plus:before {\n content: \"\\e3da\"; }\n .material-icons.filter_alt:before {\n content: \"\\ef4f\"; }\n .material-icons.filter_alt_off:before {\n content: \"\\eb32\"; }\n .material-icons.filter_b_and_w:before {\n content: \"\\e3db\"; }\n .material-icons.filter_center_focus:before {\n content: \"\\e3dc\"; }\n .material-icons.filter_drama:before {\n content: \"\\e3dd\"; }\n .material-icons.filter_frames:before {\n content: \"\\e3de\"; }\n .material-icons.filter_hdr:before {\n content: \"\\e3df\"; }\n .material-icons.filter_list:before {\n content: \"\\e152\"; }\n .material-icons.filter_list_alt:before {\n content: \"\\e94e\"; }\n .material-icons.filter_list_off:before {\n content: \"\\eb57\"; }\n .material-icons.filter_none:before {\n content: \"\\e3e0\"; }\n .material-icons.filter_tilt_shift:before {\n content: \"\\e3e2\"; }\n .material-icons.filter_vintage:before {\n content: \"\\e3e3\"; }\n .material-icons.find_in_page:before {\n content: \"\\e880\"; }\n .material-icons.find_replace:before {\n content: \"\\e881\"; }\n .material-icons.fingerprint:before {\n content: \"\\e90d\"; }\n .material-icons.fire_extinguisher:before {\n content: \"\\f1d8\"; }\n .material-icons.fire_hydrant:before {\n content: \"\\f1a3\"; }\n .material-icons.fire_hydrant_alt:before {\n content: \"\\f8f1\"; }\n .material-icons.fire_truck:before {\n content: \"\\f8f2\"; }\n .material-icons.fireplace:before {\n content: \"\\ea43\"; }\n .material-icons.first_page:before {\n content: \"\\e5dc\"; }\n .material-icons.fit_screen:before {\n content: \"\\ea10\"; }\n .material-icons.fitbit:before {\n content: \"\\e82b\"; }\n .material-icons.fitness_center:before {\n content: \"\\eb43\"; }\n .material-icons.flag:before {\n content: \"\\e153\"; }\n .material-icons.flag_circle:before {\n content: \"\\eaf8\"; }\n .material-icons.flaky:before {\n content: \"\\ef50\"; }\n .material-icons.flare:before {\n content: \"\\e3e4\"; }\n .material-icons.flash_auto:before {\n content: \"\\e3e5\"; }\n .material-icons.flash_off:before {\n content: \"\\e3e6\"; }\n .material-icons.flash_on:before {\n content: \"\\e3e7\"; }\n .material-icons.flashlight_off:before {\n content: \"\\f00a\"; }\n .material-icons.flashlight_on:before {\n content: \"\\f00b\"; }\n .material-icons.flatware:before {\n content: \"\\f00c\"; }\n .material-icons.flight:before {\n content: \"\\e539\"; }\n .material-icons.flight_class:before {\n content: \"\\e7cb\"; }\n .material-icons.flight_land:before {\n content: \"\\e904\"; }\n .material-icons.flight_takeoff:before {\n content: \"\\e905\"; }\n .material-icons.flip:before {\n content: \"\\e3e8\"; }\n .material-icons.flip_camera_android:before {\n content: \"\\ea37\"; }\n .material-icons.flip_camera_ios:before {\n content: \"\\ea38\"; }\n .material-icons.flip_to_back:before {\n content: \"\\e882\"; }\n .material-icons.flip_to_front:before {\n content: \"\\e883\"; }\n .material-icons.flood:before {\n content: \"\\ebe6\"; }\n .material-icons.flourescent:before {\n content: \"\\f00d\"; }\n .material-icons.flutter_dash:before {\n content: \"\\e00b\"; }\n .material-icons.fmd_bad:before {\n content: \"\\f00e\"; }\n .material-icons.fmd_good:before {\n content: \"\\f00f\"; }\n .material-icons.foggy:before {\n content: \"\\e818\"; }\n .material-icons.folder:before {\n content: \"\\e2c7\"; }\n .material-icons.folder_copy:before {\n content: \"\\ebbd\"; }\n .material-icons.folder_delete:before {\n content: \"\\eb34\"; }\n .material-icons.folder_off:before {\n content: \"\\eb83\"; }\n .material-icons.folder_open:before {\n content: \"\\e2c8\"; }\n .material-icons.folder_shared:before {\n content: \"\\e2c9\"; }\n .material-icons.folder_special:before {\n content: \"\\e617\"; }\n .material-icons.folder_zip:before {\n content: \"\\eb2c\"; }\n .material-icons.follow_the_signs:before {\n content: \"\\f222\"; }\n .material-icons.font_download:before {\n content: \"\\e167\"; }\n .material-icons.font_download_off:before {\n content: \"\\e4f9\"; }\n .material-icons.food_bank:before {\n content: \"\\f1f2\"; }\n .material-icons.forest:before {\n content: \"\\ea99\"; }\n .material-icons.fork_left:before {\n content: \"\\eba0\"; }\n .material-icons.fork_right:before {\n content: \"\\ebac\"; }\n .material-icons.format_align_center:before {\n content: \"\\e234\"; }\n .material-icons.format_align_justify:before {\n content: \"\\e235\"; }\n .material-icons.format_align_left:before {\n content: \"\\e236\"; }\n .material-icons.format_align_right:before {\n content: \"\\e237\"; }\n .material-icons.format_bold:before {\n content: \"\\e238\"; }\n .material-icons.format_clear:before {\n content: \"\\e239\"; }\n .material-icons.format_color_fill:before {\n content: \"\\e23a\"; }\n .material-icons.format_color_reset:before {\n content: \"\\e23b\"; }\n .material-icons.format_color_text:before {\n content: \"\\e23c\"; }\n .material-icons.format_indent_decrease:before {\n content: \"\\e23d\"; }\n .material-icons.format_indent_increase:before {\n content: \"\\e23e\"; }\n .material-icons.format_italic:before {\n content: \"\\e23f\"; }\n .material-icons.format_line_spacing:before {\n content: \"\\e240\"; }\n .material-icons.format_list_bulleted:before {\n content: \"\\e241\"; }\n .material-icons.format_list_numbered:before {\n content: \"\\e242\"; }\n .material-icons.format_list_numbered_rtl:before {\n content: \"\\e267\"; }\n .material-icons.format_overline:before {\n content: \"\\eb65\"; }\n .material-icons.format_paint:before {\n content: \"\\e243\"; }\n .material-icons.format_quote:before {\n content: \"\\e244\"; }\n .material-icons.format_shapes:before {\n content: \"\\e25e\"; }\n .material-icons.format_size:before {\n content: \"\\e245\"; }\n .material-icons.format_strikethrough:before {\n content: \"\\e246\"; }\n .material-icons.format_textdirection_l_to_r:before {\n content: \"\\e247\"; }\n .material-icons.format_textdirection_r_to_l:before {\n content: \"\\e248\"; }\n .material-icons.format_underline:before {\n content: \"\\e249\"; }\n .material-icons.format_underlined:before {\n content: \"\\e249\"; }\n .material-icons.fort:before {\n content: \"\\eaad\"; }\n .material-icons.forum:before {\n content: \"\\e0bf\"; }\n .material-icons.forward:before {\n content: \"\\e154\"; }\n .material-icons.forward_10:before {\n content: \"\\e056\"; }\n .material-icons.forward_30:before {\n content: \"\\e057\"; }\n .material-icons.forward_5:before {\n content: \"\\e058\"; }\n .material-icons.forward_to_inbox:before {\n content: \"\\f187\"; }\n .material-icons.foundation:before {\n content: \"\\f200\"; }\n .material-icons.free_breakfast:before {\n content: \"\\eb44\"; }\n .material-icons.free_cancellation:before {\n content: \"\\e748\"; }\n .material-icons.front_hand:before {\n content: \"\\e769\"; }\n .material-icons.fullscreen:before {\n content: \"\\e5d0\"; }\n .material-icons.fullscreen_exit:before {\n content: \"\\e5d1\"; }\n .material-icons.functions:before {\n content: \"\\e24a\"; }\n .material-icons.g_mobiledata:before {\n content: \"\\f010\"; }\n .material-icons.g_translate:before {\n content: \"\\e927\"; }\n .material-icons.gamepad:before {\n content: \"\\e30f\"; }\n .material-icons.games:before {\n content: \"\\e021\"; }\n .material-icons.garage:before {\n content: \"\\f011\"; }\n .material-icons.gas_meter:before {\n content: \"\\ec19\"; }\n .material-icons.gavel:before {\n content: \"\\e90e\"; }\n .material-icons.generating_tokens:before {\n content: \"\\e749\"; }\n .material-icons.gesture:before {\n content: \"\\e155\"; }\n .material-icons.get_app:before {\n content: \"\\e884\"; }\n .material-icons.gif:before {\n content: \"\\e908\"; }\n .material-icons.gif_box:before {\n content: \"\\e7a3\"; }\n .material-icons.girl:before {\n content: \"\\eb68\"; }\n .material-icons.gite:before {\n content: \"\\e58b\"; }\n .material-icons.goat:before {\n content: \"\\ebff\"; }\n .material-icons.golf_course:before {\n content: \"\\eb45\"; }\n .material-icons.gpp_bad:before {\n content: \"\\f012\"; }\n .material-icons.gpp_good:before {\n content: \"\\f013\"; }\n .material-icons.gpp_maybe:before {\n content: \"\\f014\"; }\n .material-icons.gps_fixed:before {\n content: \"\\e1b3\"; }\n .material-icons.gps_not_fixed:before {\n content: \"\\e1b4\"; }\n .material-icons.gps_off:before {\n content: \"\\e1b5\"; }\n .material-icons.grade:before {\n content: \"\\e885\"; }\n .material-icons.gradient:before {\n content: \"\\e3e9\"; }\n .material-icons.grading:before {\n content: \"\\ea4f\"; }\n .material-icons.grain:before {\n content: \"\\e3ea\"; }\n .material-icons.graphic_eq:before {\n content: \"\\e1b8\"; }\n .material-icons.grass:before {\n content: \"\\f205\"; }\n .material-icons.grid_3x3:before {\n content: \"\\f015\"; }\n .material-icons.grid_4x4:before {\n content: \"\\f016\"; }\n .material-icons.grid_goldenratio:before {\n content: \"\\f017\"; }\n .material-icons.grid_off:before {\n content: \"\\e3eb\"; }\n .material-icons.grid_on:before {\n content: \"\\e3ec\"; }\n .material-icons.grid_view:before {\n content: \"\\e9b0\"; }\n .material-icons.group:before {\n content: \"\\e7ef\"; }\n .material-icons.group_add:before {\n content: \"\\e7f0\"; }\n .material-icons.group_off:before {\n content: \"\\e747\"; }\n .material-icons.group_remove:before {\n content: \"\\e7ad\"; }\n .material-icons.group_work:before {\n content: \"\\e886\"; }\n .material-icons.groups:before {\n content: \"\\f233\"; }\n .material-icons.h_mobiledata:before {\n content: \"\\f018\"; }\n .material-icons.h_plus_mobiledata:before {\n content: \"\\f019\"; }\n .material-icons.hail:before {\n content: \"\\e9b1\"; }\n .material-icons.handshake:before {\n content: \"\\ebcb\"; }\n .material-icons.handyman:before {\n content: \"\\f10b\"; }\n .material-icons.hardware:before {\n content: \"\\ea59\"; }\n .material-icons.hd:before {\n content: \"\\e052\"; }\n .material-icons.hdr_auto:before {\n content: \"\\f01a\"; }\n .material-icons.hdr_auto_select:before {\n content: \"\\f01b\"; }\n .material-icons.hdr_enhanced_select:before {\n content: \"\\ef51\"; }\n .material-icons.hdr_off:before {\n content: \"\\e3ed\"; }\n .material-icons.hdr_off_select:before {\n content: \"\\f01c\"; }\n .material-icons.hdr_on:before {\n content: \"\\e3ee\"; }\n .material-icons.hdr_on_select:before {\n content: \"\\f01d\"; }\n .material-icons.hdr_plus:before {\n content: \"\\f01e\"; }\n .material-icons.hdr_strong:before {\n content: \"\\e3f1\"; }\n .material-icons.hdr_weak:before {\n content: \"\\e3f2\"; }\n .material-icons.headphones:before {\n content: \"\\f01f\"; }\n .material-icons.headphones_battery:before {\n content: \"\\f020\"; }\n .material-icons.headset:before {\n content: \"\\e310\"; }\n .material-icons.headset_mic:before {\n content: \"\\e311\"; }\n .material-icons.headset_off:before {\n content: \"\\e33a\"; }\n .material-icons.healing:before {\n content: \"\\e3f3\"; }\n .material-icons.health_and_safety:before {\n content: \"\\e1d5\"; }\n .material-icons.hearing:before {\n content: \"\\e023\"; }\n .material-icons.hearing_disabled:before {\n content: \"\\f104\"; }\n .material-icons.heart_broken:before {\n content: \"\\eac2\"; }\n .material-icons.heat_pump:before {\n content: \"\\ec18\"; }\n .material-icons.height:before {\n content: \"\\ea16\"; }\n .material-icons.help:before {\n content: \"\\e887\"; }\n .material-icons.help_center:before {\n content: \"\\f1c0\"; }\n .material-icons.help_outline:before {\n content: \"\\e8fd\"; }\n .material-icons.hevc:before {\n content: \"\\f021\"; }\n .material-icons.hexagon:before {\n content: \"\\eb39\"; }\n .material-icons.hide_image:before {\n content: \"\\f022\"; }\n .material-icons.hide_source:before {\n content: \"\\f023\"; }\n .material-icons.high_quality:before {\n content: \"\\e024\"; }\n .material-icons.highlight:before {\n content: \"\\e25f\"; }\n .material-icons.highlight_alt:before {\n content: \"\\ef52\"; }\n .material-icons.highlight_off:before {\n content: \"\\e888\"; }\n .material-icons.highlight_remove:before {\n content: \"\\e888\"; }\n .material-icons.hiking:before {\n content: \"\\e50a\"; }\n .material-icons.history:before {\n content: \"\\e889\"; }\n .material-icons.history_edu:before {\n content: \"\\ea3e\"; }\n .material-icons.history_toggle_off:before {\n content: \"\\f17d\"; }\n .material-icons.hive:before {\n content: \"\\eaa6\"; }\n .material-icons.hls:before {\n content: \"\\eb8a\"; }\n .material-icons.hls_off:before {\n content: \"\\eb8c\"; }\n .material-icons.holiday_village:before {\n content: \"\\e58a\"; }\n .material-icons.home:before {\n content: \"\\e88a\"; }\n .material-icons.home_filled:before {\n content: \"\\e9b2\"; }\n .material-icons.home_max:before {\n content: \"\\f024\"; }\n .material-icons.home_mini:before {\n content: \"\\f025\"; }\n .material-icons.home_repair_service:before {\n content: \"\\f100\"; }\n .material-icons.home_work:before {\n content: \"\\ea09\"; }\n .material-icons.horizontal_distribute:before {\n content: \"\\e014\"; }\n .material-icons.horizontal_rule:before {\n content: \"\\f108\"; }\n .material-icons.horizontal_split:before {\n content: \"\\e947\"; }\n .material-icons.hot_tub:before {\n content: \"\\eb46\"; }\n .material-icons.hotel:before {\n content: \"\\e53a\"; }\n .material-icons.hotel_class:before {\n content: \"\\e743\"; }\n .material-icons.hourglass_bottom:before {\n content: \"\\ea5c\"; }\n .material-icons.hourglass_disabled:before {\n content: \"\\ef53\"; }\n .material-icons.hourglass_empty:before {\n content: \"\\e88b\"; }\n .material-icons.hourglass_full:before {\n content: \"\\e88c\"; }\n .material-icons.hourglass_top:before {\n content: \"\\ea5b\"; }\n .material-icons.house:before {\n content: \"\\ea44\"; }\n .material-icons.house_siding:before {\n content: \"\\f202\"; }\n .material-icons.houseboat:before {\n content: \"\\e584\"; }\n .material-icons.how_to_reg:before {\n content: \"\\e174\"; }\n .material-icons.how_to_vote:before {\n content: \"\\e175\"; }\n .material-icons.html:before {\n content: \"\\eb7e\"; }\n .material-icons.http:before {\n content: \"\\e902\"; }\n .material-icons.https:before {\n content: \"\\e88d\"; }\n .material-icons.hub:before {\n content: \"\\e9f4\"; }\n .material-icons.hvac:before {\n content: \"\\f10e\"; }\n .material-icons.ice_skating:before {\n content: \"\\e50b\"; }\n .material-icons.icecream:before {\n content: \"\\ea69\"; }\n .material-icons.image:before {\n content: \"\\e3f4\"; }\n .material-icons.image_aspect_ratio:before {\n content: \"\\e3f5\"; }\n .material-icons.image_not_supported:before {\n content: \"\\f116\"; }\n .material-icons.image_search:before {\n content: \"\\e43f\"; }\n .material-icons.imagesearch_roller:before {\n content: \"\\e9b4\"; }\n .material-icons.import_contacts:before {\n content: \"\\e0e0\"; }\n .material-icons.import_export:before {\n content: \"\\e0c3\"; }\n .material-icons.important_devices:before {\n content: \"\\e912\"; }\n .material-icons.inbox:before {\n content: \"\\e156\"; }\n .material-icons.incomplete_circle:before {\n content: \"\\e79b\"; }\n .material-icons.indeterminate_check_box:before {\n content: \"\\e909\"; }\n .material-icons.info:before {\n content: \"\\e88e\"; }\n .material-icons.info_outline:before {\n content: \"\\e88f\"; }\n .material-icons.input:before {\n content: \"\\e890\"; }\n .material-icons.insert_chart:before {\n content: \"\\e24b\"; }\n .material-icons.insert_chart_outlined:before {\n content: \"\\e26a\"; }\n .material-icons.insert_comment:before {\n content: \"\\e24c\"; }\n .material-icons.insert_drive_file:before {\n content: \"\\e24d\"; }\n .material-icons.insert_emoticon:before {\n content: \"\\e24e\"; }\n .material-icons.insert_invitation:before {\n content: \"\\e24f\"; }\n .material-icons.insert_link:before {\n content: \"\\e250\"; }\n .material-icons.insert_page_break:before {\n content: \"\\eaca\"; }\n .material-icons.insert_photo:before {\n content: \"\\e251\"; }\n .material-icons.insights:before {\n content: \"\\f092\"; }\n .material-icons.install_desktop:before {\n content: \"\\eb71\"; }\n .material-icons.install_mobile:before {\n content: \"\\eb72\"; }\n .material-icons.integration_instructions:before {\n content: \"\\ef54\"; }\n .material-icons.interests:before {\n content: \"\\e7c8\"; }\n .material-icons.interpreter_mode:before {\n content: \"\\e83b\"; }\n .material-icons.inventory:before {\n content: \"\\e179\"; }\n .material-icons.inventory_2:before {\n content: \"\\e1a1\"; }\n .material-icons.invert_colors:before {\n content: \"\\e891\"; }\n .material-icons.invert_colors_off:before {\n content: \"\\e0c4\"; }\n .material-icons.invert_colors_on:before {\n content: \"\\e891\"; }\n .material-icons.ios_share:before {\n content: \"\\e6b8\"; }\n .material-icons.iron:before {\n content: \"\\e583\"; }\n .material-icons.iso:before {\n content: \"\\e3f6\"; }\n .material-icons.javascript:before {\n content: \"\\eb7c\"; }\n .material-icons.join_full:before {\n content: \"\\eaeb\"; }\n .material-icons.join_inner:before {\n content: \"\\eaf4\"; }\n .material-icons.join_left:before {\n content: \"\\eaf2\"; }\n .material-icons.join_right:before {\n content: \"\\eaea\"; }\n .material-icons.kayaking:before {\n content: \"\\e50c\"; }\n .material-icons.kebab_dining:before {\n content: \"\\e842\"; }\n .material-icons.key:before {\n content: \"\\e73c\"; }\n .material-icons.key_off:before {\n content: \"\\eb84\"; }\n .material-icons.keyboard:before {\n content: \"\\e312\"; }\n .material-icons.keyboard_alt:before {\n content: \"\\f028\"; }\n .material-icons.keyboard_arrow_down:before {\n content: \"\\e313\"; }\n .material-icons.keyboard_arrow_left:before {\n content: \"\\e314\"; }\n .material-icons.keyboard_arrow_right:before {\n content: \"\\e315\"; }\n .material-icons.keyboard_arrow_up:before {\n content: \"\\e316\"; }\n .material-icons.keyboard_backspace:before {\n content: \"\\e317\"; }\n .material-icons.keyboard_capslock:before {\n content: \"\\e318\"; }\n .material-icons.keyboard_command:before {\n content: \"\\eae0\"; }\n .material-icons.keyboard_command_key:before {\n content: \"\\eae7\"; }\n .material-icons.keyboard_control:before {\n content: \"\\e5d3\"; }\n .material-icons.keyboard_control_key:before {\n content: \"\\eae6\"; }\n .material-icons.keyboard_double_arrow_down:before {\n content: \"\\ead0\"; }\n .material-icons.keyboard_double_arrow_left:before {\n content: \"\\eac3\"; }\n .material-icons.keyboard_double_arrow_right:before {\n content: \"\\eac9\"; }\n .material-icons.keyboard_double_arrow_up:before {\n content: \"\\eacf\"; }\n .material-icons.keyboard_hide:before {\n content: \"\\e31a\"; }\n .material-icons.keyboard_option:before {\n content: \"\\eadf\"; }\n .material-icons.keyboard_option_key:before {\n content: \"\\eae8\"; }\n .material-icons.keyboard_return:before {\n content: \"\\e31b\"; }\n .material-icons.keyboard_tab:before {\n content: \"\\e31c\"; }\n .material-icons.keyboard_voice:before {\n content: \"\\e31d\"; }\n .material-icons.king_bed:before {\n content: \"\\ea45\"; }\n .material-icons.kitchen:before {\n content: \"\\eb47\"; }\n .material-icons.kitesurfing:before {\n content: \"\\e50d\"; }\n .material-icons.label:before {\n content: \"\\e892\"; }\n .material-icons.label_important:before {\n content: \"\\e937\"; }\n .material-icons.label_important_outline:before {\n content: \"\\e948\"; }\n .material-icons.label_off:before {\n content: \"\\e9b6\"; }\n .material-icons.label_outline:before {\n content: \"\\e893\"; }\n .material-icons.lan:before {\n content: \"\\eb2f\"; }\n .material-icons.landscape:before {\n content: \"\\e3f7\"; }\n .material-icons.landslide:before {\n content: \"\\ebd7\"; }\n .material-icons.language:before {\n content: \"\\e894\"; }\n .material-icons.laptop:before {\n content: \"\\e31e\"; }\n .material-icons.laptop_chromebook:before {\n content: \"\\e31f\"; }\n .material-icons.laptop_mac:before {\n content: \"\\e320\"; }\n .material-icons.laptop_windows:before {\n content: \"\\e321\"; }\n .material-icons.last_page:before {\n content: \"\\e5dd\"; }\n .material-icons.launch:before {\n content: \"\\e895\"; }\n .material-icons.layers:before {\n content: \"\\e53b\"; }\n .material-icons.layers_clear:before {\n content: \"\\e53c\"; }\n .material-icons.leaderboard:before {\n content: \"\\f20c\"; }\n .material-icons.leak_add:before {\n content: \"\\e3f8\"; }\n .material-icons.leak_remove:before {\n content: \"\\e3f9\"; }\n .material-icons.leave_bags_at_home:before {\n content: \"\\f21b\"; }\n .material-icons.legend_toggle:before {\n content: \"\\f11b\"; }\n .material-icons.lens:before {\n content: \"\\e3fa\"; }\n .material-icons.lens_blur:before {\n content: \"\\f029\"; }\n .material-icons.library_add:before {\n content: \"\\e02e\"; }\n .material-icons.library_add_check:before {\n content: \"\\e9b7\"; }\n .material-icons.library_books:before {\n content: \"\\e02f\"; }\n .material-icons.library_music:before {\n content: \"\\e030\"; }\n .material-icons.light:before {\n content: \"\\f02a\"; }\n .material-icons.light_mode:before {\n content: \"\\e518\"; }\n .material-icons.lightbulb:before {\n content: \"\\e0f0\"; }\n .material-icons.lightbulb_circle:before {\n content: \"\\ebfe\"; }\n .material-icons.lightbulb_outline:before {\n content: \"\\e90f\"; }\n .material-icons.line_axis:before {\n content: \"\\ea9a\"; }\n .material-icons.line_style:before {\n content: \"\\e919\"; }\n .material-icons.line_weight:before {\n content: \"\\e91a\"; }\n .material-icons.linear_scale:before {\n content: \"\\e260\"; }\n .material-icons.link:before {\n content: \"\\e157\"; }\n .material-icons.link_off:before {\n content: \"\\e16f\"; }\n .material-icons.linked_camera:before {\n content: \"\\e438\"; }\n .material-icons.liquor:before {\n content: \"\\ea60\"; }\n .material-icons.list:before {\n content: \"\\e896\"; }\n .material-icons.list_alt:before {\n content: \"\\e0ee\"; }\n .material-icons.live_help:before {\n content: \"\\e0c6\"; }\n .material-icons.live_tv:before {\n content: \"\\e639\"; }\n .material-icons.living:before {\n content: \"\\f02b\"; }\n .material-icons.local_activity:before {\n content: \"\\e53f\"; }\n .material-icons.local_airport:before {\n content: \"\\e53d\"; }\n .material-icons.local_atm:before {\n content: \"\\e53e\"; }\n .material-icons.local_attraction:before {\n content: \"\\e53f\"; }\n .material-icons.local_bar:before {\n content: \"\\e540\"; }\n .material-icons.local_cafe:before {\n content: \"\\e541\"; }\n .material-icons.local_car_wash:before {\n content: \"\\e542\"; }\n .material-icons.local_convenience_store:before {\n content: \"\\e543\"; }\n .material-icons.local_dining:before {\n content: \"\\e556\"; }\n .material-icons.local_drink:before {\n content: \"\\e544\"; }\n .material-icons.local_fire_department:before {\n content: \"\\ef55\"; }\n .material-icons.local_florist:before {\n content: \"\\e545\"; }\n .material-icons.local_gas_station:before {\n content: \"\\e546\"; }\n .material-icons.local_grocery_store:before {\n content: \"\\e547\"; }\n .material-icons.local_hospital:before {\n content: \"\\e548\"; }\n .material-icons.local_hotel:before {\n content: \"\\e549\"; }\n .material-icons.local_laundry_service:before {\n content: \"\\e54a\"; }\n .material-icons.local_library:before {\n content: \"\\e54b\"; }\n .material-icons.local_mall:before {\n content: \"\\e54c\"; }\n .material-icons.local_movies:before {\n content: \"\\e54d\"; }\n .material-icons.local_offer:before {\n content: \"\\e54e\"; }\n .material-icons.local_parking:before {\n content: \"\\e54f\"; }\n .material-icons.local_pharmacy:before {\n content: \"\\e550\"; }\n .material-icons.local_phone:before {\n content: \"\\e551\"; }\n .material-icons.local_pizza:before {\n content: \"\\e552\"; }\n .material-icons.local_play:before {\n content: \"\\e553\"; }\n .material-icons.local_police:before {\n content: \"\\ef56\"; }\n .material-icons.local_post_office:before {\n content: \"\\e554\"; }\n .material-icons.local_print_shop:before {\n content: \"\\e555\"; }\n .material-icons.local_printshop:before {\n content: \"\\e555\"; }\n .material-icons.local_restaurant:before {\n content: \"\\e556\"; }\n .material-icons.local_see:before {\n content: \"\\e557\"; }\n .material-icons.local_shipping:before {\n content: \"\\e558\"; }\n .material-icons.local_taxi:before {\n content: \"\\e559\"; }\n .material-icons.location_city:before {\n content: \"\\e7f1\"; }\n .material-icons.location_disabled:before {\n content: \"\\e1b6\"; }\n .material-icons.location_history:before {\n content: \"\\e55a\"; }\n .material-icons.location_off:before {\n content: \"\\e0c7\"; }\n .material-icons.location_on:before {\n content: \"\\e0c8\"; }\n .material-icons.location_pin:before {\n content: \"\\f1db\"; }\n .material-icons.location_searching:before {\n content: \"\\e1b7\"; }\n .material-icons.lock:before {\n content: \"\\e897\"; }\n .material-icons.lock_clock:before {\n content: \"\\ef57\"; }\n .material-icons.lock_open:before {\n content: \"\\e898\"; }\n .material-icons.lock_outline:before {\n content: \"\\e899\"; }\n .material-icons.lock_person:before {\n content: \"\\f8f3\"; }\n .material-icons.lock_reset:before {\n content: \"\\eade\"; }\n .material-icons.login:before {\n content: \"\\ea77\"; }\n .material-icons.logo_dev:before {\n content: \"\\ead6\"; }\n .material-icons.logout:before {\n content: \"\\e9ba\"; }\n .material-icons.looks:before {\n content: \"\\e3fc\"; }\n .material-icons.looks_3:before {\n content: \"\\e3fb\"; }\n .material-icons.looks_4:before {\n content: \"\\e3fd\"; }\n .material-icons.looks_5:before {\n content: \"\\e3fe\"; }\n .material-icons.looks_6:before {\n content: \"\\e3ff\"; }\n .material-icons.looks_one:before {\n content: \"\\e400\"; }\n .material-icons.looks_two:before {\n content: \"\\e401\"; }\n .material-icons.loop:before {\n content: \"\\e028\"; }\n .material-icons.loupe:before {\n content: \"\\e402\"; }\n .material-icons.low_priority:before {\n content: \"\\e16d\"; }\n .material-icons.loyalty:before {\n content: \"\\e89a\"; }\n .material-icons.lte_mobiledata:before {\n content: \"\\f02c\"; }\n .material-icons.lte_plus_mobiledata:before {\n content: \"\\f02d\"; }\n .material-icons.luggage:before {\n content: \"\\f235\"; }\n .material-icons.lunch_dining:before {\n content: \"\\ea61\"; }\n .material-icons.lyrics:before {\n content: \"\\ec0b\"; }\n .material-icons.mail:before {\n content: \"\\e158\"; }\n .material-icons.mail_lock:before {\n content: \"\\ec0a\"; }\n .material-icons.mail_outline:before {\n content: \"\\e0e1\"; }\n .material-icons.male:before {\n content: \"\\e58e\"; }\n .material-icons.man:before {\n content: \"\\e4eb\"; }\n .material-icons.manage_accounts:before {\n content: \"\\f02e\"; }\n .material-icons.manage_history:before {\n content: \"\\ebe7\"; }\n .material-icons.manage_search:before {\n content: \"\\f02f\"; }\n .material-icons.map:before {\n content: \"\\e55b\"; }\n .material-icons.maps_home_work:before {\n content: \"\\f030\"; }\n .material-icons.maps_ugc:before {\n content: \"\\ef58\"; }\n .material-icons.margin:before {\n content: \"\\e9bb\"; }\n .material-icons.mark_as_unread:before {\n content: \"\\e9bc\"; }\n .material-icons.mark_chat_read:before {\n content: \"\\f18b\"; }\n .material-icons.mark_chat_unread:before {\n content: \"\\f189\"; }\n .material-icons.mark_email_read:before {\n content: \"\\f18c\"; }\n .material-icons.mark_email_unread:before {\n content: \"\\f18a\"; }\n .material-icons.mark_unread_chat_alt:before {\n content: \"\\eb9d\"; }\n .material-icons.markunread:before {\n content: \"\\e159\"; }\n .material-icons.markunread_mailbox:before {\n content: \"\\e89b\"; }\n .material-icons.masks:before {\n content: \"\\f218\"; }\n .material-icons.maximize:before {\n content: \"\\e930\"; }\n .material-icons.media_bluetooth_off:before {\n content: \"\\f031\"; }\n .material-icons.media_bluetooth_on:before {\n content: \"\\f032\"; }\n .material-icons.mediation:before {\n content: \"\\efa7\"; }\n .material-icons.medical_information:before {\n content: \"\\ebed\"; }\n .material-icons.medical_services:before {\n content: \"\\f109\"; }\n .material-icons.medication:before {\n content: \"\\f033\"; }\n .material-icons.medication_liquid:before {\n content: \"\\ea87\"; }\n .material-icons.meeting_room:before {\n content: \"\\eb4f\"; }\n .material-icons.memory:before {\n content: \"\\e322\"; }\n .material-icons.menu:before {\n content: \"\\e5d2\"; }\n .material-icons.menu_book:before {\n content: \"\\ea19\"; }\n .material-icons.menu_open:before {\n content: \"\\e9bd\"; }\n .material-icons.merge:before {\n content: \"\\eb98\"; }\n .material-icons.merge_type:before {\n content: \"\\e252\"; }\n .material-icons.message:before {\n content: \"\\e0c9\"; }\n .material-icons.messenger:before {\n content: \"\\e0ca\"; }\n .material-icons.messenger_outline:before {\n content: \"\\e0cb\"; }\n .material-icons.mic:before {\n content: \"\\e029\"; }\n .material-icons.mic_external_off:before {\n content: \"\\ef59\"; }\n .material-icons.mic_external_on:before {\n content: \"\\ef5a\"; }\n .material-icons.mic_none:before {\n content: \"\\e02a\"; }\n .material-icons.mic_off:before {\n content: \"\\e02b\"; }\n .material-icons.microwave:before {\n content: \"\\f204\"; }\n .material-icons.military_tech:before {\n content: \"\\ea3f\"; }\n .material-icons.minimize:before {\n content: \"\\e931\"; }\n .material-icons.minor_crash:before {\n content: \"\\ebf1\"; }\n .material-icons.miscellaneous_services:before {\n content: \"\\f10c\"; }\n .material-icons.missed_video_call:before {\n content: \"\\e073\"; }\n .material-icons.mms:before {\n content: \"\\e618\"; }\n .material-icons.mobile_friendly:before {\n content: \"\\e200\"; }\n .material-icons.mobile_off:before {\n content: \"\\e201\"; }\n .material-icons.mobile_screen_share:before {\n content: \"\\e0e7\"; }\n .material-icons.mobiledata_off:before {\n content: \"\\f034\"; }\n .material-icons.mode:before {\n content: \"\\f097\"; }\n .material-icons.mode_comment:before {\n content: \"\\e253\"; }\n .material-icons.mode_edit:before {\n content: \"\\e254\"; }\n .material-icons.mode_edit_outline:before {\n content: \"\\f035\"; }\n .material-icons.mode_fan_off:before {\n content: \"\\ec17\"; }\n .material-icons.mode_night:before {\n content: \"\\f036\"; }\n .material-icons.mode_of_travel:before {\n content: \"\\e7ce\"; }\n .material-icons.mode_standby:before {\n content: \"\\f037\"; }\n .material-icons.model_training:before {\n content: \"\\f0cf\"; }\n .material-icons.monetization_on:before {\n content: \"\\e263\"; }\n .material-icons.money:before {\n content: \"\\e57d\"; }\n .material-icons.money_off:before {\n content: \"\\e25c\"; }\n .material-icons.money_off_csred:before {\n content: \"\\f038\"; }\n .material-icons.monitor:before {\n content: \"\\ef5b\"; }\n .material-icons.monitor_heart:before {\n content: \"\\eaa2\"; }\n .material-icons.monitor_weight:before {\n content: \"\\f039\"; }\n .material-icons.monochrome_photos:before {\n content: \"\\e403\"; }\n .material-icons.mood:before {\n content: \"\\e7f2\"; }\n .material-icons.mood_bad:before {\n content: \"\\e7f3\"; }\n .material-icons.moped:before {\n content: \"\\eb28\"; }\n .material-icons.more:before {\n content: \"\\e619\"; }\n .material-icons.more_horiz:before {\n content: \"\\e5d3\"; }\n .material-icons.more_time:before {\n content: \"\\ea5d\"; }\n .material-icons.more_vert:before {\n content: \"\\e5d4\"; }\n .material-icons.mosque:before {\n content: \"\\eab2\"; }\n .material-icons.motion_photos_auto:before {\n content: \"\\f03a\"; }\n .material-icons.motion_photos_off:before {\n content: \"\\e9c0\"; }\n .material-icons.motion_photos_on:before {\n content: \"\\e9c1\"; }\n .material-icons.motion_photos_pause:before {\n content: \"\\f227\"; }\n .material-icons.motion_photos_paused:before {\n content: \"\\e9c2\"; }\n .material-icons.motorcycle:before {\n content: \"\\e91b\"; }\n .material-icons.mouse:before {\n content: \"\\e323\"; }\n .material-icons.move_down:before {\n content: \"\\eb61\"; }\n .material-icons.move_to_inbox:before {\n content: \"\\e168\"; }\n .material-icons.move_up:before {\n content: \"\\eb64\"; }\n .material-icons.movie:before {\n content: \"\\e02c\"; }\n .material-icons.movie_creation:before {\n content: \"\\e404\"; }\n .material-icons.movie_filter:before {\n content: \"\\e43a\"; }\n .material-icons.moving:before {\n content: \"\\e501\"; }\n .material-icons.mp:before {\n content: \"\\e9c3\"; }\n .material-icons.multiline_chart:before {\n content: \"\\e6df\"; }\n .material-icons.multiple_stop:before {\n content: \"\\f1b9\"; }\n .material-icons.multitrack_audio:before {\n content: \"\\e1b8\"; }\n .material-icons.museum:before {\n content: \"\\ea36\"; }\n .material-icons.music_note:before {\n content: \"\\e405\"; }\n .material-icons.music_off:before {\n content: \"\\e440\"; }\n .material-icons.music_video:before {\n content: \"\\e063\"; }\n .material-icons.my_library_add:before {\n content: \"\\e02e\"; }\n .material-icons.my_library_books:before {\n content: \"\\e02f\"; }\n .material-icons.my_library_music:before {\n content: \"\\e030\"; }\n .material-icons.my_location:before {\n content: \"\\e55c\"; }\n .material-icons.nat:before {\n content: \"\\ef5c\"; }\n .material-icons.nature:before {\n content: \"\\e406\"; }\n .material-icons.nature_people:before {\n content: \"\\e407\"; }\n .material-icons.navigate_before:before {\n content: \"\\e408\"; }\n .material-icons.navigate_next:before {\n content: \"\\e409\"; }\n .material-icons.navigation:before {\n content: \"\\e55d\"; }\n .material-icons.near_me:before {\n content: \"\\e569\"; }\n .material-icons.near_me_disabled:before {\n content: \"\\f1ef\"; }\n .material-icons.nearby_error:before {\n content: \"\\f03b\"; }\n .material-icons.nearby_off:before {\n content: \"\\f03c\"; }\n .material-icons.nest_cam_wired_stand:before {\n content: \"\\ec16\"; }\n .material-icons.network_cell:before {\n content: \"\\e1b9\"; }\n .material-icons.network_check:before {\n content: \"\\e640\"; }\n .material-icons.network_locked:before {\n content: \"\\e61a\"; }\n .material-icons.network_ping:before {\n content: \"\\ebca\"; }\n .material-icons.network_wifi:before {\n content: \"\\e1ba\"; }\n .material-icons.network_wifi_1_bar:before {\n content: \"\\ebe4\"; }\n .material-icons.network_wifi_2_bar:before {\n content: \"\\ebd6\"; }\n .material-icons.network_wifi_3_bar:before {\n content: \"\\ebe1\"; }\n .material-icons.new_label:before {\n content: \"\\e609\"; }\n .material-icons.new_releases:before {\n content: \"\\e031\"; }\n .material-icons.newspaper:before {\n content: \"\\eb81\"; }\n .material-icons.next_plan:before {\n content: \"\\ef5d\"; }\n .material-icons.next_week:before {\n content: \"\\e16a\"; }\n .material-icons.nfc:before {\n content: \"\\e1bb\"; }\n .material-icons.night_shelter:before {\n content: \"\\f1f1\"; }\n .material-icons.nightlife:before {\n content: \"\\ea62\"; }\n .material-icons.nightlight:before {\n content: \"\\f03d\"; }\n .material-icons.nightlight_round:before {\n content: \"\\ef5e\"; }\n .material-icons.nights_stay:before {\n content: \"\\ea46\"; }\n .material-icons.no_accounts:before {\n content: \"\\f03e\"; }\n .material-icons.no_adult_content:before {\n content: \"\\f8fe\"; }\n .material-icons.no_backpack:before {\n content: \"\\f237\"; }\n .material-icons.no_cell:before {\n content: \"\\f1a4\"; }\n .material-icons.no_crash:before {\n content: \"\\ebf0\"; }\n .material-icons.no_drinks:before {\n content: \"\\f1a5\"; }\n .material-icons.no_encryption:before {\n content: \"\\e641\"; }\n .material-icons.no_encryption_gmailerrorred:before {\n content: \"\\f03f\"; }\n .material-icons.no_flash:before {\n content: \"\\f1a6\"; }\n .material-icons.no_food:before {\n content: \"\\f1a7\"; }\n .material-icons.no_luggage:before {\n content: \"\\f23b\"; }\n .material-icons.no_meals:before {\n content: \"\\f1d6\"; }\n .material-icons.no_meals_ouline:before {\n content: \"\\f229\"; }\n .material-icons.no_meeting_room:before {\n content: \"\\eb4e\"; }\n .material-icons.no_photography:before {\n content: \"\\f1a8\"; }\n .material-icons.no_sim:before {\n content: \"\\e0cc\"; }\n .material-icons.no_stroller:before {\n content: \"\\f1af\"; }\n .material-icons.no_transfer:before {\n content: \"\\f1d5\"; }\n .material-icons.noise_aware:before {\n content: \"\\ebec\"; }\n .material-icons.noise_control_off:before {\n content: \"\\ebf3\"; }\n .material-icons.nordic_walking:before {\n content: \"\\e50e\"; }\n .material-icons.north:before {\n content: \"\\f1e0\"; }\n .material-icons.north_east:before {\n content: \"\\f1e1\"; }\n .material-icons.north_west:before {\n content: \"\\f1e2\"; }\n .material-icons.not_accessible:before {\n content: \"\\f0fe\"; }\n .material-icons.not_interested:before {\n content: \"\\e033\"; }\n .material-icons.not_listed_location:before {\n content: \"\\e575\"; }\n .material-icons.not_started:before {\n content: \"\\f0d1\"; }\n .material-icons.note:before {\n content: \"\\e06f\"; }\n .material-icons.note_add:before {\n content: \"\\e89c\"; }\n .material-icons.note_alt:before {\n content: \"\\f040\"; }\n .material-icons.notes:before {\n content: \"\\e26c\"; }\n .material-icons.notification_add:before {\n content: \"\\e399\"; }\n .material-icons.notification_important:before {\n content: \"\\e004\"; }\n .material-icons.notifications:before {\n content: \"\\e7f4\"; }\n .material-icons.notifications_active:before {\n content: \"\\e7f7\"; }\n .material-icons.notifications_none:before {\n content: \"\\e7f5\"; }\n .material-icons.notifications_off:before {\n content: \"\\e7f6\"; }\n .material-icons.notifications_on:before {\n content: \"\\e7f7\"; }\n .material-icons.notifications_paused:before {\n content: \"\\e7f8\"; }\n .material-icons.now_wallpaper:before {\n content: \"\\e1bc\"; }\n .material-icons.now_widgets:before {\n content: \"\\e1bd\"; }\n .material-icons.numbers:before {\n content: \"\\eac7\"; }\n .material-icons.offline_bolt:before {\n content: \"\\e932\"; }\n .material-icons.offline_pin:before {\n content: \"\\e90a\"; }\n .material-icons.offline_share:before {\n content: \"\\e9c5\"; }\n .material-icons.oil_barrel:before {\n content: \"\\ec15\"; }\n .material-icons.on_device_training:before {\n content: \"\\ebfd\"; }\n .material-icons.ondemand_video:before {\n content: \"\\e63a\"; }\n .material-icons.online_prediction:before {\n content: \"\\f0eb\"; }\n .material-icons.opacity:before {\n content: \"\\e91c\"; }\n .material-icons.open_in_browser:before {\n content: \"\\e89d\"; }\n .material-icons.open_in_full:before {\n content: \"\\f1ce\"; }\n .material-icons.open_in_new:before {\n content: \"\\e89e\"; }\n .material-icons.open_in_new_off:before {\n content: \"\\e4f6\"; }\n .material-icons.open_with:before {\n content: \"\\e89f\"; }\n .material-icons.other_houses:before {\n content: \"\\e58c\"; }\n .material-icons.outbond:before {\n content: \"\\f228\"; }\n .material-icons.outbound:before {\n content: \"\\e1ca\"; }\n .material-icons.outbox:before {\n content: \"\\ef5f\"; }\n .material-icons.outdoor_grill:before {\n content: \"\\ea47\"; }\n .material-icons.outgoing_mail:before {\n content: \"\\f0d2\"; }\n .material-icons.outlet:before {\n content: \"\\f1d4\"; }\n .material-icons.outlined_flag:before {\n content: \"\\e16e\"; }\n .material-icons.output:before {\n content: \"\\ebbe\"; }\n .material-icons.padding:before {\n content: \"\\e9c8\"; }\n .material-icons.pages:before {\n content: \"\\e7f9\"; }\n .material-icons.pageview:before {\n content: \"\\e8a0\"; }\n .material-icons.paid:before {\n content: \"\\f041\"; }\n .material-icons.palette:before {\n content: \"\\e40a\"; }\n .material-icons.pan_tool:before {\n content: \"\\e925\"; }\n .material-icons.pan_tool_alt:before {\n content: \"\\ebb9\"; }\n .material-icons.panorama:before {\n content: \"\\e40b\"; }\n .material-icons.panorama_fish_eye:before {\n content: \"\\e40c\"; }\n .material-icons.panorama_fisheye:before {\n content: \"\\e40c\"; }\n .material-icons.panorama_horizontal:before {\n content: \"\\e40d\"; }\n .material-icons.panorama_horizontal_select:before {\n content: \"\\ef60\"; }\n .material-icons.panorama_photosphere:before {\n content: \"\\e9c9\"; }\n .material-icons.panorama_photosphere_select:before {\n content: \"\\e9ca\"; }\n .material-icons.panorama_vertical:before {\n content: \"\\e40e\"; }\n .material-icons.panorama_vertical_select:before {\n content: \"\\ef61\"; }\n .material-icons.panorama_wide_angle:before {\n content: \"\\e40f\"; }\n .material-icons.panorama_wide_angle_select:before {\n content: \"\\ef62\"; }\n .material-icons.paragliding:before {\n content: \"\\e50f\"; }\n .material-icons.park:before {\n content: \"\\ea63\"; }\n .material-icons.party_mode:before {\n content: \"\\e7fa\"; }\n .material-icons.password:before {\n content: \"\\f042\"; }\n .material-icons.pattern:before {\n content: \"\\f043\"; }\n .material-icons.pause:before {\n content: \"\\e034\"; }\n .material-icons.pause_circle:before {\n content: \"\\e1a2\"; }\n .material-icons.pause_circle_filled:before {\n content: \"\\e035\"; }\n .material-icons.pause_circle_outline:before {\n content: \"\\e036\"; }\n .material-icons.pause_presentation:before {\n content: \"\\e0ea\"; }\n .material-icons.payment:before {\n content: \"\\e8a1\"; }\n .material-icons.payments:before {\n content: \"\\ef63\"; }\n .material-icons.paypal:before {\n content: \"\\ea8d\"; }\n .material-icons.pedal_bike:before {\n content: \"\\eb29\"; }\n .material-icons.pending:before {\n content: \"\\ef64\"; }\n .material-icons.pending_actions:before {\n content: \"\\f1bb\"; }\n .material-icons.pentagon:before {\n content: \"\\eb50\"; }\n .material-icons.people:before {\n content: \"\\e7fb\"; }\n .material-icons.people_alt:before {\n content: \"\\ea21\"; }\n .material-icons.people_outline:before {\n content: \"\\e7fc\"; }\n .material-icons.percent:before {\n content: \"\\eb58\"; }\n .material-icons.perm_camera_mic:before {\n content: \"\\e8a2\"; }\n .material-icons.perm_contact_cal:before {\n content: \"\\e8a3\"; }\n .material-icons.perm_contact_calendar:before {\n content: \"\\e8a3\"; }\n .material-icons.perm_data_setting:before {\n content: \"\\e8a4\"; }\n .material-icons.perm_device_info:before {\n content: \"\\e8a5\"; }\n .material-icons.perm_device_information:before {\n content: \"\\e8a5\"; }\n .material-icons.perm_identity:before {\n content: \"\\e8a6\"; }\n .material-icons.perm_media:before {\n content: \"\\e8a7\"; }\n .material-icons.perm_phone_msg:before {\n content: \"\\e8a8\"; }\n .material-icons.perm_scan_wifi:before {\n content: \"\\e8a9\"; }\n .material-icons.person:before {\n content: \"\\e7fd\"; }\n .material-icons.person_add:before {\n content: \"\\e7fe\"; }\n .material-icons.person_add_alt:before {\n content: \"\\ea4d\"; }\n .material-icons.person_add_alt_1:before {\n content: \"\\ef65\"; }\n .material-icons.person_add_disabled:before {\n content: \"\\e9cb\"; }\n .material-icons.person_off:before {\n content: \"\\e510\"; }\n .material-icons.person_outline:before {\n content: \"\\e7ff\"; }\n .material-icons.person_pin:before {\n content: \"\\e55a\"; }\n .material-icons.person_pin_circle:before {\n content: \"\\e56a\"; }\n .material-icons.person_remove:before {\n content: \"\\ef66\"; }\n .material-icons.person_remove_alt_1:before {\n content: \"\\ef67\"; }\n .material-icons.person_search:before {\n content: \"\\f106\"; }\n .material-icons.personal_injury:before {\n content: \"\\e6da\"; }\n .material-icons.personal_video:before {\n content: \"\\e63b\"; }\n .material-icons.pest_control:before {\n content: \"\\f0fa\"; }\n .material-icons.pest_control_rodent:before {\n content: \"\\f0fd\"; }\n .material-icons.pets:before {\n content: \"\\e91d\"; }\n .material-icons.phishing:before {\n content: \"\\ead7\"; }\n .material-icons.phone:before {\n content: \"\\e0cd\"; }\n .material-icons.phone_android:before {\n content: \"\\e324\"; }\n .material-icons.phone_bluetooth_speaker:before {\n content: \"\\e61b\"; }\n .material-icons.phone_callback:before {\n content: \"\\e649\"; }\n .material-icons.phone_disabled:before {\n content: \"\\e9cc\"; }\n .material-icons.phone_enabled:before {\n content: \"\\e9cd\"; }\n .material-icons.phone_forwarded:before {\n content: \"\\e61c\"; }\n .material-icons.phone_in_talk:before {\n content: \"\\e61d\"; }\n .material-icons.phone_iphone:before {\n content: \"\\e325\"; }\n .material-icons.phone_locked:before {\n content: \"\\e61e\"; }\n .material-icons.phone_missed:before {\n content: \"\\e61f\"; }\n .material-icons.phone_paused:before {\n content: \"\\e620\"; }\n .material-icons.phonelink:before {\n content: \"\\e326\"; }\n .material-icons.phonelink_erase:before {\n content: \"\\e0db\"; }\n .material-icons.phonelink_lock:before {\n content: \"\\e0dc\"; }\n .material-icons.phonelink_off:before {\n content: \"\\e327\"; }\n .material-icons.phonelink_ring:before {\n content: \"\\e0dd\"; }\n .material-icons.phonelink_setup:before {\n content: \"\\e0de\"; }\n .material-icons.photo:before {\n content: \"\\e410\"; }\n .material-icons.photo_album:before {\n content: \"\\e411\"; }\n .material-icons.photo_camera:before {\n content: \"\\e412\"; }\n .material-icons.photo_camera_back:before {\n content: \"\\ef68\"; }\n .material-icons.photo_camera_front:before {\n content: \"\\ef69\"; }\n .material-icons.photo_filter:before {\n content: \"\\e43b\"; }\n .material-icons.photo_library:before {\n content: \"\\e413\"; }\n .material-icons.photo_size_select_actual:before {\n content: \"\\e432\"; }\n .material-icons.photo_size_select_large:before {\n content: \"\\e433\"; }\n .material-icons.photo_size_select_small:before {\n content: \"\\e434\"; }\n .material-icons.php:before {\n content: \"\\eb8f\"; }\n .material-icons.piano:before {\n content: \"\\e521\"; }\n .material-icons.piano_off:before {\n content: \"\\e520\"; }\n .material-icons.picture_as_pdf:before {\n content: \"\\e415\"; }\n .material-icons.picture_in_picture:before {\n content: \"\\e8aa\"; }\n .material-icons.picture_in_picture_alt:before {\n content: \"\\e911\"; }\n .material-icons.pie_chart:before {\n content: \"\\e6c4\"; }\n .material-icons.pie_chart_outline:before {\n content: \"\\f044\"; }\n .material-icons.pie_chart_outlined:before {\n content: \"\\e6c5\"; }\n .material-icons.pin:before {\n content: \"\\f045\"; }\n .material-icons.pin_drop:before {\n content: \"\\e55e\"; }\n .material-icons.pin_end:before {\n content: \"\\e767\"; }\n .material-icons.pin_invoke:before {\n content: \"\\e763\"; }\n .material-icons.pinch:before {\n content: \"\\eb38\"; }\n .material-icons.pivot_table_chart:before {\n content: \"\\e9ce\"; }\n .material-icons.pix:before {\n content: \"\\eaa3\"; }\n .material-icons.place:before {\n content: \"\\e55f\"; }\n .material-icons.plagiarism:before {\n content: \"\\ea5a\"; }\n .material-icons.play_arrow:before {\n content: \"\\e037\"; }\n .material-icons.play_circle:before {\n content: \"\\e1c4\"; }\n .material-icons.play_circle_fill:before {\n content: \"\\e038\"; }\n .material-icons.play_circle_filled:before {\n content: \"\\e038\"; }\n .material-icons.play_circle_outline:before {\n content: \"\\e039\"; }\n .material-icons.play_disabled:before {\n content: \"\\ef6a\"; }\n .material-icons.play_for_work:before {\n content: \"\\e906\"; }\n .material-icons.play_lesson:before {\n content: \"\\f047\"; }\n .material-icons.playlist_add:before {\n content: \"\\e03b\"; }\n .material-icons.playlist_add_check:before {\n content: \"\\e065\"; }\n .material-icons.playlist_add_check_circle:before {\n content: \"\\e7e6\"; }\n .material-icons.playlist_add_circle:before {\n content: \"\\e7e5\"; }\n .material-icons.playlist_play:before {\n content: \"\\e05f\"; }\n .material-icons.playlist_remove:before {\n content: \"\\eb80\"; }\n .material-icons.plumbing:before {\n content: \"\\f107\"; }\n .material-icons.plus_one:before {\n content: \"\\e800\"; }\n .material-icons.podcasts:before {\n content: \"\\f048\"; }\n .material-icons.point_of_sale:before {\n content: \"\\f17e\"; }\n .material-icons.policy:before {\n content: \"\\ea17\"; }\n .material-icons.poll:before {\n content: \"\\e801\"; }\n .material-icons.polyline:before {\n content: \"\\ebbb\"; }\n .material-icons.polymer:before {\n content: \"\\e8ab\"; }\n .material-icons.pool:before {\n content: \"\\eb48\"; }\n .material-icons.portable_wifi_off:before {\n content: \"\\e0ce\"; }\n .material-icons.portrait:before {\n content: \"\\e416\"; }\n .material-icons.post_add:before {\n content: \"\\ea20\"; }\n .material-icons.power:before {\n content: \"\\e63c\"; }\n .material-icons.power_input:before {\n content: \"\\e336\"; }\n .material-icons.power_off:before {\n content: \"\\e646\"; }\n .material-icons.power_settings_new:before {\n content: \"\\e8ac\"; }\n .material-icons.precision_manufacturing:before {\n content: \"\\f049\"; }\n .material-icons.pregnant_woman:before {\n content: \"\\e91e\"; }\n .material-icons.present_to_all:before {\n content: \"\\e0df\"; }\n .material-icons.preview:before {\n content: \"\\f1c5\"; }\n .material-icons.price_change:before {\n content: \"\\f04a\"; }\n .material-icons.price_check:before {\n content: \"\\f04b\"; }\n .material-icons.print:before {\n content: \"\\e8ad\"; }\n .material-icons.print_disabled:before {\n content: \"\\e9cf\"; }\n .material-icons.priority_high:before {\n content: \"\\e645\"; }\n .material-icons.privacy_tip:before {\n content: \"\\f0dc\"; }\n .material-icons.private_connectivity:before {\n content: \"\\e744\"; }\n .material-icons.production_quantity_limits:before {\n content: \"\\e1d1\"; }\n .material-icons.propane:before {\n content: \"\\ec14\"; }\n .material-icons.propane_tank:before {\n content: \"\\ec13\"; }\n .material-icons.psychology:before {\n content: \"\\ea4a\"; }\n .material-icons.psychology_alt:before {\n content: \"\\f8ea\"; }\n .material-icons.public:before {\n content: \"\\e80b\"; }\n .material-icons.public_off:before {\n content: \"\\f1ca\"; }\n .material-icons.publish:before {\n content: \"\\e255\"; }\n .material-icons.published_with_changes:before {\n content: \"\\f232\"; }\n .material-icons.punch_clock:before {\n content: \"\\eaa8\"; }\n .material-icons.push_pin:before {\n content: \"\\f10d\"; }\n .material-icons.qr_code:before {\n content: \"\\ef6b\"; }\n .material-icons.qr_code_2:before {\n content: \"\\e00a\"; }\n .material-icons.qr_code_scanner:before {\n content: \"\\f206\"; }\n .material-icons.query_builder:before {\n content: \"\\e8ae\"; }\n .material-icons.query_stats:before {\n content: \"\\e4fc\"; }\n .material-icons.question_answer:before {\n content: \"\\e8af\"; }\n .material-icons.question_mark:before {\n content: \"\\eb8b\"; }\n .material-icons.queue:before {\n content: \"\\e03c\"; }\n .material-icons.queue_music:before {\n content: \"\\e03d\"; }\n .material-icons.queue_play_next:before {\n content: \"\\e066\"; }\n .material-icons.quick_contacts_dialer:before {\n content: \"\\e0cf\"; }\n .material-icons.quick_contacts_mail:before {\n content: \"\\e0d0\"; }\n .material-icons.quickreply:before {\n content: \"\\ef6c\"; }\n .material-icons.quiz:before {\n content: \"\\f04c\"; }\n .material-icons.quora:before {\n content: \"\\ea98\"; }\n .material-icons.r_mobiledata:before {\n content: \"\\f04d\"; }\n .material-icons.radar:before {\n content: \"\\f04e\"; }\n .material-icons.radio:before {\n content: \"\\e03e\"; }\n .material-icons.radio_button_checked:before {\n content: \"\\e837\"; }\n .material-icons.radio_button_off:before {\n content: \"\\e836\"; }\n .material-icons.radio_button_on:before {\n content: \"\\e837\"; }\n .material-icons.radio_button_unchecked:before {\n content: \"\\e836\"; }\n .material-icons.railway_alert:before {\n content: \"\\e9d1\"; }\n .material-icons.ramen_dining:before {\n content: \"\\ea64\"; }\n .material-icons.ramp_left:before {\n content: \"\\eb9c\"; }\n .material-icons.ramp_right:before {\n content: \"\\eb96\"; }\n .material-icons.rate_review:before {\n content: \"\\e560\"; }\n .material-icons.raw_off:before {\n content: \"\\f04f\"; }\n .material-icons.raw_on:before {\n content: \"\\f050\"; }\n .material-icons.read_more:before {\n content: \"\\ef6d\"; }\n .material-icons.real_estate_agent:before {\n content: \"\\e73a\"; }\n .material-icons.receipt:before {\n content: \"\\e8b0\"; }\n .material-icons.receipt_long:before {\n content: \"\\ef6e\"; }\n .material-icons.recent_actors:before {\n content: \"\\e03f\"; }\n .material-icons.recommend:before {\n content: \"\\e9d2\"; }\n .material-icons.record_voice_over:before {\n content: \"\\e91f\"; }\n .material-icons.rectangle:before {\n content: \"\\eb54\"; }\n .material-icons.recycling:before {\n content: \"\\e760\"; }\n .material-icons.reddit:before {\n content: \"\\eaa0\"; }\n .material-icons.redeem:before {\n content: \"\\e8b1\"; }\n .material-icons.redo:before {\n content: \"\\e15a\"; }\n .material-icons.reduce_capacity:before {\n content: \"\\f21c\"; }\n .material-icons.refresh:before {\n content: \"\\e5d5\"; }\n .material-icons.remember_me:before {\n content: \"\\f051\"; }\n .material-icons.remove:before {\n content: \"\\e15b\"; }\n .material-icons.remove_circle:before {\n content: \"\\e15c\"; }\n .material-icons.remove_circle_outline:before {\n content: \"\\e15d\"; }\n .material-icons.remove_done:before {\n content: \"\\e9d3\"; }\n .material-icons.remove_from_queue:before {\n content: \"\\e067\"; }\n .material-icons.remove_moderator:before {\n content: \"\\e9d4\"; }\n .material-icons.remove_red_eye:before {\n content: \"\\e417\"; }\n .material-icons.remove_road:before {\n content: \"\\ebfc\"; }\n .material-icons.remove_shopping_cart:before {\n content: \"\\e928\"; }\n .material-icons.reorder:before {\n content: \"\\e8fe\"; }\n .material-icons.repartition:before {\n content: \"\\f8e8\"; }\n .material-icons.repeat:before {\n content: \"\\e040\"; }\n .material-icons.repeat_on:before {\n content: \"\\e9d6\"; }\n .material-icons.repeat_one:before {\n content: \"\\e041\"; }\n .material-icons.repeat_one_on:before {\n content: \"\\e9d7\"; }\n .material-icons.replay:before {\n content: \"\\e042\"; }\n .material-icons.replay_10:before {\n content: \"\\e059\"; }\n .material-icons.replay_30:before {\n content: \"\\e05a\"; }\n .material-icons.replay_5:before {\n content: \"\\e05b\"; }\n .material-icons.replay_circle_filled:before {\n content: \"\\e9d8\"; }\n .material-icons.reply:before {\n content: \"\\e15e\"; }\n .material-icons.reply_all:before {\n content: \"\\e15f\"; }\n .material-icons.report:before {\n content: \"\\e160\"; }\n .material-icons.report_gmailerrorred:before {\n content: \"\\f052\"; }\n .material-icons.report_off:before {\n content: \"\\e170\"; }\n .material-icons.report_problem:before {\n content: \"\\e8b2\"; }\n .material-icons.request_page:before {\n content: \"\\f22c\"; }\n .material-icons.request_quote:before {\n content: \"\\f1b6\"; }\n .material-icons.reset_tv:before {\n content: \"\\e9d9\"; }\n .material-icons.restart_alt:before {\n content: \"\\f053\"; }\n .material-icons.restaurant:before {\n content: \"\\e56c\"; }\n .material-icons.restaurant_menu:before {\n content: \"\\e561\"; }\n .material-icons.restore:before {\n content: \"\\e8b3\"; }\n .material-icons.restore_from_trash:before {\n content: \"\\e938\"; }\n .material-icons.restore_page:before {\n content: \"\\e929\"; }\n .material-icons.reviews:before {\n content: \"\\f054\"; }\n .material-icons.rice_bowl:before {\n content: \"\\f1f5\"; }\n .material-icons.ring_volume:before {\n content: \"\\e0d1\"; }\n .material-icons.rocket:before {\n content: \"\\eba5\"; }\n .material-icons.rocket_launch:before {\n content: \"\\eb9b\"; }\n .material-icons.roller_shades:before {\n content: \"\\ec12\"; }\n .material-icons.roller_shades_closed:before {\n content: \"\\ec11\"; }\n .material-icons.roller_skating:before {\n content: \"\\ebcd\"; }\n .material-icons.roofing:before {\n content: \"\\f201\"; }\n .material-icons.room:before {\n content: \"\\e8b4\"; }\n .material-icons.room_preferences:before {\n content: \"\\f1b8\"; }\n .material-icons.room_service:before {\n content: \"\\eb49\"; }\n .material-icons.rotate_90_degrees_ccw:before {\n content: \"\\e418\"; }\n .material-icons.rotate_90_degrees_cw:before {\n content: \"\\eaab\"; }\n .material-icons.rotate_left:before {\n content: \"\\e419\"; }\n .material-icons.rotate_right:before {\n content: \"\\e41a\"; }\n .material-icons.roundabout_left:before {\n content: \"\\eb99\"; }\n .material-icons.roundabout_right:before {\n content: \"\\eba3\"; }\n .material-icons.rounded_corner:before {\n content: \"\\e920\"; }\n .material-icons.route:before {\n content: \"\\eacd\"; }\n .material-icons.router:before {\n content: \"\\e328\"; }\n .material-icons.rowing:before {\n content: \"\\e921\"; }\n .material-icons.rss_feed:before {\n content: \"\\e0e5\"; }\n .material-icons.rsvp:before {\n content: \"\\f055\"; }\n .material-icons.rtt:before {\n content: \"\\e9ad\"; }\n .material-icons.rule:before {\n content: \"\\f1c2\"; }\n .material-icons.rule_folder:before {\n content: \"\\f1c9\"; }\n .material-icons.run_circle:before {\n content: \"\\ef6f\"; }\n .material-icons.running_with_errors:before {\n content: \"\\e51d\"; }\n .material-icons.rv_hookup:before {\n content: \"\\e642\"; }\n .material-icons.safety_check:before {\n content: \"\\ebef\"; }\n .material-icons.safety_divider:before {\n content: \"\\e1cc\"; }\n .material-icons.sailing:before {\n content: \"\\e502\"; }\n .material-icons.sanitizer:before {\n content: \"\\f21d\"; }\n .material-icons.satellite:before {\n content: \"\\e562\"; }\n .material-icons.satellite_alt:before {\n content: \"\\eb3a\"; }\n .material-icons.save:before {\n content: \"\\e161\"; }\n .material-icons.save_alt:before {\n content: \"\\e171\"; }\n .material-icons.save_as:before {\n content: \"\\eb60\"; }\n .material-icons.saved_search:before {\n content: \"\\ea11\"; }\n .material-icons.savings:before {\n content: \"\\e2eb\"; }\n .material-icons.scale:before {\n content: \"\\eb5f\"; }\n .material-icons.scanner:before {\n content: \"\\e329\"; }\n .material-icons.scatter_plot:before {\n content: \"\\e268\"; }\n .material-icons.schedule:before {\n content: \"\\e8b5\"; }\n .material-icons.schedule_send:before {\n content: \"\\ea0a\"; }\n .material-icons.schema:before {\n content: \"\\e4fd\"; }\n .material-icons.school:before {\n content: \"\\e80c\"; }\n .material-icons.science:before {\n content: \"\\ea4b\"; }\n .material-icons.score:before {\n content: \"\\e269\"; }\n .material-icons.scoreboard:before {\n content: \"\\ebd0\"; }\n .material-icons.screen_lock_landscape:before {\n content: \"\\e1be\"; }\n .material-icons.screen_lock_portrait:before {\n content: \"\\e1bf\"; }\n .material-icons.screen_lock_rotation:before {\n content: \"\\e1c0\"; }\n .material-icons.screen_rotation:before {\n content: \"\\e1c1\"; }\n .material-icons.screen_rotation_alt:before {\n content: \"\\ebee\"; }\n .material-icons.screen_search_desktop:before {\n content: \"\\ef70\"; }\n .material-icons.screen_share:before {\n content: \"\\e0e2\"; }\n .material-icons.screenshot:before {\n content: \"\\f056\"; }\n .material-icons.screenshot_monitor:before {\n content: \"\\ec08\"; }\n .material-icons.scuba_diving:before {\n content: \"\\ebce\"; }\n .material-icons.sd:before {\n content: \"\\e9dd\"; }\n .material-icons.sd_card:before {\n content: \"\\e623\"; }\n .material-icons.sd_card_alert:before {\n content: \"\\f057\"; }\n .material-icons.sd_storage:before {\n content: \"\\e1c2\"; }\n .material-icons.search:before {\n content: \"\\e8b6\"; }\n .material-icons.search_off:before {\n content: \"\\ea76\"; }\n .material-icons.security:before {\n content: \"\\e32a\"; }\n .material-icons.security_update:before {\n content: \"\\f058\"; }\n .material-icons.security_update_good:before {\n content: \"\\f059\"; }\n .material-icons.security_update_warning:before {\n content: \"\\f05a\"; }\n .material-icons.segment:before {\n content: \"\\e94b\"; }\n .material-icons.select_all:before {\n content: \"\\e162\"; }\n .material-icons.self_improvement:before {\n content: \"\\ea78\"; }\n .material-icons.sell:before {\n content: \"\\f05b\"; }\n .material-icons.send:before {\n content: \"\\e163\"; }\n .material-icons.send_and_archive:before {\n content: \"\\ea0c\"; }\n .material-icons.send_time_extension:before {\n content: \"\\eadb\"; }\n .material-icons.send_to_mobile:before {\n content: \"\\f05c\"; }\n .material-icons.sensor_door:before {\n content: \"\\f1b5\"; }\n .material-icons.sensor_occupied:before {\n content: \"\\ec10\"; }\n .material-icons.sensor_window:before {\n content: \"\\f1b4\"; }\n .material-icons.sensors:before {\n content: \"\\e51e\"; }\n .material-icons.sensors_off:before {\n content: \"\\e51f\"; }\n .material-icons.sentiment_dissatisfied:before {\n content: \"\\e811\"; }\n .material-icons.sentiment_neutral:before {\n content: \"\\e812\"; }\n .material-icons.sentiment_satisfied:before {\n content: \"\\e813\"; }\n .material-icons.sentiment_satisfied_alt:before {\n content: \"\\e0ed\"; }\n .material-icons.sentiment_very_dissatisfied:before {\n content: \"\\e814\"; }\n .material-icons.sentiment_very_satisfied:before {\n content: \"\\e815\"; }\n .material-icons.set_meal:before {\n content: \"\\f1ea\"; }\n .material-icons.settings:before {\n content: \"\\e8b8\"; }\n .material-icons.settings_accessibility:before {\n content: \"\\f05d\"; }\n .material-icons.settings_applications:before {\n content: \"\\e8b9\"; }\n .material-icons.settings_backup_restore:before {\n content: \"\\e8ba\"; }\n .material-icons.settings_bluetooth:before {\n content: \"\\e8bb\"; }\n .material-icons.settings_brightness:before {\n content: \"\\e8bd\"; }\n .material-icons.settings_cell:before {\n content: \"\\e8bc\"; }\n .material-icons.settings_display:before {\n content: \"\\e8bd\"; }\n .material-icons.settings_ethernet:before {\n content: \"\\e8be\"; }\n .material-icons.settings_input_antenna:before {\n content: \"\\e8bf\"; }\n .material-icons.settings_input_component:before {\n content: \"\\e8c0\"; }\n .material-icons.settings_input_composite:before {\n content: \"\\e8c1\"; }\n .material-icons.settings_input_hdmi:before {\n content: \"\\e8c2\"; }\n .material-icons.settings_input_svideo:before {\n content: \"\\e8c3\"; }\n .material-icons.settings_overscan:before {\n content: \"\\e8c4\"; }\n .material-icons.settings_phone:before {\n content: \"\\e8c5\"; }\n .material-icons.settings_power:before {\n content: \"\\e8c6\"; }\n .material-icons.settings_remote:before {\n content: \"\\e8c7\"; }\n .material-icons.settings_suggest:before {\n content: \"\\f05e\"; }\n .material-icons.settings_system_daydream:before {\n content: \"\\e1c3\"; }\n .material-icons.settings_voice:before {\n content: \"\\e8c8\"; }\n .material-icons.severe_cold:before {\n content: \"\\ebd3\"; }\n .material-icons.share:before {\n content: \"\\e80d\"; }\n .material-icons.share_arrival_time:before {\n content: \"\\e524\"; }\n .material-icons.share_location:before {\n content: \"\\f05f\"; }\n .material-icons.shield:before {\n content: \"\\e9e0\"; }\n .material-icons.shield_moon:before {\n content: \"\\eaa9\"; }\n .material-icons.shop:before {\n content: \"\\e8c9\"; }\n .material-icons.shop_2:before {\n content: \"\\e19e\"; }\n .material-icons.shop_two:before {\n content: \"\\e8ca\"; }\n .material-icons.shopify:before {\n content: \"\\ea9d\"; }\n .material-icons.shopping_bag:before {\n content: \"\\f1cc\"; }\n .material-icons.shopping_basket:before {\n content: \"\\e8cb\"; }\n .material-icons.shopping_cart:before {\n content: \"\\e8cc\"; }\n .material-icons.shopping_cart_checkout:before {\n content: \"\\eb88\"; }\n .material-icons.short_text:before {\n content: \"\\e261\"; }\n .material-icons.shortcut:before {\n content: \"\\f060\"; }\n .material-icons.show_chart:before {\n content: \"\\e6e1\"; }\n .material-icons.shower:before {\n content: \"\\f061\"; }\n .material-icons.shuffle:before {\n content: \"\\e043\"; }\n .material-icons.shuffle_on:before {\n content: \"\\e9e1\"; }\n .material-icons.shutter_speed:before {\n content: \"\\e43d\"; }\n .material-icons.sick:before {\n content: \"\\f220\"; }\n .material-icons.sign_language:before {\n content: \"\\ebe5\"; }\n .material-icons.signal_cellular_0_bar:before {\n content: \"\\f0a8\"; }\n .material-icons.signal_cellular_4_bar:before {\n content: \"\\e1c8\"; }\n .material-icons.signal_cellular_alt:before {\n content: \"\\e202\"; }\n .material-icons.signal_cellular_alt_1_bar:before {\n content: \"\\ebdf\"; }\n .material-icons.signal_cellular_alt_2_bar:before {\n content: \"\\ebe3\"; }\n .material-icons.signal_cellular_connected_no_internet_0_bar:before {\n content: \"\\f0ac\"; }\n .material-icons.signal_cellular_connected_no_internet_4_bar:before {\n content: \"\\e1cd\"; }\n .material-icons.signal_cellular_no_sim:before {\n content: \"\\e1ce\"; }\n .material-icons.signal_cellular_nodata:before {\n content: \"\\f062\"; }\n .material-icons.signal_cellular_null:before {\n content: \"\\e1cf\"; }\n .material-icons.signal_cellular_off:before {\n content: \"\\e1d0\"; }\n .material-icons.signal_wifi_0_bar:before {\n content: \"\\f0b0\"; }\n .material-icons.signal_wifi_4_bar:before {\n content: \"\\e1d8\"; }\n .material-icons.signal_wifi_4_bar_lock:before {\n content: \"\\e1d9\"; }\n .material-icons.signal_wifi_bad:before {\n content: \"\\f063\"; }\n .material-icons.signal_wifi_connected_no_internet_4:before {\n content: \"\\f064\"; }\n .material-icons.signal_wifi_off:before {\n content: \"\\e1da\"; }\n .material-icons.signal_wifi_statusbar_4_bar:before {\n content: \"\\f065\"; }\n .material-icons.signal_wifi_statusbar_connected_no_internet_4:before {\n content: \"\\f066\"; }\n .material-icons.signal_wifi_statusbar_null:before {\n content: \"\\f067\"; }\n .material-icons.signpost:before {\n content: \"\\eb91\"; }\n .material-icons.sim_card:before {\n content: \"\\e32b\"; }\n .material-icons.sim_card_alert:before {\n content: \"\\e624\"; }\n .material-icons.sim_card_download:before {\n content: \"\\f068\"; }\n .material-icons.single_bed:before {\n content: \"\\ea48\"; }\n .material-icons.sip:before {\n content: \"\\f069\"; }\n .material-icons.skateboarding:before {\n content: \"\\e511\"; }\n .material-icons.skip_next:before {\n content: \"\\e044\"; }\n .material-icons.skip_previous:before {\n content: \"\\e045\"; }\n .material-icons.sledding:before {\n content: \"\\e512\"; }\n .material-icons.slideshow:before {\n content: \"\\e41b\"; }\n .material-icons.slow_motion_video:before {\n content: \"\\e068\"; }\n .material-icons.smart_button:before {\n content: \"\\f1c1\"; }\n .material-icons.smart_display:before {\n content: \"\\f06a\"; }\n .material-icons.smart_screen:before {\n content: \"\\f06b\"; }\n .material-icons.smart_toy:before {\n content: \"\\f06c\"; }\n .material-icons.smartphone:before {\n content: \"\\e32c\"; }\n .material-icons.smoke_free:before {\n content: \"\\eb4a\"; }\n .material-icons.smoking_rooms:before {\n content: \"\\eb4b\"; }\n .material-icons.sms:before {\n content: \"\\e625\"; }\n .material-icons.sms_failed:before {\n content: \"\\e626\"; }\n .material-icons.snapchat:before {\n content: \"\\ea6e\"; }\n .material-icons.snippet_folder:before {\n content: \"\\f1c7\"; }\n .material-icons.snooze:before {\n content: \"\\e046\"; }\n .material-icons.snowboarding:before {\n content: \"\\e513\"; }\n .material-icons.snowing:before {\n content: \"\\e80f\"; }\n .material-icons.snowmobile:before {\n content: \"\\e503\"; }\n .material-icons.snowshoeing:before {\n content: \"\\e514\"; }\n .material-icons.soap:before {\n content: \"\\f1b2\"; }\n .material-icons.social_distance:before {\n content: \"\\e1cb\"; }\n .material-icons.solar_power:before {\n content: \"\\ec0f\"; }\n .material-icons.sort:before {\n content: \"\\e164\"; }\n .material-icons.sort_by_alpha:before {\n content: \"\\e053\"; }\n .material-icons.sos:before {\n content: \"\\ebf7\"; }\n .material-icons.soup_kitchen:before {\n content: \"\\e7d3\"; }\n .material-icons.source:before {\n content: \"\\f1c4\"; }\n .material-icons.south:before {\n content: \"\\f1e3\"; }\n .material-icons.south_america:before {\n content: \"\\e7e4\"; }\n .material-icons.south_east:before {\n content: \"\\f1e4\"; }\n .material-icons.south_west:before {\n content: \"\\f1e5\"; }\n .material-icons.spa:before {\n content: \"\\eb4c\"; }\n .material-icons.space_bar:before {\n content: \"\\e256\"; }\n .material-icons.space_dashboard:before {\n content: \"\\e66b\"; }\n .material-icons.spatial_audio:before {\n content: \"\\ebeb\"; }\n .material-icons.spatial_audio_off:before {\n content: \"\\ebe8\"; }\n .material-icons.spatial_tracking:before {\n content: \"\\ebea\"; }\n .material-icons.speaker:before {\n content: \"\\e32d\"; }\n .material-icons.speaker_group:before {\n content: \"\\e32e\"; }\n .material-icons.speaker_notes:before {\n content: \"\\e8cd\"; }\n .material-icons.speaker_notes_off:before {\n content: \"\\e92a\"; }\n .material-icons.speaker_phone:before {\n content: \"\\e0d2\"; }\n .material-icons.speed:before {\n content: \"\\e9e4\"; }\n .material-icons.spellcheck:before {\n content: \"\\e8ce\"; }\n .material-icons.splitscreen:before {\n content: \"\\f06d\"; }\n .material-icons.spoke:before {\n content: \"\\e9a7\"; }\n .material-icons.sports:before {\n content: \"\\ea30\"; }\n .material-icons.sports_bar:before {\n content: \"\\f1f3\"; }\n .material-icons.sports_baseball:before {\n content: \"\\ea51\"; }\n .material-icons.sports_basketball:before {\n content: \"\\ea26\"; }\n .material-icons.sports_cricket:before {\n content: \"\\ea27\"; }\n .material-icons.sports_esports:before {\n content: \"\\ea28\"; }\n .material-icons.sports_football:before {\n content: \"\\ea29\"; }\n .material-icons.sports_golf:before {\n content: \"\\ea2a\"; }\n .material-icons.sports_gymnastics:before {\n content: \"\\ebc4\"; }\n .material-icons.sports_handball:before {\n content: \"\\ea33\"; }\n .material-icons.sports_hockey:before {\n content: \"\\ea2b\"; }\n .material-icons.sports_kabaddi:before {\n content: \"\\ea34\"; }\n .material-icons.sports_martial_arts:before {\n content: \"\\eae9\"; }\n .material-icons.sports_mma:before {\n content: \"\\ea2c\"; }\n .material-icons.sports_motorsports:before {\n content: \"\\ea2d\"; }\n .material-icons.sports_rugby:before {\n content: \"\\ea2e\"; }\n .material-icons.sports_score:before {\n content: \"\\f06e\"; }\n .material-icons.sports_soccer:before {\n content: \"\\ea2f\"; }\n .material-icons.sports_tennis:before {\n content: \"\\ea32\"; }\n .material-icons.sports_volleyball:before {\n content: \"\\ea31\"; }\n .material-icons.square:before {\n content: \"\\eb36\"; }\n .material-icons.square_foot:before {\n content: \"\\ea49\"; }\n .material-icons.ssid_chart:before {\n content: \"\\eb66\"; }\n .material-icons.stacked_bar_chart:before {\n content: \"\\e9e6\"; }\n .material-icons.stacked_line_chart:before {\n content: \"\\f22b\"; }\n .material-icons.stadium:before {\n content: \"\\eb90\"; }\n .material-icons.stairs:before {\n content: \"\\f1a9\"; }\n .material-icons.star:before {\n content: \"\\e838\"; }\n .material-icons.star_border:before {\n content: \"\\e83a\"; }\n .material-icons.star_border_purple500:before {\n content: \"\\f099\"; }\n .material-icons.star_half:before {\n content: \"\\e839\"; }\n .material-icons.star_outline:before {\n content: \"\\f06f\"; }\n .material-icons.star_purple500:before {\n content: \"\\f09a\"; }\n .material-icons.star_rate:before {\n content: \"\\f0ec\"; }\n .material-icons.stars:before {\n content: \"\\e8d0\"; }\n .material-icons.start:before {\n content: \"\\e089\"; }\n .material-icons.stay_current_landscape:before {\n content: \"\\e0d3\"; }\n .material-icons.stay_current_portrait:before {\n content: \"\\e0d4\"; }\n .material-icons.stay_primary_landscape:before {\n content: \"\\e0d5\"; }\n .material-icons.stay_primary_portrait:before {\n content: \"\\e0d6\"; }\n .material-icons.sticky_note_2:before {\n content: \"\\f1fc\"; }\n .material-icons.stop:before {\n content: \"\\e047\"; }\n .material-icons.stop_circle:before {\n content: \"\\ef71\"; }\n .material-icons.stop_screen_share:before {\n content: \"\\e0e3\"; }\n .material-icons.storage:before {\n content: \"\\e1db\"; }\n .material-icons.store:before {\n content: \"\\e8d1\"; }\n .material-icons.store_mall_directory:before {\n content: \"\\e563\"; }\n .material-icons.storefront:before {\n content: \"\\ea12\"; }\n .material-icons.storm:before {\n content: \"\\f070\"; }\n .material-icons.straight:before {\n content: \"\\eb95\"; }\n .material-icons.straighten:before {\n content: \"\\e41c\"; }\n .material-icons.stream:before {\n content: \"\\e9e9\"; }\n .material-icons.streetview:before {\n content: \"\\e56e\"; }\n .material-icons.strikethrough_s:before {\n content: \"\\e257\"; }\n .material-icons.stroller:before {\n content: \"\\f1ae\"; }\n .material-icons.style:before {\n content: \"\\e41d\"; }\n .material-icons.subdirectory_arrow_left:before {\n content: \"\\e5d9\"; }\n .material-icons.subdirectory_arrow_right:before {\n content: \"\\e5da\"; }\n .material-icons.subject:before {\n content: \"\\e8d2\"; }\n .material-icons.subscript:before {\n content: \"\\f111\"; }\n .material-icons.subscriptions:before {\n content: \"\\e064\"; }\n .material-icons.subtitles:before {\n content: \"\\e048\"; }\n .material-icons.subtitles_off:before {\n content: \"\\ef72\"; }\n .material-icons.subway:before {\n content: \"\\e56f\"; }\n .material-icons.summarize:before {\n content: \"\\f071\"; }\n .material-icons.sunny:before {\n content: \"\\e81a\"; }\n .material-icons.sunny_snowing:before {\n content: \"\\e819\"; }\n .material-icons.superscript:before {\n content: \"\\f112\"; }\n .material-icons.supervised_user_circle:before {\n content: \"\\e939\"; }\n .material-icons.supervisor_account:before {\n content: \"\\e8d3\"; }\n .material-icons.support:before {\n content: \"\\ef73\"; }\n .material-icons.support_agent:before {\n content: \"\\f0e2\"; }\n .material-icons.surfing:before {\n content: \"\\e515\"; }\n .material-icons.surround_sound:before {\n content: \"\\e049\"; }\n .material-icons.swap_calls:before {\n content: \"\\e0d7\"; }\n .material-icons.swap_horiz:before {\n content: \"\\e8d4\"; }\n .material-icons.swap_horizontal_circle:before {\n content: \"\\e933\"; }\n .material-icons.swap_vert:before {\n content: \"\\e8d5\"; }\n .material-icons.swap_vert_circle:before {\n content: \"\\e8d6\"; }\n .material-icons.swap_vertical_circle:before {\n content: \"\\e8d6\"; }\n .material-icons.swipe:before {\n content: \"\\e9ec\"; }\n .material-icons.swipe_down:before {\n content: \"\\eb53\"; }\n .material-icons.swipe_down_alt:before {\n content: \"\\eb30\"; }\n .material-icons.swipe_left:before {\n content: \"\\eb59\"; }\n .material-icons.swipe_left_alt:before {\n content: \"\\eb33\"; }\n .material-icons.swipe_right:before {\n content: \"\\eb52\"; }\n .material-icons.swipe_right_alt:before {\n content: \"\\eb56\"; }\n .material-icons.swipe_up:before {\n content: \"\\eb2e\"; }\n .material-icons.swipe_up_alt:before {\n content: \"\\eb35\"; }\n .material-icons.swipe_vertical:before {\n content: \"\\eb51\"; }\n .material-icons.switch_access_shortcut:before {\n content: \"\\e7e1\"; }\n .material-icons.switch_access_shortcut_add:before {\n content: \"\\e7e2\"; }\n .material-icons.switch_account:before {\n content: \"\\e9ed\"; }\n .material-icons.switch_camera:before {\n content: \"\\e41e\"; }\n .material-icons.switch_left:before {\n content: \"\\f1d1\"; }\n .material-icons.switch_right:before {\n content: \"\\f1d2\"; }\n .material-icons.switch_video:before {\n content: \"\\e41f\"; }\n .material-icons.synagogue:before {\n content: \"\\eab0\"; }\n .material-icons.sync:before {\n content: \"\\e627\"; }\n .material-icons.sync_alt:before {\n content: \"\\ea18\"; }\n .material-icons.sync_disabled:before {\n content: \"\\e628\"; }\n .material-icons.sync_lock:before {\n content: \"\\eaee\"; }\n .material-icons.sync_problem:before {\n content: \"\\e629\"; }\n .material-icons.system_security_update:before {\n content: \"\\f072\"; }\n .material-icons.system_security_update_good:before {\n content: \"\\f073\"; }\n .material-icons.system_security_update_warning:before {\n content: \"\\f074\"; }\n .material-icons.system_update:before {\n content: \"\\e62a\"; }\n .material-icons.system_update_alt:before {\n content: \"\\e8d7\"; }\n .material-icons.system_update_tv:before {\n content: \"\\e8d7\"; }\n .material-icons.tab:before {\n content: \"\\e8d8\"; }\n .material-icons.tab_unselected:before {\n content: \"\\e8d9\"; }\n .material-icons.table_bar:before {\n content: \"\\ead2\"; }\n .material-icons.table_chart:before {\n content: \"\\e265\"; }\n .material-icons.table_restaurant:before {\n content: \"\\eac6\"; }\n .material-icons.table_rows:before {\n content: \"\\f101\"; }\n .material-icons.table_view:before {\n content: \"\\f1be\"; }\n .material-icons.tablet:before {\n content: \"\\e32f\"; }\n .material-icons.tablet_android:before {\n content: \"\\e330\"; }\n .material-icons.tablet_mac:before {\n content: \"\\e331\"; }\n .material-icons.tag:before {\n content: \"\\e9ef\"; }\n .material-icons.tag_faces:before {\n content: \"\\e420\"; }\n .material-icons.takeout_dining:before {\n content: \"\\ea74\"; }\n .material-icons.tap_and_play:before {\n content: \"\\e62b\"; }\n .material-icons.tapas:before {\n content: \"\\f1e9\"; }\n .material-icons.task:before {\n content: \"\\f075\"; }\n .material-icons.task_alt:before {\n content: \"\\e2e6\"; }\n .material-icons.taxi_alert:before {\n content: \"\\ef74\"; }\n .material-icons.telegram:before {\n content: \"\\ea6b\"; }\n .material-icons.temple_buddhist:before {\n content: \"\\eab3\"; }\n .material-icons.temple_hindu:before {\n content: \"\\eaaf\"; }\n .material-icons.terminal:before {\n content: \"\\eb8e\"; }\n .material-icons.terrain:before {\n content: \"\\e564\"; }\n .material-icons.text_decrease:before {\n content: \"\\eadd\"; }\n .material-icons.text_fields:before {\n content: \"\\e262\"; }\n .material-icons.text_format:before {\n content: \"\\e165\"; }\n .material-icons.text_increase:before {\n content: \"\\eae2\"; }\n .material-icons.text_rotate_up:before {\n content: \"\\e93a\"; }\n .material-icons.text_rotate_vertical:before {\n content: \"\\e93b\"; }\n .material-icons.text_rotation_angledown:before {\n content: \"\\e93c\"; }\n .material-icons.text_rotation_angleup:before {\n content: \"\\e93d\"; }\n .material-icons.text_rotation_down:before {\n content: \"\\e93e\"; }\n .material-icons.text_rotation_none:before {\n content: \"\\e93f\"; }\n .material-icons.text_snippet:before {\n content: \"\\f1c6\"; }\n .material-icons.textsms:before {\n content: \"\\e0d8\"; }\n .material-icons.texture:before {\n content: \"\\e421\"; }\n .material-icons.theater_comedy:before {\n content: \"\\ea66\"; }\n .material-icons.theaters:before {\n content: \"\\e8da\"; }\n .material-icons.thermostat:before {\n content: \"\\f076\"; }\n .material-icons.thermostat_auto:before {\n content: \"\\f077\"; }\n .material-icons.thumb_down:before {\n content: \"\\e8db\"; }\n .material-icons.thumb_down_alt:before {\n content: \"\\e816\"; }\n .material-icons.thumb_down_off_alt:before {\n content: \"\\e9f2\"; }\n .material-icons.thumb_up:before {\n content: \"\\e8dc\"; }\n .material-icons.thumb_up_alt:before {\n content: \"\\e817\"; }\n .material-icons.thumb_up_off_alt:before {\n content: \"\\e9f3\"; }\n .material-icons.thumbs_up_down:before {\n content: \"\\e8dd\"; }\n .material-icons.thunderstorm:before {\n content: \"\\ebdb\"; }\n .material-icons.tiktok:before {\n content: \"\\ea7e\"; }\n .material-icons.time_to_leave:before {\n content: \"\\e62c\"; }\n .material-icons.timelapse:before {\n content: \"\\e422\"; }\n .material-icons.timeline:before {\n content: \"\\e922\"; }\n .material-icons.timer:before {\n content: \"\\e425\"; }\n .material-icons.timer_10:before {\n content: \"\\e423\"; }\n .material-icons.timer_10_select:before {\n content: \"\\f07a\"; }\n .material-icons.timer_3:before {\n content: \"\\e424\"; }\n .material-icons.timer_3_select:before {\n content: \"\\f07b\"; }\n .material-icons.timer_off:before {\n content: \"\\e426\"; }\n .material-icons.tips_and_updates:before {\n content: \"\\e79a\"; }\n .material-icons.tire_repair:before {\n content: \"\\ebc8\"; }\n .material-icons.title:before {\n content: \"\\e264\"; }\n .material-icons.toc:before {\n content: \"\\e8de\"; }\n .material-icons.today:before {\n content: \"\\e8df\"; }\n .material-icons.toggle_off:before {\n content: \"\\e9f5\"; }\n .material-icons.toggle_on:before {\n content: \"\\e9f6\"; }\n .material-icons.token:before {\n content: \"\\ea25\"; }\n .material-icons.toll:before {\n content: \"\\e8e0\"; }\n .material-icons.tonality:before {\n content: \"\\e427\"; }\n .material-icons.topic:before {\n content: \"\\f1c8\"; }\n .material-icons.tornado:before {\n content: \"\\e199\"; }\n .material-icons.touch_app:before {\n content: \"\\e913\"; }\n .material-icons.tour:before {\n content: \"\\ef75\"; }\n .material-icons.toys:before {\n content: \"\\e332\"; }\n .material-icons.track_changes:before {\n content: \"\\e8e1\"; }\n .material-icons.traffic:before {\n content: \"\\e565\"; }\n .material-icons.train:before {\n content: \"\\e570\"; }\n .material-icons.tram:before {\n content: \"\\e571\"; }\n .material-icons.transcribe:before {\n content: \"\\f8ec\"; }\n .material-icons.transfer_within_a_station:before {\n content: \"\\e572\"; }\n .material-icons.transform:before {\n content: \"\\e428\"; }\n .material-icons.transgender:before {\n content: \"\\e58d\"; }\n .material-icons.transit_enterexit:before {\n content: \"\\e579\"; }\n .material-icons.translate:before {\n content: \"\\e8e2\"; }\n .material-icons.travel_explore:before {\n content: \"\\e2db\"; }\n .material-icons.trending_down:before {\n content: \"\\e8e3\"; }\n .material-icons.trending_flat:before {\n content: \"\\e8e4\"; }\n .material-icons.trending_neutral:before {\n content: \"\\e8e4\"; }\n .material-icons.trending_up:before {\n content: \"\\e8e5\"; }\n .material-icons.trip_origin:before {\n content: \"\\e57b\"; }\n .material-icons.troubleshoot:before {\n content: \"\\e1d2\"; }\n .material-icons.try:before {\n content: \"\\f07c\"; }\n .material-icons.tsunami:before {\n content: \"\\ebd8\"; }\n .material-icons.tty:before {\n content: \"\\f1aa\"; }\n .material-icons.tune:before {\n content: \"\\e429\"; }\n .material-icons.tungsten:before {\n content: \"\\f07d\"; }\n .material-icons.turn_left:before {\n content: \"\\eba6\"; }\n .material-icons.turn_right:before {\n content: \"\\ebab\"; }\n .material-icons.turn_sharp_left:before {\n content: \"\\eba7\"; }\n .material-icons.turn_sharp_right:before {\n content: \"\\ebaa\"; }\n .material-icons.turn_slight_left:before {\n content: \"\\eba4\"; }\n .material-icons.turn_slight_right:before {\n content: \"\\eb9a\"; }\n .material-icons.turned_in:before {\n content: \"\\e8e6\"; }\n .material-icons.turned_in_not:before {\n content: \"\\e8e7\"; }\n .material-icons.tv:before {\n content: \"\\e333\"; }\n .material-icons.tv_off:before {\n content: \"\\e647\"; }\n .material-icons.two_wheeler:before {\n content: \"\\e9f9\"; }\n .material-icons.type_specimen:before {\n content: \"\\f8f0\"; }\n .material-icons.u_turn_left:before {\n content: \"\\eba1\"; }\n .material-icons.u_turn_right:before {\n content: \"\\eba2\"; }\n .material-icons.umbrella:before {\n content: \"\\f1ad\"; }\n .material-icons.unarchive:before {\n content: \"\\e169\"; }\n .material-icons.undo:before {\n content: \"\\e166\"; }\n .material-icons.unfold_less:before {\n content: \"\\e5d6\"; }\n .material-icons.unfold_more:before {\n content: \"\\e5d7\"; }\n .material-icons.unpublished:before {\n content: \"\\f236\"; }\n .material-icons.unsubscribe:before {\n content: \"\\e0eb\"; }\n .material-icons.upcoming:before {\n content: \"\\f07e\"; }\n .material-icons.update:before {\n content: \"\\e923\"; }\n .material-icons.update_disabled:before {\n content: \"\\e075\"; }\n .material-icons.upgrade:before {\n content: \"\\f0fb\"; }\n .material-icons.upload:before {\n content: \"\\f09b\"; }\n .material-icons.upload_file:before {\n content: \"\\e9fc\"; }\n .material-icons.usb:before {\n content: \"\\e1e0\"; }\n .material-icons.usb_off:before {\n content: \"\\e4fa\"; }\n .material-icons.vaccines:before {\n content: \"\\e138\"; }\n .material-icons.vape_free:before {\n content: \"\\ebc6\"; }\n .material-icons.vaping_rooms:before {\n content: \"\\ebcf\"; }\n .material-icons.verified:before {\n content: \"\\ef76\"; }\n .material-icons.verified_user:before {\n content: \"\\e8e8\"; }\n .material-icons.vertical_align_bottom:before {\n content: \"\\e258\"; }\n .material-icons.vertical_align_center:before {\n content: \"\\e259\"; }\n .material-icons.vertical_align_top:before {\n content: \"\\e25a\"; }\n .material-icons.vertical_distribute:before {\n content: \"\\e076\"; }\n .material-icons.vertical_shades:before {\n content: \"\\ec0e\"; }\n .material-icons.vertical_shades_closed:before {\n content: \"\\ec0d\"; }\n .material-icons.vertical_split:before {\n content: \"\\e949\"; }\n .material-icons.vibration:before {\n content: \"\\e62d\"; }\n .material-icons.video_call:before {\n content: \"\\e070\"; }\n .material-icons.video_camera_back:before {\n content: \"\\f07f\"; }\n .material-icons.video_camera_front:before {\n content: \"\\f080\"; }\n .material-icons.video_collection:before {\n content: \"\\e04a\"; }\n .material-icons.video_file:before {\n content: \"\\eb87\"; }\n .material-icons.video_label:before {\n content: \"\\e071\"; }\n .material-icons.video_library:before {\n content: \"\\e04a\"; }\n .material-icons.video_settings:before {\n content: \"\\ea75\"; }\n .material-icons.video_stable:before {\n content: \"\\f081\"; }\n .material-icons.videocam:before {\n content: \"\\e04b\"; }\n .material-icons.videocam_off:before {\n content: \"\\e04c\"; }\n .material-icons.videogame_asset:before {\n content: \"\\e338\"; }\n .material-icons.videogame_asset_off:before {\n content: \"\\e500\"; }\n .material-icons.view_agenda:before {\n content: \"\\e8e9\"; }\n .material-icons.view_array:before {\n content: \"\\e8ea\"; }\n .material-icons.view_carousel:before {\n content: \"\\e8eb\"; }\n .material-icons.view_column:before {\n content: \"\\e8ec\"; }\n .material-icons.view_comfortable:before {\n content: \"\\e42a\"; }\n .material-icons.view_comfy:before {\n content: \"\\e42a\"; }\n .material-icons.view_comfy_alt:before {\n content: \"\\eb73\"; }\n .material-icons.view_compact:before {\n content: \"\\e42b\"; }\n .material-icons.view_compact_alt:before {\n content: \"\\eb74\"; }\n .material-icons.view_cozy:before {\n content: \"\\eb75\"; }\n .material-icons.view_day:before {\n content: \"\\e8ed\"; }\n .material-icons.view_headline:before {\n content: \"\\e8ee\"; }\n .material-icons.view_in_ar:before {\n content: \"\\e9fe\"; }\n .material-icons.view_kanban:before {\n content: \"\\eb7f\"; }\n .material-icons.view_list:before {\n content: \"\\e8ef\"; }\n .material-icons.view_module:before {\n content: \"\\e8f0\"; }\n .material-icons.view_quilt:before {\n content: \"\\e8f1\"; }\n .material-icons.view_sidebar:before {\n content: \"\\f114\"; }\n .material-icons.view_stream:before {\n content: \"\\e8f2\"; }\n .material-icons.view_timeline:before {\n content: \"\\eb85\"; }\n .material-icons.view_week:before {\n content: \"\\e8f3\"; }\n .material-icons.vignette:before {\n content: \"\\e435\"; }\n .material-icons.villa:before {\n content: \"\\e586\"; }\n .material-icons.visibility:before {\n content: \"\\e8f4\"; }\n .material-icons.visibility_off:before {\n content: \"\\e8f5\"; }\n .material-icons.voice_chat:before {\n content: \"\\e62e\"; }\n .material-icons.voice_over_off:before {\n content: \"\\e94a\"; }\n .material-icons.voicemail:before {\n content: \"\\e0d9\"; }\n .material-icons.volcano:before {\n content: \"\\ebda\"; }\n .material-icons.volume_down:before {\n content: \"\\e04d\"; }\n .material-icons.volume_down_alt:before {\n content: \"\\e79c\"; }\n .material-icons.volume_mute:before {\n content: \"\\e04e\"; }\n .material-icons.volume_off:before {\n content: \"\\e04f\"; }\n .material-icons.volume_up:before {\n content: \"\\e050\"; }\n .material-icons.volunteer_activism:before {\n content: \"\\ea70\"; }\n .material-icons.vpn_key:before {\n content: \"\\e0da\"; }\n .material-icons.vpn_key_off:before {\n content: \"\\eb7a\"; }\n .material-icons.vpn_lock:before {\n content: \"\\e62f\"; }\n .material-icons.vrpano:before {\n content: \"\\f082\"; }\n .material-icons.wallet:before {\n content: \"\\f8ff\"; }\n .material-icons.wallet_giftcard:before {\n content: \"\\e8f6\"; }\n .material-icons.wallet_membership:before {\n content: \"\\e8f7\"; }\n .material-icons.wallet_travel:before {\n content: \"\\e8f8\"; }\n .material-icons.wallpaper:before {\n content: \"\\e1bc\"; }\n .material-icons.warehouse:before {\n content: \"\\ebb8\"; }\n .material-icons.warning:before {\n content: \"\\e002\"; }\n .material-icons.warning_amber:before {\n content: \"\\f083\"; }\n .material-icons.wash:before {\n content: \"\\f1b1\"; }\n .material-icons.watch:before {\n content: \"\\e334\"; }\n .material-icons.watch_later:before {\n content: \"\\e924\"; }\n .material-icons.watch_off:before {\n content: \"\\eae3\"; }\n .material-icons.water:before {\n content: \"\\f084\"; }\n .material-icons.water_damage:before {\n content: \"\\f203\"; }\n .material-icons.water_drop:before {\n content: \"\\e798\"; }\n .material-icons.waterfall_chart:before {\n content: \"\\ea00\"; }\n .material-icons.waves:before {\n content: \"\\e176\"; }\n .material-icons.waving_hand:before {\n content: \"\\e766\"; }\n .material-icons.wb_auto:before {\n content: \"\\e42c\"; }\n .material-icons.wb_cloudy:before {\n content: \"\\e42d\"; }\n .material-icons.wb_incandescent:before {\n content: \"\\e42e\"; }\n .material-icons.wb_iridescent:before {\n content: \"\\e436\"; }\n .material-icons.wb_shade:before {\n content: \"\\ea01\"; }\n .material-icons.wb_sunny:before {\n content: \"\\e430\"; }\n .material-icons.wb_twighlight:before {\n content: \"\\ea02\"; }\n .material-icons.wb_twilight:before {\n content: \"\\e1c6\"; }\n .material-icons.wc:before {\n content: \"\\e63d\"; }\n .material-icons.web:before {\n content: \"\\e051\"; }\n .material-icons.web_asset:before {\n content: \"\\e069\"; }\n .material-icons.web_asset_off:before {\n content: \"\\e4f7\"; }\n .material-icons.web_stories:before {\n content: \"\\e595\"; }\n .material-icons.webhook:before {\n content: \"\\eb92\"; }\n .material-icons.wechat:before {\n content: \"\\ea81\"; }\n .material-icons.weekend:before {\n content: \"\\e16b\"; }\n .material-icons.west:before {\n content: \"\\f1e6\"; }\n .material-icons.whatsapp:before {\n content: \"\\ea9c\"; }\n .material-icons.whatshot:before {\n content: \"\\e80e\"; }\n .material-icons.wheelchair_pickup:before {\n content: \"\\f1ab\"; }\n .material-icons.where_to_vote:before {\n content: \"\\e177\"; }\n .material-icons.widgets:before {\n content: \"\\e1bd\"; }\n .material-icons.width_full:before {\n content: \"\\f8f5\"; }\n .material-icons.width_normal:before {\n content: \"\\f8f6\"; }\n .material-icons.width_wide:before {\n content: \"\\f8f7\"; }\n .material-icons.wifi:before {\n content: \"\\e63e\"; }\n .material-icons.wifi_1_bar:before {\n content: \"\\e4ca\"; }\n .material-icons.wifi_2_bar:before {\n content: \"\\e4d9\"; }\n .material-icons.wifi_calling:before {\n content: \"\\ef77\"; }\n .material-icons.wifi_calling_3:before {\n content: \"\\f085\"; }\n .material-icons.wifi_channel:before {\n content: \"\\eb6a\"; }\n .material-icons.wifi_find:before {\n content: \"\\eb31\"; }\n .material-icons.wifi_lock:before {\n content: \"\\e1e1\"; }\n .material-icons.wifi_off:before {\n content: \"\\e648\"; }\n .material-icons.wifi_password:before {\n content: \"\\eb6b\"; }\n .material-icons.wifi_protected_setup:before {\n content: \"\\f0fc\"; }\n .material-icons.wifi_tethering:before {\n content: \"\\e1e2\"; }\n .material-icons.wifi_tethering_error:before {\n content: \"\\ead9\"; }\n .material-icons.wifi_tethering_error_rounded:before {\n content: \"\\f086\"; }\n .material-icons.wifi_tethering_off:before {\n content: \"\\f087\"; }\n .material-icons.wind_power:before {\n content: \"\\ec0c\"; }\n .material-icons.window:before {\n content: \"\\f088\"; }\n .material-icons.wine_bar:before {\n content: \"\\f1e8\"; }\n .material-icons.woman:before {\n content: \"\\e13e\"; }\n .material-icons.woo_commerce:before {\n content: \"\\ea6d\"; }\n .material-icons.wordpress:before {\n content: \"\\ea9f\"; }\n .material-icons.work:before {\n content: \"\\e8f9\"; }\n .material-icons.work_history:before {\n content: \"\\ec09\"; }\n .material-icons.work_off:before {\n content: \"\\e942\"; }\n .material-icons.work_outline:before {\n content: \"\\e943\"; }\n .material-icons.workspace_premium:before {\n content: \"\\e7af\"; }\n .material-icons.workspaces:before {\n content: \"\\e1a0\"; }\n .material-icons.workspaces_filled:before {\n content: \"\\ea0d\"; }\n .material-icons.workspaces_outline:before {\n content: \"\\ea0f\"; }\n .material-icons.wrap_text:before {\n content: \"\\e25b\"; }\n .material-icons.wrong_location:before {\n content: \"\\ef78\"; }\n .material-icons.wysiwyg:before {\n content: \"\\f1c3\"; }\n .material-icons.yard:before {\n content: \"\\f089\"; }\n .material-icons.youtube_searched_for:before {\n content: \"\\e8fa\"; }\n .material-icons.zoom_in:before {\n content: \"\\e8ff\"; }\n .material-icons.zoom_in_map:before {\n content: \"\\eb2d\"; }\n .material-icons.zoom_out:before {\n content: \"\\e900\"; }\n .material-icons.zoom_out_map:before {\n content: \"\\e56b\"; }\n\n/*# sourceMappingURL=material-design-icons.css.map */","/*!\n\tLato font.\n*/\n/* Lato (hairline, regular) */\n@font-face {\n font-family: Lato;\n font-weight: 100;\n font-style: normal;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-hairline/lato-hairline.woff2\") format(\"woff2\"), url(\"../fonts/lato-hairline/lato-hairline.woff\") format(\"woff\");\n}\n/* Lato (hairline, italic) */\n@font-face {\n font-family: Lato;\n font-weight: 100;\n font-style: italic;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-hairline-italic/lato-hairline-italic.woff2\") format(\"woff2\"), url(\"../fonts/lato-hairline-italic/lato-hairline-italic.woff\") format(\"woff\");\n}\n/* Lato (thin, regular) */\n@font-face {\n font-family: Lato;\n font-weight: 200;\n font-style: normal;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-thin/lato-thin.woff2\") format(\"woff2\"), url(\"../fonts/lato-thin/lato-thin.woff\") format(\"woff\");\n}\n/* Lato (thin, italic) */\n@font-face {\n font-family: Lato;\n font-weight: 200;\n font-style: italic;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-thin-italic/lato-thin-italic.woff2\") format(\"woff2\"), url(\"../fonts/lato-thin-italic/lato-thin-italic.woff\") format(\"woff\");\n}\n/* Lato (light, regular) */\n@font-face {\n font-family: Lato;\n font-weight: 300;\n font-style: normal;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-light/lato-light.woff2\") format(\"woff2\"), url(\"../fonts/lato-light/lato-light.woff\") format(\"woff\");\n}\n/* Lato (light, italic) */\n@font-face {\n font-family: Lato;\n font-weight: 300;\n font-style: italic;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-light-italic/lato-light-italic.woff2\") format(\"woff2\"), url(\"../fonts/lato-light-italic/lato-light-italic.woff\") format(\"woff\");\n}\n/* Lato (normal, regular) */\n@font-face {\n font-family: Lato;\n font-weight: 400;\n font-style: normal;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-normal/lato-normal.woff2\") format(\"woff2\"), url(\"../fonts/lato-normal/lato-normal.woff\") format(\"woff\");\n}\n/* Lato (normal, italic) */\n@font-face {\n font-family: Lato;\n font-weight: 400;\n font-style: italic;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-normal-italic/lato-normal-italic.woff2\") format(\"woff2\"), url(\"../fonts/lato-normal-italic/lato-normal-italic.woff\") format(\"woff\");\n}\n/* Lato (medium, regular) */\n@font-face {\n font-family: \"Lato Medium\";\n font-weight: 400;\n font-style: normal;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-medium/lato-medium.woff2\") format(\"woff2\"), url(\"../fonts/lato-medium/lato-medium.woff\") format(\"woff\");\n}\n/* Lato (medium, italic) */\n@font-face {\n font-family: \"Lato Medium\";\n font-weight: 400;\n font-style: italic;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-medium-italic/lato-medium-italic.woff2\") format(\"woff2\"), url(\"../fonts/lato-medium-italic/lato-medium-italic.woff\") format(\"woff\");\n}\n/* Lato (semibold, regular) */\n@font-face {\n font-family: Lato;\n font-weight: 500;\n font-style: normal;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-semibold/lato-semibold.woff2\") format(\"woff2\"), url(\"../fonts/lato-semibold/lato-semibold.woff\") format(\"woff\");\n}\n/* Lato (semibold, italic) */\n@font-face {\n font-family: Lato;\n font-weight: 500;\n font-style: italic;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-semibold-italic/lato-semibold-italic.woff2\") format(\"woff2\"), url(\"../fonts/lato-semibold-italic/lato-semibold-italic.woff\") format(\"woff\");\n}\n/* Lato (bold, regular) */\n@font-face {\n font-family: Lato;\n font-weight: 600;\n font-style: normal;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-bold/lato-bold.woff2\") format(\"woff2\"), url(\"../fonts/lato-bold/lato-bold.woff\") format(\"woff\");\n}\n/* Lato (bold, italic) */\n@font-face {\n font-family: Lato;\n font-weight: 600;\n font-style: italic;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-bold-italic/lato-bold-italic.woff2\") format(\"woff2\"), url(\"../fonts/lato-bold-italic/lato-bold-italic.woff\") format(\"woff\");\n}\n/* Lato (heavy, regular) */\n@font-face {\n font-family: Lato;\n font-weight: 800;\n font-style: normal;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-heavy/lato-heavy.woff2\") format(\"woff2\"), url(\"../fonts/lato-heavy/lato-heavy.woff\") format(\"woff\");\n}\n/* Lato (heavy, italic) */\n@font-face {\n font-family: Lato;\n font-weight: 800;\n font-style: italic;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-heavy-italic/lato-heavy-italic.woff2\") format(\"woff2\"), url(\"../fonts/lato-heavy-italic/lato-heavy-italic.woff\") format(\"woff\");\n}\n/* Lato (black, regular) */\n@font-face {\n font-family: Lato;\n font-weight: 900;\n font-style: normal;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-black/lato-black.woff2\") format(\"woff2\"), url(\"../fonts/lato-black/lato-black.woff\") format(\"woff\");\n}\n/* Lato (black, italic) */\n@font-face {\n font-family: Lato;\n font-weight: 900;\n font-style: italic;\n text-rendering: optimizeLegibility;\n src: url(\"../fonts/lato-black-italic/lato-black-italic.woff2\") format(\"woff2\"), url(\"../fonts/lato-black-italic/lato-black-italic.woff\") format(\"woff\");\n}\n","/* Rules for sizing the icon. */\n.material-icons.md-18 { font-size: 18px; }\n.material-icons.md-24 { font-size: 24px; }\n.material-icons.md-36 { font-size: 36px; }\n.material-icons.md-48 { font-size: 48px; }\n\n/* Rules for using icons as black on a light background. */\n.material-icons.md-dark { color: rgb(0 0 0 / 54%); }\n.material-icons.md-dark.md-inactive { color: rgb(0 0 0 / 26%); }\n\n/* Rules for using icons as white on a dark background. */\n.material-icons.md-light { color: rgb(255 255 255 / 100%); }\n.material-icons.md-light.md-inactive { color: rgb(255 255 255 / 30%); }\n","pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#c18401}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}","#article{font-size:20px;margin:0 auto;max-width:45em;padding:5px 20px;background-color:#fff;box-shadow:0 0 10px #ccc}#article article{color:#424242;font-size:18px;line-height:1.7em;overflow-wrap:break-word}#article article h1,#article article h2,#article article h3,#article article h4,#article article h5,#article article h6{color:#212121}#article article h1 strong,#article article h2 strong,#article article h3 strong,#article article h4 strong,#article article h5 strong,#article article h6 strong{font-weight:500}#article article h6{font-size:1.2rem}#article article h5{font-size:1.6rem}#article article h4{font-size:1.9rem}#article article h3{font-size:2.2rem}#article article h2{font-size:2.5rem}#article article h1{font-size:2.7rem}#article article a{border-bottom:1px dotted #00acc1;text-decoration:none}#article article a:hover{border-bottom-style:solid}#article article ul{padding-left:30px}#article article ul,#article article ul li{list-style-type:disc}#article article blockquote{font-style:italic}#article article strong{font-weight:bold}#article img,#article figure{max-width:100%;height:auto}#article pre{box-sizing:border-box;margin:0 0 1.75em;border:#e3f2fd 1px solid;width:100%;padding:10px;font-family:monospace;font-size:.8em;white-space:pre;overflow:auto;background:#f5f5f5;border-radius:3px}#article>header>h1{font-size:2em;margin:2.1rem 0 .68rem}#article aside .tools{display:flex;flex-flow:row wrap}#article aside .tools .stats{font-size:.7em;margin:8px 5px 5px}#article aside .tools .stats li{display:inline-flex;vertical-align:middle;margin:3px 5px}#article aside .tools .stats li i.material-icons{color:#3e3e3e;margin-right:3px;font-size:18px}#article aside .tools .stats a{color:#000;text-decoration:none}#article aside .tools .tags{float:right;margin:5px 15px 10px}#article aside .chip{background-color:#9e9e9e;padding:0 15px 0 10px;margin:auto 2px;border-radius:6px;height:18px;line-height:18px}#article aside .chip a,#article aside .chip i{color:#fff}#article aside .chip i.material-icons{float:right;font-size:16px;line-height:18px;padding-left:8px}.reader-mode{width:70px !important;transition:width .2s ease}.reader-mode .collapsible-body{height:0;overflow:hidden}.reader-mode span{opacity:0;transition:opacity .2s ease}.reader-mode:hover{width:260px !important}.reader-mode:hover span{opacity:1}.reader-mode .collapsible-body{height:auto}.reader-mode .collapsible-body li a i.material-icons{margin:auto 5px auto -8px}.progress{position:fixed;top:0;width:100%;height:3px;margin:0;z-index:9999}main #content{padding:0 .5rem}.card .card-content{padding-bottom:12px;flex-grow:1}.card .card-content .card-title,.card .card-reveal .card-title{line-height:22.8px;max-height:80px;font-size:19px;font-family:roberto,\"Helvetica Neue\",Helvetica,Arial,sans-serif}.card .card-stacked .card-content .card-title{display:inline-block}.card .card-content .activator,.card .card-reveal .activator{cursor:pointer;font-family:\"Material Icons\"}.card .card-content i.right,.card .card-reveal i.right{margin-left:0}.card .card-content .original{line-height:24px;font-size:15px}.card .card-entry-labels{position:absolute;top:10px;z-index:90;max-width:50%}.card .card-entry-labels-hidden{margin:2.5px auto}.card .card-entry-labels-hidden li{display:inline-block;background-color:#00acc1;margin:0 5px;padding:5px 12px;border-radius:3px;color:#fff;max-height:2em;max-width:calc(100% - 15px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .card-content .estimatedTime{margin-bottom:10px}.card .card-action{padding:10px 10px 10px 15px}.card .card-action ul.links{margin:0;font-size:24px;line-height:24px}.card .card-action a{color:#fff;margin:0}.card .card-action a:hover{color:#fff}.card .card-action .tool{display:flex;margin-right:0 !important}.card .card-action .reading-time{display:inline-flex;vertical-align:middle}.card .card-action .reading-time .card-reading-time,.card .card-action .reading-time .card-created-at{display:inline-flex}.card .card-action .reading-time span{margin-right:5px}.card .card-image{height:10em}.card .card-fullimage{height:13.5em}.card.sw{max-width:370px;margin-left:auto;margin-right:auto}.card-body{display:flex;flex-grow:1;flex-direction:column}a.original:not(.waves-effect){text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block}.card .card-image .preview,.card .card-fullimage .preview,.card-stacked .preview{height:100%;background:no-repeat 50%/cover;background-color:#efefef;display:block}.card .card-image .preview--default,.card .card-fullimage .preview--default,.card-stacked .preview--default{background-size:contain}.card-entry-labels li,.card-tag-labels li{margin:10px 10px 10px auto;padding:5px 12px 5px 16px !important;background-color:#00acc1;border-radius:3px;color:#fff;cursor:default;line-height:20px}.card-entry-labels li{text-overflow:ellipsis;white-space:nowrap;border-radius:0 3px 3px 0;overflow:hidden}.card-tag-labels li{display:flex}.card-entry-tags a,.card-entry-labels a,.card-tag-labels a,.card-entry-labels-hidden a,#list .chip a{text-decoration:none;font-weight:normal;color:#fff}.card-tag-link{width:calc(100% - 24px);line-height:1.3;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.card-tag-form{display:flex;min-width:100px;flex-grow:1}.card-tag-form input{margin-bottom:0;height:1.8rem}.card-tag-icon{display:flex}.card-tag-delete{margin-left:10px}.card-tag-labels{display:grid;grid-template-columns:repeat(auto-fill, minmax(240px, 1fr))}.card-tag-labels li{margin:10px;align-items:center}.card-stacked{display:flex;flex-flow:row wrap}.card-stacked:hover ul.tools-list{display:inline;text-align:right}.card-stacked .card-preview{max-width:100px;max-height:50px;margin-right:10px;flex:1}.card-stacked div.metadata{overflow:hidden;height:1.5em;display:flex}.card-stacked div.metadata ul.tags{margin-left:4px}.card-stacked div.metadata .chip{background-color:#00acc1;padding:0 7px;margin:auto 1px;border-radius:6px;line-height:22px;height:22px}.card-stacked div.metadata .chip a,.card-stacked div.metadata .chip i{color:#fff}.card-stacked div.metadata .chip i.material-icons{float:right;font-size:20px;line-height:32px;padding-left:8px}.card-stacked div.metadata .reading-time{display:inline-flex;vertical-align:middle;padding:0 5px;flex-wrap:wrap;margin-left:auto}.card-stacked div.metadata .reading-time .card-reading-time,.card-stacked div.metadata .reading-time .card-created-at{display:inline-flex}.card-stacked div.metadata .reading-time span{margin-right:5px}.card-stacked div.metadata .reading-time i.material-icons{font-size:20px}.card-stacked div.card-content{flex:4}.card-stacked ul.tools-list{flex:1;display:none;flex-basis:5em;align-self:flex-end;float:right;max-width:8em}.card-stacked .tags{display:inline-block}.card.archived,.card-stacked.archived{opacity:.5}#content .collection .collection-item{min-height:65px;height:auto}.quickstart .card .card-action a,.quickstart .card .card-action a:hover{color:#fff !important}.settings .div_tabs{padding-bottom:15px}.entries-row{display:grid;margin:.4rem 0 0;padding:0 .75rem;gap:20px}.entry-card{display:flex;margin:0;height:100%;flex-direction:column}.tools{display:flex;gap:10px}.mass-buttons{margin:10px 5px 10px 20px}.mass-buttons #selectAll{position:relative;opacity:initial;left:0}.mass-buttons span{padding:3px}.mass-buttons button{height:24px;line-height:24px;padding:0 .5rem;margin-right:.75rem}.mass-buttons button i{font-size:15px}.card-stacked input[type=checkbox]{position:relative;opacity:initial;left:0}.card-stacked .entry-checkbox{margin-right:10px}.entries{list-style:none}.collection{margin:5px 15px 0;padding:0}.collection .collection-item{padding:7px;height:65px}.results{display:flex;padding:1rem 1rem 0;flex-wrap:wrap;justify-content:space-between}.results .nb-results{display:inline-flex}.results a{color:#444}.pagination ul{display:flex;margin:0;flex-wrap:wrap;justify-content:space-around}.pagination ul .prev.disabled,.pagination ul .next.disabled{display:none}.pagination li{padding:0}.pagination li:not(.active) a:hover,.pagination li:not(.active) a:active,.pagination li:not(.active) a:focus{background-color:#e6e6e6}.pagination li:not(:last-of-type){margin-right:10px}.pagination span,.pagination a{padding:0 10px;height:30px;display:block;line-height:30px}.pagination .disabled{margin-right:10px;margin-left:10px}.pagination li.active span{padding:0 10px;height:30px;display:block;color:#fff}.footer-text{margin:.7rem .5rem}.hidden{display:none}.picker__date-display{display:none}footer.page-footer{margin-top:10px;padding-top:0}footer .row{margin-bottom:10px}#filters button{padding:0;width:100%}#filters div.with-checkbox{height:3rem;margin-top:0}body{display:flex;min-height:100vh;flex-direction:column;background:#fafafa}body.login main{padding:0;min-height:100vh}.border-bottom{border-bottom:1px solid #ddd}a{color:#00acc1}main,#content,.valign-wrapper{height:100%}.typo-logo{max-width:150px}#main{flex:1 0 auto}#main .logo a{height:100pt}#main .logo img{height:100pt;width:100pt}#main .logo:hover{background:rgba(0,0,0,0)}nav{height:auto;line-height:initial}nav input{color:#aaa}nav ul a:hover{background-color:initial}.nav-panel-item .button-collapse{margin-left:0;margin-right:.5rem;padding-left:.5rem;padding-right:.5rem;height:auto;line-height:1;background-color:rgba(0,0,0,0);border:none}.nav-panel-item{display:flex;padding:.6rem .4rem .6rem .75rem;flex-wrap:wrap;justify-content:space-between;align-items:center}.nav-panel-item a{padding:10px 15px}.nav-panel-item .material-icons{height:auto;line-height:1}.nav-input{display:none}.nav-panel-buttom{display:flex;flex-grow:1;justify-content:flex-end}.nav-panel-item .add,.nav-panel-item .search,.nav-panels .close{color:#444 !important}.nav-panels{transition:background .2s ease}.nav-panels .action{margin:0;font-size:2.1rem}.nav-panels .input-field input{display:block;line-height:inherit;height:3rem}.nav-panels .input-field input:focus{border:0;box-shadow:none;color:#444}.nav-panel-top{display:flex;align-items:center}.input-field.nav-panel-item label{left:1rem}.input-field.nav-panel-item .close{color:rgba(0,0,0,0);cursor:pointer;font-size:2rem;transition:.3s color}.input-field.nav-panel-item{display:flex;flex:1;flex-wrap:nowrap;align-items:center}.input-field.nav-panel-add.disabled,.input-field.nav-panel-add.disabled input{background-color:#f5f5f5}.nav-panel-add,.nav-panel-search{background-color:#fff}.nav-form-button{padding:0;background-color:rgba(0,0,0,0);border:none}.nav-form-button:focus{background-color:inherit}.nav-form-button,.nav-panel-item .close{margin:0 1%}#button_filters{display:none}#button_export{display:none}.entry-nav-top--sticky{position:sticky;top:0}.dropdown-content{width:100%}.dropdown-content li{min-height:auto;padding-right:15px}.dropdown-content li>a{display:flex;padding:14px 10px;align-items:center;white-space:initial}@media(min-width: 993px){.button-collapse{display:none}.dropdown-content{min-width:300px;width:initial}}.side-nav{width:240px}.side-nav li{padding:0}.side-nav li.logo>a:hover{background:initial}.side-nav li>a>i.material-icons.theme-toggle-icon{float:none;margin-left:0}.side-nav a{margin:0}.side-nav.fixed a{font-size:13px;line-height:44px;height:44px}.side-nav .collapsible-header,.side-nav.fixed .collapsible-header{height:45px;line-height:44px;padding:0 20px}.side-nav>li.logo{line-height:0;text-align:center}.bold>a{font-weight:bold}span.numberItems{float:right}div.settings div.file-field div,div.settings div.file-field ul{margin-top:40px}div.settings div.file-field div{margin-top:inherit}.input-field label.active{font-size:1rem}nav .input-field input{margin:0;padding-left:.5rem}.tabs{display:flex}.tab{flex:1}.dark-theme body,.dark-theme main #content,.dark-theme #article,.dark-theme .card,.dark-theme .card-panel,.dark-theme .card .card-reveal,.dark-theme .card-stacked .preview:not(.preview--default),.dark-theme .card .preview:not(.preview--default),.dark-theme .collapsible-header,.dark-theme .collection,.dark-theme .dropdown-content,.dark-theme .nav-panel-add,.dark-theme .nav-panel-search,.dark-theme .side-nav,.dark-theme .side-nav .collapsible-body,.dark-theme .side-nav.fixed .collapsible-body,.dark-theme .tabs{background-color:#121212}.dark-theme table.striped>tbody>tr:nth-child(2n+1),.dark-theme .dropdown-content li{background-color:#232323}.dark-theme .dropdown-content li:hover,.dark-theme .dropdown-content li.active,.dark-theme .dropdown-content li.selected,.dark-theme .pagination li:not(.active) a:hover,.dark-theme .pagination li:not(.active) a:active,.dark-theme .pagination li:not(.active) a:focus{background-color:#2c2c2c}.dark-theme .dropdown-content .divider{background-color:#383838}.dark-theme .collection{border-color:rgba(0,0,0,0)}.dark-theme .collection .collection-item{border-color:#121212}.dark-theme .card:hover,.dark-theme .collection .collection-item:hover{background-color:#272727}.dark-theme main #content,.dark-theme #article article,.dark-theme #article article h1,.dark-theme #article article h2,.dark-theme #article article h3,.dark-theme #article article h4,.dark-theme #article article h5,.dark-theme #article article h6,.dark-theme .dropdown-content li>a,.dark-theme .results a,.dark-theme .side-nav li>a,.dark-theme .side-nav li>a>i.material-icons{color:#dfdfdf}.dark-theme .cyan,.dark-theme .cyan.darken-1,.dark-theme .cyan.darken-2{background-color:#1d1d1d !important}.dark-theme .grey-text.text-darken-4{color:#dfdfdf !important}.dark-theme #article .chip{background-color:#373737}.dark-theme .side-nav li.active{background-color:#2f2f2f}.dark-theme .side-nav li:not(.logo)>a:hover,.dark-theme .side-nav .collapsible-header:hover,.dark-theme .side-nav.fixed .collapsible-header:hover{background-color:#1d1d1d}.dark-theme #article{box-shadow:0 0 10px #1d1d1d}.dark-theme .card,.dark-theme .collection .collection-item{background-color:#1d1d1d}.dark-theme .card-action{background-color:rgba(0,0,0,0)}.dark-theme .logo img,.dark-theme .preview.preview--default,.dark-theme .typo-logo{filter:invert(100%)}.dark-theme .border-bottom,.dark-theme .collapsible,.dark-theme .collapsible-body,.dark-theme .collapsible-header{border-color:#222}.dark-theme .pagination li.active{background-color:#666}.dark-theme .hljs,.dark-theme #article pre.hljs{color:#abb2bf;background-color:#282c34}@media only screen and (min-width: 992px){.dark-theme #article{background-color:#101010}}@font-face{font-family:icomoon;src:url(\"~icomoon-free-npm/Font/IcoMoon-Free.ttf\");font-weight:normal;font-style:normal}.material-icons{font-family:\"Material Icons\";font-weight:normal;font-style:normal;font-size:24px;width:1em;height:1em;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}.material-icons .md-18{font-size:18px}.material-icons .md-24{font-size:24px}.material-icons .md-36{font-size:36px}.material-icons .md-48{font-size:48px}.material-icons .md-dark{color:rgba(0,0,0,.54)}.material-icons .md-dark .md-inactive{color:rgba(0,0,0,.26)}.material-icons .md-light{color:#fff}.material-icons .md-light .md-inactive{color:rgba(255,255,255,.3)}[class^=icon-]::before,[class*=\" icon-\"]::before{font-family:icomoon;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;background-size:24px;letter-spacing:0;font-feature-settings:\"liga\"}.icon-eye::before{content:\"\"}.icon-no-eye::before{content:\"\"}.icon-calendar::before{content:\"\"}.icon-mail::before{content:\"\"}.icon-time::before{content:\"\"}a.icon-image{background-repeat:no-repeat;padding-right:.4em !important;padding-left:0 !important;margin-left:25px}a.icon-image::before{content:\"\";display:block;width:24px;height:24px;float:left;margin:7px 1.5px 0 0}a.icon-image.diaspora::before{background:url(\"../../_global/img/icons/diaspora-icon--black.png\") no-repeat center/80%}a.icon-image.unmark::before{background:url(\"../../_global/img/icons/unmark-icon--black.png\") no-repeat center/80%}a.icon-image.shaarli::before{background:url(\"../../_global/img/icons/shaarli.png\") no-repeat center/80%}a.icon-image.scuttle::before{background:url(\"../../_global/img/icons/scuttle.png\") no-repeat center/80%}.icon-google-plus2::before{content:\"\"}.icon-facebook2::before{content:\"\"}.icon-twitter::before{content:\"\"}.icon-apple::before{content:\"\"}.icon-android::before{content:\"\"}.icon-chrome::before{content:\"\"}.icon-firefox::before{content:\"\"}.icon-link::before{content:\"\"}footer [class^=icon-],footer [class*=\" icon-\"]{font-size:2em;transition:text-shadow .2s ease;padding-right:10px}footer [class^=icon-]:hover,footer [class*=\" icon-\"]:hover{text-shadow:0 0 10px rgba(0,0,0,.3)}@media print{body{font-family:serif;background-color:#fff}@page{margin:1cm}img{max-width:100% !important}body>header,#article_toolbar,#links,#sort,body>footer,.top_link,div.tools,header div,.messages,.entry+.results,#slide-out,.progress,.hide-on-large-only,#article>aside,#article .mbm a{display:none !important}main{padding-left:0 !important}#article{margin:inherit !important}article{border:none !important}.vieworiginal a::after{content:\" (\" attr(href) \")\"}abbr[title]::after{content:\" (\" attr(title) \")\"}.pagination span.current{border-style:dashed}#main{width:100%;margin:0;padding:0}#article{width:100%}}@media only screen and (min-width: 450px){.entries-row{grid-template-columns:repeat(auto-fill, minmax(340px, 1fr))}}@media only screen and (min-width: 992px){nav,body:not(.entry):not(.login) main,footer{padding-left:240px}.pagination{margin-left:auto}}@media screen and (min-width: 993px){.entry #content{padding-left:70px}}@media only screen and (max-width: 992px){header,main,footer,nav{padding-left:0}table{display:block;overflow:auto}iframe{max-width:100%;height:auto}.nav-panels .action{padding-right:.75rem}.nav-panel-top{padding:6px 0}.nav-panel-buttom{justify-content:space-between}#article{max-width:35em;margin-left:auto;margin-right:auto;padding-bottom:100px;font-size:18px}#article>header>h1{font-size:1.33em}.reader-mode{width:240px !important}.reader-mode span{opacity:1}.tabs{display:inline-block;height:auto}.tab{min-width:100%}.indicator{display:none}.pagination li{margin-bottom:.5rem}.pagination li.prev,.pagination li.next{width:auto}.drag-target+.drag-target{height:50%}.drag-target+.drag-target+.drag-target{top:50%}}@media only screen and (min-width: 1200px)and (max-width: 1650px){.row .col.l3{width:33.3333%;margin-left:0}}@media only screen and (min-width: 993px)and (max-width: 1200px){.row .col.l1{width:25%;margin-left:0}.row .col.l2{width:33.3333%;margin-left:0}.row .col.l3{width:41.6667%;margin-left:0}.row .col.l4{width:50%;margin-left:0}.row .col.l5{width:58.333%;margin-left:0}.row .col.l6{width:66.6667%;margin-left:0}.row .col.l7{width:75%;margin-left:0}.row .col.l8{width:83.3333%;margin-left:0}.row .col.l9{width:91.6667%;margin-left:0}.row .col.l10{width:100%;margin-left:0}}@media only screen and (max-width: 350px){.nb-results{display:none}main ul.row{padding:0}.row .col{padding:0}.card-stacked div.metadata .reading-time{display:none}}@media only print{body{display:block}}","/* ==========================================================================\n Article\n ========================================================================== */\n\n#article {\n font-size: 20px;\n margin: 0 auto;\n max-width: 45em;\n padding: 5px 20px;\n background-color: #fff;\n box-shadow: 0 0 10px #ccc;\n\n article {\n color: #424242;\n font-size: 18px;\n line-height: 1.7em;\n overflow-wrap: break-word;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n color: #212121;\n\n strong {\n font-weight: 500;\n }\n }\n\n h6 {\n font-size: 1.2rem;\n }\n\n h5 {\n font-size: 1.6rem;\n }\n\n h4 {\n font-size: 1.9rem;\n }\n\n h3 {\n font-size: 2.2rem;\n }\n\n h2 {\n font-size: 2.5rem;\n }\n\n h1 {\n font-size: 2.7rem;\n }\n\n a {\n border-bottom: 1px dotted $blueAccentColor;\n text-decoration: none;\n }\n\n a:hover {\n border-bottom-style: solid;\n }\n\n ul {\n padding-left: 30px;\n }\n\n ul,\n ul li {\n list-style-type: disc;\n }\n\n blockquote {\n font-style: italic;\n }\n\n strong {\n font-weight: bold;\n }\n }\n\n img,\n figure {\n max-width: 100%;\n height: auto;\n }\n\n pre {\n box-sizing: border-box;\n margin: 0 0 1.75em;\n border: #e3f2fd 1px solid;\n width: 100%;\n padding: 10px;\n font-family: monospace;\n font-size: 0.8em;\n white-space: pre;\n overflow: auto;\n background: #f5f5f5;\n border-radius: 3px;\n }\n\n > header > h1 {\n font-size: 2em;\n margin: 2.1rem 0 0.68rem;\n }\n\n aside {\n .tools {\n display: flex;\n flex-flow: row wrap;\n\n .stats {\n font-size: 0.7em;\n margin: 8px 5px 5px;\n\n li {\n display: inline-flex;\n vertical-align: middle;\n margin: 3px 5px;\n\n i.material-icons {\n color: #3e3e3e;\n margin-right: 3px;\n font-size: 18px;\n }\n }\n\n a {\n color: #000;\n text-decoration: none;\n }\n }\n\n .tags {\n float: right;\n margin: 5px 15px 10px;\n }\n }\n\n .chip {\n background-color: #9e9e9e;\n padding: 0 15px 0 10px;\n margin: auto 2px;\n border-radius: 6px;\n height: 18px;\n line-height: 18px;\n\n a,\n i {\n color: #fff;\n }\n\n i.material-icons {\n float: right;\n font-size: 16px;\n line-height: 18px;\n padding-left: 8px;\n }\n }\n }\n}\n\n.reader-mode {\n width: 70px !important;\n transition: width 0.2s ease;\n\n .collapsible-body {\n height: 0;\n overflow: hidden;\n }\n\n span {\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n\n &:hover {\n width: 260px !important;\n\n span {\n opacity: 1;\n }\n }\n\n .collapsible-body {\n height: auto;\n\n li a i.material-icons {\n margin: auto 5px auto -8px;\n }\n }\n}\n\n.progress {\n position: fixed;\n top: 0;\n width: 100%;\n height: 3px;\n margin: 0;\n z-index: 9999;\n}\n","/* ==========================================================================\n Cards\n ========================================================================== */\n\nmain {\n #content {\n padding: 0 0.5rem;\n }\n}\n\n@mixin mixin-reading-time {\n .reading-time {\n display: inline-flex;\n vertical-align: middle;\n\n .card-reading-time,\n .card-created-at {\n display: inline-flex;\n }\n\n span {\n margin-right: 5px;\n }\n\n @content;\n }\n}\n\n.card {\n .card-content {\n padding-bottom: 12px;\n flex-grow: 1;\n }\n\n .card-content .card-title,\n .card-reveal .card-title {\n line-height: 22.8px;\n max-height: 80px;\n font-size: 19px;\n font-family: roberto, \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n }\n\n .card-stacked .card-content .card-title {\n display: inline-block;\n }\n\n .card-content .activator,\n .card-reveal .activator {\n cursor: pointer;\n font-family: \"Material Icons\";\n }\n\n .card-content i.right,\n .card-reveal i.right {\n margin-left: 0;\n }\n\n .card-content .original {\n line-height: 24px;\n font-size: 15px;\n }\n\n .card-entry-labels {\n position: absolute;\n top: 10px;\n z-index: 90;\n max-width: 50%;\n }\n\n .card-entry-labels-hidden {\n margin: 2.5px auto;\n }\n\n .card-entry-labels-hidden li {\n display: inline-block;\n background-color: $blueAccentColor;\n margin: 0 5px;\n padding: 5px 12px;\n border-radius: 3px;\n color: #fff;\n max-height: 2em;\n max-width: calc(100% - 15px);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .card-content .estimatedTime {\n margin-bottom: 10px;\n }\n\n .card-action {\n padding: 10px 10px 10px 15px;\n\n ul.links {\n margin: 0;\n font-size: 24px;\n line-height: 24px;\n }\n\n a {\n color: #fff;\n margin: 0;\n }\n\n a:hover {\n color: #fff;\n }\n\n .tool {\n display: flex;\n margin-right: 0 !important;\n }\n\n @include mixin-reading-time;\n }\n\n .card-image {\n height: 10em;\n }\n\n .card-fullimage {\n height: 13.5em;\n }\n\n &.sw {\n max-width: 370px;\n margin-left: auto;\n margin-right: auto;\n }\n}\n\n.card-body {\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n}\n\na.original:not(.waves-effect) {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n display: block;\n}\n\n.card .card-image .preview,\n.card .card-fullimage .preview,\n.card-stacked .preview {\n height: 100%;\n background: no-repeat 50%/cover;\n background-color: #efefef;\n display: block;\n\n &--default {\n background-size: contain;\n }\n}\n\n.card-entry-labels li,\n.card-tag-labels li {\n margin: 10px 10px 10px auto;\n padding: 5px 12px 5px 16px !important;\n background-color: $blueAccentColor;\n border-radius: 3px;\n color: #fff;\n cursor: default;\n line-height: 20px;\n}\n\n.card-entry-labels li {\n text-overflow: ellipsis;\n white-space: nowrap;\n border-radius: 0 3px 3px 0;\n overflow: hidden;\n}\n\n.card-tag-labels li {\n display: flex;\n}\n\n.card-entry-tags a,\n.card-entry-labels a,\n.card-tag-labels a,\n.card-entry-labels-hidden a,\n#list .chip a {\n text-decoration: none;\n font-weight: normal;\n color: #fff;\n}\n\n.card-tag-link {\n width: calc(100% - 24px);\n line-height: 1.3;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.card-tag-form {\n display: flex;\n min-width: 100px;\n flex-grow: 1;\n}\n\n.card-tag-form input {\n margin-bottom: 0;\n height: 1.8rem;\n}\n\n.card-tag-icon {\n display: flex;\n}\n\n.card-tag-delete {\n margin-left: 10px;\n}\n\n.card-tag-labels {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\n}\n\n.card-tag-labels li {\n margin: 10px;\n align-items: center;\n}\n\n.card-stacked {\n display: flex;\n flex-flow: row wrap;\n\n &:hover ul.tools-list {\n display: inline;\n text-align: right;\n }\n\n .card-preview {\n max-width: 100px;\n max-height: 50px;\n margin-right: 10px;\n flex: 1;\n }\n\n div.metadata {\n overflow: hidden;\n height: 1.5em;\n display: flex;\n\n ul.tags {\n margin-left: 4px;\n }\n\n .chip {\n background-color: $blueAccentColor;\n padding: 0 7px;\n margin: auto 1px;\n border-radius: 6px;\n line-height: 22px;\n height: 22px;\n\n a,\n i {\n color: #fff;\n }\n\n i.material-icons {\n float: right;\n font-size: 20px;\n line-height: 32px;\n padding-left: 8px;\n }\n }\n\n @include mixin-reading-time {\n padding: 0 5px;\n flex-wrap: wrap;\n margin-left: auto;\n\n i.material-icons {\n font-size: 20px;\n }\n }\n }\n\n div.card-content {\n flex: 4;\n }\n\n ul.tools-list {\n flex: 1;\n display: none;\n flex-basis: 5em;\n align-self: flex-end;\n float: right;\n max-width: 8em;\n }\n\n .tags {\n display: inline-block;\n }\n}\n\n.card.archived,\n.card-stacked.archived {\n opacity: 0.5;\n}\n\n#content .collection .collection-item {\n min-height: 65px;\n height: auto;\n}\n\n.quickstart .card .card-action a,\n.quickstart .card .card-action a:hover {\n color: #fff !important;\n}\n\n.settings .div_tabs {\n padding-bottom: 15px;\n}\n\n.entries-row {\n display: grid;\n margin: 0.4rem 0 0;\n padding: 0 0.75rem;\n gap: 20px;\n}\n\n.entry-card {\n display: flex;\n margin: 0;\n height: 100%;\n flex-direction: column;\n}\n\n\n.tools {\n display: flex;\n gap: 10px;\n}\n","/* ==========================================================================\n Variables\n ========================================================================== */\n\n$blueAccentColor: #00acc1;\n","/* ==========================================================================\n * Entries\n * ========================================================================== */\n\n.mass-buttons {\n margin: 10px 5px 10px 20px;\n\n #selectAll {\n position: relative;\n opacity: initial;\n left: 0;\n }\n\n span {\n padding: 3px;\n }\n\n button {\n i {\n font-size: 15px;\n }\n\n height: 24px;\n line-height: 24px;\n padding: 0 0.5rem;\n margin-right: 0.75rem;\n }\n}\n\n.card-stacked {\n input[type=\"checkbox\"] {\n position: relative;\n opacity: initial;\n left: 0;\n }\n\n .entry-checkbox {\n margin-right: 10px;\n }\n}\n\n.entries {\n list-style: none;\n}\n\n.collection {\n margin: 5px 15px 0;\n padding: 0;\n\n .collection-item {\n padding: 7px;\n height: 65px;\n }\n}\n\n.results {\n display: flex;\n padding: 1rem 1rem 0;\n flex-wrap: wrap;\n justify-content: space-between;\n\n .nb-results {\n display: inline-flex;\n }\n\n a {\n color: #444;\n }\n}\n\n.pagination {\n ul {\n display: flex;\n margin: 0;\n flex-wrap: wrap;\n justify-content: space-around;\n\n .prev.disabled,\n .next.disabled {\n display: none;\n }\n }\n\n li {\n padding: 0;\n\n &:not(.active) a:hover,\n &:not(.active) a:active,\n &:not(.active) a:focus {\n background-color: #e6e6e6;\n }\n\n &:not(:last-of-type) {\n margin-right: 10px;\n }\n }\n\n span,\n a {\n padding: 0 10px;\n height: 30px;\n display: block;\n line-height: 30px;\n }\n\n .disabled {\n margin-right: 10px;\n margin-left: 10px;\n }\n\n li.active span {\n padding: 0 10px;\n height: 30px;\n display: block;\n color: #fff;\n }\n}\n\n.footer-text {\n margin: 0.7rem 0.5rem;\n}\n\n.hidden {\n display: none;\n}\n\n.picker__date-display {\n display: none;\n}\n\nfooter {\n &.page-footer {\n margin-top: 10px;\n padding-top: 0;\n }\n\n .row {\n margin-bottom: 10px;\n }\n}\n","/* ==========================================================================\n * Filters slider\n * ========================================================================== */\n\n#filters {\n button {\n padding: 0;\n width: 100%;\n }\n\n div.with-checkbox {\n height: 3rem;\n margin-top: 0;\n }\n}\n","/* ==========================================================================\n Layout\n ========================================================================== */\n\nbody {\n display: flex;\n min-height: 100vh;\n flex-direction: column;\n background: #fafafa;\n\n &.login main {\n padding: 0;\n min-height: 100vh;\n }\n}\n\n.border-bottom {\n border-bottom: 1px solid #ddd;\n}\n\na {\n color: $blueAccentColor;\n}\n\nmain,\n#content,\n.valign-wrapper {\n height: 100%;\n}\n\n.typo-logo {\n max-width: 150px;\n}\n\n#main {\n flex: 1 0 auto;\n\n .logo {\n a {\n height: 100pt;\n }\n\n img {\n height: 100pt;\n width: 100pt;\n }\n\n &:hover {\n background: transparent;\n }\n }\n}\n","/* ==========================================================================\n Nav\n ========================================================================== */\nnav {\n height: auto;\n line-height: initial;\n}\n\nnav {\n input {\n color: #aaa;\n }\n\n ul a:hover {\n background-color: initial;\n }\n}\n\n.nav-panel-item .button-collapse {\n margin-left: 0;\n margin-right: 0.5rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n height: auto;\n line-height: 1;\n background-color: transparent;\n border: none;\n}\n\n.nav-panel-item {\n display: flex;\n padding: 0.6rem 0.4rem 0.6rem 0.75rem;\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: center;\n\n a {\n padding: 10px 15px;\n }\n}\n\n.nav-panel-item .material-icons {\n height: auto;\n line-height: 1;\n}\n\n.nav-input {\n display: none;\n}\n\n.nav-panel-buttom {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n}\n\n.nav-panel-item .add,\n.nav-panel-item .search,\n.nav-panels .close {\n color: #444 !important;\n}\n\n.nav-panels {\n transition: background 0.2s ease;\n\n .action {\n margin: 0;\n font-size: 2.1rem;\n }\n\n .input-field input {\n display: block;\n line-height: inherit;\n height: 3rem;\n }\n\n .input-field input:focus {\n border: 0;\n box-shadow: none;\n color: #444;\n }\n}\n\n.nav-panel-top {\n display: flex;\n align-items: center;\n}\n\n.input-field {\n &.nav-panel-item label {\n left: 1rem;\n }\n\n &.nav-panel-item .close {\n color: transparent;\n cursor: pointer;\n font-size: 2rem;\n transition: 0.3s color;\n }\n\n &.nav-panel-item {\n display: flex;\n flex: 1;\n flex-wrap: nowrap;\n align-items: center;\n }\n\n &.nav-panel-add.disabled,\n &.nav-panel-add.disabled input {\n background-color: whitesmoke;\n }\n}\n\n.nav-panel-add,\n.nav-panel-search {\n background-color: white;\n}\n\n.nav-form-button {\n padding: 0;\n background-color: transparent;\n border: none;\n\n &:focus {\n background-color: inherit;\n }\n}\n\n.nav-form-button,\n.nav-panel-item .close {\n margin: 0 1%;\n}\n\n#button_filters {\n display: none;\n}\n\n#button_export {\n display: none;\n}\n\n.entry-nav-top--sticky {\n position: sticky;\n top: 0;\n}\n\n.dropdown-content {\n width: 100%;\n\n li {\n min-height: auto;\n padding-right: 15px;\n }\n\n li > a {\n display: flex;\n padding: 14px 10px;\n align-items: center;\n white-space: initial;\n }\n}\n\n@media (min-width: 993px) {\n .button-collapse {\n display: none;\n }\n\n .dropdown-content {\n min-width: 300px;\n width: initial;\n }\n}\n","/* ==========================================================================\n Side-nav\n ========================================================================== */\n\n.side-nav {\n width: 240px;\n\n li {\n padding: 0;\n\n &.logo > a:hover {\n background: initial;\n }\n\n & > a > i.material-icons.theme-toggle-icon {\n float: none;\n margin-left: 0;\n }\n }\n\n a {\n margin: 0;\n }\n\n &.fixed a {\n font-size: 13px;\n line-height: 44px;\n height: 44px;\n }\n\n .collapsible-header,\n &.fixed .collapsible-header {\n height: 45px;\n line-height: 44px;\n padding: 0 20px;\n }\n\n > li.logo {\n line-height: 0;\n text-align: center;\n }\n}\n\n.bold > a {\n font-weight: bold;\n}\n\nspan.numberItems {\n float: right;\n}\n","/* ==========================================================================\n * Various\n * ========================================================================== */\n\ndiv.settings div.file-field {\n /* force height on non-input field in the settings page */\n div,\n ul {\n margin-top: 40px;\n }\n\n /* but avoid to kill all file input */\n div {\n margin-top: inherit;\n }\n}\n\n.input-field label.active {\n font-size: 1rem;\n}\n\nnav .input-field input {\n margin: 0;\n padding-left: 0.5rem;\n}\n\n.tabs {\n display: flex;\n}\n\n.tab {\n flex: 1;\n}\n",".dark-theme {\n body,\n main #content,\n #article,\n .card,\n .card-panel,\n .card .card-reveal,\n .card-stacked .preview:not(.preview--default),\n .card .preview:not(.preview--default),\n .collapsible-header,\n .collection,\n .dropdown-content,\n .nav-panel-add,\n .nav-panel-search,\n .side-nav,\n .side-nav .collapsible-body,\n .side-nav.fixed .collapsible-body,\n .tabs {\n background-color: #121212;\n }\n\n table.striped > tbody > tr:nth-child(2n+1),\n .dropdown-content li {\n background-color: #232323;\n }\n\n .dropdown-content li:hover,\n .dropdown-content li.active,\n .dropdown-content li.selected,\n .pagination li:not(.active) a:hover,\n .pagination li:not(.active) a:active,\n .pagination li:not(.active) a:focus {\n background-color: #2c2c2c;\n }\n\n .dropdown-content .divider {\n background-color: #383838;\n }\n\n .collection {\n border-color: transparent;\n }\n\n .collection .collection-item {\n border-color: #121212;\n }\n\n .card:hover,\n .collection .collection-item:hover {\n background-color: #272727;\n }\n\n main #content,\n #article article,\n #article article h1,\n #article article h2,\n #article article h3,\n #article article h4,\n #article article h5,\n #article article h6,\n .dropdown-content li > a,\n .results a,\n .side-nav li > a,\n .side-nav li > a > i.material-icons {\n color: #dfdfdf;\n }\n\n .cyan,\n .cyan.darken-1,\n .cyan.darken-2 {\n background-color: #1d1d1d !important;\n }\n\n .grey-text.text-darken-4 {\n color: #dfdfdf !important;\n }\n\n #article .chip {\n background-color: #373737;\n }\n\n .side-nav li.active {\n background-color: #2f2f2f;\n }\n\n .side-nav li:not(.logo) > a:hover,\n .side-nav .collapsible-header:hover,\n .side-nav.fixed .collapsible-header:hover {\n background-color: #1d1d1d;\n }\n\n #article {\n box-shadow: 0 0 10px #1d1d1d;\n }\n\n .card,\n .collection .collection-item {\n background-color: #1d1d1d;\n }\n\n .card-action {\n background-color: transparent;\n }\n\n .logo img,\n .preview.preview--default,\n .typo-logo {\n filter: invert(100%);\n }\n\n .border-bottom,\n .collapsible,\n .collapsible-body,\n .collapsible-header {\n border-color: #222;\n }\n\n .pagination li.active {\n background-color: #666;\n }\n\n .hljs,\n #article pre.hljs {\n color: #abb2bf;\n background-color: #282c34;\n }\n\n @media only screen and (min-width: 992px) {\n #article {\n background-color: #101010;\n }\n }\n}\n","/* ==========================================================================\n * Fonts\n * ========================================================================== */\n\n/**\n * Icomoon\n */\n@font-face {\n font-family: icomoon;\n src: url(\"~icomoon-free-npm/Font/IcoMoon-Free.ttf\");\n font-weight: normal;\n font-style: normal;\n}\n","/* ==========================================================================\n * Icons\n * ========================================================================== */\n\n/**\n *\n * Material icons\n *\n */\n.material-icons {\n font-family: \"Material Icons\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px; /* Preferred icon size */\n width: 1em;\n height: 1em;\n display: inline-block;\n line-height: 1;\n text-transform: none;\n letter-spacing: normal;\n word-wrap: normal;\n white-space: nowrap;\n direction: ltr;\n\n /* Support for all WebKit browsers. */\n -webkit-font-smoothing: antialiased;\n\n /* Support for Safari and Chrome. */\n text-rendering: optimizeLegibility;\n\n /* Support for Firefox. */\n -moz-osx-font-smoothing: grayscale;\n\n /* Support for IE. */\n font-feature-settings: \"liga\";\n\n .md-18 {\n font-size: 18px;\n }\n\n .md-24 {\n font-size: 24px;\n }\n\n .md-36 {\n font-size: 36px;\n }\n\n .md-48 {\n font-size: 48px;\n }\n\n .md-dark {\n color: rgb(0 0 0 / 54%);\n\n .md-inactive {\n color: rgb(0 0 0 / 26%);\n }\n }\n\n .md-light {\n color: rgb(255 255 255 / 100%);\n\n .md-inactive {\n color: rgb(255 255 255 / 30%);\n }\n }\n}\n\n/**\n *\n * Icomoon icons\n *\n */\n[class^=\"icon-\"]::before,\n[class*=\" icon-\"]::before {\n font-family: icomoon;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n background-size: 24px;\n\n /* Enable Ligatures ================ */\n letter-spacing: 0;\n font-feature-settings: \"liga\";\n}\n\n.icon-eye::before {\n content: \"\\e9ce\";\n}\n\n.icon-no-eye::before {\n content: \"\\e9d1\";\n}\n\n.icon-calendar::before {\n content: \"\\e953\";\n}\n\n.icon-mail::before {\n content: \"\\ea86\";\n}\n\n.icon-time::before {\n content: \"\\e952\";\n}\n\na.icon-image {\n background-repeat: no-repeat;\n padding-right: 0.4em !important;\n padding-left: 0 !important;\n margin-left: 25px;\n\n &::before {\n content: \"\";\n display: block;\n width: 24px;\n height: 24px;\n float: left;\n margin: 7px 1.5px 0 0;\n }\n\n &.diaspora::before {\n background: url(\"../../_global/img/icons/diaspora-icon--black.png\") no-repeat center/80%;\n }\n\n &.unmark::before {\n background: url(\"../../_global/img/icons/unmark-icon--black.png\") no-repeat center/80%;\n }\n\n &.shaarli::before {\n background: url(\"../../_global/img/icons/shaarli.png\") no-repeat center/80%;\n }\n\n &.scuttle::before {\n background: url(\"../../_global/img/icons/scuttle.png\") no-repeat center/80%;\n }\n}\n\n.icon-google-plus2::before {\n content: \"\\ea89\";\n}\n\n.icon-facebook2::before {\n content: \"\\ea8d\";\n}\n\n.icon-twitter::before {\n content: \"\\ea96\";\n}\n\n.icon-apple::before {\n content: \"\\eabf\";\n}\n\n.icon-android::before {\n content: \"\\eac1\";\n}\n\n.icon-chrome::before {\n content: \"\\eae5\";\n}\n\n.icon-firefox::before {\n content: \"\\eae6\";\n}\n\n.icon-link::before {\n content: \"\\e9cb\";\n}\n\nfooter [class^=\"icon-\"],\nfooter [class*=\" icon-\"] {\n font-size: 2em;\n transition: text-shadow 0.2s ease;\n padding-right: 10px;\n}\n\nfooter [class^=\"icon-\"]:hover,\nfooter [class*=\" icon-\"]:hover {\n text-shadow: 0 0 10px rgb(0 0 0 / 30%);\n}\n","@media print {\n /* ### Layout ### */\n\n body {\n font-family: serif;\n background-color: #fff;\n }\n\n @page {\n margin: 1cm;\n }\n\n img {\n max-width: 100% !important;\n }\n\n /* ### Content ### */\n\n /* Hide useless blocks */\n body > header,\n #article_toolbar,\n #links,\n #sort,\n body > footer,\n .top_link,\n div.tools,\n header div,\n .messages,\n .entry + .results,\n #slide-out,\n .progress,\n .hide-on-large-only,\n #article > aside,\n #article .mbm a {\n display: none !important;\n }\n\n main {\n padding-left: 0 !important;\n }\n\n #article {\n margin: inherit !important;\n }\n\n article {\n border: none !important;\n }\n\n /* Add URL after links */\n .vieworiginal a::after {\n content: \" (\" attr(href) \")\";\n }\n\n /* Add explanation after abbr */\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n\n /* Change border on current pager item */\n .pagination span.current {\n border-style: dashed;\n }\n\n #main {\n width: 100%;\n margin: 0;\n padding: 0;\n }\n\n #article {\n width: 100%;\n }\n}\n","/* ==========================================================================\n Media queries\n ========================================================================== */\n\n@media only screen and (min-width: 450px) {\n .entries-row {\n grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));\n }\n}\n\n@media only screen and (min-width: 992px) {\n nav,\n body:not(.entry):not(.login) main,\n footer {\n padding-left: 240px;\n }\n\n .pagination {\n margin-left: auto;\n }\n}\n\n@media screen and (min-width: 993px) {\n .entry #content {\n padding-left: 70px;\n }\n}\n\n@media only screen and (max-width: 992px) {\n header,\n main,\n footer,\n nav {\n padding-left: 0;\n }\n\n table {\n display: block;\n overflow: auto;\n }\n\n iframe {\n max-width: 100%;\n height: auto;\n }\n\n .nav-panels .action {\n padding-right: 0.75rem;\n }\n\n .nav-panel-top {\n padding: 6px 0;\n }\n\n .nav-panel-buttom {\n justify-content: space-between;\n }\n\n #article {\n max-width: 35em;\n margin-left: auto;\n margin-right: auto;\n padding-bottom: 100px;\n font-size: 18px;\n\n > header > h1 {\n font-size: 1.33em;\n }\n }\n\n .reader-mode {\n width: 240px !important;\n\n span {\n opacity: 1;\n }\n }\n\n .tabs {\n display: inline-block;\n height: auto;\n }\n\n .tab {\n min-width: 100%;\n }\n\n .indicator {\n display: none;\n }\n\n .pagination li {\n margin-bottom: 0.5rem;\n\n &.prev,\n &.next {\n width: auto;\n }\n }\n\n .drag-target + .drag-target {\n height: 50%;\n }\n\n .drag-target + .drag-target + .drag-target {\n top: 50%;\n }\n}\n\n@media only screen and (min-width: 1200px) and (max-width: 1650px) {\n .row .col.l3 {\n width: 33.3333%;\n margin-left: 0;\n }\n}\n\n@media only screen and (min-width: 993px) and (max-width: 1200px) {\n .row {\n .col.l1 {\n width: 25%;\n margin-left: 0;\n }\n\n .col.l2 {\n width: 33.3333%;\n margin-left: 0;\n }\n\n .col.l3 {\n width: 41.6667%;\n margin-left: 0;\n }\n\n .col.l4 {\n width: 50%;\n margin-left: 0;\n }\n\n .col.l5 {\n width: 58.333%;\n margin-left: 0;\n }\n\n .col.l6 {\n width: 66.6667%;\n margin-left: 0;\n }\n\n .col.l7 {\n width: 75%;\n margin-left: 0;\n }\n\n .col.l8 {\n width: 83.3333%;\n margin-left: 0;\n }\n\n .col.l9 {\n width: 91.6667%;\n margin-left: 0;\n }\n\n .col.l10 {\n width: 100%;\n margin-left: 0;\n }\n }\n}\n\n@media only screen and (max-width: 350px) {\n .nb-results {\n display: none;\n }\n\n main ul.row {\n padding: 0;\n }\n\n .row .col {\n padding: 0;\n }\n\n .card-stacked div.metadata .reading-time {\n display: none;\n }\n}\n\n@media only print {\n body {\n display: block;\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/web/wallassets/material.js b/public/wallassets/material.js similarity index 100% rename from web/wallassets/material.js rename to public/wallassets/material.js diff --git a/web/wallassets/material.js.map b/public/wallassets/material.js.map similarity index 100% rename from web/wallassets/material.js.map rename to public/wallassets/material.js.map diff --git a/web/wallassets/public.css b/public/wallassets/public.css similarity index 100% rename from web/wallassets/public.css rename to public/wallassets/public.css diff --git a/public/wallassets/public.css.map b/public/wallassets/public.css.map new file mode 100644 index 000000000..700939532 --- /dev/null +++ b/public/wallassets/public.css.map @@ -0,0 +1 @@ +{"version":3,"file":"public.css","mappings":"AAAA,2YAEA,QA8EE,UACA,SACA,eACA,wBACA,+EAGF,aAWE,MAGF,aACE,cAGF,WAEE,yDAGF,UAIE,aACA,OAGF,wBACE,iBACA,MAKF,qBACE,WACA,oBACA,gBACA,yBACA,mBACA,mBAGF,eAME,cACA,mEAGF,eAME,gBACA,IAGF,eACE,IAGF,eACE,OAGF,eAEE,OAGF,eAEE,GAGF,mBACE,UAGF,gBAEE,MAGF,iBAEE,GAGF,UACE,0BACA,kBAGF,SAEE,YAGF,iBAIE,OAGF,mBAEE,IAGF,mBACE,gBACA,kCAGF,oBAEE,mCAGF,gBAEE,cAGF,cAEE,YACA,MAGF,cACE,QAGF,oBACE,YAGF,iBACE,6BACA,kBACA,kBACA,mBACA,gBACA,iBAGF,wBACE,eACA,kBACA,yBAGF,WACE,kBACA,KAGF,aACE,YACA,mBACA,eACA,QAGF,QACE,mBAGF,aACE,gBACA,kBACA,eACA,QAGF,uBACE,IAGF,aACE,WACA,kBACA,qBACA,eACA,UACA,OAGF,cACE,IAGF,cACE,OAGF,UACE,cACA,gBACA,WACA,iBACA,uBACA,mBACA,iBACA,kBACA,OAGF,kBACE,kBACA,KAGF,qBACE,aACA,6BACA,WACA,YACA,+BACA,gBACA,cACA,UAGF,cACE,kBACA,qBACA,yBACA,YACA,UACA,uBACA,MAGF,qBACE,cACA,+BACA,eACA,gBACA,yBACA,cACA,aAGF,iBAEE,kBAGF,eAEE,WACA,CANA,iBAGF,eAEE,WACA,OAGF,wBACE,kBACA,WACA,OAGF,aAEE,gBACA,UAGF,wBACE,gBACA,mBACA,kCACA,gBACA,0BAGF,yBACE,OAGF,iBACE,mBACA,QAGF,iBACE,UAGF,aACE,QAGF,iBACE,YAGF,iBACE,0BAKF,+BACE,aAEE,2BAIJ,WACE,qBACE,oBACA,QAGF,eACE,QAGF,gBACE,kBACA,kBACA,iBACA,E","sources":["webpack://wallabag/./assets/themes/_global/share.scss"],"sourcesContent":["/* -------------------------- Reset ------------------- */\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nb,\nu,\ni,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n vertical-align: baseline;\n}\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\nsection {\n display: block;\n}\n\nbody {\n line-height: 1;\n}\n\nblockquote,\nq {\n quotes: none;\n}\n\nblockquote::before,\nblockquote::after,\nq::before,\nq::after {\n content: \"\";\n content: none;\n}\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n/* -------------------------- General properties ------------------- */\n\nbody {\n background-color: white;\n color: #444;\n font-family: Georgia;\n line-height: 1.7;\n -ms-content-zooming: none;\n margin-bottom: 64px;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-weight: 600;\n margin: 0.2em 0;\n}\n\narticle h1,\narticle h2,\narticle h3,\narticle h4,\narticle h5,\narticle h6 {\n text-align: left;\n line-height: 1.3;\n}\n\nh1 {\n font-size: 1.4em;\n}\n\nh2 {\n font-size: 1.3em;\n}\n\nh3,\nh4 {\n font-size: 1.2em;\n}\n\nh5,\nh6 {\n font-size: 1.1em;\n}\n\np {\n margin-bottom: 0.75em;\n}\n\nb,\nstrong {\n font-weight: bold;\n}\n\ni,\nem {\n font-style: italic;\n}\n\na {\n color: #444;\n text-decoration: underline;\n}\n\na:active,\na:hover {\n outline: 0;\n}\n\np,\nul,\nol,\ndl {\n margin: 0 0 1.75em;\n}\n\nul,\nol {\n padding-left: 1.25em;\n}\n\nli {\n padding-bottom: 0.2em;\n line-height: 1.6;\n}\n\nli p:last-child,\nli li:last-child {\n margin-bottom: -0.2em;\n}\n\nul li:last-child,\nol li:last-child {\n padding-bottom: 0;\n}\n\niframe,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\nmark {\n padding: 0 0.2em;\n}\n\nmark a {\n text-decoration: none;\n}\n\nblockquote {\n font-style: italic;\n border-left: 0.25em solid black;\n margin-left: -20px;\n padding-left: 17px;\n margin-bottom: 0.5em;\n margin-top: 0.5em;\n}\n\nblockquote cite {\n text-transform: uppercase;\n font-size: 0.8em;\n font-style: normal;\n}\n\nblockquote cite::before {\n content: \"—\";\n margin-right: 0.5em;\n}\n\nimg {\n display: block;\n height: auto;\n margin-bottom: 0.5em;\n max-width: 100%;\n}\n\nfigure {\n margin: 0;\n}\n\nfigure figcaption {\n display: block;\n margin-top: 0.3em;\n font-style: italic;\n font-size: 0.8em;\n}\n\nbutton {\n display: none !important;\n}\n\nhr {\n display: block;\n height: 1px;\n border: solid #666;\n border-width: 1px 0 0;\n margin: 1.6em 0;\n padding: 0;\n}\n\nsmall {\n font-size: 0.7em;\n}\n\ndl {\n margin: 1.6em 0;\n}\n\ndl dt {\n float: left;\n width: 11.25em;\n overflow: hidden;\n clear: left;\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: bold;\n margin-bottom: 1em;\n}\n\ndl dd {\n margin-left: 12.5em;\n margin-bottom: 1em;\n}\n\npre {\n box-sizing: border-box;\n margin: 4em 0;\n border: 0.0625em solid #efefef;\n width: 100%;\n padding: 1em;\n font-family: Consolas, monospace;\n white-space: pre;\n overflow: auto;\n}\n\npre code {\n font-size: 0.8em;\n line-height: 1.6em;\n white-space: pre-wrap;\n background: transparent;\n border: none;\n padding: 0;\n vertical-align: inherit;\n}\n\ncode {\n padding: 0.125em 0.375em;\n margin: 0 0.2em;\n font-family: Consolas, monospace;\n font-size: 0.8em;\n white-space: pre;\n border: 1px solid lightgray;\n overflow: auto;\n}\n\naudio,\nvideo {\n max-width: 43.75em;\n}\n\n::selection,\nmark {\n background: #666;\n color: white;\n}\n\ntable {\n border-collapse: collapse;\n margin-bottom: 2em;\n width: 100%;\n}\n\nth,\ntd {\n padding: 0.25em;\n text-align: left;\n}\n\nthead tr {\n text-transform: uppercase;\n font-size: 0.85em;\n letter-spacing: 1px;\n font-family: \"Segoe UI\", sans-serif;\n font-weight: 600;\n}\n\ntbody tr:nth-child(2n+1) {\n background: rgb(0 0 0 / 10%);\n}\n\ntbody {\n border: solid #999;\n border-width: 1px 0;\n}\n\nfigure {\n text-align: center;\n}\n\nfigure > * {\n margin: 0 auto;\n}\n\nheader {\n text-align: center;\n}\n\n.shared-by {\n margin-bottom: 1em;\n}\n\n/* --------------------- Responsive design ------------------------- */\n\n@media (max-width: 719px) {\n header > *:not(.preview),\n article {\n padding: 0 1em;\n }\n}\n\n@media (min-width: 720px) {\n blockquote {\n margin-left: -1.4375em;\n padding-left: 1.25em;\n }\n\n header {\n margin-top: 32px;\n }\n\n .block {\n margin-left: auto;\n margin-right: auto;\n max-width: 43.75em;\n padding: 0 1.25em;\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/web/wallassets/public.js b/public/wallassets/public.js similarity index 100% rename from web/wallassets/public.js rename to public/wallassets/public.js diff --git a/web/wallassets/themes/_global/img/appicon/favicon.ico b/public/wallassets/themes/_global/img/appicon/favicon.ico similarity index 100% rename from web/wallassets/themes/_global/img/appicon/favicon.ico rename to public/wallassets/themes/_global/img/appicon/favicon.ico diff --git a/web/wallassets/themes/_global/img/bg-select.png b/public/wallassets/themes/_global/img/bg-select.png similarity index 100% rename from web/wallassets/themes/_global/img/bg-select.png rename to public/wallassets/themes/_global/img/bg-select.png diff --git a/web/wallassets/themes/_global/img/icons/Diaspora-asterisk.svg b/public/wallassets/themes/_global/img/icons/Diaspora-asterisk.svg similarity index 100% rename from web/wallassets/themes/_global/img/icons/Diaspora-asterisk.svg rename to public/wallassets/themes/_global/img/icons/Diaspora-asterisk.svg diff --git a/web/wallassets/themes/_global/img/icons/carrot-icon--black.png b/public/wallassets/themes/_global/img/icons/carrot-icon--black.png similarity index 100% rename from web/wallassets/themes/_global/img/icons/carrot-icon--black.png rename to public/wallassets/themes/_global/img/icons/carrot-icon--black.png diff --git a/web/wallassets/themes/_global/img/icons/carrot-icon--white.png b/public/wallassets/themes/_global/img/icons/carrot-icon--white.png similarity index 100% rename from web/wallassets/themes/_global/img/icons/carrot-icon--white.png rename to public/wallassets/themes/_global/img/icons/carrot-icon--white.png diff --git a/public/wallassets/themes/_global/img/icons/diaspora-icon--black.png b/public/wallassets/themes/_global/img/icons/diaspora-icon--black.png new file mode 100644 index 000000000..c48a832a9 Binary files /dev/null and b/public/wallassets/themes/_global/img/icons/diaspora-icon--black.png differ diff --git a/public/wallassets/themes/_global/img/icons/scuttle.png b/public/wallassets/themes/_global/img/icons/scuttle.png new file mode 100644 index 000000000..24aabfbd7 Binary files /dev/null and b/public/wallassets/themes/_global/img/icons/scuttle.png differ diff --git a/public/wallassets/themes/_global/img/icons/shaarli.png b/public/wallassets/themes/_global/img/icons/shaarli.png new file mode 100644 index 000000000..1921c5303 Binary files /dev/null and b/public/wallassets/themes/_global/img/icons/shaarli.png differ diff --git a/public/wallassets/themes/_global/img/icons/unmark-icon--black.png b/public/wallassets/themes/_global/img/icons/unmark-icon--black.png new file mode 100644 index 000000000..6d0efc5b2 Binary files /dev/null and b/public/wallassets/themes/_global/img/icons/unmark-icon--black.png differ diff --git a/web/wallassets/themes/_global/img/list.png b/public/wallassets/themes/_global/img/list.png similarity index 100% rename from web/wallassets/themes/_global/img/list.png rename to public/wallassets/themes/_global/img/list.png diff --git a/web/wallassets/themes/_global/img/table.png b/public/wallassets/themes/_global/img/table.png similarity index 100% rename from web/wallassets/themes/_global/img/table.png rename to public/wallassets/themes/_global/img/table.png diff --git a/app/config/webpack/common.js b/scripts/webpack/common.js similarity index 67% rename from app/config/webpack/common.js rename to scripts/webpack/common.js index cc16bafc3..bb93ac2ce 100644 --- a/app/config/webpack/common.js +++ b/scripts/webpack/common.js @@ -2,16 +2,16 @@ const path = require('path'); const webpack = require('webpack'); const StyleLintPlugin = require('stylelint-webpack-plugin'); -const rootDir = path.resolve(__dirname, '../../../'); +const rootDir = path.resolve(__dirname, '../../'); module.exports = { entry: { - material: path.join(rootDir, './app/Resources/static/themes/material/index.js'), - public: path.join(rootDir, './app/Resources/static/themes/_global/share.js'), + material: path.join(rootDir, './assets/themes/material/index.js'), + public: path.join(rootDir, './assets/themes/_global/share.js'), }, output: { filename: '[name].js', - path: path.resolve(rootDir, 'web/wallassets'), + path: path.resolve(rootDir, 'public/wallassets'), publicPath: '', }, plugins: [ @@ -25,7 +25,7 @@ module.exports = { configFile: 'stylelint.config.js', failOnError: false, quiet: false, - context: 'app/Resources/static/themes', + context: 'assets/themes', files: '**/*.scss', }), ], diff --git a/app/config/webpack/dev.js b/scripts/webpack/dev.js similarity index 97% rename from app/config/webpack/dev.js rename to scripts/webpack/dev.js index 1c614f1a0..125a2c256 100644 --- a/app/config/webpack/dev.js +++ b/scripts/webpack/dev.js @@ -10,7 +10,7 @@ module.exports = merge(commonConfig, { mode: 'development', devServer: { static: { - directory: './web', + directory: './public', }, }, plugins: [ diff --git a/app/config/webpack/prod.js b/scripts/webpack/prod.js similarity index 100% rename from app/config/webpack/prod.js rename to scripts/webpack/prod.js diff --git a/src/Wallabag/CoreBundle/Command/CleanDownloadedImagesCommand.php b/src/Command/CleanDownloadedImagesCommand.php similarity index 96% rename from src/Wallabag/CoreBundle/Command/CleanDownloadedImagesCommand.php rename to src/Command/CleanDownloadedImagesCommand.php index fe4f77a70..b6678362f 100644 --- a/src/Wallabag/CoreBundle/Command/CleanDownloadedImagesCommand.php +++ b/src/Command/CleanDownloadedImagesCommand.php @@ -1,15 +1,15 @@ entityManager = $entityManager; $this->dispatcher = $dispatcher; $this->userManager = $userManager; - $this->databaseDriver = $databaseDriver; - $this->databaseName = $databaseName; $this->defaultSettings = $defaultSettings; $this->defaultIgnoreOriginInstanceRules = $defaultIgnoreOriginInstanceRules; + // var_dump($entityManager); die(); + parent::__construct(); } @@ -96,6 +94,10 @@ class InstallCommand extends Command { $this->io->section('Step 1 of 4: Checking system requirements.'); + $conn = $this->entityManager->getConnection(); + $databaseDriver = $conn->getParams()['driver']; + $databaseName = $conn->getParams()['dbname'] ?? $conn->getParams()['path']; + $rows = []; // testing if database driver exists @@ -104,26 +106,24 @@ class InstallCommand extends Command $status = 'OK!'; $help = ''; - if (!\extension_loaded($this->databaseDriver)) { + if (!\extension_loaded($databaseDriver)) { $fulfilled = false; $status = 'ERROR!'; - $help = 'Database driver "' . $this->databaseDriver . '" is not installed.'; + $help = 'Database driver "' . $databaseDriver . '" is not installed.'; } - $rows[] = [sprintf($label, $this->databaseDriver), $status, $help]; + $rows[] = [sprintf($label, $databaseDriver), $status, $help]; // testing if connection to the database can be etablished $label = 'Database connection'; $status = 'OK!'; $help = ''; - $conn = $this->entityManager->getConnection(); - try { $conn->connect(); } catch (\Exception $e) { if (false === strpos($e->getMessage(), 'Unknown database') - && false === strpos($e->getMessage(), 'database "' . $this->databaseName . '" does not exist')) { + && false === strpos($e->getMessage(), 'database "' . $databaseName . '" does not exist')) { $fulfilled = false; $status = 'ERROR!'; $help = 'Can\'t connect to the database: ' . $e->getMessage(); @@ -295,8 +295,8 @@ class InstallCommand extends Command $this->io->section('Step 4 of 4: Config setup.'); // cleanup before insert new stuff - $this->entityManager->createQuery('DELETE FROM Wallabag\CoreBundle\Entity\InternalSetting')->execute(); - $this->entityManager->createQuery('DELETE FROM Wallabag\CoreBundle\Entity\IgnoreOriginInstanceRule')->execute(); + $this->entityManager->createQuery('DELETE FROM App\Entity\InternalSetting')->execute(); + $this->entityManager->createQuery('DELETE FROM App\Entity\IgnoreOriginInstanceRule')->execute(); foreach ($this->defaultSettings as $setting) { $newSetting = new InternalSetting(); diff --git a/src/Wallabag/CoreBundle/Command/ListUserCommand.php b/src/Command/ListUserCommand.php similarity index 95% rename from src/Wallabag/CoreBundle/Command/ListUserCommand.php rename to src/Command/ListUserCommand.php index f4898c48c..5bda4a1dc 100644 --- a/src/Wallabag/CoreBundle/Command/ListUserCommand.php +++ b/src/Command/ListUserCommand.php @@ -1,14 +1,14 @@ validateAuthentication(); - return $this->forward('Wallabag\AnnotationBundle\Controller\WallabagAnnotationController::getAnnotationsAction', [ + return $this->forward('App\Controller\WallabagAnnotationController::getAnnotationsAction', [ 'entry' => $entry, ]); } @@ -108,7 +108,7 @@ class AnnotationRestController extends WallabagRestController { $this->validateAuthentication(); - return $this->forward('Wallabag\AnnotationBundle\Controller\WallabagAnnotationController::postAnnotationAction', [ + return $this->forward('App\Controller\WallabagAnnotationController::postAnnotationAction', [ 'request' => $request, 'entry' => $entry, ]); @@ -144,7 +144,7 @@ class AnnotationRestController extends WallabagRestController { $this->validateAuthentication(); - return $this->forward('Wallabag\AnnotationBundle\Controller\WallabagAnnotationController::putAnnotationAction', [ + return $this->forward('App\Controller\WallabagAnnotationController::putAnnotationAction', [ 'annotation' => $annotation, 'request' => $request, ]); @@ -180,7 +180,7 @@ class AnnotationRestController extends WallabagRestController { $this->validateAuthentication(); - return $this->forward('Wallabag\AnnotationBundle\Controller\WallabagAnnotationController::deleteAnnotationAction', [ + return $this->forward('App\Controller\WallabagAnnotationController::deleteAnnotationAction', [ 'annotation' => $annotation, ]); } diff --git a/src/Wallabag/ApiBundle/Controller/ConfigRestController.php b/src/Controller/Api/ConfigRestController.php similarity index 96% rename from src/Wallabag/ApiBundle/Controller/ConfigRestController.php rename to src/Controller/Api/ConfigRestController.php index 6539291ff..8bbfee3a9 100644 --- a/src/Wallabag/ApiBundle/Controller/ConfigRestController.php +++ b/src/Controller/Api/ConfigRestController.php @@ -1,6 +1,6 @@ query->get('urls', [])); - $limit = $this->getParameter('wallabag_core.api_limit_mass_actions'); + $limit = $this->getParameter('wallabag.api_limit_mass_actions'); if (\count($urls) > $limit) { throw new HttpException(400, 'API limit reached'); @@ -1030,7 +1030,7 @@ class EntryRestController extends WallabagRestController } // if refreshing entry failed, don't save it - if ($this->getParameter('wallabag_core.fetching_error_message') === $entry->getContent()) { + if ($this->getParameter('wallabag.fetching_error_message') === $entry->getContent()) { return new JsonResponse([], 304); } diff --git a/src/Wallabag/ApiBundle/Controller/SearchRestController.php b/src/Controller/Api/SearchRestController.php similarity index 96% rename from src/Wallabag/ApiBundle/Controller/SearchRestController.php rename to src/Controller/Api/SearchRestController.php index cd71c83f1..a33bd904c 100644 --- a/src/Wallabag/ApiBundle/Controller/SearchRestController.php +++ b/src/Controller/Api/SearchRestController.php @@ -1,7 +1,8 @@ getParameter('wallabag_core.version'); + $version = $this->getParameter('wallabag.version'); $json = $this->serializer->serialize($version, 'json'); return (new JsonResponse())->setJson($json); @@ -85,7 +85,7 @@ class WallabagRestController extends AbstractFOSRestController public function getInfoAction(Config $craueConfig) { $info = new ApplicationInfo( - $this->getParameter('wallabag_core.version'), + $this->getParameter('wallabag.version'), $this->getParameter('fosuser_registration') && $craueConfig->get('api_user_registration'), ); diff --git a/src/Wallabag/CoreBundle/Controller/ConfigController.php b/src/Controller/ConfigController.php similarity index 95% rename from src/Wallabag/CoreBundle/Controller/ConfigController.php rename to src/Controller/ConfigController.php index 9adc4c29b..3c645afa6 100644 --- a/src/Wallabag/CoreBundle/Controller/ConfigController.php +++ b/src/Controller/ConfigController.php @@ -1,7 +1,26 @@ redirect($this->generateUrl('config') . '#set6'); } - return $this->render('@WallabagCore/Config/index.html.twig', [ + return $this->render('Config/index.html.twig', [ 'form' => [ 'config' => $configForm->createView(), 'feed' => $feedForm->createView(), @@ -346,7 +346,7 @@ class ConfigController extends AbstractController 'flashes.config.notice.otp_enabled' ); - return $this->render('@WallabagCore/Config/otp_app.html.twig', [ + return $this->render('Config/otp_app.html.twig', [ 'backupCodes' => $backupCodes, 'qr_code' => $googleAuthenticator->getQRContent($user), 'secret' => $secret, diff --git a/src/Wallabag/ApiBundle/Controller/DeveloperController.php b/src/Controller/DeveloperController.php similarity index 77% rename from src/Wallabag/ApiBundle/Controller/DeveloperController.php rename to src/Controller/DeveloperController.php index 052bda99d..111cf8394 100644 --- a/src/Wallabag/ApiBundle/Controller/DeveloperController.php +++ b/src/Controller/DeveloperController.php @@ -1,7 +1,10 @@ findByUser($this->getUser()->getId()); - return $this->render('@WallabagCore/Developer/index.html.twig', [ + return $this->render('Developer/index.html.twig', [ 'clients' => $clients, ]); } @@ -34,7 +37,7 @@ class DeveloperController extends AbstractController /** * Create a client (an app). * - * @Route("/developer/client/create", name="developer_create_client") + * @Route("/client/create", name="developer_create_client") * * @return Response */ @@ -54,14 +57,14 @@ class DeveloperController extends AbstractController $translator->trans('flashes.developer.notice.client_created', ['%name%' => $client->getName()]) ); - return $this->render('@WallabagCore/Developer/client_parameters.html.twig', [ + return $this->render('Developer/client_parameters.html.twig', [ 'client_id' => $client->getPublicId(), 'client_secret' => $client->getSecret(), 'client_name' => $client->getName(), ]); } - return $this->render('@WallabagCore/Developer/client.html.twig', [ + return $this->render('Developer/client.html.twig', [ 'form' => $clientForm->createView(), ]); } @@ -69,7 +72,7 @@ class DeveloperController extends AbstractController /** * Remove a client. * - * @Route("/developer/client/delete/{id}", requirements={"id" = "\d+"}, name="developer_delete_client") + * @Route("/client/delete/{id}", requirements={"id" = "\d+"}, name="developer_delete_client") * * @return RedirectResponse */ @@ -93,12 +96,12 @@ class DeveloperController extends AbstractController /** * Display developer how to use an existing app. * - * @Route("/developer/howto/first-app", name="developer_howto_firstapp") + * @Route("/howto/first-app", name="developer_howto_firstapp") * * @return Response */ public function howtoFirstAppAction() { - return $this->render('@WallabagCore/Developer/howto_app.html.twig'); + return $this->render('Developer/howto_app.html.twig'); } } diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Controller/EntryController.php similarity index 95% rename from src/Wallabag/CoreBundle/Controller/EntryController.php rename to src/Controller/EntryController.php index f26fe1b48..ae8c97913 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Controller/EntryController.php @@ -1,7 +1,20 @@ showEntries('search', $request, $page); } - return $this->render('@WallabagCore/Entry/search_form.html.twig', [ + return $this->render('Entry/search_form.html.twig', [ 'form' => $form->createView(), 'currentRoute' => $currentRoute, ]); @@ -200,7 +200,7 @@ class EntryController extends AbstractController return $this->redirect($this->generateUrl('homepage')); } - return $this->render('@WallabagCore/Entry/new_form.html.twig', [ + return $this->render('Entry/new_form.html.twig', [ 'form' => $form->createView(), ]); } @@ -235,7 +235,7 @@ class EntryController extends AbstractController */ public function addEntryAction() { - return $this->render('@WallabagCore/Entry/new.html.twig'); + return $this->render('Entry/new.html.twig'); } /** @@ -265,7 +265,7 @@ class EntryController extends AbstractController return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()])); } - return $this->render('@WallabagCore/Entry/edit.html.twig', [ + return $this->render('Entry/edit.html.twig', [ 'form' => $form->createView(), ]); } @@ -392,7 +392,7 @@ class EntryController extends AbstractController $this->checkUserAction($entry); return $this->render( - '@WallabagCore/Entry/entry.html.twig', + 'Entry/entry.html.twig', ['entry' => $entry] ); } @@ -412,7 +412,7 @@ class EntryController extends AbstractController $this->updateEntry($entry, 'entry_reloaded'); // if refreshing entry failed, don't save it - if ($this->getParameter('wallabag_core.fetching_error_message') === $entry->getContent()) { + if ($this->getParameter('wallabag.fetching_error_message') === $entry->getContent()) { $this->addFlash('notice', 'flashes.entry.notice.entry_reloaded_failed'); return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()])); @@ -584,7 +584,7 @@ class EntryController extends AbstractController } return $this->render( - '@WallabagCore/Entry/share.html.twig', + 'Entry/share.html.twig', ['entry' => $entry] ); } @@ -677,7 +677,7 @@ class EntryController extends AbstractController ->countUntaggedEntriesByUser($this->getUser()->getId()); return $this->render( - '@WallabagCore/Entry/entries.html.twig', [ + 'Entry/entries.html.twig', [ 'form' => $form->createView(), 'entries' => $entries, 'currentPage' => $page, diff --git a/src/Wallabag/CoreBundle/Controller/ExceptionController.php b/src/Controller/ExceptionController.php similarity index 90% rename from src/Wallabag/CoreBundle/Controller/ExceptionController.php rename to src/Controller/ExceptionController.php index ffff3c85f..d532ea820 100644 --- a/src/Wallabag/CoreBundle/Controller/ExceptionController.php +++ b/src/Controller/ExceptionController.php @@ -1,6 +1,6 @@ templateExists($template)) { return $template; } diff --git a/src/Wallabag/CoreBundle/Controller/ExportController.php b/src/Controller/ExportController.php similarity index 92% rename from src/Wallabag/CoreBundle/Controller/ExportController.php rename to src/Controller/ExportController.php index c958a382c..11a4c3abd 100644 --- a/src/Wallabag/CoreBundle/Controller/ExportController.php +++ b/src/Controller/ExportController.php @@ -1,26 +1,29 @@ getConfig()->getFeedLimit() ?: $this->getParameter('wallabag_core.feed_limit'); + $perPage = $user->getConfig()->getFeedLimit() ?: $this->getParameter('wallabag.feed_limit'); $entries->setMaxPerPage($perPage); if (null === $entries) { @@ -151,14 +154,14 @@ class FeedController extends AbstractController } return $this->render( - '@WallabagCore/Entry/entries.xml.twig', + 'Entry/entries.xml.twig', [ 'type' => 'tag', 'url' => $url, 'entries' => $entries, 'user' => $user->getUsername(), 'domainName' => $this->getParameter('domain_name'), - 'version' => $this->getParameter('wallabag_core.version'), + 'version' => $this->getParameter('wallabag.version'), 'tag' => $tag->getSlug(), 'updated' => $this->prepareFeedUpdatedDate($entries, $sort), ], @@ -213,7 +216,7 @@ class FeedController extends AbstractController $pagerAdapter = new DoctrineORMAdapter($qb->getQuery(), true, false); $entries = new Pagerfanta($pagerAdapter); - $perPage = $user->getConfig()->getFeedLimit() ?: $this->getParameter('wallabag_core.feed_limit'); + $perPage = $user->getConfig()->getFeedLimit() ?: $this->getParameter('wallabag.feed_limit'); $entries->setMaxPerPage($perPage); $url = $this->generateUrl( @@ -233,13 +236,13 @@ class FeedController extends AbstractController } } - return $this->render('@WallabagCore/Entry/entries.xml.twig', [ + return $this->render('Entry/entries.xml.twig', [ 'type' => $type, 'url' => $url, 'entries' => $entries, 'user' => $user->getUsername(), 'domainName' => $this->getParameter('domain_name'), - 'version' => $this->getParameter('wallabag_core.version'), + 'version' => $this->getParameter('wallabag.version'), 'updated' => $this->prepareFeedUpdatedDate($entries), ], new Response('', 200, ['Content-Type' => 'application/atom+xml']) diff --git a/src/Wallabag/CoreBundle/Controller/IgnoreOriginInstanceRuleController.php b/src/Controller/IgnoreOriginInstanceRuleController.php similarity index 89% rename from src/Wallabag/CoreBundle/Controller/IgnoreOriginInstanceRuleController.php rename to src/Controller/IgnoreOriginInstanceRuleController.php index 941fc9275..c8436caf6 100644 --- a/src/Wallabag/CoreBundle/Controller/IgnoreOriginInstanceRuleController.php +++ b/src/Controller/IgnoreOriginInstanceRuleController.php @@ -1,7 +1,10 @@ findAll(); - return $this->render('@WallabagCore/IgnoreOriginInstanceRule/index.html.twig', [ + return $this->render('IgnoreOriginInstanceRule/index.html.twig', [ 'rules' => $rules, ]); } @@ -70,7 +68,7 @@ class IgnoreOriginInstanceRuleController extends AbstractController return $this->redirectToRoute('ignore_origin_instance_rules_index'); } - return $this->render('@WallabagCore/IgnoreOriginInstanceRule/new.html.twig', [ + return $this->render('IgnoreOriginInstanceRule/new.html.twig', [ 'rule' => $ignoreOriginInstanceRule, 'form' => $form->createView(), ]); @@ -101,7 +99,7 @@ class IgnoreOriginInstanceRuleController extends AbstractController return $this->redirectToRoute('ignore_origin_instance_rules_index'); } - return $this->render('@WallabagCore/IgnoreOriginInstanceRule/edit.html.twig', [ + return $this->render('IgnoreOriginInstanceRule/edit.html.twig', [ 'rule' => $ignoreOriginInstanceRule, 'edit_form' => $editForm->createView(), 'delete_form' => $deleteForm->createView(), diff --git a/src/Wallabag/ImportBundle/Controller/BrowserController.php b/src/Controller/Import/BrowserController.php similarity index 84% rename from src/Wallabag/ImportBundle/Controller/BrowserController.php rename to src/Controller/Import/BrowserController.php index 326ae7279..25cb2e700 100644 --- a/src/Wallabag/ImportBundle/Controller/BrowserController.php +++ b/src/Controller/Import/BrowserController.php @@ -1,19 +1,19 @@ get('mark_as_read')->getData(); $name = $this->getUser()->getId() . '.json'; - if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { + if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag.import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag.import.resource_dir'), $name)) { $res = $wallabag - ->setFilepath($this->getParameter('wallabag_import.resource_dir') . '/' . $name) + ->setFilepath($this->getParameter('wallabag.import.resource_dir') . '/' . $name) ->setMarkAsRead($markAsRead) ->import(); @@ -51,7 +51,7 @@ abstract class BrowserController extends AbstractController ]); } - unlink($this->getParameter('wallabag_import.resource_dir') . '/' . $name); + unlink($this->getParameter('wallabag.import.resource_dir') . '/' . $name); } $this->addFlash('notice', $message); diff --git a/src/Wallabag/ImportBundle/Controller/ChromeController.php b/src/Controller/Import/ChromeController.php similarity index 85% rename from src/Wallabag/ImportBundle/Controller/ChromeController.php rename to src/Controller/Import/ChromeController.php index c4c3f3a5c..5177fa3ec 100644 --- a/src/Wallabag/ImportBundle/Controller/ChromeController.php +++ b/src/Controller/Import/ChromeController.php @@ -1,14 +1,14 @@ get('mark_as_read')->getData(); $name = 'delicious_' . $this->getUser()->getId() . '.json'; - if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { + if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag.import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag.import.resource_dir'), $name)) { $res = $delicious - ->setFilepath($this->getParameter('wallabag_import.resource_dir') . '/' . $name) + ->setFilepath($this->getParameter('wallabag.import.resource_dir') . '/' . $name) ->setMarkAsRead($markAsRead) ->import(); @@ -65,7 +65,7 @@ class DeliciousController extends AbstractController ]); } - unlink($this->getParameter('wallabag_import.resource_dir') . '/' . $name); + unlink($this->getParameter('wallabag.import.resource_dir') . '/' . $name); } $this->addFlash('notice', $message); @@ -76,7 +76,7 @@ class DeliciousController extends AbstractController $this->addFlash('notice', 'flashes.import.notice.failed_on_file'); } - return $this->render('@WallabagImport/Delicious/index.html.twig', [ + return $this->render('Import/delicious.html.twig', [ 'form' => $form->createView(), 'import' => $delicious, ]); diff --git a/src/Wallabag/ImportBundle/Controller/ElcuratorController.php b/src/Controller/Import/ElcuratorController.php similarity index 85% rename from src/Wallabag/ImportBundle/Controller/ElcuratorController.php rename to src/Controller/Import/ElcuratorController.php index 990334cc2..35a181e3d 100644 --- a/src/Wallabag/ImportBundle/Controller/ElcuratorController.php +++ b/src/Controller/Import/ElcuratorController.php @@ -1,14 +1,14 @@ render('@WallabagImport/Import/index.html.twig', [ + return $this->render('Import/index.html.twig', [ 'imports' => $importChain->getAll(), ]); } @@ -41,7 +41,7 @@ class ImportController extends Controller $rabbitNotInstalled = false; if (!$authorizationChecker->isGranted('ROLE_SUPER_ADMIN')) { - return $this->render('@WallabagImport/Import/check_queue.html.twig'); + return $this->render('Import/check_queue.html.twig'); } if ($craueConfig->get('import_with_rabbitmq')) { @@ -81,7 +81,7 @@ class ImportController extends Controller } } - return $this->render('@WallabagImport/Import/check_queue.html.twig', [ + return $this->render('Import/check_queue.html.twig', [ 'nbRedisMessages' => $nbRedisMessages, 'nbRabbitMessages' => $nbRabbitMessages, 'redisNotInstalled' => $redisNotInstalled, diff --git a/src/Wallabag/ImportBundle/Controller/InstapaperController.php b/src/Controller/Import/InstapaperController.php similarity index 82% rename from src/Wallabag/ImportBundle/Controller/InstapaperController.php rename to src/Controller/Import/InstapaperController.php index 03d562916..5cbca3c69 100644 --- a/src/Wallabag/ImportBundle/Controller/InstapaperController.php +++ b/src/Controller/Import/InstapaperController.php @@ -1,16 +1,16 @@ get('mark_as_read')->getData(); $name = 'instapaper_' . $this->getUser()->getId() . '.csv'; - if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { + if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag.import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag.import.resource_dir'), $name)) { $res = $instapaper - ->setFilepath($this->getParameter('wallabag_import.resource_dir') . '/' . $name) + ->setFilepath($this->getParameter('wallabag.import.resource_dir') . '/' . $name) ->setMarkAsRead($markAsRead) ->import(); @@ -65,7 +65,7 @@ class InstapaperController extends AbstractController ]); } - unlink($this->getParameter('wallabag_import.resource_dir') . '/' . $name); + unlink($this->getParameter('wallabag.import.resource_dir') . '/' . $name); } $this->addFlash('notice', $message); @@ -76,7 +76,7 @@ class InstapaperController extends AbstractController $this->addFlash('notice', 'flashes.import.notice.failed_on_file'); } - return $this->render('@WallabagImport/Instapaper/index.html.twig', [ + return $this->render('Import/instapaper.html.twig', [ 'form' => $form->createView(), 'import' => $instapaper, ]); diff --git a/src/Wallabag/ImportBundle/Controller/PinboardController.php b/src/Controller/Import/PinboardController.php similarity index 82% rename from src/Wallabag/ImportBundle/Controller/PinboardController.php rename to src/Controller/Import/PinboardController.php index 6c81e8eb6..c21298dc0 100644 --- a/src/Wallabag/ImportBundle/Controller/PinboardController.php +++ b/src/Controller/Import/PinboardController.php @@ -1,16 +1,16 @@ get('mark_as_read')->getData(); $name = 'pinboard_' . $this->getUser()->getId() . '.json'; - if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { + if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag.import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag.import.resource_dir'), $name)) { $res = $pinboard - ->setFilepath($this->getParameter('wallabag_import.resource_dir') . '/' . $name) + ->setFilepath($this->getParameter('wallabag.import.resource_dir') . '/' . $name) ->setMarkAsRead($markAsRead) ->import(); @@ -65,7 +65,7 @@ class PinboardController extends AbstractController ]); } - unlink($this->getParameter('wallabag_import.resource_dir') . '/' . $name); + unlink($this->getParameter('wallabag.import.resource_dir') . '/' . $name); } $this->addFlash('notice', $message); @@ -76,7 +76,7 @@ class PinboardController extends AbstractController $this->addFlash('notice', 'flashes.import.notice.failed_on_file'); } - return $this->render('@WallabagImport/Pinboard/index.html.twig', [ + return $this->render('Import/pinboard.html.twig', [ 'form' => $form->createView(), 'import' => $pinboard, ]); diff --git a/src/Wallabag/ImportBundle/Controller/PocketController.php b/src/Controller/Import/PocketController.php similarity index 92% rename from src/Wallabag/ImportBundle/Controller/PocketController.php rename to src/Controller/Import/PocketController.php index 2ca509bc1..4595e9b3e 100644 --- a/src/Wallabag/ImportBundle/Controller/PocketController.php +++ b/src/Controller/Import/PocketController.php @@ -1,7 +1,9 @@ getForm(); - return $this->render('@WallabagImport/Pocket/index.html.twig', [ + return $this->render('Import/pocket.html.twig', [ 'import' => $pocket, 'has_consumer_key' => '' === trim($this->getUser()->getConfig()->getPocketConsumerKey()) ? false : true, 'form' => $form->createView(), @@ -51,7 +51,7 @@ class PocketController extends AbstractController } /** - * @Route("/pocket/auth", name="import_pocket_auth") + * @Route("/import/pocket/auth", name="import_pocket_auth") */ public function authAction(Request $request, PocketImport $pocketImport) { @@ -81,7 +81,7 @@ class PocketController extends AbstractController } /** - * @Route("/pocket/callback", name="import_pocket_callback") + * @Route("/import/pocket/callback", name="import_pocket_callback") */ public function callbackAction(PocketImport $pocketImport, TranslatorInterface $translator) { diff --git a/src/Wallabag/ImportBundle/Controller/ReadabilityController.php b/src/Controller/Import/ReadabilityController.php similarity index 82% rename from src/Wallabag/ImportBundle/Controller/ReadabilityController.php rename to src/Controller/Import/ReadabilityController.php index fb2c22262..b7f377890 100644 --- a/src/Wallabag/ImportBundle/Controller/ReadabilityController.php +++ b/src/Controller/Import/ReadabilityController.php @@ -1,16 +1,16 @@ get('mark_as_read')->getData(); $name = 'readability_' . $this->getUser()->getId() . '.json'; - if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { + if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag.import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag.import.resource_dir'), $name)) { $res = $readability - ->setFilepath($this->getParameter('wallabag_import.resource_dir') . '/' . $name) + ->setFilepath($this->getParameter('wallabag.import.resource_dir') . '/' . $name) ->setMarkAsRead($markAsRead) ->import(); @@ -65,7 +65,7 @@ class ReadabilityController extends AbstractController ]); } - unlink($this->getParameter('wallabag_import.resource_dir') . '/' . $name); + unlink($this->getParameter('wallabag.import.resource_dir') . '/' . $name); } $this->addFlash('notice', $message); @@ -76,7 +76,7 @@ class ReadabilityController extends AbstractController $this->addFlash('notice', 'flashes.import.notice.failed_on_file'); } - return $this->render('@WallabagImport/Readability/index.html.twig', [ + return $this->render('Import/readability.html.twig', [ 'form' => $form->createView(), 'import' => $readability, ]); diff --git a/src/Wallabag/ImportBundle/Controller/WallabagController.php b/src/Controller/Import/WallabagController.php similarity index 86% rename from src/Wallabag/ImportBundle/Controller/WallabagController.php rename to src/Controller/Import/WallabagController.php index fd22c8eec..9bdeff1d4 100644 --- a/src/Wallabag/ImportBundle/Controller/WallabagController.php +++ b/src/Controller/Import/WallabagController.php @@ -1,14 +1,14 @@ get('mark_as_read')->getData(); $name = $this->getUser()->getId() . '.json'; - if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { + if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag.import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag.import.resource_dir'), $name)) { $res = $wallabag - ->setFilepath($this->getParameter('wallabag_import.resource_dir') . '/' . $name) + ->setFilepath($this->getParameter('wallabag.import.resource_dir') . '/' . $name) ->setMarkAsRead($markAsRead) ->import(); @@ -54,7 +54,7 @@ abstract class WallabagController extends AbstractController ]); } - unlink($this->getParameter('wallabag_import.resource_dir') . '/' . $name); + unlink($this->getParameter('wallabag.import.resource_dir') . '/' . $name); } $this->addFlash('notice', $message); diff --git a/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php b/src/Controller/Import/WallabagV1Controller.php similarity index 84% rename from src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php rename to src/Controller/Import/WallabagV1Controller.php index c5257fc3f..b79781592 100644 --- a/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php +++ b/src/Controller/Import/WallabagV1Controller.php @@ -1,14 +1,14 @@ findByUser($this->getUser()); - return $this->render('@WallabagCore/SiteCredential/index.html.twig', [ + return $this->render('SiteCredential/index.html.twig', [ 'credentials' => $credentials, ]); } @@ -84,7 +82,7 @@ class SiteCredentialController extends AbstractController return $this->redirectToRoute('site_credentials_index'); } - return $this->render('@WallabagCore/SiteCredential/new.html.twig', [ + return $this->render('SiteCredential/new.html.twig', [ 'credential' => $credential, 'form' => $form->createView(), ]); @@ -122,7 +120,7 @@ class SiteCredentialController extends AbstractController return $this->redirectToRoute('site_credentials_index'); } - return $this->render('@WallabagCore/SiteCredential/edit.html.twig', [ + return $this->render('SiteCredential/edit.html.twig', [ 'credential' => $siteCredential, 'edit_form' => $editForm->createView(), 'delete_form' => $deleteForm->createView(), diff --git a/src/Wallabag/CoreBundle/Controller/StaticController.php b/src/Controller/StaticController.php similarity index 68% rename from src/Wallabag/CoreBundle/Controller/StaticController.php rename to src/Controller/StaticController.php index 1814976db..e454ddbf5 100644 --- a/src/Wallabag/CoreBundle/Controller/StaticController.php +++ b/src/Controller/StaticController.php @@ -1,6 +1,6 @@ getParameter('addons_url'); return $this->render( - '@WallabagCore/Static/howto.html.twig', + 'Static/howto.html.twig', [ 'addonsUrl' => $addonsUrl, ] @@ -28,10 +28,10 @@ class StaticController extends AbstractController public function aboutAction() { return $this->render( - '@WallabagCore/Static/about.html.twig', + 'Static/about.html.twig', [ - 'version' => $this->getParameter('wallabag_core.version'), - 'paypal_url' => $this->getParameter('wallabag_core.paypal_url'), + 'version' => $this->getParameter('wallabag.version'), + 'paypal_url' => $this->getParameter('wallabag.paypal_url'), ] ); } @@ -42,7 +42,7 @@ class StaticController extends AbstractController public function quickstartAction() { return $this->render( - '@WallabagCore/Static/quickstart.html.twig' + 'Static/quickstart.html.twig' ); } } diff --git a/src/Wallabag/CoreBundle/Controller/TagController.php b/src/Controller/TagController.php similarity index 93% rename from src/Wallabag/CoreBundle/Controller/TagController.php rename to src/Controller/TagController.php index c15b6947d..0b445b691 100644 --- a/src/Wallabag/CoreBundle/Controller/TagController.php +++ b/src/Controller/TagController.php @@ -1,7 +1,16 @@ redirect($this->generateUrl('view', ['id' => $entry->getId()])); } - return $this->render('@WallabagCore/Tag/new_form.html.twig', [ + return $this->render('Tag/new_form.html.twig', [ 'form' => $form->createView(), 'entry' => $entry, ]); @@ -126,7 +126,7 @@ class TagController extends AbstractController $renameForms[$tag['id']] = $this->createForm(RenameTagType::class, new Tag())->createView(); } - return $this->render('@WallabagCore/Tag/tags.html.twig', [ + return $this->render('Tag/tags.html.twig', [ 'tags' => $tags, 'renameForms' => $renameForms, 'nbEntriesUntagged' => $nbEntriesUntagged, @@ -163,7 +163,7 @@ class TagController extends AbstractController } } - return $this->render('@WallabagCore/Entry/entries.html.twig', [ + return $this->render('Entry/entries.html.twig', [ 'form' => null, 'entries' => $entries, 'currentPage' => $page, diff --git a/src/Wallabag/UserBundle/Controller/ManageController.php b/src/Controller/UserController.php similarity index 92% rename from src/Wallabag/UserBundle/Controller/ManageController.php rename to src/Controller/UserController.php index fb7b5b2e5..667f3fa34 100644 --- a/src/Wallabag/UserBundle/Controller/ManageController.php +++ b/src/Controller/UserController.php @@ -1,7 +1,12 @@ redirectToRoute('user_edit', ['id' => $user->getId()]); } - return $this->render('@WallabagUser/Manage/new.html.twig', [ + return $this->render('User/new.html.twig', [ 'user' => $user, 'form' => $form->createView(), ]); @@ -108,7 +108,7 @@ class ManageController extends AbstractController return $this->redirectToRoute('user_edit', ['id' => $user->getId()]); } - return $this->render('@WallabagUser/Manage/edit.html.twig', [ + return $this->render('User/edit.html.twig', [ 'user' => $user, 'edit_form' => $form->createView(), 'delete_form' => $deleteForm->createView(), @@ -173,7 +173,7 @@ class ManageController extends AbstractController } } - return $this->render('@WallabagUser/Manage/index.html.twig', [ + return $this->render('User/index.html.twig', [ 'searchForm' => $form->createView(), 'users' => $pagerFanta, ]); diff --git a/src/Wallabag/AnnotationBundle/Controller/WallabagAnnotationController.php b/src/Controller/WallabagAnnotationController.php similarity index 89% rename from src/Wallabag/AnnotationBundle/Controller/WallabagAnnotationController.php rename to src/Controller/WallabagAnnotationController.php index 704cc9a90..0601cd717 100644 --- a/src/Wallabag/AnnotationBundle/Controller/WallabagAnnotationController.php +++ b/src/Controller/WallabagAnnotationController.php @@ -1,7 +1,12 @@ persist($product); + + $manager->flush(); + } +} diff --git a/src/Wallabag/CoreBundle/DataFixtures/ConfigFixtures.php b/src/DataFixtures/ConfigFixtures.php similarity index 93% rename from src/Wallabag/CoreBundle/DataFixtures/ConfigFixtures.php rename to src/DataFixtures/ConfigFixtures.php index 77809f95b..519566ec9 100644 --- a/src/Wallabag/CoreBundle/DataFixtures/ConfigFixtures.php +++ b/src/DataFixtures/ConfigFixtures.php @@ -1,12 +1,11 @@ container->getParameter('wallabag_core.default_ignore_origin_instance_rules') as $ignore_origin_instance_rule) { + foreach ($this->container->getParameter('wallabag.default_ignore_origin_instance_rules') as $ignore_origin_instance_rule) { $newIgnoreOriginInstanceRule = new IgnoreOriginInstanceRule(); $newIgnoreOriginInstanceRule->setRule($ignore_origin_instance_rule['rule']); $manager->persist($newIgnoreOriginInstanceRule); diff --git a/src/Wallabag/CoreBundle/DataFixtures/IgnoreOriginUserRuleFixtures.php b/src/DataFixtures/IgnoreOriginUserRuleFixtures.php similarity index 83% rename from src/Wallabag/CoreBundle/DataFixtures/IgnoreOriginUserRuleFixtures.php rename to src/DataFixtures/IgnoreOriginUserRuleFixtures.php index fbacef901..490700f63 100644 --- a/src/Wallabag/CoreBundle/DataFixtures/IgnoreOriginUserRuleFixtures.php +++ b/src/DataFixtures/IgnoreOriginUserRuleFixtures.php @@ -1,12 +1,11 @@ container->getParameter('wallabag_core.default_internal_settings') as $setting) { + foreach ($this->container->getParameter('wallabag.default_internal_settings') as $setting) { $newSetting = new InternalSetting(); $newSetting->setName($setting['name']); $newSetting->setValue($setting['value']); diff --git a/src/Wallabag/CoreBundle/DataFixtures/SiteCredentialFixtures.php b/src/DataFixtures/SiteCredentialFixtures.php similarity index 89% rename from src/Wallabag/CoreBundle/DataFixtures/SiteCredentialFixtures.php rename to src/DataFixtures/SiteCredentialFixtures.php index 68cbe2182..b24fe8e05 100644 --- a/src/Wallabag/CoreBundle/DataFixtures/SiteCredentialFixtures.php +++ b/src/DataFixtures/SiteCredentialFixtures.php @@ -1,15 +1,14 @@ getRootNode(); $rootNode @@ -72,7 +72,15 @@ class Configuration implements ConfigurationInterface ->end() ->end() ->end() - ->end() + ->arrayNode('import') + ->children() + ->arrayNode('allow_mimetypes') + ->prototype('scalar')->end() + ->end() + ->scalarNode('resource_dir') + ->end() + ->end() + ->end() ; return $treeBuilder; diff --git a/src/DependencyInjection/WallabagExtension.php b/src/DependencyInjection/WallabagExtension.php new file mode 100644 index 000000000..f26287b50 --- /dev/null +++ b/src/DependencyInjection/WallabagExtension.php @@ -0,0 +1,40 @@ +processConfiguration($configuration, $configs); + + $container->setParameter('wallabag.languages', $config['languages']); + $container->setParameter('wallabag.items_on_page', $config['items_on_page']); + $container->setParameter('wallabag.language', $config['language']); + $container->setParameter('wallabag.feed_limit', $config['rss_limit']); + $container->setParameter('wallabag.reading_speed', $config['reading_speed']); + $container->setParameter('wallabag.version', $config['version']); + $container->setParameter('wallabag.paypal_url', $config['paypal_url']); + $container->setParameter('wallabag.cache_lifetime', $config['cache_lifetime']); + $container->setParameter('wallabag.action_mark_as_read', $config['action_mark_as_read']); + $container->setParameter('wallabag.list_mode', $config['list_mode']); + $container->setParameter('wallabag.fetching_error_message', $config['fetching_error_message']); + $container->setParameter('wallabag.fetching_error_message_title', $config['fetching_error_message_title']); + $container->setParameter('wallabag.api_limit_mass_actions', $config['api_limit_mass_actions']); + $container->setParameter('wallabag.default_internal_settings', $config['default_internal_settings']); + $container->setParameter('wallabag.site_credentials.encryption_key_path', $config['encryption_key_path']); + $container->setParameter('wallabag.default_ignore_origin_instance_rules', $config['default_ignore_origin_instance_rules']); + + $container->setParameter('wallabag.import.allow_mimetypes', $config['import']['allow_mimetypes']); + $container->setParameter('wallabag.import.resource_dir', $config['import']['resource_dir']); + } + + public function getAlias() + { + return 'wallabag'; + } +} diff --git a/src/Wallabag/CoreBundle/Doctrine/JsonArrayType.php b/src/Doctrine/JsonArrayType.php similarity index 100% rename from src/Wallabag/CoreBundle/Doctrine/JsonArrayType.php rename to src/Doctrine/JsonArrayType.php diff --git a/src/Wallabag/CoreBundle/Doctrine/WallabagMigration.php b/src/Doctrine/WallabagMigration.php similarity index 97% rename from src/Wallabag/CoreBundle/Doctrine/WallabagMigration.php rename to src/Doctrine/WallabagMigration.php index b9685df55..abaad89dc 100644 --- a/src/Wallabag/CoreBundle/Doctrine/WallabagMigration.php +++ b/src/Doctrine/WallabagMigration.php @@ -1,6 +1,6 @@ getProjectDir() . '/config/bundles.php'; + foreach ($contents as $class => $envs) { + if ($envs[$this->environment] ?? $envs['all'] ?? false) { + yield new $class(); + } + } + } + + public function getProjectDir(): string + { + return \dirname(__DIR__); + } + + protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void + { + $container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php')); + $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || $this->debug); + $container->setParameter('container.dumper.inline_factories', true); + $confDir = $this->getProjectDir() . '/config'; + + $loader->load($confDir . '/{packages}/*' . self::CONFIG_EXTS, 'glob'); + $loader->load($confDir . '/{packages}/' . $this->environment . '/*' . self::CONFIG_EXTS, 'glob'); + $loader->load($confDir . '/{services}' . self::CONFIG_EXTS, 'glob'); + $loader->load($confDir . '/{services}_' . $this->environment . self::CONFIG_EXTS, 'glob'); + + // register wallabag extension to custom load `wallabag.yaml` + $container->registerExtension(new WallabagExtension()); + + $loader = new YamlFileLoader($container, new FileLocator($this->getProjectDir() . '/config')); + $loader->load('wallabag.yaml'); + } + + protected function configureRoutes(RouteCollectionBuilder $routes): void + { + $confDir = $this->getProjectDir() . '/config'; + + $routes->import($confDir . '/{routes}/' . $this->environment . '/*' . self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir . '/{routes}/*' . self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir . '/{routes}' . self::CONFIG_EXTS, '/', 'glob'); + } + + protected function build(ContainerBuilder $container): void + { + $container->addCompilerPass(new ImportCompilerPass()); + } +} diff --git a/src/Wallabag/UserBundle/Mailer/AuthCodeMailer.php b/src/Mailer/AuthCodeMailer.php similarity index 95% rename from src/Wallabag/UserBundle/Mailer/AuthCodeMailer.php rename to src/Mailer/AuthCodeMailer.php index 7e355effe..1dd06804b 100644 --- a/src/Wallabag/UserBundle/Mailer/AuthCodeMailer.php +++ b/src/Mailer/AuthCodeMailer.php @@ -1,6 +1,6 @@ twig->load('@WallabagUser/TwoFactor/email_auth_code.html.twig'); + $template = $this->twig->load('TwoFactor/email_auth_code.html.twig'); $subject = $template->renderBlock('subject', []); $bodyHtml = $template->renderBlock('body_html', [ diff --git a/src/Wallabag/UserBundle/Mailer/UserMailer.php b/src/Mailer/UserMailer.php similarity index 98% rename from src/Wallabag/UserBundle/Mailer/UserMailer.php rename to src/Mailer/UserMailer.php index 34f13e0c4..de17a8d73 100644 --- a/src/Wallabag/UserBundle/Mailer/UserMailer.php +++ b/src/Mailer/UserMailer.php @@ -1,6 +1,6 @@ registry->getManagerForClass($configuration->getClass()); // Check, if class name is what we need - if (null !== $em && 'Wallabag\UserBundle\Entity\User' !== $em->getClassMetadata($configuration->getClass())->getName()) { + if (null !== $em && 'App\Entity\User' !== $em->getClassMetadata($configuration->getClass())->getName()) { return false; } diff --git a/src/Wallabag/ImportBundle/Redis/Producer.php b/src/Redis/Producer.php similarity index 96% rename from src/Wallabag/ImportBundle/Redis/Producer.php rename to src/Redis/Producer.php index c77b51747..c9c75ae52 100644 --- a/src/Wallabag/ImportBundle/Redis/Producer.php +++ b/src/Redis/Producer.php @@ -1,6 +1,6 @@ getEntityManager() - ->createQuery('DELETE FROM Wallabag\AnnotationBundle\Entity\Annotation a WHERE a.user = :userId') + ->createQuery('DELETE FROM App\Entity\Annotation a WHERE a.user = :userId') ->setParameter('userId', $userId) ->execute(); } diff --git a/src/Wallabag/ApiBundle/Repository/ClientRepository.php b/src/Repository/ClientRepository.php similarity index 90% rename from src/Wallabag/ApiBundle/Repository/ClientRepository.php rename to src/Repository/ClientRepository.php index 0c0b79786..964cc085e 100644 --- a/src/Wallabag/ApiBundle/Repository/ClientRepository.php +++ b/src/Repository/ClientRepository.php @@ -1,10 +1,10 @@ getEntityManager() - ->createQuery('DELETE FROM Wallabag\CoreBundle\Entity\Entry e WHERE e.user = :userId') + ->createQuery('DELETE FROM App\Entity\Entry e WHERE e.user = :userId') ->setParameter('userId', $userId) ->execute(); } @@ -528,7 +528,7 @@ class EntryRepository extends ServiceEntityRepository public function removeArchivedByUserId($userId) { $this->getEntityManager() - ->createQuery('DELETE FROM Wallabag\CoreBundle\Entity\Entry e WHERE e.user = :userId AND e.isArchived = TRUE') + ->createQuery('DELETE FROM App\Entity\Entry e WHERE e.user = :userId AND e.isArchived = TRUE') ->setParameter('userId', $userId) ->execute(); } diff --git a/src/Wallabag/CoreBundle/Repository/IgnoreOriginInstanceRuleRepository.php b/src/Repository/IgnoreOriginInstanceRuleRepository.php similarity index 77% rename from src/Wallabag/CoreBundle/Repository/IgnoreOriginInstanceRuleRepository.php rename to src/Repository/IgnoreOriginInstanceRuleRepository.php index ccf321174..f0cd611f3 100644 --- a/src/Wallabag/CoreBundle/Repository/IgnoreOriginInstanceRuleRepository.php +++ b/src/Repository/IgnoreOriginInstanceRuleRepository.php @@ -1,10 +1,10 @@ processConfiguration($configuration, $configs); - } -} diff --git a/src/Wallabag/AnnotationBundle/WallabagAnnotationBundle.php b/src/Wallabag/AnnotationBundle/WallabagAnnotationBundle.php deleted file mode 100644 index b64920a33..000000000 --- a/src/Wallabag/AnnotationBundle/WallabagAnnotationBundle.php +++ /dev/null @@ -1,9 +0,0 @@ -processConfiguration($configuration, $configs); - } - - public function getAlias() - { - return 'wallabag_api'; - } -} diff --git a/src/Wallabag/ApiBundle/Resources/config/routing_rest.yml b/src/Wallabag/ApiBundle/Resources/config/routing_rest.yml deleted file mode 100644 index de592c217..000000000 --- a/src/Wallabag/ApiBundle/Resources/config/routing_rest.yml +++ /dev/null @@ -1,39 +0,0 @@ -entry: - type: rest - resource: 'Wallabag\ApiBundle\Controller\EntryRestController' - name_prefix: api_ - -search: - type: rest - resource: 'Wallabag\ApiBundle\Controller\SearchRestController' - name_prefix: api_ - -tag: - type: rest - resource: 'Wallabag\ApiBundle\Controller\TagRestController' - name_prefix: api_ - -tagging_rule: - type: rest - resource: 'Wallabag\ApiBundle\Controller\TaggingRuleRestController' - name_prefix: api_ - -annotation: - type: rest - resource: 'Wallabag\ApiBundle\Controller\AnnotationRestController' - name_prefix: api_ - -misc: - type: rest - resource: 'Wallabag\ApiBundle\Controller\WallabagRestController' - name_prefix: api_ - -user: - type: rest - resource: 'Wallabag\ApiBundle\Controller\UserRestController' - name_prefix: api_ - -config: - type: rest - resource: 'Wallabag\ApiBundle\Controller\ConfigRestController' - name_prefix: api_ diff --git a/src/Wallabag/ApiBundle/WallabagApiBundle.php b/src/Wallabag/ApiBundle/WallabagApiBundle.php deleted file mode 100644 index 19d887aba..000000000 --- a/src/Wallabag/ApiBundle/WallabagApiBundle.php +++ /dev/null @@ -1,9 +0,0 @@ -getRootNode(); - - $rootNode - ->children() - ->arrayNode('allow_mimetypes') - ->prototype('scalar')->end() - ->end() - ->scalarNode('resource_dir') - ->end() - ->end() - ; - - return $treeBuilder; - } -} diff --git a/src/Wallabag/ImportBundle/DependencyInjection/WallabagImportExtension.php b/src/Wallabag/ImportBundle/DependencyInjection/WallabagImportExtension.php deleted file mode 100644 index 2aa7d26fa..000000000 --- a/src/Wallabag/ImportBundle/DependencyInjection/WallabagImportExtension.php +++ /dev/null @@ -1,22 +0,0 @@ -processConfiguration($configuration, $configs); - $container->setParameter('wallabag_import.allow_mimetypes', $config['allow_mimetypes']); - $container->setParameter('wallabag_import.resource_dir', $config['resource_dir']); - } - - public function getAlias() - { - return 'wallabag_import'; - } -} diff --git a/src/Wallabag/ImportBundle/WallabagImportBundle.php b/src/Wallabag/ImportBundle/WallabagImportBundle.php deleted file mode 100644 index 98c2f97b4..000000000 --- a/src/Wallabag/ImportBundle/WallabagImportBundle.php +++ /dev/null @@ -1,17 +0,0 @@ -addCompilerPass(new ImportCompilerPass()); - } -} diff --git a/src/Wallabag/UserBundle/DependencyInjection/Configuration.php b/src/Wallabag/UserBundle/DependencyInjection/Configuration.php deleted file mode 100644 index e5f785368..000000000 --- a/src/Wallabag/UserBundle/DependencyInjection/Configuration.php +++ /dev/null @@ -1,14 +0,0 @@ -processConfiguration($configuration, $configs); - } - - public function getAlias() - { - return 'wallabag_user'; - } -} diff --git a/src/Wallabag/UserBundle/WallabagUserBundle.php b/src/Wallabag/UserBundle/WallabagUserBundle.php deleted file mode 100644 index e6e650423..000000000 --- a/src/Wallabag/UserBundle/WallabagUserBundle.php +++ /dev/null @@ -1,9 +0,0 @@ - {{ 'config.otp.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Developer/client.html.twig b/templates/Developer/client.html.twig similarity index 96% rename from src/Wallabag/CoreBundle/Resources/views/Developer/client.html.twig rename to templates/Developer/client.html.twig index 2911f6a4e..bcfdc9ee5 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Developer/client.html.twig +++ b/templates/Developer/client.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'developer.client.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Developer/client_parameters.html.twig b/templates/Developer/client_parameters.html.twig similarity index 97% rename from src/Wallabag/CoreBundle/Resources/views/Developer/client_parameters.html.twig rename to templates/Developer/client_parameters.html.twig index 59412a708..b17d3ea34 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Developer/client_parameters.html.twig +++ b/templates/Developer/client_parameters.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'developer.client_parameter.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Developer/howto_app.html.twig b/templates/Developer/howto_app.html.twig similarity index 98% rename from src/Wallabag/CoreBundle/Resources/views/Developer/howto_app.html.twig rename to templates/Developer/howto_app.html.twig index 5027de938..ec32d6fef 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Developer/howto_app.html.twig +++ b/templates/Developer/howto_app.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'developer.howto.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Developer/index.html.twig b/templates/Developer/index.html.twig similarity index 98% rename from src/Wallabag/CoreBundle/Resources/views/Developer/index.html.twig rename to templates/Developer/index.html.twig index 2093227d0..e6d14ff05 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Developer/index.html.twig +++ b/templates/Developer/index.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'developer.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/Card/_content.html.twig b/templates/Entry/Card/_content.html.twig similarity index 72% rename from src/Wallabag/CoreBundle/Resources/views/Entry/Card/_content.html.twig rename to templates/Entry/Card/_content.html.twig index 34bf483d7..39bb8447c 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Entry/Card/_content.html.twig +++ b/templates/Entry/Card/_content.html.twig @@ -9,9 +9,9 @@
{{ entry.domainName|removeWww }} {% if withMetadata is defined %} - {% include "@WallabagCore/Entry/_tags.html.twig" with {'tags': entry.tags|slice(0, 3), 'entryId': entry.id, 'listClass': ' hide-on-med-and-down'} only %} + {% include "Entry/_tags.html.twig" with {'tags': entry.tags|slice(0, 3), 'entryId': entry.id, 'listClass': ' hide-on-med-and-down'} only %}
-
{% include "@WallabagCore/Entry/_reading_time.html.twig" with {'entry': entry} only %}
+
{% include "Entry/_reading_time.html.twig" with {'entry': entry} only %}
{% endif %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/Card/_mass_checkbox.html.twig b/templates/Entry/Card/_mass_checkbox.html.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Entry/Card/_mass_checkbox.html.twig rename to templates/Entry/Card/_mass_checkbox.html.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/_card_actions.html.twig b/templates/Entry/_card_actions.html.twig similarity index 92% rename from src/Wallabag/CoreBundle/Resources/views/Entry/_card_actions.html.twig rename to templates/Entry/_card_actions.html.twig index 26e78215b..38726374e 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Entry/_card_actions.html.twig +++ b/templates/Entry/_card_actions.html.twig @@ -1,6 +1,6 @@
-
{% include "@WallabagCore/Entry/_reading_time.html.twig" with {'entry': entry} only %}
+
{% include "Entry/_reading_time.html.twig" with {'entry': entry} only %}
today  {{ entry.createdAt|date('Y-m-d') }} diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/_card_full_image.html.twig b/templates/Entry/_card_full_image.html.twig similarity index 79% rename from src/Wallabag/CoreBundle/Resources/views/Entry/_card_full_image.html.twig rename to templates/Entry/_card_full_image.html.twig index 2624ae451..e4d79ed30 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Entry/_card_full_image.html.twig +++ b/templates/Entry/_card_full_image.html.twig @@ -12,8 +12,8 @@ {% endif %}
- {% include "@WallabagCore/Entry/Card/_content.html.twig" with {'entry': entry} only %} + {% include "Entry/Card/_content.html.twig" with {'entry': entry} only %}
- {% include "@WallabagCore/Entry/_card_actions.html.twig" with {'entry': entry} only %} + {% include "Entry/_card_actions.html.twig" with {'entry': entry} only %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/_card_list.html.twig b/templates/Entry/_card_list.html.twig similarity index 86% rename from src/Wallabag/CoreBundle/Resources/views/Entry/_card_list.html.twig rename to templates/Entry/_card_list.html.twig index 78e97ea37..5575f5ad2 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Entry/_card_list.html.twig +++ b/templates/Entry/_card_list.html.twig @@ -1,5 +1,5 @@
- {% include "@WallabagCore/Entry/Card/_mass_checkbox.html.twig" with {'entry': entry} only %} + {% include "Entry/Card/_mass_checkbox.html.twig" with {'entry': entry} only %} {% if app.user.config.displayThumbnails %}
@@ -8,7 +8,7 @@
{% endif %} - {% include "@WallabagCore/Entry/Card/_content.html.twig" with {'entry': entry, 'withMetadata': true, 'subClass': 'metadata'} only %} + {% include "Entry/Card/_content.html.twig" with {'entry': entry, 'withMetadata': true, 'subClass': 'metadata'} only %}
- {% include "@WallabagCore/Entry/Card/_content.html.twig" with {'entry': entry, 'withPreview': true} only %} + {% include "Entry/Card/_content.html.twig" with {'entry': entry, 'withPreview': true} only %}
@@ -34,5 +34,5 @@
- {% include "@WallabagCore/Entry/_card_actions.html.twig" with {'entry': entry} only %} + {% include "Entry/_card_actions.html.twig" with {'entry': entry} only %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/_feed_link.html.twig b/templates/Entry/_feed_link.html.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Entry/_feed_link.html.twig rename to templates/Entry/_feed_link.html.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/_reading_time.html.twig b/templates/Entry/_reading_time.html.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Entry/_reading_time.html.twig rename to templates/Entry/_reading_time.html.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/_tags.html.twig b/templates/Entry/_tags.html.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Entry/_tags.html.twig rename to templates/Entry/_tags.html.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/_title.html.twig b/templates/Entry/_title.html.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Entry/_title.html.twig rename to templates/Entry/_title.html.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/edit.html.twig b/templates/Entry/edit.html.twig similarity index 97% rename from src/Wallabag/CoreBundle/Resources/views/Entry/edit.html.twig rename to templates/Entry/edit.html.twig index a775d7107..c4e1cad00 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Entry/edit.html.twig +++ b/templates/Entry/edit.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/entries.html.twig b/templates/Entry/entries.html.twig similarity index 98% rename from src/Wallabag/CoreBundle/Resources/views/Entry/entries.html.twig rename to templates/Entry/entries.html.twig index 443e4fb64..1a1d5376c 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Entry/entries.html.twig +++ b/templates/Entry/entries.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block head %} {{ parent() }} @@ -15,7 +15,7 @@ {% if searchTerm is defined and searchTerm is not empty %} {% set filter = searchTerm %} {% endif %} - {% include "@WallabagCore/Entry/_title.html.twig" with {'filter': filter} %} + {% include "Entry/_title.html.twig" with {'filter': filter} %} {% endblock %} {% block content %} @@ -36,7 +36,7 @@ {% endif %} {% if app.user.config.feedToken %} - {% include "@WallabagCore/Entry/_feed_link.html.twig" %} + {% include "Entry/_feed_link.html.twig" %} {% endif %} {% if current_route == 'search' %}
{{ 'entry.list.assign_search_tag'|trans }}
{% endif %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/entries.xml.twig b/templates/Entry/entries.xml.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Entry/entries.xml.twig rename to templates/Entry/entries.xml.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/entry.html.twig b/templates/Entry/entry.html.twig similarity index 97% rename from src/Wallabag/CoreBundle/Resources/views/Entry/entry.html.twig rename to templates/Entry/entry.html.twig index 59a3cf62e..c90df307a 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Entry/entry.html.twig +++ b/templates/Entry/entry.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ entry.title|striptags|default('entry.default_title'|trans)|raw }} ({{ entry.domainName|removeWww }}){% endblock %} @@ -240,7 +240,7 @@
- {% include "@WallabagCore/Entry/_tags.html.twig" with {'tags': entry.tags, 'entryId': entry.id, 'withRemove': true} only %} + {% include "Entry/_tags.html.twig" with {'tags': entry.tags, 'entryId': entry.id, 'withRemove': true} only %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/new.html.twig b/templates/Entry/new.html.twig similarity index 68% rename from src/Wallabag/CoreBundle/Resources/views/Entry/new.html.twig rename to templates/Entry/new.html.twig index 0eff3a11d..af5666a06 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Entry/new.html.twig +++ b/templates/Entry/new.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'entry.new.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/new_form.html.twig b/templates/Entry/new_form.html.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Entry/new_form.html.twig rename to templates/Entry/new_form.html.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/search_form.html.twig b/templates/Entry/search_form.html.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Entry/search_form.html.twig rename to templates/Entry/search_form.html.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/share.html.twig b/templates/Entry/share.html.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Entry/share.html.twig rename to templates/Entry/share.html.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/Exception/error.html.twig b/templates/Exception/error.html.twig similarity index 95% rename from src/Wallabag/CoreBundle/Resources/views/Exception/error.html.twig rename to templates/Exception/error.html.twig index 3155e0057..bbda97737 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Exception/error.html.twig +++ b/templates/Exception/error.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'error.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/IgnoreOriginInstanceRule/edit.html.twig b/templates/IgnoreOriginInstanceRule/edit.html.twig similarity index 99% rename from src/Wallabag/CoreBundle/Resources/views/IgnoreOriginInstanceRule/edit.html.twig rename to templates/IgnoreOriginInstanceRule/edit.html.twig index 1380bb90f..8b2183652 100644 --- a/src/Wallabag/CoreBundle/Resources/views/IgnoreOriginInstanceRule/edit.html.twig +++ b/templates/IgnoreOriginInstanceRule/edit.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/IgnoreOriginInstanceRule/index.html.twig b/templates/IgnoreOriginInstanceRule/index.html.twig similarity index 97% rename from src/Wallabag/CoreBundle/Resources/views/IgnoreOriginInstanceRule/index.html.twig rename to templates/IgnoreOriginInstanceRule/index.html.twig index 420a3793a..4e5f7187e 100644 --- a/src/Wallabag/CoreBundle/Resources/views/IgnoreOriginInstanceRule/index.html.twig +++ b/templates/IgnoreOriginInstanceRule/index.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/IgnoreOriginInstanceRule/new.html.twig b/templates/IgnoreOriginInstanceRule/new.html.twig similarity index 98% rename from src/Wallabag/CoreBundle/Resources/views/IgnoreOriginInstanceRule/new.html.twig rename to templates/IgnoreOriginInstanceRule/new.html.twig index b33e04195..f30672853 100644 --- a/src/Wallabag/CoreBundle/Resources/views/IgnoreOriginInstanceRule/new.html.twig +++ b/templates/IgnoreOriginInstanceRule/new.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/ImportBundle/Resources/views/Import/_information.html.twig b/templates/Import/_information.html.twig similarity index 100% rename from src/Wallabag/ImportBundle/Resources/views/Import/_information.html.twig rename to templates/Import/_information.html.twig diff --git a/src/Wallabag/ImportBundle/Resources/views/Import/check_queue.html.twig b/templates/Import/check_queue.html.twig similarity index 100% rename from src/Wallabag/ImportBundle/Resources/views/Import/check_queue.html.twig rename to templates/Import/check_queue.html.twig diff --git a/src/Wallabag/ImportBundle/Resources/views/Chrome/index.html.twig b/templates/Import/chrome.html.twig similarity index 93% rename from src/Wallabag/ImportBundle/Resources/views/Chrome/index.html.twig rename to templates/Import/chrome.html.twig index 331251046..f97aff670 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Chrome/index.html.twig +++ b/templates/Import/chrome.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'import.chrome.page_title'|trans }}{% endblock %} @@ -6,7 +6,7 @@
- {% include '@WallabagImport/Import/_information.html.twig' %} + {% include 'Import/_information.html.twig' %}
{{ import.description|trans|raw }}
diff --git a/src/Wallabag/ImportBundle/Resources/views/Delicious/index.html.twig b/templates/Import/delicious.html.twig similarity index 93% rename from src/Wallabag/ImportBundle/Resources/views/Delicious/index.html.twig rename to templates/Import/delicious.html.twig index 8e5741c45..445e1aa6e 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Delicious/index.html.twig +++ b/templates/Import/delicious.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'import.delicious.page_title'|trans }}{% endblock %} @@ -6,7 +6,7 @@
- {% include '@WallabagImport/Import/_information.html.twig' %} + {% include 'Import/_information.html.twig' %}
{{ import.description|trans }}
diff --git a/src/Wallabag/ImportBundle/Resources/views/Elcurator/index.html.twig b/templates/Import/elcurator.html.twig similarity index 55% rename from src/Wallabag/ImportBundle/Resources/views/Elcurator/index.html.twig rename to templates/Import/elcurator.html.twig index 2d950c95c..ccd287787 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Elcurator/index.html.twig +++ b/templates/Import/elcurator.html.twig @@ -1,3 +1,3 @@ -{% extends "@WallabagImport/WallabagV1/index.html.twig" %} +{% extends "Import/wallabagV1.html.twig" %} {% block title %}{{ 'import.elcurator.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/ImportBundle/Resources/views/Firefox/index.html.twig b/templates/Import/firefox.html.twig similarity index 93% rename from src/Wallabag/ImportBundle/Resources/views/Firefox/index.html.twig rename to templates/Import/firefox.html.twig index e262da8a6..f16604fe3 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Firefox/index.html.twig +++ b/templates/Import/firefox.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'import.firefox.page_title'|trans }}{% endblock %} @@ -6,7 +6,7 @@
- {% include '@WallabagImport/Import/_information.html.twig' %} + {% include 'Import/_information.html.twig' %}
{{ import.description|trans|raw }}
diff --git a/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig b/templates/Import/index.html.twig similarity index 77% rename from src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig rename to templates/Import/index.html.twig index 6903a5fd4..a82e30a4b 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig +++ b/templates/Import/index.html.twig @@ -1,9 +1,9 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'import.page_title'|trans }}{% endblock %} {% block messages %} - {{ render(controller('Wallabag\\ImportBundle\\Controller\\ImportController::checkQueueAction')) }} + {{ render(controller('App\\Controller\\Import\\ImportController::checkQueueAction')) }} {{ parent() }} {% endblock %} @@ -12,7 +12,7 @@
- {% include '@WallabagImport/Import/_information.html.twig' %} + {% include 'Import/_information.html.twig' %} {{ 'import.page_description'|trans }}
    diff --git a/src/Wallabag/ImportBundle/Resources/views/Instapaper/index.html.twig b/templates/Import/instapaper.html.twig similarity index 93% rename from src/Wallabag/ImportBundle/Resources/views/Instapaper/index.html.twig rename to templates/Import/instapaper.html.twig index 38f5eeda6..4fdc5ed96 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Instapaper/index.html.twig +++ b/templates/Import/instapaper.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'import.instapaper.page_title'|trans }}{% endblock %} @@ -6,7 +6,7 @@
    - {% include '@WallabagImport/Import/_information.html.twig' %} + {% include 'Import/_information.html.twig' %}
    {{ import.description|trans }}
    diff --git a/src/Wallabag/ImportBundle/Resources/views/Pinboard/index.html.twig b/templates/Import/pinboard.html.twig similarity index 93% rename from src/Wallabag/ImportBundle/Resources/views/Pinboard/index.html.twig rename to templates/Import/pinboard.html.twig index 9c79e088c..458a089f4 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Pinboard/index.html.twig +++ b/templates/Import/pinboard.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'import.pinboard.page_title'|trans }}{% endblock %} @@ -6,7 +6,7 @@
    - {% include '@WallabagImport/Import/_information.html.twig' %} + {% include 'Import/_information.html.twig' %}
    {{ import.description|trans }}
    diff --git a/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig b/templates/Import/pocket.html.twig similarity index 92% rename from src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig rename to templates/Import/pocket.html.twig index 781b873e1..11eda98a9 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig +++ b/templates/Import/pocket.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'import.pocket.page_title'|trans }}{% endblock %} @@ -6,7 +6,7 @@
    - {% include '@WallabagImport/Import/_information.html.twig' %} + {% include 'Import/_information.html.twig' %} {% if not has_consumer_key %}
    diff --git a/src/Wallabag/ImportBundle/Resources/views/Readability/index.html.twig b/templates/Import/readability.html.twig similarity index 93% rename from src/Wallabag/ImportBundle/Resources/views/Readability/index.html.twig rename to templates/Import/readability.html.twig index 70eceb103..12831e1bf 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Readability/index.html.twig +++ b/templates/Import/readability.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'import.readability.page_title'|trans }}{% endblock %} @@ -6,7 +6,7 @@
    - {% include '@WallabagImport/Import/_information.html.twig' %} + {% include 'Import/_information.html.twig' %}
    {{ import.description|trans }}
    diff --git a/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig b/templates/Import/wallabagV1.html.twig similarity index 93% rename from src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig rename to templates/Import/wallabagV1.html.twig index 6e0598afa..d9a87a73c 100644 --- a/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig +++ b/templates/Import/wallabagV1.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'import.wallabag_v1.page_title'|trans }}{% endblock %} @@ -6,7 +6,7 @@
    - {% include '@WallabagImport/Import/_information.html.twig' %} + {% include 'Import/_information.html.twig' %}
    {{ import.description|trans }}
    diff --git a/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig b/templates/Import/wallabagV2.html.twig similarity index 56% rename from src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig rename to templates/Import/wallabagV2.html.twig index 2521578c8..3faa42eff 100644 --- a/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig +++ b/templates/Import/wallabagV2.html.twig @@ -1,3 +1,3 @@ -{% extends "@WallabagImport/WallabagV1/index.html.twig" %} +{% extends "Import/wallabagV1.html.twig" %} {% block title %}{{ 'import.wallabag_v2.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Mail/forgotPassword.txt.twig b/templates/Mail/forgotPassword.txt.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Mail/forgotPassword.txt.twig rename to templates/Mail/forgotPassword.txt.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/README.md b/templates/README.md similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/README.md rename to templates/README.md diff --git a/src/Wallabag/UserBundle/Resources/views/Resetting/passwordAlreadyRequested.html.twig b/templates/Resetting/passwordAlreadyRequested.html.twig similarity index 100% rename from src/Wallabag/UserBundle/Resources/views/Resetting/passwordAlreadyRequested.html.twig rename to templates/Resetting/passwordAlreadyRequested.html.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/SiteCredential/edit.html.twig b/templates/SiteCredential/edit.html.twig similarity index 98% rename from src/Wallabag/CoreBundle/Resources/views/SiteCredential/edit.html.twig rename to templates/SiteCredential/edit.html.twig index cd9352c07..aec6f9480 100644 --- a/src/Wallabag/CoreBundle/Resources/views/SiteCredential/edit.html.twig +++ b/templates/SiteCredential/edit.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'site_credential.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/SiteCredential/index.html.twig b/templates/SiteCredential/index.html.twig similarity index 97% rename from src/Wallabag/CoreBundle/Resources/views/SiteCredential/index.html.twig rename to templates/SiteCredential/index.html.twig index f3925f47e..a85118a5a 100644 --- a/src/Wallabag/CoreBundle/Resources/views/SiteCredential/index.html.twig +++ b/templates/SiteCredential/index.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'site_credential.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/SiteCredential/new.html.twig b/templates/SiteCredential/new.html.twig similarity index 97% rename from src/Wallabag/CoreBundle/Resources/views/SiteCredential/new.html.twig rename to templates/SiteCredential/new.html.twig index 5d2db1653..6e92e8053 100644 --- a/src/Wallabag/CoreBundle/Resources/views/SiteCredential/new.html.twig +++ b/templates/SiteCredential/new.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'site_credential.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Static/_bookmarklet.html.twig b/templates/Static/_bookmarklet.html.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Static/_bookmarklet.html.twig rename to templates/Static/_bookmarklet.html.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/Static/about.html.twig b/templates/Static/about.html.twig similarity index 99% rename from src/Wallabag/CoreBundle/Resources/views/Static/about.html.twig rename to templates/Static/about.html.twig index 2e2e987c7..d3ce774a9 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Static/about.html.twig +++ b/templates/Static/about.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'about.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Static/howto.html.twig b/templates/Static/howto.html.twig similarity index 98% rename from src/Wallabag/CoreBundle/Resources/views/Static/howto.html.twig rename to templates/Static/howto.html.twig index 5b53aa0c8..c86578076 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Static/howto.html.twig +++ b/templates/Static/howto.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'howto.page_title'|trans }}{% endblock %} @@ -46,7 +46,7 @@
    {{ 'howto.top_menu.bookmarklet'|trans }}
    {{ 'howto.bookmarklet.description'|trans }} - {% include '@WallabagCore/Static/_bookmarklet.html.twig' %} + {% include 'Static/_bookmarklet.html.twig' %}
    diff --git a/src/Wallabag/CoreBundle/Resources/views/Static/quickstart.html.twig b/templates/Static/quickstart.html.twig similarity index 99% rename from src/Wallabag/CoreBundle/Resources/views/Static/quickstart.html.twig rename to templates/Static/quickstart.html.twig index 44bc4ede7..bc8f4c402 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Static/quickstart.html.twig +++ b/templates/Static/quickstart.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/Tag/new_form.html.twig b/templates/Tag/new_form.html.twig similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/Tag/new_form.html.twig rename to templates/Tag/new_form.html.twig diff --git a/src/Wallabag/CoreBundle/Resources/views/Tag/tags.html.twig b/templates/Tag/tags.html.twig similarity index 97% rename from src/Wallabag/CoreBundle/Resources/views/Tag/tags.html.twig rename to templates/Tag/tags.html.twig index ce4101ec7..85c9633e0 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Tag/tags.html.twig +++ b/templates/Tag/tags.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'tag.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig b/templates/TwoFactor/email_auth_code.html.twig similarity index 100% rename from src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig rename to templates/TwoFactor/email_auth_code.html.twig diff --git a/src/Wallabag/UserBundle/Resources/views/Manage/edit.html.twig b/templates/User/edit.html.twig similarity index 98% rename from src/Wallabag/UserBundle/Resources/views/Manage/edit.html.twig rename to templates/User/edit.html.twig index 07d99e766..1181c60bc 100644 --- a/src/Wallabag/UserBundle/Resources/views/Manage/edit.html.twig +++ b/templates/User/edit.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'user.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/UserBundle/Resources/views/Manage/index.html.twig b/templates/User/index.html.twig similarity index 98% rename from src/Wallabag/UserBundle/Resources/views/Manage/index.html.twig rename to templates/User/index.html.twig index 434cc04ea..91ab41abd 100644 --- a/src/Wallabag/UserBundle/Resources/views/Manage/index.html.twig +++ b/templates/User/index.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'user.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/UserBundle/Resources/views/Manage/new.html.twig b/templates/User/new.html.twig similarity index 98% rename from src/Wallabag/UserBundle/Resources/views/Manage/new.html.twig rename to templates/User/new.html.twig index 5915e8d3b..b997e67ae 100644 --- a/src/Wallabag/UserBundle/Resources/views/Manage/new.html.twig +++ b/templates/User/new.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'user.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/base.html.twig b/templates/base.html.twig similarity index 99% rename from src/Wallabag/CoreBundle/Resources/views/base.html.twig rename to templates/base.html.twig index 00e66482f..ec4fcf88c 100644 --- a/src/Wallabag/CoreBundle/Resources/views/base.html.twig +++ b/templates/base.html.twig @@ -48,7 +48,7 @@ {% endif %} {% block scripts %} - + {% endblock %} diff --git a/templates/bundles/CraueConfigBundle/Settings/modify.html.twig b/templates/bundles/CraueConfigBundle/Settings/modify.html.twig index b4f8a32d3..809c6dff1 100644 --- a/templates/bundles/CraueConfigBundle/Settings/modify.html.twig +++ b/templates/bundles/CraueConfigBundle/Settings/modify.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'menu.left.internal_settings'|trans }}{% endblock %} diff --git a/templates/bundles/FOSUserBundle/layout.html.twig b/templates/bundles/FOSUserBundle/layout.html.twig index 937fd5cb0..c424f42ea 100644 --- a/templates/bundles/FOSUserBundle/layout.html.twig +++ b/templates/bundles/FOSUserBundle/layout.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'security.login.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/layout.html.twig b/templates/layout.html.twig similarity index 97% rename from src/Wallabag/CoreBundle/Resources/views/layout.html.twig rename to templates/layout.html.twig index f1565f17b..fc3944006 100644 --- a/src/Wallabag/CoreBundle/Resources/views/layout.html.twig +++ b/templates/layout.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/base.html.twig" %} +{% extends "base.html.twig" %} {% block css %} {{ parent() }} @@ -156,8 +156,8 @@
- {{ render(controller('Wallabag\\CoreBundle\\Controller\\EntryController::searchFormAction', {'currentRoute': current_route})) }} - {{ render(controller('Wallabag\\CoreBundle\\Controller\\EntryController::addEntryFormAction')) }} + {{ render(controller('App\\Controller\\EntryController::searchFormAction', {'currentRoute': current_route})) }} + {{ render(controller('App\\Controller\\EntryController::addEntryFormAction')) }}
{% endblock %} diff --git a/src/Wallabag/UserBundle/Resources/views/manage.html.twig b/templates/manage.html.twig similarity index 97% rename from src/Wallabag/UserBundle/Resources/views/manage.html.twig rename to templates/manage.html.twig index 981e19aaa..74b8fd92b 100644 --- a/src/Wallabag/UserBundle/Resources/views/manage.html.twig +++ b/templates/manage.html.twig @@ -1,4 +1,4 @@ -{% extends "@WallabagCore/layout.html.twig" %} +{% extends "layout.html.twig" %} {% block title %}{{ 'user.manage.page_title'|trans }}{% endblock %} diff --git a/src/Wallabag/CoreBundle/Resources/views/screenshot.jpg b/templates/screenshot.jpg similarity index 100% rename from src/Wallabag/CoreBundle/Resources/views/screenshot.jpg rename to templates/screenshot.jpg diff --git a/tests/Wallabag/CoreBundle/Command/CleanDuplicatesCommandTest.php b/tests/Command/CleanDuplicatesCommandTest.php similarity index 92% rename from tests/Wallabag/CoreBundle/Command/CleanDuplicatesCommandTest.php rename to tests/Command/CleanDuplicatesCommandTest.php index d70466818..e4ea47504 100644 --- a/tests/Wallabag/CoreBundle/Command/CleanDuplicatesCommandTest.php +++ b/tests/Command/CleanDuplicatesCommandTest.php @@ -1,13 +1,13 @@ getRepository(Entry::class)->findAllByUrlAndUserId($url, $this->getLoggedInUserId()); $this->assertCount(1, $nbEntries); - $query = $em->createQuery('DELETE FROM Wallabag\CoreBundle\Entity\Entry e WHERE e.url = :url'); + $query = $em->createQuery('DELETE FROM App\Entity\Entry e WHERE e.url = :url'); $query->setParameter('url', $url); $query->execute(); } diff --git a/tests/Wallabag/CoreBundle/Command/ExportCommandTest.php b/tests/Command/ExportCommandTest.php similarity index 95% rename from tests/Wallabag/CoreBundle/Command/ExportCommandTest.php rename to tests/Command/ExportCommandTest.php index abad7cf74..9a465bcb3 100644 --- a/tests/Wallabag/CoreBundle/Command/ExportCommandTest.php +++ b/tests/Command/ExportCommandTest.php @@ -1,11 +1,11 @@ assertSame($entry->getHashedUrl(), hash('sha1', $url)); - $query = $em->createQuery('DELETE FROM Wallabag\CoreBundle\Entity\Entry e WHERE e.url = :url'); + $query = $em->createQuery('DELETE FROM App\Entity\Entry e WHERE e.url = :url'); $query->setParameter('url', $url); $query->execute(); } diff --git a/tests/Wallabag/ImportBundle/Command/ImportCommandTest.php b/tests/Command/ImportCommandTest.php similarity index 90% rename from tests/Wallabag/ImportBundle/Command/ImportCommandTest.php rename to tests/Command/ImportCommandTest.php index a58abce9d..6eb2b3db7 100644 --- a/tests/Wallabag/ImportBundle/Command/ImportCommandTest.php +++ b/tests/Command/ImportCommandTest.php @@ -1,13 +1,13 @@ execute([ 'username' => 'admin', - 'filepath' => $application->getKernel()->getContainer()->getParameter('kernel.project_dir') . '/tests/Wallabag/ImportBundle/fixtures/wallabag-v2-read.json', + 'filepath' => $application->getKernel()->getContainer()->getParameter('kernel.project_dir') . '/tests/fixtures/wallabag-v2-read.json', '--importer' => 'v2', ]); @@ -83,7 +83,7 @@ class ImportCommandTest extends WallabagCoreTestCase $tester = new CommandTester($command); $tester->execute([ 'username' => $this->getLoggedInUserId(), - 'filepath' => $application->getKernel()->getContainer()->getParameter('kernel.project_dir') . '/tests/Wallabag/ImportBundle/fixtures/wallabag-v2-read.json', + 'filepath' => $application->getKernel()->getContainer()->getParameter('kernel.project_dir') . '/tests/fixtures/wallabag-v2-read.json', '--useUserId' => true, '--importer' => 'v2', ]); diff --git a/tests/Wallabag/CoreBundle/Command/InstallCommandTest.php b/tests/Command/InstallCommandTest.php similarity index 98% rename from tests/Wallabag/CoreBundle/Command/InstallCommandTest.php rename to tests/Command/InstallCommandTest.php index 79487d6c1..3d024abdb 100644 --- a/tests/Wallabag/CoreBundle/Command/InstallCommandTest.php +++ b/tests/Command/InstallCommandTest.php @@ -1,7 +1,9 @@ getResponse()->getContent(), true); - $this->assertSame($client->getContainer()->getParameter('wallabag_core.version'), $content); + $this->assertSame($client->getContainer()->getParameter('wallabag.version'), $content); } public function testGetInfo() diff --git a/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php b/tests/Controller/ConfigControllerTest.php similarity index 99% rename from tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php rename to tests/Controller/ConfigControllerTest.php index 03a7485df..be9f8709e 100644 --- a/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php +++ b/tests/Controller/ConfigControllerTest.php @@ -1,20 +1,20 @@ getRepository(Entry::class) ->find($entry->getId()); - $this->assertNotSame($client->getContainer()->getParameter('wallabag_core.fetching_error_message'), $newContent->getContent()); + $this->assertNotSame($client->getContainer()->getParameter('wallabag.fetching_error_message'), $newContent->getContent()); } public function testEdit() diff --git a/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php b/tests/Controller/ExportControllerTest.php similarity index 99% rename from tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php rename to tests/Controller/ExportControllerTest.php index 8ed942020..d9d821bc4 100644 --- a/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php +++ b/tests/Controller/ExportControllerTest.php @@ -1,10 +1,10 @@ filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/chrome-bookmarks', 'Bookmarks'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/chrome-bookmarks', 'Bookmarks'); $data = [ 'upload_import_file[file]' => $file, @@ -99,7 +99,7 @@ class ChromeControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/chrome'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/chrome-bookmarks', 'Bookmarks'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/chrome-bookmarks', 'Bookmarks'); $data = [ 'upload_import_file[file]' => $file, @@ -140,7 +140,7 @@ class ChromeControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/chrome'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/test.txt', 'test.txt'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/test.txt', 'test.txt'); $data = [ 'upload_import_file[file]' => $file, diff --git a/tests/Wallabag/ImportBundle/Controller/DeliciousControllerTest.php b/tests/Controller/Import/DeliciousControllerTest.php similarity index 92% rename from tests/Wallabag/ImportBundle/Controller/DeliciousControllerTest.php rename to tests/Controller/Import/DeliciousControllerTest.php index 1aa4d90af..9bf592470 100644 --- a/tests/Wallabag/ImportBundle/Controller/DeliciousControllerTest.php +++ b/tests/Controller/Import/DeliciousControllerTest.php @@ -1,13 +1,13 @@ filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/delicious_export.2021.02.06_21.10.json', 'delicious.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/delicious_export.2021.02.06_21.10.json', 'delicious.json'); $data = [ 'upload_import_file[file]' => $file, @@ -99,7 +99,7 @@ class DeliciousControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/delicious'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/delicious_export.2021.02.06_21.10.json', 'delicious.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/delicious_export.2021.02.06_21.10.json', 'delicious.json'); $data = [ 'upload_import_file[file]' => $file, @@ -140,7 +140,7 @@ class DeliciousControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/delicious'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/delicious_export.2021.02.06_21.10.json', 'delicious-read.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/delicious_export.2021.02.06_21.10.json', 'delicious-read.json'); $data = [ 'upload_import_file[file]' => $file, @@ -185,7 +185,7 @@ class DeliciousControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/delicious'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/test.txt', 'test.txt'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/test.txt', 'test.txt'); $data = [ 'upload_import_file[file]' => $file, diff --git a/tests/Wallabag/ImportBundle/Controller/ElcuratorControllerTest.php b/tests/Controller/Import/ElcuratorControllerTest.php similarity index 93% rename from tests/Wallabag/ImportBundle/Controller/ElcuratorControllerTest.php rename to tests/Controller/Import/ElcuratorControllerTest.php index 38c872774..b7f36ba7d 100644 --- a/tests/Wallabag/ImportBundle/Controller/ElcuratorControllerTest.php +++ b/tests/Controller/Import/ElcuratorControllerTest.php @@ -1,13 +1,13 @@ filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/elcurator.json', 'elcurator.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/elcurator.json', 'elcurator.json'); $data = [ 'upload_import_file[file]' => $file, @@ -100,7 +100,7 @@ class ElcuratorControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/elcurator'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/elcurator.json', 'elcurator.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/elcurator.json', 'elcurator.json'); $data = [ 'upload_import_file[file]' => $file, diff --git a/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php b/tests/Controller/Import/FirefoxControllerTest.php similarity index 93% rename from tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php rename to tests/Controller/Import/FirefoxControllerTest.php index 1c30d6b0a..08fa01eab 100644 --- a/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php +++ b/tests/Controller/Import/FirefoxControllerTest.php @@ -1,13 +1,13 @@ filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/firefox-bookmarks.json', 'Bookmarks'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/firefox-bookmarks.json', 'Bookmarks'); $data = [ 'upload_import_file[file]' => $file, @@ -99,7 +99,7 @@ class FirefoxControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/firefox'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/firefox-bookmarks.json', 'Bookmarks'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/firefox-bookmarks.json', 'Bookmarks'); $data = [ 'upload_import_file[file]' => $file, @@ -154,7 +154,7 @@ class FirefoxControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/firefox'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/test.txt', 'test.txt'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/test.txt', 'test.txt'); $data = [ 'upload_import_file[file]' => $file, diff --git a/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php b/tests/Controller/Import/ImportControllerTest.php similarity index 74% rename from tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php rename to tests/Controller/Import/ImportControllerTest.php index 06a2a2e21..009328cdf 100644 --- a/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php +++ b/tests/Controller/Import/ImportControllerTest.php @@ -1,8 +1,8 @@ getTestClient(); - $client->request('GET', '/import/'); + $client->request('GET', '/import'); $this->assertSame(302, $client->getResponse()->getStatusCode()); $this->assertStringContainsString('login', $client->getResponse()->headers->get('location')); @@ -21,7 +21,7 @@ class ImportControllerTest extends WallabagCoreTestCase $this->logInAs('admin'); $client = $this->getTestClient(); - $crawler = $client->request('GET', '/import/'); + $crawler = $client->request('GET', '/import'); $this->assertSame(200, $client->getResponse()->getStatusCode()); $this->assertSame(10, $crawler->filter('blockquote')->count()); diff --git a/tests/Wallabag/ImportBundle/Controller/InstapaperControllerTest.php b/tests/Controller/Import/InstapaperControllerTest.php similarity index 93% rename from tests/Wallabag/ImportBundle/Controller/InstapaperControllerTest.php rename to tests/Controller/Import/InstapaperControllerTest.php index c96941252..02d163dbf 100644 --- a/tests/Wallabag/ImportBundle/Controller/InstapaperControllerTest.php +++ b/tests/Controller/Import/InstapaperControllerTest.php @@ -1,13 +1,13 @@ filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/instapaper-export.csv', 'instapaper.csv'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/instapaper-export.csv', 'instapaper.csv'); $data = [ 'upload_import_file[file]' => $file, @@ -99,7 +99,7 @@ class InstapaperControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/instapaper'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/instapaper-export.csv', 'instapaper.csv'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/instapaper-export.csv', 'instapaper.csv'); $data = [ 'upload_import_file[file]' => $file, @@ -153,7 +153,7 @@ class InstapaperControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/instapaper'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/instapaper-export.csv', 'instapaper-read.csv'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/instapaper-export.csv', 'instapaper-read.csv'); $data = [ 'upload_import_file[file]' => $file, @@ -198,7 +198,7 @@ class InstapaperControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/instapaper'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/test.txt', 'test.txt'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/test.txt', 'test.txt'); $data = [ 'upload_import_file[file]' => $file, diff --git a/tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php b/tests/Controller/Import/PinboardControllerTest.php similarity index 93% rename from tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php rename to tests/Controller/Import/PinboardControllerTest.php index 833061fe8..fb9768647 100644 --- a/tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php +++ b/tests/Controller/Import/PinboardControllerTest.php @@ -1,13 +1,13 @@ filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/pinboard_export', 'pinboard.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/pinboard_export', 'pinboard.json'); $data = [ 'upload_import_file[file]' => $file, @@ -99,7 +99,7 @@ class PinboardControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/pinboard'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/pinboard_export', 'pinboard.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/pinboard_export', 'pinboard.json'); $data = [ 'upload_import_file[file]' => $file, @@ -145,7 +145,7 @@ class PinboardControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/pinboard'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/pinboard_export', 'pinboard-read.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/pinboard_export', 'pinboard-read.json'); $data = [ 'upload_import_file[file]' => $file, @@ -192,7 +192,7 @@ class PinboardControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/pinboard'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/test.txt', 'test.txt'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/test.txt', 'test.txt'); $data = [ 'upload_import_file[file]' => $file, diff --git a/tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php b/tests/Controller/Import/PocketControllerTest.php similarity index 96% rename from tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php rename to tests/Controller/Import/PocketControllerTest.php index 858689ddd..d77837e7f 100644 --- a/tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php +++ b/tests/Controller/Import/PocketControllerTest.php @@ -1,11 +1,11 @@ filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/readability.json', 'readability.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/readability.json', 'readability.json'); $data = [ 'upload_import_file[file]' => $file, @@ -99,7 +99,7 @@ class ReadabilityControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/readability'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/readability.json', 'readability.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/readability.json', 'readability.json'); $data = [ 'upload_import_file[file]' => $file, @@ -143,7 +143,7 @@ class ReadabilityControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/readability'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/readability-read.json', 'readability-read.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/readability-read.json', 'readability-read.json'); $data = [ 'upload_import_file[file]' => $file, @@ -190,7 +190,7 @@ class ReadabilityControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/readability'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/test.txt', 'test.txt'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/test.txt', 'test.txt'); $data = [ 'upload_import_file[file]' => $file, diff --git a/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php b/tests/Controller/Import/WallabagV1ControllerTest.php similarity index 93% rename from tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php rename to tests/Controller/Import/WallabagV1ControllerTest.php index 328cbc71c..fea6202f2 100644 --- a/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php +++ b/tests/Controller/Import/WallabagV1ControllerTest.php @@ -1,13 +1,13 @@ filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/wallabag-v1.json', 'wallabag-v1.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/wallabag-v1.json', 'wallabag-v1.json'); $data = [ 'upload_import_file[file]' => $file, @@ -100,7 +100,7 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/wallabag-v1'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/wallabag-v1.json', 'wallabag-v1.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/wallabag-v1.json', 'wallabag-v1.json'); $data = [ 'upload_import_file[file]' => $file, @@ -144,7 +144,7 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/wallabag-v1'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/wallabag-v1-read.json', 'wallabag-v1-read.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/wallabag-v1-read.json', 'wallabag-v1-read.json'); $data = [ 'upload_import_file[file]' => $file, @@ -191,7 +191,7 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/wallabag-v1'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/test.txt', 'test.txt'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/test.txt', 'test.txt'); $data = [ 'upload_import_file[file]' => $file, diff --git a/tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php b/tests/Controller/Import/WallabagV2ControllerTest.php similarity index 94% rename from tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php rename to tests/Controller/Import/WallabagV2ControllerTest.php index c12b0b3e9..47107ad14 100644 --- a/tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php +++ b/tests/Controller/Import/WallabagV2ControllerTest.php @@ -1,13 +1,13 @@ filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/wallabag-v2.json', 'wallabag-v2.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/wallabag-v2.json', 'wallabag-v2.json'); $data = [ 'upload_import_file[file]' => $file, @@ -100,7 +100,7 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/wallabag-v2'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/wallabag-v2.json', 'wallabag-v2.json'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/wallabag-v2.json', 'wallabag-v2.json'); $data = [ 'upload_import_file[file]' => $file, @@ -166,7 +166,7 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/wallabag-v2'); $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); - $file = new UploadedFile(__DIR__ . '/../fixtures/test.txt', 'test.txt'); + $file = new UploadedFile(__DIR__ . '/../../fixtures/test.txt', 'test.txt'); $data = [ 'upload_import_file[file]' => $file, diff --git a/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php b/tests/Controller/SecurityControllerTest.php similarity index 95% rename from tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php rename to tests/Controller/SecurityControllerTest.php index cb33df278..63dc3f79b 100644 --- a/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php +++ b/tests/Controller/SecurityControllerTest.php @@ -1,10 +1,10 @@ setPrimaryTable(['name' => 'entry']); $metaClass->mapManyToMany([ 'fieldName' => 'tags', diff --git a/tests/Wallabag/UserBundle/EventListener/AuthenticationFailureListenerTest.php b/tests/EventListener/AuthenticationFailureListenerTest.php similarity index 94% rename from tests/Wallabag/UserBundle/EventListener/AuthenticationFailureListenerTest.php rename to tests/EventListener/AuthenticationFailureListenerTest.php index 519039faf..5127a6375 100644 --- a/tests/Wallabag/UserBundle/EventListener/AuthenticationFailureListenerTest.php +++ b/tests/EventListener/AuthenticationFailureListenerTest.php @@ -1,7 +1,8 @@ twig = new Environment(new ArrayLoader(['@WallabagUser/TwoFactor/email_auth_code.html.twig' => $twigTemplate])); + $this->twig = new Environment(new ArrayLoader(['TwoFactor/email_auth_code.html.twig' => $twigTemplate])); } public function testSendEmail() diff --git a/tests/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverterTest.php b/tests/ParamConverter/UsernameFeedTokenConverterTest.php similarity index 97% rename from tests/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverterTest.php rename to tests/ParamConverter/UsernameFeedTokenConverterTest.php index 9c7a41731..924b8fea0 100644 --- a/tests/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverterTest.php +++ b/tests/ParamConverter/UsernameFeedTokenConverterTest.php @@ -1,7 +1,10 @@ handle($request); -$response->send(); -$kernel->terminate($request, $response); diff --git a/web/app_dev.php b/web/app_dev.php deleted file mode 100644 index 57e1a433f..000000000 --- a/web/app_dev.php +++ /dev/null @@ -1,28 +0,0 @@ -handle($request); -$response->send(); -$kernel->terminate($request, $response); diff --git a/web/wallassets/public.css.map b/web/wallassets/public.css.map deleted file mode 100644 index f8ba6c149..000000000 --- a/web/wallassets/public.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"public.css","mappings":"AAAA,2YAEA,QA8EE,UACA,SACA,eACA,wBACA,+EAGF,aAWE,MAGF,aACE,cAGF,WAEE,yDAGF,UAIE,aACA,OAGF,wBACE,iBACA,MAKF,qBACE,WACA,oBACA,gBACA,yBACA,mBACA,mBAGF,eAME,cACA,mEAGF,eAME,gBACA,IAGF,eACE,IAGF,eACE,OAGF,eAEE,OAGF,eAEE,GAGF,mBACE,UAGF,gBAEE,MAGF,iBAEE,GAGF,UACE,0BACA,kBAGF,SAEE,YAGF,iBAIE,OAGF,mBAEE,IAGF,mBACE,gBACA,kCAGF,oBAEE,mCAGF,gBAEE,cAGF,cAEE,YACA,MAGF,cACE,QAGF,oBACE,YAGF,iBACE,6BACA,kBACA,kBACA,mBACA,gBACA,iBAGF,wBACE,eACA,kBACA,yBAGF,WACE,kBACA,KAGF,aACE,YACA,mBACA,eACA,QAGF,QACE,mBAGF,aACE,gBACA,kBACA,eACA,QAGF,uBACE,IAGF,aACE,WACA,kBACA,qBACA,eACA,UACA,OAGF,cACE,IAGF,cACE,OAGF,UACE,cACA,gBACA,WACA,iBACA,uBACA,mBACA,iBACA,kBACA,OAGF,kBACE,kBACA,KAGF,qBACE,aACA,6BACA,WACA,YACA,+BACA,gBACA,cACA,UAGF,cACE,kBACA,qBACA,yBACA,YACA,UACA,uBACA,MAGF,qBACE,cACA,+BACA,eACA,gBACA,yBACA,cACA,aAGF,iBAEE,kBAGF,eAEE,WACA,CANA,iBAGF,eAEE,WACA,OAGF,wBACE,kBACA,WACA,OAGF,aAEE,gBACA,UAGF,wBACE,gBACA,mBACA,kCACA,gBACA,0BAGF,yBACE,OAGF,iBACE,mBACA,QAGF,iBACE,UAGF,aACE,QAGF,iBACE,YAGF,iBACE,0BAKF,+BACE,aAEE,2BAIJ,WACE,qBACE,oBACA,QAGF,eACE,QAGF,gBACE,kBACA,kBACA,iBACA,E","sources":["webpack://wallabag/./app/Resources/static/themes/_global/share.scss"],"sourcesContent":["/* -------------------------- Reset ------------------- */\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nb,\nu,\ni,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n vertical-align: baseline;\n}\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\nsection {\n display: block;\n}\n\nbody {\n line-height: 1;\n}\n\nblockquote,\nq {\n quotes: none;\n}\n\nblockquote::before,\nblockquote::after,\nq::before,\nq::after {\n content: \"\";\n content: none;\n}\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n/* -------------------------- General properties ------------------- */\n\nbody {\n background-color: white;\n color: #444;\n font-family: Georgia;\n line-height: 1.7;\n -ms-content-zooming: none;\n margin-bottom: 64px;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-weight: 600;\n margin: 0.2em 0;\n}\n\narticle h1,\narticle h2,\narticle h3,\narticle h4,\narticle h5,\narticle h6 {\n text-align: left;\n line-height: 1.3;\n}\n\nh1 {\n font-size: 1.4em;\n}\n\nh2 {\n font-size: 1.3em;\n}\n\nh3,\nh4 {\n font-size: 1.2em;\n}\n\nh5,\nh6 {\n font-size: 1.1em;\n}\n\np {\n margin-bottom: 0.75em;\n}\n\nb,\nstrong {\n font-weight: bold;\n}\n\ni,\nem {\n font-style: italic;\n}\n\na {\n color: #444;\n text-decoration: underline;\n}\n\na:active,\na:hover {\n outline: 0;\n}\n\np,\nul,\nol,\ndl {\n margin: 0 0 1.75em;\n}\n\nul,\nol {\n padding-left: 1.25em;\n}\n\nli {\n padding-bottom: 0.2em;\n line-height: 1.6;\n}\n\nli p:last-child,\nli li:last-child {\n margin-bottom: -0.2em;\n}\n\nul li:last-child,\nol li:last-child {\n padding-bottom: 0;\n}\n\niframe,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\nmark {\n padding: 0 0.2em;\n}\n\nmark a {\n text-decoration: none;\n}\n\nblockquote {\n font-style: italic;\n border-left: 0.25em solid black;\n margin-left: -20px;\n padding-left: 17px;\n margin-bottom: 0.5em;\n margin-top: 0.5em;\n}\n\nblockquote cite {\n text-transform: uppercase;\n font-size: 0.8em;\n font-style: normal;\n}\n\nblockquote cite::before {\n content: \"—\";\n margin-right: 0.5em;\n}\n\nimg {\n display: block;\n height: auto;\n margin-bottom: 0.5em;\n max-width: 100%;\n}\n\nfigure {\n margin: 0;\n}\n\nfigure figcaption {\n display: block;\n margin-top: 0.3em;\n font-style: italic;\n font-size: 0.8em;\n}\n\nbutton {\n display: none !important;\n}\n\nhr {\n display: block;\n height: 1px;\n border: solid #666;\n border-width: 1px 0 0;\n margin: 1.6em 0;\n padding: 0;\n}\n\nsmall {\n font-size: 0.7em;\n}\n\ndl {\n margin: 1.6em 0;\n}\n\ndl dt {\n float: left;\n width: 11.25em;\n overflow: hidden;\n clear: left;\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: bold;\n margin-bottom: 1em;\n}\n\ndl dd {\n margin-left: 12.5em;\n margin-bottom: 1em;\n}\n\npre {\n box-sizing: border-box;\n margin: 4em 0;\n border: 0.0625em solid #efefef;\n width: 100%;\n padding: 1em;\n font-family: Consolas, monospace;\n white-space: pre;\n overflow: auto;\n}\n\npre code {\n font-size: 0.8em;\n line-height: 1.6em;\n white-space: pre-wrap;\n background: transparent;\n border: none;\n padding: 0;\n vertical-align: inherit;\n}\n\ncode {\n padding: 0.125em 0.375em;\n margin: 0 0.2em;\n font-family: Consolas, monospace;\n font-size: 0.8em;\n white-space: pre;\n border: 1px solid lightgray;\n overflow: auto;\n}\n\naudio,\nvideo {\n max-width: 43.75em;\n}\n\n::selection,\nmark {\n background: #666;\n color: white;\n}\n\ntable {\n border-collapse: collapse;\n margin-bottom: 2em;\n width: 100%;\n}\n\nth,\ntd {\n padding: 0.25em;\n text-align: left;\n}\n\nthead tr {\n text-transform: uppercase;\n font-size: 0.85em;\n letter-spacing: 1px;\n font-family: \"Segoe UI\", sans-serif;\n font-weight: 600;\n}\n\ntbody tr:nth-child(2n+1) {\n background: rgb(0 0 0 / 10%);\n}\n\ntbody {\n border: solid #999;\n border-width: 1px 0;\n}\n\nfigure {\n text-align: center;\n}\n\nfigure > * {\n margin: 0 auto;\n}\n\nheader {\n text-align: center;\n}\n\n.shared-by {\n margin-bottom: 1em;\n}\n\n/* --------------------- Responsive design ------------------------- */\n\n@media (max-width: 719px) {\n header > *:not(.preview),\n article {\n padding: 0 1em;\n }\n}\n\n@media (min-width: 720px) {\n blockquote {\n margin-left: -1.4375em;\n padding-left: 1.25em;\n }\n\n header {\n margin-top: 32px;\n }\n\n .block {\n margin-left: auto;\n margin-right: auto;\n max-width: 43.75em;\n padding: 0 1.25em;\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 47f4551e1..7948a1a08 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,7 +2,7 @@ const path = require('path'); function buildConfig(options) { const env = options.prod ? 'prod' : 'dev'; - return require(path.resolve(__dirname, `app/config/webpack/${env}.js`)); + return require(path.resolve(__dirname, `scripts/webpack/${env}.js`)); } module.exports = buildConfig;