From 688076129bbd2e63af0fca0aa4141ce7a36f4342 Mon Sep 17 00:00:00 2001 From: Tao Sasaki <485749+tao-s@users.noreply.github.com> Date: Wed, 7 Jun 2023 20:42:57 +0900 Subject: [PATCH 001/113] =?UTF-8?q?fix:=20#6008=20doctrine=E3=81=AEconfig?= =?UTF-8?q?=E3=81=ABdefault=5Fconnection=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/eccube/packages/doctrine.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/config/eccube/packages/doctrine.yaml b/app/config/eccube/packages/doctrine.yaml index fd2e627acac..61932270035 100644 --- a/app/config/eccube/packages/doctrine.yaml +++ b/app/config/eccube/packages/doctrine.yaml @@ -25,6 +25,7 @@ doctrine: types: datetime: 'Eccube\Doctrine\DBAL\Types\UTCDateTimeType' datetimetz: 'Eccube\Doctrine\DBAL\Types\UTCDateTimeTzType' + default_connection: 'default' orm: auto_generate_proxy_classes: '%kernel.debug%' naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware From 419bc8c7127b18e378c6e0a09d4077aaf564d1b7 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 29 Nov 2023 13:31:12 +0900 Subject: [PATCH 002/113] php8.1+ --- .github/workflows/deny-test.yml | 2 +- .github/workflows/deploy.yml | 4 ++-- .github/workflows/dockerbuild.yml | 7 ++----- .github/workflows/e2e-test.yml | 2 +- .github/workflows/phpstan.yml | 2 +- .github/workflows/plugin-test.yml | 8 ++++---- .github/workflows/unit-test.yml | 2 +- .github/workflows/vaddy-1.yml | 2 +- .github/workflows/vaddy-2.yml | 2 +- composer.json | 4 ++-- 10 files changed, 16 insertions(+), 19 deletions(-) diff --git a/.github/workflows/deny-test.yml b/.github/workflows/deny-test.yml index 90a11bf6280..b6fa45013aa 100644 --- a/.github/workflows/deny-test.yml +++ b/.github/workflows/deny-test.yml @@ -33,7 +33,7 @@ jobs: - name: Setup PHP uses: nanasess/setup-php@master with: - php-version: '7.4' + php-version: '8.1' - name: Initialize Composer uses: ./.github/actions/composer diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2037d58f320..66fe73901f7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -23,7 +23,7 @@ jobs: - name: Setup PHP uses: nanasess/setup-php@master with: - php-version: '7.4' + php-version: '8.1' - name: Install to Composer run: composer install --no-scripts --no-dev --no-interaction --optimize-autoloader @@ -60,7 +60,7 @@ jobs: bin/console eccube:composer:require "ec-cube/sitekit42" - name: revert to config platform.php - run: composer config platform.php 7.4.0 + run: composer config platform.php 8.1.0 - name: Pre Install Plugins env: diff --git a/.github/workflows/dockerbuild.yml b/.github/workflows/dockerbuild.yml index 72bd6040e25..35d77bc75aa 100644 --- a/.github/workflows/dockerbuild.yml +++ b/.github/workflows/dockerbuild.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: operating-system: [ ubuntu-22.04 ] - php: [ '7.4', '8.0', '8.1' ] + php: [ '8.1' ] db: [ pgsql ] group: [ admin01 ] include: @@ -29,12 +29,9 @@ jobs: database_server_version: 14 - group: admin01 app_env: 'codeception' - - php: '7.4' - tag: '7.4-apache' - - php: '8.0' - tag: '8.0-apache' - php: '8.1' tag: '8.1-apache' + steps: - name: downcase REPO run: | diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index d8bdd141a05..debab339d60 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - php: [ 7.4 ] + php: [ 8.1 ] db: [ pgsql ] group: [ 'admin01', 'admin02', 'admin03', 'front', 'restrict-fileupload', 'installer' ] include: diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index c388e72b937..2e67bac37fa 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -26,7 +26,7 @@ jobs: - name: Setup PHP uses: nanasess/setup-php@master with: - php-version: '7.4' + php-version: '8.1' - name: Initialize Composer uses: ./.github/actions/composer diff --git a/.github/workflows/plugin-test.yml b/.github/workflows/plugin-test.yml index d9410d4d73f..d3eab5366e8 100644 --- a/.github/workflows/plugin-test.yml +++ b/.github/workflows/plugin-test.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: operating-system: [ ubuntu-22.04 ] - php: [ '7.4', '8.0', '8.1' ] + php: [ '8.1' ] db: [ pgsql, mysql ] method: - test_install_enable_disable_remove_store @@ -158,7 +158,7 @@ jobs: fail-fast: false matrix: operating-system: [ ubuntu-22.04 ] - php: [ '7.4', '8.0', '8.1' ] + php: [ '8.1' ] db: [ pgsql, mysql ] method: - test_install_update_remove_store @@ -305,7 +305,7 @@ jobs: fail-fast: false matrix: operating-system: [ ubuntu-22.04 ] - php: [ '7.4', '8.0', '8.1' ] + php: [ '8.1' ] db: [ pgsql, mysql ] method: - test_extend_same_table_store @@ -452,7 +452,7 @@ jobs: fail-fast: false matrix: operating-system: [ ubuntu-22.04 ] - php: [ '7.4', '8.0', '8.1' ] + php: [ '8.1' ] db: [ pgsql, mysql ] method: - test_dependency_each_install_plugin diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 02076ffdae2..01a5a95f6fb 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: operating-system: [ ubuntu-22.04 ] - php: [ '7.4', '8.0', '8.1' ] + php: [ '8.1' ] db: [ mysql, pgsql, sqlite3 ] include: - db: mysql diff --git a/.github/workflows/vaddy-1.yml b/.github/workflows/vaddy-1.yml index 87ed8c58d91..8bbc3181a6e 100644 --- a/.github/workflows/vaddy-1.yml +++ b/.github/workflows/vaddy-1.yml @@ -41,7 +41,7 @@ jobs: - name: Setup PHP uses: nanasess/setup-php@master with: - php-version: '7.4' + php-version: '8.1' - name: setup-chromedriver uses: nanasess/setup-chromedriver@master diff --git a/.github/workflows/vaddy-2.yml b/.github/workflows/vaddy-2.yml index e35da382088..6739a6d810e 100644 --- a/.github/workflows/vaddy-2.yml +++ b/.github/workflows/vaddy-2.yml @@ -42,7 +42,7 @@ jobs: - name: Setup PHP uses: nanasess/setup-php@master with: - php-version: '7.4' + php-version: '8.1' - name: setup-chromedriver uses: nanasess/setup-chromedriver@master diff --git a/composer.json b/composer.json index ca8d8dcc670..3a1a5fbf3fb 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ }, "minimum-stability": "stable", "require": { - "php": "^7.4 || ^8.0", + "php": "^8.1", "ext-curl": "*", "ext-intl": "*", "ext-json": "*", @@ -186,7 +186,7 @@ }, "config": { "platform": { - "php": "7.4.0" + "php": "8.1.0" }, "preferred-install": { "*": "dist" From 6c7c4923e2f9e21bd4f3bf83f1459444a42d94f1 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 29 Nov 2023 17:28:05 +0900 Subject: [PATCH 003/113] codeception4 -> codeception5 --- composer.json | 14 +- composer.lock | 805 +++++++++++++++++++++++++++++++------------------- 2 files changed, 500 insertions(+), 319 deletions(-) diff --git a/composer.json b/composer.json index 3a1a5fbf3fb..797a6ba0a29 100644 --- a/composer.json +++ b/composer.json @@ -54,7 +54,7 @@ "sensio/framework-extra-bundle": "^6.2", "setasign/fpdi": "^2.2", "skorp/detect-incompatible-samesite-useragents": "^1.0", - "softcreatr/jsonpath": "0.7.5", + "softcreatr/jsonpath": "^0.8", "symfony/asset": "^5.4", "symfony/cache": "^5.4", "symfony/config": "^5.4", @@ -106,12 +106,12 @@ "vlucas/phpdotenv": "v5.4" }, "require-dev": { - "captbaritone/mailcatcher-codeception-module": "^2.4", - "codeception/codeception": "^4.1", - "codeception/module-asserts": "^1.3", - "codeception/module-phpbrowser": "^1.0", - "codeception/module-rest": "^1.3", - "codeception/module-webdriver": "^1.2", + "captbaritone/mailcatcher-codeception-module": "^3.0", + "codeception/codeception": "^5.0", + "codeception/module-asserts": "^3.0", + "codeception/module-phpbrowser": "^3.0", + "codeception/module-rest": "^3.3", + "codeception/module-webdriver": "^3.2", "dama/doctrine-test-bundle": "^6.6", "fakerphp/faker": "^1.16", "mikey179/vfsstream": "^1.6", diff --git a/composer.lock b/composer.lock index 5e183857fb1..14853da575a 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": "b05fb2f10279b2e65fbb66f5e802c8cb", + "content-hash": "5faab0c260902a51ea15d89898e35fc1", "packages": [ { "name": "composer/ca-bundle", @@ -1161,25 +1161,29 @@ }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -1198,9 +1202,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-09-27T20:04:15+00:00" }, { "name": "doctrine/doctrine-bundle", @@ -2907,16 +2911,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.4.3", + "version": "2.4.5", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "67c26b443f348a51926030c83481b85718457d3d" + "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", - "reference": "67c26b443f348a51926030c83481b85718457d3d", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/0454e12ef0cd597ccd2adb036f7bda4e7fface66", + "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66", "shasum": "" }, "require": { @@ -2942,9 +2946,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "2.4-dev" } }, "autoload": { @@ -3006,7 +3007,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.3" + "source": "https://github.com/guzzle/psr7/tree/2.4.5" }, "funding": [ { @@ -3022,7 +3023,7 @@ "type": "tidelift" } ], - "time": "2022-10-26T14:07:24+00:00" + "time": "2023-04-17T16:00:45+00:00" }, { "name": "justinrainbow/json-schema", @@ -3581,16 +3582,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.2", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", - "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -3631,9 +3632,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2022-11-12T15:38:23+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "phpoption/phpoption", @@ -3911,21 +3912,21 @@ }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -3945,7 +3946,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -3960,9 +3961,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", @@ -4307,16 +4308,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -4361,7 +4362,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -4369,7 +4370,7 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "seld/jsonlint", @@ -4745,29 +4746,28 @@ }, { "name": "softcreatr/jsonpath", - "version": "0.7.5", + "version": "0.8.3", "source": { "type": "git", "url": "https://github.com/SoftCreatR/JSONPath.git", - "reference": "008569bf80aa3584834f7890781576bc7b65afa7" + "reference": "fc12dee0b46f3fa3a175c4051dbab60984acef4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SoftCreatR/JSONPath/zipball/008569bf80aa3584834f7890781576bc7b65afa7", - "reference": "008569bf80aa3584834f7890781576bc7b65afa7", + "url": "https://api.github.com/repos/SoftCreatR/JSONPath/zipball/fc12dee0b46f3fa3a175c4051dbab60984acef4b", + "reference": "fc12dee0b46f3fa3a175c4051dbab60984acef4b", "shasum": "" }, "require": { "ext-json": "*", - "php": ">=7.1" + "php": ">=8.0" }, "replace": { "flow/jsonpath": "*" }, "require-dev": { - "phpunit/phpunit": ">=7.0", - "roave/security-advisories": "dev-master", - "squizlabs/php_codesniffer": "^3.5" + "phpunit/phpunit": "^9.6", + "roave/security-advisories": "dev-latest" }, "type": "library", "autoload": { @@ -4789,7 +4789,7 @@ { "name": "Sascha Greuel", "email": "hello@1-2.dev", - "homepage": "http://1-2.dev", + "homepage": "https://1-2.dev", "role": "Developer" } ], @@ -4801,12 +4801,16 @@ "source": "https://github.com/SoftCreatR/JSONPath" }, "funding": [ + { + "url": "https://ecologi.com/softcreatr?r=61212ab3fc69b8eb8a2014f4", + "type": "custom" + }, { "url": "https://github.com/softcreatr", "type": "github" } ], - "time": "2021-06-02T22:15:26+00:00" + "time": "2023-08-17T20:14:00+00:00" }, { "name": "symfony/asset", @@ -10975,27 +10979,27 @@ }, { "name": "captbaritone/mailcatcher-codeception-module", - "version": "2.4.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/captbaritone/codeception-mailcatcher-module.git", - "reference": "cb9e5ca1423505a4bfa72a5f00c9f570be89f07c" + "reference": "f9a10ba26043eeac4a3829632a3e3684cdfe1d32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captbaritone/codeception-mailcatcher-module/zipball/cb9e5ca1423505a4bfa72a5f00c9f570be89f07c", - "reference": "cb9e5ca1423505a4bfa72a5f00c9f570be89f07c", + "url": "https://api.github.com/repos/captbaritone/codeception-mailcatcher-module/zipball/f9a10ba26043eeac4a3829632a3e3684cdfe1d32", + "reference": "f9a10ba26043eeac4a3829632a3e3684cdfe1d32", "shasum": "" }, "require": { - "codeception/codeception": "^2.2 || ^3.0 || ^4.0", + "codeception/codeception": "^4.0 || ^5.0", "ext-json": "*", "guzzlehttp/guzzle": "^6.0 || ^7.0", - "php": "^7.3 || ^8.0", + "php": "^7.4 || ^8.0", "zbateson/mail-mime-parser": "^1.2" }, "require-dev": { - "codeception/module-asserts": "^1.1", + "codeception/module-asserts": "^1.1 || ^2", "phpmailer/phpmailer": "^6.1.6" }, "suggest": { @@ -11024,67 +11028,82 @@ "description": "Test emails in your Codeception acceptance tests", "support": { "issues": "https://github.com/captbaritone/codeception-mailcatcher-module/issues", - "source": "https://github.com/captbaritone/codeception-mailcatcher-module/tree/2.4.1" + "source": "https://github.com/captbaritone/codeception-mailcatcher-module/tree/3.0.0" }, - "time": "2022-06-08T17:21:08+00:00" + "time": "2023-08-08T13:01:13+00:00" }, { "name": "codeception/codeception", - "version": "4.2.2", + "version": "5.0.12", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "b88014f3348c93f3df99dc6d0967b0dbfa804474" + "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/b88014f3348c93f3df99dc6d0967b0dbfa804474", - "reference": "b88014f3348c93f3df99dc6d0967b0dbfa804474", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", + "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", "shasum": "" }, "require": { - "behat/gherkin": "^4.4.0", - "codeception/lib-asserts": "^1.0 | 2.0.*@dev", - "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0", - "codeception/stub": "^2.0 | ^3.0 | ^4.0", + "behat/gherkin": "^4.6.2", + "codeception/lib-asserts": "^2.0", + "codeception/stub": "^4.1", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "guzzlehttp/psr7": "^1.4 | ^2.0", - "php": ">=5.6.0 <9.0", - "symfony/console": ">=2.7 <6.0", - "symfony/css-selector": ">=2.7 <6.0", - "symfony/event-dispatcher": ">=2.7 <6.0", - "symfony/finder": ">=2.7 <6.0", - "symfony/yaml": ">=2.7 <6.0" - }, - "require-dev": { - "codeception/module-asserts": "^1.0 | 2.0.*@dev", - "codeception/module-cli": "^1.0 | 2.0.*@dev", - "codeception/module-db": "^1.0 | 2.0.*@dev", - "codeception/module-filesystem": "^1.0 | 2.0.*@dev", - "codeception/module-phpbrowser": "^1.0 | 2.0.*@dev", - "codeception/specify": "~0.3", + "php": "^8.0", + "phpunit/php-code-coverage": "^9.2 || ^10.0", + "phpunit/php-text-template": "^2.0 || ^3.0", + "phpunit/php-timer": "^5.0.3 || ^6.0", + "phpunit/phpunit": "^9.5.20 || ^10.0", + "psy/psysh": "^0.11.2", + "sebastian/comparator": "^4.0.5 || ^5.0", + "sebastian/diff": "^4.0.3 || ^5.0", + "symfony/console": ">=4.4.24 <7.0", + "symfony/css-selector": ">=4.4.24 <7.0", + "symfony/event-dispatcher": ">=4.4.24 <7.0", + "symfony/finder": ">=4.4.24 <7.0", + "symfony/var-dumper": ">=4.4.24 < 7.0", + "symfony/yaml": ">=4.4.24 <7.0" + }, + "conflict": { + "codeception/lib-innerbrowser": "<3.1.3", + "codeception/module-filesystem": "<3.0", + "codeception/module-phpbrowser": "<2.5" + }, + "replace": { + "codeception/phpunit-wrapper": "*" + }, + "require-dev": { + "codeception/lib-innerbrowser": "*@dev", + "codeception/lib-web": "^1.0", + "codeception/module-asserts": "*@dev", + "codeception/module-cli": "*@dev", + "codeception/module-db": "*@dev", + "codeception/module-filesystem": "*@dev", + "codeception/module-phpbrowser": "*@dev", "codeception/util-universalframework": "*@dev", - "monolog/monolog": "~1.8", - "squizlabs/php_codesniffer": "~2.0", - "symfony/process": ">=2.7 <6.0", - "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0 | ^5.0" + "ext-simplexml": "*", + "jetbrains/phpstorm-attributes": "^1.0", + "symfony/dotenv": ">=4.4.24 <7.0", + "symfony/process": ">=4.4.24 <7.0", + "vlucas/phpdotenv": "^5.1" }, "suggest": { "codeception/specify": "BDD-style code blocks", "codeception/verify": "BDD-style assertions", - "hoa/console": "For interactive console functionality", + "ext-simplexml": "For loading params from XML files", "stecman/symfony-console-completion": "For BASH autocompletion", - "symfony/phpunit-bridge": "For phpunit-bridge support" + "symfony/dotenv": "For loading params from .env files", + "symfony/phpunit-bridge": "For phpunit-bridge support", + "vlucas/phpdotenv": "For loading params from .env files" }, "bin": [ "codecept" ], "type": "library", - "extra": { - "branch-alias": [] - }, "autoload": { "files": [ "functions.php" @@ -11092,7 +11111,10 @@ "psr-4": { "Codeception\\": "src/Codeception", "Codeception\\Extension\\": "ext" - } + }, + "classmap": [ + "src/PHPUnit/TestCase.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11101,8 +11123,8 @@ "authors": [ { "name": "Michael Bodnarchuk", - "email": "davert@mail.ua", - "homepage": "https://codegyre.com" + "email": "davert.ua@gmail.com", + "homepage": "https://codeception.com" } ], "description": "BDD-style testing framework", @@ -11116,7 +11138,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.2.2" + "source": "https://github.com/Codeception/Codeception/tree/5.0.12" }, "funding": [ { @@ -11124,26 +11146,26 @@ "type": "open_collective" } ], - "time": "2022-08-13T13:28:25+00:00" + "time": "2023-10-15T18:04:50+00:00" }, { "name": "codeception/lib-asserts", - "version": "1.13.2", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/Codeception/lib-asserts.git", - "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6" + "reference": "b8c7dff552249e560879c682ba44a4b963af91bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6", - "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6", + "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/b8c7dff552249e560879c682ba44a4b963af91bc", + "reference": "b8c7dff552249e560879c682ba44a4b963af91bc", "shasum": "" }, "require": { - "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0", + "codeception/phpunit-wrapper": "^7.7.1 | ^8.0.3 | ^9.0", "ext-dom": "*", - "php": ">=5.6.0 <9.0" + "php": "^7.4 | ^8.0" }, "type": "library", "autoload": { @@ -11176,35 +11198,34 @@ ], "support": { "issues": "https://github.com/Codeception/lib-asserts/issues", - "source": "https://github.com/Codeception/lib-asserts/tree/1.13.2" + "source": "https://github.com/Codeception/lib-asserts/tree/2.1.0" }, - "time": "2020-10-21T16:26:20+00:00" + "time": "2023-02-10T18:36:23+00:00" }, { "name": "codeception/lib-innerbrowser", - "version": "1.5.1", + "version": "3.1.3", "source": { "type": "git", "url": "https://github.com/Codeception/lib-innerbrowser.git", - "reference": "31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2" + "reference": "10482f7e34c0537bf5b87bc82a3d65a1842a8b4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2", - "reference": "31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2", + "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/10482f7e34c0537bf5b87bc82a3d65a1842a8b4f", + "reference": "10482f7e34c0537bf5b87bc82a3d65a1842a8b4f", "shasum": "" }, "require": { - "codeception/codeception": "4.*@dev", + "codeception/codeception": "^5.0", + "codeception/lib-web": "^1.0.1", "ext-dom": "*", "ext-json": "*", "ext-mbstring": "*", - "php": ">=5.6.0 <9.0", - "symfony/browser-kit": ">=2.7 <6.0", - "symfony/dom-crawler": ">=2.7 <6.0" - }, - "conflict": { - "codeception/codeception": "<4.0" + "php": "^8.0", + "phpunit/phpunit": "^9.5", + "symfony/browser-kit": "^4.4.24 || ^5.4 || ^6.0", + "symfony/dom-crawler": "^4.4.30 || ^5.4 || ^6.0" }, "require-dev": { "codeception/util-universalframework": "dev-master" @@ -11223,7 +11244,7 @@ { "name": "Michael Bodnarchuk", "email": "davert@mail.ua", - "homepage": "http://codegyre.com" + "homepage": "https://codegyre.com" }, { "name": "Gintautas Miselis" @@ -11236,31 +11257,134 @@ ], "support": { "issues": "https://github.com/Codeception/lib-innerbrowser/issues", - "source": "https://github.com/Codeception/lib-innerbrowser/tree/1.5.1" + "source": "https://github.com/Codeception/lib-innerbrowser/tree/3.1.3" + }, + "time": "2022-10-03T15:33:34+00:00" + }, + { + "name": "codeception/lib-web", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/Codeception/lib-web.git", + "reference": "4c02cf57c5f2d14bbb9f57ea09b38ceacec15d91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/lib-web/zipball/4c02cf57c5f2d14bbb9f57ea09b38ceacec15d91", + "reference": "4c02cf57c5f2d14bbb9f57ea09b38ceacec15d91", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "guzzlehttp/psr7": "^2.0", + "php": "^8.0", + "symfony/css-selector": ">=4.4.24 <7.0" + }, + "conflict": { + "codeception/codeception": "<5.0.0-alpha3" + }, + "require-dev": { + "php-webdriver/webdriver": "^1.12", + "phpunit/phpunit": "^9.5 | ^10.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gintautas Miselis" + } + ], + "description": "Library containing files used by module-webdriver and lib-innerbrowser or module-phpbrowser", + "homepage": "https://codeception.com/", + "keywords": [ + "codeception" + ], + "support": { + "issues": "https://github.com/Codeception/lib-web/issues", + "source": "https://github.com/Codeception/lib-web/tree/1.0.3" + }, + "time": "2023-11-27T06:43:13+00:00" + }, + { + "name": "codeception/lib-xml", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/Codeception/lib-xml.git", + "reference": "d6e4c094fb83958bcf254a20815cea5ac31e98d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/lib-xml/zipball/d6e4c094fb83958bcf254a20815cea5ac31e98d0", + "reference": "d6e4c094fb83958bcf254a20815cea5ac31e98d0", + "shasum": "" + }, + "require": { + "codeception/lib-web": "^1.0", + "ext-dom": "*", + "php": "^8.0", + "phpunit/phpunit": "^9.5 | ^10.0", + "symfony/css-selector": ">=4.4.24 <7.0" }, - "time": "2021-08-30T15:21:42+00:00" + "conflict": { + "codeception/codeception": "<5.0.0-alpha3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gintautas Miselis" + } + ], + "description": "Files used by module-rest and module-soap", + "homepage": "https://codeception.com/", + "keywords": [ + "codeception" + ], + "support": { + "issues": "https://github.com/Codeception/lib-xml/issues", + "source": "https://github.com/Codeception/lib-xml/tree/1.0.1" + }, + "time": "2022-09-11T14:09:09+00:00" }, { "name": "codeception/module-asserts", - "version": "1.3.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/Codeception/module-asserts.git", - "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de" + "reference": "1b6b150b30586c3614e7e5761b31834ed7968603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/59374f2fef0cabb9e8ddb53277e85cdca74328de", - "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de", + "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/1b6b150b30586c3614e7e5761b31834ed7968603", + "reference": "1b6b150b30586c3614e7e5761b31834ed7968603", "shasum": "" }, "require": { "codeception/codeception": "*@dev", - "codeception/lib-asserts": "^1.13.1", - "php": ">=5.6.0 <9.0" + "codeception/lib-asserts": "^2.0", + "php": "^8.0" }, "conflict": { - "codeception/codeception": "<4.0" + "codeception/codeception": "<5.0" }, "type": "library", "autoload": { @@ -11293,35 +11417,40 @@ ], "support": { "issues": "https://github.com/Codeception/module-asserts/issues", - "source": "https://github.com/Codeception/module-asserts/tree/1.3.1" + "source": "https://github.com/Codeception/module-asserts/tree/3.0.0" }, - "time": "2020-10-21T16:48:15+00:00" + "time": "2022-02-16T19:48:08+00:00" }, { "name": "codeception/module-phpbrowser", - "version": "1.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/Codeception/module-phpbrowser.git", - "reference": "8ba6bede11d0914e74d98691f427fd8f397f192e" + "reference": "8e1fdcc85e182e6b61399b35a35a562862c3be62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/8ba6bede11d0914e74d98691f427fd8f397f192e", - "reference": "8ba6bede11d0914e74d98691f427fd8f397f192e", + "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/8e1fdcc85e182e6b61399b35a35a562862c3be62", + "reference": "8e1fdcc85e182e6b61399b35a35a562862c3be62", "shasum": "" }, "require": { - "codeception/codeception": "^4.1", - "codeception/lib-innerbrowser": "^1.3", - "guzzlehttp/guzzle": "^6.3|^7.0", - "php": ">=5.6.0 <9.0" + "codeception/codeception": "*@dev", + "codeception/lib-innerbrowser": "*@dev", + "ext-json": "*", + "guzzlehttp/guzzle": "^7.4", + "php": "^8.0", + "symfony/browser-kit": "^5.4 || ^6.0" }, "conflict": { - "codeception/codeception": "<4.0" + "codeception/codeception": "<5.0", + "codeception/lib-innerbrowser": "<3.0" }, "require-dev": { - "codeception/module-rest": "^1.0" + "aws/aws-sdk-php": "^3.199", + "codeception/module-rest": "^2.0 || *@dev", + "ext-curl": "*" }, "suggest": { "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests" @@ -11345,7 +11474,7 @@ } ], "description": "Codeception module for testing web application over HTTP", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "codeception", "functional-testing", @@ -11353,33 +11482,39 @@ ], "support": { "issues": "https://github.com/Codeception/module-phpbrowser/issues", - "source": "https://github.com/Codeception/module-phpbrowser/tree/1.0.3" + "source": "https://github.com/Codeception/module-phpbrowser/tree/3.0.0" }, - "time": "2022-05-21T13:50:41+00:00" + "time": "2022-02-19T18:22:27+00:00" }, { "name": "codeception/module-rest", - "version": "1.4.2", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/Codeception/module-rest.git", - "reference": "9cd7a87fd9343494e7782f7bdb51687c25046917" + "reference": "bb545d4f7c261472472da8730267d9df162199cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-rest/zipball/9cd7a87fd9343494e7782f7bdb51687c25046917", - "reference": "9cd7a87fd9343494e7782f7bdb51687c25046917", + "url": "https://api.github.com/repos/Codeception/module-rest/zipball/bb545d4f7c261472472da8730267d9df162199cb", + "reference": "bb545d4f7c261472472da8730267d9df162199cb", "shasum": "" }, "require": { - "codeception/codeception": "^4.0", + "codeception/codeception": "^5.0.8", + "codeception/lib-xml": "^1.0", + "ext-dom": "*", + "ext-json": "*", "justinrainbow/json-schema": "~5.2.9", - "php": ">=5.6.6 <9.0", - "softcreatr/jsonpath": "^0.5 || ^0.7" + "php": "^8.0", + "softcreatr/jsonpath": "^0.8" }, "require-dev": { - "codeception/lib-innerbrowser": "^1.0", - "codeception/util-universalframework": "^1.0" + "codeception/lib-innerbrowser": "^3.0 | ^4.0", + "codeception/stub": "^4.0", + "codeception/util-universalframework": "^1.0", + "ext-libxml": "*", + "ext-simplexml": "*" }, "suggest": { "aws/aws-sdk-php": "For using AWS Auth" @@ -11400,35 +11535,40 @@ } ], "description": "REST module for Codeception", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "codeception", "rest" ], "support": { "issues": "https://github.com/Codeception/module-rest/issues", - "source": "https://github.com/Codeception/module-rest/tree/1.4.2" + "source": "https://github.com/Codeception/module-rest/tree/3.3.2" }, - "time": "2021-11-18T18:58:15+00:00" + "time": "2023-02-09T18:11:19+00:00" }, { "name": "codeception/module-webdriver", - "version": "1.4.1", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/Codeception/module-webdriver.git", - "reference": "e22ac7da756df659df6dd4fac2dff9c859e30131" + "reference": "59b6fe426dddbe889c23593f8698c52e08bba6e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-webdriver/zipball/e22ac7da756df659df6dd4fac2dff9c859e30131", - "reference": "e22ac7da756df659df6dd4fac2dff9c859e30131", + "url": "https://api.github.com/repos/Codeception/module-webdriver/zipball/59b6fe426dddbe889c23593f8698c52e08bba6e9", + "reference": "59b6fe426dddbe889c23593f8698c52e08bba6e9", "shasum": "" }, "require": { - "codeception/codeception": "^4.0", - "php": ">=5.6.0 <9.0", - "php-webdriver/webdriver": "^1.8.0" + "codeception/codeception": "^5.0.0-RC2", + "codeception/lib-web": "^1.0.1", + "codeception/stub": "^4.0", + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "php-webdriver/webdriver": "^1.8.0", + "phpunit/phpunit": "^9.5" }, "suggest": { "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests" @@ -11455,7 +11595,7 @@ } ], "description": "WebDriver module for Codeception", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "acceptance-testing", "browser-testing", @@ -11463,77 +11603,31 @@ ], "support": { "issues": "https://github.com/Codeception/module-webdriver/issues", - "source": "https://github.com/Codeception/module-webdriver/tree/1.4.1" - }, - "time": "2022-09-12T05:09:51+00:00" - }, - { - "name": "codeception/phpunit-wrapper", - "version": "9.0.9", - "source": { - "type": "git", - "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7439a53ae367986e9c22b2ac00f9d7376bb2f8cf", - "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "phpunit/phpunit": "^9.0" - }, - "require-dev": { - "codeception/specify": "*", - "consolidation/robo": "^3.0.0-alpha3", - "vlucas/phpdotenv": "^3.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Codeception\\PHPUnit\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Davert", - "email": "davert.php@resend.cc" - }, - { - "name": "Naktibalda" - } - ], - "description": "PHPUnit classes used by Codeception", - "support": { - "issues": "https://github.com/Codeception/phpunit-wrapper/issues", - "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.9" + "source": "https://github.com/Codeception/module-webdriver/tree/3.2.1" }, - "time": "2022-05-23T06:24:11+00:00" + "time": "2023-02-03T21:46:32+00:00" }, { "name": "codeception/stub", - "version": "4.0.2", + "version": "4.1.2", "source": { "type": "git", "url": "https://github.com/Codeception/Stub.git", - "reference": "18a148dacd293fc7b044042f5aa63a82b08bff5d" + "reference": "f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/18a148dacd293fc7b044042f5aa63a82b08bff5d", - "reference": "18a148dacd293fc7b044042f5aa63a82b08bff5d", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad", + "reference": "f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad", "shasum": "" }, "require": { "php": "^7.4 | ^8.0", "phpunit/phpunit": "^8.4 | ^9.0 | ^10.0 | 10.0.x-dev" }, + "conflict": { + "codeception/codeception": "<5.0.6" + }, "require-dev": { "consolidation/robo": "^3.0" }, @@ -11550,9 +11644,9 @@ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", "support": { "issues": "https://github.com/Codeception/Stub/issues", - "source": "https://github.com/Codeception/Stub/tree/4.0.2" + "source": "https://github.com/Codeception/Stub/tree/4.1.2" }, - "time": "2022-01-31T19:25:15+00:00" + "time": "2023-10-07T19:22:36+00:00" }, { "name": "dama/doctrine-test-bundle", @@ -11742,16 +11836,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -11789,7 +11883,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -11797,7 +11891,7 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "phar-io/manifest", @@ -11912,37 +12006,38 @@ }, { "name": "php-webdriver/webdriver", - "version": "1.13.1", + "version": "1.15.1", "source": { "type": "git", "url": "https://github.com/php-webdriver/php-webdriver.git", - "reference": "6dfe5f814b796c1b5748850aa19f781b9274c36c" + "reference": "cd52d9342c5aa738c2e75a67e47a1b6df97154e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/6dfe5f814b796c1b5748850aa19f781b9274c36c", - "reference": "6dfe5f814b796c1b5748850aa19f781b9274c36c", + "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/cd52d9342c5aa738c2e75a67e47a1b6df97154e8", + "reference": "cd52d9342c5aa738c2e75a67e47a1b6df97154e8", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-zip": "*", - "php": "^5.6 || ~7.0 || ^8.0", + "php": "^7.3 || ^8.0", "symfony/polyfill-mbstring": "^1.12", - "symfony/process": "^2.8 || ^3.1 || ^4.0 || ^5.0 || ^6.0" + "symfony/process": "^5.0 || ^6.0 || ^7.0" }, "replace": { "facebook/webdriver": "*" }, "require-dev": { - "ondram/ci-detector": "^2.1 || ^3.5 || ^4.0", + "ergebnis/composer-normalize": "^2.20.0", + "ondram/ci-detector": "^4.0", "php-coveralls/php-coveralls": "^2.4", - "php-mock/php-mock-phpunit": "^1.1 || ^2.0", + "php-mock/php-mock-phpunit": "^2.0", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpunit/phpunit": "^5.7 || ^7 || ^8 || ^9", + "phpunit/phpunit": "^9.3", "squizlabs/php_codesniffer": "^3.5", - "symfony/var-dumper": "^3.3 || ^4.0 || ^5.0 || ^6.0" + "symfony/var-dumper": "^5.0 || ^6.0" }, "suggest": { "ext-SimpleXML": "For Firefox profile creation" @@ -11971,9 +12066,9 @@ ], "support": { "issues": "https://github.com/php-webdriver/php-webdriver/issues", - "source": "https://github.com/php-webdriver/php-webdriver/tree/1.13.1" + "source": "https://github.com/php-webdriver/php-webdriver/tree/1.15.1" }, - "time": "2022-10-11T11:49:44+00:00" + "time": "2023-10-20T12:21:20+00:00" }, { "name": "phpstan/phpstan", @@ -12036,23 +12131,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.23", + "version": "9.2.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c" + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", - "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.14", + "nikic/php-parser": "^4.15", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -12067,8 +12162,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -12101,7 +12196,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" }, "funding": [ { @@ -12109,7 +12205,7 @@ "type": "github" } ], - "time": "2022-12-28T12:41:10+00:00" + "time": "2023-09-19T04:57:46+00:00" }, { "name": "phpunit/php-file-iterator", @@ -12354,20 +12450,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.27", + "version": "9.6.13", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38" + "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a2bc7ffdca99f92d959b3f2270529334030bba38", - "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be", + "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -12378,7 +12474,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-code-coverage": "^9.2.28", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -12396,8 +12492,8 @@ "sebastian/version": "^3.0.2" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -12405,7 +12501,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -12436,7 +12532,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.27" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13" }, "funding": [ { @@ -12452,7 +12549,87 @@ "type": "tidelift" } ], - "time": "2022-12-09T07:31:23+00:00" + "time": "2023-09-19T05:39:22+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.11.22", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-0.11": "0.11.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.11.22" + }, + "time": "2023-10-14T21:56:36+00:00" }, { "name": "sebastian/cli-parser", @@ -12754,16 +12931,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -12805,7 +12982,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -12813,7 +12990,7 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", @@ -12894,16 +13071,16 @@ }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "bde739e7565280bda77be70044ac1047bc007e34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", + "reference": "bde739e7565280bda77be70044ac1047bc007e34", "shasum": "" }, "require": { @@ -12946,7 +13123,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" }, "funding": [ { @@ -12954,7 +13131,7 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2023-08-02T09:26:13+00:00" }, { "name": "sebastian/lines-of-code", @@ -13127,16 +13304,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -13175,10 +13352,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -13186,7 +13363,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", @@ -13245,16 +13422,16 @@ }, { "name": "sebastian/type", - "version": "3.2.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { @@ -13289,7 +13466,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -13297,7 +13474,7 @@ "type": "github" } ], - "time": "2022-09-12T14:47:03+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -13509,16 +13686,16 @@ }, { "name": "symfony/polyfill-iconv", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "927013f3aac555983a5059aada98e1907d842695" + "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", - "reference": "927013f3aac555983a5059aada98e1907d842695", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6de50471469b8c9afc38164452ab2b6170ee71c1", + "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1", "shasum": "" }, "require": { @@ -13533,7 +13710,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -13572,7 +13749,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.28.0" }, "funding": [ { @@ -13588,20 +13765,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -13630,7 +13807,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -13638,7 +13815,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" }, { "name": "zbateson/mail-mime-parser", @@ -13714,25 +13891,27 @@ }, { "name": "zbateson/mb-wrapper", - "version": "1.1.2", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/zbateson/mb-wrapper.git", - "reference": "5d9d190ef18ce6d424e3ac6f5ebe13901f92b74a" + "reference": "faf35dddfacfc5d4d5f9210143eafd7a7fe74334" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/5d9d190ef18ce6d424e3ac6f5ebe13901f92b74a", - "reference": "5d9d190ef18ce6d424e3ac6f5ebe13901f92b74a", + "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/faf35dddfacfc5d4d5f9210143eafd7a7fe74334", + "reference": "faf35dddfacfc5d4d5f9210143eafd7a7fe74334", "shasum": "" }, "require": { - "php": ">=5.4", + "php": ">=7.1", "symfony/polyfill-iconv": "^1.9", "symfony/polyfill-mbstring": "^1.9" }, "require-dev": { - "sanmai/phpunit-legacy-adapter": "^6.3 || ^8" + "friendsofphp/php-cs-fixer": "*", + "phpstan/phpstan": "*", + "phpunit/phpunit": "<=9.0" }, "suggest": { "ext-iconv": "For best support/performance", @@ -13769,7 +13948,7 @@ ], "support": { "issues": "https://github.com/zbateson/mb-wrapper/issues", - "source": "https://github.com/zbateson/mb-wrapper/tree/1.1.2" + "source": "https://github.com/zbateson/mb-wrapper/tree/1.2.0" }, "funding": [ { @@ -13777,29 +13956,31 @@ "type": "github" } ], - "time": "2022-05-26T15:55:05+00:00" + "time": "2023-01-11T23:05:44+00:00" }, { "name": "zbateson/stream-decorators", - "version": "1.0.7", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/zbateson/stream-decorators.git", - "reference": "8f8ca208572963258b7e6d91106181706deacd10" + "reference": "783b034024fda8eafa19675fb2552f8654d3a3e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/8f8ca208572963258b7e6d91106181706deacd10", - "reference": "8f8ca208572963258b7e6d91106181706deacd10", + "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/783b034024fda8eafa19675fb2552f8654d3a3e9", + "reference": "783b034024fda8eafa19675fb2552f8654d3a3e9", "shasum": "" }, "require": { - "guzzlehttp/psr7": "^1.7.0|^2.0", - "php": ">=5.4", + "guzzlehttp/psr7": "^1.9 | ^2.0", + "php": ">=7.2", "zbateson/mb-wrapper": "^1.0.0" }, "require-dev": { - "sanmai/phpunit-legacy-adapter": "^6.3 || ^8" + "friendsofphp/php-cs-fixer": "*", + "phpstan/phpstan": "*", + "phpunit/phpunit": "<10.0" }, "type": "library", "autoload": { @@ -13830,7 +14011,7 @@ ], "support": { "issues": "https://github.com/zbateson/stream-decorators/issues", - "source": "https://github.com/zbateson/stream-decorators/tree/1.0.7" + "source": "https://github.com/zbateson/stream-decorators/tree/1.2.1" }, "funding": [ { @@ -13838,7 +14019,7 @@ "type": "github" } ], - "time": "2022-09-08T15:44:55+00:00" + "time": "2023-05-30T22:51:52+00:00" } ], "aliases": [], @@ -13847,7 +14028,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.4 || ^8.0", + "php": "^8.1", "ext-curl": "*", "ext-intl": "*", "ext-json": "*", @@ -13857,7 +14038,7 @@ }, "platform-dev": [], "platform-overrides": { - "php": "7.4.0" + "php": "8.1.0" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } From 8cdac2e93f464b40b9810db0a9260afc9f8efd2a Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 30 Nov 2023 08:26:22 +0900 Subject: [PATCH 004/113] Fix [ConfigurationException] actor setting is missing in suite configuration. Replace `class_name` with `actor` in config to fix this --- codeception/acceptance.suite.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codeception/acceptance.suite.yml b/codeception/acceptance.suite.yml index faf8f91e66e..c176ad2c77a 100644 --- a/codeception/acceptance.suite.yml +++ b/codeception/acceptance.suite.yml @@ -4,7 +4,7 @@ # Perform tests in browser using the WebDriver or PhpBrowser. # If you need both WebDriver and PHPBrowser tests - create a separate suite. -class_name: AcceptanceTester +actor: AcceptanceTester coverage: remote: true modules: From 4af87026cede9de90585ea78374d97d660fd2821 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 30 Nov 2023 08:33:35 +0900 Subject: [PATCH 005/113] Fix Declaration of AcceptanceTester::getScenario() must be compatible with Codeception\Actor::getScenario() --- codeception/_support/AcceptanceTester.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/codeception/_support/AcceptanceTester.php b/codeception/_support/AcceptanceTester.php index 6def0e91c79..cc0201f0819 100644 --- a/codeception/_support/AcceptanceTester.php +++ b/codeception/_support/AcceptanceTester.php @@ -11,6 +11,7 @@ * file that was distributed with this source code. */ +use Codeception\Scenario; use Codeception\Util\Fixtures; use Eccube\Common\Constant; use Facebook\WebDriver\WebDriverBy; @@ -37,7 +38,7 @@ class AcceptanceTester extends \Codeception\Actor { use _generated\AcceptanceTesterActions; - public function getScenario() + public function getScenario(): Scenario { return $this->scenario; } From 8f2acf6edb119f4044a2603041b745b363f97b3f Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 30 Nov 2023 08:50:13 +0900 Subject: [PATCH 006/113] Fix [TypeError] AcceptanceTester::waitForText(): Argument #2 ($timeout) must be of type int, null given --- codeception/acceptance/EA06ContentsManagementCest.php | 2 +- codeception/acceptance/EA09ShippingCest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/codeception/acceptance/EA06ContentsManagementCest.php b/codeception/acceptance/EA06ContentsManagementCest.php index 938b8675093..b3790fef458 100644 --- a/codeception/acceptance/EA06ContentsManagementCest.php +++ b/codeception/acceptance/EA06ContentsManagementCest.php @@ -518,7 +518,7 @@ public function contentsmanagement_メンテナンス管理(AcceptanceTester $I) $I->expect('トップページを確認します'); $I->amOnPage('/'); - $I->waitForText('メンテナンスモードが有効になっています。', null,'#page_homepage > div.ec-maintenanceAlert > div'); + $I->waitForText('メンテナンスモードが有効になっています。', 10,'#page_homepage > div.ec-maintenanceAlert > div'); $I->waitForText('全ての商品', 10, TopPage::$検索_カテゴリ選択); $I->expect('ログアウトします'); diff --git a/codeception/acceptance/EA09ShippingCest.php b/codeception/acceptance/EA09ShippingCest.php index 2988784b44a..faaba752206 100644 --- a/codeception/acceptance/EA09ShippingCest.php +++ b/codeception/acceptance/EA09ShippingCest.php @@ -145,7 +145,7 @@ public function shippingお届け先追加(AcceptanceTester $I) ->入力_番地_ビル名('address 2', 1) ->出荷情報登録(); - $I->waitForText('保存しました', null, ShippingEditPage::$登録完了メッセージ); + $I->waitForText('保存しました', 10, ShippingEditPage::$登録完了メッセージ); // 出荷済みに変更 $ShippingRegisterPage From b5efcc5f175abef498aacf0f8746cf1c9dfe083a Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 30 Nov 2023 08:57:11 +0900 Subject: [PATCH 007/113] Fix [TypeError] Codeception\Constraint\Page::__construct(): Argument #1 ($string) must be of type string, float given --- codeception/acceptance/EA01TopCest.php | 2 +- codeception/acceptance/EA07BasicinfoCest.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/codeception/acceptance/EA01TopCest.php b/codeception/acceptance/EA01TopCest.php index c751195c08c..0db32d6c9b2 100644 --- a/codeception/acceptance/EA01TopCest.php +++ b/codeception/acceptance/EA01TopCest.php @@ -58,7 +58,7 @@ public function top_001(AcceptanceTester $I) $NewOrders = array_filter($findOrders(), function ($Order) { return $Order->getOrderStatus()->getId() == \Eccube\Entity\Master\OrderStatus::NEW; }); - $I->see(count($NewOrders), TopPage::$受付状況_新規受付数); + $I->see((string)count($NewOrders), TopPage::$受付状況_新規受付数); // 新規受付をクリックすると「受注管理>新規受付」のページに遷移することを確認 $I->click(TopPage::$受付状況_新規受付); diff --git a/codeception/acceptance/EA07BasicinfoCest.php b/codeception/acceptance/EA07BasicinfoCest.php index 3bde8fc50a8..0ff8e03b6c3 100644 --- a/codeception/acceptance/EA07BasicinfoCest.php +++ b/codeception/acceptance/EA07BasicinfoCest.php @@ -352,7 +352,7 @@ public function basicinfo_ポイント設定_有効(AcceptanceTester $I) OrderManagePage::go($I) ->検索($customer->getEmail()) ->一覧_編集(1); - $I->see($expected_point, OrderEditPage::$加算ポイント); + $I->see((string)$expected_point, OrderEditPage::$加算ポイント); $I->amGoingTo('発送済みにする (ポイントが付与される)'); OrderEditPage::at($I) @@ -403,7 +403,7 @@ public function basicinfo_ポイント設定_有効(AcceptanceTester $I) ->一覧_編集(1); $I->see($expected_discount, OrderEditPage::$ポイント値引き額); $I->seeInField(OrderEditPage::$利用ポイント, (string)$expected_point); - $I->see($expected_point - round(($point_conversion_rate * $expected_point) * ($point_rate / 100)), OrderEditPage::$加算ポイント); + $I->see((string)($expected_point - round(($point_conversion_rate * $expected_point) * ($point_rate / 100))), OrderEditPage::$加算ポイント); $I->expect('ポイント付与率を変更しても, 注文のポイントに影響無いことを確認します'); // see https://github.com/EC-CUBE/ec-cube/pull/5571 @@ -418,7 +418,7 @@ public function basicinfo_ポイント設定_有効(AcceptanceTester $I) $I->see($expected_discount, OrderEditPage::$ポイント値引き額); $I->seeInField(OrderEditPage::$利用ポイント, (string)$expected_point); - $I->see($expected_point - round(($point_conversion_rate * $expected_point) * ($point_rate / 100)), OrderEditPage::$加算ポイント); + $I->see((string)($expected_point - round(($point_conversion_rate * $expected_point) * ($point_rate / 100))), OrderEditPage::$加算ポイント); $I->expect('管理画面・会員管理にて、ポイントが減少していること'); CustomerManagePage::go($I) From 55a612e8ab0dcb331dc53cc02d2513a0f01f5f7f Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 4 Dec 2023 12:59:09 +0900 Subject: [PATCH 008/113] Fix [TypeError] strpos(): Argument #1 ($haystack) must be of type string, int given --- codeception/_support/Page/Admin/SystemMemberEditPage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codeception/_support/Page/Admin/SystemMemberEditPage.php b/codeception/_support/Page/Admin/SystemMemberEditPage.php index d6b6f8eec09..ff520b0feeb 100644 --- a/codeception/_support/Page/Admin/SystemMemberEditPage.php +++ b/codeception/_support/Page/Admin/SystemMemberEditPage.php @@ -45,7 +45,7 @@ public function メンバー登録($form) 'password' => 'password1234', 'password_second' => 'password1234', 'authority' => 'システム管理者', - 'work' => 1, + 'work' => '1', ]; $this->tester->fillField('#admin_member_name', $form['name']); From 9334533d89e784af9c40ba5158935b25929f2ffe Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 4 Dec 2023 09:57:31 +0900 Subject: [PATCH 009/113] chromeOptions -> goog:chromeOptions --- codeception/_envs/github_action.yml | 2 +- codeception/_envs/github_action_docker.yml | 2 +- codeception/_envs/travis.yml | 4 ++-- codeception/acceptance.suite.yml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/codeception/_envs/github_action.yml b/codeception/_envs/github_action.yml index e5ef371c5b9..73030b2b2f4 100644 --- a/codeception/_envs/github_action.yml +++ b/codeception/_envs/github_action.yml @@ -5,7 +5,7 @@ modules: port: 9515 url: 'http://127.0.0.1:8000' capabilities: - chromeOptions: + goog:chromeOptions: prefs: download.default_directory: '%GITHUB_WORKSPACE%/codeception/_support/_downloads' wait: 30 diff --git a/codeception/_envs/github_action_docker.yml b/codeception/_envs/github_action_docker.yml index da7f40b6bb6..62415ee30e0 100644 --- a/codeception/_envs/github_action_docker.yml +++ b/codeception/_envs/github_action_docker.yml @@ -5,7 +5,7 @@ modules: port: 9515 url: 'http://localhost:8080' capabilities: - chromeOptions: + goog:chromeOptions: prefs: download.default_directory: '%GITHUB_WORKSPACE%/codeception/_support/_downloads' MailCatcher: diff --git a/codeception/_envs/travis.yml b/codeception/_envs/travis.yml index 0b64864aa88..59459804e3e 100644 --- a/codeception/_envs/travis.yml +++ b/codeception/_envs/travis.yml @@ -5,9 +5,9 @@ modules: port: 9515 url: 'http://localhost:8000' capabilities: - chromeOptions: + goog:chromeOptions: prefs: download.default_directory: '%TRAVIS_BUILD_DIR%/codeception/_support/_downloads' MailCatcher: url: 'localhost' - port: 1080 \ No newline at end of file + port: 1080 diff --git a/codeception/acceptance.suite.yml b/codeception/acceptance.suite.yml index c176ad2c77a..544fad92cb4 100644 --- a/codeception/acceptance.suite.yml +++ b/codeception/acceptance.suite.yml @@ -58,7 +58,7 @@ env: WebDriver: browser: chrome capabilities: - chromeOptions: + goog:chromeOptions: prefs: download.default_directory: '%PWD%/codeception/_support/_downloads' chrome-headless: @@ -67,7 +67,7 @@ env: WebDriver: browser: chrome capabilities: - chromeOptions: + goog:chromeOptions: args: ["--headless", "--disable-gpu"] prefs: download.default_directory: '%PWD%/codeception/_support/_downloads' From 8b3687fc831d098d2386378c8fa514004f81060f Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 4 Dec 2023 11:58:37 +0900 Subject: [PATCH 010/113] =?UTF-8?q?=E4=BD=95=E6=95=85=E3=81=8B=E5=A4=89?= =?UTF-8?q?=E6=95=B0=E5=B1=95=E9=96=8B=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/coverage.yml | 4 +++- .github/workflows/dockerbuild.yml | 1 + .github/workflows/e2e-test-throttling.yml | 4 +++- .github/workflows/e2e-test.yml | 8 ++++++-- .github/workflows/plugin-test.yml | 16 ++++++++++++---- .github/workflows/vaddy-1.yml | 2 +- .github/workflows/vaddy-2.yml | 2 +- 7 files changed, 27 insertions(+), 10 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index ce5b14fc62f..b8d41dfbb27 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -187,7 +187,9 @@ jobs: GROUP: ${{ matrix.group }} SYMFONY_DEPRECATIONS_HELPER: weak continue-on-error: true - run: php -dpcov.enabled=1 vendor/bin/codecept -vvv run acceptance --env chrome,github_action -g ${GROUP} --skip-group excludeCoverage --coverage --coverage-xml + run: | + sed -i "s|%GITHUB_WORKSPACE%|${GITHUB_WORKSPACE}|g" codeception/_envs/github_action.yml + php -dpcov.enabled=1 vendor/bin/codecept -vvv run acceptance --env chrome,github_action -g ${GROUP} --skip-group excludeCoverage --coverage --coverage-xml - name: Upload outputs uses: actions/upload-artifact@v2 with: diff --git a/.github/workflows/dockerbuild.yml b/.github/workflows/dockerbuild.yml index 35d77bc75aa..daa33646fc9 100644 --- a/.github/workflows/dockerbuild.yml +++ b/.github/workflows/dockerbuild.yml @@ -114,6 +114,7 @@ jobs: SYMFONY_DEPRECATIONS_HELPER: weak run: | echo "APP_ENV=${APP_ENV}" > .env + sed -i "s|%GITHUB_WORKSPACE%|${GITHUB_WORKSPACE}|g" codeception/_envs/github_action_docker.yml vendor/bin/codecept -vvv run acceptance --env chrome,github_action_docker -g ${GROUP} ## see https://docs.github.com/ja/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions#publishing-a-package-using-an-action diff --git a/.github/workflows/e2e-test-throttling.yml b/.github/workflows/e2e-test-throttling.yml index 6135c1a7f0b..ebfb20f22f5 100644 --- a/.github/workflows/e2e-test-throttling.yml +++ b/.github/workflows/e2e-test-throttling.yml @@ -138,7 +138,9 @@ jobs: ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' METHOD: ${{ matrix.method }} SYMFONY_DEPRECATIONS_HELPER: weak - run: vendor/bin/codecept -vvv run acceptance --env chrome,github_action EF09ThrottlingCest::${METHOD} --html report.html + run: | + sed -i "s|%GITHUB_WORKSPACE%|${GITHUB_WORKSPACE}|g" codeception/_envs/github_action.yml + vendor/bin/codecept -vvv run acceptance --env chrome,github_action EF09ThrottlingCest::${METHOD} --html report.html - name: Upload evidence if: failure() diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index debab339d60..6d6e7a595a4 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -130,7 +130,9 @@ jobs: ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' GROUP: ${{ matrix.group }} SYMFONY_DEPRECATIONS_HELPER: weak - run: vendor/bin/codecept -vvv run acceptance --env chrome,github_action -g ${GROUP} --skip-group restrict-file-upload --html report.html + run: | + sed -i "s|%GITHUB_WORKSPACE%|${GITHUB_WORKSPACE}|g" codeception/_envs/github_action.yml + vendor/bin/codecept -vvv run acceptance --env chrome,github_action -g ${GROUP} --skip-group restrict-file-upload --html report.html - name: Codeception with Restrict file upload if: ${{ matrix.group == 'restrict-fileupload' }} @@ -143,7 +145,9 @@ jobs: GROUP: ${{ matrix.group }} SYMFONY_DEPRECATIONS_HELPER: weak ECCUBE_RESTRICT_FILE_UPLOAD: '1' - run: vendor/bin/codecept -vvv run acceptance --env chrome,github_action -g ${GROUP} --html report.html + run: | + sed -i "s|%GITHUB_WORKSPACE%|${GITHUB_WORKSPACE}|g" codeception/_envs/github_action.yml + vendor/bin/codecept -vvv run acceptance --env chrome,github_action -g ${GROUP} --html report.html - name: Upload evidence if: failure() diff --git a/.github/workflows/plugin-test.yml b/.github/workflows/plugin-test.yml index d3eab5366e8..084834ab1ae 100644 --- a/.github/workflows/plugin-test.yml +++ b/.github/workflows/plugin-test.yml @@ -137,7 +137,9 @@ jobs: METHOD: ${{ matrix.method }} ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' NO_FIXTURES: 1 - run: vendor/bin/codecept -vvv run acceptance --env chrome,github_action EA10PluginCest:${METHOD} + run: | + sed -i "s|%GITHUB_WORKSPACE%|${GITHUB_WORKSPACE}|g" codeception/_envs/github_action.yml + vendor/bin/codecept -vvv run acceptance --env chrome,github_action EA10PluginCest:${METHOD} - name: Upload evidence if: failure() uses: actions/upload-artifact@v2 @@ -284,7 +286,9 @@ jobs: METHOD: ${{ matrix.method }} ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' NO_FIXTURES: 1 - run: vendor/bin/codecept -vvv run acceptance --env chrome,github_action EA10PluginCest:${METHOD} + run: | + sed -i "s|%GITHUB_WORKSPACE%|${GITHUB_WORKSPACE}|g" codeception/_envs/github_action.yml + vendor/bin/codecept -vvv run acceptance --env chrome,github_action EA10PluginCest:${METHOD} - name: Upload evidence if: failure() uses: actions/upload-artifact@v2 @@ -431,7 +435,9 @@ jobs: METHOD: ${{ matrix.method }} ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' NO_FIXTURES: 1 - run: vendor/bin/codecept -vvv run acceptance --env chrome,github_action EA10PluginCest:${METHOD} + run: | + sed -i "s|%GITHUB_WORKSPACE%|${GITHUB_WORKSPACE}|g" codeception/_envs/github_action.yml + vendor/bin/codecept -vvv run acceptance --env chrome,github_action EA10PluginCest:${METHOD} - name: Upload evidence if: failure() uses: actions/upload-artifact@v2 @@ -581,7 +587,9 @@ jobs: METHOD: ${{ matrix.method }} ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' NO_FIXTURES: 1 - run: vendor/bin/codecept -vvv run acceptance --env chrome,github_action EA10PluginCest:${METHOD} + run: | + sed -i "s|%GITHUB_WORKSPACE%|${GITHUB_WORKSPACE}|g" codeception/_envs/github_action.yml + vendor/bin/codecept -vvv run acceptance --env chrome,github_action EA10PluginCest:${METHOD} - name: Upload evidence if: failure() uses: actions/upload-artifact@v2 diff --git a/.github/workflows/vaddy-1.yml b/.github/workflows/vaddy-1.yml index 8bbc3181a6e..7739459ef8e 100644 --- a/.github/workflows/vaddy-1.yml +++ b/.github/workflows/vaddy-1.yml @@ -148,7 +148,7 @@ jobs: chromeOptions: args: ["--headless", "--disable-gpu"] prefs: - download.default_directory: '%PWD%/codeception/_support/_downloads' + download.default_directory: '${GITHUB_WORKSPACE}/codeception/_support/_downloads' MailCatcher: url: 'mail' port: 1080" > codeception/_envs/local.yml diff --git a/.github/workflows/vaddy-2.yml b/.github/workflows/vaddy-2.yml index 6739a6d810e..8c2cb91c591 100644 --- a/.github/workflows/vaddy-2.yml +++ b/.github/workflows/vaddy-2.yml @@ -149,7 +149,7 @@ jobs: chromeOptions: args: ["--headless", "--disable-gpu"] prefs: - download.default_directory: '%PWD%/codeception/_support/_downloads' + download.default_directory: '${GITHUB_WORKSPACE}/codeception/_support/_downloads' MailCatcher: url: 'mail' port: 1080" > codeception/_envs/local.yml From 51fdff81adfe2201d4181165b7d8c8064f9435bc Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 4 Dec 2023 15:24:49 +0900 Subject: [PATCH 011/113] Fix PHPStan --- src/Eccube/Service/CsvImportService.php | 11 ++++++++++- .../SameSiteNoneCompatSessionHandler.php | 7 ++++++- tests/Fixtures/session/common.php | 17 +++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/Eccube/Service/CsvImportService.php b/src/Eccube/Service/CsvImportService.php index fee2a35af85..bc62d17fd70 100644 --- a/src/Eccube/Service/CsvImportService.php +++ b/src/Eccube/Service/CsvImportService.php @@ -132,8 +132,9 @@ public function __construct(\SplFileObject $file, $delimiter = ',', $enclosure = * * If a header row has been set, an associative array will be returned * - * @return array + * @return mixed */ + #[\ReturnTypeWillChange] public function current() { // If the CSV has no column headers just return the line @@ -217,7 +218,10 @@ public function setHeaderRowNumber($rowNumber, $duplicates = null) * If a header row has been set, the pointer is set just below the header * row. That way, when you iterate over the rows, that header row is * skipped. + * + * @return void */ + #[\ReturnTypeWillChange] public function rewind() { $this->file->rewind(); @@ -229,6 +233,7 @@ public function rewind() /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function count() { if (null === $this->count) { @@ -245,6 +250,7 @@ public function count() /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function next() { $this->file->next(); @@ -253,6 +259,7 @@ public function next() /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function valid() { return $this->file->valid(); @@ -261,6 +268,7 @@ public function valid() /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function key() { return $this->file->key(); @@ -269,6 +277,7 @@ public function key() /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function seek($pointer) { $this->file->seek($pointer); diff --git a/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php b/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php index 165b346f6df..7a86dbca831 100644 --- a/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php +++ b/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php @@ -46,6 +46,7 @@ public function __construct(\SessionHandlerInterface $handler) /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function open($savePath, $sessionName) { $this->sessionName = $sessionName; @@ -68,6 +69,7 @@ protected function doRead($sessionId) /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function updateTimestamp($sessionId, $data) { return $this->write($sessionId, $data); @@ -86,6 +88,7 @@ protected function doWrite($sessionId, $data) * * @see https://github.com/symfony/symfony/blob/2adc85d49cbe14e346068fa7e9c2e1f08ab31de6/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/AbstractSessionHandler.php#L126-L167 */ + #[\ReturnTypeWillChange] public function destroy($sessionId) { if (\PHP_VERSION_ID < 70000) { @@ -152,14 +155,16 @@ protected function doDestroy($sessionId) /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function close() { return $this->handler->close(); } /** - * @return bool + * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function gc($maxlifetime) { return $this->handler->gc($maxlifetime); diff --git a/tests/Fixtures/session/common.php b/tests/Fixtures/session/common.php index 87c0d38e84b..c25c66538da 100644 --- a/tests/Fixtures/session/common.php +++ b/tests/Fixtures/session/common.php @@ -97,6 +97,7 @@ class TestSessionHandler extends SameSiteNoneCompatSessionHandler { private $handler; private $data; + private $sessionId; public function __construct(SessionHandlerInterface $handler) { @@ -112,6 +113,10 @@ public function open($path, $name) return parent::open($path, $name); } + /** + * {@inheritdoc} + */ + #[\ReturnTypeWillChange] public function validateId($sessionId) { echo __FUNCTION__, "\n"; @@ -122,6 +127,7 @@ public function validateId($sessionId) /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function read($sessionId) { echo __FUNCTION__, "\n"; @@ -132,6 +138,7 @@ public function read($sessionId) /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function updateTimestamp($sessionId, $data) { echo __FUNCTION__, "\n"; @@ -142,6 +149,7 @@ public function updateTimestamp($sessionId, $data) /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function write($sessionId, $data) { echo __FUNCTION__, "\n"; @@ -152,6 +160,7 @@ public function write($sessionId, $data) /** * {@inheritdoc} */ + #[\ReturnTypeWillChange] public function destroy($sessionId) { echo __FUNCTION__, "\n"; @@ -159,6 +168,10 @@ public function destroy($sessionId) return parent::destroy($sessionId); } + /** + * {@inheritdoc} + */ + #[\ReturnTypeWillChange] public function close() { echo __FUNCTION__, "\n"; @@ -166,6 +179,10 @@ public function close() return true; } + /** + * {@inheritdoc} + */ + #[\ReturnTypeWillChange] public function gc($maxLifetime) { echo __FUNCTION__, "\n"; From abaef3cc42e9bde2db5aa7bddca77544eb5ea762 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 4 Dec 2023 16:04:31 +0900 Subject: [PATCH 012/113] =?UTF-8?q?php8.1=E3=81=AE=E3=82=A4=E3=83=A1?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ded4d2dc42b..fd92572f6f8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG TAG=7.4-apache-bullseye +ARG TAG=8.1-apache-bullseye FROM php:${TAG} ENV APACHE_DOCUMENT_ROOT /var/www/html From f547034d762db9d4f1b135b59c925636adb8e439 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 08:14:52 +0900 Subject: [PATCH 013/113] symfony5 -> symfony6 --- composer.json | 96 +- composer.lock | 4035 ++++++++++++++++++++++++------------------------- 2 files changed, 2036 insertions(+), 2095 deletions(-) diff --git a/composer.json b/composer.json index 797a6ba0a29..d123cd7fa85 100644 --- a/composer.json +++ b/composer.json @@ -32,20 +32,19 @@ "doctrine/doctrine-migrations-bundle": "^3.1", "doctrine/inflector": "^2.0", "doctrine/instantiator": "^1.1", - "doctrine/lexer": "^1.0", + "doctrine/lexer": "^2.0", "doctrine/orm": "^2.11", - "doctrine/persistence": "^2.5", - "easycorp/easy-log-handler": "^1.0", + "doctrine/persistence": "^3.1", "ec-cube/plugin-installer": "^2.0", - "egulias/email-validator": "^2.1", - "exercise/htmlpurifier-bundle": "^3.1", + "egulias/email-validator": "^4.0", + "exercise/htmlpurifier-bundle": "^4.1", "friendsofphp/php-cs-fixer": "^3.8", "guzzlehttp/guzzle": "^7.4.5", "knplabs/knp-paginator-bundle": "^5.8", "mobiledetect/mobiledetectlib": "^2.8", "monolog/monolog": "^2.5", "nesbot/carbon": "^2", - "psr/cache": "^1.0", + "psr/cache": "^3.0", "psr/container": "^1.0", "psr/http-message": "^1.0", "psr/log": "^1.0", @@ -55,50 +54,49 @@ "setasign/fpdi": "^2.2", "skorp/detect-incompatible-samesite-useragents": "^1.0", "softcreatr/jsonpath": "^0.8", - "symfony/asset": "^5.4", - "symfony/cache": "^5.4", - "symfony/config": "^5.4", - "symfony/console": "^5.4", - "symfony/css-selector": "^5.4", - "symfony/debug-bundle": "^5.4", - "symfony/dependency-injection": "^5.4", - "symfony/doctrine-bridge": "^5.4", - "symfony/dom-crawler": "^5.4", - "symfony/dotenv": "^5.4", - "symfony/event-dispatcher": "^5.4", - "symfony/expression-language": "^5.4", - "symfony/filesystem": "^5.4", - "symfony/finder": "^5.4", + "symfony/asset": "^6.4", + "symfony/cache": "^6.4", + "symfony/config": "^6.4", + "symfony/console": "^6.4", + "symfony/css-selector": "^6.4", + "symfony/debug-bundle": "^6.4", + "symfony/dependency-injection": "^6.4", + "symfony/doctrine-bridge": "^6.4", + "symfony/dom-crawler": "^6.4", + "symfony/dotenv": "^6.4", + "symfony/event-dispatcher": "^6.4", + "symfony/expression-language": "^6.4", + "symfony/filesystem": "^6.4", + "symfony/finder": "^6.4", "symfony/flex": "^1.0", - "symfony/form": "^5.4", - "symfony/framework-bundle": "^5.4", - "symfony/http-foundation": "^5.4", - "symfony/http-kernel": "^5.4", - "symfony/inflector": "^5.4", - "symfony/intl": "^5.4", - "symfony/mailer": "^5.4", + "symfony/form": "^6.4", + "symfony/framework-bundle": "^6.4", + "symfony/http-foundation": "^6.4", + "symfony/http-kernel": "^6.4", + "symfony/intl": "^6.4", + "symfony/mailer": "^6.4", "symfony/maker-bundle": "^1.0", - "symfony/monolog-bridge": "^5.4", + "symfony/monolog-bridge": "^6.4", "symfony/monolog-bundle": "^3.1", - "symfony/options-resolver": "^5.4", - "symfony/password-hasher": "^5.4", - "symfony/process": "^5.4", - "symfony/property-access": "^5.4", - "symfony/proxy-manager-bridge": "^5.4", - "symfony/rate-limiter": "^5.4", - "symfony/routing": "^5.4", - "symfony/security-bundle": "^5.4", - "symfony/serializer": "^5.4", - "symfony/stopwatch": "^5.4", - "symfony/templating": "^5.4", - "symfony/translation": "^5.4", - "symfony/twig-bridge": "^5.4", - "symfony/twig-bundle": "^5.4", - "symfony/validator": "^5.4", - "symfony/var-dumper": "^5.4", - "symfony/web-profiler-bundle": "^5.4", - "symfony/workflow": "^5.4", - "symfony/yaml": "^5.4", + "symfony/options-resolver": "^6.4", + "symfony/password-hasher": "^6.4", + "symfony/process": "^6.4", + "symfony/property-access": "^6.4", + "symfony/proxy-manager-bridge": "^6.4", + "symfony/rate-limiter": "^6.4", + "symfony/routing": "^6.4", + "symfony/security-bundle": "^6.4", + "symfony/serializer": "^6.4", + "symfony/stopwatch": "^6.4", + "symfony/templating": "^6.4", + "symfony/translation": "^6.4", + "symfony/twig-bridge": "^6.4", + "symfony/twig-bundle": "^6.4", + "symfony/validator": "^6.4", + "symfony/var-dumper": "^6.4", + "symfony/web-profiler-bundle": "^6.4", + "symfony/workflow": "^6.4", + "symfony/yaml": "^6.4", "tecnickcom/tcpdf": "^6.2", "twig/extra-bundle": "^3.3", "twig/intl-extra": "^3.3", @@ -116,8 +114,8 @@ "fakerphp/faker": "^1.16", "mikey179/vfsstream": "^1.6", "phpstan/phpstan": "^1.7", - "symfony/browser-kit": "^5.4", - "symfony/phpunit-bridge": "^5.4" + "symfony/browser-kit": "^6.4", + "symfony/phpunit-bridge": "^6.4" }, "autoload": { "files": [ diff --git a/composer.lock b/composer.lock index 14853da575a..b7cf46051d5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,77 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5faab0c260902a51ea15d89898e35fc1", + "content-hash": "da9538a678f68939821d7d3000535745", "packages": [ + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "67a77972b9f398ae7068dabacc39c08aeee170d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/67a77972b9f398ae7068dabacc39c08aeee170d5", + "reference": "67a77972b9f398ae7068dabacc39c08aeee170d5", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-10-01T14:29:01+00:00" + }, { "name": "composer/ca-bundle", "version": "1.3.7", @@ -157,16 +226,16 @@ }, { "name": "composer/composer", - "version": "2.6.4", + "version": "2.6.5", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "d75d17c16a863438027d1d96401cddcd6aa5bb60" + "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/d75d17c16a863438027d1d96401cddcd6aa5bb60", - "reference": "d75d17c16a863438027d1d96401cddcd6aa5bb60", + "url": "https://api.github.com/repos/composer/composer/zipball/4b0fe89db9e65b1e64df633a992e70a7a215ab33", + "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33", "shasum": "" }, "require": { @@ -251,7 +320,7 @@ "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", "security": "https://github.com/composer/composer/security/policy", - "source": "https://github.com/composer/composer/tree/2.6.4" + "source": "https://github.com/composer/composer/tree/2.6.5" }, "funding": [ { @@ -267,7 +336,7 @@ "type": "tidelift" } ], - "time": "2023-09-29T08:54:47+00:00" + "time": "2023-10-06T08:11:52+00:00" }, { "name": "composer/metadata-minifier", @@ -340,16 +409,16 @@ }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -391,7 +460,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -407,7 +476,7 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", @@ -492,16 +561,16 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.7", + "version": "1.5.8", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "c848241796da2abf65837d51dce1fae55a960149" + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", - "reference": "c848241796da2abf65837d51dce1fae55a960149", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", "shasum": "" }, "require": { @@ -550,9 +619,9 @@ "validator" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" + "source": "https://github.com/composer/spdx-licenses/tree/1.5.8" }, "funding": [ { @@ -568,7 +637,7 @@ "type": "tidelift" } ], - "time": "2022-05-23T07:37:50+00:00" + "time": "2023-11-20T07:44:33+00:00" }, { "name": "composer/xdebug-handler", @@ -638,16 +707,16 @@ }, { "name": "doctrine/annotations", - "version": "1.14.2", + "version": "1.14.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b" + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/ad785217c1e9555a7d6c6c8c9f406395a5e2882b", - "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "shasum": "" }, "require": { @@ -708,9 +777,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.14.2" + "source": "https://github.com/doctrine/annotations/tree/1.14.3" }, - "time": "2022-12-15T06:48:22+00:00" + "time": "2023-02-01T09:20:38+00:00" }, { "name": "doctrine/cache", @@ -968,38 +1037,40 @@ }, { "name": "doctrine/data-fixtures", - "version": "1.6.3", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "c27821d038e64f1bfc852a94064d65d2a75ad01f" + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/c27821d038e64f1bfc852a94064d65d2a75ad01f", - "reference": "c27821d038e64f1bfc852a94064d65d2a75ad01f", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", "shasum": "" }, "require": { - "doctrine/persistence": "^1.3.3|^2.0|^3.0", - "php": "^7.2 || ^8.0" + "doctrine/deprecations": "^0.5.3 || ^1.0", + "doctrine/persistence": "^2.0|^3.0", + "php": "^7.4 || ^8.0" }, "conflict": { - "doctrine/dbal": "<2.13", - "doctrine/orm": "<2.12", + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^10.0", - "doctrine/dbal": "^2.13 || ^3.0", - "doctrine/deprecations": "^1.0", + "doctrine/annotations": "^1.12 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/dbal": "^3.5 || ^4", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", - "doctrine/orm": "^2.12", + "doctrine/orm": "^2.14 || ^3", "ext-sqlite3": "*", - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^8.5 || ^9.5", - "symfony/cache": "^5.0 || ^6.0", - "vimeo/psalm": "^4.10" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6.13 || ^10.4.2", + "symfony/cache": "^5.4 || ^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6.3 || ^7", + "vimeo/psalm": "^5.9" }, "suggest": { "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", @@ -1010,7 +1081,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" + "Doctrine\\Common\\DataFixtures\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1030,7 +1101,7 @@ ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.6.3" + "source": "https://github.com/doctrine/data-fixtures/tree/1.7.0" }, "funding": [ { @@ -1046,20 +1117,20 @@ "type": "tidelift" } ], - "time": "2023-01-07T15:10:22+00:00" + "time": "2023-11-24T11:18:31+00:00" }, { "name": "doctrine/dbal", - "version": "3.5.2", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "63e513cebbbaf96a6795e5c5ee34d205831bfc85" + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/63e513cebbbaf96a6795e5c5ee34d205831bfc85", - "reference": "63e513cebbbaf96a6795e5c5ee34d205831bfc85", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", "shasum": "" }, "require": { @@ -1072,13 +1143,15 @@ "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "11.0.0", - "jetbrains/phpstorm-stubs": "2022.3", - "phpstan/phpstan": "1.9.2", - "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "9.5.27", + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.42", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "9.6.13", "psalm/plugin-phpunit": "0.18.4", - "squizlabs/php_codesniffer": "3.7.1", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^5.4|^6.0", "symfony/console": "^4.4|^5.4|^6.0", "vimeo/psalm": "4.30.0" @@ -1141,7 +1214,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.5.2" + "source": "https://github.com/doctrine/dbal/tree/3.7.2" }, "funding": [ { @@ -1157,7 +1230,7 @@ "type": "tidelift" } ], - "time": "2022-12-19T08:17:34+00:00" + "time": "2023-11-19T08:06:58+00:00" }, { "name": "doctrine/deprecations", @@ -1208,55 +1281,59 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.8.2", + "version": "2.11.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "251cd5aaea32bb92cdad4204840786b317dcdd4c" + "reference": "4089f1424b724786c062aea50aae5f773449b94b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/251cd5aaea32bb92cdad4204840786b317dcdd4c", - "reference": "251cd5aaea32bb92cdad4204840786b317dcdd4c", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4089f1424b724786c062aea50aae5f773449b94b", + "reference": "4089f1424b724786c062aea50aae5f773449b94b", "shasum": "" }, "require": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^3.4.0", + "doctrine/dbal": "^3.7.0 || ^4.0", "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", "php": "^7.4 || ^8.0", - "symfony/cache": "^5.4 || ^6.0", - "symfony/config": "^5.4 || ^6.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/dependency-injection": "^5.4 || ^6.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^5.4.7 || ^6.0.7", - "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { "doctrine/annotations": ">=3.0", - "doctrine/orm": "<2.11 || >=3.0", - "twig/twig": "<1.34 || >=2.0,<2.4" + "doctrine/orm": "<2.14 || >=4.0", + "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { "doctrine/annotations": "^1 || ^2", - "doctrine/coding-standard": "^9.0", - "doctrine/orm": "^2.11 || ^3.0", + "doctrine/coding-standard": "^12", + "doctrine/deprecations": "^1.0", + "doctrine/orm": "^2.14 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", "phpunit/phpunit": "^9.5.26 || ^10.0", "psalm/plugin-phpunit": "^0.18.4", "psalm/plugin-symfony": "^4", "psr/log": "^1.1.4 || ^2.0 || ^3.0", - "symfony/phpunit-bridge": "^6.1", - "symfony/property-info": "^5.4 || ^6.0", - "symfony/proxy-manager-bridge": "^5.4 || ^6.0", - "symfony/security-bundle": "^5.4 || ^6.0", - "symfony/twig-bridge": "^5.4 || ^6.0", - "symfony/validator": "^5.4 || ^6.0", - "symfony/web-profiler-bundle": "^5.4 || ^6.0", - "symfony/yaml": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.1 || ^7.0", + "symfony/property-info": "^5.4 || ^6.0 || ^7.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/string": "^5.4 || ^6.0 || ^7.0", + "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", + "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "twig/twig": "^1.34 || ^2.12 || ^3.0", "vimeo/psalm": "^4.30" }, @@ -1303,7 +1380,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.8.2" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.1" }, "funding": [ { @@ -1319,40 +1396,44 @@ "type": "tidelift" } ], - "time": "2023-01-06T11:42:10+00:00" + "time": "2023-11-15T20:01:50+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.4.2", + "version": "3.5.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "601988c5b46dbd20a0f886f967210aba378a6fd5" + "reference": "c808a0c85c38c8ee265cc8405b456c1d2b38567d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/601988c5b46dbd20a0f886f967210aba378a6fd5", - "reference": "601988c5b46dbd20a0f886f967210aba378a6fd5", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/c808a0c85c38c8ee265cc8405b456c1d2b38567d", + "reference": "c808a0c85c38c8ee265cc8405b456c1d2b38567d", "shasum": "" }, "require": { "doctrine/data-fixtures": "^1.3", - "doctrine/doctrine-bundle": "^1.11|^2.0", - "doctrine/orm": "^2.6.0", - "doctrine/persistence": "^1.3.7|^2.0|^3.0", - "php": "^7.1 || ^8.0", - "symfony/config": "^3.4|^4.3|^5.0|^6.0", - "symfony/console": "^3.4|^4.3|^5.0|^6.0", - "symfony/dependency-injection": "^3.4.47|^4.3|^5.0|^6.0", - "symfony/doctrine-bridge": "^3.4|^4.1|^5.0|^6.0", - "symfony/http-kernel": "^3.4|^4.3|^5.0|^6.0" + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.14.0 || ^3.0", + "doctrine/persistence": "^2.4|^3.0", + "php": "^7.4 || ^8.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/doctrine-bridge": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0" + }, + "conflict": { + "doctrine/dbal": "< 3" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "^1.4.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "symfony/phpunit-bridge": "^6.0.8", - "vimeo/psalm": "^4.22" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10.39", + "phpunit/phpunit": "^9.6.13", + "symfony/phpunit-bridge": "^6.3.6", + "vimeo/psalm": "^5.15" }, "type": "symfony-bundle", "autoload": { @@ -1386,7 +1467,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.2" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.5.1" }, "funding": [ { @@ -1402,38 +1483,44 @@ "type": "tidelift" } ], - "time": "2022-04-28T17:58:29+00:00" + "time": "2023-11-19T12:48:54+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.2.2", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "3393f411ba25ade21969c33f2053220044854d01" + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/3393f411ba25ade21969c33f2053220044854d01", - "reference": "3393f411ba25ade21969c33f2053220044854d01", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1dd42906a5fb9c5960723e2ebb45c68006493835", + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "~1.0|~2.0", + "doctrine/doctrine-bundle": "^2.4", "doctrine/migrations": "^3.2", "php": "^7.2|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0" + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3||^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^8.0|^9.0", - "vimeo/psalm": "^4.11" + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.6 || ^3", + "doctrine/persistence": "^2.0 || ^3 ", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^8.5|^9.5", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^3 || ^5", + "symfony/phpunit-bridge": "^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6 || ^7", + "vimeo/psalm": "^4.30 || ^5.15" }, "type": "symfony-bundle", "autoload": { @@ -1471,7 +1558,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.2" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.0" }, "funding": [ { @@ -1487,34 +1574,33 @@ "type": "tidelift" } ], - "time": "2022-02-01T18:08:07+00:00" + "time": "2023-11-13T19:44:41+00:00" }, { "name": "doctrine/event-manager", - "version": "1.2.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", - "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3 || ^1", - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "conflict": { "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "~1.4.10 || ^1.8.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.24" + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.28" }, "type": "library", "autoload": { @@ -1563,7 +1649,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.2.0" + "source": "https://github.com/doctrine/event-manager/tree/2.0.0" }, "funding": [ { @@ -1579,32 +1665,32 @@ "type": "tidelift" } ], - "time": "2022-10-12T20:51:15+00:00" + "time": "2022-10-12T20:59:15+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.6", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024" + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^10", + "doctrine/coding-standard": "^11.0", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.3", "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25" + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { @@ -1654,7 +1740,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.6" + "source": "https://github.com/doctrine/inflector/tree/2.0.8" }, "funding": [ { @@ -1670,7 +1756,7 @@ "type": "tidelift" } ], - "time": "2022-10-20T09:10:12+00:00" + "time": "2023-06-16T13:40:37+00:00" }, { "name": "doctrine/instantiator", @@ -1744,31 +1830,33 @@ }, { "name": "doctrine/lexer", - "version": "1.2.3", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^9 || ^10", "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1800,7 +1888,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" + "source": "https://github.com/doctrine/lexer/tree/2.1.0" }, "funding": [ { @@ -1816,52 +1904,51 @@ "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2022-12-14T08:49:07+00:00" }, { "name": "doctrine/migrations", - "version": "3.5.2", + "version": "3.7.1", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "61c6ef3a10b7df43c3b6388a184754f26e58700a" + "reference": "e4e0855ea993d169c8adb50e19b014e64bbdda46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/61c6ef3a10b7df43c3b6388a184754f26e58700a", - "reference": "61c6ef3a10b7df43c3b6388a184754f26e58700a", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/e4e0855ea993d169c8adb50e19b014e64bbdda46", + "reference": "e4e0855ea993d169c8adb50e19b014e64bbdda46", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/dbal": "^3.3", + "doctrine/dbal": "^3.5.1 || ^4", "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1.0", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.4 || ^8.0", + "doctrine/event-manager": "^1.2 || ^2.0", + "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^4.4.16 || ^5.4 || ^6.0", - "symfony/stopwatch": "^4.4 || ^5.4 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.2 || ^7.0" }, "conflict": { - "doctrine/orm": "<2.12" + "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/orm": "^2.12", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.13 || ^3", "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", - "ergebnis/composer-normalize": "^2.9", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpstan/phpstan-symfony": "^1.1", - "phpunit/phpunit": "^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/process": "^4.4 || ^5.4 || ^6.0", - "symfony/yaml": "^4.4 || ^5.4 || ^6.0" + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-strict-rules": "^1.4", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^10.3", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -1871,12 +1958,6 @@ "bin/doctrine-migrations" ], "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 4, - "indent-style": "space" - } - }, "autoload": { "psr-4": { "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" @@ -1909,7 +1990,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.5.2" + "source": "https://github.com/doctrine/migrations/tree/3.7.1" }, "funding": [ { @@ -1925,38 +2006,38 @@ "type": "tidelift" } ], - "time": "2022-08-04T14:29:49+00:00" + "time": "2023-11-19T06:55:22+00:00" }, { "name": "doctrine/orm", - "version": "2.14.0", + "version": "2.17.1", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "f82485e651763fbd1b34879726f4d3b91c358bd9" + "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/f82485e651763fbd1b34879726f4d3b91c358bd9", - "reference": "f82485e651763fbd1b34879726f4d3b91c358bd9", + "url": "https://api.github.com/repos/doctrine/orm/zipball/1a4fe6e0bb67762370937a7e6cee3da40a9122d1", + "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5 || ^2.0", + "doctrine/collections": "^1.5 || ^2.1", "doctrine/common": "^3.0.3", "doctrine/dbal": "^2.13.1 || ^3.2", "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", - "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.2.3 || ^2", + "doctrine/instantiator": "^1.3 || ^2", + "doctrine/lexer": "^2", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^4.2 || ^5.0 || ^6.0", + "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0", "symfony/polyfill-php72": "^1.23", "symfony/polyfill-php80": "^1.16" }, @@ -1965,16 +2046,16 @@ }, "require-dev": { "doctrine/annotations": "^1.13 || ^2", - "doctrine/coding-standard": "^9.0.2 || ^11.0", + "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.9.4", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpstan/phpstan": "~1.4.10 || 1.10.35", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.7.1", + "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.3.0" + "vimeo/psalm": "4.30.0 || 5.15.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -2024,50 +2105,46 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.14.0" + "source": "https://github.com/doctrine/orm/tree/2.17.1" }, - "time": "2022-12-19T21:51:58+00:00" + "time": "2023-11-17T06:25:40+00:00" }, { "name": "doctrine/persistence", - "version": "2.5.6", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "7729fc2a7e5efc8bbfa408a3b8adeb8f5b84f5d1" + "reference": "63fee8c33bef740db6730eb2a750cd3da6495603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/7729fc2a7e5efc8bbfa408a3b8adeb8f5b84f5d1", - "reference": "7729fc2a7e5efc8bbfa408a3b8adeb8f5b84f5d1", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/63fee8c33bef740db6730eb2a750cd3da6495603", + "reference": "63fee8c33bef740db6730eb2a750cd3da6495603", "shasum": "" }, "require": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/collections": "^1.0", - "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1 || ^2", - "php": "^7.1 || ^8.0", + "php": "^7.2 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/annotations": "<1.0 || >=3.0", "doctrine/common": "<2.10" }, "require-dev": { "composer/package-versions-deprecated": "^1.11", - "doctrine/annotations": "^1 || ^2", - "doctrine/coding-standard": "^9 || ^11", + "doctrine/coding-standard": "^11", "doctrine/common": "^3.0", - "phpstan/phpstan": "~1.4.10 || 1.9.4", - "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.5", + "phpstan/phpstan": "1.9.4", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0", "vimeo/psalm": "4.30.0 || 5.3.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "src/Common", "Doctrine\\Persistence\\": "src/Persistence" } }, @@ -2102,7 +2179,7 @@ } ], "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://doctrine-project.org/projects/persistence.html", + "homepage": "https://www.doctrine-project.org/projects/persistence.html", "keywords": [ "mapper", "object", @@ -2112,7 +2189,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/2.5.6" + "source": "https://github.com/doctrine/persistence/tree/3.2.0" }, "funding": [ { @@ -2128,7 +2205,7 @@ "type": "tidelift" } ], - "time": "2023-01-01T18:11:10+00:00" + "time": "2023-05-17T18:32:04+00:00" }, { "name": "doctrine/sql-formatter", @@ -2182,61 +2259,6 @@ }, "time": "2022-05-23T21:33:49+00:00" }, - { - "name": "easycorp/easy-log-handler", - "version": "v1.0.9", - "source": { - "type": "git", - "url": "https://github.com/EasyCorp/easy-log-handler.git", - "reference": "224e1dfcf9455aceee89cd0af306ac097167fac1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/EasyCorp/easy-log-handler/zipball/224e1dfcf9455aceee89cd0af306ac097167fac1", - "reference": "224e1dfcf9455aceee89cd0af306ac097167fac1", - "shasum": "" - }, - "require": { - "monolog/monolog": "~1.6|~2.0", - "php": ">=7.1", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "EasyCorp\\EasyLog\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Javier Eguiluz", - "email": "javiereguiluz@gmail.com" - }, - { - "name": "Project Contributors", - "homepage": "https://github.com/EasyCorp/easy-log-handler" - } - ], - "description": "A handler for Monolog that optimizes log messages to be processed by humans instead of software. Improve your productivity with logs that are easy to understand.", - "homepage": "https://github.com/EasyCorp/easy-log-handler", - "keywords": [ - "easy", - "log", - "logging", - "monolog", - "productivity" - ], - "support": { - "issues": "https://github.com/EasyCorp/easy-log-handler/issues", - "source": "https://github.com/EasyCorp/easy-log-handler/tree/master" - }, - "abandoned": true, - "time": "2019-10-24T07:13:31+00:00" - }, { "name": "ec-cube/plugin-installer", "version": "2.0.1", @@ -2275,27 +2297,26 @@ }, { "name": "egulias/email-validator", - "version": "2.1.25", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -2303,7 +2324,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -2331,7 +2352,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -2339,39 +2360,39 @@ "type": "github" } ], - "time": "2020-12-29T14:50:06+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "exercise/htmlpurifier-bundle", - "version": "v3.1.0", + "version": "4.1.2", "source": { "type": "git", "url": "https://github.com/Exercise/HTMLPurifierBundle.git", - "reference": "32f4709006e810efd8a72466a8e9d0672df4bc24" + "reference": "526c98e5b6ca712874d6422b98f32233b81f4c19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Exercise/HTMLPurifierBundle/zipball/32f4709006e810efd8a72466a8e9d0672df4bc24", - "reference": "32f4709006e810efd8a72466a8e9d0672df4bc24", + "url": "https://api.github.com/repos/Exercise/HTMLPurifierBundle/zipball/526c98e5b6ca712874d6422b98f32233b81f4c19", + "reference": "526c98e5b6ca712874d6422b98f32233b81f4c19", "shasum": "" }, "require": { - "ezyang/htmlpurifier": "~4.0", + "ezyang/htmlpurifier": "~4.14", "php": "^7.1.3 || ^8.0.0", - "symfony/config": "~3.4 || ~4.0 || ^5.0", - "symfony/dependency-injection": "~3.4.1 || ^4.0.1 || ^5.0", - "symfony/http-kernel": "~3.4.1 || ^4.0.1 || ^5.0" + "symfony/config": "~4.4 || ^5.0 || ^6.0", + "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "symfony/form": "~3.4.1 || ^4.0.1 || ^5.0", - "symfony/phpunit-bridge": "4.4.*", + "friendsofphp/php-cs-fixer": "^3.0", + "symfony/form": "^4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^6.0", "twig/twig": "^1.35.0 || ^2.4.4 || ^3.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.x-dev" } }, "autoload": { @@ -2399,26 +2420,26 @@ ], "support": { "issues": "https://github.com/Exercise/HTMLPurifierBundle/issues", - "source": "https://github.com/Exercise/HTMLPurifierBundle/tree/v3.1.0" + "source": "https://github.com/Exercise/HTMLPurifierBundle/tree/4.1.2" }, - "time": "2020-12-28T19:57:39+00:00" + "time": "2023-07-05T07:14:30+00:00" }, { "name": "ezyang/htmlpurifier", - "version": "v4.16.0", + "version": "v4.17.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -2460,58 +2481,56 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" }, - "time": "2022-09-18T07:06:19+00:00" + "time": "2023-11-17T15:01:25+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.13.2", + "version": "v3.40.2", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "3952f08a81bd3b1b15e11c3de0b6bf037faa8496" + "reference": "4344562a516b76afe8f2d64b2e52214c30d64ed8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/3952f08a81bd3b1b15e11c3de0b6bf037faa8496", - "reference": "3952f08a81bd3b1b15e11c3de0b6bf037faa8496", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4344562a516b76afe8f2d64b2e52214c30d64ed8", + "reference": "4344562a516b76afe8f2d64b2e52214c30d64ed8", "shasum": "" }, "require": { - "composer/semver": "^3.2", + "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^1.13", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php80": "^1.25", - "symfony/polyfill-php81": "^1.25", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" - }, - "require-dev": { + "sebastian/diff": "^4.0 || ^5.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", - "mikey179/vfsstream": "^1.6.10", - "php-coveralls/php-coveralls": "^2.5.2", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.15", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpspec/prophecy": "^1.17", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.6", - "phpunitgoodpractices/traits": "^1.9.2", - "symfony/phpunit-bridge": "^6.0", - "symfony/yaml": "^5.4 || ^6.0" + "phpunit/phpunit": "^9.6", + "symfony/phpunit-bridge": "^6.3.8 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -2541,9 +2560,15 @@ } ], "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.13.2" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.40.2" }, "funding": [ { @@ -2551,26 +2576,26 @@ "type": "github" } ], - "time": "2023-01-02T23:53:50+00:00" + "time": "2023-12-03T09:21:33+00:00" }, { "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.13", + "version": "v1.0.16", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "88354616f4cf4f6620910fd035e282173ba453e8" + "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/88354616f4cf4f6620910fd035e282173ba453e8", - "reference": "88354616f4cf4f6620910fd035e282173ba453e8", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/ecadbdc9052e4ad08c60c8a02268712e50427f7c", + "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c", "shasum": "" }, "require": { "laminas/laminas-code": "~3.4.1|^4.0", "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0" + "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0" }, "conflict": { "laminas/laminas-stdlib": "<3.2.1", @@ -2581,7 +2606,7 @@ }, "require-dev": { "ext-phar": "*", - "symfony/phpunit-bridge": "^5.4|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" }, "type": "library", "extra": { @@ -2621,7 +2646,7 @@ ], "support": { "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.13" + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.16" }, "funding": [ { @@ -2633,28 +2658,28 @@ "type": "tidelift" } ], - "time": "2022-10-17T19:48:16+00:00" + "time": "2023-05-24T07:17:17+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.0", + "version": "v1.1.2", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", - "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9" + "phpoption/phpoption": "^1.9.2" }, "require-dev": { - "phpunit/phpunit": "^8.5.28 || ^9.5.21" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "autoload": { @@ -2683,7 +2708,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" }, "funding": [ { @@ -2695,26 +2720,26 @@ "type": "tidelift" } ], - "time": "2022-07-30T15:56:11+00:00" + "time": "2023-11-12T22:16:48+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.5.0", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -2723,10 +2748,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -2739,9 +2765,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "7.5-dev" } }, "autoload": { @@ -2807,7 +2830,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.5.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -2823,38 +2846,37 @@ "type": "tidelift" } ], - "time": "2022-08-28T15:39:27+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -2891,7 +2913,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { @@ -2907,26 +2929,26 @@ "type": "tidelift" } ], - "time": "2022-08-28T14:55:35+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.4.5", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/0454e12ef0cd597ccd2adb036f7bda4e7fface66", - "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0" }, "provide": { @@ -2934,9 +2956,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -3007,7 +3029,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.5" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -3023,7 +3045,7 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:00:45+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "justinrainbow/json-schema", @@ -3256,29 +3278,29 @@ }, { "name": "laminas/laminas-code", - "version": "4.7.1", + "version": "4.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "91aabc066d5620428120800c0eafc0411e441a62" + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/91aabc066d5620428120800c0eafc0411e441a62", - "reference": "91aabc066d5620428120800c0eafc0411e441a62", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf", + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf", "shasum": "" }, "require": { - "php": ">=7.4, <8.2" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "doctrine/annotations": "^1.13.2", + "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.3.0", - "laminas/laminas-stdlib": "^3.6.1", - "phpunit/phpunit": "^9.5.10", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.13.1" + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-stdlib": "^3.17.0", + "phpunit/phpunit": "^10.3.3", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", @@ -3286,9 +3308,6 @@ }, "type": "library", "autoload": { - "files": [ - "polyfill/ReflectionEnumPolyfill.php" - ], "psr-4": { "Laminas\\Code\\": "src/" } @@ -3318,27 +3337,94 @@ "type": "community_bridge" } ], - "time": "2022-11-21T01:32:31+00:00" + "time": "2023-10-18T10:00:55+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.8.1", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" + }, + "time": "2023-05-10T11:58:31+00:00" }, { "name": "mobiledetect/mobiledetectlib", - "version": "2.8.41", + "version": "2.8.45", "source": { "type": "git", "url": "https://github.com/serbanghita/Mobile-Detect.git", - "reference": "fc9cccd4d3706d5a7537b562b59cc18f9e4c0cb1" + "reference": "96aaebcf4f50d3d2692ab81d2c5132e425bca266" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/fc9cccd4d3706d5a7537b562b59cc18f9e4c0cb1", - "reference": "fc9cccd4d3706d5a7537b562b59cc18f9e4c0cb1", + "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/96aaebcf4f50d3d2692ab81d2c5132e425bca266", + "reference": "96aaebcf4f50d3d2692ab81d2c5132e425bca266", "shasum": "" }, "require": { "php": ">=5.0.0" }, "require-dev": { - "phpunit/phpunit": "~4.8.35||~5.7" + "phpunit/phpunit": "~4.8.36" }, "type": "library", "autoload": { @@ -3372,22 +3458,28 @@ ], "support": { "issues": "https://github.com/serbanghita/Mobile-Detect/issues", - "source": "https://github.com/serbanghita/Mobile-Detect/tree/2.8.41" + "source": "https://github.com/serbanghita/Mobile-Detect/tree/2.8.45" }, - "time": "2022-11-08T18:31:26+00:00" + "funding": [ + { + "url": "https://github.com/serbanghita", + "type": "github" + } + ], + "time": "2023-11-07T21:57:25+00:00" }, { "name": "monolog/monolog", - "version": "2.8.0", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", "shasum": "" }, "require": { @@ -3402,7 +3494,7 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", "guzzlehttp/guzzle": "^7.4", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", @@ -3464,7 +3556,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.8.0" + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" }, "funding": [ { @@ -3476,32 +3568,37 @@ "type": "tidelift" } ], - "time": "2022-07-24T11:55:47+00:00" + "time": "2023-10-27T15:25:26+00:00" }, { "name": "nesbot/carbon", - "version": "2.65.0", + "version": "2.72.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "09acf64155c16dc6f580f36569ae89344e9734a3" + "reference": "a6885fcbad2ec4360b0e200ee0da7d9b7c90786b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/09acf64155c16dc6f580f36569ae89344e9734a3", - "reference": "09acf64155c16dc6f580f36569ae89344e9734a3", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/a6885fcbad2ec4360b0e200ee0da7d9b7c90786b", + "reference": "a6885fcbad2ec4360b0e200ee0da7d9b7c90786b", "shasum": "" }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, + "provide": { + "psr/clock-implementation": "1.0" + }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", "ondrejmirtes/better-reflection": "*", @@ -3578,7 +3675,7 @@ "type": "tidelift" } ], - "time": "2023-01-06T15:55:01+00:00" + "time": "2023-11-28T10:13:25+00:00" }, { "name": "nikic/php-parser", @@ -3638,24 +3735,24 @@ }, { "name": "phpoption/phpoption", - "version": "1.9.0", + "version": "1.9.2", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab" + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", - "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8", - "phpunit/phpunit": "^8.5.28 || ^9.5.21" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "extra": { @@ -3697,7 +3794,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.0" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" }, "funding": [ { @@ -3709,24 +3806,24 @@ "type": "tidelift" } ], - "time": "2022-07-30T15:51:26+00:00" + "time": "2023-11-12T21:59:55+00:00" }, { "name": "psr/cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -3746,7 +3843,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -3756,31 +3853,31 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { - "name": "psr/container", - "version": "1.1.2", + "name": "psr/clock", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", "shasum": "" }, "require": { - "php": ">=7.4.0" + "php": "^7.0 || ^8.0" }, "type": "library", "autoload": { "psr-4": { - "Psr\\Container\\": "src/" + "Psr\\Clock\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3793,25 +3890,73 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "clock", + "now", + "psr", + "psr-20", + "time" ], "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2022-11-25T14:36:26+00:00" }, { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { + "name": "psr/container", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { "type": "git", "url": "https://github.com/php-fig/event-dispatcher.git", "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" @@ -3860,21 +4005,21 @@ }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -3894,7 +4039,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -3906,9 +4051,9 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/php-fig/http-client" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", @@ -3967,25 +4112,25 @@ }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "1.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -4014,9 +4159,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/1.1" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:50:52+00:00" }, { "name": "psr/log", @@ -4165,24 +4310,24 @@ }, { "name": "react/promise", - "version": "v3.0.0", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "c86753c76fd3be465d93b308f18d189f01a22be4" + "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/c86753c76fd3be465d93b308f18d189f01a22be4", - "reference": "c86753c76fd3be465d93b308f18d189f01a22be4", + "url": "https://api.github.com/repos/reactphp/promise/zipball/e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", + "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", "shasum": "" }, "require": { "php": ">=7.1.0" }, "require-dev": { - "phpstan/phpstan": "1.10.20 || 1.4.10", - "phpunit/phpunit": "^9.5 || ^7.5" + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" }, "type": "library", "autoload": { @@ -4226,7 +4371,7 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v3.0.0" + "source": "https://github.com/reactphp/promise/tree/v3.1.0" }, "funding": [ { @@ -4234,7 +4379,7 @@ "type": "open_collective" } ], - "time": "2023-07-11T16:12:49+00:00" + "time": "2023-11-16T16:21:57+00:00" }, { "name": "robthree/twofactorauth", @@ -4547,20 +4692,20 @@ }, { "name": "sensio/framework-extra-bundle", - "version": "v6.2.9", + "version": "v6.2.10", "source": { "type": "git", "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "dcfac94d6bdcf95c126e8ccac2104917c7c8f135" + "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/dcfac94d6bdcf95c126e8ccac2104917c7c8f135", - "reference": "dcfac94d6bdcf95c126e8ccac2104917c7c8f135", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/2f886f4b31f23c76496901acaedfedb6936ba61f", + "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", + "doctrine/annotations": "^1.0|^2.0", "php": ">=7.2.5", "symfony/config": "^4.4|^5.0|^6.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", @@ -4618,24 +4763,23 @@ "controllers" ], "support": { - "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", - "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.9" + "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.10" }, "abandoned": "Symfony", - "time": "2022-11-01T17:17:13+00:00" + "time": "2023-02-24T14:57:12+00:00" }, { "name": "setasign/fpdi", - "version": "v2.3.6", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/Setasign/FPDI.git", - "reference": "6231e315f73e4f62d72b73f3d6d78ff0eed93c31" + "reference": "ecf0459643ec963febfb9a5d529dcd93656006a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDI/zipball/6231e315f73e4f62d72b73f3d6d78ff0eed93c31", - "reference": "6231e315f73e4f62d72b73f3d6d78ff0eed93c31", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/ecf0459643ec963febfb9a5d529dcd93656006a4", + "reference": "ecf0459643ec963febfb9a5d529dcd93656006a4", "shasum": "" }, "require": { @@ -4648,7 +4792,7 @@ "require-dev": { "phpunit/phpunit": "~5.7", "setasign/fpdf": "~1.8", - "setasign/tfpdf": "1.31", + "setasign/tfpdf": "~1.31", "squizlabs/php_codesniffer": "^3.5", "tecnickcom/tcpdf": "~6.2" }, @@ -4686,7 +4830,7 @@ ], "support": { "issues": "https://github.com/Setasign/FPDI/issues", - "source": "https://github.com/Setasign/FPDI/tree/v2.3.6" + "source": "https://github.com/Setasign/FPDI/tree/v2.5.0" }, "funding": [ { @@ -4694,7 +4838,7 @@ "type": "tidelift" } ], - "time": "2021-02-11T11:37:01+00:00" + "time": "2023-09-28T10:46:27+00:00" }, { "name": "skorp/detect-incompatible-samesite-useragents", @@ -4814,33 +4958,28 @@ }, { "name": "symfony/asset", - "version": "v5.4.13", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "9aa867206711cb6fcca51ef127ba52a018170be9" + "reference": "c1108eb27a61ef4ac29504ef61c028648308036c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/9aa867206711cb6fcca51ef127ba52a018170be9", - "reference": "9aa867206711cb6fcca51ef127ba52a018170be9", + "url": "https://api.github.com/repos/symfony/asset/zipball/c1108eb27a61ef4ac29504ef61c028648308036c", + "reference": "c1108eb27a61ef4ac29504ef61c028648308036c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "conflict": { - "symfony/http-foundation": "<5.3" + "symfony/http-foundation": "<5.4" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/http-foundation": "" + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4868,7 +5007,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v5.4.13" + "source": "https://github.com/symfony/asset/tree/v6.4.0" }, "funding": [ { @@ -4884,62 +5023,61 @@ "type": "tidelift" } ], - "time": "2022-08-31T08:17:19+00:00" + "time": "2023-10-31T08:40:20+00:00" }, { "name": "symfony/cache", - "version": "v5.4.18", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "a33fa08a3f37bb44b90e60b9028796d6b811f9ef" + "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/a33fa08a3f37bb44b90e60b9028796d6b811f9ef", - "reference": "a33fa08a3f37bb44b90e60b9028796d6b811f9ef", + "url": "https://api.github.com/repos/symfony/cache/zipball/ac2d25f97b17eec6e19760b6b9962a4f7c44356a", + "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0", + "php": ">=8.1", + "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^1.1.7|^2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/cache-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^6.3.6|^7.0" }, "conflict": { "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/var-dumper": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/var-dumper": "<5.4" }, "provide": { - "psr/cache-implementation": "1.0|2.0", - "psr/simple-cache-implementation": "1.0|2.0", - "symfony/cache-implementation": "1.0|2.0" + "psr/cache-implementation": "2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0", + "symfony/cache-implementation": "1.1|2.0|3.0" }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.13.1|^3.0", - "predis/predis": "^1.1", - "psr/simple-cache": "^1.0|^2.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\Cache\\": "" }, + "classmap": [ + "Traits/ValueWrapper.php" + ], "exclude-from-classmap": [ "/Tests/" ] @@ -4965,7 +5103,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.4.18" + "source": "https://github.com/symfony/cache/tree/v6.4.0" }, "funding": [ { @@ -4981,33 +5119,30 @@ "type": "tidelift" } ], - "time": "2022-12-29T16:06:09+00:00" + "time": "2023-11-24T19:28:07+00:00" }, { "name": "symfony/cache-contracts", - "version": "v2.5.2", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" + "reference": "1d74b127da04ffa87aa940abe15446fa89653778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0|^3.0" - }, - "suggest": { - "symfony/cache-implementation": "" + "php": ">=8.1", + "psr/cache": "^3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5044,7 +5179,81 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-25T12:52:38+00:00" + }, + { + "name": "symfony/clock", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "48102bcc56b26d453c7f5e7f72829abc9df25a16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/48102bcc56b26d453c7f5e7f72829abc9df25a16", + "reference": "48102bcc56b26d453c7f5e7f72829abc9df25a16", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v6.4.0" }, "funding": [ { @@ -5060,42 +5269,38 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-10-13T14:46:14+00:00" }, { "name": "symfony/config", - "version": "v5.4.19", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "9bd60843443cda9638efdca7c41eb82ed0026179" + "reference": "5d33e0fb707d603330e0edfd4691803a1253572e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/9bd60843443cda9638efdca7c41eb82ed0026179", - "reference": "9bd60843443cda9638efdca7c41eb82ed0026179", + "url": "https://api.github.com/repos/symfony/config/zipball/5d33e0fb707d603330e0edfd4691803a1253572e", + "reference": "5d33e0fb707d603330e0edfd4691803a1253572e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/finder": "<4.4" + "symfony/finder": "<5.4", + "symfony/service-contracts": "<2.5" }, "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5123,7 +5328,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.19" + "source": "https://github.com/symfony/config/tree/v6.4.0" }, "funding": [ { @@ -5139,56 +5344,51 @@ "type": "tidelift" } ], - "time": "2023-01-08T13:23:55+00:00" + "time": "2023-11-09T08:28:32+00:00" }, { "name": "symfony/console", - "version": "v5.4.28", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827" + "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f4f71842f24c2023b91237c72a365306f3c58827", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827", + "url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd", + "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5222,7 +5422,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.28" + "source": "https://github.com/symfony/console/tree/v6.4.1" }, "funding": [ { @@ -5238,25 +5438,24 @@ "type": "tidelift" } ], - "time": "2023-08-07T06:12:30+00:00" + "time": "2023-11-30T10:54:28+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "052ef49b660f9ad2a3adb311c555c9bc11ba61f4" + "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/052ef49b660f9ad2a3adb311c555c9bc11ba61f4", - "reference": "052ef49b660f9ad2a3adb311c555c9bc11ba61f4", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4", + "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -5288,7 +5487,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.17" + "source": "https://github.com/symfony/css-selector/tree/v6.4.0" }, "funding": [ { @@ -5304,42 +5503,37 @@ "type": "tidelift" } ], - "time": "2022-12-23T11:40:44+00:00" + "time": "2023-10-31T08:40:20+00:00" }, { "name": "symfony/debug-bundle", - "version": "v5.4.11", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "ec73a8bb7b966ccbe9e76be3c7dc413d8ae84f47" + "reference": "1e07027423d1d37125b60a50997ada26a9d9d202" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/ec73a8bb7b966ccbe9e76be3c7dc413d8ae84f47", - "reference": "ec73a8bb7b966ccbe9e76be3c7dc413d8ae84f47", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/1e07027423d1d37125b60a50997ada26a9d9d202", + "reference": "1e07027423d1d37125b60a50997ada26a9d9d202", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=7.2.5", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "php": ">=8.1", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/twig-bridge": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/config": "<4.4", - "symfony/dependency-injection": "<5.2" + "symfony/config": "<5.4", + "symfony/dependency-injection": "<5.4" }, "require-dev": { - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/web-profiler-bundle": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "For service container configuration", - "symfony/dependency-injection": "For using as a service from the container" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/web-profiler-bundle": "^5.4|^6.0|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -5367,7 +5561,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v5.4.11" + "source": "https://github.com/symfony/debug-bundle/tree/v6.4.0" }, "funding": [ { @@ -5383,52 +5577,44 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:00:38+00:00" + "time": "2023-11-01T12:07:38+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.4.20", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "8185ed0df129005a26715902f1a53bad0fe67102" + "reference": "f88ff6428afbeb17cc648c8003bd608534750baf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8185ed0df129005a26715902f1a53bad0fe67102", - "reference": "8185ed0df129005a26715902f1a53bad0fe67102", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f88ff6428afbeb17cc648c8003bd608534750baf", + "reference": "f88ff6428afbeb17cc648c8003bd608534750baf", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/service-contracts": "^1.1.6|^2" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.2.10|^7.0" }, "conflict": { "ext-psr": "<1.1|>=2", - "symfony/config": "<5.3", - "symfony/finder": "<4.4", - "symfony/proxy-manager-bridge": "<4.4", - "symfony/yaml": "<4.4.26" + "symfony/config": "<6.1", + "symfony/finder": "<5.4", + "symfony/proxy-manager-bridge": "<6.3", + "symfony/yaml": "<5.4" }, "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^5.3|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4.26|^5.0|^6.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": "" + "symfony/config": "^6.1|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5456,7 +5642,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.20" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.1" }, "funding": [ { @@ -5472,29 +5658,29 @@ "type": "tidelift" } ], - "time": "2023-01-27T11:08:11+00:00" + "time": "2023-12-01T14:56:37+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5523,7 +5709,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -5539,80 +5725,71 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "e9fce4a5568337402b2b1106907140d56a9d2454" + "reference": "bd181daf2851821c3aef20b779d37002cfd2e833" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/e9fce4a5568337402b2b1106907140d56a9d2454", - "reference": "e9fce4a5568337402b2b1106907140d56a9d2454", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/bd181daf2851821c3aef20b779d37002cfd2e833", + "reference": "bd181daf2851821c3aef20b779d37002cfd2e833", "shasum": "" }, "require": { - "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^2|^3", - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "doctrine/event-manager": "^1.2|^2", + "doctrine/persistence": "^3.1", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/service-contracts": "^2.5|^3" }, "conflict": { "doctrine/dbal": "<2.13.1", "doctrine/lexer": "<1.1", - "doctrine/orm": "<2.7.4", - "phpunit/phpunit": "<5.4.3", + "doctrine/orm": "<2.15", "symfony/cache": "<5.4", - "symfony/dependency-injection": "<4.4", - "symfony/form": "<5.1", - "symfony/http-kernel": "<5", - "symfony/messenger": "<4.4", - "symfony/property-info": "<5", - "symfony/proxy-manager-bridge": "<4.4.19", - "symfony/security-bundle": "<5", - "symfony/security-core": "<5.3", - "symfony/validator": "<5.2" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4|^2", + "symfony/dependency-injection": "<6.2", + "symfony/form": "<5.4.21|>=6,<6.2.7", + "symfony/http-foundation": "<6.3", + "symfony/http-kernel": "<6.2", + "symfony/lock": "<6.3", + "symfony/messenger": "<5.4", + "symfony/property-info": "<5.4", + "symfony/security-bundle": "<5.4", + "symfony/security-core": "<6.4", + "symfony/validator": "<6.4" + }, + "require-dev": { "doctrine/collections": "^1.0|^2.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.13.1|^3.0", - "doctrine/orm": "^2.7.4", + "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/orm": "^2.15|^3", "psr/log": "^1|^2|^3", - "symfony/cache": "^5.4|^6.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/doctrine-messenger": "^5.1|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^5.4.9|^6.0.9", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/property-info": "^5.0|^6.0", - "symfony/proxy-manager-bridge": "^4.4|^5.0|^6.0", - "symfony/security-core": "^5.3|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", - "symfony/validator": "^5.2|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "doctrine/data-fixtures": "", - "doctrine/dbal": "", - "doctrine/orm": "", - "symfony/form": "", - "symfony/property-info": "", - "symfony/validator": "" + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.2|^7.0", + "symfony/doctrine-messenger": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4.21|^6.2.7|^7.0", + "symfony/http-kernel": "^6.3|^7.0", + "symfony/lock": "^6.3|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/proxy-manager-bridge": "^6.4", + "symfony/security-core": "^6.4|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "symfony-bridge", "autoload": { @@ -5640,7 +5817,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.17" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.0" }, "funding": [ { @@ -5656,38 +5833,30 @@ "type": "tidelift" } ], - "time": "2022-12-20T11:10:57+00:00" + "time": "2023-10-31T08:40:20+00:00" }, { "name": "symfony/dom-crawler", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "32a07d910edc138a1dd5508c17c6b9bc1eb27a1b" + "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/32a07d910edc138a1dd5508c17c6b9bc1eb27a1b", - "reference": "32a07d910edc138a1dd5508c17c6b9bc1eb27a1b", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", + "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "masterminds/html5": "^2.6", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "masterminds/html5": "<2.6" + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/css-selector": "" + "symfony/css-selector": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5715,7 +5884,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.4.17" + "source": "https://github.com/symfony/dom-crawler/tree/v6.4.0" }, "funding": [ { @@ -5731,29 +5900,32 @@ "type": "tidelift" } ], - "time": "2022-12-22T10:31:03+00:00" + "time": "2023-11-20T16:41:16+00:00" }, { "name": "symfony/dotenv", - "version": "v5.4.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "83a2310904a4f5d4f42526227b5a578ac82232a9" + "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/83a2310904a4f5d4f42526227b5a578ac82232a9", - "reference": "83a2310904a4f5d4f42526227b5a578ac82232a9", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/d0d584a91422ddaa2c94317200d4c4e5b935555f", + "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1" + }, + "conflict": { + "symfony/console": "<5.4", + "symfony/process": "<5.4" }, "require-dev": { - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5786,7 +5958,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.4.5" + "source": "https://github.com/symfony/dotenv/tree/v6.4.0" }, "funding": [ { @@ -5802,31 +5974,35 @@ "type": "tidelift" } ], - "time": "2022-02-15T17:04:12+00:00" + "time": "2023-10-26T18:19:48+00:00" }, { "name": "symfony/error-handler", - "version": "v5.4.19", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "438ef3e5e6481244785da3ce8cf8f4e74e7f2822" + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/438ef3e5e6481244785da3ce8cf8f4e74e7f2822", - "reference": "438ef3e5e6481244785da3ce8cf8f4e74e7f2822", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -5857,7 +6033,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.4.19" + "source": "https://github.com/symfony/error-handler/tree/v6.4.0" }, "funding": [ { @@ -5873,48 +6049,43 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-10-18T09:43:34+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.19", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "abf49cc084c087d94b4cb939c3f3672971784e0c" + "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/abf49cc084c087d94b4cb939c3f3672971784e0c", - "reference": "abf49cc084c087d94b4cb939c3f3672971784e0c", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6", + "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher-contracts": "^2|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0" + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5942,7 +6113,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.19" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.0" }, "funding": [ { @@ -5958,33 +6129,30 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-07-27T06:52:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.5.2", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -6021,7 +6189,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -6037,26 +6205,27 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/expression-language", - "version": "v5.4.14", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "2f27d5b1e7926bba18e87719af75f696977cd58b" + "reference": "6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/2f27d5b1e7926bba18e87719af75f696977cd58b", - "reference": "2f27d5b1e7926bba18e87719af75f696977cd58b", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152", + "reference": "6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" + "php": ">=8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -6084,7 +6253,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v5.4.14" + "source": "https://github.com/symfony/expression-language/tree/v6.4.0" }, "funding": [ { @@ -6100,27 +6269,26 @@ "type": "tidelift" } ], - "time": "2022-10-07T08:01:20+00:00" + "time": "2023-07-27T06:52:43+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.25", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" + "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/952a8cb588c3bc6ce76f6023000fb932f16a6e59", + "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "~1.8" }, "type": "library", "autoload": { @@ -6148,7 +6316,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.25" + "source": "https://github.com/symfony/filesystem/tree/v6.4.0" }, "funding": [ { @@ -6164,26 +6332,27 @@ "type": "tidelift" } ], - "time": "2023-05-31T13:04:02+00:00" + "time": "2023-07-26T17:27:13+00:00" }, { "name": "symfony/finder", - "version": "v5.4.27", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -6211,7 +6380,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.27" + "source": "https://github.com/symfony/finder/tree/v6.4.0" }, "funding": [ { @@ -6227,20 +6396,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:02:31+00:00" + "time": "2023-10-31T17:30:12+00:00" }, { "name": "symfony/flex", - "version": "v1.19.4", + "version": "v1.21.2", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "c82477240111bfe41a1067c9f0ab91d40bafa5b6" + "reference": "f1cf4014ffac79e0c031cc40d6d66354e7de5da5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/c82477240111bfe41a1067c9f0ab91d40bafa5b6", - "reference": "c82477240111bfe41a1067c9f0ab91d40bafa5b6", + "url": "https://api.github.com/repos/symfony/flex/zipball/f1cf4014ffac79e0c031cc40d6d66354e7de5da5", + "reference": "f1cf4014ffac79e0c031cc40d6d66354e7de5da5", "shasum": "" }, "require": { @@ -6276,7 +6445,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.19.4" + "source": "https://github.com/symfony/flex/tree/v1.21.2" }, "funding": [ { @@ -6292,66 +6461,60 @@ "type": "tidelift" } ], - "time": "2022-12-20T07:19:24+00:00" + "time": "2023-10-30T18:34:59+00:00" }, { "name": "symfony/form", - "version": "v5.4.17", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "6150f66dc921375a62e5da1cce3684aee657ddca" + "reference": "10649ab710b58a04bcf1886f005ccab58d9cf0a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/6150f66dc921375a62e5da1cce3684aee657ddca", - "reference": "6150f66dc921375a62e5da1cce3684aee657ddca", + "url": "https://api.github.com/repos/symfony/form/zipball/10649ab710b58a04bcf1886f005ccab58d9cf0a4", + "reference": "10649ab710b58a04bcf1886f005ccab58d9cf0a4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/options-resolver": "^5.1|^6.0", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/options-resolver": "^5.4|^6.0|^7.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.23", - "symfony/property-access": "^5.0.8|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4", - "symfony/dependency-injection": "<4.4", - "symfony/doctrine-bridge": "<4.4", - "symfony/error-handler": "<4.4.5", - "symfony/framework-bundle": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/translation": "<4.4", - "symfony/translation-contracts": "<1.1.7", - "symfony/twig-bridge": "<4.4" + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", + "symfony/error-handler": "<5.4", + "symfony/framework-bundle": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.3" }, "require-dev": { "doctrine/collections": "^1.0|^2.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", - "symfony/validator": "^4.4.17|^5.1.9|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/security-csrf": "For protecting forms against CSRF attacks.", - "symfony/twig-bridge": "For templating with Twig.", - "symfony/validator": "For form validation." + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/html-sanitizer": "^6.1|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/security-core": "^6.2|^7.0", + "symfony/security-csrf": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6379,7 +6542,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v5.4.17" + "source": "https://github.com/symfony/form/tree/v6.4.1" }, "funding": [ { @@ -6395,115 +6558,112 @@ "type": "tidelift" } ], - "time": "2022-12-28T08:39:55+00:00" + "time": "2023-11-30T11:08:34+00:00" }, { "name": "symfony/framework-bundle", - "version": "v5.4.17", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "79dba90bd8a440488b63282ea27d2b30166e8841" + "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/79dba90bd8a440488b63282ea27d2b30166e8841", - "reference": "79dba90bd8a440488b63282ea27d2b30166e8841", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ac22d760bf9ff4440a1b6c7caef34d38b44290aa", + "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa", "shasum": "" }, "require": { + "composer-runtime-api": ">=2.1", "ext-xml": "*", - "php": ">=7.2.5", - "symfony/cache": "^5.2|^6.0", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^5.4.5|^6.0.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4.1|^5.0.1|^6.0", - "symfony/event-dispatcher": "^5.1|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^5.4|^6.0", + "php": ">=8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.1|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/routing": "^5.3|^6.0" + "symfony/routing": "^6.4|^7.0" }, "conflict": { "doctrine/annotations": "<1.13.1", - "doctrine/cache": "<1.11", "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "phpunit/phpunit": "<5.4.3", - "symfony/asset": "<5.3", - "symfony/console": "<5.2.5", - "symfony/dom-crawler": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/form": "<5.2", - "symfony/http-client": "<4.4", - "symfony/lock": "<4.4", - "symfony/mailer": "<5.2", - "symfony/messenger": "<5.4", - "symfony/mime": "<4.4", - "symfony/property-access": "<5.3", - "symfony/property-info": "<4.4", - "symfony/security-csrf": "<5.3", - "symfony/serializer": "<5.2", - "symfony/service-contracts": ">=3.0", - "symfony/stopwatch": "<4.4", - "symfony/translation": "<5.3", - "symfony/twig-bridge": "<4.4", - "symfony/twig-bundle": "<4.4", - "symfony/validator": "<5.2", - "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<5.2" + "symfony/asset": "<5.4", + "symfony/asset-mapper": "<6.4", + "symfony/clock": "<6.3", + "symfony/console": "<5.4", + "symfony/dom-crawler": "<6.4", + "symfony/dotenv": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<6.3", + "symfony/lock": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<6.3", + "symfony/mime": "<6.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4", + "symfony/scheduler": "<6.4", + "symfony/security-core": "<5.4", + "symfony/security-csrf": "<5.4", + "symfony/serializer": "<6.4", + "symfony/stopwatch": "<5.4", + "symfony/translation": "<6.4", + "symfony/twig-bridge": "<5.4", + "symfony/twig-bundle": "<5.4", + "symfony/validator": "<6.4", + "symfony/web-profiler-bundle": "<6.4", + "symfony/workflow": "<6.4" }, "require-dev": { "doctrine/annotations": "^1.13.1|^2", - "doctrine/cache": "^1.11|^2.0", "doctrine/persistence": "^1.3|^2|^3", + "dragonmantank/cron-expression": "^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.3|^6.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/console": "^5.4.9|^6.0.9", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0", - "symfony/dotenv": "^5.1|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^5.2|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/mailer": "^5.2|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/notifier": "^5.4|^6.0", + "seld/jsonlint": "^1.10", + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/asset-mapper": "^6.4|^7.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/console": "^5.4.9|^6.0.9|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/dotenv": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/html-sanitizer": "^6.1|^7.0", + "symfony/http-client": "^6.3|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/mailer": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.3|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/notifier": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/property-info": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/security-bundle": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/string": "^5.0|^6.0", - "symfony/translation": "^5.3|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/validator": "^5.2|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/workflow": "^5.2|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/scheduler": "^6.4|^7.0", + "symfony/security-bundle": "^5.4|^6.0|^7.0", + "symfony/semaphore": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/string": "^5.4|^6.0|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/workflow": "^6.4|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0", "twig/twig": "^2.10|^3.0" }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" - }, "type": "symfony-bundle", "autoload": { "psr-4": { @@ -6530,7 +6690,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v5.4.17" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.1" }, "funding": [ { @@ -6546,39 +6706,40 @@ "type": "tidelift" } ], - "time": "2022-12-20T11:10:57+00:00" + "time": "2023-12-01T16:35:22+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.4.20", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "d0435363362a47c14e9cf50663cb8ffbf491875a" + "reference": "44a6d39a9cc11e154547d882d5aac1e014440771" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0435363362a47c14e9cf50663cb8ffbf491875a", - "reference": "d0435363362a47c14e9cf50663cb8ffbf491875a", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/44a6d39a9cc11e154547d882d5aac1e014440771", + "reference": "44a6d39a9cc11e154547d882d5aac1e014440771", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-php83": "^1.27" }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" + "conflict": { + "symfony/cache": "<6.3" }, - "suggest": { - "symfony/mime": "To use the file extension guesser" + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6606,7 +6767,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.20" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.0" }, "funding": [ { @@ -6622,76 +6783,77 @@ "type": "tidelift" } ], - "time": "2023-01-29T11:11:52+00:00" + "time": "2023-11-20T16:41:16+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.4.20", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "aaeec341582d3c160cc9ecfa8b2419ba6c69954e" + "reference": "2953274c16a229b3933ef73a6898e18388e12e1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/aaeec341582d3c160cc9ecfa8b2419ba6c69954e", - "reference": "aaeec341582d3c160cc9ecfa8b2419ba6c69954e", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b", + "reference": "2953274c16a229b3933ef73a6898e18388e12e1b", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^5.0|^6.0", - "symfony/http-foundation": "^5.3.7|^6.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.0", - "symfony/config": "<5.0", - "symfony/console": "<4.4", - "symfony/dependency-injection": "<5.3", - "symfony/doctrine-bridge": "<5.0", - "symfony/form": "<5.0", - "symfony/http-client": "<5.0", - "symfony/mailer": "<5.0", - "symfony/messenger": "<5.0", - "symfony/translation": "<5.0", - "symfony/twig-bridge": "<5.0", - "symfony/validator": "<5.0", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, "type": "library", "autoload": { "psr-4": { @@ -6718,7 +6880,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.4.20" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.1" }, "funding": [ { @@ -6734,114 +6896,35 @@ "type": "tidelift" } ], - "time": "2023-02-01T08:18:48+00:00" - }, - { - "name": "symfony/inflector", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "4cb14dfb9cf782a1c743aaf4dac101003583d377" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/4cb14dfb9cf782a1c743aaf4dac101003583d377", - "reference": "4cb14dfb9cf782a1c743aaf4dac101003583d377", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.3.10|^6.0" - }, - "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/v5.4.11" - }, - "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-20T11:34:24+00:00" + "time": "2023-12-01T17:02:02+00:00" }, { "name": "symfony/intl", - "version": "v5.4.15", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "2cb39da7f6e7b7344d7d5317dbee8db9d12cc714" + "reference": "41d16f0294b9ca6e5540728580c65cfa3848fbf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/2cb39da7f6e7b7344d7d5317dbee8db9d12cc714", - "reference": "2cb39da7f6e7b7344d7d5317dbee8db9d12cc714", + "url": "https://api.github.com/repos/symfony/intl/zipball/41d16f0294b9ca6e5540728580c65cfa3848fbf5", + "reference": "41d16f0294b9ca6e5540728580c65cfa3848fbf5", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "require-dev": { - "symfony/filesystem": "^4.4|^5.0|^6.0" + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { - "files": [ - "Resources/functions.php" - ], "psr-4": { "Symfony\\Component\\Intl\\": "" }, - "classmap": [ - "Resources/stubs" - ], "exclude-from-classmap": [ "/Tests/" ] @@ -6868,7 +6951,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library", + "description": "Provides access to the localization data of the ICU library", "homepage": "https://symfony.com", "keywords": [ "i18n", @@ -6879,86 +6962,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v5.4.15" - }, - "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-19T14:28:49+00:00" - }, - { - "name": "symfony/lock", - "version": "v5.4.15", - "source": { - "type": "git", - "url": "https://github.com/symfony/lock.git", - "reference": "109a20faa6119578b46457ef8cffb9389e20e5ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/109a20faa6119578b46457ef8cffb9389e20e5ca", - "reference": "109a20faa6119578b46457ef8cffb9389e20e5ca", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "doctrine/dbal": "<2.13" - }, - "require-dev": { - "doctrine/dbal": "^2.13|^3.0", - "predis/predis": "~1.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Lock\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jérémy Derussé", - "email": "jeremy@derusse.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Creates and manages locks, a mechanism to provide exclusive access to a shared resource", - "homepage": "https://symfony.com", - "keywords": [ - "cas", - "flock", - "locking", - "mutex", - "redlock", - "semaphore" - ], - "support": { - "source": "https://github.com/symfony/lock/tree/v5.4.15" + "source": "https://github.com/symfony/intl/tree/v6.4.0" }, "funding": [ { @@ -6974,39 +6978,43 @@ "type": "tidelift" } ], - "time": "2022-10-27T07:55:40+00:00" + "time": "2023-10-28T23:12:08+00:00" }, { "name": "symfony/mailer", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "fd816412b76447890efedaf9ddfe8632589ce10c" + "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/fd816412b76447890efedaf9ddfe8632589ce10c", - "reference": "fd816412b76447890efedaf9ddfe8632589ce10c", + "url": "https://api.github.com/repos/symfony/mailer/zipball/ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", + "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=7.2.5", + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/mime": "^5.2.6|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/http-kernel": "<4.4" + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^4.4|^5.0|^6.0" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" }, "type": "library", "autoload": { @@ -7034,7 +7042,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v5.4.17" + "source": "https://github.com/symfony/mailer/tree/v6.4.0" }, "funding": [ { @@ -7050,54 +7058,54 @@ "type": "tidelift" } ], - "time": "2022-12-14T15:45:23+00:00" + "time": "2023-11-12T18:02:22+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.43.0", + "version": "v1.52.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "e3f9a1d9e0f4968f68454403e820dffc7db38a59" + "reference": "112f9466c94a46ca33dc441eee59a12cd1790757" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/e3f9a1d9e0f4968f68454403e820dffc7db38a59", - "reference": "e3f9a1d9e0f4968f68454403e820dffc7db38a59", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/112f9466c94a46ca33dc441eee59a12cd1790757", + "reference": "112f9466c94a46ca33dc441eee59a12cd1790757", "shasum": "" }, "require": { "doctrine/inflector": "^2.0", "nikic/php-parser": "^4.11", - "php": ">=7.2.5", - "symfony/config": "^5.4.7|^6.0", - "symfony/console": "^5.4.7|^6.0", - "symfony/dependency-injection": "^5.4.7|^6.0", + "php": ">=8.1", + "symfony/config": "^6.3|^7.0", + "symfony/console": "^6.3|^7.0", + "symfony/dependency-injection": "^6.3|^7.0", "symfony/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^5.4.7|^6.0", - "symfony/finder": "^5.4.3|^6.0", - "symfony/framework-bundle": "^5.4.7|^6.0", - "symfony/http-kernel": "^5.4.7|^6.0" + "symfony/filesystem": "^6.3|^7.0", + "symfony/finder": "^6.3|^7.0", + "symfony/framework-bundle": "^6.3|^7.0", + "symfony/http-kernel": "^6.3|^7.0", + "symfony/process": "^6.3|^7.0" }, "conflict": { + "doctrine/doctrine-bundle": "<2.4", "doctrine/orm": "<2.10" }, "require-dev": { "composer/semver": "^3.0", - "doctrine/doctrine-bundle": "^2.4", + "doctrine/doctrine-bundle": "^2.5.0", "doctrine/orm": "^2.10.0", - "symfony/http-client": "^5.4.7|^6.0", - "symfony/phpunit-bridge": "^5.4.7|^6.0", - "symfony/polyfill-php80": "^1.16.0", - "symfony/process": "^5.4.7|^6.0", - "symfony/security-core": "^5.4.7|^6.0", - "symfony/yaml": "^5.4.3|^6.0", + "symfony/http-client": "^6.3|^7.0", + "symfony/phpunit-bridge": "^6.3|^7.0", + "symfony/security-core": "^6.3|^7.0", + "symfony/yaml": "^6.3|^7.0", "twig/twig": "^2.0|^3.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-main": "1.0-dev" + "dev-main": "1.x-dev" } }, "autoload": { @@ -7119,13 +7127,14 @@ "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", "keywords": [ "code generator", + "dev", "generator", "scaffold", "scaffolding" ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.43.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.52.0" }, "funding": [ { @@ -7141,43 +7150,43 @@ "type": "tidelift" } ], - "time": "2022-05-17T15:46:50+00:00" + "time": "2023-10-31T18:23:49+00:00" }, { "name": "symfony/mime", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "2a83d82efc91c3f03a23c8b47a896df168aa5c63" + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2a83d82efc91c3f03a23c8b47a896df168aa5c63", - "reference": "2a83d82efc91c3f03a23c8b47a896df168aa5c63", + "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4", - "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.3.2" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.1|^6.0", - "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3.2|^7.0" }, "type": "library", "autoload": { @@ -7209,7 +7218,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.17" + "source": "https://github.com/symfony/mime/tree/v6.4.0" }, "funding": [ { @@ -7225,47 +7234,42 @@ "type": "tidelift" } ], - "time": "2022-12-13T09:59:55+00:00" + "time": "2023-10-17T11:49:05+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "0280390d8232a5668b02e0d87e9fce0a535c4af9" + "reference": "c262c2f54ce7e160a231808817f306f880c32750" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/0280390d8232a5668b02e0d87e9fce0a535c4af9", - "reference": "0280390d8232a5668b02e0d87e9fce0a535c4af9", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/c262c2f54ce7e160a231808817f306f880c32750", + "reference": "c262c2f54ce7e160a231808817f306f880c32750", "shasum": "" }, "require": { - "monolog/monolog": "^1.25.1|^2", - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" + "monolog/monolog": "^1.25.1|^2|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/console": "<4.4", - "symfony/http-foundation": "<5.3" + "symfony/console": "<5.4", + "symfony/http-foundation": "<5.4", + "symfony/security-core": "<6.0" }, "require-dev": { - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/mailer": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.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." + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/mailer": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/security-core": "^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "symfony-bridge", "autoload": { @@ -7293,7 +7297,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.17" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.0" }, "funding": [ { @@ -7309,34 +7313,34 @@ "type": "tidelift" } ], - "time": "2022-12-13T10:55:04+00:00" + "time": "2023-10-31T08:18:17+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.8.0", + "version": "v3.10.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d" + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", "shasum": "" }, "require": { - "monolog/monolog": "^1.22 || ^2.0 || ^3.0", - "php": ">=7.1.3", - "symfony/config": "~4.4 || ^5.0 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", - "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" + "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", + "php": ">=7.2.5", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "symfony/console": "~4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.2 || ^6.0", - "symfony/yaml": "~4.4 || ^5.0 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { @@ -7374,7 +7378,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.8.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" }, "funding": [ { @@ -7390,27 +7394,25 @@ "type": "tidelift" } ], - "time": "2022-05-10T14:24:36+00:00" + "time": "2023-11-06T17:08:13+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.11", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690" + "reference": "22301f0e7fdeaacc14318928612dee79be99860e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/54f14e36aa73cb8f7261d7686691fd4d75ea2690", - "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22301f0e7fdeaacc14318928612dee79be99860e", + "reference": "22301f0e7fdeaacc14318928612dee79be99860e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -7443,7 +7445,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.11" + "source": "https://github.com/symfony/options-resolver/tree/v6.4.0" }, "funding": [ { @@ -7459,32 +7461,31 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:00:38+00:00" + "time": "2023-08-08T10:16:24+00:00" }, { "name": "symfony/password-hasher", - "version": "v5.4.19", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "51b4b4d9e368fa6e31daa24866499781848c77d3" + "reference": "e001f752338a49d644ee0523fd7891aabaccb7e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/51b4b4d9e368fa6e31daa24866499781848c77d3", - "reference": "51b4b4d9e368fa6e31daa24866499781848c77d3", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/e001f752338a49d644ee0523fd7891aabaccb7e2", + "reference": "e001f752338a49d644ee0523fd7891aabaccb7e2", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" + "php": ">=8.1" }, "conflict": { - "symfony/security-core": "<5.3" + "symfony/security-core": "<5.4" }, "require-dev": { - "symfony/console": "^5.3|^6.0", - "symfony/security-core": "^5.3|^6.0" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/security-core": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7516,7 +7517,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v5.4.19" + "source": "https://github.com/symfony/password-hasher/tree/v6.4.0" }, "funding": [ { @@ -7532,7 +7533,7 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-11-06T11:00:25+00:00" }, { "name": "symfony/polyfill-ctype", @@ -7699,16 +7700,16 @@ }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c" + "reference": "e46b4da57951a16053cd751f63f4a24292788157" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/a3d9148e2c363588e05abbdd4ee4f971f0a5330c", - "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e46b4da57951a16053cd751f63f4a24292788157", + "reference": "e46b4da57951a16053cd751f63f4a24292788157", "shasum": "" }, "require": { @@ -7720,7 +7721,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7766,7 +7767,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.28.0" }, "funding": [ { @@ -7782,20 +7783,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-03-21T17:27:24+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { @@ -7809,7 +7810,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7853,7 +7854,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -7869,7 +7870,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { "name": "symfony/polyfill-intl-normalizer", @@ -8040,16 +8041,16 @@ }, { "name": "symfony/polyfill-php72", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", "shasum": "" }, "require": { @@ -8058,7 +8059,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8096,7 +8097,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" }, "funding": [ { @@ -8112,7 +8113,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php73", @@ -8166,7 +8167,90 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.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-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -8175,7 +8259,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -8194,17 +8278,17 @@ "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-php80", + "name": "symfony/polyfill-php81", "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", "shasum": "" }, "require": { @@ -8225,7 +8309,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Polyfill\\Php81\\": "" }, "classmap": [ "Resources/stubs" @@ -8236,10 +8320,6 @@ "MIT" ], "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -8249,7 +8329,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -8258,7 +8338,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" }, "funding": [ { @@ -8277,21 +8357,22 @@ "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-php81", + "name": "symfony/polyfill-php83", "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" }, "type": "library", "extra": { @@ -8308,7 +8389,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" + "Symfony\\Polyfill\\Php83\\": "" }, "classmap": [ "Resources/stubs" @@ -8328,7 +8409,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -8337,7 +8418,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" }, "funding": [ { @@ -8353,25 +8434,24 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2023-08-16T06:22:46+00:00" }, { "name": "symfony/process", - "version": "v5.4.28", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b" + "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", - "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", + "url": "https://api.github.com/repos/symfony/process/zipball/191703b1566d97a5425dc969e4350d32b8ef17aa", + "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -8399,7 +8479,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.28" + "source": "https://github.com/symfony/process/tree/v6.4.0" }, "funding": [ { @@ -8415,33 +8495,29 @@ "type": "tidelift" } ], - "time": "2023-08-07T10:36:04+00:00" + "time": "2023-11-17T21:06:49+00:00" }, { "name": "symfony/property-access", - "version": "v5.4.19", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "20fcf370aed6b2b4a2d8170fa23d2d07250e94ab" + "reference": "75f6990ae8e8040dd587162f3f1863f755957129" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/20fcf370aed6b2b4a2d8170fa23d2d07250e94ab", - "reference": "20fcf370aed6b2b4a2d8170fa23d2d07250e94ab", + "url": "https://api.github.com/repos/symfony/property-access/zipball/75f6990ae8e8040dd587162f3f1863f755957129", + "reference": "75f6990ae8e8040dd587162f3f1863f755957129", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2|^6.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/property-info": "^5.4|^6.0|^7.0" }, "require-dev": { - "symfony/cache": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." + "symfony/cache": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -8476,11 +8552,11 @@ "injection", "object", "property", - "property path", + "property-path", "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.4.19" + "source": "https://github.com/symfony/property-access/tree/v6.4.0" }, "funding": [ { @@ -8496,46 +8572,38 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-09-25T12:52:38+00:00" }, { "name": "symfony/property-info", - "version": "v5.4.19", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "8ccf54bce2e2edbface1e99cb5a2560a290c9e2d" + "reference": "288be71bae2ebc88676f5d3a03d23f70b278fcc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/8ccf54bce2e2edbface1e99cb5a2560a290c9e2d", - "reference": "8ccf54bce2e2edbface1e99cb5a2560a290c9e2d", + "url": "https://api.github.com/repos/symfony/property-info/zipball/288be71bae2ebc88676f5d3a03d23f70b278fcc1", + "reference": "288be71bae2ebc88676f5d3a03d23f70b278fcc1", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.1|^6.0" + "php": ">=8.1", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4" + "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/dependency-injection": "<5.4", + "symfony/serializer": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.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" + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -8571,7 +8639,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.4.19" + "source": "https://github.com/symfony/property-info/tree/v6.4.0" }, "funding": [ { @@ -8587,30 +8655,30 @@ "type": "tidelift" } ], - "time": "2023-01-14T11:26:56+00:00" + "time": "2023-11-25T16:57:46+00:00" }, { "name": "symfony/proxy-manager-bridge", - "version": "v5.4.6", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "e6936de1cc8f4e6e3b2264aef186ca21695aee8e" + "reference": "801c4590eacf0dc40d73135dbe79ad71effd6d04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/e6936de1cc8f4e6e3b2264aef186ca21695aee8e", - "reference": "e6936de1cc8f4e6e3b2264aef186ca21695aee8e", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/801c4590eacf0dc40d73135dbe79ad71effd6d04", + "reference": "801c4590eacf0dc40d73135dbe79ad71effd6d04", "shasum": "" }, "require": { "friendsofphp/proxy-manager-lts": "^1.0.2", - "php": ">=7.2.5", - "symfony/dependency-injection": "^5.0|^6.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/dependency-injection": "^6.3|^7.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/config": "^4.4|^5.0|^6.0" + "symfony/config": "^6.1|^7.0" }, "type": "symfony-bridge", "autoload": { @@ -8638,7 +8706,7 @@ "description": "Provides integration for ProxyManager with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.4.6" + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.4.0" }, "funding": [ { @@ -8654,29 +8722,30 @@ "type": "tidelift" } ], - "time": "2022-03-02T12:42:23+00:00" + "time": "2023-11-01T12:07:38+00:00" }, { "name": "symfony/rate-limiter", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/rate-limiter.git", - "reference": "a79d4fe5a330f95ca85a87b1321911bdeadb4db9" + "reference": "b598ae785a3b3ee932c1fb638b1df86f0d36f81e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/a79d4fe5a330f95ca85a87b1321911bdeadb4db9", - "reference": "a79d4fe5a330f95ca85a87b1321911bdeadb4db9", + "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/b598ae785a3b3ee932c1fb638b1df86f0d36f81e", + "reference": "b598ae785a3b3ee932c1fb638b1df86f0d36f81e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/lock": "^5.2|^6.0", - "symfony/options-resolver": "^5.1|^6.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/options-resolver": "^5.4|^6.0|^7.0" }, "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0" + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/lock": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -8708,7 +8777,7 @@ "rate-limiter" ], "support": { - "source": "https://github.com/symfony/rate-limiter/tree/v5.4.17" + "source": "https://github.com/symfony/rate-limiter/tree/v6.4.0" }, "funding": [ { @@ -8724,47 +8793,40 @@ "type": "tidelift" } ], - "time": "2022-12-09T07:37:05+00:00" + "time": "2023-11-10T07:41:05+00:00" }, { "name": "symfony/routing", - "version": "v5.4.17", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "4ce2df9a469c19ba45ca6aca04fec1c358a6e791" + "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/4ce2df9a469c19ba45ca6aca04fec1c358a6e791", - "reference": "4ce2df9a469c19ba45ca6aca04fec1c358a6e791", + "url": "https://api.github.com/repos/symfony/routing/zipball/0c95c164fdba18b12523b75e64199ca3503e6d40", + "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.12", - "symfony/config": "<5.3", - "symfony/dependency-injection": "<4.4", - "symfony/yaml": "<4.4" + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -8798,7 +8860,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.4.17" + "source": "https://github.com/symfony/routing/tree/v6.4.1" }, "funding": [ { @@ -8814,65 +8876,75 @@ "type": "tidelift" } ], - "time": "2022-12-20T11:10:57+00:00" + "time": "2023-12-01T14:54:37+00:00" }, { "name": "symfony/security-bundle", - "version": "v5.4.20", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "1a049b77e70e890c5d5d2105d96ce8b35890197e" + "reference": "4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/1a049b77e70e890c5d5d2105d96ce8b35890197e", - "reference": "1a049b77e70e890c5d5d2105d96ce8b35890197e", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e", + "reference": "4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e", "shasum": "" }, "require": { + "composer-runtime-api": ">=2.1", "ext-xml": "*", - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher": "^5.1|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/password-hasher": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^5.4|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/security-guard": "^5.3", - "symfony/security-http": "^5.4.20|~6.0.20|~6.1.12|^6.2.6" + "php": ">=8.1", + "symfony/clock": "^6.3|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/dependency-injection": "^6.2|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.2|^7.0", + "symfony/http-kernel": "^6.2", + "symfony/password-hasher": "^5.4|^6.0|^7.0", + "symfony/security-core": "^6.2|^7.0", + "symfony/security-csrf": "^5.4|^6.0|^7.0", + "symfony/security-http": "^6.3.6|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/browser-kit": "<4.4", - "symfony/console": "<4.4", - "symfony/framework-bundle": "<4.4", - "symfony/ldap": "<5.1", - "symfony/twig-bundle": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.3|^6.0", - "symfony/ldap": "^5.3|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/browser-kit": "<5.4", + "symfony/console": "<5.4", + "symfony/framework-bundle": "<6.4", + "symfony/http-client": "<5.4", + "symfony/ldap": "<5.4", + "symfony/serializer": "<6.4", + "symfony/twig-bundle": "<5.4", + "symfony/validator": "<6.4" + }, + "require-dev": { + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/ldap": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/twig-bridge": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4", + "web-token/jwt-checker": "^3.1", + "web-token/jwt-signature-algorithm-ecdsa": "^3.1", + "web-token/jwt-signature-algorithm-eddsa": "^3.1", + "web-token/jwt-signature-algorithm-hmac": "^3.1", + "web-token/jwt-signature-algorithm-none": "^3.1", + "web-token/jwt-signature-algorithm-rsa": "^3.1" }, "type": "symfony-bundle", "autoload": { @@ -8900,7 +8972,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v5.4.20" + "source": "https://github.com/symfony/security-bundle/tree/v6.4.0" }, "funding": [ { @@ -8916,56 +8988,48 @@ "type": "tidelift" } ], - "time": "2023-01-30T09:35:58+00:00" + "time": "2023-10-31T14:46:20+00:00" }, { "name": "symfony/security-core", - "version": "v5.4.19", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "76fe5a7c62a3f23a5d7b72a55529e94ae2c1ae07" + "reference": "9e24a7199744d944c03fc1448276dc57f6237a33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/76fe5a7c62a3f23a5d7b72a55529e94ae2c1ae07", - "reference": "76fe5a7c62a3f23a5d7b72a55529e94ae2c1ae07", + "url": "https://api.github.com/repos/symfony/security-core/zipball/9e24a7199744d944c03fc1448276dc57f6237a33", + "reference": "9e24a7199744d944c03fc1448276dc57f6237a33", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher-contracts": "^1.1|^2|^3", - "symfony/password-hasher": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2|^3" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher-contracts": "^2.5|^3", + "symfony/password-hasher": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/event-dispatcher": "<4.4", - "symfony/http-foundation": "<5.3", - "symfony/ldap": "<4.4", - "symfony/security-guard": "<4.4", - "symfony/validator": "<5.2" + "symfony/event-dispatcher": "<5.4", + "symfony/http-foundation": "<5.4", + "symfony/ldap": "<5.4", + "symfony/security-guard": "<5.4", + "symfony/validator": "<5.4" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "psr/container": "^1.0|^2.0", + "psr/container": "^1.1|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/ldap": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/validator": "^5.2|^6.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" + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/ldap": "^5.4|^6.0|^7.0", + "symfony/string": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -8993,7 +9057,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v5.4.19" + "source": "https://github.com/symfony/security-core/tree/v6.4.0" }, "funding": [ { @@ -9009,35 +9073,31 @@ "type": "tidelift" } ], - "time": "2023-01-24T10:56:59+00:00" + "time": "2023-11-06T17:20:05+00:00" }, { "name": "symfony/security-csrf", - "version": "v5.4.19", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "892dc11b003c0d3da377264bb3d5f178cb894944" + "reference": "b28413496ebfce2f98afbb990ad0ce0ba3586638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/892dc11b003c0d3da377264bb3d5f178cb894944", - "reference": "892dc11b003c0d3da377264bb3d5f178cb894944", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/b28413496ebfce2f98afbb990ad0ce0ba3586638", + "reference": "b28413496ebfce2f98afbb990ad0ce0ba3586638", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^4.4|^5.0|^6.0" + "php": ">=8.1", + "symfony/security-core": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/http-foundation": "<5.3" + "symfony/http-foundation": "<5.4" }, "require-dev": { - "symfony/http-foundation": "^5.3|^6.0" - }, - "suggest": { - "symfony/http-foundation": "For using the class SessionTokenStorage." + "symfony/http-foundation": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -9065,74 +9125,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v5.4.19" - }, - "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-01T08:32:19+00:00" - }, - { - "name": "symfony/security-guard", - "version": "v5.4.19", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-guard.git", - "reference": "6f9d69b1ef4adaae02ac99af09bbe5de151e824c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/6f9d69b1ef4adaae02ac99af09bbe5de151e824c", - "reference": "6f9d69b1ef4adaae02ac99af09bbe5de151e824c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15", - "symfony/security-core": "^5.0", - "symfony/security-http": "^5.3" - }, - "require-dev": { - "psr/log": "^1|^2|^3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\Guard\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Security Component - Guard", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/security-guard/tree/v5.4.19" + "source": "https://github.com/symfony/security-csrf/tree/v6.4.0" }, "funding": [ { @@ -9148,48 +9141,51 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-08-25T16:27:31+00:00" }, { "name": "symfony/security-http", - "version": "v5.4.20", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "0236efe37462df3204e758e3a55661a43285d948" + "reference": "1b49ad8e9f2c3ceec011d67ac09e774e4107416b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/0236efe37462df3204e758e3a55661a43285d948", - "reference": "0236efe37462df3204e758e3a55661a43285d948", + "url": "https://api.github.com/repos/symfony/security-http/zipball/1b49ad8e9f2c3ceec011d67ac09e774e4107416b", + "reference": "1b49ad8e9f2c3ceec011d67ac09e774e4107416b", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-foundation": "^6.2|^7.0", + "symfony/http-kernel": "^6.3|^7.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/security-core": "^5.4.19|~6.0.19|~6.1.11|^6.2.5" + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/event-dispatcher": "<4.3", - "symfony/security-bundle": "<5.3", - "symfony/security-csrf": "<4.4" + "symfony/clock": "<6.3", + "symfony/event-dispatcher": "<5.4.9|>=6,<6.0.9", + "symfony/http-client-contracts": "<3.0", + "symfony/security-bundle": "<5.4", + "symfony/security-csrf": "<5.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.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" + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.3|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^3.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/security-csrf": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "web-token/jwt-checker": "^3.1", + "web-token/jwt-signature-algorithm-ecdsa": "^3.1" }, "type": "library", "autoload": { @@ -9217,7 +9213,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v5.4.20" + "source": "https://github.com/symfony/security-http/tree/v6.4.0" }, "funding": [ { @@ -9233,66 +9229,61 @@ "type": "tidelift" } ], - "time": "2023-01-30T09:35:58+00:00" + "time": "2023-11-24T21:18:21+00:00" }, { "name": "symfony/serializer", - "version": "v5.4.17", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "4ac4fae1cbad2655a0b05f327e7ce8ef310239fb" + "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/4ac4fae1cbad2655a0b05f327e7ce8ef310239fb", - "reference": "4ac4fae1cbad2655a0b05f327e7ce8ef310239fb", + "url": "https://api.github.com/repos/symfony/serializer/zipball/7ead272e62c9567df619ef3c49809bf934ddbc1f", + "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { "doctrine/annotations": "<1.12", "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0|>=1.7.0", - "symfony/dependency-injection": "<4.4", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<5.4", "symfony/property-access": "<5.4", - "symfony/property-info": "<5.3.13", - "symfony/uid": "<5.3", - "symfony/yaml": "<4.4" + "symfony/property-info": "<5.4.24|>=6,<6.2.11", + "symfony/uid": "<5.4", + "symfony/validator": "<6.4", + "symfony/yaml": "<5.4" }, "require-dev": { "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.3.13|^6.0", - "symfony/uid": "^5.3|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0", - "symfony/var-exporter": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/property-info": "To deserialize relations.", - "symfony/var-exporter": "For using the metadata compiler.", - "symfony/yaml": "For using the default YAML mapping loader." + "seld/jsonlint": "^1.10", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4.24|^6.2.11|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -9320,7 +9311,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v5.4.17" + "source": "https://github.com/symfony/serializer/tree/v6.4.1" }, "funding": [ { @@ -9336,7 +9327,7 @@ "type": "tidelift" } ], - "time": "2022-12-20T11:10:57+00:00" + "time": "2023-12-01T14:54:37+00:00" }, { "name": "symfony/service-contracts", @@ -9423,21 +9414,21 @@ }, { "name": "symfony/stopwatch", - "version": "v5.4.13", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69" + "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6df7a3effde34d81717bbef4591e5ffe32226d69", - "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/service-contracts": "^1|^2|^3" + "php": ">=8.1", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -9465,7 +9456,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.13" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.0" }, "funding": [ { @@ -9481,38 +9472,38 @@ "type": "tidelift" } ], - "time": "2022-09-28T13:19:49+00:00" + "time": "2023-02-16T10:14:28+00:00" }, { "name": "symfony/string", - "version": "v5.4.26", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "1181fe9270e373537475e826873b5867b863883c" + "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/1181fe9270e373537475e826873b5867b863883c", - "reference": "1181fe9270e373537475e826873b5867b863883c", + "url": "https://api.github.com/repos/symfony/string/zipball/b45fcf399ea9c3af543a92edf7172ba21174d809", + "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -9551,7 +9542,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.26" + "source": "https://github.com/symfony/string/tree/v6.4.0" }, "funding": [ { @@ -9567,32 +9558,30 @@ "type": "tidelift" } ], - "time": "2023-06-28T12:46:07+00:00" + "time": "2023-11-28T20:41:49+00:00" }, { "name": "symfony/templating", - "version": "v5.4.11", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/templating.git", - "reference": "3933eaad08c7f83672c53f635d7c3988252a658a" + "reference": "c3928c27fe1880095841d8b8ca1860f60b77d566" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/templating/zipball/3933eaad08c7f83672c53f635d7c3988252a658a", - "reference": "3933eaad08c7f83672c53f635d7c3988252a658a", + "url": "https://api.github.com/repos/symfony/templating/zipball/c3928c27fe1880095841d8b8ca1860f60b77d566", + "reference": "c3928c27fe1880095841d8b8ca1860f60b77d566", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8" }, "require-dev": { "psr/log": "^1|^2|^3" }, - "suggest": { - "psr/log-implementation": "For using debug logging in loaders" - }, "type": "library", "autoload": { "psr-4": { @@ -9619,7 +9608,7 @@ "description": "Provides all the tools needed to build any kind of template system", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/templating/tree/v5.4.11" + "source": "https://github.com/symfony/templating/tree/v6.4.0" }, "funding": [ { @@ -9635,57 +9624,55 @@ "type": "tidelift" } ], - "time": "2022-06-27T16:58:25+00:00" + "time": "2023-09-25T12:52:38+00:00" }, { "name": "symfony/translation", - "version": "v5.4.14", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab" + "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/f0ed07675863aa6e3939df8b1bc879450b585cab", - "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab", + "url": "https://api.github.com/repos/symfony/translation/zipball/b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", + "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^2.3" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<4.4", - "symfony/console": "<5.3", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" }, "provide": { - "symfony/translation-implementation": "2.3" + "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { + "nikic/php-parser": "^4.13", "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -9716,7 +9703,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.4.14" + "source": "https://github.com/symfony/translation/tree/v6.4.0" }, "funding": [ { @@ -9732,32 +9719,29 @@ "type": "tidelift" } ], - "time": "2022-10-07T08:01:20+00:00" + "time": "2023-11-29T08:14:36+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.5.2", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" + "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", - "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", "shasum": "" }, "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/translation-implementation": "" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -9767,7 +9751,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Translation\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9794,7 +9781,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" }, "funding": [ { @@ -9810,85 +9797,73 @@ "type": "tidelift" } ], - "time": "2022-06-27T16:58:25+00:00" + "time": "2023-07-25T15:08:44+00:00" }, { "name": "symfony/twig-bridge", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "5a35a669639ac25e4cb3d6d9c968924d96a7eae6" + "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/5a35a669639ac25e4cb3d6d9c968924d96a7eae6", - "reference": "5a35a669639ac25e4cb3d6d9c968924d96a7eae6", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", + "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/translation-contracts": "^2.5|^3", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/console": "<5.3", - "symfony/form": "<5.3", - "symfony/http-foundation": "<5.3", - "symfony/http-kernel": "<4.4", - "symfony/translation": "<5.2", - "symfony/workflow": "<5.2" - }, - "require-dev": { - "doctrine/annotations": "^1.12|^2", - "egulias/email-validator": "^2.1.10|^3", + "symfony/console": "<5.4", + "symfony/form": "<6.3", + "symfony/http-foundation": "<5.4", + "symfony/http-kernel": "<6.4", + "symfony/mime": "<6.2", + "symfony/serializer": "<6.4", + "symfony/translation": "<5.4", + "symfony/workflow": "<5.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3|^4", + "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/console": "^5.3|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/form": "^5.3|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/asset-mapper": "^6.3|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/html-sanitizer": "^6.1|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/security-http": "^4.4|^5.0|^6.0", - "symfony/serializer": "^5.2|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^5.2|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/workflow": "^5.2|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.4|^6.0|^7.0", + "symfony/security-csrf": "^5.4|^6.0|^7.0", + "symfony/security-http": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^6.1|^7.0", + "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/workflow": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0", "twig/cssinliner-extra": "^2.12|^3", "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" }, - "suggest": { - "symfony/asset": "For using the AssetExtension", - "symfony/expression-language": "For using the ExpressionExtension", - "symfony/finder": "", - "symfony/form": "For using the FormExtension", - "symfony/http-kernel": "For using the HttpKernelExtension", - "symfony/routing": "For using the RoutingExtension", - "symfony/security-core": "For using the SecurityExtension", - "symfony/security-csrf": "For using the CsrfExtension", - "symfony/security-http": "For using the LogoutUrlExtension", - "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/translation": "For using the TranslationExtension", - "symfony/var-dumper": "For using the DumpExtension", - "symfony/web-link": "For using the WebLinkExtension", - "symfony/yaml": "For using the YamlExtension" - }, "type": "symfony-bridge", "autoload": { "psr-4": { @@ -9915,7 +9890,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v5.4.17" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.0" }, "funding": [ { @@ -9931,52 +9906,47 @@ "type": "tidelift" } ], - "time": "2022-12-20T11:10:57+00:00" + "time": "2023-11-25T08:25:13+00:00" }, { "name": "symfony/twig-bundle", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "ac21af4eff72ecd65680d2f3d163b5794ce82fc4" + "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/ac21af4eff72ecd65680d2f3d163b5794ce82fc4", - "reference": "ac21af4eff72ecd65680d2f3d163b5794ce82fc4", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/35d84393e598dfb774e6a2bf49e5229a8a6dbe4c", + "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^5.3|^6.0", + "composer-runtime-api": ">=2.1", + "php": ">=8.1", + "symfony/config": "^6.1|^7.0", + "symfony/dependency-injection": "^6.1|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.2", + "symfony/twig-bridge": "^6.4", "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/dependency-injection": "<5.3", - "symfony/framework-bundle": "<5.0", - "symfony/service-contracts": ">=3.0", - "symfony/translation": "<5.0" + "symfony/framework-bundle": "<5.4", + "symfony/translation": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^5.0|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -10004,7 +9974,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v5.4.17" + "source": "https://github.com/symfony/twig-bundle/tree/v6.4.0" }, "funding": [ { @@ -10020,76 +9990,59 @@ "type": "tidelift" } ], - "time": "2022-12-20T11:10:57+00:00" + "time": "2023-11-07T14:57:07+00:00" }, { "name": "symfony/validator", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "621b820204a238d754f7f60241fcbdb1687641ea" + "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/621b820204a238d754f7f60241fcbdb1687641ea", - "reference": "621b820204a238d754f7f60241fcbdb1687641ea", + "url": "https://api.github.com/repos/symfony/validator/zipball/33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c", + "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/translation-contracts": "^1.1|^2|^3" + "symfony/polyfill-php83": "^1.27", + "symfony/translation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.13", - "doctrine/cache": "<1.11", "doctrine/lexer": "<1.1", - "phpunit/phpunit": "<5.4.3", - "symfony/dependency-injection": "<4.4", - "symfony/expression-language": "<5.1", - "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.4", - "symfony/property-info": "<5.3", - "symfony/translation": "<4.4", - "symfony/yaml": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/expression-language": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/intl": "<5.4", + "symfony/property-info": "<5.4", + "symfony/translation": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { "doctrine/annotations": "^1.13|^2", - "doctrine/cache": "^1.11|^2.0", - "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^5.1|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/property-info": "^5.3|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "egulias/email-validator": "Strict (RFC compliant) email validation", - "psr/cache-implementation": "For using the mapping cache.", - "symfony/config": "", - "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For accessing properties within comparison constraints", - "symfony/property-info": "To automatically add NotNull and Type constraints", - "symfony/translation": "For translating validation errors.", - "symfony/yaml": "" + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -10117,7 +10070,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v5.4.17" + "source": "https://github.com/symfony/validator/tree/v6.4.0" }, "funding": [ { @@ -10133,43 +10086,39 @@ "type": "tidelift" } ], - "time": "2022-12-21T19:20:17+00:00" + "time": "2023-11-29T07:47:42+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.19", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "2944bbc23f5f8da2b962fbcbf7c4a6109b2f4b7b" + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2944bbc23f5f8da2b962fbcbf7c4a6109b2f4b7b", - "reference": "2944bbc23f5f8da2b962fbcbf7c4a6109b2f4b7b", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4" + "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, "bin": [ "Resources/bin/var-dump-server" ], @@ -10206,7 +10155,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.19" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" }, "funding": [ { @@ -10222,28 +10171,28 @@ "type": "tidelift" } ], - "time": "2023-01-16T10:52:33+00:00" + "time": "2023-11-09T08:28:32+00:00" }, { "name": "symfony/var-exporter", - "version": "v5.4.17", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "2adac0a9b55f9fb40b983b790509581dc3db0fff" + "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2adac0a9b55f9fb40b983b790509581dc3db0fff", - "reference": "2adac0a9b55f9fb40b983b790509581dc3db0fff", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2d08ca6b9cc704dce525615d1e6d1788734f36d9", + "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -10276,10 +10225,12 @@ "export", "hydrate", "instantiate", + "lazy-loading", + "proxy", "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.4.17" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.1" }, "funding": [ { @@ -10295,43 +10246,42 @@ "type": "tidelift" } ], - "time": "2022-12-22T10:10:04+00:00" + "time": "2023-11-30T10:32:10+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "6c7635fb150af892f6a79f016b6c5386ab112922" + "reference": "14752d3fb77c3c69b6cee7c03c06e2d6494a196b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/6c7635fb150af892f6a79f016b6c5386ab112922", - "reference": "6c7635fb150af892f6a79f016b6c5386ab112922", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/14752d3fb77c3c69b6cee7c03c06e2d6494a196b", + "reference": "14752d3fb77c3c69b6cee7c03c06e2d6494a196b", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "php": ">=8.1", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0", "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/dependency-injection": "<5.2", - "symfony/form": "<4.4", + "symfony/form": "<5.4", "symfony/mailer": "<5.4", - "symfony/messenger": "<4.4" + "symfony/messenger": "<5.4", + "symfony/twig-bundle": ">=7.0" }, "require-dev": { - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0" + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -10358,8 +10308,11 @@ ], "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", + "keywords": [ + "dev" + ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.17" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.0" }, "funding": [ { @@ -10375,42 +10328,48 @@ "type": "tidelift" } ], - "time": "2022-12-13T13:09:23+00:00" + "time": "2023-11-07T14:57:07+00:00" }, { "name": "symfony/workflow", - "version": "v5.4.17", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/workflow.git", - "reference": "245065b70912c1a4ffe78db8987b33d73586331a" + "reference": "06bcb0385811a604131eab6187b04e66844c9b03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/workflow/zipball/245065b70912c1a4ffe78db8987b33d73586331a", - "reference": "245065b70912c1a4ffe78db8987b33d73586331a", + "url": "https://api.github.com/repos/symfony/workflow/zipball/06bcb0385811a604131eab6187b04e66844c9b03", + "reference": "06bcb0385811a604131eab6187b04e66844c9b03", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "symfony/event-dispatcher": "<4.4" + "symfony/event-dispatcher": "<5.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0" + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/security-core": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/validator": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\Workflow\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10441,7 +10400,7 @@ "workflow" ], "support": { - "source": "https://github.com/symfony/workflow/tree/v5.4.17" + "source": "https://github.com/symfony/workflow/tree/v6.4.1" }, "funding": [ { @@ -10457,35 +10416,32 @@ "type": "tidelift" } ], - "time": "2022-12-21T17:19:25+00:00" + "time": "2023-12-01T08:06:02+00:00" }, { "name": "symfony/yaml", - "version": "v5.4.17", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "edcdc11498108f8967fe95118a7ec8624b94760e" + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/edcdc11498108f8967fe95118a7ec8624b94760e", - "reference": "edcdc11498108f8967fe95118a7ec8624b94760e", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587", + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.3" + "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/console": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -10516,7 +10472,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.17" + "source": "https://github.com/symfony/yaml/tree/v6.4.0" }, "funding": [ { @@ -10532,20 +10488,20 @@ "type": "tidelift" } ], - "time": "2022-12-13T09:57:04+00:00" + "time": "2023-11-06T11:00:25+00:00" }, { "name": "tecnickcom/tcpdf", - "version": "6.6.2", + "version": "6.6.5", "source": { "type": "git", "url": "https://github.com/tecnickcom/TCPDF.git", - "reference": "e3cffc9bcbc76e89e167e9eb0bbda0cab7518459" + "reference": "5fce932fcee4371865314ab7f6c0d85423c5c7ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/e3cffc9bcbc76e89e167e9eb0bbda0cab7518459", - "reference": "e3cffc9bcbc76e89e167e9eb0bbda0cab7518459", + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/5fce932fcee4371865314ab7f6c0d85423c5c7ce", + "reference": "5fce932fcee4371865314ab7f6c0d85423c5c7ce", "shasum": "" }, "require": { @@ -10574,7 +10530,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0-only" + "LGPL-3.0-or-later" ], "authors": [ { @@ -10596,7 +10552,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/TCPDF/issues", - "source": "https://github.com/tecnickcom/TCPDF/tree/6.6.2" + "source": "https://github.com/tecnickcom/TCPDF/tree/6.6.5" }, "funding": [ { @@ -10604,31 +10560,31 @@ "type": "custom" } ], - "time": "2022-12-17T10:28:59+00:00" + "time": "2023-09-06T15:09:26+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.5.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "edfcdbdc943b52101011d57ec546af393dc56537" + "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/edfcdbdc943b52101011d57ec546af393dc56537", - "reference": "edfcdbdc943b52101011d57ec546af393dc56537", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", + "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.4|^6.0", + "symfony/twig-bundle": "^5.4|^6.0", "twig/twig": "^2.7|^3.0" }, "require-dev": { "league/commonmark": "^1.0|^2.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", + "symfony/phpunit-bridge": "^5.4|^6.3", "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^2.12|^3.0", "twig/html-extra": "^2.12|^3.0", @@ -10638,11 +10594,6 @@ "twig/string-extra": "^2.12|^3.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.5-dev" - } - }, "autoload": { "psr-4": { "Twig\\Extra\\TwigExtraBundle\\": "" @@ -10671,7 +10622,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.5.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.7.1" }, "funding": [ { @@ -10683,36 +10634,31 @@ "type": "tidelift" } ], - "time": "2022-12-27T12:23:36+00:00" + "time": "2023-07-29T15:34:56+00:00" }, { "name": "twig/intl-extra", - "version": "v3.5.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "92f2c73471e077d0f72195a331c9a245da2010cd" + "reference": "4f4fe572f635534649cc069e1dafe4a8ad63774d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/92f2c73471e077d0f72195a331c9a245da2010cd", - "reference": "92f2c73471e077d0f72195a331c9a245da2010cd", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/4f4fe572f635534649cc069e1dafe4a8ad63774d", + "reference": "4f4fe572f635534649cc069e1dafe4a8ad63774d", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/intl": "^5.4|^6.0", "twig/twig": "^2.7|^3.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.5-dev" - } - }, "autoload": { "psr-4": { "Twig\\Extra\\Intl\\": "" @@ -10740,7 +10686,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.5.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.7.1" }, "funding": [ { @@ -10752,20 +10698,20 @@ "type": "tidelift" } ], - "time": "2022-12-27T12:23:36+00:00" + "time": "2023-07-29T15:34:56+00:00" }, { "name": "twig/twig", - "version": "v2.15.4", + "version": "v2.15.6", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "3e059001d6d597dd50ea7c74dd2464b4adea48d3" + "reference": "ad637405a828601a56f32ccab9a85541c4b66c9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/3e059001d6d597dd50ea7c74dd2464b4adea48d3", - "reference": "3e059001d6d597dd50ea7c74dd2464b4adea48d3", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/ad637405a828601a56f32ccab9a85541c4b66c9d", + "reference": "ad637405a828601a56f32ccab9a85541c4b66c9d", "shasum": "" }, "require": { @@ -10776,7 +10722,7 @@ }, "require-dev": { "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "symfony/phpunit-bridge": "^5.4.9|^6.3" }, "type": "library", "extra": { @@ -10820,7 +10766,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v2.15.4" + "source": "https://github.com/twigphp/Twig/tree/v2.15.6" }, "funding": [ { @@ -10832,7 +10778,7 @@ "type": "tidelift" } ], - "time": "2022-12-27T12:26:20+00:00" + "time": "2023-11-21T17:34:48+00:00" }, { "name": "vlucas/phpdotenv", @@ -11263,23 +11209,23 @@ }, { "name": "codeception/lib-web", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/Codeception/lib-web.git", - "reference": "4c02cf57c5f2d14bbb9f57ea09b38ceacec15d91" + "reference": "28cb2ed1169de18e720bec758015aadc37d8344c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-web/zipball/4c02cf57c5f2d14bbb9f57ea09b38ceacec15d91", - "reference": "4c02cf57c5f2d14bbb9f57ea09b38ceacec15d91", + "url": "https://api.github.com/repos/Codeception/lib-web/zipball/28cb2ed1169de18e720bec758015aadc37d8344c", + "reference": "28cb2ed1169de18e720bec758015aadc37d8344c", "shasum": "" }, "require": { "ext-mbstring": "*", "guzzlehttp/psr7": "^2.0", "php": "^8.0", - "symfony/css-selector": ">=4.4.24 <7.0" + "symfony/css-selector": ">=4.4.24 <8.0" }, "conflict": { "codeception/codeception": "<5.0.0-alpha3" @@ -11310,9 +11256,9 @@ ], "support": { "issues": "https://github.com/Codeception/lib-web/issues", - "source": "https://github.com/Codeception/lib-web/tree/1.0.3" + "source": "https://github.com/Codeception/lib-web/tree/1.0.4" }, - "time": "2023-11-27T06:43:13+00:00" + "time": "2023-12-01T11:38:22+00:00" }, { "name": "codeception/lib-xml", @@ -11717,16 +11663,16 @@ }, { "name": "fakerphp/faker", - "version": "v1.21.0", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d" + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/92efad6a967f0b79c499705c69b662f738cc9e4d", - "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", "shasum": "" }, "require": { @@ -11779,9 +11725,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.21.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" }, - "time": "2022-12-13T13:54:32+00:00" + "time": "2023-06-12T08:44:38+00:00" }, { "name": "mikey179/vfsstream", @@ -12072,16 +12018,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.9.8", + "version": "1.10.47", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "45411d15bf85a33b4a8ee9b75a6e82998c9adb97" + "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/45411d15bf85a33b4a8ee9b75a6e82998c9adb97", - "reference": "45411d15bf85a33b4a8ee9b75a6e82998c9adb97", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/84dbb33b520ea28b6cf5676a3941f4bae1c1ff39", + "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39", "shasum": "" }, "require": { @@ -12110,8 +12056,11 @@ "static analysis" ], "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.8" + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { @@ -12127,7 +12076,7 @@ "type": "tidelift" } ], - "time": "2023-01-08T21:26:18+00:00" + "time": "2023-12-01T15:19:17+00:00" }, { "name": "phpunit/php-code-coverage", @@ -12450,16 +12399,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.13", + "version": "9.6.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be" + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be", - "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", "shasum": "" }, "require": { @@ -12533,7 +12482,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" }, "funding": [ { @@ -12549,7 +12498,7 @@ "type": "tidelift" } ], - "time": "2023-09-19T05:39:22+00:00" + "time": "2023-12-01T16:55:19+00:00" }, { "name": "psy/psysh", @@ -13531,31 +13480,27 @@ }, { "name": "symfony/browser-kit", - "version": "v5.4.11", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "081fe28a26b6bd671dea85ef3a4b5003f3c88027" + "reference": "a3bb210e001580ec75e1d02b27fae3452e6bf502" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/081fe28a26b6bd671dea85ef3a4b5003f3c88027", - "reference": "081fe28a26b6bd671dea85ef3a4b5003f3c88027", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a3bb210e001580ec75e1d02b27fae3452e6bf502", + "reference": "a3bb210e001580ec75e1d02b27fae3452e6bf502", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/dom-crawler": "^5.4|^6.0|^7.0" }, "require-dev": { - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/process": "" + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -13583,7 +13528,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.4.11" + "source": "https://github.com/symfony/browser-kit/tree/v6.4.0" }, "funding": [ { @@ -13599,34 +13544,32 @@ "type": "tidelift" } ], - "time": "2022-07-27T15:50:05+00:00" + "time": "2023-10-31T08:18:17+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v5.4.17", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "2232d32115383602fd7702dfd51e81178364b679" + "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/2232d32115383602fd7702dfd51e81178364b679", - "reference": "2232d32115383602fd7702dfd51e81178364b679", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cca5373a41d45edbeaf38b7b67f376da2205ff95", + "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=7.1.3" }, "conflict": { "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/polyfill-php81": "^1.27" }, "bin": [ "bin/simple-phpunit" @@ -13666,7 +13609,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.17" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.1" }, "funding": [ { @@ -13682,7 +13625,7 @@ "type": "tidelift" } ], - "time": "2022-12-27T08:11:33+00:00" + "time": "2023-12-01T09:25:07+00:00" }, { "name": "symfony/polyfill-iconv", From 5a587a6fb08a095c204dbea3cece0ead08cfb3f0 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 08:26:02 +0900 Subject: [PATCH 014/113] Fix Rate limiter "shopping_checkout_customer" requires the Lock component to be installed. Try running "composer require symfony/lock". --- composer.json | 1 + composer.lock | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 81 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index d123cd7fa85..2bbe633f4b1 100644 --- a/composer.json +++ b/composer.json @@ -74,6 +74,7 @@ "symfony/http-foundation": "^6.4", "symfony/http-kernel": "^6.4", "symfony/intl": "^6.4", + "symfony/lock": "^6.4", "symfony/mailer": "^6.4", "symfony/maker-bundle": "^1.0", "symfony/monolog-bridge": "^6.4", diff --git a/composer.lock b/composer.lock index b7cf46051d5..a421cb915d9 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": "da9538a678f68939821d7d3000535745", + "content-hash": "4afbd917383ac548dd1ce82ed668c695", "packages": [ { "name": "carbonphp/carbon-doctrine-types", @@ -6980,6 +6980,85 @@ ], "time": "2023-10-28T23:12:08+00:00" }, + { + "name": "symfony/lock", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/lock.git", + "reference": "49c2d0ae4777d118edb13f23d0b4f125d7302cb3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/lock/zipball/49c2d0ae4777d118edb13f23d0b4f125d7302cb3", + "reference": "49c2d0ae4777d118edb13f23d0b4f125d7302cb3", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/dbal": "<2.13", + "symfony/cache": "<6.2" + }, + "require-dev": { + "doctrine/dbal": "^2.13|^3|^4", + "predis/predis": "^1.1|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Lock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jérémy Derussé", + "email": "jeremy@derusse.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Creates and manages locks, a mechanism to provide exclusive access to a shared resource", + "homepage": "https://symfony.com", + "keywords": [ + "cas", + "flock", + "locking", + "mutex", + "redlock", + "semaphore" + ], + "support": { + "source": "https://github.com/symfony/lock/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-21T09:41:01+00:00" + }, { "name": "symfony/mailer", "version": "v6.4.0", From 0a0cc2691dbff76cc355b81ce03f596b2bcf1426 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 08:51:46 +0900 Subject: [PATCH 015/113] =?UTF-8?q?symfony6=E3=81=B8=E3=81=AE=E3=82=A2?= =?UTF-8?q?=E3=83=83=E3=83=97=E3=83=87=E3=83=BC=E3=83=88=E3=81=AB=E4=BC=B4?= =?UTF-8?q?=E3=81=86=E5=9E=8B=E5=AE=A3=E8=A8=80=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DependencyInjection/EccubeExtension.php | 2 +- src/Eccube/EccubeBundle.php | 3 ++- src/Eccube/Kernel.php | 6 +++--- .../EccubeAuthenticationFailureHandler.php | 3 ++- .../EccubeAuthenticationSuccessHandler.php | 3 ++- .../SameSiteNoneCompatSessionHandler.php | 17 ++++++++--------- 6 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/Eccube/DependencyInjection/EccubeExtension.php b/src/Eccube/DependencyInjection/EccubeExtension.php index fc63801894b..4bf9a009f63 100644 --- a/src/Eccube/DependencyInjection/EccubeExtension.php +++ b/src/Eccube/DependencyInjection/EccubeExtension.php @@ -35,7 +35,7 @@ public function load(array $configs, ContainerBuilder $container) $configs = $this->processConfiguration($configuration, $configs); } - public function getAlias() + public function getAlias(): string { return 'eccube'; } diff --git a/src/Eccube/EccubeBundle.php b/src/Eccube/EccubeBundle.php index 26ec7a19078..ec4590de96b 100644 --- a/src/Eccube/EccubeBundle.php +++ b/src/Eccube/EccubeBundle.php @@ -13,11 +13,12 @@ namespace Eccube; +use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; use Symfony\Component\HttpKernel\Bundle\Bundle; class EccubeBundle extends Bundle { - public function getContainerExtension() + public function getContainerExtension(): ?ExtensionInterface { return $this->extension = $this->createContainerExtension(); } diff --git a/src/Eccube/Kernel.php b/src/Eccube/Kernel.php index 617a5bd5ba5..dd1852281ab 100644 --- a/src/Eccube/Kernel.php +++ b/src/Eccube/Kernel.php @@ -64,17 +64,17 @@ public function __construct(string $environment, bool $debug) $this->loadEntityProxies(); } - public function getCacheDir() + public function getCacheDir(): string { return $this->getProjectDir().'/var/cache/'.$this->environment; } - public function getLogDir() + public function getLogDir(): string { return $this->getProjectDir().'/var/log'; } - public function registerBundles() + public function registerBundles(): iterable { $contents = require $this->getProjectDir().'/app/config/eccube/bundles.php'; foreach ($contents as $class => $envs) { diff --git a/src/Eccube/Security/Http/Authentication/EccubeAuthenticationFailureHandler.php b/src/Eccube/Security/Http/Authentication/EccubeAuthenticationFailureHandler.php index 0fad7ba9659..8f6566fd533 100644 --- a/src/Eccube/Security/Http/Authentication/EccubeAuthenticationFailureHandler.php +++ b/src/Eccube/Security/Http/Authentication/EccubeAuthenticationFailureHandler.php @@ -14,6 +14,7 @@ namespace Eccube\Security\Http\Authentication; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\Routing\Exception\RouteNotFoundException; use Symfony\Component\Security\Core\Exception\AuthenticationException; @@ -24,7 +25,7 @@ class EccubeAuthenticationFailureHandler extends DefaultAuthenticationFailureHan /** * {@inheritdoc} */ - public function onAuthenticationFailure(Request $request, AuthenticationException $exception) + public function onAuthenticationFailure(Request $request, AuthenticationException $exception): Response { try { $response = parent::onAuthenticationFailure($request, $exception); diff --git a/src/Eccube/Security/Http/Authentication/EccubeAuthenticationSuccessHandler.php b/src/Eccube/Security/Http/Authentication/EccubeAuthenticationSuccessHandler.php index df77821267e..f3ded69082e 100644 --- a/src/Eccube/Security/Http/Authentication/EccubeAuthenticationSuccessHandler.php +++ b/src/Eccube/Security/Http/Authentication/EccubeAuthenticationSuccessHandler.php @@ -14,6 +14,7 @@ namespace Eccube\Security\Http\Authentication; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\Routing\Exception\RouteNotFoundException; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; @@ -24,7 +25,7 @@ class EccubeAuthenticationSuccessHandler extends DefaultAuthenticationSuccessHan /** * {@inheritdoc} */ - public function onAuthenticationSuccess(Request $request, TokenInterface $token) + public function onAuthenticationSuccess(Request $request, TokenInterface $token): ?Response { try { $response = parent::onAuthenticationSuccess($request, $token); diff --git a/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php b/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php index 7a86dbca831..6d897aed1ff 100644 --- a/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php +++ b/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php @@ -47,7 +47,7 @@ public function __construct(\SessionHandlerInterface $handler) * {@inheritdoc} */ #[\ReturnTypeWillChange] - public function open($savePath, $sessionName) + public function open($savePath, $sessionName): bool { $this->sessionName = $sessionName; // see https://github.com/symfony/symfony/blob/2adc85d49cbe14e346068fa7e9c2e1f08ab31de6/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/AbstractSessionHandler.php#L35-L37 @@ -61,7 +61,7 @@ public function open($savePath, $sessionName) /** * {@inheritdoc} */ - protected function doRead($sessionId) + protected function doRead($sessionId): string { return $this->handler->read($sessionId); } @@ -70,7 +70,7 @@ protected function doRead($sessionId) * {@inheritdoc} */ #[\ReturnTypeWillChange] - public function updateTimestamp($sessionId, $data) + public function updateTimestamp($sessionId, $data): bool { return $this->write($sessionId, $data); } @@ -78,7 +78,7 @@ public function updateTimestamp($sessionId, $data) /** * {@inheritdoc} */ - protected function doWrite($sessionId, $data) + protected function doWrite($sessionId, $data): bool { return $this->handler->write($sessionId, $data); } @@ -89,7 +89,7 @@ protected function doWrite($sessionId, $data) * @see https://github.com/symfony/symfony/blob/2adc85d49cbe14e346068fa7e9c2e1f08ab31de6/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/AbstractSessionHandler.php#L126-L167 */ #[\ReturnTypeWillChange] - public function destroy($sessionId) + public function destroy($sessionId): bool { if (\PHP_VERSION_ID < 70000) { $this->prefetchData = null; @@ -145,7 +145,7 @@ public function destroy($sessionId) /** * {@inheritdoc} */ - protected function doDestroy($sessionId) + protected function doDestroy($sessionId): bool { $this->doDestroy = false; @@ -155,8 +155,7 @@ protected function doDestroy($sessionId) /** * {@inheritdoc} */ - #[\ReturnTypeWillChange] - public function close() + public function close(): bool { return $this->handler->close(); } @@ -165,7 +164,7 @@ public function close() * {@inheritdoc} */ #[\ReturnTypeWillChange] - public function gc($maxlifetime) + public function gc($maxlifetime): int|false { return $this->handler->gc($maxlifetime); } From b93ad9c2cefe8f35b526bffe1e13a2bb4e9ab715 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 09:15:59 +0900 Subject: [PATCH 016/113] Fix Error: Class Eccube\Security\Core\User\Customer/MemberProvider contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Symfony\Component\Security\Core\User\UserProviderInterface::loadUserByIdentifier) --- src/Eccube/Security/Core/User/CustomerProvider.php | 6 ++++++ src/Eccube/Security/Core/User/MemberProvider.php | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/Eccube/Security/Core/User/CustomerProvider.php b/src/Eccube/Security/Core/User/CustomerProvider.php index 4b8ecccbb32..de809cf53be 100644 --- a/src/Eccube/Security/Core/User/CustomerProvider.php +++ b/src/Eccube/Security/Core/User/CustomerProvider.php @@ -86,4 +86,10 @@ public function supportsClass($class) { return Customer::class === $class || is_subclass_of($class, Customer::class); } + + public function loadUserByIdentifier(string $identifier): UserInterface + { + // FIXME deprecated + return $this->loadUserByUsername($identifier); + } } diff --git a/src/Eccube/Security/Core/User/MemberProvider.php b/src/Eccube/Security/Core/User/MemberProvider.php index cf6729d16c4..e38e298cd73 100644 --- a/src/Eccube/Security/Core/User/MemberProvider.php +++ b/src/Eccube/Security/Core/User/MemberProvider.php @@ -83,4 +83,10 @@ public function supportsClass($class) { return Member::class === $class || is_subclass_of($class, Member::class); } + + public function loadUserByIdentifier(string $identifier): UserInterface + { + // FIXME deprecated + return $this->loadUserByUsername($identifier); + } } From b42281c7669d9b9ac1c6084984d673eaaf727e85 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 10:08:17 +0900 Subject: [PATCH 017/113] Fix "Removed LogoutSuccessHandlerInterface and LogoutHandlerInterface, register a listener on the LogoutEvent event instead." --- app/config/eccube/packages/security.yaml | 1 - .../EccubeLogoutSuccessHandler.php | 19 ++++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/config/eccube/packages/security.yaml b/app/config/eccube/packages/security.yaml index f49a1f9da2e..50761efd14d 100644 --- a/app/config/eccube/packages/security.yaml +++ b/app/config/eccube/packages/security.yaml @@ -39,7 +39,6 @@ security: interval: '%eccube_login_throttling_interval%' logout: path: admin_logout - success_handler: eccube.security.logout.success_handler customer: pattern: ^/ provider: customer_provider diff --git a/src/Eccube/Security/Http/Authentication/EccubeLogoutSuccessHandler.php b/src/Eccube/Security/Http/Authentication/EccubeLogoutSuccessHandler.php index 0c2a41d73a7..5c6e589bae9 100644 --- a/src/Eccube/Security/Http/Authentication/EccubeLogoutSuccessHandler.php +++ b/src/Eccube/Security/Http/Authentication/EccubeLogoutSuccessHandler.php @@ -15,29 +15,30 @@ use Eccube\Request\Context; use Eccube\Service\SystemService; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\Security\Http\HttpUtils; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\Security\Http\Event\LogoutEvent; use Symfony\Component\Security\Http\Logout\DefaultLogoutSuccessHandler; -class EccubeLogoutSuccessHandler extends DefaultLogoutSuccessHandler +class EccubeLogoutSuccessHandler implements EventSubscriberInterface { /** @var Context */ protected $context; - public function __construct(HttpUtils $httpUtils, Context $context, $targetUrl = '/') + public function __construct(Context $context) { - parent::__construct($httpUtils, $targetUrl); $this->context = $context; } - public function onLogoutSuccess(Request $request) + public function onLogout(LogoutEvent $event) { - $response = parent::onLogoutSuccess($request); - if ($this->context->isAdmin()) { + $response = $event->getResponse(); $response->headers->clearCookie(SystemService::MAINTENANCE_TOKEN_KEY); } + } - return $response; + public static function getSubscribedEvents() + { + return [LogoutEvent::class => 'onLogout']; } } From 20db63217aefb7eb7dc39404aaf76dd4ff9e0530 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 11:32:13 +0900 Subject: [PATCH 018/113] PasswordEncoder -> PasswordHasher --- app/config/eccube/packages/security.yaml | 16 ++-- app/config/eccube/services.yaml | 6 ++ .../Security/Core/Encoder/PasswordEncoder.php | 2 +- .../PasswordHasher/PasswordHasher.php | 78 +++++++++++++++++++ 4 files changed, 95 insertions(+), 7 deletions(-) create mode 100644 src/Eccube/Security/PasswordHasher/PasswordHasher.php diff --git a/app/config/eccube/packages/security.yaml b/app/config/eccube/packages/security.yaml index 50761efd14d..bf45d9254c8 100644 --- a/app/config/eccube/packages/security.yaml +++ b/app/config/eccube/packages/security.yaml @@ -1,12 +1,16 @@ security: enable_authenticator_manager: true - encoders: - # Our user class and the algorithm we'll use to encode passwords - # https://symfony.com/doc/current/security.html#c-encoding-the-user-s-password - Eccube\Entity\Member: - id: Eccube\Security\Core\Encoder\PasswordEncoder + password_hashers: + legacy: + id: 'Eccube\Security\PasswordHasher\PasswordHasher' Eccube\Entity\Customer: - id: Eccube\Security\Core\Encoder\PasswordEncoder + algorithm: 'auto' + migrate_from: + - legacy + Eccube\Entity\Member: + algorithm: 'auto' + migrate_from: + - legacy providers: # https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded # In this example, users are stored via Doctrine in the database diff --git a/app/config/eccube/services.yaml b/app/config/eccube/services.yaml index 50e67e4a9bc..74aeee7e01b 100644 --- a/app/config/eccube/services.yaml +++ b/app/config/eccube/services.yaml @@ -216,3 +216,9 @@ services: Eccube\EventListener\RateLimiterListener: arguments: [ !tagged_locator { tag: 'eccube_rate_limiter' } ] + + Eccube\Security\PasswordHasher\PasswordHasher: + arguments: + - '%eccube_auth_magic%' + - '%eccube_auth_type%' + - '%eccube_password_hash_algos%' diff --git a/src/Eccube/Security/Core/Encoder/PasswordEncoder.php b/src/Eccube/Security/Core/Encoder/PasswordEncoder.php index 93a114f8d9f..d8762a981f9 100644 --- a/src/Eccube/Security/Core/Encoder/PasswordEncoder.php +++ b/src/Eccube/Security/Core/Encoder/PasswordEncoder.php @@ -16,7 +16,7 @@ use Eccube\Common\EccubeConfig; use Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface; -class PasswordEncoder implements PasswordEncoderInterface +class PasswordEncoder { /** * @var string diff --git a/src/Eccube/Security/PasswordHasher/PasswordHasher.php b/src/Eccube/Security/PasswordHasher/PasswordHasher.php new file mode 100644 index 00000000000..6636240c727 --- /dev/null +++ b/src/Eccube/Security/PasswordHasher/PasswordHasher.php @@ -0,0 +1,78 @@ +auth_magic = $auth_magic; + $this->auth_type = $auth_type; + $this->password_hash_algos = $password_hash_algos; + } + + public function hash(string $plainPassword, string $salt = null): string + { + $salt = $salt ?? ''; + if ($salt === '') { + $salt = $this->auth_magic; + } + if ($this->auth_type == self::AUTH_TYPE_PLAIN) { + $res = $plainPassword; + } else { + $res = hash_hmac($this->password_hash_algos, $plainPassword.':'.$this->auth_magic, $salt); + } + + return $res; + } + + public function verify(string $hashedPassword, string $plainPassword, string $salt = null): bool + { + if ($hashedPassword === '') { + return false; + } + + if ($this->auth_type == self::AUTH_TYPE_PLAIN) { + if ($plainPassword === $hashedPassword) { + return true; + } + } else { + // 旧バージョン(2.11未満)からの移行を考慮 + if (empty($salt)) { + $hash = sha1($plainPassword.':'.$this->auth_magic); + } else { + $hash = $this->hash($plainPassword, $salt); + } + + if ($hash === $hashedPassword) { + return true; + } + } + + return false; + } + + public function needsRehash(string $hashedPassword): bool + { + return true; + } +} From c610fd88d0a425fe2cd9271de0fb356517270f65 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 11:35:51 +0900 Subject: [PATCH 019/113] Fix Compile Error: Declaration of Eccube\Entity\Member|Customer::getRoles() must be compatible with Symfony\Component\Security\Core\User\UserInterface::getRoles(): array --- src/Eccube/Entity/Customer.php | 2 +- src/Eccube/Entity/Member.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Eccube/Entity/Customer.php b/src/Eccube/Entity/Customer.php index 611414b58d4..b2cf3634ecb 100644 --- a/src/Eccube/Entity/Customer.php +++ b/src/Eccube/Entity/Customer.php @@ -312,7 +312,7 @@ public function __toString() /** * {@inheritdoc} */ - public function getRoles() + public function getRoles(): array { return ['ROLE_USER']; } diff --git a/src/Eccube/Entity/Member.php b/src/Eccube/Entity/Member.php index 18127b3ebe9..f4d631563a9 100644 --- a/src/Eccube/Entity/Member.php +++ b/src/Eccube/Entity/Member.php @@ -50,7 +50,7 @@ public function __toString() /** * {@inheritdoc} */ - public function getRoles() + public function getRoles(): array { return ['ROLE_ADMIN']; } From 96d9247b09ab1d70ae4fc54e8b0534e0aa1f8538 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 11:36:19 +0900 Subject: [PATCH 020/113] Fix Error: Class Eccube\Entity\Member|Customer contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Symfony\Component\Security\Core\User\UserInterface::getUserIdentifier) --- src/Eccube/Entity/Customer.php | 5 +++++ src/Eccube/Entity/Member.php | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/Eccube/Entity/Customer.php b/src/Eccube/Entity/Customer.php index b2cf3634ecb..b10e0436164 100644 --- a/src/Eccube/Entity/Customer.php +++ b/src/Eccube/Entity/Customer.php @@ -1218,5 +1218,10 @@ public function unserialize($serialized) $this->password, $this->salt) = unserialize($serialized); } + + public function getUserIdentifier(): string + { + return $this->email; + } } } diff --git a/src/Eccube/Entity/Member.php b/src/Eccube/Entity/Member.php index f4d631563a9..21c492b0f1b 100644 --- a/src/Eccube/Entity/Member.php +++ b/src/Eccube/Entity/Member.php @@ -600,5 +600,10 @@ public function unserialize($serialized) $this->password, $this->salt) = unserialize($serialized); } + + public function getUserIdentifier(): string + { + return $this->email; + } } } From 9d6ffc5cca309f39d9fe2841f1b39637a165873f Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 12:31:39 +0900 Subject: [PATCH 021/113] Fix "Remove AuthenticationEvents::AUTHENTICATION_FAILURE, use the LoginFailureEvent instead" --- src/Eccube/EventListener/SecurityListener.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Eccube/EventListener/SecurityListener.php b/src/Eccube/EventListener/SecurityListener.php index 2242c57e7d6..c55920e5102 100644 --- a/src/Eccube/EventListener/SecurityListener.php +++ b/src/Eccube/EventListener/SecurityListener.php @@ -25,6 +25,7 @@ use Symfony\Component\Security\Core\AuthenticationEvents; use Symfony\Component\Security\Core\Event\AuthenticationFailureEvent; use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; +use Symfony\Component\Security\Http\Event\LoginFailureEvent; use Symfony\Component\Security\Http\SecurityEvents; class SecurityListener implements EventSubscriberInterface @@ -106,7 +107,7 @@ public static function getSubscribedEvents() { return [ SecurityEvents::INTERACTIVE_LOGIN => 'onInteractiveLogin', - AuthenticationEvents::AUTHENTICATION_FAILURE => 'onAuthenticationFailure', + LoginFailureEvent::class => 'onAuthenticationFailure', ]; } } From c954f0aff0c0f9eff93add6be9526bc4a502f4b5 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 12:39:42 +0900 Subject: [PATCH 022/113] Fix "Drop support for SessionInterface $session as constructor argument of SessionTokenStorage, inject a \Symfony\Component\HttpFoundation\RequestStack $requestStack instead" --- .../eccube/packages/codeception/generator.yaml | 2 +- app/config/eccube/packages/dev/generator.yaml | 2 +- app/config/eccube/packages/test/generator.yaml | 2 +- tests/Eccube/Tests/Fixture/Generator.php | 18 ++++++++++++------ 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/config/eccube/packages/codeception/generator.yaml b/app/config/eccube/packages/codeception/generator.yaml index c48bd1bf6df..7aed1f19585 100644 --- a/app/config/eccube/packages/codeception/generator.yaml +++ b/app/config/eccube/packages/codeception/generator.yaml @@ -16,7 +16,7 @@ services: - '@Eccube\Repository\TagRepository' - '@Eccube\Repository\TaxRuleRepository' - '@eccube.purchase.flow.order' - - '@session' + - '@request_stack' - 'ja_JP' lazy: true public: true # Codeception対応 diff --git a/app/config/eccube/packages/dev/generator.yaml b/app/config/eccube/packages/dev/generator.yaml index 41493bade30..2278bfc12a1 100644 --- a/app/config/eccube/packages/dev/generator.yaml +++ b/app/config/eccube/packages/dev/generator.yaml @@ -16,6 +16,6 @@ services: - '@Eccube\Repository\TagRepository' - '@Eccube\Repository\TaxRuleRepository' - '@eccube.purchase.flow.order' - - '@session' + - '@request_stack' - 'ja_JP' lazy: true diff --git a/app/config/eccube/packages/test/generator.yaml b/app/config/eccube/packages/test/generator.yaml index c48bd1bf6df..7aed1f19585 100644 --- a/app/config/eccube/packages/test/generator.yaml +++ b/app/config/eccube/packages/test/generator.yaml @@ -16,7 +16,7 @@ services: - '@Eccube\Repository\TagRepository' - '@Eccube\Repository\TaxRuleRepository' - '@eccube.purchase.flow.order' - - '@session' + - '@request_stack' - 'ja_JP' lazy: true public: true # Codeception対応 diff --git a/tests/Eccube/Tests/Fixture/Generator.php b/tests/Eccube/Tests/Fixture/Generator.php index 7c2f4e1c15d..94164817882 100644 --- a/tests/Eccube/Tests/Fixture/Generator.php +++ b/tests/Eccube/Tests/Fixture/Generator.php @@ -55,6 +55,7 @@ use Eccube\Service\PurchaseFlow\PurchaseContext; use Eccube\Service\PurchaseFlow\PurchaseFlow; use Eccube\Util\StringUtil; +use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Session\SessionInterface; /** @@ -146,6 +147,11 @@ class Generator */ protected $session; + /** + * @var RequestStack + */ + protected $requestStack; + /** * @var PurchaseFlow */ @@ -167,7 +173,7 @@ public function __construct( TagRepository $tagRepository, TaxRuleRepository $taxRuleRepository, PurchaseFlow $orderPurchaseFlow, - SessionInterface $session, + RequestStack $requestStack, $locale = 'ja_JP' ) { $this->locale = $locale; @@ -186,7 +192,7 @@ public function __construct( $this->tagRepository = $tagRepository; $this->taxRuleRepository = $taxRuleRepository; $this->orderPurchaseFlow = $orderPurchaseFlow; - $this->session = $session; + $this->requestStack = $requestStack; } /** @@ -312,12 +318,12 @@ public function createCustomerAddress(Customer $Customer, $is_nonmember = false) $Customer->addCustomerAddress($CustomerAddress); // TODO 外部でやった方がいい? $sessionCustomerAddressKey = 'eccube.front.shopping.nonmember.customeraddress'; - $customerAddresses = unserialize($this->session->get($sessionCustomerAddressKey)); + $customerAddresses = unserialize($this->requestStack->getSession()->get($sessionCustomerAddressKey)); if (!is_array($customerAddresses)) { $customerAddresses = []; } $customerAddresses[] = $CustomerAddress; - $this->session->set($sessionCustomerAddressKey, serialize($customerAddresses)); + $this->requestStack->getSession()->set($sessionCustomerAddressKey, serialize($customerAddresses)); } else { $this->entityManager->persist($CustomerAddress); $this->entityManager->flush(); @@ -362,10 +368,10 @@ public function createNonMember($email = null) $nonMember = []; $nonMember['customer'] = $Customer; $nonMember['pref'] = $Customer->getPref()->getId(); - $this->session->set($sessionKey, $nonMember); + $this->requestStack->getSession()->set($sessionKey, $nonMember); $customerAddresses = []; - $this->session->set($sessionCustomerAddressKey, serialize($customerAddresses)); + $this->requestStack->getSession()->set($sessionCustomerAddressKey, serialize($customerAddresses)); return $Customer; } From 9b62f2d4602ed58e7d0679fe64931295fc960702 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 15:37:56 +0900 Subject: [PATCH 023/113] Fix "Removed the Psr\Container\ContainerInterface and Symfony\Component\DependencyInjection\ContainerInterface aliases of the service_container service, configure them explicitly instead." --- src/Eccube/Command/DeleteCartsCommand.php | 14 ++++----- src/Eccube/Command/GenerateProxyCommand.php | 14 ++++----- src/Eccube/Command/InstallerCommand.php | 30 +++++++++---------- .../Command/LoadDataFixturesEccubeCommand.php | 22 +++++++------- src/Eccube/Command/PluginGenerateCommand.php | 14 ++++----- 5 files changed, 46 insertions(+), 48 deletions(-) diff --git a/src/Eccube/Command/DeleteCartsCommand.php b/src/Eccube/Command/DeleteCartsCommand.php index 794ff19b5e9..5cdb63352cf 100644 --- a/src/Eccube/Command/DeleteCartsCommand.php +++ b/src/Eccube/Command/DeleteCartsCommand.php @@ -14,22 +14,22 @@ namespace Eccube\Command; use Doctrine\ORM\EntityManagerInterface; +use Eccube\Common\EccubeConfig; use Eccube\Repository\CartRepository; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -use Symfony\Component\DependencyInjection\ContainerInterface; class DeleteCartsCommand extends Command { protected static $defaultName = 'eccube:delete-carts'; /** - * @var ContainerInterface + * @var EccubeConfig */ - protected $container; + protected $eccubeConfig; /** * @var SymfonyStyle @@ -60,11 +60,11 @@ class DeleteCartsCommand extends Command */ private $cartRepository; - public function __construct(ContainerInterface $container, EntityManagerInterface $entityManager, CartRepository $cartRepository) + public function __construct(EccubeConfig $eccubeConfig, EntityManagerInterface $entityManager, CartRepository $cartRepository) { parent::__construct(); - $this->container = $container; + $this->eccubeConfig = $eccubeConfig; $this->entityManager = $entityManager; $this->cartRepository = $cartRepository; } @@ -105,8 +105,8 @@ protected function interact(InputInterface $input, OutputInterface $output) protected function initialize(InputInterface $input, OutputInterface $output) { $this->io = new SymfonyStyle($input, $output); - $this->locale = $this->container->getParameter('locale'); - $this->timezone = new \DateTimeZone($this->container->getParameter('timezone')); + $this->locale = $this->eccubeConfig->get('locale'); + $this->timezone = new \DateTimeZone($this->eccubeConfig->get('timezone')); $this->formatter = $this->createIntlFormatter(); } diff --git a/src/Eccube/Command/GenerateProxyCommand.php b/src/Eccube/Command/GenerateProxyCommand.php index 47ee7983aa8..3e67750945a 100644 --- a/src/Eccube/Command/GenerateProxyCommand.php +++ b/src/Eccube/Command/GenerateProxyCommand.php @@ -14,11 +14,11 @@ namespace Eccube\Command; use Doctrine\Common\Annotations\AnnotationRegistry; +use Eccube\Common\EccubeConfig; use Eccube\Service\EntityProxyService; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; class GenerateProxyCommand extends Command { @@ -30,15 +30,15 @@ class GenerateProxyCommand extends Command private $entityProxyService; /** - * @var ContainerInterface + * @var EccubeConfig */ - private $container; + private $eccubeConfig; - public function __construct(EntityProxyService $entityProxyService, ContainerInterface $container) + public function __construct(EntityProxyService $entityProxyService, EccubeConfig $eccubeConfig) { parent::__construct(); $this->entityProxyService = $entityProxyService; - $this->container = $container; + $this->eccubeConfig = $eccubeConfig; } protected function configure() @@ -52,10 +52,10 @@ protected function execute(InputInterface $input, OutputInterface $output) // アノテーションを読み込めるように設定. AnnotationRegistry::registerAutoloadNamespace('Eccube\Annotation', __DIR__.'/../../../src'); - $projectDir = $this->container->getParameter('kernel.project_dir'); + $projectDir = $this->eccubeConfig->get('kernel.project_dir'); $includeDirs = [$projectDir.'/app/Customize/Entity']; - $enabledPlugins = $this->container->getParameter('eccube.plugins.enabled'); + $enabledPlugins = $this->eccubeConfig->get('eccube.plugins.enabled'); foreach ($enabledPlugins as $code) { if (file_exists($projectDir.'/app/Plugin/'.$code.'/Entity')) { $includeDirs[] = $projectDir.'/app/Plugin/'.$code.'/Entity'; diff --git a/src/Eccube/Command/InstallerCommand.php b/src/Eccube/Command/InstallerCommand.php index 3a4d921eebf..78351292174 100644 --- a/src/Eccube/Command/InstallerCommand.php +++ b/src/Eccube/Command/InstallerCommand.php @@ -15,13 +15,13 @@ use Doctrine\DBAL\DriverManager; use Dotenv\Dotenv; +use Eccube\Common\EccubeConfig; use Eccube\Util\StringUtil; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\ConfirmationQuestion; use Symfony\Component\Console\Style\SymfonyStyle; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Process\Exception\ProcessFailedException; use Symfony\Component\Process\Process; @@ -30,9 +30,9 @@ class InstallerCommand extends Command protected static $defaultName = 'eccube:install'; /** - * @var ContainerInterface + * @var EccubeConfig */ - protected $container; + protected $eccubeConfig; /** * @var SymfonyStyle @@ -46,11 +46,11 @@ class InstallerCommand extends Command private $envFileUpdater; - public function __construct(ContainerInterface $container) + public function __construct(EccubeConfig $eccubeConfig) { parent::__construct(); - $this->container = $container; + $this->eccubeConfig = $eccubeConfig; /* env更新処理無名クラス */ $this->envFileUpdater = new class() { @@ -90,7 +90,7 @@ private function getEnvParameters() */ public function updateEnvFile() { - // $envDir = $this->container->getParameter('kernel.project_dir'); + // $envDir = $this->eccubeConfig->get('kernel.project_dir'); $envFile = $this->envDir.'/.env'; $envDistFile = $this->envDir.'/.env.dist'; @@ -133,7 +133,7 @@ protected function interact(InputInterface $input, OutputInterface $output) $this->envFileUpdater->trustedHosts = $this->io->ask('Trusted hosts. ex) www.example.com, localhost ...etc', $trustedHosts); // DATABASE_URL - $databaseUrl = $this->container->getParameter('eccube_database_url'); + $databaseUrl = $this->eccubeConfig->get('eccube_database_url'); if (empty($databaseUrl)) { $databaseUrl = 'sqlite:///var/eccube.db'; } @@ -147,14 +147,14 @@ protected function interact(InputInterface $input, OutputInterface $output) $this->envFileUpdater->databaseCharset = \str_starts_with($databaseUrl, 'mysql') ? 'utf8mb4' : 'utf8'; // MAILER_DSN - $mailerDsn = $this->container->getParameter('eccube_mailer_dsn'); + $mailerDsn = $this->eccubeConfig->get('eccube_mailer_dsn'); if (empty($mailerDsn)) { $mailerDsn = 'null://null'; } $this->envFileUpdater->mailerDsn = $this->io->ask('Mailer Dsn', $mailerDsn); // ECCUBE_AUTH_MAGIC - $authMagic = $this->container->getParameter('eccube_auth_magic'); + $authMagic = $this->eccubeConfig->get('eccube_auth_magic'); if (empty($authMagic) || $authMagic === '') { $authMagic = StringUtil::random(); } @@ -173,21 +173,21 @@ protected function interact(InputInterface $input, OutputInterface $output) $this->envFileUpdater->appDebug = env('APP_DEBUG', '0'); // ECCUBE_ADMIN_ROUTE - $adminRoute = $this->container->getParameter('eccube_admin_route'); + $adminRoute = $this->eccubeConfig->get('eccube_admin_route'); if (empty($adminRoute)) { $adminRoute = 'admin'; } $this->envFileUpdater->adminRoute = $adminRoute; // ECCUBE_TEMPLATE_CODE - $templateCode = $this->container->getParameter('eccube_theme_code'); + $templateCode = $this->eccubeConfig->get('eccube_theme_code'); if (empty($templateCode)) { $templateCode = 'default'; } $this->envFileUpdater->templateCode = $templateCode; // ECCUBE_LOCALE - $locale = $this->container->getParameter('locale'); + $locale = $this->eccubeConfig->get('locale'); if (empty($locale)) { $locale = 'ja'; } @@ -205,7 +205,7 @@ protected function interact(InputInterface $input, OutputInterface $output) } // envファイルへの更新反映処理 - $this->envFileUpdater->envDir = $this->container->getParameter('kernel.project_dir'); + $this->envFileUpdater->envDir = $this->eccubeConfig->get('kernel.project_dir'); $this->envFileUpdater->updateEnvFile(); } @@ -219,13 +219,13 @@ protected function execute(InputInterface $input, OutputInterface $output) // Process実行時に, APP_ENV/APP_DEBUGが子プロセスに引き継がれてしまうため, // 生成された.envをロードして上書きする. if ($input->isInteractive()) { - $envDir = $this->container->getParameter('kernel.project_dir'); + $envDir = $this->eccubeConfig->get('kernel.project_dir'); if (file_exists($envDir.'/.env')) { (Dotenv::createUnsafeMutable($envDir))->load(); } } - // 対話モード実行時, container->getParameter('eccube_database_url')では + // 対話モード実行時, eccubeConfig->get('eccube_database_url')では // 更新後の値が取得できないため, getenv()を使用する. $databaseUrl = getenv('DATABASE_URL'); $databaseName = $this->getDatabaseName($databaseUrl); diff --git a/src/Eccube/Command/LoadDataFixturesEccubeCommand.php b/src/Eccube/Command/LoadDataFixturesEccubeCommand.php index aa694761f1b..f51df7d2cc1 100644 --- a/src/Eccube/Command/LoadDataFixturesEccubeCommand.php +++ b/src/Eccube/Command/LoadDataFixturesEccubeCommand.php @@ -18,7 +18,6 @@ use Eccube\Common\EccubeConfig; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Filesystem\Filesystem; class LoadDataFixturesEccubeCommand extends DoctrineCommand @@ -26,14 +25,14 @@ class LoadDataFixturesEccubeCommand extends DoctrineCommand protected static $defaultName = 'eccube:fixtures:load'; /** - * @var ContainerInterface + * @var EccubeConfig */ - protected $container; + protected $eccubeConfig; - public function __construct(ManagerRegistry $registry, ContainerInterface $container) + public function __construct(ManagerRegistry $registry, EccubeConfig $eccubeConfig) { parent::__construct($registry); - $this->container = $container; + $this->eccubeConfig = $eccubeConfig; } protected function configure() @@ -67,7 +66,6 @@ protected function execute(InputInterface $input, OutputInterface $output) $login_id = env('ECCUBE_ADMIN_USER', 'admin'); $login_password = env('ECCUBE_ADMIN_PASS', 'password'); - $eccubeConfig = $this->container->get(EccubeConfig::class); $encoder = new \Eccube\Security\Core\Encoder\PasswordEncoder($eccubeConfig); $salt = \Eccube\Util\StringUtil::random(32); @@ -119,20 +117,20 @@ protected function execute(InputInterface $input, OutputInterface $output) ]); $faviconPath = '/assets/img/common/favicon.ico'; - if (!file_exists($this->container->getParameter('eccube_html_dir').'/user_data'.$faviconPath)) { + if (!file_exists($this->eccubeConfig->get('eccube_html_dir').'/user_data'.$faviconPath)) { $file = new Filesystem(); $file->copy( - $this->container->getParameter('eccube_html_front_dir').$faviconPath, - $this->container->getParameter('eccube_html_dir').'/user_data'.$faviconPath + $this->eccubeConfig->get('eccube_html_front_dir').$faviconPath, + $this->eccubeConfig->get('eccube_html_dir').'/user_data'.$faviconPath ); } $logoPath = '/assets/pdf/logo.png'; - if (!file_exists($this->container->getParameter('eccube_html_dir').'/user_data'.$logoPath)) { + if (!file_exists($this->eccubeConfig->get('eccube_html_dir').'/user_data'.$logoPath)) { $file = new Filesystem(); $file->copy( - $this->container->getParameter('eccube_html_admin_dir').$logoPath, - $this->container->getParameter('eccube_html_dir').'/user_data'.$logoPath + $this->eccubeConfig->get('eccube_html_admin_dir').$logoPath, + $this->eccubeConfig->get('eccube_html_dir').'/user_data'.$logoPath ); } diff --git a/src/Eccube/Command/PluginGenerateCommand.php b/src/Eccube/Command/PluginGenerateCommand.php index 18ff045cc0c..909111e3068 100644 --- a/src/Eccube/Command/PluginGenerateCommand.php +++ b/src/Eccube/Command/PluginGenerateCommand.php @@ -13,6 +13,7 @@ namespace Eccube\Command; +use Eccube\Common\EccubeConfig; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Input\InputInterface; @@ -20,7 +21,6 @@ use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\DependencyInjection\Container; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Filesystem\Filesystem; class PluginGenerateCommand extends Command @@ -38,14 +38,14 @@ class PluginGenerateCommand extends Command protected $fs; /** - * @var ContainerInterface + * @var EccubeConfig */ - protected $container; + protected $eccubeConfig; - public function __construct(ContainerInterface $container) + public function __construct(EccubeConfig $eccubeConfig) { parent::__construct(); - $this->container = $container; + $this->eccubeConfig = $eccubeConfig; } protected function configure() @@ -108,7 +108,7 @@ protected function execute(InputInterface $input, OutputInterface $output) $this->validateCode($code); $this->validateVersion($version); - $pluginDir = $this->container->getParameter('kernel.project_dir').'/app/Plugin/'.$code; + $pluginDir = $this->eccubeConfig->get('kernel.project_dir').'/app/Plugin/'.$code; $this->createDirectories($pluginDir); $this->createConfig($pluginDir, $name, $code, $version); @@ -136,7 +136,7 @@ public function validateCode($code) throw new InvalidArgumentException('The code [a-zA-Z_] is available.'); } - $pluginDir = $this->container->getParameter('kernel.project_dir').'/app/Plugin/'.$code; + $pluginDir = $this->eccubeConfig->get('kernel.project_dir').'/app/Plugin/'.$code; if (file_exists($pluginDir)) { throw new InvalidArgumentException('Plugin directory exists.'); } From 8c0c47340849201b320d7be6a46e9c5a7b2cabc7 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 5 Dec 2023 16:22:20 +0900 Subject: [PATCH 024/113] Fix "Drop support for SessionInterface $session as constructor argument of SessionTokenStorage, inject a \Symfony\Component\HttpFoundation\RequestStack $requestStack instead" --- src/Eccube/Controller/AbstractController.php | 7 +- .../Controller/Install/InstallController.php | 8 +- src/Eccube/Form/Type/Admin/LoginType.php | 6 +- .../Form/Type/ShippingMultipleItemType.php | 8 +- src/Eccube/Log/Processor/SessionProcessor.php | 6 +- src/Eccube/Service/CartService.php | 6 +- src/Eccube/Service/OrderHelper.php | 6 +- src/Eccube/Session/Session.php | 129 ++++++++++++++++++ 8 files changed, 152 insertions(+), 24 deletions(-) create mode 100644 src/Eccube/Session/Session.php diff --git a/src/Eccube/Controller/AbstractController.php b/src/Eccube/Controller/AbstractController.php index f0b4c3b1b19..39cfb716132 100644 --- a/src/Eccube/Controller/AbstractController.php +++ b/src/Eccube/Controller/AbstractController.php @@ -16,12 +16,11 @@ use Doctrine\ORM\EntityManagerInterface; use Eccube\Common\Constant; use Eccube\Common\EccubeConfig; +use Eccube\Session\Session; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as Controller; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Form\FormFactoryInterface; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Session\Session; -use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\Routing\Exception\RouteNotFoundException; use Symfony\Contracts\Translation\TranslatorInterface; @@ -86,10 +85,10 @@ public function setTranslator(TranslatorInterface $translator) } /** - * @param SessionInterface $session + * @param Session $session * @required */ - public function setSession(SessionInterface $session) + public function setSession(Session $session) { $this->session = $session; } diff --git a/src/Eccube/Controller/Install/InstallController.php b/src/Eccube/Controller/Install/InstallController.php index a47192b07c5..e653c9cfc04 100644 --- a/src/Eccube/Controller/Install/InstallController.php +++ b/src/Eccube/Controller/Install/InstallController.php @@ -31,13 +31,13 @@ use Eccube\Form\Type\Install\Step4Type; use Eccube\Form\Type\Install\Step5Type; use Eccube\Security\Core\Encoder\PasswordEncoder; +use Eccube\Session\Session; use Eccube\Util\CacheUtil; use Eccube\Util\StringUtil; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Finder\Finder; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\Annotation\Route; @@ -507,17 +507,17 @@ public function complete(Request $request) ]; } - protected function getSessionData(SessionInterface $session) + protected function getSessionData(Session $session) { return $session->get('eccube.session.install', []); } - protected function removeSessionData(SessionInterface $session) + protected function removeSessionData(Session $session) { $session->clear(); } - protected function setSessionData(SessionInterface $session, $data = []) + protected function setSessionData(Session $session, $data = []) { $data = array_replace_recursive($this->getSessionData($session), $data); $session->set('eccube.session.install', $data); diff --git a/src/Eccube/Form/Type/Admin/LoginType.php b/src/Eccube/Form/Type/Admin/LoginType.php index 8c4cca69949..e9206af6e17 100644 --- a/src/Eccube/Form/Type/Admin/LoginType.php +++ b/src/Eccube/Form/Type/Admin/LoginType.php @@ -14,11 +14,11 @@ namespace Eccube\Form\Type\Admin; use Eccube\Common\EccubeConfig; +use Eccube\Session\Session; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\PasswordType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints as Assert; @@ -30,13 +30,13 @@ class LoginType extends AbstractType protected $eccubeConfig; /** - * @var SessionInterface + * @var Session */ protected $session; public function __construct( EccubeConfig $eccubeConfig, - SessionInterface $session + Session $session ) { $this->eccubeConfig = $eccubeConfig; $this->session = $session; diff --git a/src/Eccube/Form/Type/ShippingMultipleItemType.php b/src/Eccube/Form/Type/ShippingMultipleItemType.php index 36acf2d217d..6d32fa42431 100644 --- a/src/Eccube/Form/Type/ShippingMultipleItemType.php +++ b/src/Eccube/Form/Type/ShippingMultipleItemType.php @@ -19,13 +19,13 @@ use Eccube\Entity\CustomerAddress; use Eccube\Repository\Master\PrefRepository; use Eccube\Service\OrderHelper; +use Eccube\Session\Session; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvents; -use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Symfony\Component\Validator\Constraints as Assert; @@ -38,7 +38,7 @@ class ShippingMultipleItemType extends AbstractType protected $eccubeConfig; /** - * @var SessionInterface + * @var Session */ protected $session; @@ -71,13 +71,13 @@ class ShippingMultipleItemType extends AbstractType * ShippingMultipleItemType constructor. * * @param EccubeConfig $eccubeConfig - * @param SessionInterface $session + * @param Session $session * @param AuthorizationCheckerInterface $authorizationChecker * @param TokenStorageInterface $tokenStorage */ public function __construct( EccubeConfig $eccubeConfig, - SessionInterface $session, + Session $session, AuthorizationCheckerInterface $authorizationChecker, TokenStorageInterface $tokenStorage, PrefRepository $prefRepository, diff --git a/src/Eccube/Log/Processor/SessionProcessor.php b/src/Eccube/Log/Processor/SessionProcessor.php index c57648929e2..881467877da 100644 --- a/src/Eccube/Log/Processor/SessionProcessor.php +++ b/src/Eccube/Log/Processor/SessionProcessor.php @@ -13,16 +13,16 @@ namespace Eccube\Log\Processor; -use Symfony\Component\HttpFoundation\Session\SessionInterface; +use Eccube\Session\Session; class SessionProcessor { /** - * @var SessionInterface + * @var Session */ protected $session; - public function __construct(SessionInterface $session) + public function __construct(Session $session) { $this->session = $session; } diff --git a/src/Eccube/Service/CartService.php b/src/Eccube/Service/CartService.php index 2ffb8673f5a..90c9c34e1e5 100644 --- a/src/Eccube/Service/CartService.php +++ b/src/Eccube/Service/CartService.php @@ -25,8 +25,8 @@ use Eccube\Repository\ProductClassRepository; use Eccube\Service\Cart\CartItemAllocator; use Eccube\Service\Cart\CartItemComparator; +use Eccube\Session\Session; use Eccube\Util\StringUtil; -use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; @@ -38,7 +38,7 @@ class CartService protected $carts; /** - * @var SessionInterface + * @var Session */ protected $session; @@ -93,7 +93,7 @@ class CartService * CartService constructor. */ public function __construct( - SessionInterface $session, + Session $session, EntityManagerInterface $entityManager, ProductClassRepository $productClassRepository, CartRepository $cartRepository, diff --git a/src/Eccube/Service/OrderHelper.php b/src/Eccube/Service/OrderHelper.php index 8c6b6675612..2a1b29e17fe 100644 --- a/src/Eccube/Service/OrderHelper.php +++ b/src/Eccube/Service/OrderHelper.php @@ -35,9 +35,9 @@ use Eccube\Repository\Master\PrefRepository; use Eccube\Repository\OrderRepository; use Eccube\Repository\PaymentRepository; +use Eccube\Session\Session; use Eccube\Util\StringUtil; use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\Security\Core\User\UserInterface; class OrderHelper @@ -70,7 +70,7 @@ class OrderHelper public const SESSION_CART_DIVIDE_FLAG = 'eccube.front.cart.divide'; /** - * @var SessionInterface + * @var Session */ protected $session; @@ -130,7 +130,7 @@ public function __construct( DeviceTypeRepository $deviceTypeRepository, PrefRepository $prefRepository, MobileDetect $mobileDetector, - SessionInterface $session + Session $session ) { $this->container = $container; $this->orderRepository = $orderRepository; diff --git a/src/Eccube/Session/Session.php b/src/Eccube/Session/Session.php new file mode 100644 index 00000000000..4f3e65da198 --- /dev/null +++ b/src/Eccube/Session/Session.php @@ -0,0 +1,129 @@ +requestStack = $requestStack; + } + + private function getSession(): SessionInterface + { + return $this->requestStack->getSession(); + } + + public function start(): bool + { + return $this->getSession()->start(); + } + + public function getId(): string + { + return $this->getSession()->getId(); + } + + public function setId(string $id) + { + $this->getSession()->setId($id); + } + + public function getName(): string + { + return $this->getSession()->getName(); + } + + public function setName(string $name) + { + $this->getSession()->setName($name); + } + + public function invalidate(int $lifetime = null): bool + { + return $this->getSession()->invalidate($lifetime); + } + + public function migrate(bool $destroy = false, int $lifetime = null): bool + { + return $this->getSession()->migrate($destroy, $lifetime); + } + + public function save() + { + $this->getSession()->save(); + } + + public function has(string $name): bool + { + return $this->getSession()->has($name); + } + + public function get(string $name, mixed $default = null): mixed + { + return $this->getSession()->get($name, $default); + } + + public function set(string $name, mixed $value) + { + return $this->getSession()->set($name, $value); + } + + public function all(): array + { + return $this->getSession()->all(); + } + + public function replace(array $attributes) + { + return $this->getSession()->replace($attributes); + } + + public function remove(string $name): mixed + { + return $this->getSession()->remove($name); + } + + public function clear() + { + $this->getSession()->clear(); + } + + public function isStarted(): bool + { + return $this->getSession()->isStarted(); + } + + public function registerBag(SessionBagInterface $bag) + { + $this->getSession()->registerBag($bag); + } + + public function getBag(string $name): SessionBagInterface + { + return $this->getSession()->getBag(); + } + + public function getMetadataBag(): MetadataBag + { + return $this->getSession()->getMetadataBag(); + } +} From 937ae8187f51ab748ce5a64c288fc56715cd5516 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 7 Dec 2023 13:57:17 +0900 Subject: [PATCH 025/113] PasswordEncoder -> PasswordHasher / Fix "Remove the security.encoder_factory.generic service, the security.encoder_factory and Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface" --- .../Controller/Admin/AdminController.php | 22 +++++--------- .../Admin/Customer/CustomerEditController.php | 19 +++++------- .../Admin/Setting/System/MemberController.php | 29 ++++++------------- .../System/TwoFactorAuthController.php | 8 ----- src/Eccube/Controller/EntryController.php | 18 +++++------- src/Eccube/Controller/ForgotController.php | 25 +++++----------- .../Controller/Mypage/ChangeController.php | 19 +++++------- .../EventListener/TwoFactorAuthListener.php | 1 - src/Eccube/Repository/CustomerRepository.php | 9 ------ src/Eccube/Service/TwoFactorAuthService.php | 22 +++++--------- 10 files changed, 53 insertions(+), 119 deletions(-) diff --git a/src/Eccube/Controller/Admin/AdminController.php b/src/Eccube/Controller/Admin/AdminController.php index 7931b68222a..9550a991eee 100644 --- a/src/Eccube/Controller/Admin/AdminController.php +++ b/src/Eccube/Controller/Admin/AdminController.php @@ -35,9 +35,9 @@ use Eccube\Service\PluginApiService; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; -use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationUtils; class AdminController extends AbstractController @@ -58,9 +58,9 @@ class AdminController extends AbstractController protected $memberRepository; /** - * @var EncoderFactoryInterface + * @var UserPasswordHasherInterface */ - protected $encoderFactory; + protected $passwordHasher; /** * @var OrderRepository @@ -96,7 +96,7 @@ class AdminController extends AbstractController * @param AuthorizationCheckerInterface $authorizationChecker * @param AuthenticationUtils $helper * @param MemberRepository $memberRepository - * @param EncoderFactoryInterface $encoderFactory + * @param UserPasswordHasherInterface $passwordHasher * @param OrderRepository $orderRepository * @param OrderStatusRepository $orderStatusRepository * @param CustomerRepository $custmerRepository @@ -107,7 +107,7 @@ public function __construct( AuthorizationCheckerInterface $authorizationChecker, AuthenticationUtils $helper, MemberRepository $memberRepository, - EncoderFactoryInterface $encoderFactory, + UserPasswordHasherInterface $passwordHasher, OrderRepository $orderRepository, OrderStatusRepository $orderStatusRepository, CustomerRepository $custmerRepository, @@ -117,7 +117,7 @@ public function __construct( $this->authorizationChecker = $authorizationChecker; $this->helper = $helper; $this->memberRepository = $memberRepository; - $this->encoderFactory = $encoderFactory; + $this->passwordHasher = $passwordHasher; $this->orderRepository = $orderRepository; $this->orderStatusRepository = $orderStatusRepository; $this->customerRepository = $custmerRepository; @@ -342,15 +342,7 @@ public function changePassword(Request $request) $Member = $this->getUser(); $salt = $Member->getSalt(); $password = $form->get('change_password')->getData(); - - $encoder = $this->encoderFactory->getEncoder($Member); - - // 2系からのデータ移行でsaltがセットされていない場合はsaltを生成. - if (empty($salt)) { - $salt = $encoder->createSalt(); - } - - $password = $encoder->encodePassword($password, $salt); + $password = $this->passwordHasher->hashPassword($Member, $password); $Member ->setPassword($password) diff --git a/src/Eccube/Controller/Admin/Customer/CustomerEditController.php b/src/Eccube/Controller/Admin/Customer/CustomerEditController.php index f6101a83543..f90ef249cda 100644 --- a/src/Eccube/Controller/Admin/Customer/CustomerEditController.php +++ b/src/Eccube/Controller/Admin/Customer/CustomerEditController.php @@ -27,8 +27,8 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Annotation\Route; -use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; class CustomerEditController extends AbstractController { @@ -38,9 +38,9 @@ class CustomerEditController extends AbstractController protected $customerRepository; /** - * @var EncoderFactoryInterface + * @var UserPasswordHasherInterface */ - protected $encoderFactory; + protected $passwordHasher; /** * @var OrderRepository @@ -54,13 +54,13 @@ class CustomerEditController extends AbstractController public function __construct( CustomerRepository $customerRepository, - EncoderFactoryInterface $encoderFactory, + UserPasswordHasherInterface $passwordHasher, OrderRepository $orderRepository, PageMaxRepository $pageMaxRepository ) { $this->customerRepository = $customerRepository; $this->orderRepository = $orderRepository; - $this->encoderFactory = $encoderFactory; + $this->passwordHasher = $passwordHasher; $this->pageMaxRepository = $pageMaxRepository; } @@ -136,14 +136,9 @@ public function index(Request $request, PaginatorInterface $paginator, $id = nul if ($form->isSubmitted() && $form->isValid()) { log_info('会員登録開始', [$Customer->getId()]); - $encoder = $this->encoderFactory->getEncoder($Customer); - if ($Customer->getPlainPassword() !== $this->eccubeConfig['eccube_default_password']) { - if ($Customer->getSalt() === null) { - $Customer->setSalt($encoder->createSalt()); - $Customer->setSecretKey($this->customerRepository->getUniqueSecretKey()); - } - $Customer->setPassword($encoder->encodePassword($Customer->getPlainPassword(), $Customer->getSalt())); + $password = $this->passwordHasher->hashPassword($Customer, $Customer->getPlainPassword()); + $Customer->setPassword($password); } // 退会ステータスに更新の場合、ダミーのアドレスに更新 diff --git a/src/Eccube/Controller/Admin/Setting/System/MemberController.php b/src/Eccube/Controller/Admin/Setting/System/MemberController.php index 2a2a0507cf9..916f43eb32f 100644 --- a/src/Eccube/Controller/Admin/Setting/System/MemberController.php +++ b/src/Eccube/Controller/Admin/Setting/System/MemberController.php @@ -22,9 +22,9 @@ use Eccube\Repository\MemberRepository; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; -use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; class MemberController extends AbstractController { @@ -39,23 +39,23 @@ class MemberController extends AbstractController protected $memberRepository; /** - * @var EncoderFactoryInterface + * @var UserPasswordHasherInterface */ - protected $encoderFactory; + protected $passwordHasher; /** * MemberController constructor. * - * @param EncoderFactoryInterface $encoderFactory + * @param UserPasswordHasherInterface $passwordHasher * @param MemberRepository $memberRepository * @param TokenStorageInterface $tokenStorage */ public function __construct( - EncoderFactoryInterface $encoderFactory, + UserPasswordHasherInterface $passwordHasher, MemberRepository $memberRepository, TokenStorageInterface $tokenStorage ) { - $this->encoderFactory = $encoderFactory; + $this->passwordHasher = $passwordHasher; $this->memberRepository = $memberRepository; $this->tokenStorage = $tokenStorage; } @@ -107,13 +107,9 @@ public function create(Request $request) $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $encoder = $this->encoderFactory->getEncoder($Member); - $salt = $encoder->createSalt(); $password = $Member->getPlainPassword(); - $password = $encoder->encodePassword($password, $salt); - $Member - ->setSalt($salt) - ->setPassword($password); + $password = $this->passwordHasher->hashPassword($Member, $password); + $Member->setPassword($password); $this->memberRepository->save($Member); @@ -162,16 +158,9 @@ public function edit(Request $request, Member $Member) if ($form->isSubmitted() && $form->isValid()) { if ($Member->getPlainPassword() !== $this->eccubeConfig['eccube_default_password']) { - $salt = $Member->getSalt(); - // 2系からのデータ移行でsaltがセットされていない場合はsaltを生成. - if (empty($salt)) { - $salt = bin2hex(openssl_random_pseudo_bytes(5)); - $Member->setSalt($salt); - } $password = $Member->getPlainPassword(); - $encoder = $this->encoderFactory->getEncoder($Member); - $password = $encoder->encodePassword($password, $salt); + $password = $this->passwordHasher->hashPassword($Member, $password); $Member->setPassword($password); } diff --git a/src/Eccube/Controller/Admin/Setting/System/TwoFactorAuthController.php b/src/Eccube/Controller/Admin/Setting/System/TwoFactorAuthController.php index a034fb90e78..42c255e11d5 100644 --- a/src/Eccube/Controller/Admin/Setting/System/TwoFactorAuthController.php +++ b/src/Eccube/Controller/Admin/Setting/System/TwoFactorAuthController.php @@ -22,7 +22,6 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; -use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; class TwoFactorAuthController extends AbstractController { @@ -36,11 +35,6 @@ class TwoFactorAuthController extends AbstractController */ protected $memberRepository; - /** - * @var EncoderFactoryInterface - */ - protected $encoderFactory; - /** * @var TwoFactorAuthService */ @@ -53,12 +47,10 @@ class TwoFactorAuthController extends AbstractController * @param TokenStorageInterface $tokenStorage */ public function __construct( - EncoderFactoryInterface $encoderFactory, MemberRepository $memberRepository, TokenStorageInterface $tokenStorage, TwoFactorAuthService $twoFactorAuthService ) { - $this->encoderFactory = $encoderFactory; $this->memberRepository = $memberRepository; $this->tokenStorage = $tokenStorage; $this->twoFactorAuthService = $twoFactorAuthService; diff --git a/src/Eccube/Controller/EntryController.php b/src/Eccube/Controller/EntryController.php index 6ed61ea3595..ea00af94a30 100644 --- a/src/Eccube/Controller/EntryController.php +++ b/src/Eccube/Controller/EntryController.php @@ -27,11 +27,11 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception as HttpException; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; -use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Validator\ValidatorInterface; @@ -63,9 +63,9 @@ class EntryController extends AbstractController protected $customerRepository; /** - * @var EncoderFactoryInterface + * @var UserPasswordHasherInterface */ - protected $encoderFactory; + protected $passwordHasher; /** * @var TokenStorageInterface @@ -90,7 +90,7 @@ class EntryController extends AbstractController * @param MailService $mailService * @param BaseInfoRepository $baseInfoRepository * @param CustomerRepository $customerRepository - * @param EncoderFactoryInterface $encoderFactory + * @param PasswordHasher $passwordHasher * @param ValidatorInterface $validatorInterface * @param TokenStorageInterface $tokenStorage */ @@ -100,7 +100,7 @@ public function __construct( MailService $mailService, BaseInfoRepository $baseInfoRepository, CustomerRepository $customerRepository, - EncoderFactoryInterface $encoderFactory, + UserPasswordHasherInterface $passwordHasher, ValidatorInterface $validatorInterface, TokenStorageInterface $tokenStorage, PageRepository $pageRepository @@ -109,7 +109,7 @@ public function __construct( $this->mailService = $mailService; $this->BaseInfo = $baseInfoRepository->get(); $this->customerRepository = $customerRepository; - $this->encoderFactory = $encoderFactory; + $this->passwordHasher = $passwordHasher; $this->recursiveValidator = $validatorInterface; $this->tokenStorage = $tokenStorage; $this->cartService = $cartService; @@ -168,13 +168,9 @@ public function index(Request $request) case 'complete': log_info('会員登録開始'); - $encoder = $this->encoderFactory->getEncoder($Customer); - $salt = $encoder->createSalt(); - $password = $encoder->encodePassword($Customer->getPlainPassword(), $salt); + $password = $this->passwordHasher->hashPassword($Customer, $Customer->getPlainPassword()); $secretKey = $this->customerRepository->getUniqueSecretKey(); - $Customer - ->setSalt($salt) ->setPassword($password) ->setSecretKey($secretKey) ->setPoint(0); diff --git a/src/Eccube/Controller/ForgotController.php b/src/Eccube/Controller/ForgotController.php index e331eaf66bb..8bf012b1470 100644 --- a/src/Eccube/Controller/ForgotController.php +++ b/src/Eccube/Controller/ForgotController.php @@ -22,9 +22,9 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception as HttpException; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Validator\ValidatorInterface; @@ -46,9 +46,9 @@ class ForgotController extends AbstractController protected $customerRepository; /** - * @var EncoderFactoryInterface + * @var UserPasswordHasherInterface */ - protected $encoderFactory; + protected $passwordHasher; /** * ForgotController constructor. @@ -56,18 +56,18 @@ class ForgotController extends AbstractController * @param ValidatorInterface $validator * @param MailService $mailService * @param CustomerRepository $customerRepository - * @param EncoderFactoryInterface $encoderFactory + * @param UserPasswordHasherInterface $encoderFactory */ public function __construct( ValidatorInterface $validator, MailService $mailService, CustomerRepository $customerRepository, - EncoderFactoryInterface $encoderFactory + UserPasswordHasherInterface $passwordHasher ) { $this->validator = $validator; $this->mailService = $mailService; $this->customerRepository = $customerRepository; - $this->encoderFactory = $encoderFactory; + $this->passwordHasher = $passwordHasher; } /** @@ -207,18 +207,9 @@ public function reset(Request $request, $reset_key) ->getRegularCustomerByResetKey($reset_key, $form->get('login_email')->getData()); if ($Customer) { // パスワードの発行・更新 - $encoder = $this->encoderFactory->getEncoder($Customer); - $pass = $form->get('password')->getData(); - $Customer->setPassword($pass); + $password = $this->passwordHasher->hashPassword($Customer, $form->get('password')->getData()); + $Customer->setPassword($password); - // 発行したパスワードの暗号化 - if ($Customer->getSalt() === null) { - $Customer->setSalt($this->encoderFactory->getEncoder($Customer)->createSalt()); - } - $encPass = $encoder->encodePassword($pass, $Customer->getSalt()); - - // パスワードを更新 - $Customer->setPassword($encPass); // リセットキーをクリア $Customer->setResetKey(null); diff --git a/src/Eccube/Controller/Mypage/ChangeController.php b/src/Eccube/Controller/Mypage/ChangeController.php index 2d0d862f1ac..ce6142f79d1 100644 --- a/src/Eccube/Controller/Mypage/ChangeController.php +++ b/src/Eccube/Controller/Mypage/ChangeController.php @@ -23,10 +23,10 @@ use Eccube\Service\MailService; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; -use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; class ChangeController extends AbstractController { @@ -41,9 +41,9 @@ class ChangeController extends AbstractController protected $customerRepository; /** - * @var EncoderFactoryInterface + * @var UserPasswordHasherInterface */ - protected $encoderFactory; + protected $passwordHasher; /** * @var MailService @@ -59,13 +59,13 @@ class ChangeController extends AbstractController public function __construct( CustomerRepository $customerRepository, - EncoderFactoryInterface $encoderFactory, + UserPasswordHasherInterface $passwordHasher, TokenStorageInterface $tokenStorage, BaseInfoRepository $baseInfoRepository, MailService $mailService ) { $this->customerRepository = $customerRepository; - $this->encoderFactory = $encoderFactory; + $this->passwordHasher = $passwordHasher; $this->tokenStorage = $tokenStorage; $this->baseInfoRepository = $baseInfoRepository; $this->mailService = $mailService; @@ -103,13 +103,8 @@ public function index(Request $request) log_info('会員編集開始'); if ($Customer->getPlainPassword() !== $this->eccubeConfig['eccube_default_password']) { - $encoder = $this->encoderFactory->getEncoder($Customer); - if ($Customer->getSalt() === null) { - $Customer->setSalt($encoder->createSalt()); - } - $Customer->setPassword( - $encoder->encodePassword($Customer->getPlainPassword(), $Customer->getSalt()) - ); + $password = $this->passwordHasher->hashPassword($Customer, $Customer->getPlainPassword()); + $Customer->setPassword($password); } // 会員情報変更時にメールを送信 diff --git a/src/Eccube/EventListener/TwoFactorAuthListener.php b/src/Eccube/EventListener/TwoFactorAuthListener.php index 454f8cdc518..b06596639f6 100644 --- a/src/Eccube/EventListener/TwoFactorAuthListener.php +++ b/src/Eccube/EventListener/TwoFactorAuthListener.php @@ -54,7 +54,6 @@ class TwoFactorAuthListener implements EventSubscriberInterface * @param EccubeConfig $eccubeConfig * @param Context $context, * @param UrlGeneratorInterface $router - * @param EncoderFactoryInterface $encoderFactory */ public function __construct( EccubeConfig $eccubeConfig, diff --git a/src/Eccube/Repository/CustomerRepository.php b/src/Eccube/Repository/CustomerRepository.php index 320ac5f5538..6c2233ff821 100644 --- a/src/Eccube/Repository/CustomerRepository.php +++ b/src/Eccube/Repository/CustomerRepository.php @@ -24,7 +24,6 @@ use Eccube\Entity\Master\Pref; use Eccube\Entity\Master\Sex; use Eccube\Util\StringUtil; -use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; /** * CustomerRepository @@ -54,11 +53,6 @@ class CustomerRepository extends AbstractRepository */ protected $eccubeConfig; - /** - * @var EncoderFactoryInterface - */ - protected $encoderFactory; - public const COLUMNS = [ 'customer_id' => 'c.id', 'name' => 'c.name01', ]; @@ -70,7 +64,6 @@ class CustomerRepository extends AbstractRepository * @param Queries $queries * @param EntityManagerInterface $entityManager * @param OrderRepository $orderRepository - * @param EncoderFactoryInterface $encoderFactory * @param EccubeConfig $eccubeConfig */ public function __construct( @@ -78,7 +71,6 @@ public function __construct( Queries $queries, EntityManagerInterface $entityManager, OrderRepository $orderRepository, - EncoderFactoryInterface $encoderFactory, EccubeConfig $eccubeConfig ) { parent::__construct($registry, Customer::class); @@ -86,7 +78,6 @@ public function __construct( $this->queries = $queries; $this->entityManager = $entityManager; $this->orderRepository = $orderRepository; - $this->encoderFactory = $encoderFactory; $this->eccubeConfig = $eccubeConfig; } diff --git a/src/Eccube/Service/TwoFactorAuthService.php b/src/Eccube/Service/TwoFactorAuthService.php index fdb7db5c168..b8a220b082d 100644 --- a/src/Eccube/Service/TwoFactorAuthService.php +++ b/src/Eccube/Service/TwoFactorAuthService.php @@ -19,7 +19,7 @@ use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; class TwoFactorAuthService { @@ -44,9 +44,9 @@ class TwoFactorAuthService protected $eccubeConfig; /** - * @var EncoderFactoryInterface + * @var UserPasswordHasherInterface */ - protected $encoderFactory; + protected $passwordHasher; /** * @var RequestStack @@ -58,11 +58,6 @@ class TwoFactorAuthService */ protected $request; - /** - * @var Encoder - */ - protected $encoder; - /** * @var string */ @@ -83,20 +78,19 @@ class TwoFactorAuthService * * @param ContainerInterface $container * @param EccubeConfig $eccubeConfig - * @param EncoderFactoryInterface $encoderFactory + * @param UserPasswordHasherInterface $passwordHasher */ public function __construct( ContainerInterface $container, EccubeConfig $eccubeConfig, - EncoderFactoryInterface $encoderFactory, + UserPasswordHasherInterface $passwordHasher, RequestStack $requestStack ) { $this->container = $container; $this->eccubeConfig = $eccubeConfig; - $this->encoderFactory = $encoderFactory; + $this->passwordHasher = $passwordHasher; $this->requestStack = $requestStack; $this->request = $requestStack->getCurrentRequest(); - $this->encoder = $this->encoderFactory->getEncoder('Eccube\\Entity\\Member'); $this->tfa = new TwoFactorAuth(); if ($this->eccubeConfig->get('eccube_2fa_cookie_name')) { @@ -118,7 +112,7 @@ public function isAuth($Member) { if (($json = $this->request->cookies->get($this->cookieName))) { $configs = json_decode($json); - $encodedString = $this->encoder->encodePassword($Member->getId().$Member->getTwoFactorAuthKey(), $Member->getSalt()); + $encodedString = $this->passwordHasher->hashPassword($Member, $Member->getId().$Member->getTwoFactorAuthKey()); if ( $configs && isset($configs->{$Member->getId()}) @@ -144,7 +138,7 @@ public function isAuth($Member) */ public function createAuthedCookie($Member) { - $encodedString = $this->encoder->encodePassword($Member->getId().$Member->getTwoFactorAuthKey(), $Member->getSalt()); + $encodedString = $this->passwordHasher->hashPassword($Member, $Member->getId().$Member->getTwoFactorAuthKey()); $configs = json_decode('{}'); if (($json = $this->request->cookies->get($this->cookieName))) { From 6fa272b5e3769f4761a8af7295d776efc8158fab Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 7 Dec 2023 14:03:01 +0900 Subject: [PATCH 026/113] Fix "Cannot autowire service "Eccube\Controller\ShoppingController": argument "$serviceContainer" of method "__construct()" references interface "Symfony\Component\DependencyInjection\ContainerInterface" but no such service exists. You should maybe alias this interface to the existing "service_container" service." --- app/config/eccube/services.yaml | 5 +++++ .../Compiler/AutoConfigurationTagPass.php | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/app/config/eccube/services.yaml b/app/config/eccube/services.yaml index 74aeee7e01b..709465987fe 100644 --- a/app/config/eccube/services.yaml +++ b/app/config/eccube/services.yaml @@ -222,3 +222,8 @@ services: - '%eccube_auth_magic%' - '%eccube_auth_type%' - '%eccube_password_hash_algos%' + + Eccube\Controller\ShoppingController: + arguments: + $serviceContainer: !tagged_locator { tag: 'eccube_payment_method' } + tags: [ 'controller.service_arguments' ] diff --git a/src/Eccube/DependencyInjection/Compiler/AutoConfigurationTagPass.php b/src/Eccube/DependencyInjection/Compiler/AutoConfigurationTagPass.php index d084958040a..6f42cdb8f0f 100644 --- a/src/Eccube/DependencyInjection/Compiler/AutoConfigurationTagPass.php +++ b/src/Eccube/DependencyInjection/Compiler/AutoConfigurationTagPass.php @@ -14,6 +14,7 @@ namespace Eccube\DependencyInjection\Compiler; use Doctrine\Common\EventSubscriber; +use Eccube\Service\Payment\PaymentMethodInterface; use Symfony\Component\DependencyInjection\ChildDefinition; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; @@ -35,6 +36,7 @@ public function process(ContainerBuilder $container) foreach ($container->getDefinitions() as $id => $definition) { $this->configureDoctrineEventSubscriberTag($definition); $this->configureRateLimiterTag($id, $definition); + $this->configurePaymentMethodTag($id, $definition); } } @@ -61,4 +63,12 @@ protected function configureRateLimiterTag($id, Definition $definition) $definition->addTag('eccube_rate_limiter'); } } + + protected function configurePaymentMethodTag($id, Definition $definition) + { + $class = $definition->getClass(); + if (is_subclass_of($class, PaymentMethodInterface::class) && !$definition->isAbstract()) { + $definition->addTag('eccube_payment_method'); + } + } } From 57bb47a8ae8e2d31d7a38841ebfc6af74ed9a016 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:21:58 +0900 Subject: [PATCH 027/113] Fix "Removed the Psr\Container\ContainerInterface and Symfony\Component\DependencyInjection\ContainerInterface aliases of the service_container service, configure them explicitly instead." --- app/config/eccube/services.yaml | 8 +++++ src/Eccube/Common/EccubeConfig.php | 19 ++++-------- src/Eccube/Controller/ShoppingController.php | 2 +- .../DataCollector/EccubeDataCollector.php | 22 +++++++------- .../TaxRuleEventSubscriber.php | 9 +++--- src/Eccube/Form/Type/PriceType.php | 11 ++----- src/Eccube/Repository/PageRepository.php | 10 +++---- src/Eccube/Service/EntityProxyService.php | 16 +++++----- src/Eccube/Service/MailService.php | 9 +----- src/Eccube/Service/OrderHelper.php | 30 ++++++++++++------- src/Eccube/Service/SystemService.php | 19 ++++++------ src/Eccube/Service/TwoFactorAuthService.php | 9 ------ src/Eccube/Util/CacheUtil.php | 2 +- 13 files changed, 74 insertions(+), 92 deletions(-) diff --git a/app/config/eccube/services.yaml b/app/config/eccube/services.yaml index 709465987fe..03cb19615a2 100644 --- a/app/config/eccube/services.yaml +++ b/app/config/eccube/services.yaml @@ -59,6 +59,8 @@ services: Eccube\Service\Composer\ComposerServiceInterface: factory: ['Eccube\Service\Composer\ComposerServiceFactory', createService] + arguments: + $container: !service_locator [ '@Eccube\Service\Composer\ComposerApiService' ] Eccube\Service\Composer\ComposerApiService: lazy: true @@ -69,6 +71,8 @@ services: public: true Eccube\Service\PluginService: + arguments: + $container: !service_locator [ '@doctrine' ] lazy: true public: true @@ -227,3 +231,7 @@ services: arguments: $serviceContainer: !tagged_locator { tag: 'eccube_payment_method' } tags: [ 'controller.service_arguments' ] + + Eccube\Util\CacheUtil: + arguments: + $container: !tagged_locator { tag: 'cache.pool.clearer' } diff --git a/src/Eccube/Common/EccubeConfig.php b/src/Eccube/Common/EccubeConfig.php index 80d0c7b3f58..f6399f0b9fd 100644 --- a/src/Eccube/Common/EccubeConfig.php +++ b/src/Eccube/Common/EccubeConfig.php @@ -13,16 +13,16 @@ namespace Eccube\Common; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface; class EccubeConfig implements \ArrayAccess { /** - * @var ContainerInterface + * @var ContainerBagInterface */ protected $container; - public function __construct(ContainerInterface $container) + public function __construct(ContainerBagInterface $container) { $this->container = $container; } @@ -34,7 +34,7 @@ public function __construct(ContainerInterface $container) */ public function get($key) { - return $this->container->getParameter($key); + return $this->container->get($key); } /** @@ -44,16 +44,7 @@ public function get($key) */ public function has($key) { - return $this->container->hasParameter($key); - } - - /** - * @param $key - * @param $value - */ - public function set($key, $value) - { - $this->container->setParameter($key, $value); + return $this->container->has($key); } /** diff --git a/src/Eccube/Controller/ShoppingController.php b/src/Eccube/Controller/ShoppingController.php index 5117fd9421d..b9616e63e5a 100644 --- a/src/Eccube/Controller/ShoppingController.php +++ b/src/Eccube/Controller/ShoppingController.php @@ -34,8 +34,8 @@ use Eccube\Service\Payment\PaymentMethodInterface; use Eccube\Service\PurchaseFlow\PurchaseContext; use Eccube\Service\PurchaseFlow\PurchaseFlow; +use Psr\Container\ContainerInterface; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Form\FormInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; diff --git a/src/Eccube/DataCollector/EccubeDataCollector.php b/src/Eccube/DataCollector/EccubeDataCollector.php index 0767c0679ba..584735736d7 100644 --- a/src/Eccube/DataCollector/EccubeDataCollector.php +++ b/src/Eccube/DataCollector/EccubeDataCollector.php @@ -14,9 +14,9 @@ namespace Eccube\DataCollector; use Eccube\Common\Constant; +use Eccube\Common\EccubeConfig; use Eccube\Entity\Plugin; use Eccube\Repository\PluginRepository; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\DataCollector\DataCollector; @@ -29,9 +29,9 @@ class EccubeDataCollector extends DataCollector { /** - * @var ContainerInterface + * @var EccubeConfig */ - protected $container; + protected $eccubeConfig; /** * @var PluginRepository @@ -39,9 +39,9 @@ class EccubeDataCollector extends DataCollector protected $pluginRepository; /** - * @param ContainerInterface $container + * @param EccubeConfig $eccubeConfig */ - public function __construct(ContainerInterface $container, PluginRepository $pluginRepository) + public function __construct(EccubeConfig $eccubeConfig, PluginRepository $pluginRepository) { $this->data = [ 'version' => Constant::VERSION, @@ -51,7 +51,7 @@ public function __construct(ContainerInterface $container, PluginRepository $plu 'locale_code' => null, 'plugins' => [], ]; - $this->container = $container; + $this->eccubeConfig = $eccubeConfig; $this->pluginRepository = $pluginRepository; } @@ -108,17 +108,17 @@ public function getDefaultLocaleCode() */ public function collect(Request $request, Response $response, \Throwable $exception = null) { - $this->data['base_currency_code'] = $this->container->getParameter('currency'); - $this->data['currency_code'] = $this->container->getParameter('currency'); + $this->data['base_currency_code'] = $this->eccubeConfig->get('currency'); + $this->data['currency_code'] = $this->eccubeConfig->get('currency'); try { - $this->data['locale_code'] = $this->container->getParameter('locale'); + $this->data['locale_code'] = $this->eccubeConfig->get('locale'); } catch (\Exception $exception) { } try { - $enabled = $this->container->getParameter('eccube.plugins.enabled'); - $disabled = $this->container->getParameter('eccube.plugins.disabled'); + $enabled = $this->eccubeConfig->get('eccube.plugins.enabled'); + $disabled = $this->eccubeConfig->get('eccube.plugins.disabled'); $Plugins = $this->pluginRepository->findAll(); foreach (array_merge($enabled, $disabled) as $code) { diff --git a/src/Eccube/Doctrine/EventSubscriber/TaxRuleEventSubscriber.php b/src/Eccube/Doctrine/EventSubscriber/TaxRuleEventSubscriber.php index a967d4e5c89..c0eb87310ba 100644 --- a/src/Eccube/Doctrine/EventSubscriber/TaxRuleEventSubscriber.php +++ b/src/Eccube/Doctrine/EventSubscriber/TaxRuleEventSubscriber.php @@ -18,26 +18,25 @@ use Doctrine\ORM\Events; use Eccube\Entity\ProductClass; use Eccube\Service\TaxRuleService; -use Symfony\Component\DependencyInjection\ContainerInterface; class TaxRuleEventSubscriber implements EventSubscriber { /** * @var TaxRuleService */ - protected $container; + protected $taxRuleService; /** * TaxRuleEventSubscriber constructor. */ - public function __construct(ContainerInterface $container) + public function __construct(TaxRuleService $taxRuleService) { - $this->container = $container; + $this->taxRuleService = $taxRuleService; } public function getTaxRuleService() { - return $this->container->get(TaxRuleService::class); + return $this->taxRuleService; } public function getSubscribedEvents() diff --git a/src/Eccube/Form/Type/PriceType.php b/src/Eccube/Form/Type/PriceType.php index 48ca6398cea..e9dc7ee1b28 100644 --- a/src/Eccube/Form/Type/PriceType.php +++ b/src/Eccube/Form/Type/PriceType.php @@ -14,7 +14,6 @@ namespace Eccube\Form\Type; use Eccube\Common\EccubeConfig; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\MoneyType; use Symfony\Component\Intl\Currencies; @@ -30,20 +29,14 @@ class PriceType extends AbstractType */ protected $eccubeConfig; - /** - * @var ContainerInterface - */ - protected $container; - /** * PriceType constructor. * * @param EccubeConfig $eccubeConfig */ - public function __construct(EccubeConfig $eccubeConfig, ContainerInterface $container) + public function __construct(EccubeConfig $eccubeConfig) { $this->eccubeConfig = $eccubeConfig; - $this->container = $container; } /** @@ -51,7 +44,7 @@ public function __construct(EccubeConfig $eccubeConfig, ContainerInterface $cont */ public function configureOptions(OptionsResolver $resolver) { - $currency = $this->container->getParameter('currency'); + $currency = $this->eccubeConfig->get('currency'); $scale = Currencies::getFractionDigits($currency); $max = $this->eccubeConfig['eccube_price_max']; $min = -$max; diff --git a/src/Eccube/Repository/PageRepository.php b/src/Eccube/Repository/PageRepository.php index 08d79fa9fb3..950c45ad0d5 100644 --- a/src/Eccube/Repository/PageRepository.php +++ b/src/Eccube/Repository/PageRepository.php @@ -17,7 +17,6 @@ use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Common\EccubeConfig; use Eccube\Entity\Page; -use Symfony\Component\DependencyInjection\ContainerInterface; /** * PageRepository @@ -55,15 +54,14 @@ class PageRepository extends AbstractRepository * * @param RegistryInterface $registry * @param EccubeConfig $eccubeConfig - * @param ContainerInterface $container */ - public function __construct(RegistryInterface $registry, EccubeConfig $eccubeConfig, ContainerInterface $container) + public function __construct(RegistryInterface $registry, EccubeConfig $eccubeConfig) { parent::__construct($registry, Page::class); $this->eccubeConfig = $eccubeConfig; - $this->userDataRealDir = $container->getParameter('eccube_theme_user_data_dir'); - $this->templateRealDir = $container->getParameter('eccube_theme_app_dir'); - $this->templateDefaultRealDir = $container->getParameter('eccube_theme_src_dir'); + $this->userDataRealDir = $eccubeConfig->get('eccube_theme_user_data_dir'); + $this->templateRealDir = $eccubeConfig->get('eccube_theme_app_dir'); + $this->templateDefaultRealDir = $eccubeConfig->get('eccube_theme_src_dir'); } /** diff --git a/src/Eccube/Service/EntityProxyService.php b/src/Eccube/Service/EntityProxyService.php index dc277236bc3..025d2e368fc 100644 --- a/src/Eccube/Service/EntityProxyService.php +++ b/src/Eccube/Service/EntityProxyService.php @@ -16,12 +16,12 @@ use Doctrine\Common\Annotations\AnnotationReader; use Doctrine\ORM\EntityManagerInterface; use Eccube\Annotation\EntityExtension; +use Eccube\Common\EccubeConfig; use PhpCsFixer\Tokenizer\CT; use PhpCsFixer\Tokenizer\Token; use PhpCsFixer\Tokenizer\Tokens; use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Finder\Finder; class EntityProxyService @@ -32,22 +32,22 @@ class EntityProxyService protected $entityManager; /** - * @var ContainerInterface + * @var EccubeConfig */ - protected $container; + protected $eccubeConfig; /** * EntityProxyService constructor. * * @param EntityManagerInterface $entityManager - * @param ContainerInterface $container + * @param EccubeConfig $eccubeConfig */ public function __construct( EntityManagerInterface $entityManager, - ContainerInterface $container + EccubeConfig $eccubeConfig ) { $this->entityManager = $entityManager; - $this->container = $container; + $this->eccubeConfig = $eccubeConfig; } /** @@ -94,7 +94,7 @@ public function generate($includesDirs, $excludeDirs, $outputDir, OutputInterfac foreach ($traits as $trait) { $this->addTrait($entityTokens, $trait); } - $projectDir = str_replace('\\', '/', $this->container->getParameter('kernel.project_dir')); + $projectDir = str_replace('\\', '/', $this->eccubeConfig->get('kernel.project_dir')); // baseDir e.g. /src/Eccube/Entity and /app/Plugin/PluginCode/Entity $baseDir = str_replace($projectDir, '', str_replace($baseName, '', $fileName)); @@ -115,7 +115,7 @@ public function generate($includesDirs, $excludeDirs, $outputDir, OutputInterfac private function originalEntityPath(string $entityClassName): string { - $projectDir = rtrim(str_replace('\\', '/', $this->container->getParameter('kernel.project_dir')), '/'); + $projectDir = rtrim(str_replace('\\', '/', $this->eccubeConfig->get('kernel.project_dir')), '/'); $originalPath = null; if (preg_match('/\AEccube\\\\Entity\\\\(.+)\z/', $entityClassName, $matches)) { diff --git a/src/Eccube/Service/MailService.php b/src/Eccube/Service/MailService.php index 0e34e76d04e..2795dc2e58a 100644 --- a/src/Eccube/Service/MailService.php +++ b/src/Eccube/Service/MailService.php @@ -27,7 +27,6 @@ use Eccube\Repository\BaseInfoRepository; use Eccube\Repository\MailHistoryRepository; use Eccube\Repository\MailTemplateRepository; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Mailer\Exception\TransportExceptionInterface; @@ -75,9 +74,6 @@ class MailService */ protected $twig; - /** @var ContainerInterface */ - protected $container; - /** * MailService constructor. * @@ -88,7 +84,6 @@ class MailService * @param EventDispatcherInterface $eventDispatcher * @param \Twig\Environment $twig * @param EccubeConfig $eccubeConfig - * @param ContainerInterface $container */ public function __construct( MailerInterface $mailer, @@ -98,7 +93,6 @@ public function __construct( EventDispatcherInterface $eventDispatcher, \Twig\Environment $twig, EccubeConfig $eccubeConfig, - ContainerInterface $container ) { $this->mailer = $mailer; $this->mailTemplateRepository = $mailTemplateRepository; @@ -107,7 +101,6 @@ public function __construct( $this->eventDispatcher = $eventDispatcher; $this->eccubeConfig = $eccubeConfig; $this->twig = $twig; - $this->container = $container; } /** @@ -867,7 +860,7 @@ public function getHtmlTemplate($templateName) */ public function convertRFCViolatingEmail(string $email): Address { - if ($this->container->getParameter('eccube_rfc_email_check')) { + if ($this->eccubeConfig->get('eccube_rfc_email_check')) { return new Address($email); } diff --git a/src/Eccube/Service/OrderHelper.php b/src/Eccube/Service/OrderHelper.php index 2a1b29e17fe..8c6def6d3c1 100644 --- a/src/Eccube/Service/OrderHelper.php +++ b/src/Eccube/Service/OrderHelper.php @@ -37,16 +37,12 @@ use Eccube\Repository\PaymentRepository; use Eccube\Session\Session; use Eccube\Util\StringUtil; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Symfony\Component\Security\Core\User\UserInterface; class OrderHelper { - /** - * @var ContainerInterface - */ - protected $container; - /** * @var string 非会員情報を保持するセッションのキー */ @@ -119,8 +115,17 @@ class OrderHelper */ protected $entityManager; + /** + * @var AuthorizationCheckerInterface + */ + protected $authorizationChecker; + + /** + * @var TokenStorageInterface + */ + protected $tokenStorage; + public function __construct( - ContainerInterface $container, EntityManagerInterface $entityManager, OrderRepository $orderRepository, OrderItemTypeRepository $orderItemTypeRepository, @@ -130,9 +135,10 @@ public function __construct( DeviceTypeRepository $deviceTypeRepository, PrefRepository $prefRepository, MobileDetect $mobileDetector, - Session $session + Session $session, + AuthorizationCheckerInterface $authorizationChecker, + TokenStorageInterface $tokenStorage, ) { - $this->container = $container; $this->orderRepository = $orderRepository; $this->orderStatusRepository = $orderStatusRepository; $this->orderItemTypeRepository = $orderItemTypeRepository; @@ -143,6 +149,8 @@ public function __construct( $this->prefRepository = $prefRepository; $this->mobileDetector = $mobileDetector; $this->session = $session; + $this->authorizationChecker = $authorizationChecker; + $this->tokenStorage = $tokenStorage; } /** @@ -511,7 +519,7 @@ protected function addOrderItems(Order $Order, Shipping $Shipping, array $OrderI */ private function isGranted($attribute, $subject = null): bool { - return $this->container->get('security.authorization_checker')->isGranted($attribute, $subject); + return $this->authorizationChecker->isGranted($attribute, $subject); } /** @@ -519,7 +527,7 @@ private function isGranted($attribute, $subject = null): bool */ private function getUser(): ?UserInterface { - if (null === $token = $this->container->get('security.token_storage')->getToken()) { + if (null === $token = $this->tokenStorage->getToken()) { return null; } diff --git a/src/Eccube/Service/SystemService.php b/src/Eccube/Service/SystemService.php index 983d1a7323b..c22f01f19f5 100644 --- a/src/Eccube/Service/SystemService.php +++ b/src/Eccube/Service/SystemService.php @@ -14,12 +14,12 @@ namespace Eccube\Service; use Doctrine\ORM\EntityManagerInterface; +use Eccube\Common\EccubeConfig; use Eccube\Util\StringUtil; use function explode; use function file_exists; use function file_get_contents; use function file_put_contents; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector; use Symfony\Component\HttpKernel\Event\TerminateEvent; @@ -52,19 +52,20 @@ class SystemService implements EventSubscriberInterface protected $entityManager; /** - * @var ContainerInterface + * @var EccubeConfig */ - protected $container; + protected $eccubeConfig; + /** * SystemService constructor. */ public function __construct( EntityManagerInterface $entityManager, - ContainerInterface $container + EccubeConfig $eccubeConfig, ) { $this->entityManager = $entityManager; - $this->container = $container; + $this->eccubeConfig = $eccubeConfig; } /** @@ -156,7 +157,7 @@ public function switchMaintenance($isEnable = false, $mode = self::AUTO_MAINTENA public function getMaintenanceToken(): ?string { - $path = $this->container->getParameter('eccube_content_maintenance_file_path'); + $path = $this->eccubeConfig->get('eccube_content_maintenance_file_path'); if (!file_exists($path)) { return null; } @@ -179,7 +180,7 @@ public function disableMaintenanceEvent(TerminateEvent $event) public function enableMaintenance($mode = self::AUTO_MAINTENANCE, bool $force = false): void { if ($force || !$this->isMaintenanceMode()) { - $path = $this->container->getParameter('eccube_content_maintenance_file_path'); + $path = $this->eccubeConfig->get('eccube_content_maintenance_file_path'); $token = StringUtil::random(32); file_put_contents($path, "{$mode}:{$token}"); } @@ -204,7 +205,7 @@ public function disableMaintenanceNow($mode = self::AUTO_MAINTENANCE, bool $forc return; } - $path = $this->container->getParameter('eccube_content_maintenance_file_path'); + $path = $this->eccubeConfig->get('eccube_content_maintenance_file_path'); $contents = file_get_contents($path); $currentMode = explode(':', $contents)[0] ?? null; @@ -221,7 +222,7 @@ public function disableMaintenanceNow($mode = self::AUTO_MAINTENANCE, bool $forc public function isMaintenanceMode() { // .maintenanceが存在しているかチェック - return file_exists($this->container->getParameter('eccube_content_maintenance_file_path')); + return file_exists($this->eccubeConfig->get('eccube_content_maintenance_file_path')); } /** diff --git a/src/Eccube/Service/TwoFactorAuthService.php b/src/Eccube/Service/TwoFactorAuthService.php index b8a220b082d..4719e28aef9 100644 --- a/src/Eccube/Service/TwoFactorAuthService.php +++ b/src/Eccube/Service/TwoFactorAuthService.php @@ -15,7 +15,6 @@ use Eccube\Common\EccubeConfig; use RobThree\Auth\TwoFactorAuth; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; @@ -33,11 +32,6 @@ class TwoFactorAuthService */ public const DEFAULT_COOKIE_NAME = 'eccube_2fa'; - /** - * @var ContainerInterface - */ - protected $container; - /** * @var EccubeConfig */ @@ -76,17 +70,14 @@ class TwoFactorAuthService /** * constructor. * - * @param ContainerInterface $container * @param EccubeConfig $eccubeConfig * @param UserPasswordHasherInterface $passwordHasher */ public function __construct( - ContainerInterface $container, EccubeConfig $eccubeConfig, UserPasswordHasherInterface $passwordHasher, RequestStack $requestStack ) { - $this->container = $container; $this->eccubeConfig = $eccubeConfig; $this->passwordHasher = $passwordHasher; $this->requestStack = $requestStack; diff --git a/src/Eccube/Util/CacheUtil.php b/src/Eccube/Util/CacheUtil.php index a347e37fa76..9da97fa58fd 100644 --- a/src/Eccube/Util/CacheUtil.php +++ b/src/Eccube/Util/CacheUtil.php @@ -13,11 +13,11 @@ namespace Eccube\Util; +use Psr\Container\ContainerInterface; use Symfony\Bundle\FrameworkBundle\Console\Application; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Finder\Finder; From 443e1566e8c76408a13cb9b1a98e9f7f6c37a3ff Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:33:33 +0900 Subject: [PATCH 028/113] Fix "Package easycorp/easy-log-handler is abandoned" --- .../eccube/packages/codeception/monolog.yml | 21 ++++++------------- app/config/eccube/packages/dev/monolog.yml | 21 ++++++------------- .../eccube/packages/install/monolog.yml | 21 ++++++------------- 3 files changed, 18 insertions(+), 45 deletions(-) diff --git a/app/config/eccube/packages/codeception/monolog.yml b/app/config/eccube/packages/codeception/monolog.yml index 896faa33b72..7b6e0636b9c 100644 --- a/app/config/eccube/packages/codeception/monolog.yml +++ b/app/config/eccube/packages/codeception/monolog.yml @@ -1,21 +1,12 @@ monolog: handlers: - buffered: - type: buffer - handler: easylog - channels: ["!event"] - level: debug - easylog: - type: service - id: easycorp.easylog.handler + main: + type: rotating_file + path: '%kernel.logs_dir%/%kernel.environment%/site.log' + level: debug + formatter: eccube.log.formatter.line + max_files: 10 console: type: console process_psr_3_messages: false channels: ['!event', '!doctrine', '!console'] - -services: - easycorp.easylog.handler: - class: EasyCorp\EasyLog\EasyLogHandler - public: false - arguments: - - '%kernel.logs_dir%/%kernel.environment%/site.log' diff --git a/app/config/eccube/packages/dev/monolog.yml b/app/config/eccube/packages/dev/monolog.yml index 896faa33b72..7b6e0636b9c 100644 --- a/app/config/eccube/packages/dev/monolog.yml +++ b/app/config/eccube/packages/dev/monolog.yml @@ -1,21 +1,12 @@ monolog: handlers: - buffered: - type: buffer - handler: easylog - channels: ["!event"] - level: debug - easylog: - type: service - id: easycorp.easylog.handler + main: + type: rotating_file + path: '%kernel.logs_dir%/%kernel.environment%/site.log' + level: debug + formatter: eccube.log.formatter.line + max_files: 10 console: type: console process_psr_3_messages: false channels: ['!event', '!doctrine', '!console'] - -services: - easycorp.easylog.handler: - class: EasyCorp\EasyLog\EasyLogHandler - public: false - arguments: - - '%kernel.logs_dir%/%kernel.environment%/site.log' diff --git a/app/config/eccube/packages/install/monolog.yml b/app/config/eccube/packages/install/monolog.yml index 896faa33b72..7b6e0636b9c 100644 --- a/app/config/eccube/packages/install/monolog.yml +++ b/app/config/eccube/packages/install/monolog.yml @@ -1,21 +1,12 @@ monolog: handlers: - buffered: - type: buffer - handler: easylog - channels: ["!event"] - level: debug - easylog: - type: service - id: easycorp.easylog.handler + main: + type: rotating_file + path: '%kernel.logs_dir%/%kernel.environment%/site.log' + level: debug + formatter: eccube.log.formatter.line + max_files: 10 console: type: console process_psr_3_messages: false channels: ['!event', '!doctrine', '!console'] - -services: - easycorp.easylog.handler: - class: EasyCorp\EasyLog\EasyLogHandler - public: false - arguments: - - '%kernel.logs_dir%/%kernel.environment%/site.log' From edfbd2765a99a2822d9697301de6e4c3571986f2 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:41:57 +0900 Subject: [PATCH 029/113] Fix "In RequestStack.php line 107: There is currently no session available." --- src/Eccube/Log/Processor/SessionProcessor.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Eccube/Log/Processor/SessionProcessor.php b/src/Eccube/Log/Processor/SessionProcessor.php index 881467877da..6884bbea927 100644 --- a/src/Eccube/Log/Processor/SessionProcessor.php +++ b/src/Eccube/Log/Processor/SessionProcessor.php @@ -14,6 +14,8 @@ namespace Eccube\Log\Processor; use Eccube\Session\Session; +use Symfony\Component\HttpFoundation\Exception\SessionNotFoundException; +use Symfony\Component\HttpFoundation\RequestStack; class SessionProcessor { @@ -31,7 +33,11 @@ public function __invoke(array $records) { $records['extra']['session_id'] = 'N/A'; - if (!$this->session->isStarted()) { + try { + if (!$this->session->isStarted()) { + return $records; + } + } catch (SessionNotFoundException $e) { return $records; } From f43b4d6dc4685992cad90a6fc9cfeee4f56037e3 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 13 Dec 2023 14:09:25 +0900 Subject: [PATCH 030/113] =?UTF-8?q?Symfony=E6=A8=99=E6=BA=96=E3=81=AE?= =?UTF-8?q?=E3=82=BB=E3=83=83=E3=82=B7=E3=83=A7=E3=83=B3=E3=83=8F=E3=83=B3?= =?UTF-8?q?=E3=83=89=E3=83=A9=E3=82=92=E5=88=A9=E7=94=A8=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/eccube/packages/framework.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/config/eccube/packages/framework.yaml b/app/config/eccube/packages/framework.yaml index c11e163dcd0..60aa228c6a7 100644 --- a/app/config/eccube/packages/framework.yaml +++ b/app/config/eccube/packages/framework.yaml @@ -8,12 +8,15 @@ framework: trusted_hosts: ~ # https://symfony.com/doc/current/reference/configuration/framework.html#handler-id session: - handler_id: 'Eccube\Session\Storage\Handler\SameSiteNoneCompatSessionHandler' + handler_id: session.handler.native_file save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%' name: '%env(ECCUBE_COOKIE_NAME)%' + cookie_path: '%env(ECCUBE_COOKIE_PATH)%' cookie_lifetime: '%env(ECCUBE_COOKIE_LIFETIME)%' gc_maxlifetime: '%env(ECCUBE_GC_MAXLIFETIME)%' cookie_httponly: true + cookie_samesite: none + cookie_secure: auto # When using the HTTP Cache, ESI allows to render page fragments separately # and with different cache configurations for each fragment From 0986212eea553012fd589b7dfc85458d243177dd Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 13 Dec 2023 15:06:49 +0900 Subject: [PATCH 031/113] Fix "Eccube\Service\OrderStateMachine::__construct(): Argument #1 ($_orderStateMachine) must be of type Symfony\Component\Workflow\StateMachine, Symfony\Component\Workflow\Debug\TraceableWorkflow given" --- src/Eccube/Service/OrderStateMachine.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Eccube/Service/OrderStateMachine.php b/src/Eccube/Service/OrderStateMachine.php index dec1b931310..14d6e4442fc 100644 --- a/src/Eccube/Service/OrderStateMachine.php +++ b/src/Eccube/Service/OrderStateMachine.php @@ -22,6 +22,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Workflow\Event\Event; use Symfony\Component\Workflow\StateMachine; +use Symfony\Component\Workflow\WorkflowInterface; class OrderStateMachine implements EventSubscriberInterface { @@ -44,7 +45,7 @@ class OrderStateMachine implements EventSubscriberInterface */ private $stockReduceProcessor; - public function __construct(StateMachine $_orderStateMachine, OrderStatusRepository $orderStatusRepository, PointProcessor $pointProcessor, StockReduceProcessor $stockReduceProcessor) + public function __construct(WorkflowInterface $_orderStateMachine, OrderStatusRepository $orderStatusRepository, PointProcessor $pointProcessor, StockReduceProcessor $stockReduceProcessor) { $this->machine = $_orderStateMachine; $this->orderStatusRepository = $orderStatusRepository; From 526008cb5b9843fe69c1d8f2427293cf6ddc5b97 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 13 Dec 2023 15:32:14 +0900 Subject: [PATCH 032/113] Fix "Remove DoctrineProvider and DoctrineAdapter because these classes have been added to the doctrine/cache package" --- app/config/eccube/packages/codeception/doctrine.yaml | 3 ++- app/config/eccube/packages/prod/doctrine.yaml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/config/eccube/packages/codeception/doctrine.yaml b/app/config/eccube/packages/codeception/doctrine.yaml index e5f04eb0bdf..91652437535 100644 --- a/app/config/eccube/packages/codeception/doctrine.yaml +++ b/app/config/eccube/packages/codeception/doctrine.yaml @@ -18,7 +18,8 @@ doctrine: services: doctrine.app_cache_provider: - class: Symfony\Component\Cache\DoctrineProvider + class: Doctrine\Common\Cache\Psr6\DoctrineProvider + factory: ['Doctrine\Common\Cache\Psr6\DoctrineProvider', wrap] public: false arguments: - '@doctrine.app_cache_pool' diff --git a/app/config/eccube/packages/prod/doctrine.yaml b/app/config/eccube/packages/prod/doctrine.yaml index e5f04eb0bdf..91652437535 100644 --- a/app/config/eccube/packages/prod/doctrine.yaml +++ b/app/config/eccube/packages/prod/doctrine.yaml @@ -18,7 +18,8 @@ doctrine: services: doctrine.app_cache_provider: - class: Symfony\Component\Cache\DoctrineProvider + class: Doctrine\Common\Cache\Psr6\DoctrineProvider + factory: ['Doctrine\Common\Cache\Psr6\DoctrineProvider', wrap] public: false arguments: - '@doctrine.app_cache_pool' From 22123e5b918d504b3cdcae1c5275a82d5cbdfbce Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:20:17 +0900 Subject: [PATCH 033/113] Fix "MicroKernelTrait::configureRoutes() is now always called with a RoutingConfigurator" --- src/Eccube/Kernel.php | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/Eccube/Kernel.php b/src/Eccube/Kernel.php index dd1852281ab..564370e389f 100644 --- a/src/Eccube/Kernel.php +++ b/src/Eccube/Kernel.php @@ -49,6 +49,7 @@ use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\Finder\Finder; use Symfony\Component\HttpKernel\Kernel as BaseKernel; +use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; use Symfony\Component\Routing\RouteCollectionBuilder; class Kernel extends BaseKernel @@ -74,6 +75,11 @@ public function getLogDir(): string return $this->getProjectDir().'/var/log'; } + public function getConfigDir(): string + { + return $this->getProjectDir().'/app/config/eccube'; + } + public function registerBundles(): iterable { $contents = require $this->getProjectDir().'/app/config/eccube/bundles.php'; @@ -165,30 +171,29 @@ protected function configureContainer(ContainerBuilder $container, LoaderInterfa $loader->load($dir.'/services_'.$this->environment.self::CONFIG_EXTS, 'glob'); } - protected function configureRoutes(RouteCollectionBuilder $routes) + protected function configureRoutes(RoutingConfigurator $routes) { $container = $this->getContainer(); $scheme = ['https', 'http']; $forceSSL = $container->getParameter('eccube_force_ssl'); if ($forceSSL) { - $scheme = 'https'; + $scheme = ['https']; } - $routes->setSchemes($scheme); $confDir = $this->getProjectDir().'/app/config/eccube'; if (is_dir($confDir.'/routes/')) { - $builder = $routes->import($confDir.'/routes/*'.self::CONFIG_EXTS, '/', 'glob'); - $builder->setSchemes($scheme); + $builder = $routes->import($confDir.'/routes/*'.self::CONFIG_EXTS); + $builder->schemes($scheme); } if (is_dir($confDir.'/routes/'.$this->environment)) { - $builder = $routes->import($confDir.'/routes/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob'); - $builder->setSchemes($scheme); + $builder = $routes->import($confDir.'/routes/'.$this->environment.'/**/*'.self::CONFIG_EXTS); + $builder->schemes($scheme); } - $builder = $routes->import($confDir.'/routes'.self::CONFIG_EXTS, '/', 'glob'); - $builder->setSchemes($scheme); - $builder = $routes->import($confDir.'/routes_'.$this->environment.self::CONFIG_EXTS, '/', 'glob'); - $builder->setSchemes($scheme); + $builder = $routes->import($confDir.'/routes'.self::CONFIG_EXTS); + $builder->schemes($scheme); + $builder = $routes->import($confDir.'/routes_'.$this->environment.self::CONFIG_EXTS); + $builder->schemes($scheme); // 有効なプラグインのルーティングをインポートする. $plugins = $container->getParameter('eccube.plugins.enabled'); @@ -197,11 +202,11 @@ protected function configureRoutes(RouteCollectionBuilder $routes) $dir = $pluginDir.'/'.$plugin.'/Controller'; if (file_exists($dir)) { $builder = $routes->import($dir, '/', 'annotation'); - $builder->setSchemes($scheme); + $builder->schemes($scheme); } if (file_exists($pluginDir.'/'.$plugin.'/Resource/config')) { - $builder = $routes->import($pluginDir.'/'.$plugin.'/Resource/config/routes'.self::CONFIG_EXTS, '/', 'glob'); - $builder->setSchemes($scheme); + $builder = $routes->import($pluginDir.'/'.$plugin.'/Resource/config/routes'.self::CONFIG_EXTS); + $builder->schemes($scheme); } } } From 4e3616b4f49fcd57e6881d18b6d092e204590cb8 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:29:06 +0900 Subject: [PATCH 034/113] Fix "[Semantical Error] The annotation "@Doctrine\ORM\Mapping\Table" in class Eccube\Entity\BaseInfo was never imported. Did you maybe forget to add a "use" statement for this annotation?" --- composer.json | 2 +- composer.lock | 26 +++++++++---------- src/Eccube/Command/GenerateProxyCommand.php | 3 ++- .../Compiler/PurchaseFlowPass.php | 3 ++- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/composer.json b/composer.json index 2bbe633f4b1..6e5beadaf24 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ "ext-zip": "*", "composer/ca-bundle": "^1.1", "composer/composer": "^2.0", - "doctrine/annotations": "^1.6", + "doctrine/annotations": "^2.0", "doctrine/cache": "^2.0", "doctrine/collections": "^1.5", "doctrine/common": "^3.0", diff --git a/composer.lock b/composer.lock index a421cb915d9..c54b093ae09 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": "4afbd917383ac548dd1ce82ed668c695", + "content-hash": "9f5ada8b3d5f77c06e6c16809c252118", "packages": [ { "name": "carbonphp/carbon-doctrine-types", @@ -707,30 +707,30 @@ }, { "name": "doctrine/annotations", - "version": "1.14.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", - "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", "shasum": "" }, "require": { - "doctrine/lexer": "^1 || ^2", + "doctrine/lexer": "^2 || ^3", "ext-tokenizer": "*", - "php": "^7.1 || ^8.0", + "php": "^7.2 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "doctrine/cache": "^2.0", + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.0", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/cache": "^5.4 || ^6", "vimeo/psalm": "^4.10" }, "suggest": { @@ -777,9 +777,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.14.3" + "source": "https://github.com/doctrine/annotations/tree/2.0.1" }, - "time": "2023-02-01T09:20:38+00:00" + "time": "2023-02-02T22:02:53+00:00" }, { "name": "doctrine/cache", diff --git a/src/Eccube/Command/GenerateProxyCommand.php b/src/Eccube/Command/GenerateProxyCommand.php index 3e67750945a..8a8e9fedd85 100644 --- a/src/Eccube/Command/GenerateProxyCommand.php +++ b/src/Eccube/Command/GenerateProxyCommand.php @@ -50,7 +50,8 @@ protected function configure() protected function execute(InputInterface $input, OutputInterface $output) { // アノテーションを読み込めるように設定. - AnnotationRegistry::registerAutoloadNamespace('Eccube\Annotation', __DIR__.'/../../../src'); + // TODO doctrine/anntationsをv2へアップデート。影響がある場合は要調査。 + //AnnotationRegistry::registerAutoloadNamespace('Eccube\Annotation', __DIR__.'/../../../src'); $projectDir = $this->eccubeConfig->get('kernel.project_dir'); $includeDirs = [$projectDir.'/app/Customize/Entity']; diff --git a/src/Eccube/DependencyInjection/Compiler/PurchaseFlowPass.php b/src/Eccube/DependencyInjection/Compiler/PurchaseFlowPass.php index ebc166ed48f..a4157059d6f 100644 --- a/src/Eccube/DependencyInjection/Compiler/PurchaseFlowPass.php +++ b/src/Eccube/DependencyInjection/Compiler/PurchaseFlowPass.php @@ -50,7 +50,8 @@ public function process(ContainerBuilder $container) self::PURCHASE_PROCESSOR_TAG => 'addPurchaseProcessor', ]; - AnnotationRegistry::registerAutoloadNamespace('Eccube\Annotation', __DIR__.'/../../../../src'); + // TODO doctrine/anntationsをv2へアップデート。影響がある場合は要調査。 + //AnnotationRegistry::registerAutoloadNamespace('Eccube\Annotation', __DIR__.'/../../../../src'); $reader = new AnnotationReader(); foreach ($processorTags as $tag => $methodName) { From dfb686319a90d2d08bcea3e20aa032e2c29d5fca Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 14 Dec 2023 11:34:56 +0900 Subject: [PATCH 035/113] PasswordEncoder -> PasswordHasher --- .../Command/LoadDataFixturesEccubeCommand.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Eccube/Command/LoadDataFixturesEccubeCommand.php b/src/Eccube/Command/LoadDataFixturesEccubeCommand.php index f51df7d2cc1..01f126ab459 100644 --- a/src/Eccube/Command/LoadDataFixturesEccubeCommand.php +++ b/src/Eccube/Command/LoadDataFixturesEccubeCommand.php @@ -16,6 +16,7 @@ use Doctrine\Bundle\DoctrineBundle\Command\DoctrineCommand; use Doctrine\Persistence\ManagerRegistry; use Eccube\Common\EccubeConfig; +use Eccube\Security\PasswordHasher\PasswordHasher; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Filesystem\Filesystem; @@ -29,10 +30,16 @@ class LoadDataFixturesEccubeCommand extends DoctrineCommand */ protected $eccubeConfig; - public function __construct(ManagerRegistry $registry, EccubeConfig $eccubeConfig) + /** + * @var PasswordHasher + */ + protected $passwordHasher; + + public function __construct(ManagerRegistry $registry, EccubeConfig $eccubeConfig, PasswordHasher $passwordHasher) { parent::__construct($registry); $this->eccubeConfig = $eccubeConfig; + $this->passwordHasher = $passwordHasher; } protected function configure() @@ -66,10 +73,7 @@ protected function execute(InputInterface $input, OutputInterface $output) $login_id = env('ECCUBE_ADMIN_USER', 'admin'); $login_password = env('ECCUBE_ADMIN_PASS', 'password'); - $encoder = new \Eccube\Security\Core\Encoder\PasswordEncoder($eccubeConfig); - - $salt = \Eccube\Util\StringUtil::random(32); - $password = $encoder->encodePassword($login_password, $salt); + $password = $this->passwordHasher->hash($login_password); $conn = $em->getConnection(); $member_id = ('postgresql' === $conn->getDatabasePlatform()->getName()) @@ -80,7 +84,7 @@ protected function execute(InputInterface $input, OutputInterface $output) 'id' => $member_id, 'login_id' => $login_id, 'password' => $password, - 'salt' => $salt, + 'salt' => 'n/a', 'work_id' => 1, 'authority_id' => 0, 'creator_id' => 1, From 39c56af0c3b969122680fea3c218b5f28d629556 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 14 Dec 2023 13:37:31 +0900 Subject: [PATCH 036/113] Fix "Remove `framework.session.storage_id` configuration option, use the `framework.session.storage_factory_id` configuration option instead" --- app/config/eccube/packages/test/framework.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/config/eccube/packages/test/framework.yaml b/app/config/eccube/packages/test/framework.yaml index e1c8a478ac4..3ff4279aefe 100644 --- a/app/config/eccube/packages/test/framework.yaml +++ b/app/config/eccube/packages/test/framework.yaml @@ -1,5 +1,5 @@ framework: test: ~ session: - storage_id: session.storage.mock_file + storage_factory_id: session.storage.mock_file cookie_lifetime: 1440 From 9acf28e78f927e25d7c62c80cec681727a84b505 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 14 Dec 2023 13:53:52 +0900 Subject: [PATCH 037/113] Fix return type --- tests/Eccube/Tests/Mock/CsrfTokenManagerMock.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/Eccube/Tests/Mock/CsrfTokenManagerMock.php b/tests/Eccube/Tests/Mock/CsrfTokenManagerMock.php index c873bd87dd5..71c7bbde2c1 100644 --- a/tests/Eccube/Tests/Mock/CsrfTokenManagerMock.php +++ b/tests/Eccube/Tests/Mock/CsrfTokenManagerMock.php @@ -26,7 +26,7 @@ class CsrfTokenManagerMock implements CsrfTokenManagerInterface /** * {@inheritdoc} */ - public function getToken($tokenId) + public function getToken($tokenId): CsrfToken { return new CsrfToken($tokenId, null); } @@ -34,7 +34,7 @@ public function getToken($tokenId) /** * {@inheritdoc} */ - public function refreshToken($tokenId) + public function refreshToken($tokenId): CsrfToken { return new CsrfToken($tokenId, null); } @@ -42,7 +42,7 @@ public function refreshToken($tokenId) /** * {@inheritdoc} */ - public function removeToken($tokenId) + public function removeToken($tokenId): ?string { return null; } @@ -50,7 +50,7 @@ public function removeToken($tokenId) /** * {@inheritdoc} */ - public function isTokenValid(CsrfToken $token) + public function isTokenValid(CsrfToken $token): bool { return true; } From 0e9c47cb6b39570b0a25a0c0262b490f45bf77d5 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 14 Dec 2023 13:55:48 +0900 Subject: [PATCH 038/113] Fix "Remove the session.storage alias and session.storage.* services, use the session.storage.factory alias and session.storage.factory.* services instead" --- app/config/eccube/packages/test/framework.yaml | 2 +- app/config/eccube/services_test.yaml | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/app/config/eccube/packages/test/framework.yaml b/app/config/eccube/packages/test/framework.yaml index 3ff4279aefe..8afdcd7dca0 100644 --- a/app/config/eccube/packages/test/framework.yaml +++ b/app/config/eccube/packages/test/framework.yaml @@ -1,5 +1,5 @@ framework: test: ~ session: - storage_factory_id: session.storage.mock_file + storage_factory_id: session.storage.factory.mock_file cookie_lifetime: 1440 diff --git a/app/config/eccube/services_test.yaml b/app/config/eccube/services_test.yaml index 07b6cf62b45..8f70428c76a 100644 --- a/app/config/eccube/services_test.yaml +++ b/app/config/eccube/services_test.yaml @@ -12,12 +12,11 @@ services: - '@doctrine.orm.default_entity_manager' - false # セッションの保存先をvar/sessions/testに変更する - session.storage.mock_file: - class: 'Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage' + session.storage.factory.mock_file: + class: 'Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorageFactory' arguments: - '%session.save_path%' - 'MOCKSESSID' - - '@session.storage.metadata_bag' Eccube\Service\PurchaseFlow\Processor\DeliveryFeePreprocessor: autowire: true public: true From e15b8127c36972f09d8e84178dc9f92210ee2001 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 14 Dec 2023 14:00:09 +0900 Subject: [PATCH 039/113] Fix "Fatal error: Declaration of Eccube\Tests\Repository\DummyCustomer::getRoles() must be compatible with Symfony\Component\Security\Core\User\UserInterface::getRoles(): array " --- tests/Eccube/Tests/Repository/CustomerRepositoryTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php b/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php index af8495044b7..38ad3033b47 100644 --- a/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php @@ -140,7 +140,7 @@ public function testGetQueryBuilderBySearchDataByMulti2147483648() class DummyCustomer implements UserInterface { - public function getRoles() + public function getRoles(): array { return ['ROLE_USER']; } From 888ab82df52e8b3a7a8218a56bceec0ee4d77b0a Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 14 Dec 2023 14:05:50 +0900 Subject: [PATCH 040/113] Fix "Fatal error: Class Eccube\Tests\Repository\DummyCustomer contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Symfony\Component\Security\Core\User\UserInterface::getUserIdentifier)" --- tests/Eccube/Tests/Repository/CustomerRepositoryTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php b/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php index 38ad3033b47..264f3f62e95 100644 --- a/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php @@ -164,4 +164,10 @@ public function eraseCredentials() { return; } + + public function getUserIdentifier(): string + { + // FIXME deprecated + return $this->getUsername(); + } } From 603c7ff58067e2a4f8dbb79b23a50fcdb1028071 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 18 Dec 2023 08:04:13 +0900 Subject: [PATCH 041/113] Fix "Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: You have requested a non-existent service "session"." --- app/config/eccube/services_test.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/config/eccube/services_test.yaml b/app/config/eccube/services_test.yaml index 8f70428c76a..08c77092cb0 100644 --- a/app/config/eccube/services_test.yaml +++ b/app/config/eccube/services_test.yaml @@ -2,6 +2,9 @@ services: _defaults: public: true + session: + class: Eccube\Session\Session + autowire: true # テスト時はCsrfTokenManagerはMockを利用する security.csrf.token_manager: class: Eccube\Tests\Mock\CsrfTokenManagerMock From f27b4a33e42802c745d1fd461a87bcee30185fe9 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 18 Dec 2023 08:07:00 +0900 Subject: [PATCH 042/113] =?UTF-8?q?=E3=82=BB=E3=83=83=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=81=AE=E7=94=9F=E6=88=90=E3=82=92=E3=82=B9=E3=82=AD?= =?UTF-8?q?=E3=83=83=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Eccube/Tests/Web/AbstractWebTestCase.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/Eccube/Tests/Web/AbstractWebTestCase.php b/tests/Eccube/Tests/Web/AbstractWebTestCase.php index 4a1a047bd30..803f4d33cf2 100644 --- a/tests/Eccube/Tests/Web/AbstractWebTestCase.php +++ b/tests/Eccube/Tests/Web/AbstractWebTestCase.php @@ -24,7 +24,8 @@ protected function setUp(): void { parent::setUp(); - $this->createSession(); + // TODO このタイミングだとセッションは生成できないのでいったんコメントアウト + // $this->createSession(); } protected function tearDown(): void From 484add45a9a4f5cb512f7ca02e4c6fd6843f46e1 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 18 Dec 2023 09:04:05 +0900 Subject: [PATCH 043/113] Fix "LogicException: Booting the kernel before calling "Symfony\Bundle\FrameworkBundle\Test\WebTestCase::createClient()" is not supported, the kernel should only be booted once." --- tests/Eccube/Tests/Web/Admin/Order/EditControllerTest.php | 2 +- .../Tests/Web/Admin/Order/EditControllerWithMultipleTest.php | 2 +- .../Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/Eccube/Tests/Web/Admin/Order/EditControllerTest.php b/tests/Eccube/Tests/Web/Admin/Order/EditControllerTest.php index b2a24199688..64b186cbbfa 100644 --- a/tests/Eccube/Tests/Web/Admin/Order/EditControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Order/EditControllerTest.php @@ -363,7 +363,7 @@ public function testOrderProcessingToFrontConfirm() $this->markTestIncomplete('フロントとのセッション管理の実装が完了するまでスキップ'); // フロント側から, product_class_id = 1 をカート投入 - $client = $this->createClient(); + $client = $this->client; $client->request( 'PUT', $this->generateUrl( diff --git a/tests/Eccube/Tests/Web/Admin/Order/EditControllerWithMultipleTest.php b/tests/Eccube/Tests/Web/Admin/Order/EditControllerWithMultipleTest.php index 4c8cdae1771..8f46c73ed01 100644 --- a/tests/Eccube/Tests/Web/Admin/Order/EditControllerWithMultipleTest.php +++ b/tests/Eccube/Tests/Web/Admin/Order/EditControllerWithMultipleTest.php @@ -217,7 +217,7 @@ public function testOrderProcessingToFrontConfirm() $this->verify(); // フロント側から, product_class_id = 1 をカート投入 - $client = $this->createClient(); + $client = $this->client; $crawler = $client->request('POST', '/cart/add', ['product_class_id' => 1]); $this->app['eccube.service.cart']->lock(); diff --git a/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php b/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php index fac4ec595c1..95fad524ac3 100644 --- a/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php +++ b/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php @@ -161,7 +161,7 @@ public function testShippingEdit() $this->markTestIncomplete('Shipping edit is not implemented.'); $faker = $this->getFaker(); - $client = $this->createClient(); + $client = $this->client; $this->scenarioCartIn($client); $formData = $this->createNonmemberFormData(); @@ -218,7 +218,7 @@ public function testShippingEditWithPostToComplete() $this->markTestIncomplete('Shipping edit is not implemented.'); $faker = $this->getFaker(); - $client = $this->createClient(); + $client = $this->client; $this->scenarioCartIn($client); $formData = $this->createNonmemberFormData(); From e49cc03b8e4078cb185f2067b050dce9e516f6a6 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 18 Dec 2023 09:29:27 +0900 Subject: [PATCH 044/113] Fix "LogicException: Booting the kernel before calling "Symfony\Bundle\FrameworkBundle\Test\WebTestCase::createClient()" is not supported, the kernel should only be booted once." --- tests/Eccube/Tests/EccubeTestCase.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Eccube/Tests/EccubeTestCase.php b/tests/Eccube/Tests/EccubeTestCase.php index 7402f60622a..b39ffeb6047 100644 --- a/tests/Eccube/Tests/EccubeTestCase.php +++ b/tests/Eccube/Tests/EccubeTestCase.php @@ -59,7 +59,7 @@ abstract class EccubeTestCase extends WebTestCase protected function setUp(): void { parent::setUp(); - $this->client = static::createClient(); + $this->client = static::$booted ? static::getClient(): static::createClient(); $this->entityManager = static::getContainer()->get('doctrine')->getManager(); $this->eccubeConfig = static::getContainer()->get(EccubeConfig::class); } From 9160c52042336d7bbca4e68a5bf5014eebb9a9f0 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 18 Dec 2023 13:49:53 +0900 Subject: [PATCH 045/113] Fix "TypeError: Eccube\Common\EccubeConfig::__construct(): Argument #1 ($container) must be of type Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface, Symfony\Component\DependencyInjection\Container given" --- src/Eccube/Common/EccubeConfig.php | 2 +- .../Eccube/Tests/Common/EccubeConfigTest.php | 24 +++++++++---------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/Eccube/Common/EccubeConfig.php b/src/Eccube/Common/EccubeConfig.php index f6399f0b9fd..d982e4f1a8d 100644 --- a/src/Eccube/Common/EccubeConfig.php +++ b/src/Eccube/Common/EccubeConfig.php @@ -76,7 +76,7 @@ public function offsetGet($offset) #[\ReturnTypeWillChange] public function offsetSet($offset, $value) { - $this->set($offset, $value); + throw new \Exception(); } /** diff --git a/tests/Eccube/Tests/Common/EccubeConfigTest.php b/tests/Eccube/Tests/Common/EccubeConfigTest.php index a60c4a4addd..39624e624ac 100644 --- a/tests/Eccube/Tests/Common/EccubeConfigTest.php +++ b/tests/Eccube/Tests/Common/EccubeConfigTest.php @@ -16,9 +16,13 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\Container; use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; +use Symfony\Component\DependencyInjection\ParameterBag\ContainerBag; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag; class EccubeConfigTest extends TestCase { + private $container; + /** * @var EccubeConfig */ @@ -26,13 +30,13 @@ class EccubeConfigTest extends TestCase protected function setup(): void { - $container = new Container(); - $this->eccubeConfig = new EccubeConfig($container); + $this->container = new Container(); + $this->eccubeConfig = new EccubeConfig(new ContainerBag($this->container)); } public function testGet() { - $this->eccubeConfig->set('hoge.fuga', true); + $this->container->setParameter('hoge.fuga', true); self::assertSame(true, $this->eccubeConfig->get('hoge.fuga')); } @@ -45,19 +49,13 @@ public function testGetNotFound() public function testHas() { self::assertFalse($this->eccubeConfig->has('hoge.fuga')); - $this->eccubeConfig->set('hoge.fuga', true); + $this->container->setParameter('hoge.fuga', true); self::assertTrue($this->eccubeConfig->has('hoge.fuga')); } - public function testSet() - { - $this->eccubeConfig->set('hoge.fuga', true); - self::assertSame(true, $this->eccubeConfig->get('hoge.fuga')); - } - public function testOffsetGet() { - $this->eccubeConfig->set('hoge.fuga', true); + $this->container->setParameter('hoge.fuga', true); self::assertSame(true, $this->eccubeConfig->offsetGet('hoge.fuga')); } @@ -70,14 +68,14 @@ public function testOffsetGetNotFound() public function testOffsetExist() { self::assertFalse($this->eccubeConfig->offsetExists('hoge.fuga')); - $this->eccubeConfig->set('hoge.fuga', true); + $this->container->setParameter('hoge.fuga', true); self::assertTrue($this->eccubeConfig->offsetExists('hoge.fuga')); } public function testOffsetSet() { + $this->expectException(\Exception::class); $this->eccubeConfig->offsetSet('hoge.fuga', true); - self::assertSame(true, $this->eccubeConfig->offsetGet('hoge.fuga')); } public function testOffsetUnset() From cb4eb6eb85f2ad96696ad2d94fdb9d580661303e Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 18 Dec 2023 13:53:04 +0900 Subject: [PATCH 046/113] Fix "Error: Access to undeclared static property Eccube\Tests\Form\Type\Admin\BlockTypeTest::$container" --- tests/Eccube/Tests/Form/Type/Admin/BlockTypeTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Eccube/Tests/Form/Type/Admin/BlockTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/BlockTypeTest.php index e3c7531b84a..e42197f84c2 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/BlockTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/BlockTypeTest.php @@ -31,7 +31,7 @@ protected function setUp(): void 'csrf_protection' => false, ]) ->getForm(); - self::$container->get('request_stack')->push(new Request()); + static::getContainer()->get('request_stack')->push(new Request()); } public function testValidData() From 5d86c1b346c55a24a8d58316d7c5830048a27cc8 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 18 Dec 2023 13:59:56 +0900 Subject: [PATCH 047/113] Fix "Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: You have requested a non-existent service "security.encoder_factory"." --- .../Tests/Repository/MemberRepositoryTest.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tests/Eccube/Tests/Repository/MemberRepositoryTest.php b/tests/Eccube/Tests/Repository/MemberRepositoryTest.php index ed936e867a7..634d637d640 100644 --- a/tests/Eccube/Tests/Repository/MemberRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/MemberRepositoryTest.php @@ -15,6 +15,7 @@ use Eccube\Entity\Member; use Eccube\Repository\MemberRepository; +use Eccube\Security\PasswordHasher\PasswordHasher; use Eccube\Tests\EccubeTestCase; use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; @@ -30,13 +31,13 @@ class MemberRepositoryTest extends EccubeTestCase /** @var MemberRepository */ protected $memberRepo; - /** @var EncoderFactoryInterface */ - protected $encoderFactory; + /** @var PasswordHasher */ + protected $passwordHasher; protected function setUp(): void { parent::setUp(); - $this->encoderFactory = static::getContainer()->get('security.encoder_factory'); + $this->passwordHasher = static::getContainer()->get(PasswordHasher::class); $this->memberRepo = $this->entityManager->getRepository(\Eccube\Entity\Member::class); $this->Member = $this->memberRepo->find(1); $Work = $this->entityManager->getRepository('Eccube\Entity\Master\Work') @@ -44,13 +45,11 @@ protected function setUp(): void for ($i = 0; $i < 3; $i++) { $Member = new Member(); - $salt = bin2hex(openssl_random_pseudo_bytes(5)); $password = 'password'; - $encoder = $this->encoderFactory->getEncoder($Member); + $password = $this->passwordHasher->hash($password); $Member ->setLoginId('member-1') - ->setPassword($encoder->encodePassword($password, $salt)) - ->setSalt($salt) + ->setPassword($password) ->setSortNo($i) ->setWork($Work); $this->entityManager->persist($Member); From 5d5ea208b4beeff1a1d0725fa6b53f7a8be0d20e Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 18 Dec 2023 16:59:40 +0900 Subject: [PATCH 048/113] =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/eccube/packages/framework.yaml | 2 +- src/Eccube/Command/LoadDataFixturesEccubeCommand.php | 10 ++++++---- src/Eccube/Entity/Member.php | 7 ++++--- src/Eccube/EventListener/ExceptionListener.php | 2 +- src/Eccube/EventListener/SecurityListener.php | 2 +- tests/Eccube/Tests/Web/AbstractWebTestCase.php | 12 +----------- 6 files changed, 14 insertions(+), 21 deletions(-) diff --git a/app/config/eccube/packages/framework.yaml b/app/config/eccube/packages/framework.yaml index 60aa228c6a7..6f38ebdbe6c 100644 --- a/app/config/eccube/packages/framework.yaml +++ b/app/config/eccube/packages/framework.yaml @@ -16,7 +16,7 @@ framework: gc_maxlifetime: '%env(ECCUBE_GC_MAXLIFETIME)%' cookie_httponly: true cookie_samesite: none - cookie_secure: auto + cookie_secure: true # When using the HTTP Cache, ESI allows to render page fragments separately # and with different cache configurations for each fragment diff --git a/src/Eccube/Command/LoadDataFixturesEccubeCommand.php b/src/Eccube/Command/LoadDataFixturesEccubeCommand.php index 01f126ab459..e0eaaf2923f 100644 --- a/src/Eccube/Command/LoadDataFixturesEccubeCommand.php +++ b/src/Eccube/Command/LoadDataFixturesEccubeCommand.php @@ -16,10 +16,12 @@ use Doctrine\Bundle\DoctrineBundle\Command\DoctrineCommand; use Doctrine\Persistence\ManagerRegistry; use Eccube\Common\EccubeConfig; +use Eccube\Entity\Member; use Eccube\Security\PasswordHasher\PasswordHasher; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Filesystem\Filesystem; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; class LoadDataFixturesEccubeCommand extends DoctrineCommand { @@ -31,11 +33,11 @@ class LoadDataFixturesEccubeCommand extends DoctrineCommand protected $eccubeConfig; /** - * @var PasswordHasher + * @var UserPasswordHasherInterface */ protected $passwordHasher; - public function __construct(ManagerRegistry $registry, EccubeConfig $eccubeConfig, PasswordHasher $passwordHasher) + public function __construct(ManagerRegistry $registry, EccubeConfig $eccubeConfig, UserPasswordHasherInterface $passwordHasher) { parent::__construct($registry); $this->eccubeConfig = $eccubeConfig; @@ -73,7 +75,7 @@ protected function execute(InputInterface $input, OutputInterface $output) $login_id = env('ECCUBE_ADMIN_USER', 'admin'); $login_password = env('ECCUBE_ADMIN_PASS', 'password'); - $password = $this->passwordHasher->hash($login_password); + $password = $this->passwordHasher->hashPassword(new Member(), $login_password); $conn = $em->getConnection(); $member_id = ('postgresql' === $conn->getDatabasePlatform()->getName()) @@ -84,7 +86,7 @@ protected function execute(InputInterface $input, OutputInterface $output) 'id' => $member_id, 'login_id' => $login_id, 'password' => $password, - 'salt' => 'n/a', + //'salt' => 'n/a', 'work_id' => 1, 'authority_id' => 0, 'creator_id' => 1, diff --git a/src/Eccube/Entity/Member.php b/src/Eccube/Entity/Member.php index 21c492b0f1b..3cd2ed0a5e6 100644 --- a/src/Eccube/Entity/Member.php +++ b/src/Eccube/Entity/Member.php @@ -15,6 +15,7 @@ use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; +use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Mapping\ClassMetadata; @@ -29,7 +30,7 @@ * @ORM\HasLifecycleCallbacks() * @ORM\Entity(repositoryClass="Eccube\Repository\MemberRepository") */ - class Member extends \Eccube\Entity\AbstractEntity implements UserInterface, \Serializable + class Member extends \Eccube\Entity\AbstractEntity implements UserInterface, PasswordAuthenticatedUserInterface, \Serializable { public static function loadValidatorMetadata(ClassMetadata $metadata) { @@ -313,7 +314,7 @@ public function setPassword($password) * * @return string */ - public function getPassword() + public function getPassword(): ?string { return $this->password; } @@ -603,7 +604,7 @@ public function unserialize($serialized) public function getUserIdentifier(): string { - return $this->email; + return $this->login_id; } } } diff --git a/src/Eccube/EventListener/ExceptionListener.php b/src/Eccube/EventListener/ExceptionListener.php index ce7ee46894a..d58eff19f75 100644 --- a/src/Eccube/EventListener/ExceptionListener.php +++ b/src/Eccube/EventListener/ExceptionListener.php @@ -105,7 +105,7 @@ public function onKernelException(ExceptionEvent $event) $content = $title; } - $event->setResponse(Response::create($content, $statusCode)); + $event->setResponse(new Response($content, $statusCode)); } /** diff --git a/src/Eccube/EventListener/SecurityListener.php b/src/Eccube/EventListener/SecurityListener.php index c55920e5102..cad6b71a54c 100644 --- a/src/Eccube/EventListener/SecurityListener.php +++ b/src/Eccube/EventListener/SecurityListener.php @@ -79,7 +79,7 @@ public function onInteractiveLogin(InteractiveLoginEvent $event) /** * @param AuthenticationFailureEvent $event */ - public function onAuthenticationFailure(AuthenticationFailureEvent $event) + public function onAuthenticationFailure(LoginFailureEvent $event) { $request = $this->requestStack->getCurrentRequest(); $request->getSession()->set('_security.login_memory', (bool) $request->request->get('login_memory', 0)); diff --git a/tests/Eccube/Tests/Web/AbstractWebTestCase.php b/tests/Eccube/Tests/Web/AbstractWebTestCase.php index 803f4d33cf2..03c28c419f5 100644 --- a/tests/Eccube/Tests/Web/AbstractWebTestCase.php +++ b/tests/Eccube/Tests/Web/AbstractWebTestCase.php @@ -59,17 +59,7 @@ public function logIn($user = null) */ public function loginTo(UserInterface $User) { - $firewall = 'admin'; - $role = ['ROLE_ADMIN']; - if ($User instanceof \Eccube\Entity\Customer) { - $firewall = 'customer'; - $role = ['ROLE_USER']; - } - $token = new UsernamePasswordToken($User, $firewall, $role); - - $session = $this->client->getContainer()->get('session'); - $session->set('_security_'.$firewall, serialize($token)); - $session->save(); + $this->client->loginUser($User); return $this->client; } From 644cdcae3f60d2a0a02b01f668e67b0ced0cf495 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 19 Dec 2023 08:53:34 +0900 Subject: [PATCH 049/113] =?UTF-8?q?PHP8.1=E3=81=AE=E4=B8=8D=E5=85=B7?= =?UTF-8?q?=E5=90=88=E3=81=AB=E3=82=88=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20https://github.com/symfony/symfony/issues/?= =?UTF-8?q?49091?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/unit-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 01a5a95f6fb..09742522f6a 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -59,10 +59,10 @@ jobs: uses: actions/checkout@master - name: Setup PHP - uses: nanasess/setup-php@master + uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - + extensions: :xdebug - name: Initialize Composer uses: ./.github/actions/composer From 46abc99ff99de7d114ba1c0e930ba1d0c062233b Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:26:59 +0900 Subject: [PATCH 050/113] =?UTF-8?q?=E3=81=84=E3=81=A3=E3=81=9F=E3=82=93?= =?UTF-8?q?=E3=82=B9=E3=82=AD=E3=83=83=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Handler/SameSiteNoneCompatSessionHandlerTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php b/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php index 32904b66de7..d3763af1f08 100644 --- a/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php +++ b/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php @@ -45,6 +45,12 @@ public static function tearDownAfterClass(): void } } + public function setUp(): void + { + self::markTestIncomplete('デフォルトのセッションハンドラで4.2と互換性が担保できるか確認'); + parent::setUp(); + } + /** * @dataProvider provideSession */ From cef00fd2657c779684454a8be4bd0be6802388be Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:38:44 +0900 Subject: [PATCH 051/113] Fix "Attempted to call an undefined method named \"getFlashBag\"" --- src/Eccube/Session/Session.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Eccube/Session/Session.php b/src/Eccube/Session/Session.php index 4f3e65da198..cce1d0b4d06 100644 --- a/src/Eccube/Session/Session.php +++ b/src/Eccube/Session/Session.php @@ -14,11 +14,13 @@ namespace Eccube\Session; use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface; +use Symfony\Component\HttpFoundation\Session\FlashBagAwareSessionInterface; use Symfony\Component\HttpFoundation\Session\SessionBagInterface; use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag; -class Session implements SessionInterface +class Session implements SessionInterface, FlashBagAwareSessionInterface { private RequestStack $requestStack; @@ -126,4 +128,9 @@ public function getMetadataBag(): MetadataBag { return $this->getSession()->getMetadataBag(); } + + public function getFlashBag(): FlashBagInterface + { + return $this->getSession()->getFlashBag(); + } } From 7438da04de15942dfab811351b72a2b307b30199 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 19 Dec 2023 10:26:43 +0900 Subject: [PATCH 052/113] =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Eccube/Tests/Web/AbstractWebTestCase.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/Eccube/Tests/Web/AbstractWebTestCase.php b/tests/Eccube/Tests/Web/AbstractWebTestCase.php index 03c28c419f5..92fb6fed2fd 100644 --- a/tests/Eccube/Tests/Web/AbstractWebTestCase.php +++ b/tests/Eccube/Tests/Web/AbstractWebTestCase.php @@ -13,6 +13,7 @@ namespace Eccube\Tests\Web; +use Eccube\Entity\Customer; use Eccube\Tests\EccubeTestCase; use Symfony\Component\BrowserKit\Cookie; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; @@ -59,7 +60,8 @@ public function logIn($user = null) */ public function loginTo(UserInterface $User) { - $this->client->loginUser($User); + $firewallContext = $User instanceof Customer ? 'customer' : 'admin'; + $this->client->loginUser($User, $firewallContext); return $this->client; } From 2f33f4b863b93badd367b9e27378ec4e02064870 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 19 Dec 2023 11:04:26 +0900 Subject: [PATCH 053/113] Fix "Input value contains a non-scalar value" --- src/Eccube/Controller/Admin/Product/ProductController.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Eccube/Controller/Admin/Product/ProductController.php b/src/Eccube/Controller/Admin/Product/ProductController.php index d650a67cf3c..091a456dc6c 100644 --- a/src/Eccube/Controller/Admin/Product/ProductController.php +++ b/src/Eccube/Controller/Admin/Product/ProductController.php @@ -631,8 +631,7 @@ public function edit(Request $request, RouterInterface $router, CacheUtil $cache $this->entityManager->flush(); - if (array_key_exists('product_image', $request->request->get('admin_product'))) { - $product_image = $request->request->get('admin_product')['product_image']; + if ($product_image = $request->request->all()['admin_product']['product_image'] ?? []) { foreach ($product_image as $sortNo => $filename) { $ProductImage = $this->productImageRepository ->findOneBy([ From 25961b479c781930140fffdadfaf28b2b08349c0 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 19 Dec 2023 13:42:13 +0900 Subject: [PATCH 054/113] Fix "Symfony\Component\HttpFoundation\Exception\SessionNotFoundException: There is currently no session available." --- .../Eccube/Tests/Service/CartServiceTest.php | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/Eccube/Tests/Service/CartServiceTest.php b/tests/Eccube/Tests/Service/CartServiceTest.php index 30619b7b947..c5186534c9c 100644 --- a/tests/Eccube/Tests/Service/CartServiceTest.php +++ b/tests/Eccube/Tests/Service/CartServiceTest.php @@ -81,6 +81,10 @@ protected function setUp(): void parent::setUp(); $this->cartService = static::getContainer()->get(CartService::class); + + $refClass = new \ReflectionClass(CartService::class); + $refClass->getProperty('session')->setValue($this->cartService, new SessionMock()); + $this->saleTypeRepository = $this->entityManager->getRepository(\Eccube\Entity\Master\SaleType::class); $this->orderRepository = $this->entityManager->getRepository(\Eccube\Entity\Order::class); $this->productClassRepository = $this->entityManager->getRepository(\Eccube\Entity\ProductClass::class); @@ -286,3 +290,27 @@ public function compare(CartItem $item1, CartItem $item2) && $item1->getQuantity() == $item2->getQuantity(); } } + +class SessionMock { + private array $bag = []; + + public function set($key, $value): void + { + $this->bag[$key] = $value; + } + + public function get($key, $default = null): mixed + { + return $this->bag[$key] ?? $default; + } + + public function has($key): bool + { + return isset($this->bag[$key]); + } + + public function remove($key): void + { + unset($this->bag[$key]); + } +} From 81820e6e6c64cf1011776436d55c4a6bb917caf2 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 19 Dec 2023 13:54:35 +0900 Subject: [PATCH 055/113] Fix PHPStan "Variable $value in empty() is never defined." --- src/Eccube/Util/StringUtil.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Eccube/Util/StringUtil.php b/src/Eccube/Util/StringUtil.php index 854276b29a2..a3b04939020 100644 --- a/src/Eccube/Util/StringUtil.php +++ b/src/Eccube/Util/StringUtil.php @@ -215,7 +215,7 @@ public static function timeAgo($date) * 引数 $greedy が true の場合は, 全角スペース, ネストした空の配列も * 空白と判断する. * - * @param string $value チェック対象の変数. 文字型以外も使用できるが、非推奨. + * @param mixed $value チェック対象の変数. 文字型以外も使用できるが、非推奨. * @param boolean $greedy '貧欲'にチェックを行う場合 true, デフォルト false * * @return boolean $value が空白と判断された場合 true From a01389fa15f845972fddb92b74476441ae489413 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 19 Dec 2023 13:55:13 +0900 Subject: [PATCH 056/113] Fix PHPStan "Call to an undefined method Eccube\Controller\AbstractController::get()" --- src/Eccube/Controller/AbstractController.php | 18 +++++++++++++++++- src/Eccube/Controller/SitemapController.php | 7 ------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/Eccube/Controller/AbstractController.php b/src/Eccube/Controller/AbstractController.php index 39cfb716132..f023ab4ac04 100644 --- a/src/Eccube/Controller/AbstractController.php +++ b/src/Eccube/Controller/AbstractController.php @@ -23,6 +23,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\Routing\Exception\RouteNotFoundException; +use Symfony\Component\Routing\RouterInterface; use Symfony\Contracts\Translation\TranslatorInterface; class AbstractController extends Controller @@ -57,6 +58,11 @@ class AbstractController extends Controller */ protected $session; + /** + * @var RouterInterface + */ + protected $router; + /** * @param EccubeConfig $eccubeConfig * @required @@ -111,6 +117,16 @@ public function setEventDispatcher(EventDispatcherInterface $eventDispatcher) $this->eventDispatcher = $eventDispatcher; } + /** + * @param RouterInterface $router + * @return void + * @required + */ + public function setRouter(RouterInterface $router) + { + $this->router = $router; + } + public function addSuccess($message, $namespace = 'front') { $this->addFlash('eccube.'.$namespace.'.success', $message); @@ -230,7 +246,7 @@ public function setLoginTargetPath($targetPath, $namespace = null) */ public function forwardToRoute($route, array $path = [], array $query = []) { - $Route = $this->get('router')->getRouteCollection()->get($route); + $Route = $this->router->getRouteCollection()->get($route); if (!$Route) { throw new RouteNotFoundException(sprintf('The named route "%s" as such route does not exist.', $route)); } diff --git a/src/Eccube/Controller/SitemapController.php b/src/Eccube/Controller/SitemapController.php index 5b46695629a..bb1f4e63a9c 100644 --- a/src/Eccube/Controller/SitemapController.php +++ b/src/Eccube/Controller/SitemapController.php @@ -50,11 +50,6 @@ class SitemapController extends AbstractController */ private $productRepository; - /** - * @var RouterInterface - */ - private $router; - /** * @var BaseInfo */ @@ -68,14 +63,12 @@ public function __construct( PageRepository $pageRepository, ProductListOrderByRepository $productListOrderByRepository, ProductRepository $productRepository, - RouterInterface $router, BaseInfoRepository $baseInfoRepository ) { $this->categoryRepository = $categoryRepository; $this->pageRepository = $pageRepository; $this->productListOrderByRepository = $productListOrderByRepository; $this->productRepository = $productRepository; - $this->router = $router; $this->BaseInfo = $baseInfoRepository->get(); } From 2a45f9596c5196a3ce0d4b509f60478e981ef1ce Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 19 Dec 2023 14:41:25 +0900 Subject: [PATCH 057/113] Fix "TypeError: Symfony\Component\PasswordHasher\Hasher\UserPasswordHasher::hashPassword(): Argument #1 ($user) must be of type Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface" --- src/Eccube/Entity/Customer.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Eccube/Entity/Customer.php b/src/Eccube/Entity/Customer.php index b10e0436164..75e4361dc84 100644 --- a/src/Eccube/Entity/Customer.php +++ b/src/Eccube/Entity/Customer.php @@ -15,6 +15,7 @@ use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; +use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Mapping\ClassMetadata; @@ -29,7 +30,7 @@ * @ORM\HasLifecycleCallbacks() * @ORM\Entity(repositoryClass="Eccube\Repository\CustomerRepository") */ - class Customer extends \Eccube\Entity\AbstractEntity implements UserInterface, \Serializable + class Customer extends \Eccube\Entity\AbstractEntity implements UserInterface, PasswordAuthenticatedUserInterface, \Serializable { /** * @var int @@ -655,7 +656,7 @@ public function setPassword($password = null) * * @return string|null */ - public function getPassword() + public function getPassword(): ?string { return $this->password; } From d6f57ec0c7b147c3050dda3cd67d1731feac696b Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 19 Dec 2023 14:55:06 +0900 Subject: [PATCH 058/113] Fix "Symfony\Component\HttpFoundation\Exception\SessionNotFoundException: There is currently no session available." --- .../System/MasterdataControllerTest.php | 53 ++++++++----------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/tests/Eccube/Tests/Web/Admin/Setting/System/MasterdataControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/System/MasterdataControllerTest.php index 7c62b48c9b9..5aae3904e05 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/System/MasterdataControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/System/MasterdataControllerTest.php @@ -15,23 +15,15 @@ use Eccube\Entity\Master\OrderStatus; use Eccube\Tests\Web\Admin\AbstractAdminWebTestCase; -use Symfony\Component\HttpFoundation\Session\Session; /** * Class MasterdataControllerTest */ class MasterdataControllerTest extends AbstractAdminWebTestCase { - /** - * @var Session - */ - private $session; - protected function setUp(): void { parent::setUp(); - - $this->session = static::getContainer()->get('session'); } protected $entityTest = 'Eccube-Entity-Master-Sex'; @@ -175,9 +167,9 @@ public function testEditIdIsZero() $this->verify(); // message check - $outPut = $this->session->getFlashBag()->get('eccube.admin.success'); - $this->actual = array_shift($outPut); - $this->expected = 'admin.common.save_complete'; + $crawler = $this->client->followRedirect(); + $this->actual = $crawler->filter('div.alert')->text(); + $this->expected = trans('admin.common.save_complete'); $this->verify(); } @@ -212,9 +204,9 @@ public function testNewNameIsZero() $this->verify(); // message check - $outPut = $this->session->getFlashBag()->get('eccube.admin.success'); - $this->actual = array_shift($outPut); - $this->expected = 'admin.common.save_complete'; + $crawler = $this->client->followRedirect(); + $this->actual = $crawler->filter('div.alert')->text(); + $this->expected = trans('admin.common.save_complete'); $this->verify(); } @@ -244,9 +236,9 @@ public function testEditSuccess() $this->verify(); // message check - $outPut = $this->session->getFlashBag()->get('eccube.admin.success'); - $this->actual = array_shift($outPut); - $this->expected = 'admin.common.save_complete'; + $crawler = $this->client->followRedirect(); + $this->actual = $crawler->filter('div.alert')->text(); + $this->expected = trans('admin.common.save_complete'); $this->verify(); } @@ -278,9 +270,9 @@ public function testEditRemove() $this->verify(); // message check - $outPut = $this->session->getFlashBag()->get('eccube.admin.success'); - $this->actual = array_shift($outPut); - $this->expected = 'admin.common.save_complete'; + $crawler = $this->client->followRedirect(); + $this->actual = $crawler->filter('div.alert')->text(); + $this->expected = trans('admin.common.save_complete'); $this->verify(); } @@ -292,7 +284,8 @@ public function testZeroEdit() $editForm['data'][$id]['id'] = 0; $editForm['data'][$id]['name'] = '0削除テスト'; - $this->client->request( + //$this->client->followRedirects(true); + $crawler = $this->client->request( 'POST', $this->generateUrl('admin_setting_system_masterdata_edit'), [ @@ -310,9 +303,9 @@ public function testZeroEdit() $this->verify(); // message check - $outPut = $this->session->getFlashBag()->get('eccube.admin.success'); - $this->actual = array_shift($outPut); - $this->expected = 'admin.common.save_complete'; + $crawler = $this->client->followRedirect(); + $this->actual = $crawler->filter('div.alert')->text(); + $this->expected = trans('admin.common.save_complete'); $this->verify(); } @@ -363,9 +356,9 @@ public function testZeroRemove() $this->assertNull($this->entityManager->getRepository($entityName)->find(0)); // message check - $outPut = $this->session->getFlashBag()->get('eccube.admin.success'); - $this->actual = array_shift($outPut); - $this->expected = 'admin.common.save_complete'; + $crawler = $this->client->followRedirect(); + $this->actual = $crawler->filter('div.alert')->text(); + $this->expected = trans('admin.common.save_complete'); $this->verify(); } @@ -393,9 +386,9 @@ public function testNewOrderStatus() ] ); // message check - $outPut = $this->session->getFlashBag()->get('eccube.admin.success'); - $this->actual = array_shift($outPut); - $this->expected = 'admin.common.save_complete'; + $crawler = $this->client->followRedirect(); + $this->actual = $crawler->filter('div.alert')->text(); + $this->expected = trans('admin.common.save_complete'); $this->verify(); /** @var OrderStatus $actual */ From 06cb56cea0ef14bcbc3a8e667c969f27aff8a7ce Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 19 Dec 2023 14:57:33 +0900 Subject: [PATCH 059/113] Fix "Symfony\Component\HttpFoundation\Exception\SessionNotFoundException: There is currently no session available." --- .../Tests/Web/Admin/Setting/Shop/MailControllerTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/Eccube/Tests/Web/Admin/Setting/Shop/MailControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/Shop/MailControllerTest.php index c90e87ebc0a..27d5e1b574e 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/Shop/MailControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/Shop/MailControllerTest.php @@ -142,9 +142,9 @@ public function testEditFail() $redirectUrl = $this->generateUrl('admin_setting_shop_mail'); $this->assertTrue($this->client->getResponse()->isRedirect($redirectUrl)); - $outPut = static::getContainer()->get('session')->getFlashBag()->get('eccube.admin.error'); - $this->actual = array_shift($outPut); - $this->expected = 'admin.common.save_error'; + $crawler = $this->client->followRedirect(); + $this->actual = $crawler->filter('div.alert')->text(); + $this->expected = trans('admin.common.save_error'); $this->verify(); } From a24a2b38fbe0a18d5c6797a5746c902ff8279150 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 20 Dec 2023 11:40:49 +0900 Subject: [PATCH 060/113] Fix "Symfony\Component\HttpFoundation\Exception\SessionNotFoundException: There is currently no session available." --- .../Eccube/Tests/Web/AbstractWebTestCase.php | 47 ++++++++++++++----- .../Tests/Web/ShoppingControllerTest.php | 12 +++-- .../ShoppingControllerWithNonmemberTest.php | 13 +++-- 3 files changed, 53 insertions(+), 19 deletions(-) diff --git a/tests/Eccube/Tests/Web/AbstractWebTestCase.php b/tests/Eccube/Tests/Web/AbstractWebTestCase.php index 92fb6fed2fd..f9f3b57518b 100644 --- a/tests/Eccube/Tests/Web/AbstractWebTestCase.php +++ b/tests/Eccube/Tests/Web/AbstractWebTestCase.php @@ -15,8 +15,9 @@ use Eccube\Entity\Customer; use Eccube\Tests\EccubeTestCase; +use Symfony\Bundle\FrameworkBundle\KernelBrowser; use Symfony\Component\BrowserKit\Cookie; -use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; +use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\Security\Core\User\UserInterface; abstract class AbstractWebTestCase extends EccubeTestCase @@ -24,9 +25,6 @@ abstract class AbstractWebTestCase extends EccubeTestCase protected function setUp(): void { parent::setUp(); - - // TODO このタイミングだとセッションは生成できないのでいったんコメントアウト - // $this->createSession(); } protected function tearDown(): void @@ -66,14 +64,39 @@ public function loginTo(UserInterface $User) return $this->client; } - public function createSession() + /** + * https://github.com/symfony/symfony/discussions/46961 + * + * @param KernelBrowser $client + * @return Session + */ + public function createSession(KernelBrowser $client): Session { - // セッションが途中できれてしまうような事象が発生するため - // https://github.com/symfony/symfony/issues/13450#issuecomment-353745790 - $session = $this->client->getContainer()->get('session'); - $session->set('dummy', 'dummy'); - $session->save(); - $cookie = new Cookie($session->getName(), $session->getId()); - $this->client->getCookieJar()->set($cookie); + $cookie = $client->getCookieJar()->get('MOCKSESSID'); + + // create a new session object + $container = static::getContainer(); + $session = $container->get('session.factory')->createSession(); + + if ($cookie) { + // get the session id from the session cookie if it exists + $session->setId($cookie->getValue()); + $session->start(); + } else { + // or create a new session id and a session cookie + $session->start(); + $session->save(); + + $sessionCookie = new Cookie( + $session->getName(), + $session->getId(), + null, + null, + 'localhost', + ); + $client->getCookieJar()->set($sessionCookie); + } + + return $session; } } diff --git a/tests/Eccube/Tests/Web/ShoppingControllerTest.php b/tests/Eccube/Tests/Web/ShoppingControllerTest.php index 8fccfaa0dd7..630ac6fbedd 100644 --- a/tests/Eccube/Tests/Web/ShoppingControllerTest.php +++ b/tests/Eccube/Tests/Web/ShoppingControllerTest.php @@ -69,11 +69,15 @@ public function testComplete() { $Customer = $this->createCustomer(); $Order = $this->createOrder($Customer); - static::getContainer()->get('session')->set('eccube.front.shopping.order.id', $Order->getId()); + + $session = $this->createSession($this->client); + $session->set('eccube.front.shopping.order.id', $Order->getId()); + $session->save(); + $this->client->request('GET', $this->generateUrl('shopping_complete')); $this->assertTrue($this->client->getResponse()->isSuccessful()); - $this->assertNull(static::getContainer()->get('session')->get('eccube.front.shopping.order.id')); + $this->assertNull($session->get('eccube.front.shopping.order.id')); } @@ -104,7 +108,9 @@ public function testCompleteWithXssInjectionAttack() // 1つの新着情報を保存した後にホームページにアクセスする。 // Request Homepage after saving a single news item - static::getContainer()->get('session')->set('eccube.front.shopping.order.id', $Order->getId()); + $session = $this->createSession($this->client); + $session->set('eccube.front.shopping.order.id', $Order->getId()); + $session->save(); $crawler = $this->client->request('GET', $this->generateUrl('shopping_complete')); //
タグから危険なid属性が削除されていることを確認する。 diff --git a/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php b/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php index 95fad524ac3..2ddab54593c 100644 --- a/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php +++ b/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php @@ -48,8 +48,9 @@ public function testRoutingShoppingLogin() public function testIndexWithCartNotFound() { // お客様情報を入力済の状態にするため, セッションにエンティティをセット. - $session = static::getContainer()->get('session'); + $session = $this->createSession($this->client); $session->set(OrderHelper::SESSION_NON_MEMBER, new Customer()); + $session->save(); $this->client->request('GET', '/shopping'); @@ -136,17 +137,21 @@ public function testNonmemberInput() public function testNonmemberInputWithPost() { + $session = $this->createSession($this->client); + $session->set('test', 1); + $session->save(); + $this->scenarioCartIn(); $formData = $this->createNonmemberFormData(); $this->scenarioInput($formData); - $Nonmember = static::getContainer()->get(OrderHelper::class)->getNonMember('eccube.front.shopping.nonmember'); + $Nonmember = $session->get('eccube.front.shopping.nonmember'); $this->assertNotNull($Nonmember); - $this->assertNotNull(static::getContainer()->get('session')->get('eccube.front.shopping.nonmember.customeraddress')); + $this->assertNotNull($session->get('eccube.front.shopping.nonmember.customeraddress')); $this->expected = $formData['name']['name01']; - $this->actual = $Nonmember->getName01(); + $this->actual = $Nonmember['name01']; $this->verify(); $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('shopping'))); From e17b33857f294426544d2b076ac3aad84de9d24e Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 20 Dec 2023 11:55:41 +0900 Subject: [PATCH 061/113] Fix "Removed the Psr\Container\ContainerInterface and Symfony\Component\DependencyInjection\ContainerInterface aliases of the service_container service, configure them explicitly instead." --- src/Eccube/Service/Composer/ComposerServiceFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Eccube/Service/Composer/ComposerServiceFactory.php b/src/Eccube/Service/Composer/ComposerServiceFactory.php index 83170ab2750..08187c4288c 100644 --- a/src/Eccube/Service/Composer/ComposerServiceFactory.php +++ b/src/Eccube/Service/Composer/ComposerServiceFactory.php @@ -13,7 +13,7 @@ namespace Eccube\Service\Composer; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Container\ContainerInterface; class ComposerServiceFactory { From 88982e982f1e48451a8f30fe53557ab2390d3f84 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 20 Dec 2023 13:43:18 +0900 Subject: [PATCH 062/113] =?UTF-8?q?CustomerRepository::newCustomer?= =?UTF-8?q?=E3=81=AB=E9=9B=86=E7=B4=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Eccube/Controller/EntryController.php | 6 +----- src/Eccube/Repository/CustomerRepository.php | 4 +++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Eccube/Controller/EntryController.php b/src/Eccube/Controller/EntryController.php index ea00af94a30..01c01f68650 100644 --- a/src/Eccube/Controller/EntryController.php +++ b/src/Eccube/Controller/EntryController.php @@ -169,11 +169,7 @@ public function index(Request $request) log_info('会員登録開始'); $password = $this->passwordHasher->hashPassword($Customer, $Customer->getPlainPassword()); - $secretKey = $this->customerRepository->getUniqueSecretKey(); - $Customer - ->setPassword($password) - ->setSecretKey($secretKey) - ->setPoint(0); + $Customer->setPassword($password); $this->entityManager->persist($Customer); $this->entityManager->flush(); diff --git a/src/Eccube/Repository/CustomerRepository.php b/src/Eccube/Repository/CustomerRepository.php index 6c2233ff821..36dfee3662b 100644 --- a/src/Eccube/Repository/CustomerRepository.php +++ b/src/Eccube/Repository/CustomerRepository.php @@ -88,7 +88,9 @@ public function newCustomer() $Customer = new \Eccube\Entity\Customer(); $Customer - ->setStatus($CustomerStatus); + ->setStatus($CustomerStatus) + ->setSecretKey($this->getUniqueSecretKey()) + ->setPoint(0); return $Customer; } From fd174be23339f893806f459c548209b9494efb2f Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 20 Dec 2023 15:02:16 +0900 Subject: [PATCH 063/113] =?UTF-8?q?expectOutputRegex=E3=81=8C=E5=8B=95?= =?UTF-8?q?=E4=BD=9C=E3=81=97=E3=81=AA=E3=81=84=E3=81=9F=E3=82=81=E3=80=81?= =?UTF-8?q?internalResponse=E3=82=92=E4=BD=BF=E3=81=86=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/Customer/CustomerControllerTest.php | 5 +++-- .../Web/Admin/Order/OrderControllerTest.php | 5 +++-- .../Admin/Product/CategoryControllerTest.php | 7 ++++--- .../Admin/Product/ProductControllerTest.php | 19 +++++++++++++------ 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/tests/Eccube/Tests/Web/Admin/Customer/CustomerControllerTest.php b/tests/Eccube/Tests/Web/Admin/Customer/CustomerControllerTest.php index 884221a5a7b..1b4f6c9215d 100644 --- a/tests/Eccube/Tests/Web/Admin/Customer/CustomerControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Customer/CustomerControllerTest.php @@ -274,12 +274,13 @@ public function testDelete() */ public function testExport() { - $this->expectOutputRegex('/user-[0-9]@example.com/'); - $this->client->request( 'GET', $this->generateUrl('admin_customer_export'), ['admin_search_customer' => ['_token' => 'dummy']] ); + + $content = $this->client->getInternalResponse()->getContent(); + $this->assertMatchesRegularExpression('/user-[0-9]@example.com/', $content); } } diff --git a/tests/Eccube/Tests/Web/Admin/Order/OrderControllerTest.php b/tests/Eccube/Tests/Web/Admin/Order/OrderControllerTest.php index 6951312a997..810c6f51fe3 100644 --- a/tests/Eccube/Tests/Web/Admin/Order/OrderControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Order/OrderControllerTest.php @@ -294,12 +294,13 @@ public function testExportOrder() $this->actual = $crawler->filter('#search_form #search_total_count')->text(); $this->verify(); - $this->expectOutputRegex('/user-[0-9]@example.com/', 'user-[0-9]@example.com が含まれる CSV が出力されるか'); - $this->client->request( 'GET', $this->generateUrl('admin_order_export_order') ); + + $content = $this->client->getInternalResponse()->getContent(); + $this->assertMatchesRegularExpression('/user-[0-9]@example.com/', $content); } /** diff --git a/tests/Eccube/Tests/Web/Admin/Product/CategoryControllerTest.php b/tests/Eccube/Tests/Web/Admin/Product/CategoryControllerTest.php index 920f9c98f43..a24052642d9 100644 --- a/tests/Eccube/Tests/Web/Admin/Product/CategoryControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Product/CategoryControllerTest.php @@ -301,13 +301,14 @@ public function testMoveSortNo() public function testExport() { - // 2-0 という文字列が含まれる CSV が出力されるか - $this->expectOutputRegex('/2-0/'); - $this->client->request('GET', $this->generateUrl('admin_product_category_export') ); $this->assertTrue($this->client->getResponse()->isSuccessful()); + + // 2-0 という文字列が含まれる CSV が出力されるか + $content = $this->client->getInternalResponse()->getContent(); + $this->assertMatchesRegularExpression('/2-0/', $content); } private function newTestCategory($TestCreator, $TestParentCategory = null) diff --git a/tests/Eccube/Tests/Web/Admin/Product/ProductControllerTest.php b/tests/Eccube/Tests/Web/Admin/Product/ProductControllerTest.php index 5998b2329c5..d7089405049 100644 --- a/tests/Eccube/Tests/Web/Admin/Product/ProductControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Product/ProductControllerTest.php @@ -526,7 +526,6 @@ public function testNewWithPostTaxRate($taxRate, $expected) */ public function testExportWithFilterNoStock() { - $this->expectOutputRegex('/Product with stock 01/'); $testProduct = $this->createProduct('Product with stock 01'); $this->createProduct('Product with stock 02', 1); /** @var $ProductClass ProductClass */ @@ -561,6 +560,9 @@ public function testExportWithFilterNoStock() $csvExportUrl = $crawler->filter('ul.dropdown-menu')->selectLink('CSVダウンロード')->link()->getUri(); $this->client->request('GET', $csvExportUrl); + + $content = $this->client->getInternalResponse()->getContent(); + $this->assertMatchesRegularExpression('/Product with stock 01/', $content); } /** @@ -568,7 +570,6 @@ public function testExportWithFilterNoStock() */ public function testExportWithFilterPrivate() { - $this->expectOutputRegex('/Product with status 01/'); $testProduct = $this->createProduct('Product with status 01', 0); $this->createProduct('Product with status 02', 1); $display = $this->productStatusRepository->find(ProductStatus::DISPLAY_HIDE); @@ -600,6 +601,9 @@ public function testExportWithFilterPrivate() $csvExportUrl = $crawler->filter('ul.dropdown-menu')->selectLink('CSVダウンロード')->link()->getUri(); $this->client->request('GET', $csvExportUrl); + + $content = $this->client->getInternalResponse()->getContent(); + $this->assertMatchesRegularExpression('/Product with status 01/', $content); } /** @@ -607,7 +611,6 @@ public function testExportWithFilterPrivate() */ public function testExportWithFilterPublic() { - $this->expectOutputRegex('/[Product with status 01]{1}/'); $this->createProduct('Product with status 01', 0); $testProduct02 = $this->createProduct('Product with status 02', 1); $display = $this->productStatusRepository->find(ProductStatus::DISPLAY_HIDE); @@ -639,6 +642,9 @@ public function testExportWithFilterPublic() $csvExportUrl = $crawler->filter('ul.dropdown-menu')->selectLink('CSVダウンロード')->link()->getUri(); $this->client->request('GET', $csvExportUrl); + + $content = $this->client->getInternalResponse()->getContent(); + $this->assertMatchesRegularExpression('/[Product with status 01]{1}/', $content); } /** @@ -718,13 +724,14 @@ public function testExportWithOrderByProduct() $this->actual = $crawler->filter('div.c-outsideBlock__contents.mb-5 > span')->text(); $this->verify('検索結果件数の確認テスト'); - $this->expectOutputRegex('/Product name [10-1]/'); $csvExportUrl = $crawler->filter('.btn-ec-regular')->selectLink('CSVダウンロード')->link()->getUri(); $this->client->request('GET', $csvExportUrl); + $content = $this->client->getInternalResponse()->getContent(); + $this->assertMatchesRegularExpression('/Product name [10-1]/', $content); + // get list product after call admin_product_export function - $data = ob_get_contents(); - $arr = explode("\n", $data); + $arr = explode("\n", $content); // unset header unset($arr[0]); $actualIds = []; From 666fed9de907cb331f7252fad511c43ae0cfd751 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 20 Dec 2023 16:00:37 +0900 Subject: [PATCH 064/113] PasswordEncoder -> PasswordHasher --- .../packages/codeception/generator.yaml | 2 +- app/config/eccube/packages/dev/generator.yaml | 2 +- .../eccube/packages/test/generator.yaml | 2 +- tests/Eccube/Tests/Fixture/Generator.php | 17 +++++------ .../Tests/Web/Admin/IndexControllerTest.php | 28 ++++++------------- 5 files changed, 19 insertions(+), 32 deletions(-) diff --git a/app/config/eccube/packages/codeception/generator.yaml b/app/config/eccube/packages/codeception/generator.yaml index 7aed1f19585..de7d6e12691 100644 --- a/app/config/eccube/packages/codeception/generator.yaml +++ b/app/config/eccube/packages/codeception/generator.yaml @@ -2,7 +2,7 @@ services: Eccube\Tests\Fixture\Generator: arguments: - '@doctrine.orm.default_entity_manager' - - '@Eccube\Security\Core\Encoder\PasswordEncoder' + - '@security.user_password_hasher' - '@Eccube\Repository\MemberRepository' - '@Eccube\Repository\CategoryRepository' - '@Eccube\Repository\CustomerRepository' diff --git a/app/config/eccube/packages/dev/generator.yaml b/app/config/eccube/packages/dev/generator.yaml index 2278bfc12a1..dd372c39982 100644 --- a/app/config/eccube/packages/dev/generator.yaml +++ b/app/config/eccube/packages/dev/generator.yaml @@ -2,7 +2,7 @@ services: Eccube\Tests\Fixture\Generator: arguments: - '@doctrine.orm.default_entity_manager' - - '@Eccube\Security\Core\Encoder\PasswordEncoder' + - '@security.user_password_hasher' - '@Eccube\Repository\MemberRepository' - '@Eccube\Repository\CategoryRepository' - '@Eccube\Repository\CustomerRepository' diff --git a/app/config/eccube/packages/test/generator.yaml b/app/config/eccube/packages/test/generator.yaml index 7aed1f19585..de7d6e12691 100644 --- a/app/config/eccube/packages/test/generator.yaml +++ b/app/config/eccube/packages/test/generator.yaml @@ -2,7 +2,7 @@ services: Eccube\Tests\Fixture\Generator: arguments: - '@doctrine.orm.default_entity_manager' - - '@Eccube\Security\Core\Encoder\PasswordEncoder' + - '@security.user_password_hasher' - '@Eccube\Repository\MemberRepository' - '@Eccube\Repository\CategoryRepository' - '@Eccube\Repository\CustomerRepository' diff --git a/tests/Eccube/Tests/Fixture/Generator.php b/tests/Eccube/Tests/Fixture/Generator.php index 94164817882..a97008993a3 100644 --- a/tests/Eccube/Tests/Fixture/Generator.php +++ b/tests/Eccube/Tests/Fixture/Generator.php @@ -57,6 +57,7 @@ use Eccube\Util\StringUtil; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Session\SessionInterface; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; /** * Fixture Object Generator. @@ -73,9 +74,9 @@ class Generator protected $entityManager; /** - * @var PasswordEncoder + * @var UserPasswordHasherInterface */ - protected $passwordEncoder; + protected $passwordHasher; /** * @var MemberRepository @@ -159,7 +160,7 @@ class Generator public function __construct( EntityManagerInterface $entityManager, - PasswordEncoder $passwordEncoder, + UserPasswordHasherInterface $passwordHasher, MemberRepository $memberRepository, CategoryRepository $categoryRepository, CustomerRepository $customerRepository, @@ -178,7 +179,7 @@ public function __construct( ) { $this->locale = $locale; $this->entityManager = $entityManager; - $this->passwordEncoder = $passwordEncoder; + $this->passwordHasher = $passwordHasher; $this->memberRepository = $memberRepository; $this->categoryRepository = $categoryRepository; $this->customerRepository = $customerRepository; @@ -218,14 +219,12 @@ public function createMember($username = null) $Authority = $this->entityManager->find(\Eccube\Entity\Master\Authority::class, 0); $Creator = $this->entityManager->find(\Eccube\Entity\Member::class, 2); - $salt = bin2hex(openssl_random_pseudo_bytes(5)); $password = 'password'; - $password = $this->passwordEncoder->encodePassword($password, $salt); + $password = $this->passwordHasher->hashPassword($Member, $password); $Member ->setLoginId($loginId) ->setName($username) - ->setSalt($salt) ->setPassword($password) ->setWork($Work) ->setAuthority($Authority) @@ -258,8 +257,7 @@ public function createCustomer($email = null) $Sex = $this->entityManager->find(\Eccube\Entity\Master\Sex::class, $faker->numberBetween(1, 2)); $Job = $this->entityManager->find(\Eccube\Entity\Master\Job::class, $faker->numberBetween(1, 18)); - $salt = $this->passwordEncoder->createSalt(); - $password = $this->passwordEncoder->encodePassword('password', $salt); + $password = $this->passwordHasher->hashPassword($Customer, 'password'); $Customer ->setName01($faker->lastName) ->setName02($faker->firstName) @@ -276,7 +274,6 @@ public function createCustomer($email = null) ->setSex($Sex) ->setJob($Job) ->setPassword($password) - ->setSalt($salt) ->setSecretKey($this->customerRepository->getUniqueSecretKey()) ->setStatus($Status) ->setCreateDate(new \DateTime()) // FIXME diff --git a/tests/Eccube/Tests/Web/Admin/IndexControllerTest.php b/tests/Eccube/Tests/Web/Admin/IndexControllerTest.php index 3f96d90410d..7f174d78cf4 100644 --- a/tests/Eccube/Tests/Web/Admin/IndexControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/IndexControllerTest.php @@ -145,6 +145,13 @@ public function testChangePasswordWithPost() $client = $this->client; $form = $this->createChangePasswordFormData(); + $current_password = $form['current_password']; + $new_password = $form['change_password']['first']; + + $hasher = static::getContainer()->get('security.user_password_hasher'); + self::assertTrue($hasher->isPasswordValid($this->Member, $current_password)); + self::assertFalse($hasher->isPasswordValid($this->Member, $new_password)); + $client->request( 'POST', $this->generateUrl('admin_change_password'), @@ -153,25 +160,8 @@ public function testChangePasswordWithPost() $this->assertTrue($client->getResponse()->isRedirect($this->generateUrl('admin_change_password'))); - $Member = clone $this->Member; - $encoder = static::getContainer()->get('security.encoder_factory')->getEncoder($this->Member); - $this->expected = $encoder->encodePassword($form['change_password']['first'], $this->Member->getSalt()); - $this->actual = $this->Member->getPassword(); - - // XXX 実行タイミングにより、稀にパスワード変更前のハッシュ値を参照する場合があるため、変更に成功した場合のみ assertion を実行する - $old_password = hash_hmac('sha256', 'password'.':'.$this->eccubeConfig['eccube_auth_magic'], $this->Member->getSalt()); - if ($this->actual === $old_password) { - $this->markTestSkipped('Failed to change the password by HttpClient. Skip this test.'); - } - - $this->verify( - 'パスワードのハッシュ値が異なります '.PHP_EOL - .' AUTH_MAGIC='.$this->eccubeConfig['eccube_auth_magic'].PHP_EOL - .' HASH_Algos='.$this->eccubeConfig['eccube_password_hash_algos'].PHP_EOL - .' Input Password='.$form['change_password']['first'].PHP_EOL - .' Expected: salt='.$Member->getSalt().', raw password='.$Member->getPassword().PHP_EOL - .' Actual: salt='.$this->Member->getSalt() - ); + self::assertFalse($hasher->isPasswordValid($this->Member, $current_password)); + self::assertTrue($hasher->isPasswordValid($this->Member, $new_password)); } public function testChangePasswordWithPostInvalid() From d1dc33f2dcd90a4e60fd3eb1b96ae85185f3ee17 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 20 Dec 2023 16:02:43 +0900 Subject: [PATCH 065/113] Fix error message --- tests/Eccube/Tests/Web/ShoppingControllerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Eccube/Tests/Web/ShoppingControllerTest.php b/tests/Eccube/Tests/Web/ShoppingControllerTest.php index 630ac6fbedd..54b1b8a88e8 100644 --- a/tests/Eccube/Tests/Web/ShoppingControllerTest.php +++ b/tests/Eccube/Tests/Web/ShoppingControllerTest.php @@ -277,7 +277,7 @@ public function testDeliveryWithError() ]); $this->assertTrue($this->client->getResponse()->isSuccessful()); - $this->expected = '有効な値ではありません。'; + $this->expected = '選択した値は無効です。'; $this->actual = $crawler->filter('p.ec-errorMessage')->text(); $this->verify(); } From b65aaa5fa9a6c8ea93b1514ad163fcef412d6cbf Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 20 Dec 2023 16:50:52 +0900 Subject: [PATCH 066/113] =?UTF-8?q?=E5=BE=8C=E7=B6=9A=E3=81=AEPHPUnit?= =?UTF-8?q?=E3=82=92=E8=B5=B0=E3=82=89=E3=81=9B=E3=82=8B=E3=81=9F=E3=82=81?= =?UTF-8?q?=E3=81=84=E3=81=A3=E3=81=9F=E3=82=93=E3=82=B9=E3=82=AD=E3=83=83?= =?UTF-8?q?=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Eccube/Tests/Web/ProductControllerTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/Eccube/Tests/Web/ProductControllerTest.php b/tests/Eccube/Tests/Web/ProductControllerTest.php index 00e38e64a95..c2163df7568 100644 --- a/tests/Eccube/Tests/Web/ProductControllerTest.php +++ b/tests/Eccube/Tests/Web/ProductControllerTest.php @@ -215,6 +215,8 @@ public function testProductFavoriteAdd() */ public function testProductFavoriteAddThroughLogin() { + $this->markTestIncomplete('後続のPHPUnitを走らせるためいったんスキップ'); + // お気に入り商品機能を有効化 $BaseInfo = $this->baseInfoRepository->get(); $BaseInfo->setOptionFavoriteProduct(true); From 5db700cddeff549ac79a668474fb8b618c9ce1fa Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 21 Dec 2023 07:53:25 +0900 Subject: [PATCH 067/113] Fix "Symfony\Component\HttpFoundation\Exception\SessionNotFoundException: There is currently no session available." --- tests/Eccube/Tests/Web/AbstractWebTestCase.php | 1 + .../Tests/Web/Admin/Setting/System/SecurityControllerTest.php | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/Eccube/Tests/Web/AbstractWebTestCase.php b/tests/Eccube/Tests/Web/AbstractWebTestCase.php index f9f3b57518b..2974f05ba9b 100644 --- a/tests/Eccube/Tests/Web/AbstractWebTestCase.php +++ b/tests/Eccube/Tests/Web/AbstractWebTestCase.php @@ -82,6 +82,7 @@ public function createSession(KernelBrowser $client): Session // get the session id from the session cookie if it exists $session->setId($cookie->getValue()); $session->start(); + $session->save(); } else { // or create a new session id and a session cookie $session->start(); diff --git a/tests/Eccube/Tests/Web/Admin/Setting/System/SecurityControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/System/SecurityControllerTest.php index 46da7152b1c..453f36523db 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/System/SecurityControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/System/SecurityControllerTest.php @@ -59,6 +59,7 @@ public function testRouting() */ public function testSubmit() { + $session = $this->createSession($this->client); $formData = $this->createFormData(); $this->client->request( @@ -72,7 +73,7 @@ public function testSubmit() $this->assertTrue($this->client->getResponse()->isRedirection()); // Message - $outPut = static::getContainer()->get('session')->getFlashBag()->get('eccube.admin.success'); + $outPut = $session->getFlashBag()->get('eccube.admin.success'); $this->actual = array_shift($outPut); $this->expected = 'admin.setting.system.security.admin_url_changed'; $this->verify(); From 600c7cb09c3f80c1a79ddbd5ba0c2dcb2d727693 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 21 Dec 2023 08:12:40 +0900 Subject: [PATCH 068/113] =?UTF-8?q?service=20locator=E3=81=AE=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E8=AA=A4=E3=82=8A=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/eccube/services.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/config/eccube/services.yaml b/app/config/eccube/services.yaml index 03cb19615a2..d5205e3d909 100644 --- a/app/config/eccube/services.yaml +++ b/app/config/eccube/services.yaml @@ -60,7 +60,8 @@ services: Eccube\Service\Composer\ComposerServiceInterface: factory: ['Eccube\Service\Composer\ComposerServiceFactory', createService] arguments: - $container: !service_locator [ '@Eccube\Service\Composer\ComposerApiService' ] + $container: !service_locator + Eccube\Service\Composer\ComposerApiService: '@Eccube\Service\Composer\ComposerApiService' Eccube\Service\Composer\ComposerApiService: lazy: true @@ -72,7 +73,9 @@ services: Eccube\Service\PluginService: arguments: - $container: !service_locator [ '@doctrine' ] + $container: !service_locator + doctrine: '@doctrine' + Doctrine\Bundle\DoctrineBundle\Registry: '@doctrine' lazy: true public: true From 2ae015acbdfd9f0890ccfa430bb0e26c99ea498c Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 21 Dec 2023 08:12:57 +0900 Subject: [PATCH 069/113] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AAarguments?= =?UTF-8?q?=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/eccube/services.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/config/eccube/services.yaml b/app/config/eccube/services.yaml index d5205e3d909..4f07e26642d 100644 --- a/app/config/eccube/services.yaml +++ b/app/config/eccube/services.yaml @@ -120,9 +120,7 @@ services: eccube.security.logout.success_handler: class: Eccube\Security\Http\Authentication\EccubeLogoutSuccessHandler arguments: - - '@security.http_utils' - '@Eccube\Request\Context' - - 'admin_login' # Autowiring can't guess the constructor arguments that are not type-hinted with # classes (e.g. container parameters) so you must define those arguments explicitly From 901ca0bfb0900023fabea6b7c7c1b2fd28371c8a Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 21 Dec 2023 08:41:11 +0900 Subject: [PATCH 070/113] Fix "Removed the Psr\Container\ContainerInterface and Symfony\Component\DependencyInjection\ContainerInterface aliases of the service_container service, configure them explicitly instead." --- src/Eccube/Service/PluginService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Eccube/Service/PluginService.php b/src/Eccube/Service/PluginService.php index f44c4688165..2d332775b33 100644 --- a/src/Eccube/Service/PluginService.php +++ b/src/Eccube/Service/PluginService.php @@ -26,7 +26,7 @@ use Eccube\Service\Composer\ComposerServiceInterface; use Eccube\Util\CacheUtil; use Eccube\Util\StringUtil; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Container\ContainerInterface; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Finder\Finder; From 00b40d244b51104d98eea9d7076feefad934390a Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 21 Dec 2023 10:11:47 +0900 Subject: [PATCH 071/113] Fix InstallController --- .../Controller/Install/InstallController.php | 15 +++++++-------- .../Tests/Web/Install/InstallControllerTest.php | 14 ++++++++++---- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/Eccube/Controller/Install/InstallController.php b/src/Eccube/Controller/Install/InstallController.php index e653c9cfc04..3a7eff2a5fa 100644 --- a/src/Eccube/Controller/Install/InstallController.php +++ b/src/Eccube/Controller/Install/InstallController.php @@ -26,6 +26,7 @@ use Eccube\Doctrine\DBAL\Types\UTCDateTimeType; use Eccube\Doctrine\DBAL\Types\UTCDateTimeTzType; use Eccube\Doctrine\ORM\Mapping\Driver\AnnotationDriver; +use Eccube\Entity\Customer; use Eccube\Form\Type\Install\Step1Type; use Eccube\Form\Type\Install\Step3Type; use Eccube\Form\Type\Install\Step4Type; @@ -39,6 +40,7 @@ use Symfony\Component\Finder\Finder; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Annotation\Route; class InstallController extends AbstractController @@ -89,18 +91,18 @@ class InstallController extends AbstractController ]; /** - * @var PasswordEncoder + * @var UserPasswordHasherInterface */ - protected $encoder; + protected $passwordHasher; /** * @var CacheUtil */ protected $cacheUtil; - public function __construct(PasswordEncoder $encoder, CacheUtil $cacheUtil) + public function __construct(UserPasswordHasherInterface $passwordHasher, CacheUtil $cacheUtil) { - $this->encoder = $encoder; + $this->passwordHasher = $passwordHasher; $this->cacheUtil = $cacheUtil; } @@ -823,9 +825,7 @@ protected function insert(Connection $conn, array $data) { $conn->beginTransaction(); try { - $salt = StringUtil::random(32); - $this->encoder->setAuthMagic($data['auth_magic']); - $password = $this->encoder->encodePassword($data['login_pass'], $salt); + $password = $this->passwordHasher->hashPassword(new Customer(), $data['login_pass']); $id = ('postgresql' === $conn->getDatabasePlatform()->getName()) ? $conn->fetchOne("select nextval('dtb_base_info_id_seq')") @@ -853,7 +853,6 @@ protected function insert(Connection $conn, array $data) 'id' => $member_id, 'login_id' => $data['login_id'], 'password' => $password, - 'salt' => $salt, 'work_id' => 1, 'authority_id' => 0, 'creator_id' => 1, diff --git a/tests/Eccube/Tests/Web/Install/InstallControllerTest.php b/tests/Eccube/Tests/Web/Install/InstallControllerTest.php index 1f3223a2c2c..4dfd625645f 100644 --- a/tests/Eccube/Tests/Web/Install/InstallControllerTest.php +++ b/tests/Eccube/Tests/Web/Install/InstallControllerTest.php @@ -21,8 +21,10 @@ use Symfony\Component\Form\FormView; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; /** * @group cache-clear-install @@ -70,18 +72,22 @@ protected function setUp(): void } $formFactory = static::getContainer()->get('form.factory'); - $encoder = static::getContainer()->get(PasswordEncoder::class); + $passwordHasher = static::getContainer()->get(UserPasswordHasherInterface::class); $cacheUtil = static::getContainer()->get(CacheUtil::class); - $this->session = new Session(new MockArraySessionStorage()); - $this->controller = new InstallController($encoder, $cacheUtil); + $request = new Request(); + $request->setSession(new Session(new MockArraySessionStorage())); + $requestStack = new RequestStack(); + $requestStack->push($request); + $this->session = new \Eccube\Session\Session($requestStack); + $this->controller = new InstallController($passwordHasher, $cacheUtil); $this->controller->setFormFactory($formFactory); $this->controller->setSession($this->session); $reflectionClass = new \ReflectionClass($this->controller); $propContainer = $reflectionClass->getProperty('container'); $propContainer->setAccessible(true); - $propContainer->setValue($this->controller, self::$container); + $propContainer->setValue($this->controller, self::getContainer()); $this->request = $this->createMock(Request::class); } From 9bc2fe427b8c616f11144b3d56cdc51b24979d77 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 21 Dec 2023 13:14:08 +0900 Subject: [PATCH 072/113] Fix "setQueryCacheDriver is deprecated and will be removed in Doctrine 3.0. Use setQueryCache() instead.'" --- src/Eccube/Service/PluginService.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Eccube/Service/PluginService.php b/src/Eccube/Service/PluginService.php index 2d332775b33..b193cc69c8f 100644 --- a/src/Eccube/Service/PluginService.php +++ b/src/Eccube/Service/PluginService.php @@ -300,9 +300,6 @@ public function postInstall($config, $source) */ public function generateProxyAndUpdateSchema(Plugin $plugin, $config, $uninstall = false, $saveMode = true) { - // キャッシュしたメタデータを利用しないようにキャッシュドライバを外しておく - $this->entityManager->getMetadataFactory()->setCacheDriver(null); - $this->generateProxyAndCallback(function ($generatedFiles, $proxiesDirectory) use ($saveMode) { $this->schemaService->updateSchema($generatedFiles, $proxiesDirectory, $saveMode); }, $plugin, $config, $uninstall); From 92cec8981da423668dad73b40798583160878986 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 21 Dec 2023 14:33:03 +0900 Subject: [PATCH 073/113] Fix "Problem: Feature was deprecated in doctrine/persistence 2.x and is not supported by installed doctrine/persistence:3.x" --- src/Eccube/Service/PluginService.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Eccube/Service/PluginService.php b/src/Eccube/Service/PluginService.php index b193cc69c8f..5f1d8743ba8 100644 --- a/src/Eccube/Service/PluginService.php +++ b/src/Eccube/Service/PluginService.php @@ -343,7 +343,6 @@ public function generateProxyAndCallback(callable $callback, Plugin $plugin, $co $driver = $ormConfig->newDefaultAnnotationDriver([$entityDir], false); $namespace = 'Plugin\\'.$config['code'].'\\Entity'; $chain->addDriver($driver, $namespace); - $ormConfig->addEntityNamespace($plugin->getCode(), $namespace); } } From 0bb74c2f8f700f852e0b418b34d14346fafc7c5f Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 21 Dec 2023 14:35:44 +0900 Subject: [PATCH 074/113] Fix "Removed the Psr\Container\ContainerInterface and Symfony\Component\DependencyInjection\ContainerInterface aliases of the service_container service, configure them explicitly instead." --- tests/Eccube/Tests/Service/PluginServiceTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/Eccube/Tests/Service/PluginServiceTest.php b/tests/Eccube/Tests/Service/PluginServiceTest.php index 410830d4dae..23127c7a13e 100644 --- a/tests/Eccube/Tests/Service/PluginServiceTest.php +++ b/tests/Eccube/Tests/Service/PluginServiceTest.php @@ -286,7 +286,7 @@ public function testInstallPluginWithBrokenManagerAfterInstall() namespace Plugin\@@@@ ; use Eccube\Plugin\AbstractPluginManager; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Container\ContainerInterface; class PluginManager extends AbstractPluginManager { @@ -353,7 +353,7 @@ public function testInstallPluginWithManager() namespace Plugin\@@@@ ; use Eccube\Plugin\AbstractPluginManager; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Container\ContainerInterface; class PluginManager extends AbstractPluginManager { @@ -556,7 +556,7 @@ public function testCreateEntityAndTrait() namespace Plugin\@@@@ ; use Eccube\Plugin\AbstractPluginManager; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Container\ContainerInterface; class PluginManager extends AbstractPluginManager { From bfdc98665fbb187b5227d1b568dc33e35e551e87 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 21 Dec 2023 14:45:18 +0900 Subject: [PATCH 075/113] Fix "Error: Call to a member function getConnection() on null" --- src/Eccube/Controller/Install/InstallController.php | 5 +++-- tests/Eccube/Tests/Web/Install/InstallControllerTest.php | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Eccube/Controller/Install/InstallController.php b/src/Eccube/Controller/Install/InstallController.php index 3a7eff2a5fa..6595752965a 100644 --- a/src/Eccube/Controller/Install/InstallController.php +++ b/src/Eccube/Controller/Install/InstallController.php @@ -19,6 +19,7 @@ use Doctrine\DBAL\Types\Type; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\EntityManager; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Tools\SchemaTool; use Doctrine\ORM\Tools\Setup; use Eccube\Common\Constant; @@ -254,7 +255,7 @@ public function step2() * @throws \Doctrine\DBAL\DBALException * @throws \Exception */ - public function step3(Request $request) + public function step3(Request $request, EntityManagerInterface $entityManager) { if (!$this->isInstallEnv()) { throw new NotFoundHttpException(); @@ -265,7 +266,7 @@ public function step3(Request $request) // 再インストールの場合は環境変数から復旧 if ($this->isInstalled()) { // ショップ名/メールアドレス - $conn = $this->entityManager->getConnection(); + $conn = $entityManager->getConnection(); $stmt = $conn->query('SELECT shop_name, email01 FROM dtb_base_info WHERE id = 1;'); $row = $stmt->fetch(); $sessionData['shop_name'] = $row['shop_name']; diff --git a/tests/Eccube/Tests/Web/Install/InstallControllerTest.php b/tests/Eccube/Tests/Web/Install/InstallControllerTest.php index 4dfd625645f..c99871f854b 100644 --- a/tests/Eccube/Tests/Web/Install/InstallControllerTest.php +++ b/tests/Eccube/Tests/Web/Install/InstallControllerTest.php @@ -123,7 +123,8 @@ public function testStep2() public function testStep3() { - $this->actual = $this->controller->step3($this->request); + $entityManager = static::getContainer()->get('doctrine')->getManager(); + $this->actual = $this->controller->step3($this->request, $entityManager); $this->assertTrue(is_array($this->actual)); $this->assertInstanceOf(FormView::class, $this->actual['form']); $this->assertInstanceOf(Request::class, $this->actual['request']); From 7ad74fec5de4ae3e4b531a2830bfc81f909ae64f Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 21 Dec 2023 17:37:45 +0900 Subject: [PATCH 076/113] Fix InstallController --- src/Eccube/Controller/Install/InstallController.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/Eccube/Controller/Install/InstallController.php b/src/Eccube/Controller/Install/InstallController.php index 6595752965a..f6f798f6cbe 100644 --- a/src/Eccube/Controller/Install/InstallController.php +++ b/src/Eccube/Controller/Install/InstallController.php @@ -882,23 +882,20 @@ protected function update(Connection $conn, array $data) $stmt = $conn->prepare('SELECT id FROM dtb_member WHERE login_id = :login_id;'); $stmt->bindParam(':login_id', $data['login_id']); $row = $stmt->executeQuery(); - $this->encoder->setAuthMagic($data['auth_magic']); - $password = $this->encoder->encodePassword($data['login_pass'], $salt); + $password = $this->passwordHasher->hashPassword(new Customer(), $data['login_pass']); if ($row) { // 同一の管理者IDであればパスワードのみ更新 - $sth = $conn->prepare('UPDATE dtb_member set password = :password, salt = :salt, update_date = current_timestamp WHERE login_id = :login_id;'); + $sth = $conn->prepare('UPDATE dtb_member set password = :password, update_date = current_timestamp WHERE login_id = :login_id;'); $sth->execute([ ':password' => $password, - ':salt' => $salt, ':login_id' => $data['login_id'], ]); } else { // 新しい管理者IDが入力されたらinsert - $sth = $conn->prepare("INSERT INTO dtb_member (login_id, password, salt, work_id, authority_id, creator_id, sort_no, update_date, create_date,name,department,discriminator_type) VALUES (:login_id, :password , :salt , '1', '0', '1', '1', current_timestamp, current_timestamp,'管理者','EC-CUBE SHOP', 'member');"); + $sth = $conn->prepare("INSERT INTO dtb_member (login_id, password, work_id, authority_id, creator_id, sort_no, update_date, create_date,name,department,discriminator_type) VALUES (:login_id, :password, '1', '0', '1', '1', current_timestamp, current_timestamp,'管理者','EC-CUBE SHOP', 'member');"); $sth->execute([ ':login_id' => $data['login_id'], ':password' => $password, - ':salt' => $salt, ]); } $stmt = $conn->prepare('UPDATE dtb_base_info set From 1d96ce06efa886ed613f928560ee799a40211d9b Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 25 Dec 2023 14:39:16 +0900 Subject: [PATCH 077/113] =?UTF-8?q?=E3=82=B7=E3=82=B9=E3=83=86=E3=83=A0?= =?UTF-8?q?=E8=A6=81=E4=BB=B6=E3=81=AB=E5=90=88=E3=82=8F=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/unit-test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 09742522f6a..3145a4ebd00 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -25,11 +25,11 @@ jobs: include: - db: mysql database_url: mysql://root:password@127.0.0.1:3306/eccube_db - database_server_version: 5 + database_server_version: 8 database_charset: utf8mb4 - db: pgsql database_url: postgres://postgres:password@127.0.0.1:5432/eccube_db - database_server_version: 14 + database_server_version: 16 database_charset: utf8 - db: sqlite3 database_url: sqlite:///var/eccube.db @@ -38,14 +38,14 @@ jobs: services: mysql: - image: mysql:5.7 + image: mysql:8 env: MYSQL_ROOT_PASSWORD: password ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 postgres: - image: postgres:14 + image: postgres:16 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: password From 98e0b1555734d5e04c1838db40b74a44bf55a98f Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 25 Dec 2023 14:39:44 +0900 Subject: [PATCH 078/113] =?UTF-8?q?=E4=BD=95=E6=95=85=E3=81=8Bsession?= =?UTF-8?q?=E3=81=AE=E8=A8=AD=E5=AE=9A=E5=A4=89=E6=9B=B4=E3=81=8C=E8=B5=B0?= =?UTF-8?q?=E3=82=8B=EF=BC=9A"ini=5Fset():=20Session=20ini=20settings=20ca?= =?UTF-8?q?nnot=20be=20changed=20after=20headers=20have=20already=20been?= =?UTF-8?q?=20sent"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/unit-test.yml | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 3145a4ebd00..8295499c503 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -93,16 +93,18 @@ jobs: DATABASE_CHARSET: ${{ matrix.database_charset }} MAILER_URL: 'smtp://127.0.0.11025' run: | - vendor/bin/phpunit --group cache-clear - vendor/bin/phpunit --group cache-clear-install - vendor/bin/phpunit --group update-schema-doctrine --exclude-group update-schema-doctrine-install - vendor/bin/phpunit --group update-schema-doctrine-install --filter=testInstallPluginWithNoProxy - vendor/bin/phpunit --group update-schema-doctrine-install --filter=testInstallPluginWithProxy - vendor/bin/phpunit --group update-schema-doctrine-install --filter=testEnablePluginWithNoProxy - vendor/bin/phpunit --group update-schema-doctrine-install --filter=testEnablePluginWithProxy - vendor/bin/phpunit --group update-schema-doctrine-install --filter=testDisablePluginWithNoProxy - vendor/bin/phpunit --group update-schema-doctrine-install --filter=testDisablePluginWithProxy - vendor/bin/phpunit --group update-schema-doctrine-install --filter=testCreateEntityAndTrait + echo "session.save_path=$PWD/var/sessions/test" > php.ini + echo "memory_limit=512M" >> php.ini + php -c php.ini vendor/bin/phpunit --group cache-clear + php -c php.ini vendor/bin/phpunit --group cache-clear-install + php -c php.ini vendor/bin/phpunit --group update-schema-doctrine --exclude-group update-schema-doctrine-install + php -c php.ini vendor/bin/phpunit --group update-schema-doctrine-install --filter=testInstallPluginWithNoProxy + php -c php.ini vendor/bin/phpunit --group update-schema-doctrine-install --filter=testInstallPluginWithProxy + php -c php.ini vendor/bin/phpunit --group update-schema-doctrine-install --filter=testEnablePluginWithNoProxy + php -c php.ini vendor/bin/phpunit --group update-schema-doctrine-install --filter=testEnablePluginWithProxy + php -c php.ini vendor/bin/phpunit --group update-schema-doctrine-install --filter=testDisablePluginWithNoProxy + php -c php.ini vendor/bin/phpunit --group update-schema-doctrine-install --filter=testDisablePluginWithProxy + php -c php.ini vendor/bin/phpunit --group update-schema-doctrine-install --filter=testCreateEntityAndTrait ## XXX MySQL で Syntax error or access violation: 1305 SAVEPOINT DOCTRINE2_SAVEPOINT_3 does not exist が ## 発生するため \DAMA\DoctrineTestBundle\PHPUnit\PHPUnitListener を削除する ## see https://github.com/dmaicher/doctrine-test-bundle/issues/58#issuecomment-391081408 @@ -119,4 +121,6 @@ jobs: rm -r app/Plugin/* git checkout app/Plugin rm -r var/cache - vendor/bin/phpunit --group plugin-service + echo "session.save_path=$PWD/var/sessions/test" > php.ini + echo "memory_limit=512M" >> php.ini + php -c php.ini vendor/bin/phpunit --group plugin-service From 7863e8e69734f3c223a4f46e06ab76f34b5b5719 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 27 Dec 2023 16:26:09 +0900 Subject: [PATCH 079/113] =?UTF-8?q?node=20visitor=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E3=81=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/eccube/packages/twig.yaml | 2 +- .../Twig/Extension/TemplateEventExtension.php | 76 +++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 src/Eccube/Twig/Extension/TemplateEventExtension.php diff --git a/app/config/eccube/packages/twig.yaml b/app/config/eccube/packages/twig.yaml index 01333d47ee4..e01b8270cb0 100644 --- a/app/config/eccube/packages/twig.yaml +++ b/app/config/eccube/packages/twig.yaml @@ -20,5 +20,5 @@ twig: # - 'Form/form_div_layout.twig' date: timezone: '%timezone%' - base_template_class: 'Eccube\Twig\Template' +# base_template_class: 'Eccube\Twig\Template' exception_controller: null diff --git a/src/Eccube/Twig/Extension/TemplateEventExtension.php b/src/Eccube/Twig/Extension/TemplateEventExtension.php new file mode 100644 index 00000000000..7bf8ed255d8 --- /dev/null +++ b/src/Eccube/Twig/Extension/TemplateEventExtension.php @@ -0,0 +1,76 @@ +getTemplateName(), '__string_template__')) { + return $node; + } + $node->setNode('display_start', new Node([new TemplateEventNode(), $node->getNode('display_start')])); + } + + return $node; + } + + public function getPriority() + { + return 0; + } +} + +class TemplateEventNode extends Node +{ + public function compile(Compiler $compiler) + { + $compiler + ->write('$__eccube__gblobal = $this->env->getGlobals();') + ->raw("\n") + ->write('$__eccube__eventDispatcher = $__eccube__gblobal[\'event_dispatcher\'];') + ->raw("\n") + ->write('$__eccube__source = $this->env->getLoader()->getSourceContext($this->getTemplateName())->getCode();') + ->raw("\n") + ->write('$__eccube__event = new \\Eccube\\Event\\TemplateEvent($this->getTemplateName(), $__eccube__source, $context);') + ->raw("\n") + ->write('$__eccube__eventDispatcher->dispatch($__eccube__event, $this->getTemplateName());') + ->raw("\n") + ->write('$context = $__eccube__event->getParameters();') + ->raw("\n") + ->write('if ($__eccube__event->getSource() !== $__eccube__source) {') + ->indent() + ->raw("\n") + ->write('$__eccube__newTemplate = $this->env->createTemplate($__eccube__event->getSource());') + ->raw("\n") + ->write('$__eccube__newTemplate->display($__eccube__event->getParameters());') + ->raw("\n") + ->write('return;') + ->raw("\n") + ->outdent() + ->write('}') + ->raw("\n\n") + ; + } +} From 683bd89a5814277e1ce674bb903f56f443bf340a Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:57:20 +0900 Subject: [PATCH 080/113] twig2 -> twig3 --- composer.json | 2 +- composer.lock | 30 +++++++------------ .../Twig/Sandbox/SecurityPolicyDecorator.php | 8 ++--- .../IgnoreTwigSandboxErrorExtensionTest.php | 1 - 4 files changed, 16 insertions(+), 25 deletions(-) diff --git a/composer.json b/composer.json index 6e5beadaf24..ef9f1523c25 100644 --- a/composer.json +++ b/composer.json @@ -101,7 +101,7 @@ "tecnickcom/tcpdf": "^6.2", "twig/extra-bundle": "^3.3", "twig/intl-extra": "^3.3", - "twig/twig": "^2.15", + "twig/twig": "^3.8", "vlucas/phpdotenv": "v5.4" }, "require-dev": { diff --git a/composer.lock b/composer.lock index c54b093ae09..b3052a57244 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": "9f5ada8b3d5f77c06e6c16809c252118", + "content-hash": "839629d4a9c3ab17410807ca5601fbfc", "packages": [ { "name": "carbonphp/carbon-doctrine-types", @@ -10781,38 +10781,30 @@ }, { "name": "twig/twig", - "version": "v2.15.6", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "ad637405a828601a56f32ccab9a85541c4b66c9d" + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/ad637405a828601a56f32ccab9a85541c4b66c9d", - "reference": "ad637405a828601a56f32ccab9a85541c4b66c9d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php72": "^1.8" + "symfony/polyfill-php80": "^1.22" }, "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^5.4.9|^6.3" + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.15-dev" - } - }, "autoload": { - "psr-0": { - "Twig_": "lib/" - }, "psr-4": { "Twig\\": "src/" } @@ -10845,7 +10837,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v2.15.6" + "source": "https://github.com/twigphp/Twig/tree/v3.8.0" }, "funding": [ { @@ -10857,7 +10849,7 @@ "type": "tidelift" } ], - "time": "2023-11-21T17:34:48+00:00" + "time": "2023-11-21T18:54:41+00:00" }, { "name": "vlucas/phpdotenv", diff --git a/src/Eccube/Twig/Sandbox/SecurityPolicyDecorator.php b/src/Eccube/Twig/Sandbox/SecurityPolicyDecorator.php index 8615449624b..4873dc41e97 100644 --- a/src/Eccube/Twig/Sandbox/SecurityPolicyDecorator.php +++ b/src/Eccube/Twig/Sandbox/SecurityPolicyDecorator.php @@ -26,12 +26,12 @@ public function __construct(BasePolicy $securityPolicy) $this->securityPolicy = $securityPolicy; } - public function checkSecurity($tags, $filters, $functions) + public function checkSecurity($tags, $filters, $functions): void { $this->securityPolicy->checkSecurity($tags, $filters, $functions); } - public function checkMethodAllowed($obj, $method) + public function checkMethodAllowed($obj, $method): void { // __toStringの場合はチェックをスキップする if ($method === '__toString') { @@ -40,8 +40,8 @@ public function checkMethodAllowed($obj, $method) $this->securityPolicy->checkMethodAllowed($obj, $method); } - public function checkPropertyAllowed($obj, $method) + public function checkPropertyAllowed($obj, $method): void { $this->securityPolicy->checkPropertyAllowed($obj, $method); } -} \ No newline at end of file +} diff --git a/tests/Eccube/Tests/Twig/Extension/IgnoreTwigSandboxErrorExtensionTest.php b/tests/Eccube/Tests/Twig/Extension/IgnoreTwigSandboxErrorExtensionTest.php index cac1c1b2fc8..c3ec59a84d0 100644 --- a/tests/Eccube/Tests/Twig/Extension/IgnoreTwigSandboxErrorExtensionTest.php +++ b/tests/Eccube/Tests/Twig/Extension/IgnoreTwigSandboxErrorExtensionTest.php @@ -64,7 +64,6 @@ public function twigSnippetsProvider() // 0: twigスニペット, 1: ホワイトリスト対象かどうか return [ ['{% set foo = "bar" %}', true], - ['{% spaceless %}
test
{% endspaceless %}', true], ['{% flush %}', true], ['{% apply lower|escape("html") %}SOME TEXT{% endapply %}', true], ['{% macro input(name, value, type = "text", size = 20) %}{% endmacro %}', false], From e09e4388db98a9193baaee201faa7d8caae4a01a Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 11 Jan 2024 08:12:02 +0900 Subject: [PATCH 081/113] =?UTF-8?q?revert=20"Symfony=E6=A8=99=E6=BA=96?= =?UTF-8?q?=E3=81=AE=E3=82=BB=E3=83=83=E3=82=B7=E3=83=A7=E3=83=B3=E3=83=8F?= =?UTF-8?q?=E3=83=B3=E3=83=89=E3=83=A9=E3=82=92=E5=88=A9=E7=94=A8=E3=81=99?= =?UTF-8?q?=E3=82=8B"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/eccube/packages/framework.yaml | 5 +--- .../SameSiteNoneCompatSessionHandler.php | 2 ++ .../SameSiteNoneCompatSessionHandlerTest.php | 6 ----- tests/Fixtures/session/common.php | 27 ++++++++++--------- 4 files changed, 18 insertions(+), 22 deletions(-) diff --git a/app/config/eccube/packages/framework.yaml b/app/config/eccube/packages/framework.yaml index 6f38ebdbe6c..c11e163dcd0 100644 --- a/app/config/eccube/packages/framework.yaml +++ b/app/config/eccube/packages/framework.yaml @@ -8,15 +8,12 @@ framework: trusted_hosts: ~ # https://symfony.com/doc/current/reference/configuration/framework.html#handler-id session: - handler_id: session.handler.native_file + handler_id: 'Eccube\Session\Storage\Handler\SameSiteNoneCompatSessionHandler' save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%' name: '%env(ECCUBE_COOKIE_NAME)%' - cookie_path: '%env(ECCUBE_COOKIE_PATH)%' cookie_lifetime: '%env(ECCUBE_COOKIE_LIFETIME)%' gc_maxlifetime: '%env(ECCUBE_GC_MAXLIFETIME)%' cookie_httponly: true - cookie_samesite: none - cookie_secure: true # When using the HTTP Cache, ESI allows to render page fragments separately # and with different cache configurations for each fragment diff --git a/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php b/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php index 6d897aed1ff..1b392519296 100644 --- a/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php +++ b/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php @@ -36,6 +36,8 @@ class SameSiteNoneCompatSessionHandler extends StrictSessionHandler */ public function __construct(\SessionHandlerInterface $handler) { + parent::__construct($handler); + $this->handler = $handler; ini_set('session.cookie_secure', $this->getCookieSecure()); diff --git a/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php b/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php index d3763af1f08..32904b66de7 100644 --- a/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php +++ b/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php @@ -45,12 +45,6 @@ public static function tearDownAfterClass(): void } } - public function setUp(): void - { - self::markTestIncomplete('デフォルトのセッションハンドラで4.2と互換性が担保できるか確認'); - parent::setUp(); - } - /** * @dataProvider provideSession */ diff --git a/tests/Fixtures/session/common.php b/tests/Fixtures/session/common.php index c25c66538da..b05a34d07e1 100644 --- a/tests/Fixtures/session/common.php +++ b/tests/Fixtures/session/common.php @@ -34,7 +34,10 @@ (Dotenv::createUnsafeMutable($parent, '.env'))->load(); } -Request::setTrustedProxies(['127.0.0.1', '::1', 'REMOTE_ADDR'], Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); +Request::setTrustedProxies( + ['127.0.0.1', '::1', 'REMOTE_ADDR'], + Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO ^ Request::HEADER_X_FORWARDED_HOST +); Request::setTrustedHosts(['127.0.0.1', '::1']); Request::createFromGlobals(); @@ -106,7 +109,7 @@ public function __construct(SessionHandlerInterface $handler) } #[\ReturnTypeWillChange] - public function open($path, $name) + public function open($path, $name): bool { echo __FUNCTION__, "\n"; @@ -117,7 +120,7 @@ public function open($path, $name) * {@inheritdoc} */ #[\ReturnTypeWillChange] - public function validateId($sessionId) + public function validateId($sessionId): bool { echo __FUNCTION__, "\n"; @@ -128,7 +131,7 @@ public function validateId($sessionId) * {@inheritdoc} */ #[\ReturnTypeWillChange] - public function read($sessionId) + public function read($sessionId): string { echo __FUNCTION__, "\n"; @@ -139,7 +142,7 @@ public function read($sessionId) * {@inheritdoc} */ #[\ReturnTypeWillChange] - public function updateTimestamp($sessionId, $data) + public function updateTimestamp($sessionId, $data): bool { echo __FUNCTION__, "\n"; @@ -150,7 +153,7 @@ public function updateTimestamp($sessionId, $data) * {@inheritdoc} */ #[\ReturnTypeWillChange] - public function write($sessionId, $data) + public function write($sessionId, $data): bool { echo __FUNCTION__, "\n"; @@ -161,7 +164,7 @@ public function write($sessionId, $data) * {@inheritdoc} */ #[\ReturnTypeWillChange] - public function destroy($sessionId) + public function destroy($sessionId):bool { echo __FUNCTION__, "\n"; @@ -172,7 +175,7 @@ public function destroy($sessionId) * {@inheritdoc} */ #[\ReturnTypeWillChange] - public function close() + public function close(): bool { echo __FUNCTION__, "\n"; @@ -183,14 +186,14 @@ public function close() * {@inheritdoc} */ #[\ReturnTypeWillChange] - public function gc($maxLifetime) + public function gc($maxLifetime): int|false { echo __FUNCTION__, "\n"; return true; } - protected function doRead($sessionId) + protected function doRead($sessionId): string { if (isset($this->sessionId) && $sessionId !== $this->sessionId) { echo __FUNCTION__ . ": invalid sessionId\n"; @@ -203,7 +206,7 @@ protected function doRead($sessionId) return $this->data; } - protected function doWrite($sessionId, $data) + protected function doWrite($sessionId, $data): bool { echo __FUNCTION__.': ', $data, "\n"; $this->sessionId = $sessionId; @@ -211,7 +214,7 @@ protected function doWrite($sessionId, $data) return true; } - protected function doDestroy($sessionId) + protected function doDestroy($sessionId): bool { echo __FUNCTION__, "\n"; $this->sessionId = $sessionId; From 20f5f4ec3152c94c1a5b3c0499bfdc385391ffbf Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 11 Jan 2024 08:31:58 +0900 Subject: [PATCH 082/113] =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E6=99=82=E3=81=AB=E3=83=88=E3=83=83=E3=83=97=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=81=AB=E9=81=B7=E7=A7=BB=E3=81=99=E3=82=8B?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/eccube/packages/security.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/config/eccube/packages/security.yaml b/app/config/eccube/packages/security.yaml index bf45d9254c8..e9958e73227 100644 --- a/app/config/eccube/packages/security.yaml +++ b/app/config/eccube/packages/security.yaml @@ -43,6 +43,7 @@ security: interval: '%eccube_login_throttling_interval%' logout: path: admin_logout + target: admin_login customer: pattern: ^/ provider: customer_provider From 66c9ce651019d9238a96d5e087b8f2d9eabf622b Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 11 Jan 2024 08:32:13 +0900 Subject: [PATCH 083/113] =?UTF-8?q?=E3=82=B9=E3=82=AD=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=81=97=E3=81=9F=E3=83=86=E3=82=B9=E3=83=88=E3=82=92=E6=88=BB?= =?UTF-8?q?=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Eccube/Tests/Web/ProductControllerTest.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/Eccube/Tests/Web/ProductControllerTest.php b/tests/Eccube/Tests/Web/ProductControllerTest.php index c2163df7568..00e38e64a95 100644 --- a/tests/Eccube/Tests/Web/ProductControllerTest.php +++ b/tests/Eccube/Tests/Web/ProductControllerTest.php @@ -215,8 +215,6 @@ public function testProductFavoriteAdd() */ public function testProductFavoriteAddThroughLogin() { - $this->markTestIncomplete('後続のPHPUnitを走らせるためいったんスキップ'); - // お気に入り商品機能を有効化 $BaseInfo = $this->baseInfoRepository->get(); $BaseInfo->setOptionFavoriteProduct(true); From b887c5dd81a9a7bd6a9ebf97a110c4208c35d8bd Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 11 Jan 2024 08:55:59 +0900 Subject: [PATCH 084/113] =?UTF-8?q?font=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/e2e-test-throttling.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/e2e-test-throttling.yml b/.github/workflows/e2e-test-throttling.yml index ebfb20f22f5..d1c0a633b99 100644 --- a/.github/workflows/e2e-test-throttling.yml +++ b/.github/workflows/e2e-test-throttling.yml @@ -112,6 +112,9 @@ jobs: - name: setup-chromedriver uses: nanasess/setup-chromedriver@master + - name: Install fonts + run: sudo apt install fonts-ipafont fonts-ipaexfont + - name: Run chromedriver run: | export DISPLAY=:99 From 4c26253186143a49695bd6c460feba4baf622fc1 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 11 Jan 2024 14:42:47 +0900 Subject: [PATCH 085/113] =?UTF-8?q?=E4=BA=8C=E8=A6=81=E7=B4=A0=E8=AA=8D?= =?UTF-8?q?=E8=A8=BC=E3=81=AE=E3=83=AD=E3=82=B0=E3=82=A4=E3=83=B3=E3=81=AB?= =?UTF-8?q?=E5=A4=B1=E6=95=97=E3=81=99=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Eccube/Service/TwoFactorAuthService.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Eccube/Service/TwoFactorAuthService.php b/src/Eccube/Service/TwoFactorAuthService.php index 4719e28aef9..0ee971cde23 100644 --- a/src/Eccube/Service/TwoFactorAuthService.php +++ b/src/Eccube/Service/TwoFactorAuthService.php @@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\PasswordHasher\Hasher\PasswordHasherFactoryInterface; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; class TwoFactorAuthService @@ -38,9 +39,9 @@ class TwoFactorAuthService protected $eccubeConfig; /** - * @var UserPasswordHasherInterface + * @var PasswordHasherFactoryInterface */ - protected $passwordHasher; + protected $passwordHasherFactory; /** * @var RequestStack @@ -75,11 +76,11 @@ class TwoFactorAuthService */ public function __construct( EccubeConfig $eccubeConfig, - UserPasswordHasherInterface $passwordHasher, + PasswordHasherFactoryInterface $passwordHasherFactory, RequestStack $requestStack ) { $this->eccubeConfig = $eccubeConfig; - $this->passwordHasher = $passwordHasher; + $this->passwordHasherFactory = $passwordHasherFactory; $this->requestStack = $requestStack; $this->request = $requestStack->getCurrentRequest(); $this->tfa = new TwoFactorAuth(); @@ -103,13 +104,14 @@ public function isAuth($Member) { if (($json = $this->request->cookies->get($this->cookieName))) { $configs = json_decode($json); - $encodedString = $this->passwordHasher->hashPassword($Member, $Member->getId().$Member->getTwoFactorAuthKey()); + $hasher = $this->passwordHasherFactory->getPasswordHasher($Member); + if ( $configs && isset($configs->{$Member->getId()}) && ($config = $configs->{$Member->getId()}) && property_exists($config, 'key') - && $config->key === $encodedString + && $hasher->verify($config->key, $Member->getId().$Member->getTwoFactorAuthKey()) && ( $this->expire == 0 || (property_exists($config, 'date') && ($config->date && $config->date > date('U', strtotime('-'.$this->expire.' day')))) @@ -129,7 +131,8 @@ public function isAuth($Member) */ public function createAuthedCookie($Member) { - $encodedString = $this->passwordHasher->hashPassword($Member, $Member->getId().$Member->getTwoFactorAuthKey()); + $hasher = $this->passwordHasherFactory->getPasswordHasher($Member); + $encodedString = $hasher->hash($Member->getId().$Member->getTwoFactorAuthKey()); $configs = json_decode('{}'); if (($json = $this->request->cookies->get($this->cookieName))) { From e3b8ab0bec938b9028907a2f1886de021c0455bc Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 11 Jan 2024 15:41:17 +0900 Subject: [PATCH 086/113] Fix "ini_set(): Session ini settings cannot be changed after headers have already been sent" --- .../Storage/Handler/SameSiteNoneCompatSessionHandler.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php b/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php index 1b392519296..22ba9966da3 100644 --- a/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php +++ b/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php @@ -40,9 +40,11 @@ public function __construct(\SessionHandlerInterface $handler) $this->handler = $handler; - ini_set('session.cookie_secure', $this->getCookieSecure()); - ini_set('session.cookie_samesite', $this->getCookieSameSite()); - ini_set('session.cookie_path', $this->getCookiePath()); + if (!headers_sent()) { + ini_set('session.cookie_secure', $this->getCookieSecure()); + ini_set('session.cookie_samesite', $this->getCookieSameSite()); + ini_set('session.cookie_path', $this->getCookiePath()); + } } /** From 42999151206bb4220a8168b5e1ef41e6d77b8c2f Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Fri, 12 Jan 2024 08:25:37 +0900 Subject: [PATCH 087/113] =?UTF-8?q?service=5Flocator=E3=81=AE=E5=91=BC?= =?UTF-8?q?=E3=81=B3=E5=87=BA=E3=81=97=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/eccube/services.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/config/eccube/services.yaml b/app/config/eccube/services.yaml index 4f07e26642d..ad440a13a3d 100644 --- a/app/config/eccube/services.yaml +++ b/app/config/eccube/services.yaml @@ -75,6 +75,7 @@ services: arguments: $container: !service_locator doctrine: '@doctrine' + doctrine.orm.entity_manager: '@doctrine' Doctrine\Bundle\DoctrineBundle\Registry: '@doctrine' lazy: true public: true From 20cebcd40c37861ffae213e5a0e70b388d6653cd Mon Sep 17 00:00:00 2001 From: kiy0taka Date: Wed, 10 May 2023 22:26:11 +0900 Subject: [PATCH 088/113] =?UTF-8?q?=E5=A4=89=E6=9B=B4=E3=81=8C=E3=82=8F?= =?UTF-8?q?=E3=81=8B=E3=82=8A=E3=81=A5=E3=82=89=E3=81=8F=E3=81=AA=E3=82=8B?= =?UTF-8?q?=E3=81=AE=E3=81=A7=E3=83=97=E3=83=A9=E3=82=B0=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=92=E5=B1=95=E9=96=8B=E3=81=97=E3=81=A6=E3=81=8A=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/coverage.yml | 8 ++- .github/workflows/e2e-test.yml | 5 +- codeception/_data/plugins/Assets-1.0.0.tgz | Bin 743 -> 0 bytes .../Assets-1.0.0/Resource/assets/assets.js | 3 + .../_data/plugins/Assets-1.0.0/composer.json | 9 +++ codeception/_data/plugins/Assets-1.0.1.tgz | Bin 847 -> 0 bytes .../Assets-1.0.1/Resource/assets/assets.js | 3 + .../Assets-1.0.1/Resource/assets/updated.js | 3 + .../_data/plugins/Assets-1.0.1/composer.json | 9 +++ codeception/_data/plugins/Boomerang-1.0.0.tgz | Bin 2334 -> 0 bytes .../Controller/BoomerangController.php | 67 ++++++++++++++++++ .../plugins/Boomerang-1.0.0/Entity/Bar.php | 44 ++++++++++++ .../Boomerang-1.0.0/Entity/CartTrait.php | 27 +++++++ .../plugins/Boomerang-1.0.0/PluginManager.php | 39 ++++++++++ .../Repository/BarRepository.php | 26 +++++++ .../plugins/Boomerang-1.0.0/composer.json | 1 + .../_data/plugins/Boomerang10-1.0.0.tgz | Bin 1138 -> 0 bytes .../Boomerang10-1.0.0/Entity/BarTrait.php | 20 ++++++ .../Boomerang10-1.0.0/PluginManager.php | 57 +++++++++++++++ .../plugins/Boomerang10-1.0.0/composer.json | 13 ++++ codeception/_data/plugins/Bundle-1.0.0.tgz | Bin 2087 -> 0 bytes .../Bundle-1.0.0/Bundle/BundleBundle.php | 28 ++++++++ .../Compiler/BundleCompilerPass.php | 31 ++++++++ .../Bundle-1.0.0/Resource/config/bundles.php | 17 +++++ .../Bundle-1.0.0/Resource/config/routes.php | 16 +++++ .../Resource/config/services.yaml | 61 ++++++++++++++++ .../_data/plugins/Bundle-1.0.0/composer.json | 19 +++++ codeception/_data/plugins/Bundle-1.0.1.tgz | Bin 2078 -> 0 bytes .../Bundle-1.0.1/Bundle/BundleBundle.php | 28 ++++++++ .../Compiler/BundleCompilerPass.php | 31 ++++++++ .../Bundle-1.0.1/Resource/config/bundles.php | 17 +++++ .../Bundle-1.0.1/Resource/config/routes.php | 16 +++++ .../Resource/config/services.yaml | 61 ++++++++++++++++ .../_data/plugins/Bundle-1.0.1/composer.json | 17 +++++ codeception/_data/plugins/Emperor-1.0.0.tgz | Bin 2403 -> 0 bytes .../Emperor-1.0.0/Entity/CartTrait.php | 21 ++++++ .../plugins/Emperor-1.0.0/Entity/Foo.php | 46 ++++++++++++ .../plugins/Emperor-1.0.0/PluginManager.php | 56 +++++++++++++++ .../Repository/FooRepository.php | 26 +++++++ .../_data/plugins/Emperor-1.0.0/composer.json | 1 + codeception/_data/plugins/Emperor-1.0.1.tgz | Bin 2433 -> 0 bytes .../plugins/Emperor-1.0.1/Entity/Bar.php | 46 ++++++++++++ .../Emperor-1.0.1/Entity/Cart2Trait.php | 21 ++++++ .../plugins/Emperor-1.0.1/PluginManager.php | 65 +++++++++++++++++ .../Repository/BarRepository.php | 26 +++++++ .../_data/plugins/Emperor-1.0.1/composer.json | 1 + codeception/_data/plugins/Horizon-1.0.0.tgz | Bin 2453 -> 0 bytes .../Horizon-1.0.0/Entity/CartTrait.php | 26 +++++++ .../plugins/Horizon-1.0.0/Entity/Dash.php | 46 ++++++++++++ .../plugins/Horizon-1.0.0/PluginManager.php | 60 ++++++++++++++++ .../Repository/DashRepository.php | 26 +++++++ .../_data/plugins/Horizon-1.0.0/composer.json | 1 + codeception/_data/plugins/Horizon-1.0.1.tgz | Bin 2294 -> 0 bytes .../Horizon-1.0.1/Entity/CartTrait.php | 26 +++++++ .../plugins/Horizon-1.0.1/Entity/Dash.php | 53 ++++++++++++++ .../plugins/Horizon-1.0.1/PluginManager.php | 67 ++++++++++++++++++ .../Repository/DashRepository.php | 26 +++++++ .../_data/plugins/Horizon-1.0.1/composer.json | 1 + codeception/_data/plugins/InstallError.tgz | Bin 504 -> 0 bytes .../_data/plugins/InstallError/composer.json | 9 +++ codeception/_data/plugins/Template-1.0.0.tgz | Bin 981 -> 0 bytes .../Template-1.0.0/Controller/Controller.php | 30 ++++++++ .../Resource/template/index.twig | 1 + .../plugins/Template-1.0.0/composer.json | 12 ++++ codeception/_support/AcceptanceTester.php | 16 +++++ .../Page/Admin/PluginLocalInstallPage.php | 7 +- .../_support/Page/Admin/PluginManagePage.php | 5 +- codeception/acceptance/EA10PluginCest.php | 26 +++---- 68 files changed, 1398 insertions(+), 25 deletions(-) delete mode 100644 codeception/_data/plugins/Assets-1.0.0.tgz create mode 100644 codeception/_data/plugins/Assets-1.0.0/Resource/assets/assets.js create mode 100644 codeception/_data/plugins/Assets-1.0.0/composer.json delete mode 100644 codeception/_data/plugins/Assets-1.0.1.tgz create mode 100644 codeception/_data/plugins/Assets-1.0.1/Resource/assets/assets.js create mode 100644 codeception/_data/plugins/Assets-1.0.1/Resource/assets/updated.js create mode 100644 codeception/_data/plugins/Assets-1.0.1/composer.json delete mode 100644 codeception/_data/plugins/Boomerang-1.0.0.tgz create mode 100644 codeception/_data/plugins/Boomerang-1.0.0/Controller/BoomerangController.php create mode 100644 codeception/_data/plugins/Boomerang-1.0.0/Entity/Bar.php create mode 100644 codeception/_data/plugins/Boomerang-1.0.0/Entity/CartTrait.php create mode 100644 codeception/_data/plugins/Boomerang-1.0.0/PluginManager.php create mode 100644 codeception/_data/plugins/Boomerang-1.0.0/Repository/BarRepository.php create mode 100644 codeception/_data/plugins/Boomerang-1.0.0/composer.json delete mode 100644 codeception/_data/plugins/Boomerang10-1.0.0.tgz create mode 100644 codeception/_data/plugins/Boomerang10-1.0.0/Entity/BarTrait.php create mode 100644 codeception/_data/plugins/Boomerang10-1.0.0/PluginManager.php create mode 100644 codeception/_data/plugins/Boomerang10-1.0.0/composer.json delete mode 100644 codeception/_data/plugins/Bundle-1.0.0.tgz create mode 100644 codeception/_data/plugins/Bundle-1.0.0/Bundle/BundleBundle.php create mode 100644 codeception/_data/plugins/Bundle-1.0.0/DependencyInjection/Compiler/BundleCompilerPass.php create mode 100644 codeception/_data/plugins/Bundle-1.0.0/Resource/config/bundles.php create mode 100644 codeception/_data/plugins/Bundle-1.0.0/Resource/config/routes.php create mode 100644 codeception/_data/plugins/Bundle-1.0.0/Resource/config/services.yaml create mode 100644 codeception/_data/plugins/Bundle-1.0.0/composer.json delete mode 100644 codeception/_data/plugins/Bundle-1.0.1.tgz create mode 100644 codeception/_data/plugins/Bundle-1.0.1/Bundle/BundleBundle.php create mode 100644 codeception/_data/plugins/Bundle-1.0.1/DependencyInjection/Compiler/BundleCompilerPass.php create mode 100644 codeception/_data/plugins/Bundle-1.0.1/Resource/config/bundles.php create mode 100644 codeception/_data/plugins/Bundle-1.0.1/Resource/config/routes.php create mode 100644 codeception/_data/plugins/Bundle-1.0.1/Resource/config/services.yaml create mode 100644 codeception/_data/plugins/Bundle-1.0.1/composer.json delete mode 100644 codeception/_data/plugins/Emperor-1.0.0.tgz create mode 100644 codeception/_data/plugins/Emperor-1.0.0/Entity/CartTrait.php create mode 100644 codeception/_data/plugins/Emperor-1.0.0/Entity/Foo.php create mode 100644 codeception/_data/plugins/Emperor-1.0.0/PluginManager.php create mode 100644 codeception/_data/plugins/Emperor-1.0.0/Repository/FooRepository.php create mode 100644 codeception/_data/plugins/Emperor-1.0.0/composer.json delete mode 100644 codeception/_data/plugins/Emperor-1.0.1.tgz create mode 100644 codeception/_data/plugins/Emperor-1.0.1/Entity/Bar.php create mode 100644 codeception/_data/plugins/Emperor-1.0.1/Entity/Cart2Trait.php create mode 100644 codeception/_data/plugins/Emperor-1.0.1/PluginManager.php create mode 100644 codeception/_data/plugins/Emperor-1.0.1/Repository/BarRepository.php create mode 100644 codeception/_data/plugins/Emperor-1.0.1/composer.json delete mode 100644 codeception/_data/plugins/Horizon-1.0.0.tgz create mode 100644 codeception/_data/plugins/Horizon-1.0.0/Entity/CartTrait.php create mode 100644 codeception/_data/plugins/Horizon-1.0.0/Entity/Dash.php create mode 100644 codeception/_data/plugins/Horizon-1.0.0/PluginManager.php create mode 100644 codeception/_data/plugins/Horizon-1.0.0/Repository/DashRepository.php create mode 100644 codeception/_data/plugins/Horizon-1.0.0/composer.json delete mode 100644 codeception/_data/plugins/Horizon-1.0.1.tgz create mode 100644 codeception/_data/plugins/Horizon-1.0.1/Entity/CartTrait.php create mode 100644 codeception/_data/plugins/Horizon-1.0.1/Entity/Dash.php create mode 100644 codeception/_data/plugins/Horizon-1.0.1/PluginManager.php create mode 100644 codeception/_data/plugins/Horizon-1.0.1/Repository/DashRepository.php create mode 100644 codeception/_data/plugins/Horizon-1.0.1/composer.json delete mode 100644 codeception/_data/plugins/InstallError.tgz create mode 100644 codeception/_data/plugins/InstallError/composer.json delete mode 100644 codeception/_data/plugins/Template-1.0.0.tgz create mode 100644 codeception/_data/plugins/Template-1.0.0/Controller/Controller.php create mode 100644 codeception/_data/plugins/Template-1.0.0/Resource/template/index.twig create mode 100644 codeception/_data/plugins/Template-1.0.0/composer.json diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index b8d41dfbb27..8df0ea0f52e 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -44,7 +44,7 @@ jobs: uses: nanasess/setup-php@master with: php-version: ${{ matrix.php }} - + - name: Setup pcov run: | sudo apt-fast install -y php8.1-pcov @@ -155,7 +155,11 @@ jobs: run: | if [[ ! -d ${PWD}/repos ]]; then mkdir -p ${PWD}/repos ; fi docker run -d --rm -v ${PWD}/repos:/repos -e MOCK_REPO_DIR=/repos -p 8080:8080 eccube/mock-package-api:composer2 - cp codeception/_data/plugins/*-1.0.0.tgz repos + for d in $(ls codeception/_data/plugins | grep 1.0.0) + do + (cd codeception/_data/plugins/$d; tar zcf ../../../../repos/${d}.tgz *) + done + - name: Setup pcov run: | diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 6d6e7a595a4..10737841995 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -97,7 +97,10 @@ jobs: run: | if [[ ! -d ${PWD}/repos ]]; then mkdir -p ${PWD}/repos ; fi docker run -d --rm -v ${PWD}/repos:/repos -e MOCK_REPO_DIR=/repos -p 8080:8080 eccube/mock-package-api:composer2 - cp codeception/_data/plugins/*-1.0.0.tgz repos + for d in $(ls codeception/_data/plugins | grep 1.0.0) + do + (cd codeception/_data/plugins/$d; tar zcf ../../../../repos/${d}.tgz *) + done - name: Start PHP Development Server if: ${{ matrix.group != 'restrict-fileupload' }} diff --git a/codeception/_data/plugins/Assets-1.0.0.tgz b/codeception/_data/plugins/Assets-1.0.0.tgz deleted file mode 100644 index 699a40b23c520471c0e48945f3d684fadaa7a714..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 743 zcmVHXPlST22)nR{Wd*^L#B^9< zw@FFTWfxgk+C6v_FWzM@;zjZ3ckoLD!H?mj=^vX~*>u~g?EEh2%$sDUnLN*v-2hb5xT0Sj~#w3?Ivk>CgmOVrbCy%M^MIn1JfI%&{RP0Xp_0=vw$ zfdhAmBV}Io|5){YsS=Rb#sUOo6jO^iXn*hF&f%loy{C_DKUR9*D4abT*p9=b0N~gn z6g|=V?mx3z>ZFN7z+}$< zM^)w!?ow9G&s{d>=h*o9%_-}Db*i5-*8fFqf&Y{8^PiMdzyHGu=dh4luK&i?mW8&^ zWZ8A2VRUtSnC877b-GcaVto@t;Y!D-lK)iZ@Bc#EfXV+&P(A;#v<2mk%NYI5_rGCP zat9OFozMT`SgBwCB&nAFOql#%2kTS)ltuZEMi2or`bYY9q1@#ECU|8bR1dw5s^3R- z-!8t%DMOh$K}Tjxgd Z27|$1Fc=I5gTb&Q)=w5KGD-m`005wIl9vDg diff --git a/codeception/_data/plugins/Assets-1.0.0/Resource/assets/assets.js b/codeception/_data/plugins/Assets-1.0.0/Resource/assets/assets.js new file mode 100644 index 00000000000..86e64b4fa03 --- /dev/null +++ b/codeception/_data/plugins/Assets-1.0.0/Resource/assets/assets.js @@ -0,0 +1,3 @@ +/** + * assets.js + */ diff --git a/codeception/_data/plugins/Assets-1.0.0/composer.json b/codeception/_data/plugins/Assets-1.0.0/composer.json new file mode 100644 index 00000000000..a4c09e16838 --- /dev/null +++ b/codeception/_data/plugins/Assets-1.0.0/composer.json @@ -0,0 +1,9 @@ +{ + "name": "ec-cube/assets", + "version": "1.0.0", + "description": "アセットを含むプラグイン", + "type": "eccube-plugin", + "extra": { + "code": "Assets" + } +} diff --git a/codeception/_data/plugins/Assets-1.0.1.tgz b/codeception/_data/plugins/Assets-1.0.1.tgz deleted file mode 100644 index 97dffcfdc3c1dc2095ef9f33bbdddfc681f8b0f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmV-V1F-xbiwFRJ`Ga2o1MOKsYuhjw&943hJBl95>U@$uN%kPHZVX!3p>#0VX?Te# zUYa=ANog5{lI*bK*k$+8%h+XO$Nh)>2{YKwm|Q0|b(%G4oopj|2{_i1EG6=LPjdFW z;~n2?`B8n}kHbOK^lOy^0F)4_b}+T8{GQaKlVR}iR$Z1 z>|>(;GyVDQn+NCV@y@TWKcGNK|0sdhh*;v7a;&-j^ZDP)gTRYpzaLlF$Nc`!8D&b( zzf_VL|6c_b^nV2?gsp%Hha>Wm|6jpg_J7K33E&X#9T~ zx&AZNFC_-%_y1h~6wvtpDo~#PA_fM%me==N_N!Y*f&M)t;%xtCs^tHS>bLR#Rp3Vc zFI>%l%jK2+FI@dXnzg;k|8)X@UjNVS=cp(ZY|786@$=iGtpDm%UtpsDv)T;*XR@S! z-9Xj|R5yg#Sabc?H#aS^Ns4LLXLTd2wZZKC&kCwAg8B1b@BbB~`j?8E{9gqYfBvVW zty3PjRHD59o3N5GN!iT(pN@3K7Rdi}Kj)&!|7D=8|LRm<;QIV8>7OdamC65AV4VN? zw43-}FBEy-3_HCr_9J~0gxyN}xIX_eU;hh+>GK~<*Z(H}myd<_|GJj#y2v;eIKBVR zSb<2+l8aa|5f0%MaV|i z>-Zb@$%fzDY7Smb)`A=NQtrr);vnp%G_}E|S!v6Un^Dl~kC|lnF&TbOMx$i(HW|ME z`R;QvJWEC&lF_GR_$3*hC!=p!!~RKc+*R7sR_}0d5Og!jKki4K=F%bQ(`MMZsJWdD ZMi-u1r$+Mz1_lNd;Wwj7{QLkY003?O&LjW; diff --git a/codeception/_data/plugins/Assets-1.0.1/Resource/assets/assets.js b/codeception/_data/plugins/Assets-1.0.1/Resource/assets/assets.js new file mode 100644 index 00000000000..86e64b4fa03 --- /dev/null +++ b/codeception/_data/plugins/Assets-1.0.1/Resource/assets/assets.js @@ -0,0 +1,3 @@ +/** + * assets.js + */ diff --git a/codeception/_data/plugins/Assets-1.0.1/Resource/assets/updated.js b/codeception/_data/plugins/Assets-1.0.1/Resource/assets/updated.js new file mode 100644 index 00000000000..ced822278ab --- /dev/null +++ b/codeception/_data/plugins/Assets-1.0.1/Resource/assets/updated.js @@ -0,0 +1,3 @@ +/** + * updated.js + */ diff --git a/codeception/_data/plugins/Assets-1.0.1/composer.json b/codeception/_data/plugins/Assets-1.0.1/composer.json new file mode 100644 index 00000000000..b40822ad81b --- /dev/null +++ b/codeception/_data/plugins/Assets-1.0.1/composer.json @@ -0,0 +1,9 @@ +{ + "name": "ec-cube/assets", + "version": "1.0.1", + "description": "アセットを含むプラグイン", + "type": "eccube-plugin", + "extra": { + "code": "Assets" + } +} diff --git a/codeception/_data/plugins/Boomerang-1.0.0.tgz b/codeception/_data/plugins/Boomerang-1.0.0.tgz deleted file mode 100644 index 5ad97220b8ad0b4c6a4f408cca4ae47b1e8fec47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2334 zcmV+(3E}o1iwFRbD2rkM1MOU2Q{qY%_nA+ykG+&t21_9!35YJUGa_@xyN+6pvsGKm zF4ZIrWDFf{r=wDqRrg^(%6`y2odl8q3f@7SW%~C3r2n3Cx=-@!(;Y7H{U?HL!b%N~ za^|@%VOuMPs;X7fL|fGmNL&NP-vG0UG`*_nTBV}u6{KpFYE|7r_p26U9s-|Z2BO?J zBah=7-1csQdFAfFTGkHWB>mhe*ft|@BcgF|8SA@e^b}YEo8o$L@E5_{+}BE z%gLkQ*z*R2VcJV_i^Kl#kM;rfs2Iiz?*C=o)aCtuEm->guNemiHF^KvG^G50#a^Fa z?Ek-S&AtEYs!^Hp|1#9rLhAQ-y%;~a|NrH$FvPjiZVv6D>%QZouHzB}-$Tqe^17(m z*l&D2ZbH5&((r~O=Jfhpu?piX)VL__on4<4(FfN>S0dL(SHvgmme|F(VxRNjVX1U? zcUL6Vz7=#x(ejGlhNU?FqsI{M6Vwf$4Qt#B!qi5tV-f0uP_*l@0p^ZJ_t4NK7}9PX zau?P+J8d-2zX&lS4R{}ObccOpJ3ePlC*Z_JcMk7E4ru3l0ka5nWD_A_DVL*oK>Q(w z#7j5mIkYu#hgRYbN4Z=sfNq)r3`p|)Hu*K75Qze^}JABk?fKfB)S7hk<4)<7; zmt01rW<-hGImU7GUq*wjN1?Je7!LV{S%` z&?-v4)EV0&zlX%UsppfF!lX1KJYW>1M9lwJ@1Ord+b&G#aTB3Z zVM2Yra{KSP&@A|+QaDO#I52K?gc-x5_5cr+i3p)R!5jtjfMW5tt^IdB!cT2z0X^VQSayPNteA_^Y8Ov;g7l0a&h2U34LAc(3Cq@SHcRHBu z98J#w5<1dnOmUAu*&$&*=%t97Y2~&S$)I3ccc zOW5cmAz|5h#X6xj+o5YeKVzXud`pzDUSW}DT{rOi%F_eJi0v?9fez8Q>`aDbXEKD3 zZ~c^#cr7H0zUa~N8htE||4sOxR;lVD{->48a{ads%&h;)waogjYN&d#tks}^QI^ZU zjYH)1uNV6hctQLx_J6}LRT=+V2jcNh9s`0@Tr=$O)vWymUJ(C_#=opqR9)Wx*MUXx zzw!OQ4Bu)+J^(fivH!n<*C$vI|I^gUl>cj0wNjSxzjYvr|2-G|ie|`B6!<#vEY2KC zS{GNJTc7c8=+GX*K7z|kTq_kyit0B-xX6cVXebN@?4tKmIZA#uSSG>(yQLf#Qxi=l z=@StqSh>0c(@C0;vEjMFfGSax#_`+f&z~%YFE_QwL zxQA%qy13(#I%ffy8>-k&H-0o5^$-HW+CC#3EYe5U-UTHJ%)uVvk>d6IGhx3}d`YzM ztLM;2MPGRs=Lk&Y#s=tM)^==Am60xCgj&Ro^3Nmt*h%w`^R?`V@Wi8h4r~f$_#e!% zRX+okzGRJ|g+wI`AC-(<=vtrmMALrBbaKRd_;6zuz>({{ISIpI`z1 zgVmln<^LwkILZIkf$!P>J-cZ9?c)5U+rO@7-FWo>XZLq`{+n~UNcnTPW!fh9(6g`X zJVWJn3I+5qOB6-R*Me)toXzH)c4vn8ozgyG4#z;@u7SoX`7fvEznnGO*B_40np0&@ z9N%Kjz@eCXEW-!wbWU6F;R!7kb_-duOK6Yx>t)l-w)zSCXHJ(`Bg-WX?7AIn-S|qj zOr)&BCR~Sn2#AmNMz)AY|FA85C|0x@)DewR5z_R!MnhJv>-~Zh>r2K!yUZ3Ep_)kn{HJE7`|3_uj zR8<-OSqJ3)@1p(R%=@TMyt_M&PQCd3-N}CPW%L4~IFi?jqgz*`C!`;V{pIoR*>G9L zYiGh`sTXeN$I8+#)6R5)wppAs{q7~q4nq0iVY>RH@SYIr@Gz9GAa@OaXe6Z15&>KA z+M;-cccp#2nEz>2Lznx1Yr%5-@1ShzRZW#I0B#&!&+8K`;D1Qhvi^@W(^Td8zqQ~Y zIv8}AkN=gWmHu;!yiLUUu<#rd6ln#zYFET(*AkyZ3qNaNiVnqZ1&IlZMxpDye0Zcx zG%niSABJ=Yk{S6ea2Vt~B>hI2`*9eYFsSx#xb?iZ$!-2|FAvOyVNpS_Hpn|piRsw+ zLrqm5CC8AEkdTm&kdTm&kdTm&kdTm&kdTm&kdTm&kdTm&kdTm&kobx4Kd2tB)Btz@ E0Dm^bfdBvi diff --git a/codeception/_data/plugins/Boomerang-1.0.0/Controller/BoomerangController.php b/codeception/_data/plugins/Boomerang-1.0.0/Controller/BoomerangController.php new file mode 100644 index 00000000000..20e7bbb1ac5 --- /dev/null +++ b/codeception/_data/plugins/Boomerang-1.0.0/Controller/BoomerangController.php @@ -0,0 +1,67 @@ +cartRepository = $cartRepository; + } + + /** + * @Route("/boomerang", name="boomerang") + * @return JsonResponse + */ + public function index() + { + /** @var Cart[] $list */ + $list = $this->cartRepository->findAll(); + $ids = array_map(function (Cart $c) { return $c->getId(); }, $list); + + return $this->json($ids); + } + + /** + * @Route("/boomerang/new") + */ + public function new() + { + $Bar = new Bar(); + $Bar->name = 'bar'; + $this->entityManager->persist($Bar); + + $Cart = new Cart(); + $Cart->setTotalPrice(0); + $Cart->setDeliveryFeeTotal(0); + $Cart->bar = $Bar; + + $this->cartRepository->save($Cart); + $this->entityManager->flush(); + + return $this->redirectToRoute('boomerang'); + } +} \ No newline at end of file diff --git a/codeception/_data/plugins/Boomerang-1.0.0/Entity/Bar.php b/codeception/_data/plugins/Boomerang-1.0.0/Entity/Bar.php new file mode 100644 index 00000000000..560af7728e4 --- /dev/null +++ b/codeception/_data/plugins/Boomerang-1.0.0/Entity/Bar.php @@ -0,0 +1,44 @@ +h(c(gvVunuReaSs8#Bb4-3YumzxQL4*v1p$0T)La3F%^(Ks2L>ea~;-*}= z!yqA7Bh5H46kP*;;`+1&al^!hhIFJN zbYSWDz%rCCZEk@zLuP$_qdF$}|C#^&)z8PjE#*HS%;&#h=(q&%My<;6!t+1(f9IA4 zPDu1aMBGFTFT*wI;OAi)#-r|kYzhDKo2a<|w}Xf7e|XR^RYPkaY?ufZ_y2Q4p8p%j z`Y9&)|GBjK{>Ko_=RY(}6PAFsc1u>^h3Eg*-*AsB3L`#^Lt<0V@zR0Ix+g*4(}=JE z)VeZ8nu?;NF$HbgPJ6WbiZOm(i5swdzI~lg7V~j46FUv;Byt(;zWwgJdrrd8WdlHB zz=wRN`re)b_Q3JN(n@(zeZF~@2WYvjnRB155mm8VmhjqoG1% zA`2UOLI2MVo6Gts9^iii8+bndp=sz=!T;O9Bly3mEEBq9zM6P`niQe(3iDHsn<8hXJE3>7LS%GKVsIc*fpSJF7Zg2P`4np6HAvH0pEPxuLd4 z;uy>+1yocQP7GF>l-CbAm-kbaZ4O+>0Gqme%oBw<4jrtW*h>bs;SzYEB>2SUP;LkYR<)Aht3W25=dZSrZsaS z`$q$sRCb*_a?~L5RVjVpOYz<6RP#=ch~J~*b=#1B2H+JQeSH}@+0MI@c+LJXs8xOI@TI` z@%{hVVRKnO#a;dXF23HI@^QH)MI0L2 zksFF4LP(BBzl=wJjYq$ZN579pe~d?ePDMY8zDbHnGS8oj@9a{GP_iFpjre3Tq90N> z67$niW7!_D{3p4oq}O~kZ}KBDzt#?%OxwxQyJXX@!zZDJ{tql&pulGEH{?*L&HyL? E04YF5>Hq)$ diff --git a/codeception/_data/plugins/Boomerang10-1.0.0/Entity/BarTrait.php b/codeception/_data/plugins/Boomerang10-1.0.0/Entity/BarTrait.php new file mode 100644 index 00000000000..176d06dd83e --- /dev/null +++ b/codeception/_data/plugins/Boomerang10-1.0.0/Entity/BarTrait.php @@ -0,0 +1,20 @@ +get('doctrine.orm.entity_manager'); + $bar = new Bar(); + $bar->id = 2; + $bar->name = 'Boomerang10 1.0.0'; + $bar->mail = 'bar@example.com'; + $entityManager->persist($bar); + $entityManager->flush($bar); + } + + public function enable(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Enable Boomerang10 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Bar::class, 2); + } + + public function disable(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Disable Boomerang10 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Bar::class, 2); + } + + public function update(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Update Boomerang10 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Bar::class, 2); + } + + public function uninstall(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Uninstall Boomerang10 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Bar::class, 2); + } +} diff --git a/codeception/_data/plugins/Boomerang10-1.0.0/composer.json b/codeception/_data/plugins/Boomerang10-1.0.0/composer.json new file mode 100644 index 00000000000..c45201d2405 --- /dev/null +++ b/codeception/_data/plugins/Boomerang10-1.0.0/composer.json @@ -0,0 +1,13 @@ +{ + "name": "ec-cube/boomerang10", + "description": "ブーメラン・10", + "version": "1.0.0", + "type": "eccube-plugin", + "require": { + "ec-cube/boomerang": "~1.0.0" + }, + "extra": { + "code": "Boomerang10", + "id": 102 + } +} diff --git a/codeception/_data/plugins/Bundle-1.0.0.tgz b/codeception/_data/plugins/Bundle-1.0.0.tgz deleted file mode 100644 index b565cc186a49cf95a5744b7a54ac3ffb73bbb7e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2087 zcmV+?2-x=@iwFP!000001MOOEbK*D>&S(D$ZFZ)Bt-)XeaTVE_yM$qCQk$JnK=x{H z$hj0-fM$&BmF*DjD*ydjlFeHnBsr3;yVLUlgVpM8t6S+p?^Ks%6(5>i{)g)T<0>oM4X70mBT(B#yVq?P~uo#i@$Fx~NYx z8b^DzAp(3-L5xkRT2M2qj7YAs(bZf3;xgJ|MOoU+J;g2$v{7${+PyS zNCSf48eyKGaERKia_jQ64edgt6-F~oN8_aEmGUOkx-j3J_dlBGBnVJfw8p4QV#05T zZ)P3GNfI?HmFaY960hu~*TnQf^IKHO+CPOHC1ZkyDd_NWD+n_m1=J%f2B+9ChMS!r9Z@z=vmv`28%7$hH+>`#VLoBr?2LUQo^Wi?3MUcR=b23YvxDRK zSgPpFCc}`;q+rMhOSY(C38swj)0752;oJIthGG4Ma7KcA{(1q}M9VW9k=q0;g#v)GV(dnW^rt^Z>Eugd!0u&Z@l|6c=};-AmLeI>%9;$OEL zPR*%RZIH8$9L@h;2M@;o{-XRWZn%s8IZkag{&o#k0?q$k1DgNs;(rg3yo?n-meOU+ zaCt(Vv4rp;SpCn);R@MX){p1}Mrs0@Vzklj77`fo(1UD$3JrV{$#IL(`xUk~B1s2x z7+f$|ED%qIJ`*(w!`A`v3mMfDphHyrfif3!j%US!dZfa;x%yIR$!6YR+29z*AIXq1 zDjuX*I45|N=CpWlagruuyC+hUXSdonFgoXuB?P(;PJo;S6z+fyoCZk`a*@P&bK#zK z`Q$zs-hb*BbmDlU3*`?UObXt|BOuSKB6r5>w>hVVX)0&JOP&Bdf&bMl3+`LBYD3rm zSHV2~kh?=VdXY4EB>w}_XIsvZ4e_tn>Qx>8*T8!GMbUmyEZjG2v}y)kAZVou11f?))*;JZ?t?Mf=l)sXQJ#yH|Y4sM&MdvQKjsSe9T zhmg~MN}9XUQPMOu5-xZq9_tyy|F*D6nHvEojK&;Nyonf4@VO8$PdkEF-w-L%2ZTx?vk7<<(g;+-^ngB;-RJ? z_ctrgTc4y7;>Jk~n~3l`VVm`4BCZt4mCM<)L-$JP<{3Uf4@Yb^4ueT0in)VwAq3k^5tMLBLB~k# z9y`5m*>X_vbHCq#Ve(*&q$E~*p-#-@f&AcCC={@24!Y!zl*Gv=DK?w$xnR8hstlUK zp!l#HS1HR@oDHgC*b&BLAG*}eV~@`D5{SfPADS+sAjCfLKfy+IFZwurqMB!ChR6sg zCyS(znpV8Yu9-*cj))@?P_X($59HHx`mZF>(-o`)`sv*l(b(BncHSDM#SE7RA5HW{ zN)90Y&LA@(eppWS}E8$Dpfo(d*}J$Hv|9BNnLj`F|~sBlo)i?3({a4M)v?yU~E1znK3GtFGt& zYe2vM$>0BE3)EM|BRBj7Xt4ZOnr2hIae4m%wjnqO3gVmChh4ps3U(g&D}nnB+Z7vE zkD1UC`TO4^nD~x3|E<>a{C^dQLVGA)eI7Q^VKyzw?W%UwIHF4O@P%c_k zxu4rtLS@PzHlhfM{{OHu+aRZEraG&$%c^FUGpB`U)vV>BOS?DOWSMr}G$q&I^KE6s zaWwuTD8oXiMCxD(MDC=MaddCompilerPass(new BundleCompilerPass()); + } +} diff --git a/codeception/_data/plugins/Bundle-1.0.0/DependencyInjection/Compiler/BundleCompilerPass.php b/codeception/_data/plugins/Bundle-1.0.0/DependencyInjection/Compiler/BundleCompilerPass.php new file mode 100644 index 00000000000..9c033a5a4c3 --- /dev/null +++ b/codeception/_data/plugins/Bundle-1.0.0/DependencyInjection/Compiler/BundleCompilerPass.php @@ -0,0 +1,31 @@ +getParameter('eccube.plugins.enabled'); + if (!in_array('Bundle', $plugins)) { + if ($container->hasDefinition('League\Bundle\OAuth2ServerBundle\EventListener\AddClientDefaultScopesListener')) { + $def = $container->getDefinition('League\Bundle\OAuth2ServerBundle\EventListener\AddClientDefaultScopesListener'); + $def->clearTags(); + } + } + } +} diff --git a/codeception/_data/plugins/Bundle-1.0.0/Resource/config/bundles.php b/codeception/_data/plugins/Bundle-1.0.0/Resource/config/bundles.php new file mode 100644 index 00000000000..2be7433774d --- /dev/null +++ b/codeception/_data/plugins/Bundle-1.0.0/Resource/config/bundles.php @@ -0,0 +1,17 @@ + ['all' => true], + League\Bundle\OAuth2ServerBundle\LeagueOAuth2ServerBundle::class => ['all' => true] +]; diff --git a/codeception/_data/plugins/Bundle-1.0.0/Resource/config/routes.php b/codeception/_data/plugins/Bundle-1.0.0/Resource/config/routes.php new file mode 100644 index 00000000000..c7a50f5af2c --- /dev/null +++ b/codeception/_data/plugins/Bundle-1.0.0/Resource/config/routes.php @@ -0,0 +1,16 @@ +add('oauth2_authorize', '/%eccube_admin_route%/authorize') + ->controller(['league.oauth2_server.controller.authorization', 'indexAction']) + + ->add('oauth2_token', '/token') + ->controller(['league.oauth2_server.controller.token', 'indexAction']) + ->methods(['POST']) + ; +}; diff --git a/codeception/_data/plugins/Bundle-1.0.0/Resource/config/services.yaml b/codeception/_data/plugins/Bundle-1.0.0/Resource/config/services.yaml new file mode 100644 index 00000000000..8c3da918ea9 --- /dev/null +++ b/codeception/_data/plugins/Bundle-1.0.0/Resource/config/services.yaml @@ -0,0 +1,61 @@ +security: + enable_authenticator_manager: true +parameters: + env(ECCUBE_OAUTH2_AUTHORIZATION_SERVER_PRIVATE_KEY): '%kernel.project_dir%/app/PluginData/Api42/oauth/private.key' + env(ECCUBE_OAUTH2_RESOURCE_SERVER_PUBLIC_KEY): '%kernel.project_dir%/app/PluginData/Api42/oauth/public.key' + env(ECCUBE_OAUTH2_ENCRYPTION_KEY): '' + +league_oauth2_server: + role_prefix: ROLE_OAUTH2_ + + authorization_server: + private_key: '%env(ECCUBE_OAUTH2_AUTHORIZATION_SERVER_PRIVATE_KEY)%' + private_key_passphrase: null + encryption_key: '%env(ECCUBE_OAUTH2_ENCRYPTION_KEY)%' + + # Whether to enable the client credentials grant + enable_client_credentials_grant: false + + # Whether to enable the password grant + enable_password_grant: false + + # Whether to enable the refresh token grant + enable_refresh_token_grant: true + + # Whether to enable the authorization code grant + enable_auth_code_grant: true + + # Whether to enable the implicit grant + enable_implicit_grant: false + + resource_server: + public_key: '%env(ECCUBE_OAUTH2_RESOURCE_SERVER_PUBLIC_KEY)%' + + scopes: + available: ['read', 'write'] + default: ['read'] + + persistence: + doctrine: null + +services: + # Register nyholm/psr7 services for autowiring with PSR-17 (HTTP factories) + Psr\Http\Message\RequestFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\ResponseFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\ServerRequestFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\StreamFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\UploadedFileFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\UriFactoryInterface: '@nyholm.psr7.psr17_factory' + + # Register nyholm/psr7 services for autowiring with HTTPlug factories + Http\Message\MessageFactory: '@nyholm.psr7.httplug_factory' + Http\Message\RequestFactory: '@nyholm.psr7.httplug_factory' + Http\Message\ResponseFactory: '@nyholm.psr7.httplug_factory' + Http\Message\StreamFactory: '@nyholm.psr7.httplug_factory' + Http\Message\UriFactory: '@nyholm.psr7.httplug_factory' + + nyholm.psr7.psr17_factory: + class: Nyholm\Psr7\Factory\Psr17Factory + + nyholm.psr7.httplug_factory: + class: Nyholm\Psr7\Factory\HttplugFactory diff --git a/codeception/_data/plugins/Bundle-1.0.0/composer.json b/codeception/_data/plugins/Bundle-1.0.0/composer.json new file mode 100644 index 00000000000..e8ce7f5bd69 --- /dev/null +++ b/codeception/_data/plugins/Bundle-1.0.0/composer.json @@ -0,0 +1,19 @@ +{ + "name": "ec-cube/bundle", + "version": "1.0.0", + "description": "Symfony Bundle tester", + "type": "eccube-plugin", + "require": { + "ec-cube/plugin-installer": "^2.0", + "league/oauth2-server-bundle": "^0.3", + "nyholm/psr7": "^1.2", + "webonyx/graphql-php": "^14.0" + }, + "extra": { + "code": "Bundle", + "id": 101, + "entity-namespaces": [ + "League\\Bundle\\OAuth2ServerBundle\\Model" + ] + } +} diff --git a/codeception/_data/plugins/Bundle-1.0.1.tgz b/codeception/_data/plugins/Bundle-1.0.1.tgz deleted file mode 100644 index 6116d88bc8f5d81730ced2d189487eb12e650375..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2078 zcmV+(2;ui1iwFP!000001MOOEbK*D>&S(D$Ejv@d)?l!Ct0FsdmoQ9CYO@mxlD*m+ zaxTRdpcx~3Wjlns%74F>Wb+mXAxE-xcX~cxuv*=1bxV5G<}_iRPs&Fxi3*@uuZyeI ztXGz=8IG)Kvr@Bb^=idFs#tcd**rq^7xgMd62+J!bi^>j5s9L0a=Y69OL3~=uP*A- z49DR?ZHNFjYPD_g7tvmdzXkEH*XxZVR5_>@TkwA#|DXQ?(Kd|oPX_u4U5;slhSVnr zt|8_z3WliDF14>tJJ2pf+CezubTp0&ZZT^@?F;kW`Q=9wo%lZLiPi}9NJRK8@yxX2 zIF7?sxjdatP2!f^oW5Y z%DPr{Mpmwe-;~Z@8D!$pZ&jL$@Sl^)b#%U8rT&7Y!)6W5uOzPnq6;Jn^oIt zK>QocW>v@kHSlQsA1=zz;)c8Up9uC!{Ozisgqr`o0yO{I#s3~7c_}M=Dy2)A;qrt! zV=>`Fu=<~o!xgf(tRK+{jMM})MQEelEhI4HfeYEb4-I@1%5jU(`xUk~B5@aU7+f$| z$P-tFJ{2_y!#6(h@+s95phHynfieekj%S6udZhfjx%y&p$!6AJ+29yQAIXq1DjuYe zKPPyUWVCp2agxMiyDw6cr?)z{FgoXuB?P(;PJo>H6z+fyocM7ca*;$?bN+#K`Q#oM zK78sIbmDlU3#AV(ObUL9M?jueMedE&Z*xu!(^Srcm#hHo!T)NO1^2CLrEcl{|1~g= zKjiL^j$R}Up2+`z^x1Yr+_!2~Ti5?y1?%w_n>K8>kvYQ?|3Ef&@V{EESzn8PQ(QFv zdj&+qO*oBbE!Y;+X6#_toM7vrE{+54OyIdkgtt)46JmtfP9C-7K0?@Sq0<&5(78Cd zy8LWA;`5?+_V<&^vx_fIztj7z({sALv)@iGJI*hi--|7jfBRiltV|#og3>r1NR(JCX`>HDo-1F%CJ9gS!^$U7XKVs$!Yw5ODfW zNpn{^N}8rd!U503V?AT|-{vs~4$Zk$ALhzPzDwpni~;z*H9xtu*abgzV79!)kI5OR)a-bcAO2T+&Bn^k758^(gC zJH*3Wl#^t8Ry;B#vkZwOuU)9bx0w3Ep%(g@=LCDe`}0#+pGf|CF61drJQulExZ_h@m$s{jwTc`g1-r<*VaDJ|)!|T@uB?eEF@aEIQbmQ0B;vK=J1y#U&-8 zOb0C7C%o`AuZX(2Le$NLgtgeA&6a(5yhB7a>pwm2urpL9%pd$#?#qBXk5g${I~0kYNaaXf4!pr|MM!)?|-uQ zKj{MXRq@CTe*qdS|COfIQg2+|e}H2M_Wiv0CeC5k@1%mA1%D;*uwlDmZspXTscLn0N$r`X)M+7FF{_#A(&N8+5i9m diff --git a/codeception/_data/plugins/Bundle-1.0.1/Bundle/BundleBundle.php b/codeception/_data/plugins/Bundle-1.0.1/Bundle/BundleBundle.php new file mode 100644 index 00000000000..e2a4971f4a9 --- /dev/null +++ b/codeception/_data/plugins/Bundle-1.0.1/Bundle/BundleBundle.php @@ -0,0 +1,28 @@ +addCompilerPass(new BundleCompilerPass()); + } +} diff --git a/codeception/_data/plugins/Bundle-1.0.1/DependencyInjection/Compiler/BundleCompilerPass.php b/codeception/_data/plugins/Bundle-1.0.1/DependencyInjection/Compiler/BundleCompilerPass.php new file mode 100644 index 00000000000..9c033a5a4c3 --- /dev/null +++ b/codeception/_data/plugins/Bundle-1.0.1/DependencyInjection/Compiler/BundleCompilerPass.php @@ -0,0 +1,31 @@ +getParameter('eccube.plugins.enabled'); + if (!in_array('Bundle', $plugins)) { + if ($container->hasDefinition('League\Bundle\OAuth2ServerBundle\EventListener\AddClientDefaultScopesListener')) { + $def = $container->getDefinition('League\Bundle\OAuth2ServerBundle\EventListener\AddClientDefaultScopesListener'); + $def->clearTags(); + } + } + } +} diff --git a/codeception/_data/plugins/Bundle-1.0.1/Resource/config/bundles.php b/codeception/_data/plugins/Bundle-1.0.1/Resource/config/bundles.php new file mode 100644 index 00000000000..2be7433774d --- /dev/null +++ b/codeception/_data/plugins/Bundle-1.0.1/Resource/config/bundles.php @@ -0,0 +1,17 @@ + ['all' => true], + League\Bundle\OAuth2ServerBundle\LeagueOAuth2ServerBundle::class => ['all' => true] +]; diff --git a/codeception/_data/plugins/Bundle-1.0.1/Resource/config/routes.php b/codeception/_data/plugins/Bundle-1.0.1/Resource/config/routes.php new file mode 100644 index 00000000000..c7a50f5af2c --- /dev/null +++ b/codeception/_data/plugins/Bundle-1.0.1/Resource/config/routes.php @@ -0,0 +1,16 @@ +add('oauth2_authorize', '/%eccube_admin_route%/authorize') + ->controller(['league.oauth2_server.controller.authorization', 'indexAction']) + + ->add('oauth2_token', '/token') + ->controller(['league.oauth2_server.controller.token', 'indexAction']) + ->methods(['POST']) + ; +}; diff --git a/codeception/_data/plugins/Bundle-1.0.1/Resource/config/services.yaml b/codeception/_data/plugins/Bundle-1.0.1/Resource/config/services.yaml new file mode 100644 index 00000000000..8c3da918ea9 --- /dev/null +++ b/codeception/_data/plugins/Bundle-1.0.1/Resource/config/services.yaml @@ -0,0 +1,61 @@ +security: + enable_authenticator_manager: true +parameters: + env(ECCUBE_OAUTH2_AUTHORIZATION_SERVER_PRIVATE_KEY): '%kernel.project_dir%/app/PluginData/Api42/oauth/private.key' + env(ECCUBE_OAUTH2_RESOURCE_SERVER_PUBLIC_KEY): '%kernel.project_dir%/app/PluginData/Api42/oauth/public.key' + env(ECCUBE_OAUTH2_ENCRYPTION_KEY): '' + +league_oauth2_server: + role_prefix: ROLE_OAUTH2_ + + authorization_server: + private_key: '%env(ECCUBE_OAUTH2_AUTHORIZATION_SERVER_PRIVATE_KEY)%' + private_key_passphrase: null + encryption_key: '%env(ECCUBE_OAUTH2_ENCRYPTION_KEY)%' + + # Whether to enable the client credentials grant + enable_client_credentials_grant: false + + # Whether to enable the password grant + enable_password_grant: false + + # Whether to enable the refresh token grant + enable_refresh_token_grant: true + + # Whether to enable the authorization code grant + enable_auth_code_grant: true + + # Whether to enable the implicit grant + enable_implicit_grant: false + + resource_server: + public_key: '%env(ECCUBE_OAUTH2_RESOURCE_SERVER_PUBLIC_KEY)%' + + scopes: + available: ['read', 'write'] + default: ['read'] + + persistence: + doctrine: null + +services: + # Register nyholm/psr7 services for autowiring with PSR-17 (HTTP factories) + Psr\Http\Message\RequestFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\ResponseFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\ServerRequestFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\StreamFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\UploadedFileFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\UriFactoryInterface: '@nyholm.psr7.psr17_factory' + + # Register nyholm/psr7 services for autowiring with HTTPlug factories + Http\Message\MessageFactory: '@nyholm.psr7.httplug_factory' + Http\Message\RequestFactory: '@nyholm.psr7.httplug_factory' + Http\Message\ResponseFactory: '@nyholm.psr7.httplug_factory' + Http\Message\StreamFactory: '@nyholm.psr7.httplug_factory' + Http\Message\UriFactory: '@nyholm.psr7.httplug_factory' + + nyholm.psr7.psr17_factory: + class: Nyholm\Psr7\Factory\Psr17Factory + + nyholm.psr7.httplug_factory: + class: Nyholm\Psr7\Factory\HttplugFactory diff --git a/codeception/_data/plugins/Bundle-1.0.1/composer.json b/codeception/_data/plugins/Bundle-1.0.1/composer.json new file mode 100644 index 00000000000..43a48f0c5a6 --- /dev/null +++ b/codeception/_data/plugins/Bundle-1.0.1/composer.json @@ -0,0 +1,17 @@ +{ + "name": "ec-cube/bundle", + "version": "1.0.1", + "description": "Symfony Bundle tester", + "type": "eccube-plugin", + "require": { + "ec-cube/plugin-installer": "^2.0", + "league/oauth2-server-bundle": "^0.3", + "nyholm/psr7": "^1.2", + "webonyx/graphql-php": "^14.0" + }, + "extra": { + "code": "Bundle", + "id": 101, + "entity-namespaces": ["League\\Bundle\\OAuth2ServerBundle\\Model"] + } +} diff --git a/codeception/_data/plugins/Emperor-1.0.0.tgz b/codeception/_data/plugins/Emperor-1.0.0.tgz deleted file mode 100644 index b40fbe2acbbb02811bdc3bcc5bd4860a1eb3eb07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2403 zcmV-p37qyHiwFRbD2rkM1MOSuZrjQcPXFo&`g1A-upGz~@06@6=P0rgt95Kcmd`-| z0|rg5B*xS(%ZnW~aB+V0QThUXkv>Nsqq8Js>Ka>#rKHE4ACkzKot>SX+5PsSQ}fdy zF>T^k+B9^+@rw|0DpL8hcAs;;VrqNyNCnxyG3;L|3InWrcSO&?9U zcE&6;ugyz#9es_Sq$zO!{eMD|4g<$-D6%LUVpT6l21NL*N)owMJiv?MmymlySRCQUeR#l@~D@fG|gSrmAZm5Ot z?d%_rlB}<6w2n#s|AxQ+_|KpJ#lQdX-+%u{%xEtERYeqEfVNSqQhMh3pZ5Rh{WQ=r z{jleoPAGUo?`i5le_+?H9{*({8~-t*vHuNSHuCX*8?^TLpN`48h$ZBO@qfbAWJRkk zj{kgiz^+xKs;sUzp4X&>@m$Ks^KYj#|2L5J8BOy4w-?LDe+>tN+5FcH5%XVsYD1RM zGtd7&|AZZ0C{S}m0?)JvoVwA#p%?9uM||dAB=J!%6bey5plw;v6}f0qioW7#E#M1>@#-h*u^sVq)&W8En+A9_S9f|sbFUby?--M={h zqhp?W40w3{SLgFz)zp0c-v&K6|I4+d^S^-;v$SgZuhy!Hsx3_a$PuKPX2?}dU2{2C zlk@3+Bb4U<2C_b*2j+i8R^++-*ECtp=l^X`GXGcN8M!xf0_Zy~0sQuGwguLQc5AP7 z{-%w5F4AJ&*mnlQuw?Cmj1AqBMNG`2lh$8Pj-hoTl#hA`0yJG0x?C)PE(wT#Lu?_{ zFbqR)zf!rqy%k($T{9|JO!(+kQg&>E=d*!tj<^|ppAZOGKfE=4Qim~%z%nULyS5V` z#<+??v^E5j+7;$=1tVrV{V{(RQJl{p91;kLKMHtb_`|#7b9hH6@l6*_lgaqVu@Hk0 zUK~+MJVOUVV#C!qF7cMzaF*HtZy73%!A~8CgM1%uh|duW$Xr8OO{%jD%!iU0a?5>S z9xu0x=8nNN!>p*VqWM`XZE$F;c*s0#(GXQ)8*d%-^c4X_UH!-{a}_8Izjk_uC+9tA z9)Eyeo84~nxc8xs!r_o1m)wvBz+3RP z(>rdTox$6aE;Qk^+3j^&=SR&hoSt`2PtMu`z!~9Y#ZFx9V(6o?5koiHBs3j2m^AzY zc5Hywxi$>V8-g8d5eLHtOt3KK9@%*=L!il)`YO5o;N4eFx(uWQ*O(i)TGs zh7PraGH5mE5p)uV#T*>(!CAyLD2iByH!KLb==&ysC`*#GCn=&)hV!$g5X08TqUtZh zWwgEYC(AX1;F5g8a0p5}Dq>!BGOIelV{Etj-R*S#{W>!36%lQ^K{6ORQBRxxgIcP&8w?meITDtjuJ<%0rBxU84-fU=VFAbpaCUzaX<7U zGFdfD_l3RiDoF(#9DXs~h?LNo_%OglPv@Y0+{4^0POGWh|DG&D92*1dOYKX#=h02% zpO5I;71r?5_4w^w;VwsaTcK>>mn6%3lbRTrPYMRt+5c4)zW;B?Qhxro6{bsQ4% z_1`w=f&Jh55`>zdtu$on)BD0{+2$1oB33vPTZ!OG7{#>%BA*VzD8G+ZqnQb6o2e2A-&?i=SZYwZi=2XweneyCi0CjN zT(`uRL}PeqG1_+qWmv2;<|XfTr%)oXh75|Y9#2K#^zihueR5Qv)6q#Rfz(+b38Emb zl>W9F5&I>8Z>DqMC7F4g!fbP##*{bqUJpoE+OgA^5tu&`66woPBEGYm)yy}-u{b5S z9CDZDID4-h8@bZ_TOP0YerLuvJM|Uj?Y;K+GCK%My!7sBvA!Dx!)c+r!qOliG+sG< z{}^e_SAJebpLnB`LC!+`TBnw^i}7-swhe_{$6_ii_Dr< zGm_KcCD*?cT<$5_y4Szdh2_8U`%lg-P?q(Zy92z={onNbS2C3R{_i$us{d#10A=sL zeN$-d`@gcJ>S8|rZ-c(-{x2W@bwjQ$zyFI|>_wxt>i-{xA*zZbtvLZ``Tp-FXe$4o zIO{W7wf~y}a(O=gLFRu6%lCh`LHYfk{QggV|7Y9xf3k6Q?q>be6_v@M#kA}rj!^E8 zYEF|aZ+EidoWym&Yp40Bk<|zaH7C&>tv0C^TF#4o*td0LAUDfmd|80f74*yGv zuHm9yUylE$xl1>IG)Xp$HSxcmget('doctrine.orm.entity_manager'); + $foo = new Foo(); + $foo->id = 1; + $foo->name = 'Emperor 1.0.0'; + $entityManager->persist($foo); + $entityManager->flush($foo); + } + + public function enable(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Enable Emperor 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Foo::class, 1); + } + + public function disable(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Disable Emperor 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Foo::class, 1); + } + + public function update(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Update Emperor 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Foo::class, 1); + } + + public function uninstall(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Uninstall Emperor 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Foo::class, 1); + } +} diff --git a/codeception/_data/plugins/Emperor-1.0.0/Repository/FooRepository.php b/codeception/_data/plugins/Emperor-1.0.0/Repository/FooRepository.php new file mode 100644 index 00000000000..dadaeec8fab --- /dev/null +++ b/codeception/_data/plugins/Emperor-1.0.0/Repository/FooRepository.php @@ -0,0 +1,26 @@ +)Q_jPMH*FT;R z-6US6O#>^K?rnj1p4T)D_Oyu7Z$2SOQ9zI+Syd%PRV3gAMNp+Z__z&YmMQcD-9uAu ztf>>|H~O`66Fx>y+!dIA|DTYc!pJfklE{l1UsVf&1|dGnf`CPGRW3+8Oaf~{8iFFJ zHSC%oaAK_{h=L{wjB9+6t1oaxk&`qWX+@CLf?S1e=XJB!I_dn<<_wRZtV8GW)mlvx zWKKjQs*)^f1yO0RGdSi$QMLqR%}tHQB}pNBCFVZL8#6c)VAnNLoR%8 zXFo%VSAAuxZOqpHZ}|I<|NQx1?E4S@{r7+Pl$O@NEb+=7C|k8Ep&xwxC*yxUKL%R5 z7l?gNw*t-`yHC;v`a_lF_4~i5W%hp*2Y0&T+x2jr?rDf)_`wS?dP7!c~? zb3GC}c8tKYD7iZ8y}Np+yRJn?p!= zNatwbQvr}7MT}4xYw3)VzJnhn9MKU8Vm*!Gy*;{mt$R#+ruttTi?$p)oKU~?X~uzN zUWvJ?Q5@*rwPhB|;E^Hm2sMZq^G_o-vgXP^&wf>+Z#Nv+mH{tNL%s0%d+%W@=Rf-8 zskeYl&VM|I*!q_xB|ranL7Scb^O&rL7)@5R#q&Sq3Ot_i>f-s2Tx4^y#@A#7c-0N# zIVC^;w?WDJ-@>X-=_}{IBue7a`d1WQ&d>i{P<;MZq7%74wtN^`HUa#0@w5eJ2<_Hk z>+*FQ`AnqcxKqy>jf0YL03vquP~>r4cF$UWJv)Wg8CUN1k2z@CHuRX74?W@&@0OTc zqG22a?op+3cX!9xj&b8q&TzO7ZY5zyHn^TM^7IKaW9ShAzB3H&bdS_w>V#nE6i;2# z@)2VU!T_xeK&NKK@tA^%V_L&0D+?)}XAq1D1jL*8tTXK4?dc`FC6su&4d?M$+_enE zAcR#%loB1#{+O6Bm_{|;FdHrs8{mzDiX-q-2Vx=LgInS;1Op<|kTjF%EQ8}gNe`Ii z9yl(mcYx+j!PbMcDz~QlX)jH%Xry@TxY(mHs>D9tS?K8j0YqKH&@M9-C=9=L`X^_X zeQ2J(hhLk$Uh}m7zK+7d*g-D2C9x`N;@TE!#(sG^4W?*2)9|j{Yn@<~=Ic(k(|^x; z@TSv0ZC_l#o3kD?;k?=FcUqU-W)IFUd*^2tZ4TgqFtZ{ju6HpEQQ5>nH<~2SE!&@U z{5=k=kJi~HjP+ZB18firrw!;};GBEl;MooWP1a2mP90eXYY2!~%W&seI9~#1by!*T zbY#oWp$1n5r3QV1PGYc_f#XBC2$=>+;>+;b@dGCMt_i@4f*>3U60eov@}kK_u=Sy+ z`pa+`Z7==FuyxS?HMOoB(qWfKINQ|jrla_AV1KqgsON%nG14*Gr{W?& zk9-X%5j`c5K-Q&6%eT6RYcj}`EwGtk3touAg}B#Pjf{wg&+(4nH$D|ZjDkj#n8l;O z3&|{K$c}}%QWP%*+#G(c8xWxc0DTn{QU!?AB57tFJ3I~bgJXbd{QvDdHkn|yqd>PkKRYk3ah+o_={!{b#ZyU6|RiDyV;y;Y_wB`Jd$lm|w@!$68EBW90 zJqR^MTgjBEXY;~I-R6J+5hGZbTe09;BeL8I(wju>-}I52qq`esX@@KI_((baY}%AaNE59M1`BrN6Dk7c5>n zeC1>4g@aMbbS(oAUy$s`LnGsX!&f5`l=jVJo^Xyg;bQ6QNi4p9P+z0y@YT?wW(nIp zI*LZI48p+-2i`kIghqkO_aCBmWXNtt=(#u_gSlto{o~k@AItrrYhsM|47`6C8S>qC zr{_07^!Xeimor;_=WE2XZrNO%kHKuFeA(rz`JFiFu>f$EdzHysJY9bWI;&2}9ZNfv zmNT}^Tq}jhbEA^C=f_{U& zbH%-y``|nDN!xhL|3B3H{?AV6arj^5wW=)F*8Kk?%U%5chbnWtiaVu*pkYJ&U(50T zHfVdRKBceVe~^~)KY-Ik%>Vzn6Z#b2**z)}<1j)X6%qrBV!3D%c5OR?tSE35O1xfW zpF@d#nmYR=wW!2E@dV1EX#A3~T#RmdGu2G-WO~|j%Pg~aB=G#_90KH&Q%*VMlv7SQZA$+GKO3M|08jt`Zy@#? diff --git a/codeception/_data/plugins/Emperor-1.0.1/Entity/Bar.php b/codeception/_data/plugins/Emperor-1.0.1/Entity/Bar.php new file mode 100644 index 00000000000..95248980801 --- /dev/null +++ b/codeception/_data/plugins/Emperor-1.0.1/Entity/Bar.php @@ -0,0 +1,46 @@ +saveBar($container); + + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Bar::class, 1); + } + + public function enable(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Enable Emperor 1.0.1".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Bar::class, 1); + } + + public function disable(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Disable Emperor 1.0.1".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Bar::class, 1); + } + + public function update(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Update Emperor 1.0.1".PHP_EOL; + echo "*******************************************".PHP_EOL; + $this->saveBar($container); + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Bar::class, 1); + } + + public function uninstall(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Uninstall Emperor 1.0.1".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Bar::class, 1); + } + + private function saveBar(ContainerInterface $container) + { + /** @var EntityManager $entityManager */ + $entityManager = $container->get('doctrine.orm.entity_manager'); + $bar = new Bar(); + $bar->id = 1; + $bar->name = 'Emperor 1.0.1'; + $entityManager->persist($bar); + $entityManager->flush($bar); + } +} diff --git a/codeception/_data/plugins/Emperor-1.0.1/Repository/BarRepository.php b/codeception/_data/plugins/Emperor-1.0.1/Repository/BarRepository.php new file mode 100644 index 00000000000..d081b5091a8 --- /dev/null +++ b/codeception/_data/plugins/Emperor-1.0.1/Repository/BarRepository.php @@ -0,0 +1,26 @@ +@==Txd( zOUcpz6N?e6A3JQyRp;V7%D%w9$UetD#`Z|!-z3H{#Hpw+B&6=?>FMbiebY0v%ugr8 zw24=!vw#NUy)BR^iiW1ao)OXPE+(WPQ&JRFS5-}uMGz%TQjIvr?&qxM@_^e72zEX>7MiF5c&>^WvnxYq# zqFNLMQIj<6DqZ4S>x*1-g{zjdqO2HtMlC|K@uu3Yoiu)}3zkPv)@5_@Mp4!UP0?i8 zFmx>=D{zjo%@2Z2ZYq+FF(k`kM%E^;DRV1DUDoxYSQ4d-RGcuFL)mpj&3tcXKSPQ~ zePOG0OveB3`1{X)y#6=8|LK4K`L8&mrSY%IhO`ITR;^0tCm;Vw|F@=}fn(Dj2&2L1 z3F|An9lz@p-t!i$(*dHqAr(~=l?0Ugpb+=%`S*y}cD2*SdC@V7bD_Q6XVRHjF&C z@0mkxM$aPze76_enjR^`*bTul8F<8|e&EroFhFYqFqvI&J+5Hr+O#+3??Q&(GYAF* z0^$vQ-WdMy?(_oQ5k@@IfmV3sPz##WBFrbexQVs%m;Qj*a5aufyyZ5WCpN%a7ZpcP zwG4zJ--8?C`S=Vn*N{|`=*)xbLCy@g4i?7t3YA+tZMUnZoeyOc4hAlA$qk8B(c#FU zs2SVknJgHi?OenAI%0AxQhn2CHaZ`83*I(5r}gu5czf1{DzvKYPNR0wthS+b(Qcic z*9Cxc!p(}DxZcIkLuEr3-Ds1*q>evn_y_D*AFXq27??K%JJ=!=!v;*SFyva#UIKTuTY2$W&*q`QEFlkC2|5IwM4;uE7J)-J54i?K5%ciI z^#d;Yz6v19k|Z5UifH8F;=IaRRmfzRIVApw7i>9UpR&sn*Q5V(*=0QImNS_Qb{rhL z7IrctmuKzwm+#Hdh+-=+5b+U3(DvM4EXVZyF8PGv;OF-5)pp6}@cn}W_?!Wx!poP@ z9orR)Cr^`?uX$x1^U5JPZe}HG2UlGiRb&qqL>deuoCYSdNM}4Ex$Jr4^j)*w#pr0( zmt>ErZ+Ub`nHjiV&2_>dn<$^>bOThB%>%zxvOK_9A0HjU`oW+gYucjL6Vq?f9%Z+&y#9LtQsqFkZdu_K zxvVk-(-BTi*!52VLU6t!%48x0fw*9alglQB6R^qyjsp{f00ECXm_}e`1;0ipn#qIHPpC=qnOWX;dMh)EvO?sq9Jc97tjs;F9Ky#{p zO(VIAatgA3ZkhqVI8rf=O1SZ`{J$ZKT8jU6L66P<>$0kq*5&^Zv1zKYy8j#H z|BFS0fTfbYVg6rD@!vLRd!v3vU%`JW#>(>kA9i|*|8_xN!GGm@GL$ifNkXPP4-AvC z)hnKavVw)!iUrrhp_qR@9`;;@@X#HOTt--Mc}zxx*@$n(4fc^(5$deDEHKd=ufYQ1 z_0VjzGtSv9)Cq*cPuqukElPl90*87bi<2ms$ys%u>qy0Rr)*12QcL#GR zLShYE$i93yWrfyBt6M*7mX~xiVoMv+oS z9FK#eqi9s;LHe@yZR$T0_aDcW{AB(QN46O}2lrn@hWu>aXV2%GbuqDJt9|etKU~|Ato7SI>V>*8iHOiKW%^f2x9$fvjqx zDyzzd>wj%!{jWUVQT5}{Y}9Y>4EP4;zbEJar1bpvZfLIm7test7~h-~+Bp9!OS&Yd z^ZzdBvGadXlw_&6?)-NV2e7s>{~JX`7f`RRG|*U{C9f(d)Mc`XVdKD40y7GGIv0EvS%?b`;aY^>0V7M&UEvm zA(u&-qD}fdpvFARC%;$sP!>M~E1M`Y)|wrZZr5@d%7#{uTd4(Jc*(1SrL)yI;}8}c z9nBY?3g=-ixAG$-R(=qgfqsi`x#3(beDq!Rq;+h5{zF&w^!&$8=yCX8lU3Eg?z$iU z&vWlR|DotoN!<|t8!7(Z25oQD&*&@o9~4Ph#QzvBN_zfxC-gb~zs^yXScee;DNGO1 zW^Ka%v=u>C6u1l((Z1qWQsP%rget('doctrine.orm.entity_manager'); + + $horizon = new Dash(); + $horizon->id = 0; + $horizon->name = 'Horizon'; + + $entityManager->persist($horizon); + $entityManager->flush($horizon); + } + + public function enable(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Enable Horizon 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Dash::class, 1); + } + + public function disable(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Disable Horizon 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Dash::class, 1); + } + + public function update(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Update Horizon 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Dash::class, 1); + } + + public function uninstall(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Uninstall Horizon 1.0.0".PHP_EOL; + echo "*******************************************".PHP_EOL; + + /** @var EntityManager $entityManager */ + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Dash::class, 1); + } +} diff --git a/codeception/_data/plugins/Horizon-1.0.0/Repository/DashRepository.php b/codeception/_data/plugins/Horizon-1.0.0/Repository/DashRepository.php new file mode 100644 index 00000000000..3c8ae760fdd --- /dev/null +++ b/codeception/_data/plugins/Horizon-1.0.0/Repository/DashRepository.php @@ -0,0 +1,26 @@ +^e4u@t#VR zYbhZOFo~Gakw$jdl&j9gKFU7m_DBNpV{E4aByrRifHXZlJw4q$-~7-vKc5oQCSI}0 z1QnAPTOdVIDuw|sDj|Vp~FH8?r`9vpN zn4ioZ{}kNEcRM1)c|gu$r(iqEZl2T%1k^s(RaGk~dR5P83XBCElVjD;%2lmet!f1v zn!|FrsvDW_t!_#irYP!*TWw<+|9|4|zx?<0|5oB39~R?Z*NxH(Ft(~yOuu;i$K&6g zO#>&UKPtE*cY|%9J#c6r%m0R{XQLd!5qsF{YhBkt<>Q%)&bsf6l@C0Sq%uqau05Z=i@V! zq=dMcSY{r$2RTzn%{}0*thbNqPQWomQnj$A`$;ctpez(T;x6`Rgd(wzw-hbiClL5# z5IA`$0-53WR`>Mcstfh=5Ab`v)2W|#Kh%&}j5wB(8xo14W7nZ58T;j#OiWOBDdByy z(>TQ{^*61vR`-MK!P{2%ym@&EZ!bDfhjzWwZ8fgW>K$lbb=nt~%>uwBk!poTTyJ6+ zps+DVGulL$)bXbs|9}JQqjruBBlCvf09%Bj+kgoc`rH!-&*5wsb`zNsL)L%}fN_zB zTaTi@2);V3vU)PId1x`KkO$)sx&)0xpzW9zfdjYH9tM8QsCp?cFQwTITS*{eAe70i@!qSK&AID`JnIrY~R1#=2(T zAvvk$an=_7o{b{1`wJ{Bh8|9Z$t=>HxFnaoY@NS5YxdAP&YDZSC)Bq*I;PAN+-qyw{b z^N7oRicL%!(qPBgB};W?<)O8b$5}^;;df|mkSyV2WYGny#%%4Zd$&+5Ra>wF zwP*dtYGg<}e2%h$fBYpIFrN+?v9m|Q3&`F6im;Zw@+t}kOc4Jvoq*)focJ)D9A{f6 z&GRnCZ+2cxarWDd!sjKm(a9d_Uo=2Z?xOsB!r-paM%Lc2KIFD%g)bh`Di17h92pMB z()5ogITKk6%kDCFKPxg`S^qU~-tT%Q6`O;DPh0;*>wlx9Vlq|Aik7bbc0rHs{~aD` zg~PIeBUsYZpViA#T1RpGZz1XvdSv~l;u3H%{?&?NDCzod7Zk1ko`6&(P;FXP&?nb* zhG06x$#HS>vp@(gS45diIAh~Hyi}6Q#+75RDjiM&6P#Uz^gEb&U}goshO>U3bBCBL zvv!`Res2^hJ)7s_ItviXCId5YMD}Q4I{pk|#gqID6U}7BSY%n788n=#@*bCTU4Fqx z4&7-;MAXd{06GWNm$36cIAu|P{M?smiKL~{DWFCPy%0@$WI#NE@Z63V&Zj_gCVx#Q zrHIKL=6IUf0od&)J|Aps2B}FZ#=f69lC!YUSRHLe@>G|)oqwPg~ zLXY4-1DAWt_dj%9OYz?>=n?!^yJv?o!Z5MR)aHRW+ z#C&_G$;U2dgo*1D;u2;f8k)4&M`DE-wZWM%QF*V$1n~ygN$gd$!?&Oz5D8Xo zAMVvZhNUrh8U!p94wRw)I8ILPpikhX#o2%k^RU`xSQfq8pW9F*)`&y))zc|kXrH!w z&5N_zl8jcQ3Bcb312CCC78tIQR|Wa&FI#U97;p zaUtUFjU)EG{ka{%moYF$8I0V9Ks>i!TPZ&HjoQef+*cx<9n1D&OYO}|U(oa5H&-6d z_#!v0Jm1n1>%a+6l_kcz%)MSiSh(^2{hg*6DzX!w`DPbbYk11+ob-dEqcE!TpgwGU zoBBV9`A;HEelhz8u5F4R!TeXDBG1+OlD=o6#`JvpaIQ``lB9f&j9-(O6B&=^<`v#` z4$6L29E&AIYtF=aJ&QBs4J?sc zX$4+-@vHr%yY-lH2opy~^VMg}d6?TgN_UPnMhWP*cU5#vyHa#)%SnYims>k ze|ADo+y5~tx>2g6D}d)m+l%^y9>M>hsoEm`R}DioQvAOQ`V#$L>nKaCgAjofXP2n6 zHj#hY3n42qTnCzB_vI%!l%J+9Kd}aW4m4zsp)9gSCsg@t_&+}>T1q}}L*Rn1J@Q9D zJuLZ>v>Fv2#AjW^!)pI76_nRDxyjz;vxq@FQ&zCJEk&Nrl%#g{NL7@(6bhu2Qc5YM Ql+u&w|Ep>oGyqTl0OR9~z5oCK diff --git a/codeception/_data/plugins/Horizon-1.0.1/Entity/CartTrait.php b/codeception/_data/plugins/Horizon-1.0.1/Entity/CartTrait.php new file mode 100644 index 00000000000..a0fd332de0e --- /dev/null +++ b/codeception/_data/plugins/Horizon-1.0.1/Entity/CartTrait.php @@ -0,0 +1,26 @@ +get('doctrine.orm.entity_manager'); + + $horizon = new Dash(); + $horizon->id = 0; + $horizon->name = 'Horizon'; + + $entityManager->persist($horizon); + $entityManager->flush($horizon); + } + + public function enable(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Enable Horizon 1.0.1".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Dash::class, 1); + } + + public function disable(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Disable Horizon 1.0.1".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Dash::class, 1); + } + + public function update(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Update Horizon 1.0.1".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Dash::class, 1); + /** @var EntityManager $entityManager */ + $entityManager = $container->get('doctrine.orm.entity_manager'); + + $newHorizon = new Dash(); + $newHorizon->name = 'New Horizon'; + + $entityManager->persist($newHorizon); + $entityManager->flush($newHorizon); + } + + public function uninstall(array $config, ContainerInterface $container) { + echo "*******************************************".PHP_EOL; + echo "Uninstall Horizon 1.0.1".PHP_EOL; + echo "*******************************************".PHP_EOL; + $entityManager = $container->get('doctrine.orm.entity_manager'); + $entityManager->find(Dash::class, 1); + } +} diff --git a/codeception/_data/plugins/Horizon-1.0.1/Repository/DashRepository.php b/codeception/_data/plugins/Horizon-1.0.1/Repository/DashRepository.php new file mode 100644 index 00000000000..3c8ae760fdd --- /dev/null +++ b/codeception/_data/plugins/Horizon-1.0.1/Repository/DashRepository.php @@ -0,0 +1,26 @@ +J}-un;ryv>}5}0dQf`wr1;+q*nh*xra>397k823`&}|K?-3^R=H+2H+gD+% zirpxmO!HC|_Ny|_2Ac!`QV23|S4cZI`X>PAj8M)U5X^NXBS2lj<$%mKx{E)k%PK6) zR>sLuUWMcESw60Rm-qUmQt37CS^p@qoy~3@bxEDXfuNK#5T39&kV%zHR6rf>a>tQe z*wPaq!4s=!bZsHp!!@dvMy=_{Fxq#pcO zD5Hx!m%6uAFvcP0s24VLDV{+vL4*lTgOCKTBHX83DGzkol+K25l4)BBto^#AQ7cO9EXB=45Nw3Ci0ZO1E8|Il0O{|V(c_3w6o z9>QB2!GG|`_5a=XcBMT}B@X@+YaPtQh`Kt5Gh8FSYICeW8DUF}2pSOk3q58`nB9SI@gg}jQjIF~ z@2PlyddM<3K5kNUjGi^E9Q6lgHr)O<$o+n&{YA#t3)}gWj{1wwL8eA>>YMl3cwsnb z(y~6!vlLy_Ds{s}7upWvXf{psm2N-UI_`Qw-4@d z{v(w6F%g7C90#Dw!^U5zepk2u&F=rL{)13(xc~2irSfV1s z5n%BD`(RW5&oB*{@I`EIXfY23`2WLZN&j=zZ+#=Uv;SY{U+|EC|KA7e*1y{bx_jM2 z`ndD^?|l6!2?@Oa?uGmN|A4R{hV%b{vrhlpQGLf}-hW;34gF&tVtD`E2bVI>3lQ<6 zW%>Otbx-G&)c$W(p|;q^2Jv6accy zG_#U7D^<)@Icw0hcTzSn<+jL${4(uI+j!ri)7I!DQ+7dI;MLXtmHPPENWSY^)9a?X zbiw1Ua$1b!O83qXqJ;ne000000000000000000000000000000JO=&&QfZ;I08jt` DlyM51 diff --git a/codeception/_data/plugins/Template-1.0.0/Controller/Controller.php b/codeception/_data/plugins/Template-1.0.0/Controller/Controller.php new file mode 100644 index 00000000000..a7e91626623 --- /dev/null +++ b/codeception/_data/plugins/Template-1.0.0/Controller/Controller.php @@ -0,0 +1,30 @@ +perform(); }); } + + public function compressPlugin($pluginDirName, $destDir) + { + $archiveName = $pluginDirName.'.tgz'; + $tgzPath = $destDir.'/'.$archiveName; + if (file_exists($tgzPath)) { + $this->comment("deleted."); + unlink($tgzPath); + } + $tarPath = $destDir.'/'.$pluginDirName.'.tar'; + $phar = new \PharData($tarPath); + $published = $phar->buildFromDirectory(codecept_data_dir('plugins/'.$pluginDirName)); + $phar->compress(\Phar::GZ, '.tgz'); + unlink($tarPath); + return $published; + } } diff --git a/codeception/_support/Page/Admin/PluginLocalInstallPage.php b/codeception/_support/Page/Admin/PluginLocalInstallPage.php index 5d1b26c87bb..2db45f86714 100644 --- a/codeception/_support/Page/Admin/PluginLocalInstallPage.php +++ b/codeception/_support/Page/Admin/PluginLocalInstallPage.php @@ -23,13 +23,14 @@ public static function go($I) } /** - * @param $fileName + * @param $pluginDirName * * @return PluginManagePage */ - public function アップロード($fileName) + public function アップロード($pluginDirName) { - $this->tester->attachFile(['id' => 'plugin_local_install_plugin_archive'], $fileName); + $this->tester->compressPlugin($pluginDirName, codecept_data_dir('plugins')); + $this->tester->attachFile(['id' => 'plugin_local_install_plugin_archive'], 'plugins/'.$pluginDirName.'.tgz'); $this->tester->click(['css' => '#upload-form > div > div > div > div > div.card-body > div > div > button']); return PluginManagePage::at($this->tester); diff --git a/codeception/_support/Page/Admin/PluginManagePage.php b/codeception/_support/Page/Admin/PluginManagePage.php index 24e4a68cef8..cedad5e1ac9 100644 --- a/codeception/_support/Page/Admin/PluginManagePage.php +++ b/codeception/_support/Page/Admin/PluginManagePage.php @@ -128,9 +128,10 @@ public function 独自プラグイン_削除($pluginCode) return $this; } - public function 独自プラグイン_アップデート($pluginCode, $fileName) + public function 独自プラグイン_アップデート($pluginCode, $pluginDirName) { - $this->tester->attachFile(['xpath' => $this->独自プラグイン_セレクタ($pluginCode).'/../td[5]//input[@type="file"]'], $fileName); + $this->tester->compressPlugin($pluginDirName, codecept_data_dir('plugins')); + $this->tester->attachFile(['xpath' => $this->独自プラグイン_セレクタ($pluginCode).'/../td[5]//input[@type="file"]'], 'plugins/'.$pluginDirName.'.tgz'); $this->tester->click(['xpath' => $this->独自プラグイン_セレクタ($pluginCode).'/../td[5]//button']); $this->tester->see('アップデートしました。', self::完了メーッセージ); diff --git a/codeception/acceptance/EA10PluginCest.php b/codeception/acceptance/EA10PluginCest.php index 34eb0d428be..d55b987cfc6 100644 --- a/codeception/acceptance/EA10PluginCest.php +++ b/codeception/acceptance/EA10PluginCest.php @@ -220,15 +220,13 @@ public function test_install_disable_disable(AcceptanceTester $I) public function test_install_assets_local(AcceptanceTester $I) { - $this->publishPlugin('Assets-1.0.0.tgz'); - $assetsPath = $this->config['plugin_html_realdir'].'/Assets/assets/assets.js'; $updatedPath = $this->config['plugin_html_realdir'].'/Assets/assets/updated.js'; $I->assertFileNotExists($assetsPath); $I->assertFileNotExists($updatedPath); - $ManagePage = PluginLocalInstallPage::go($I)->アップロード('plugins/Assets-1.0.0.tgz'); + $ManagePage = PluginLocalInstallPage::go($I)->アップロード('Assets-1.0.0'); $I->assertFileExists($assetsPath); $I->assertFileNotExists($updatedPath); @@ -240,7 +238,7 @@ public function test_install_assets_local(AcceptanceTester $I) $I->assertFileExists($assetsPath); $I->assertFileNotExists($updatedPath); - $ManagePage->独自プラグイン_アップデート('Assets', 'plugins/Assets-1.0.1.tgz'); + $ManagePage->独自プラグイン_アップデート('Assets', 'Assets-1.0.1'); $I->assertFileExists($assetsPath); $I->assertFileExists($updatedPath); @@ -252,7 +250,7 @@ public function test_install_assets_local(AcceptanceTester $I) public function test_install_assets_store(AcceptanceTester $I) { // 最初のバージョンを作成 - $this->publishPlugin('Assets-1.0.0.tgz'); + $I->compressPlugin('Assets-1.0.0', codecept_root_dir('repos')); $assetsPath = $this->config['plugin_html_realdir'].'/Assets/assets/assets.js'; $updatedPath = $this->config['plugin_html_realdir'].'/Assets/assets/updated.js'; @@ -274,7 +272,7 @@ public function test_install_assets_store(AcceptanceTester $I) $I->assertFileNotExists($updatedPath); // 新しいバージョンを作成 - $this->publishPlugin('Assets-1.0.1.tgz'); + $I->compressPlugin('Assets-1.0.1', codecept_root_dir('repos')); $I->reloadPage(); $ManagePage->ストアプラグイン_アップデート('Assets')->アップデート(); @@ -408,7 +406,7 @@ public function test_dependency_plugin_update(AcceptanceTester $I) public function test_install_error(AcceptanceTester $I) { - $this->publishPlugin('InstallError.tgz'); + $I->compressPlugin('InstallError', codecept_root_dir('repos')); $Horizon = Horizon_Store::start($I); PluginSearchPage::go($I) @@ -492,11 +490,6 @@ public function test_bundle_install_update_enable_disable_remove_store(Acceptanc ->無効化() ->削除(); } - - private function publishPlugin($fileName) - { - copy(codecept_data_dir().'/'.'plugins/'.$fileName, codecept_root_dir().'/repos/'.$fileName); - } } abstract class Abstract_Plugin @@ -773,8 +766,8 @@ public function アップデート() protected function publishPlugin($fileName) { - $published = copy(codecept_data_dir().'/'.'plugins/'.$fileName, codecept_root_dir().'/repos/'.$fileName); - $this->I->assertTrue($published, "公開できた ${fileName}"); + $dirname = str_replace('.tgz', '', $fileName); + $this->I->assertTrue(!!$this->I->compressPlugin($dirname, codecept_root_dir().'repos'), "公開できた ${fileName}"); } } @@ -798,7 +791,7 @@ public function __construct(AcceptanceTester $I, $code) public function インストール() { $this->ManagePage = PluginLocalInstallPage::go($this->I) - ->アップロード('plugins/'.$this->code.'-1.0.0.tgz'); + ->アップロード($this->code.'-1.0.0'); $this->initialized = true; @@ -863,7 +856,7 @@ public function 削除() public function アップデート() { - $this->ManagePage->独自プラグイン_アップデート($this->code, 'plugins/'.$this->code.'-1.0.1.tgz'); + $this->ManagePage->独自プラグイン_アップデート($this->code, $this->code.'-1.0.1'); $this->検証(); @@ -958,7 +951,6 @@ class Emperor_Store extends Store_Plugin public function __construct(AcceptanceTester $I, Store_Plugin $dependency = null) { parent::__construct($I, 'Emperor', $dependency); - $this->publishPlugin('Horizon-1.0.0.tgz'); $this->tables[] = 'dtb_foo'; $this->columns[] = 'dtb_cart.foo_id'; $this->traits['\Plugin\Emperor\Entity\CartTrait'] = 'src/Eccube/Entity/Cart'; From c6d04e414eecbc97475fcd6b7c7bf42379d72937 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Fri, 12 Jan 2024 09:18:29 +0900 Subject: [PATCH 089/113] Fix Namespace Symfony\Component\DependencyInjection\ContainerInterface -> Psr\Container\ContainerInterface --- codeception/_data/plugins/Boomerang-1.0.0/PluginManager.php | 2 +- codeception/_data/plugins/Boomerang10-1.0.0/PluginManager.php | 2 +- codeception/_data/plugins/Emperor-1.0.0/PluginManager.php | 2 +- codeception/_data/plugins/Emperor-1.0.1/PluginManager.php | 2 +- codeception/_data/plugins/Horizon-1.0.0/PluginManager.php | 2 +- codeception/_data/plugins/Horizon-1.0.1/PluginManager.php | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/codeception/_data/plugins/Boomerang-1.0.0/PluginManager.php b/codeception/_data/plugins/Boomerang-1.0.0/PluginManager.php index 67385ccb17a..63dd4ca05ac 100644 --- a/codeception/_data/plugins/Boomerang-1.0.0/PluginManager.php +++ b/codeception/_data/plugins/Boomerang-1.0.0/PluginManager.php @@ -3,7 +3,7 @@ namespace Plugin\Boomerang; use Eccube\Plugin\AbstractPluginManager; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Container\ContainerInterface; class PluginManager extends AbstractPluginManager { diff --git a/codeception/_data/plugins/Boomerang10-1.0.0/PluginManager.php b/codeception/_data/plugins/Boomerang10-1.0.0/PluginManager.php index 88036c5a26e..b59b3fb0a29 100644 --- a/codeception/_data/plugins/Boomerang10-1.0.0/PluginManager.php +++ b/codeception/_data/plugins/Boomerang10-1.0.0/PluginManager.php @@ -5,7 +5,7 @@ use Doctrine\ORM\EntityManager; use Eccube\Plugin\AbstractPluginManager; use Plugin\Boomerang\Entity\Bar; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Container\ContainerInterface; class PluginManager extends AbstractPluginManager { diff --git a/codeception/_data/plugins/Emperor-1.0.0/PluginManager.php b/codeception/_data/plugins/Emperor-1.0.0/PluginManager.php index fd0f6946bb7..3d1808e0d66 100644 --- a/codeception/_data/plugins/Emperor-1.0.0/PluginManager.php +++ b/codeception/_data/plugins/Emperor-1.0.0/PluginManager.php @@ -5,7 +5,7 @@ use Doctrine\ORM\EntityManager; use Eccube\Plugin\AbstractPluginManager; use Plugin\Emperor\Entity\Foo; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Container\ContainerInterface; class PluginManager extends AbstractPluginManager { diff --git a/codeception/_data/plugins/Emperor-1.0.1/PluginManager.php b/codeception/_data/plugins/Emperor-1.0.1/PluginManager.php index 641192a3f05..200a1871e4c 100644 --- a/codeception/_data/plugins/Emperor-1.0.1/PluginManager.php +++ b/codeception/_data/plugins/Emperor-1.0.1/PluginManager.php @@ -5,7 +5,7 @@ use Doctrine\ORM\EntityManager; use Eccube\Plugin\AbstractPluginManager; use Plugin\Emperor\Entity\Bar; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Container\ContainerInterface; class PluginManager extends AbstractPluginManager { diff --git a/codeception/_data/plugins/Horizon-1.0.0/PluginManager.php b/codeception/_data/plugins/Horizon-1.0.0/PluginManager.php index a7a0399da4e..e14211d183a 100644 --- a/codeception/_data/plugins/Horizon-1.0.0/PluginManager.php +++ b/codeception/_data/plugins/Horizon-1.0.0/PluginManager.php @@ -5,7 +5,7 @@ use Doctrine\ORM\EntityManager; use Eccube\Plugin\AbstractPluginManager; use Plugin\Horizon\Entity\Dash; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Container\ContainerInterface; class PluginManager extends AbstractPluginManager { diff --git a/codeception/_data/plugins/Horizon-1.0.1/PluginManager.php b/codeception/_data/plugins/Horizon-1.0.1/PluginManager.php index e390a065e31..cff017d8ca1 100644 --- a/codeception/_data/plugins/Horizon-1.0.1/PluginManager.php +++ b/codeception/_data/plugins/Horizon-1.0.1/PluginManager.php @@ -6,7 +6,7 @@ use Eccube\Plugin\AbstractPluginManager; use Plugin\Horizon\Entity\Dash; use Plugin\Horizon\Repository\DashRepository; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Container\ContainerInterface; class PluginManager extends AbstractPluginManager { From b6641cabd361e426f1aa7f91f910d62c60caa652 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Fri, 12 Jan 2024 09:47:33 +0900 Subject: [PATCH 090/113] =?UTF-8?q?service=5Flocator=E3=81=AE=E5=91=BC?= =?UTF-8?q?=E3=81=B3=E5=87=BA=E3=81=97=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/eccube/services.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/config/eccube/services.yaml b/app/config/eccube/services.yaml index ad440a13a3d..629a82b4ba6 100644 --- a/app/config/eccube/services.yaml +++ b/app/config/eccube/services.yaml @@ -75,8 +75,11 @@ services: arguments: $container: !service_locator doctrine: '@doctrine' - doctrine.orm.entity_manager: '@doctrine' - Doctrine\Bundle\DoctrineBundle\Registry: '@doctrine' + Doctrine\Common\Persistence\ManagerRegistry: '@doctrine' + Doctrine\Persistence\ManagerRegistry: '@doctrine' + doctrine.orm.default_entity_manager: '@doctrine.orm.default_entity_manager' + doctrine.orm.entity_manager: '@doctrine.orm.default_entity_manager' + Doctrine\ORM\EntityManagerInterface: '@doctrine.orm.default_entity_manager' lazy: true public: true From 5d376f5273e2307523ff0e029b680a69bd9092b0 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 16 Jan 2024 16:11:42 +0900 Subject: [PATCH 091/113] =?UTF-8?q?=E3=83=97=E3=83=A9=E3=82=B0=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=81=AE=E3=83=AB=E3=83=BC=E3=83=86=E3=82=A3=E3=83=B3?= =?UTF-8?q?=E3=82=B0=E3=81=8C=E8=AA=AD=E3=81=BF=E8=BE=BC=E3=82=81=E3=81=AA?= =?UTF-8?q?=E3=81=84=E4=B8=8D=E5=85=B7=E5=90=88=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Eccube/Kernel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Eccube/Kernel.php b/src/Eccube/Kernel.php index 564370e389f..8a3b36e1ced 100644 --- a/src/Eccube/Kernel.php +++ b/src/Eccube/Kernel.php @@ -201,7 +201,7 @@ protected function configureRoutes(RoutingConfigurator $routes) foreach ($plugins as $plugin) { $dir = $pluginDir.'/'.$plugin.'/Controller'; if (file_exists($dir)) { - $builder = $routes->import($dir, '/', 'annotation'); + $builder = $routes->import($dir,'annotation'); $builder->schemes($scheme); } if (file_exists($pluginDir.'/'.$plugin.'/Resource/config')) { From 7c328ade88c6b9b94df150835542d1ba155edc84 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 17 Jan 2024 09:04:41 +0900 Subject: [PATCH 092/113] Fix "Context: Using short namespace alias "LeagueOAuth2ServerBundle" by calling !! Doctrine\ORM\Configuration::addEntityNamespace" --- codeception/_data/plugins/Bundle-1.0.0/composer.json | 2 +- codeception/_data/plugins/Bundle-1.0.1/composer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/codeception/_data/plugins/Bundle-1.0.0/composer.json b/codeception/_data/plugins/Bundle-1.0.0/composer.json index e8ce7f5bd69..3c79ed02c25 100644 --- a/codeception/_data/plugins/Bundle-1.0.0/composer.json +++ b/codeception/_data/plugins/Bundle-1.0.0/composer.json @@ -5,7 +5,7 @@ "type": "eccube-plugin", "require": { "ec-cube/plugin-installer": "^2.0", - "league/oauth2-server-bundle": "^0.3", + "league/oauth2-server-bundle": "^0.5", "nyholm/psr7": "^1.2", "webonyx/graphql-php": "^14.0" }, diff --git a/codeception/_data/plugins/Bundle-1.0.1/composer.json b/codeception/_data/plugins/Bundle-1.0.1/composer.json index 43a48f0c5a6..51ac2d2a877 100644 --- a/codeception/_data/plugins/Bundle-1.0.1/composer.json +++ b/codeception/_data/plugins/Bundle-1.0.1/composer.json @@ -5,7 +5,7 @@ "type": "eccube-plugin", "require": { "ec-cube/plugin-installer": "^2.0", - "league/oauth2-server-bundle": "^0.3", + "league/oauth2-server-bundle": "^0.5", "nyholm/psr7": "^1.2", "webonyx/graphql-php": "^14.0" }, From c089b520d360a5e06481c4baf0df46b15e8a8f1a Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 17 Jan 2024 09:05:42 +0900 Subject: [PATCH 093/113] Fix "Uncaught Exception: You cannot use "Nyholm\Psr7\Factory\HttplugFactory" as the "php-http/message-factory" package is not installed." --- codeception/_data/plugins/Bundle-1.0.0/composer.json | 1 + codeception/_data/plugins/Bundle-1.0.1/composer.json | 1 + 2 files changed, 2 insertions(+) diff --git a/codeception/_data/plugins/Bundle-1.0.0/composer.json b/codeception/_data/plugins/Bundle-1.0.0/composer.json index 3c79ed02c25..2f1434e0366 100644 --- a/codeception/_data/plugins/Bundle-1.0.0/composer.json +++ b/codeception/_data/plugins/Bundle-1.0.0/composer.json @@ -7,6 +7,7 @@ "ec-cube/plugin-installer": "^2.0", "league/oauth2-server-bundle": "^0.5", "nyholm/psr7": "^1.2", + "php-http/message-factory": "*", "webonyx/graphql-php": "^14.0" }, "extra": { diff --git a/codeception/_data/plugins/Bundle-1.0.1/composer.json b/codeception/_data/plugins/Bundle-1.0.1/composer.json index 51ac2d2a877..d91439220e5 100644 --- a/codeception/_data/plugins/Bundle-1.0.1/composer.json +++ b/codeception/_data/plugins/Bundle-1.0.1/composer.json @@ -7,6 +7,7 @@ "ec-cube/plugin-installer": "^2.0", "league/oauth2-server-bundle": "^0.5", "nyholm/psr7": "^1.2", + "php-http/message-factory": "*", "webonyx/graphql-php": "^14.0" }, "extra": { From 9eb4ccc33bbb2b54eb01b11b5c82f99f589b3700 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 17 Jan 2024 11:51:26 +0900 Subject: [PATCH 094/113] composer update -W --- composer.lock | 747 +++++++++++++++++++++++++------------------------- 1 file changed, 369 insertions(+), 378 deletions(-) diff --git a/composer.lock b/composer.lock index b3052a57244..375cf68380d 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "carbonphp/carbon-doctrine-types", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "67a77972b9f398ae7068dabacc39c08aeee170d5" + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/67a77972b9f398ae7068dabacc39c08aeee170d5", - "reference": "67a77972b9f398ae7068dabacc39c08aeee170d5", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", "shasum": "" }, "require": { @@ -57,7 +57,7 @@ ], "support": { "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.0.0" + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" }, "funding": [ { @@ -73,20 +73,20 @@ "type": "tidelift" } ], - "time": "2023-10-01T14:29:01+00:00" + "time": "2023-12-11T17:09:12+00:00" }, { "name": "composer/ca-bundle", - "version": "1.3.7", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85" + "reference": "b66d11b7479109ab547f9405b97205640b17d385" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/76e46335014860eec1aa5a724799a00a2e47cc85", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/b66d11b7479109ab547f9405b97205640b17d385", + "reference": "b66d11b7479109ab547f9405b97205640b17d385", "shasum": "" }, "require": { @@ -98,7 +98,7 @@ "phpstan/phpstan": "^0.12.55", "psr/log": "^1.0", "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "extra": { @@ -133,7 +133,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.7" + "source": "https://github.com/composer/ca-bundle/tree/1.4.0" }, "funding": [ { @@ -149,7 +149,7 @@ "type": "tidelift" } ], - "time": "2023-08-30T09:31:38+00:00" + "time": "2023-12-18T12:05:55+00:00" }, { "name": "composer/class-map-generator", @@ -226,16 +226,16 @@ }, { "name": "composer/composer", - "version": "2.6.5", + "version": "2.6.6", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33" + "reference": "683557bd2466072777309d039534bb1332d0dda5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/4b0fe89db9e65b1e64df633a992e70a7a215ab33", - "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33", + "url": "https://api.github.com/repos/composer/composer/zipball/683557bd2466072777309d039534bb1332d0dda5", + "reference": "683557bd2466072777309d039534bb1332d0dda5", "shasum": "" }, "require": { @@ -253,7 +253,7 @@ "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.2", "seld/signal-handler": "^2.0", - "symfony/console": "^5.4.11 || ^6.0.11 || ^7", + "symfony/console": "^5.4.11 || ^6.0.11", "symfony/filesystem": "^5.4 || ^6.0 || ^7", "symfony/finder": "^5.4 || ^6.0 || ^7", "symfony/polyfill-php73": "^1.24", @@ -320,7 +320,7 @@ "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", "security": "https://github.com/composer/composer/security/policy", - "source": "https://github.com/composer/composer/tree/2.6.5" + "source": "https://github.com/composer/composer/tree/2.6.6" }, "funding": [ { @@ -336,7 +336,7 @@ "type": "tidelift" } ], - "time": "2023-10-06T08:11:52+00:00" + "time": "2023-12-08T17:32:26+00:00" }, { "name": "composer/metadata-minifier", @@ -1669,16 +1669,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.8", + "version": "2.0.9", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", "shasum": "" }, "require": { @@ -1740,7 +1740,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.8" + "source": "https://github.com/doctrine/inflector/tree/2.0.9" }, "funding": [ { @@ -1756,7 +1756,7 @@ "type": "tidelift" } ], - "time": "2023-06-16T13:40:37+00:00" + "time": "2024-01-15T18:05:13+00:00" }, { "name": "doctrine/instantiator", @@ -1908,16 +1908,16 @@ }, { "name": "doctrine/migrations", - "version": "3.7.1", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "e4e0855ea993d169c8adb50e19b014e64bbdda46" + "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/e4e0855ea993d169c8adb50e19b014e64bbdda46", - "reference": "e4e0855ea993d169c8adb50e19b014e64bbdda46", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/47af29eef49f29ebee545947e8b2a4b3be318c8a", + "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a", "shasum": "" }, "require": { @@ -1990,7 +1990,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.7.1" + "source": "https://github.com/doctrine/migrations/tree/3.7.2" }, "funding": [ { @@ -2006,20 +2006,20 @@ "type": "tidelift" } ], - "time": "2023-11-19T06:55:22+00:00" + "time": "2023-12-05T11:35:05+00:00" }, { "name": "doctrine/orm", - "version": "2.17.1", + "version": "2.17.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1" + "reference": "393679a4795e49b0b3ac317dce84d0f8888f2b77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/1a4fe6e0bb67762370937a7e6cee3da40a9122d1", - "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1", + "url": "https://api.github.com/repos/doctrine/orm/zipball/393679a4795e49b0b3ac317dce84d0f8888f2b77", + "reference": "393679a4795e49b0b3ac317dce84d0f8888f2b77", "shasum": "" }, "require": { @@ -2052,10 +2052,10 @@ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.15.0" + "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "vimeo/psalm": "4.30.0 || 5.16.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -2105,9 +2105,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.17.1" + "source": "https://github.com/doctrine/orm/tree/2.17.2" }, - "time": "2023-11-17T06:25:40+00:00" + "time": "2023-12-20T21:47:52+00:00" }, { "name": "doctrine/persistence", @@ -2487,21 +2487,22 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.40.2", + "version": "v3.47.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "4344562a516b76afe8f2d64b2e52214c30d64ed8" + "reference": "173c60d1eff911c9c54322704623a45561d3241d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4344562a516b76afe8f2d64b2e52214c30d64ed8", - "reference": "4344562a516b76afe8f2d64b2e52214c30d64ed8", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/173c60d1eff911c9c54322704623a45561d3241d", + "reference": "173c60d1eff911c9c54322704623a45561d3241d", "shasum": "" }, "require": { "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", @@ -2526,10 +2527,7 @@ "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpspec/prophecy": "^1.17", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.6", - "symfony/phpunit-bridge": "^6.3.8 || ^7.0", + "phpunit/phpunit": "^9.6 || ^10.5.5", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { @@ -2568,7 +2566,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.40.2" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.47.1" }, "funding": [ { @@ -2576,7 +2574,7 @@ "type": "github" } ], - "time": "2023-12-03T09:21:33+00:00" + "time": "2024-01-16T18:54:21+00:00" }, { "name": "friendsofphp/proxy-manager-lts", @@ -3572,16 +3570,16 @@ }, { "name": "nesbot/carbon", - "version": "2.72.0", + "version": "2.72.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "a6885fcbad2ec4360b0e200ee0da7d9b7c90786b" + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/a6885fcbad2ec4360b0e200ee0da7d9b7c90786b", - "reference": "a6885fcbad2ec4360b0e200ee0da7d9b7c90786b", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", "shasum": "" }, "require": { @@ -3675,20 +3673,20 @@ "type": "tidelift" } ], - "time": "2023-11-28T10:13:25+00:00" + "time": "2023-12-08T23:47:49+00:00" }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -3729,9 +3727,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "phpoption/phpoption", @@ -4519,16 +4517,16 @@ }, { "name": "seld/jsonlint", - "version": "1.10.0", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" + "reference": "76d449a358ece77d6f1d6331c68453e657172202" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/76d449a358ece77d6f1d6331c68453e657172202", + "reference": "76d449a358ece77d6f1d6331c68453e657172202", "shasum": "" }, "require": { @@ -4555,7 +4553,7 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "JSON Linter", @@ -4567,7 +4565,7 @@ ], "support": { "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.1" }, "funding": [ { @@ -4579,7 +4577,7 @@ "type": "tidelift" } ], - "time": "2023-05-11T13:16:46+00:00" + "time": "2023-12-18T13:03:25+00:00" }, { "name": "seld/phar-utils", @@ -4770,16 +4768,16 @@ }, { "name": "setasign/fpdi", - "version": "v2.5.0", + "version": "v2.6.0", "source": { "type": "git", "url": "https://github.com/Setasign/FPDI.git", - "reference": "ecf0459643ec963febfb9a5d529dcd93656006a4" + "reference": "a6db878129ec6c7e141316ee71872923e7f1b7ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDI/zipball/ecf0459643ec963febfb9a5d529dcd93656006a4", - "reference": "ecf0459643ec963febfb9a5d529dcd93656006a4", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/a6db878129ec6c7e141316ee71872923e7f1b7ad", + "reference": "a6db878129ec6c7e141316ee71872923e7f1b7ad", "shasum": "" }, "require": { @@ -4791,8 +4789,8 @@ }, "require-dev": { "phpunit/phpunit": "~5.7", - "setasign/fpdf": "~1.8", - "setasign/tfpdf": "~1.31", + "setasign/fpdf": "~1.8.6", + "setasign/tfpdf": "~1.33", "squizlabs/php_codesniffer": "^3.5", "tecnickcom/tcpdf": "~6.2" }, @@ -4830,7 +4828,7 @@ ], "support": { "issues": "https://github.com/Setasign/FPDI/issues", - "source": "https://github.com/Setasign/FPDI/tree/v2.5.0" + "source": "https://github.com/Setasign/FPDI/tree/v2.6.0" }, "funding": [ { @@ -4838,7 +4836,7 @@ "type": "tidelift" } ], - "time": "2023-09-28T10:46:27+00:00" + "time": "2023-12-11T16:03:32+00:00" }, { "name": "skorp/detect-incompatible-samesite-useragents", @@ -5027,16 +5025,16 @@ }, { "name": "symfony/cache", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a" + "reference": "14a75869bbb41cb35bc5d9d322473928c6f3f978" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/ac2d25f97b17eec6e19760b6b9962a4f7c44356a", - "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a", + "url": "https://api.github.com/repos/symfony/cache/zipball/14a75869bbb41cb35bc5d9d322473928c6f3f978", + "reference": "14a75869bbb41cb35bc5d9d322473928c6f3f978", "shasum": "" }, "require": { @@ -5103,7 +5101,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.0" + "source": "https://github.com/symfony/cache/tree/v6.4.2" }, "funding": [ { @@ -5119,7 +5117,7 @@ "type": "tidelift" } ], - "time": "2023-11-24T19:28:07+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/cache-contracts", @@ -5199,16 +5197,16 @@ }, { "name": "symfony/clock", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "48102bcc56b26d453c7f5e7f72829abc9df25a16" + "reference": "0639710e65f73cc504167958ea29be6de5c7177a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/48102bcc56b26d453c7f5e7f72829abc9df25a16", - "reference": "48102bcc56b26d453c7f5e7f72829abc9df25a16", + "url": "https://api.github.com/repos/symfony/clock/zipball/0639710e65f73cc504167958ea29be6de5c7177a", + "reference": "0639710e65f73cc504167958ea29be6de5c7177a", "shasum": "" }, "require": { @@ -5253,7 +5251,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v6.4.0" + "source": "https://github.com/symfony/clock/tree/v6.4.2" }, "funding": [ { @@ -5269,7 +5267,7 @@ "type": "tidelift" } ], - "time": "2023-10-13T14:46:14+00:00" + "time": "2023-12-27T00:32:33+00:00" }, { "name": "symfony/config", @@ -5348,16 +5346,16 @@ }, { "name": "symfony/console", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd" + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd", - "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd", + "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", "shasum": "" }, "require": { @@ -5422,7 +5420,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.1" + "source": "https://github.com/symfony/console/tree/v6.4.2" }, "funding": [ { @@ -5438,7 +5436,7 @@ "type": "tidelift" } ], - "time": "2023-11-30T10:54:28+00:00" + "time": "2023-12-10T16:15:48+00:00" }, { "name": "symfony/css-selector", @@ -5581,16 +5579,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f88ff6428afbeb17cc648c8003bd608534750baf" + "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f88ff6428afbeb17cc648c8003bd608534750baf", - "reference": "f88ff6428afbeb17cc648c8003bd608534750baf", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/226ea431b1eda6f0d9f5a4b278757171960bb195", + "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195", "shasum": "" }, "require": { @@ -5642,7 +5640,7 @@ "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/v6.4.1" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.2" }, "funding": [ { @@ -5658,7 +5656,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:56:37+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "symfony/deprecation-contracts", @@ -5729,16 +5727,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "bd181daf2851821c3aef20b779d37002cfd2e833" + "reference": "da33f27c1dd9946afecfd1585b867551df71bf53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/bd181daf2851821c3aef20b779d37002cfd2e833", - "reference": "bd181daf2851821c3aef20b779d37002cfd2e833", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/da33f27c1dd9946afecfd1585b867551df71bf53", + "reference": "da33f27c1dd9946afecfd1585b867551df71bf53", "shasum": "" }, "require": { @@ -5817,7 +5815,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.0" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.2" }, "funding": [ { @@ -5833,7 +5831,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:40:20+00:00" + "time": "2023-12-27T00:32:33+00:00" }, { "name": "symfony/dom-crawler", @@ -5904,16 +5902,16 @@ }, { "name": "symfony/dotenv", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f" + "reference": "835f8d2d1022934ac038519de40b88158798c96f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/d0d584a91422ddaa2c94317200d4c4e5b935555f", - "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/835f8d2d1022934ac038519de40b88158798c96f", + "reference": "835f8d2d1022934ac038519de40b88158798c96f", "shasum": "" }, "require": { @@ -5958,7 +5956,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.4.0" + "source": "https://github.com/symfony/dotenv/tree/v6.4.2" }, "funding": [ { @@ -5974,7 +5972,7 @@ "type": "tidelift" } ], - "time": "2023-10-26T18:19:48+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "symfony/error-handler", @@ -6053,16 +6051,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6" + "reference": "e95216850555cd55e71b857eb9d6c2674124603a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6", - "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e95216850555cd55e71b857eb9d6c2674124603a", + "reference": "e95216850555cd55e71b857eb9d6c2674124603a", "shasum": "" }, "require": { @@ -6113,7 +6111,7 @@ "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/v6.4.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.2" }, "funding": [ { @@ -6129,7 +6127,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:52:43+00:00" + "time": "2023-12-27T22:16:42+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -6209,16 +6207,16 @@ }, { "name": "symfony/expression-language", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152" + "reference": "7d63ccd5331d4164961776eced5524e891e30ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152", - "reference": "6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/7d63ccd5331d4164961776eced5524e891e30ad3", + "reference": "7d63ccd5331d4164961776eced5524e891e30ad3", "shasum": "" }, "require": { @@ -6253,7 +6251,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v6.4.0" + "source": "https://github.com/symfony/expression-language/tree/v6.4.2" }, "funding": [ { @@ -6269,7 +6267,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:52:43+00:00" + "time": "2023-12-10T16:15:48+00:00" }, { "name": "symfony/filesystem", @@ -6400,16 +6398,16 @@ }, { "name": "symfony/flex", - "version": "v1.21.2", + "version": "v1.21.4", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "f1cf4014ffac79e0c031cc40d6d66354e7de5da5" + "reference": "7b40eec950ded5de7054f807c209d3c612efe517" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/f1cf4014ffac79e0c031cc40d6d66354e7de5da5", - "reference": "f1cf4014ffac79e0c031cc40d6d66354e7de5da5", + "url": "https://api.github.com/repos/symfony/flex/zipball/7b40eec950ded5de7054f807c209d3c612efe517", + "reference": "7b40eec950ded5de7054f807c209d3c612efe517", "shasum": "" }, "require": { @@ -6445,7 +6443,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.21.2" + "source": "https://github.com/symfony/flex/tree/v1.21.4" }, "funding": [ { @@ -6461,7 +6459,7 @@ "type": "tidelift" } ], - "time": "2023-10-30T18:34:59+00:00" + "time": "2024-01-02T11:08:17+00:00" }, { "name": "symfony/form", @@ -6562,16 +6560,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa" + "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ac22d760bf9ff4440a1b6c7caef34d38b44290aa", - "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c26a221e0462027d1f9d4a802ed63f8ab07a43d0", + "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0", "shasum": "" }, "require": { @@ -6599,7 +6597,7 @@ "symfony/asset": "<5.4", "symfony/asset-mapper": "<6.4", "symfony/clock": "<6.3", - "symfony/console": "<5.4", + "symfony/console": "<5.4|>=7.0", "symfony/dom-crawler": "<6.4", "symfony/dotenv": "<5.4", "symfony/form": "<5.4", @@ -6690,7 +6688,7 @@ "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/v6.4.1" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.2" }, "funding": [ { @@ -6706,20 +6704,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:35:22+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771" + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/44a6d39a9cc11e154547d882d5aac1e014440771", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/172d807f9ef3fc3fbed8377cc57c20d389269271", + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271", "shasum": "" }, "require": { @@ -6767,7 +6765,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.0" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.2" }, "funding": [ { @@ -6783,20 +6781,20 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:41:16+00:00" + "time": "2023-12-27T22:16:42+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b" + "reference": "13e8387320b5942d0dc408440c888e2d526efef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4", + "reference": "13e8387320b5942d0dc408440c888e2d526efef4", "shasum": "" }, "require": { @@ -6880,7 +6878,7 @@ "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/v6.4.1" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.2" }, "funding": [ { @@ -6896,20 +6894,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T17:02:02+00:00" + "time": "2023-12-30T15:31:44+00:00" }, { "name": "symfony/intl", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "41d16f0294b9ca6e5540728580c65cfa3848fbf5" + "reference": "4f45148f7eb984ef12b1f7e123205ab904828839" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/41d16f0294b9ca6e5540728580c65cfa3848fbf5", - "reference": "41d16f0294b9ca6e5540728580c65cfa3848fbf5", + "url": "https://api.github.com/repos/symfony/intl/zipball/4f45148f7eb984ef12b1f7e123205ab904828839", + "reference": "4f45148f7eb984ef12b1f7e123205ab904828839", "shasum": "" }, "require": { @@ -6962,7 +6960,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.4.0" + "source": "https://github.com/symfony/intl/tree/v6.4.2" }, "funding": [ { @@ -6978,20 +6976,20 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:12:08+00:00" + "time": "2023-12-26T18:38:00+00:00" }, { "name": "symfony/lock", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/lock.git", - "reference": "49c2d0ae4777d118edb13f23d0b4f125d7302cb3" + "reference": "e7be7af2ad07f645bb0c9f4533b5b6c46eba1f79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/49c2d0ae4777d118edb13f23d0b4f125d7302cb3", - "reference": "49c2d0ae4777d118edb13f23d0b4f125d7302cb3", + "url": "https://api.github.com/repos/symfony/lock/zipball/e7be7af2ad07f645bb0c9f4533b5b6c46eba1f79", + "reference": "e7be7af2ad07f645bb0c9f4533b5b6c46eba1f79", "shasum": "" }, "require": { @@ -7041,7 +7039,7 @@ "semaphore" ], "support": { - "source": "https://github.com/symfony/lock/tree/v6.4.0" + "source": "https://github.com/symfony/lock/tree/v6.4.2" }, "funding": [ { @@ -7057,20 +7055,20 @@ "type": "tidelift" } ], - "time": "2023-11-21T09:41:01+00:00" + "time": "2023-12-19T09:12:31+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba" + "reference": "6da89e5c9202f129717a770a03183fb140720168" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", - "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", + "url": "https://api.github.com/repos/symfony/mailer/zipball/6da89e5c9202f129717a770a03183fb140720168", + "reference": "6da89e5c9202f129717a770a03183fb140720168", "shasum": "" }, "require": { @@ -7121,7 +7119,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.0" + "source": "https://github.com/symfony/mailer/tree/v6.4.2" }, "funding": [ { @@ -7137,7 +7135,7 @@ "type": "tidelift" } ], - "time": "2023-11-12T18:02:22+00:00" + "time": "2023-12-19T09:12:31+00:00" }, { "name": "symfony/maker-bundle", @@ -8517,16 +8515,16 @@ }, { "name": "symfony/process", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa" + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/191703b1566d97a5425dc969e4350d32b8ef17aa", - "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa", + "url": "https://api.github.com/repos/symfony/process/zipball/c4b1ef0bc80533d87a2e969806172f1c2a980241", + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241", "shasum": "" }, "require": { @@ -8558,7 +8556,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.0" + "source": "https://github.com/symfony/process/tree/v6.4.2" }, "funding": [ { @@ -8574,7 +8572,7 @@ "type": "tidelift" } ], - "time": "2023-11-17T21:06:49+00:00" + "time": "2023-12-22T16:42:54+00:00" }, { "name": "symfony/property-access", @@ -8805,16 +8803,16 @@ }, { "name": "symfony/rate-limiter", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/rate-limiter.git", - "reference": "b598ae785a3b3ee932c1fb638b1df86f0d36f81e" + "reference": "c32471a8ebe613f6856db4b0544fcf5429d12511" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/b598ae785a3b3ee932c1fb638b1df86f0d36f81e", - "reference": "b598ae785a3b3ee932c1fb638b1df86f0d36f81e", + "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/c32471a8ebe613f6856db4b0544fcf5429d12511", + "reference": "c32471a8ebe613f6856db4b0544fcf5429d12511", "shasum": "" }, "require": { @@ -8856,7 +8854,7 @@ "rate-limiter" ], "support": { - "source": "https://github.com/symfony/rate-limiter/tree/v6.4.0" + "source": "https://github.com/symfony/rate-limiter/tree/v6.4.2" }, "funding": [ { @@ -8872,20 +8870,20 @@ "type": "tidelift" } ], - "time": "2023-11-10T07:41:05+00:00" + "time": "2023-12-30T09:55:02+00:00" }, { "name": "symfony/routing", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40" + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/0c95c164fdba18b12523b75e64199ca3503e6d40", - "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40", + "url": "https://api.github.com/repos/symfony/routing/zipball/98eab13a07fddc85766f1756129c69f207ffbc21", + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21", "shasum": "" }, "require": { @@ -8939,7 +8937,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.1" + "source": "https://github.com/symfony/routing/tree/v6.4.2" }, "funding": [ { @@ -8955,20 +8953,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:54:37+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/security-bundle", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e" + "reference": "97d4fb6dbee700937738036ec54b0fcb0641d7d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e", - "reference": "4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/97d4fb6dbee700937738036ec54b0fcb0641d7d6", + "reference": "97d4fb6dbee700937738036ec54b0fcb0641d7d6", "shasum": "" }, "require": { @@ -9051,7 +9049,7 @@ "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/v6.4.0" + "source": "https://github.com/symfony/security-bundle/tree/v6.4.2" }, "funding": [ { @@ -9067,7 +9065,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T14:46:20+00:00" + "time": "2023-12-24T09:11:31+00:00" }, { "name": "symfony/security-core", @@ -9312,16 +9310,16 @@ }, { "name": "symfony/serializer", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f" + "reference": "f87ea9d7bfd4cf2f7b72be554607e6c96e6664af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/7ead272e62c9567df619ef3c49809bf934ddbc1f", - "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f", + "url": "https://api.github.com/repos/symfony/serializer/zipball/f87ea9d7bfd4cf2f7b72be554607e6c96e6664af", + "reference": "f87ea9d7bfd4cf2f7b72be554607e6c96e6664af", "shasum": "" }, "require": { @@ -9390,7 +9388,7 @@ "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/v6.4.1" + "source": "https://github.com/symfony/serializer/tree/v6.4.2" }, "funding": [ { @@ -9406,37 +9404,33 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:54:37+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.2", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1", + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -9446,7 +9440,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9473,7 +9470,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -9489,7 +9486,7 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:29+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/stopwatch", @@ -9555,16 +9552,16 @@ }, { "name": "symfony/string", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809" + "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/b45fcf399ea9c3af543a92edf7172ba21174d809", - "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809", + "url": "https://api.github.com/repos/symfony/string/zipball/7cb80bc10bfcdf6b5492741c0b9357dac66940bc", + "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc", "shasum": "" }, "require": { @@ -9621,7 +9618,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.0" + "source": "https://github.com/symfony/string/tree/v6.4.2" }, "funding": [ { @@ -9637,7 +9634,7 @@ "type": "tidelift" } ], - "time": "2023-11-28T20:41:49+00:00" + "time": "2023-12-10T16:15:48+00:00" }, { "name": "symfony/templating", @@ -9707,16 +9704,16 @@ }, { "name": "symfony/translation", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37" + "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", - "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", + "url": "https://api.github.com/repos/symfony/translation/zipball/a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", + "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", "shasum": "" }, "require": { @@ -9782,7 +9779,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.0" + "source": "https://github.com/symfony/translation/tree/v6.4.2" }, "funding": [ { @@ -9798,20 +9795,20 @@ "type": "tidelift" } ], - "time": "2023-11-29T08:14:36+00:00" + "time": "2023-12-18T09:25:29+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", "shasum": "" }, "require": { @@ -9860,7 +9857,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -9876,20 +9873,20 @@ "type": "tidelift" } ], - "time": "2023-07-25T15:08:44+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/twig-bridge", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf" + "reference": "97af829e4733125ee70e806694d56165c60b4ee1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", - "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/97af829e4733125ee70e806694d56165c60b4ee1", + "reference": "97af829e4733125ee70e806694d56165c60b4ee1", "shasum": "" }, "require": { @@ -9969,7 +9966,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.0" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.2" }, "funding": [ { @@ -9985,7 +9982,7 @@ "type": "tidelift" } ], - "time": "2023-11-25T08:25:13+00:00" + "time": "2023-12-15T12:36:48+00:00" }, { "name": "symfony/twig-bundle", @@ -10073,16 +10070,16 @@ }, { "name": "symfony/validator", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c" + "reference": "15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c", - "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c", + "url": "https://api.github.com/repos/symfony/validator/zipball/15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c", + "reference": "15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c", "shasum": "" }, "require": { @@ -10149,7 +10146,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.0" + "source": "https://github.com/symfony/validator/tree/v6.4.2" }, "funding": [ { @@ -10165,20 +10162,20 @@ "type": "tidelift" } ], - "time": "2023-11-29T07:47:42+00:00" + "time": "2023-12-29T16:34:12+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", "shasum": "" }, "require": { @@ -10234,7 +10231,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.2" }, "funding": [ { @@ -10250,20 +10247,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:28:32+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9" + "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2d08ca6b9cc704dce525615d1e6d1788734f36d9", - "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/5fe9a0021b8d35e67d914716ec8de50716a68e7e", + "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e", "shasum": "" }, "require": { @@ -10309,7 +10306,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.1" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.2" }, "funding": [ { @@ -10325,20 +10322,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T10:32:10+00:00" + "time": "2023-12-27T08:18:35+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "14752d3fb77c3c69b6cee7c03c06e2d6494a196b" + "reference": "38462d16856740ec0d1ba2cb902eebf09100dde2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/14752d3fb77c3c69b6cee7c03c06e2d6494a196b", - "reference": "14752d3fb77c3c69b6cee7c03c06e2d6494a196b", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/38462d16856740ec0d1ba2cb902eebf09100dde2", + "reference": "38462d16856740ec0d1ba2cb902eebf09100dde2", "shasum": "" }, "require": { @@ -10391,7 +10388,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.0" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.2" }, "funding": [ { @@ -10407,20 +10404,20 @@ "type": "tidelift" } ], - "time": "2023-11-07T14:57:07+00:00" + "time": "2023-12-27T08:18:35+00:00" }, { "name": "symfony/workflow", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/workflow.git", - "reference": "06bcb0385811a604131eab6187b04e66844c9b03" + "reference": "ddfd72ed1eaadae99b362ee011d46bf97409c506" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/workflow/zipball/06bcb0385811a604131eab6187b04e66844c9b03", - "reference": "06bcb0385811a604131eab6187b04e66844c9b03", + "url": "https://api.github.com/repos/symfony/workflow/zipball/ddfd72ed1eaadae99b362ee011d46bf97409c506", + "reference": "ddfd72ed1eaadae99b362ee011d46bf97409c506", "shasum": "" }, "require": { @@ -10479,7 +10476,7 @@ "workflow" ], "support": { - "source": "https://github.com/symfony/workflow/tree/v6.4.1" + "source": "https://github.com/symfony/workflow/tree/v6.4.2" }, "funding": [ { @@ -10495,7 +10492,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T08:06:02+00:00" + "time": "2023-12-21T11:19:27+00:00" }, { "name": "symfony/yaml", @@ -10643,27 +10640,27 @@ }, { "name": "twig/extra-bundle", - "version": "v3.7.1", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3" + "reference": "32807183753de0388c8e59f7ac2d13bb47311140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", - "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/32807183753de0388c8e59f7ac2d13bb47311140", + "reference": "32807183753de0388c8e59f7ac2d13bb47311140", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/framework-bundle": "^5.4|^6.0", - "symfony/twig-bundle": "^5.4|^6.0", - "twig/twig": "^2.7|^3.0" + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "twig/twig": "^3.0" }, "require-dev": { "league/commonmark": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4|^6.3", + "symfony/phpunit-bridge": "^6.4|^7.0", "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^2.12|^3.0", "twig/html-extra": "^2.12|^3.0", @@ -10701,7 +10698,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.7.1" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.8.0" }, "funding": [ { @@ -10713,29 +10710,29 @@ "type": "tidelift" } ], - "time": "2023-07-29T15:34:56+00:00" + "time": "2023-11-21T14:02:01+00:00" }, { "name": "twig/intl-extra", - "version": "v3.7.1", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "4f4fe572f635534649cc069e1dafe4a8ad63774d" + "reference": "7b3db67c700735f473a265a97e1adaeba3e6ca0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/4f4fe572f635534649cc069e1dafe4a8ad63774d", - "reference": "4f4fe572f635534649cc069e1dafe4a8ad63774d", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/7b3db67c700735f473a265a97e1adaeba3e6ca0c", + "reference": "7b3db67c700735f473a265a97e1adaeba3e6ca0c", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/intl": "^5.4|^6.0", - "twig/twig": "^2.7|^3.0" + "php": ">=7.2.5", + "symfony/intl": "^5.4|^6.0|^7.0", + "twig/twig": "^3.0" }, "require-dev": { - "symfony/phpunit-bridge": "^5.4|^6.3" + "symfony/phpunit-bridge": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -10765,7 +10762,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.7.1" + "source": "https://github.com/twigphp/intl-extra/tree/v3.8.0" }, "funding": [ { @@ -10777,7 +10774,7 @@ "type": "tidelift" } ], - "time": "2023-07-29T15:34:56+00:00" + "time": "2023-11-21T17:27:48+00:00" }, { "name": "twig/twig", @@ -11051,16 +11048,16 @@ }, { "name": "codeception/codeception", - "version": "5.0.12", + "version": "5.0.13", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4" + "reference": "713a90195efa2926566e24bfc623da703ff42bba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", - "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/713a90195efa2926566e24bfc623da703ff42bba", + "reference": "713a90195efa2926566e24bfc623da703ff42bba", "shasum": "" }, "require": { @@ -11075,15 +11072,15 @@ "phpunit/php-text-template": "^2.0 || ^3.0", "phpunit/php-timer": "^5.0.3 || ^6.0", "phpunit/phpunit": "^9.5.20 || ^10.0", - "psy/psysh": "^0.11.2", + "psy/psysh": "^0.11.2 || ^0.12", "sebastian/comparator": "^4.0.5 || ^5.0", "sebastian/diff": "^4.0.3 || ^5.0", - "symfony/console": ">=4.4.24 <7.0", - "symfony/css-selector": ">=4.4.24 <7.0", - "symfony/event-dispatcher": ">=4.4.24 <7.0", - "symfony/finder": ">=4.4.24 <7.0", - "symfony/var-dumper": ">=4.4.24 < 7.0", - "symfony/yaml": ">=4.4.24 <7.0" + "symfony/console": ">=4.4.24 <8.0", + "symfony/css-selector": ">=4.4.24 <8.0", + "symfony/event-dispatcher": ">=4.4.24 <8.0", + "symfony/finder": ">=4.4.24 <8.0", + "symfony/var-dumper": ">=4.4.24 <8.0", + "symfony/yaml": ">=4.4.24 <8.0" }, "conflict": { "codeception/lib-innerbrowser": "<3.1.3", @@ -11104,8 +11101,8 @@ "codeception/util-universalframework": "*@dev", "ext-simplexml": "*", "jetbrains/phpstorm-attributes": "^1.0", - "symfony/dotenv": ">=4.4.24 <7.0", - "symfony/process": ">=4.4.24 <7.0", + "symfony/dotenv": ">=4.4.24 <8.0", + "symfony/process": ">=4.4.24 <8.0", "vlucas/phpdotenv": "^5.1" }, "suggest": { @@ -11155,7 +11152,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/5.0.12" + "source": "https://github.com/Codeception/Codeception/tree/5.0.13" }, "funding": [ { @@ -11163,7 +11160,7 @@ "type": "open_collective" } ], - "time": "2023-10-15T18:04:50+00:00" + "time": "2023-12-22T19:32:40+00:00" }, { "name": "codeception/lib-asserts", @@ -11280,16 +11277,16 @@ }, { "name": "codeception/lib-web", - "version": "1.0.4", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/Codeception/lib-web.git", - "reference": "28cb2ed1169de18e720bec758015aadc37d8344c" + "reference": "cea9d53c9cd665498632acc417c9a96bff7eb2b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-web/zipball/28cb2ed1169de18e720bec758015aadc37d8344c", - "reference": "28cb2ed1169de18e720bec758015aadc37d8344c", + "url": "https://api.github.com/repos/Codeception/lib-web/zipball/cea9d53c9cd665498632acc417c9a96bff7eb2b0", + "reference": "cea9d53c9cd665498632acc417c9a96bff7eb2b0", "shasum": "" }, "require": { @@ -11327,22 +11324,22 @@ ], "support": { "issues": "https://github.com/Codeception/lib-web/issues", - "source": "https://github.com/Codeception/lib-web/tree/1.0.4" + "source": "https://github.com/Codeception/lib-web/tree/1.0.5" }, - "time": "2023-12-01T11:38:22+00:00" + "time": "2024-01-13T11:54:18+00:00" }, { "name": "codeception/lib-xml", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/Codeception/lib-xml.git", - "reference": "d6e4c094fb83958bcf254a20815cea5ac31e98d0" + "reference": "4eabf029ff5e40c7e8a16b6db2fe9bbb9244d162" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-xml/zipball/d6e4c094fb83958bcf254a20815cea5ac31e98d0", - "reference": "d6e4c094fb83958bcf254a20815cea5ac31e98d0", + "url": "https://api.github.com/repos/Codeception/lib-xml/zipball/4eabf029ff5e40c7e8a16b6db2fe9bbb9244d162", + "reference": "4eabf029ff5e40c7e8a16b6db2fe9bbb9244d162", "shasum": "" }, "require": { @@ -11350,7 +11347,7 @@ "ext-dom": "*", "php": "^8.0", "phpunit/phpunit": "^9.5 | ^10.0", - "symfony/css-selector": ">=4.4.24 <7.0" + "symfony/css-selector": ">=4.4.24 <8.0" }, "conflict": { "codeception/codeception": "<5.0.0-alpha3" @@ -11377,9 +11374,9 @@ ], "support": { "issues": "https://github.com/Codeception/lib-xml/issues", - "source": "https://github.com/Codeception/lib-xml/tree/1.0.1" + "source": "https://github.com/Codeception/lib-xml/tree/1.0.2" }, - "time": "2022-09-11T14:09:09+00:00" + "time": "2023-12-08T19:31:41+00:00" }, { "name": "codeception/module-asserts", @@ -11440,16 +11437,16 @@ }, { "name": "codeception/module-phpbrowser", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/Codeception/module-phpbrowser.git", - "reference": "8e1fdcc85e182e6b61399b35a35a562862c3be62" + "reference": "a972411f60cd00d00d5e5e3b35496ba4a23bcffc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/8e1fdcc85e182e6b61399b35a35a562862c3be62", - "reference": "8e1fdcc85e182e6b61399b35a35a562862c3be62", + "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/a972411f60cd00d00d5e5e3b35496ba4a23bcffc", + "reference": "a972411f60cd00d00d5e5e3b35496ba4a23bcffc", "shasum": "" }, "require": { @@ -11458,7 +11455,7 @@ "ext-json": "*", "guzzlehttp/guzzle": "^7.4", "php": "^8.0", - "symfony/browser-kit": "^5.4 || ^6.0" + "symfony/browser-kit": "^5.4 || ^6.0 || ^7.0" }, "conflict": { "codeception/codeception": "<5.0", @@ -11499,9 +11496,9 @@ ], "support": { "issues": "https://github.com/Codeception/module-phpbrowser/issues", - "source": "https://github.com/Codeception/module-phpbrowser/tree/3.0.0" + "source": "https://github.com/Codeception/module-phpbrowser/tree/3.0.1" }, - "time": "2022-02-19T18:22:27+00:00" + "time": "2023-12-08T19:41:28+00:00" }, { "name": "codeception/module-rest", @@ -11734,16 +11731,16 @@ }, { "name": "fakerphp/faker", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { @@ -11769,11 +11766,6 @@ "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.21-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -11796,9 +11788,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" }, - "time": "2023-06-12T08:44:38+00:00" + "time": "2024-01-02T13:46:09+00:00" }, { "name": "mikey179/vfsstream", @@ -12089,16 +12081,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.47", + "version": "1.10.56", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39" + "reference": "27816a01aea996191ee14d010f325434c0ee76fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/84dbb33b520ea28b6cf5676a3941f4bae1c1ff39", - "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/27816a01aea996191ee14d010f325434c0ee76fa", + "reference": "27816a01aea996191ee14d010f325434c0ee76fa", "shasum": "" }, "require": { @@ -12147,27 +12139,27 @@ "type": "tidelift" } ], - "time": "2023-12-01T15:19:17+00:00" + "time": "2024-01-15T10:43:00+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.29", + "version": "9.2.30", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089", + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -12217,7 +12209,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30" }, "funding": [ { @@ -12225,7 +12217,7 @@ "type": "github" } ], - "time": "2023-09-19T04:57:46+00:00" + "time": "2023-12-22T06:47:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -12573,25 +12565,25 @@ }, { "name": "psy/psysh", - "version": "v0.11.22", + "version": "v0.12.0", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/750bf031a48fd07c673dbe3f11f72362ea306d0d", + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" }, "conflict": { "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" @@ -12602,8 +12594,7 @@ "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ "bin/psysh" @@ -12611,7 +12602,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-0.11": "0.11.x-dev" + "dev-main": "0.12.x-dev" }, "bamarni-bin": { "bin-links": false, @@ -12647,9 +12638,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.22" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.0" }, - "time": "2023-10-14T21:56:36+00:00" + "time": "2023-12-20T15:28:09+00:00" }, { "name": "sebastian/cli-parser", @@ -12894,20 +12885,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -12939,7 +12930,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -12947,7 +12938,7 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/environment", @@ -13155,20 +13146,20 @@ }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -13200,7 +13191,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -13208,7 +13199,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -13619,16 +13610,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95" + "reference": "bd0455b7888e4adac29cf175d819c51f88fed942" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cca5373a41d45edbeaf38b7b67f376da2205ff95", - "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/bd0455b7888e4adac29cf175d819c51f88fed942", + "reference": "bd0455b7888e4adac29cf175d819c51f88fed942", "shasum": "" }, "require": { @@ -13680,7 +13671,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.1" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.2" }, "funding": [ { @@ -13696,7 +13687,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T09:25:07+00:00" + "time": "2023-12-19T09:12:31+00:00" }, { "name": "symfony/polyfill-iconv", From a5cae46f5bbee34a81e54d4eba61597f73e219fe Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 17 Jan 2024 11:51:56 +0900 Subject: [PATCH 095/113] =?UTF-8?q?TODO=20=E3=83=97=E3=83=A9=E3=82=B0?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=81=AE=E4=BF=AE=E6=AD=A3=E3=81=8C=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E3=81=AA=E3=81=9F=E3=82=81=E3=82=B9=E3=82=AD=E3=83=83?= =?UTF-8?q?=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deny-test.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/deny-test.yml b/.github/workflows/deny-test.yml index b6fa45013aa..e2af405ebe1 100644 --- a/.github/workflows/deny-test.yml +++ b/.github/workflows/deny-test.yml @@ -59,15 +59,15 @@ jobs: DATABASE_URL: postgres://postgres:password@127.0.0.1:5432/eccube_db DATABASE_SERVER_VERSION: 14 run: | - bin/console eccube:composer:require "ec-cube/recommend42" - bin/console eccube:composer:require "ec-cube/coupon42" - bin/console eccube:composer:require "ec-cube/mailmagazine42" - bin/console eccube:composer:require "ec-cube/salesreport42" - bin/console eccube:composer:require "ec-cube/relatedproduct42" - bin/console eccube:composer:require "ec-cube/securitychecker42" - bin/console eccube:composer:require "ec-cube/productreview42" - bin/console eccube:composer:require "ec-cube/api42" - bin/console eccube:composer:require "ec-cube/sitekit42" + # bin/console eccube:composer:require "ec-cube/recommend42" + # bin/console eccube:composer:require "ec-cube/coupon42" + # bin/console eccube:composer:require "ec-cube/mailmagazine42" + # bin/console eccube:composer:require "ec-cube/salesreport42" + # bin/console eccube:composer:require "ec-cube/relatedproduct42" + # bin/console eccube:composer:require "ec-cube/securitychecker42" + # bin/console eccube:composer:require "ec-cube/productreview42" + # bin/console eccube:composer:require "ec-cube/api42" + # bin/console eccube:composer:require "ec-cube/sitekit42" - name: Pre Install Plugins env: @@ -93,7 +93,7 @@ jobs: docker cp ../eccube.tar.gz eccube:/tmp/ docker exec -w /tmp eccube bash -c "rm -rf /var/www/html; tar xf /tmp/eccube.tar.gz -C /var/www; mv /var/www/ec-cube /var/www/html; chown -R www-data: /var/www/html" docker exec -u www-data eccube bin/console eccube:install -n - docker exec -u www-data eccube bash -c 'for code in Api42 Coupon42 MailMagazine42 ProductReview42 Recommend42 RelatedProduct42 SalesReport42 Securitychecker42 SiteKit42; do bin/console eccube:plugin:enable --code $code; done' + # docker exec -u www-data eccube bash -c 'for code in Api42 Coupon42 MailMagazine42 ProductReview42 Recommend42 RelatedProduct42 SalesReport42 Securitychecker42 SiteKit42; do bin/console eccube:plugin:enable --code $code; done' - name: setup-chromedriver uses: nanasess/setup-chromedriver@master From 1ee1283fef5303db5ff260abbb74df802883ba6a Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Thu, 18 Jan 2024 13:37:59 +0900 Subject: [PATCH 096/113] =?UTF-8?q?=E5=AE=9F=E8=A1=8C=E6=99=82=E9=96=93?= =?UTF-8?q?=E3=81=AB=E5=BD=B1=E9=9F=BF=E3=81=99=E3=82=8B=E3=81=9F=E3=82=81?= =?UTF-8?q?=E3=80=81=E3=83=86=E3=82=B9=E3=83=88=E6=99=82=E3=81=AF=E6=9C=80?= =?UTF-8?q?=E5=B0=8F=E3=81=AE=E3=82=B3=E3=82=B9=E3=83=88=E3=81=AB=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/eccube/packages/test/security.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 app/config/eccube/packages/test/security.yml diff --git a/app/config/eccube/packages/test/security.yml b/app/config/eccube/packages/test/security.yml new file mode 100644 index 00000000000..e77ec9f44bf --- /dev/null +++ b/app/config/eccube/packages/test/security.yml @@ -0,0 +1,18 @@ +security: + password_hashers: + Eccube\Entity\Customer: + algorithm: 'auto' + iterations: 1 + cost: 4 + memory_cost: 10 + time_cost: 3 + migrate_from: + - legacy + Eccube\Entity\Member: + algorithm: 'auto' + iterations: 1 + cost: 4 + memory_cost: 10 + time_cost: 3 + migrate_from: + - legacy From 11c7a0ea6db97d8f90a38e86735efa6f3b9de61b Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 24 Jan 2024 08:17:39 +0900 Subject: [PATCH 097/113] =?UTF-8?q?PHP7.3=E3=81=AE=E5=88=86=E5=B2=90?= =?UTF-8?q?=E3=81=AF=E4=B8=8D=E8=A6=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SameSiteNoneCompatSessionHandler.php | 38 ++++++------------- 1 file changed, 12 insertions(+), 26 deletions(-) diff --git a/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php b/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php index 22ba9966da3..bbe79f48bd9 100644 --- a/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php +++ b/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php @@ -26,8 +26,6 @@ class SameSiteNoneCompatSessionHandler extends StrictSessionHandler private $doDestroy; /** @var string */ private $sessionName; - /** @var string|null */ - private $prefetchData; /** @var string */ private $newSessionId; @@ -95,9 +93,6 @@ protected function doWrite($sessionId, $data): bool #[\ReturnTypeWillChange] public function destroy($sessionId): bool { - if (\PHP_VERSION_ID < 70000) { - $this->prefetchData = null; - } if (!headers_sent() && filter_var(ini_get('session.use_cookies'), FILTER_VALIDATE_BOOLEAN)) { if (!$this->sessionName) { throw new \LogicException(sprintf('Session name cannot be empty, did you forget to call "parent::open()" in "%s"?.', \get_class($this))); @@ -126,20 +121,16 @@ public function destroy($sessionId): bool header($h, false); } } else { - if (\PHP_VERSION_ID < 70300) { - setcookie($this->sessionName, '', 0, ini_get('session.cookie_path'), ini_get('session.cookie_domain'), filter_var(ini_get('session.cookie_secure'), FILTER_VALIDATE_BOOLEAN), filter_var(ini_get('session.cookie_httponly'), FILTER_VALIDATE_BOOLEAN)); - } else { - setcookie($this->sessionName, '', - [ - 'expires' => 0, - 'path' => $this->getCookiePath(), - 'domain' => ini_get('session.cookie_domain'), - 'secure' => filter_var(ini_get('session.cookie_secure'), FILTER_VALIDATE_BOOLEAN), - 'httponly' => filter_var(ini_get('session.cookie_httponly'), FILTER_VALIDATE_BOOLEAN), - 'samesite' => $this->getCookieSameSite(), - ] - ); - } + setcookie($this->sessionName, '', + [ + 'expires' => 0, + 'path' => $this->getCookiePath(), + 'domain' => ini_get('session.cookie_domain'), + 'secure' => filter_var(ini_get('session.cookie_secure'), FILTER_VALIDATE_BOOLEAN), + 'httponly' => filter_var(ini_get('session.cookie_httponly'), FILTER_VALIDATE_BOOLEAN), + 'samesite' => $this->getCookieSameSite(), + ] + ); } } @@ -178,7 +169,7 @@ public function gc($maxlifetime): int|false */ public function getCookieSameSite() { - if ($this->shouldSendSameSiteNone() && \PHP_VERSION_ID >= 70300 && $this->getCookieSecure()) { + if ($this->shouldSendSameSiteNone() && $this->getCookieSecure()) { return Cookie::SAMESITE_NONE; } @@ -190,12 +181,7 @@ public function getCookieSameSite() */ public function getCookiePath() { - $cookiePath = env('ECCUBE_COOKIE_PATH', '/'); - if ($this->shouldSendSameSiteNone() && \PHP_VERSION_ID < 70300 && $this->getCookieSecure()) { - return $cookiePath.'; SameSite='.Cookie::SAMESITE_NONE; - } - - return $cookiePath; + return env('ECCUBE_COOKIE_PATH', '/'); } /** From 84dac3e84de82f790e8f9eb1beb5e3261481efa3 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 24 Jan 2024 08:20:27 +0900 Subject: [PATCH 098/113] composer update -W --- composer.lock | 68 +++++++++++++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/composer.lock b/composer.lock index 375cf68380d..669e584d9f3 100644 --- a/composer.lock +++ b/composer.lock @@ -1121,16 +1121,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.2", + "version": "3.7.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" + "reference": "ce594cbc39a4866c544f1a970d285ff0548221ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/ce594cbc39a4866c544f1a970d285ff0548221ad", + "reference": "ce594cbc39a4866c544f1a970d285ff0548221ad", "shasum": "" }, "require": { @@ -1146,14 +1146,14 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.42", + "phpstan/phpstan": "1.10.56", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.13", + "phpunit/phpunit": "9.6.15", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", + "squizlabs/php_codesniffer": "3.8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" }, "suggest": { @@ -1214,7 +1214,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.2" + "source": "https://github.com/doctrine/dbal/tree/3.7.3" }, "funding": [ { @@ -1230,7 +1230,7 @@ "type": "tidelift" } ], - "time": "2023-11-19T08:06:58+00:00" + "time": "2024-01-21T07:53:09+00:00" }, { "name": "doctrine/deprecations", @@ -2010,16 +2010,16 @@ }, { "name": "doctrine/orm", - "version": "2.17.2", + "version": "2.17.3", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "393679a4795e49b0b3ac317dce84d0f8888f2b77" + "reference": "398ab0547aaf90bdb352b560a94c24f44ff00670" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/393679a4795e49b0b3ac317dce84d0f8888f2b77", - "reference": "393679a4795e49b0b3ac317dce84d0f8888f2b77", + "url": "https://api.github.com/repos/doctrine/orm/zipball/398ab0547aaf90bdb352b560a94c24f44ff00670", + "reference": "398ab0547aaf90bdb352b560a94c24f44ff00670", "shasum": "" }, "require": { @@ -2105,9 +2105,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.17.2" + "source": "https://github.com/doctrine/orm/tree/2.17.3" }, - "time": "2023-12-20T21:47:52+00:00" + "time": "2024-01-16T21:32:04+00:00" }, { "name": "doctrine/persistence", @@ -2487,16 +2487,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.47.1", + "version": "v3.48.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "173c60d1eff911c9c54322704623a45561d3241d" + "reference": "a92472c6fb66349de25211f31c77eceae3df024e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/173c60d1eff911c9c54322704623a45561d3241d", - "reference": "173c60d1eff911c9c54322704623a45561d3241d", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a92472c6fb66349de25211f31c77eceae3df024e", + "reference": "a92472c6fb66349de25211f31c77eceae3df024e", "shasum": "" }, "require": { @@ -2566,7 +2566,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.47.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.48.0" }, "funding": [ { @@ -2574,7 +2574,7 @@ "type": "github" } ], - "time": "2024-01-16T18:54:21+00:00" + "time": "2024-01-19T21:44:39+00:00" }, { "name": "friendsofphp/proxy-manager-lts", @@ -3570,16 +3570,16 @@ }, { "name": "nesbot/carbon", - "version": "2.72.1", + "version": "2.72.2", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" + "reference": "3e7edc41b58d65509baeb0d4a14c8fa41d627130" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", - "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/3e7edc41b58d65509baeb0d4a14c8fa41d627130", + "reference": "3e7edc41b58d65509baeb0d4a14c8fa41d627130", "shasum": "" }, "require": { @@ -3673,7 +3673,7 @@ "type": "tidelift" } ], - "time": "2023-12-08T23:47:49+00:00" + "time": "2024-01-19T00:21:53+00:00" }, { "name": "nikic/php-parser", @@ -12462,16 +12462,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.15", + "version": "9.6.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f", + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f", "shasum": "" }, "require": { @@ -12545,7 +12545,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16" }, "funding": [ { @@ -12561,7 +12561,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:55:19+00:00" + "time": "2024-01-19T07:03:14+00:00" }, { "name": "psy/psysh", From 8898249e5b7b3fa49cd06370efc0a700213a083e Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 24 Jan 2024 08:34:11 +0900 Subject: [PATCH 099/113] update npm packages --- package-lock.json | 128 ++++++++++++++++++++++++---------------------- package.json | 20 ++++---- 2 files changed, 77 insertions(+), 71 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2d71ec8a78b..62916b55ef7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,23 +10,23 @@ "license": "GPL-2.0", "dependencies": { "@babel/polyfill": "^7.12.1", - "@popperjs/core": "^2.11.5", - "ace-builds": "^1.5.1", - "bootstrap": "^5.1.3", - "chart.js": "^3.8.2", - "css-loader": "^6.7.1", + "@popperjs/core": "^2.11.8", + "ace-builds": "^1.32.3", + "bootstrap": "^5.3.2", + "chart.js": "^3.9.1", + "css-loader": "^6.9.1", "file-loader": "^6.2.0", - "filepond": "^4.30.4", - "filepond-plugin-file-validate-size": "^2.2.7", + "filepond": "^4.30.6", + "filepond-plugin-file-validate-size": "^2.2.8", "filepond-plugin-file-validate-type": "^1.2.8", - "filepond-plugin-image-preview": "^4.6.11", - "jquery": "3", + "filepond-plugin-image-preview": "^4.6.12", + "jquery": "^3.7.1", "jquery-ui": "^1.13.2", "jquery.qrcode": "^1.0.3", "ladda": "^2.0.3", "slick-carousel": "^1.8.1", "spin.js": "^4.1.1", - "style-loader": "^3.3.1", + "style-loader": "^3.3.4", "url-loader": "^4.1.1" }, "devDependencies": { @@ -2156,9 +2156,9 @@ } }, "node_modules/@popperjs/core": { - "version": "2.11.5", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", - "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -2409,9 +2409,9 @@ } }, "node_modules/ace-builds": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.5.1.tgz", - "integrity": "sha512-2G313uyM7lfqZgCs6xCW4QPeuX2GZKaCyRqKhTC2mBeZqC7TjkTXguKRyLzsAIMLJfj3koq98RXCBoemoZVAnQ==" + "version": "1.32.3", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.32.3.tgz", + "integrity": "sha512-ptSTUmDEU+LuwGiPY3/qQPmmAWE27vuv5sASL8swLRyLGJb7Ye7a8MrJ4NnAkFh1sJgVUqKTEGWRRFDmqYPw2Q==" }, "node_modules/acorn": { "version": "8.8.2", @@ -3055,15 +3055,21 @@ } }, "node_modules/bootstrap": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - }, + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], "peerDependencies": { - "@popperjs/core": "^2.10.2" + "@popperjs/core": "^2.11.8" } }, "node_modules/brace-expansion": { @@ -3458,9 +3464,9 @@ } }, "node_modules/chart.js": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.8.2.tgz", - "integrity": "sha512-7rqSlHWMUKFyBDOJvmFGW2lxULtcwaPLegDjX/Nu5j6QybY+GCiQkEY+6cqHw62S5tcwXMD8Y+H5OBGoR7d+ZQ==" + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" }, "node_modules/chokidar": { "version": "3.5.3", @@ -4101,18 +4107,18 @@ } }, "node_modules/css-loader": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", - "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.9.1.tgz", + "integrity": "sha512-OzABOh0+26JKFdMzlK6PY1u5Zx8+Ck7CVRlcGNZoY9qwJjdfu2VWFuprTIpPW+Av5TZTVViYWcFQaEEQURLknQ==", "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.4.7", + "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" + "semver": "^7.5.4" }, "engines": { "node": ">= 12.13.0" @@ -5135,14 +5141,14 @@ "optional": true }, "node_modules/filepond": { - "version": "4.30.4", - "resolved": "https://registry.npmjs.org/filepond/-/filepond-4.30.4.tgz", - "integrity": "sha512-FCwsMvG9iiEs6uobdDrTaKsCgsqys0NuLgPPD8n37AYVYBiiDkrPkk9MSIU5rT2FahYcL1bScYI9huIPtlzqyA==" + "version": "4.30.6", + "resolved": "https://registry.npmjs.org/filepond/-/filepond-4.30.6.tgz", + "integrity": "sha512-gBsVKJgr5HFTkQSA/3R6utne4Qt6Pue0O3+k3IjjVBbaQxMgGMI0fXwoob9SdRRoULCs8BAhWjttM28hOAi/0w==" }, "node_modules/filepond-plugin-file-validate-size": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/filepond-plugin-file-validate-size/-/filepond-plugin-file-validate-size-2.2.7.tgz", - "integrity": "sha512-I3yWDgzu8J3cfxeeUXT4O9zVqq7GcpQ5BAl4//E1p8DB0DV441HVtg0/kPrAvIwmO9bSTeiuQDr+n+Q4rg9yZA==", + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/filepond-plugin-file-validate-size/-/filepond-plugin-file-validate-size-2.2.8.tgz", + "integrity": "sha512-yzb8scATmkWqPTP7oKQz6L8WwJm6Xmgc/fuq6DFGRaLz0I7372BUvBsxagBk/hypMIjvieNzhggm33Y60x3rcw==", "peerDependencies": { "filepond": ">=3.1.2 <5.x" } @@ -5156,9 +5162,9 @@ } }, "node_modules/filepond-plugin-image-preview": { - "version": "4.6.11", - "resolved": "https://registry.npmjs.org/filepond-plugin-image-preview/-/filepond-plugin-image-preview-4.6.11.tgz", - "integrity": "sha512-0EmQ9HnOb/X0xc5rLcNRhhmdUbp7oiicRwQrcr90ZfVmPJOOZoX3ZGUEsEPj7luMI55huguhcVozdESxtqnuRw==", + "version": "4.6.12", + "resolved": "https://registry.npmjs.org/filepond-plugin-image-preview/-/filepond-plugin-image-preview-4.6.12.tgz", + "integrity": "sha512-Y8ETX5QVV0mbPB0586UH8AUmG9tZg8PuN5bdEAIlZVJFTct5ebViJ7+Am94/VhTPjLqZjBf1zmDq5JU6XRsZKw==", "peerDependencies": { "filepond": ">=4.x <5.x" } @@ -7287,9 +7293,9 @@ } }, "node_modules/jquery": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", - "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" }, "node_modules/jquery-ui": { "version": "1.13.2", @@ -9042,9 +9048,9 @@ } }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", "funding": [ { "type": "opencollective", @@ -9185,9 +9191,9 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -9201,9 +9207,9 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -9229,9 +9235,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -10851,9 +10857,9 @@ } }, "node_modules/style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", "engines": { "node": ">= 12.13.0" }, diff --git a/package.json b/package.json index 466d97ea39b..93271dd0c89 100644 --- a/package.json +++ b/package.json @@ -34,23 +34,23 @@ }, "dependencies": { "@babel/polyfill": "^7.12.1", - "@popperjs/core": "^2.11.5", - "ace-builds": "^1.5.1", - "bootstrap": "^5.1.3", - "chart.js": "^3.8.2", - "css-loader": "^6.7.1", + "@popperjs/core": "^2.11.8", + "ace-builds": "^1.32.3", + "bootstrap": "^5.3.2", + "chart.js": "^3.9.1", + "css-loader": "^6.9.1", "file-loader": "^6.2.0", - "filepond": "^4.30.4", - "filepond-plugin-file-validate-size": "^2.2.7", + "filepond": "^4.30.6", + "filepond-plugin-file-validate-size": "^2.2.8", "filepond-plugin-file-validate-type": "^1.2.8", - "filepond-plugin-image-preview": "^4.6.11", - "jquery": "3", + "filepond-plugin-image-preview": "^4.6.12", + "jquery": "^3.7.1", "jquery-ui": "^1.13.2", "jquery.qrcode": "^1.0.3", "ladda": "^2.0.3", "slick-carousel": "^1.8.1", "spin.js": "^4.1.1", - "style-loader": "^3.3.1", + "style-loader": "^3.3.4", "url-loader": "^4.1.1" }, "devDependencies": { From 1fa82ae44231180b06437e3fd7a18bd869efedb5 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 24 Jan 2024 08:49:34 +0900 Subject: [PATCH 100/113] npm run build --- .../003671ee2a876e7614cd94390e2255b3.js | 1 + .../0078b630bed2938ce03f618c2bcd1363.js | 1 + .../0144de97a3c256f81447e7e7135780e5.js | 1 + .../019e34e85139cfc611bf23efa096c980.js | 1 + .../02174460fe8ff6a6bc19db86543b9600.js | 1 + .../03452373324e7ceaf58e3830eafd1a28.js | 1 + .../03a5f5b2b97a8fc289399d92fba810d0.js | 1 + .../03e5ab5dd6985dc9d42c81a654b83e56.js | 1 + .../0416c21cfe088739209926632a360e3b.js | 1 + .../069a0d6b093e73e820f6a60a91fa614b.js | 1 + .../07397bd479cbc34bc04576b4f15bdf18.js | 1 + .../07567125b93045706d81f17f7d04e262.js | 1 + .../0972f21af3e75388ef55435c0b3b831d.js | 1 + .../0973bb38b2e3efd2a879fd8e81d50fce.js | 1 + .../0b06cbc7edf78b6f2810187262e7630b.js | 1 + .../0bd45b2d490c48c31619072a4fb0eaea.js | 1 + .../0dd9fc97c3dee2275f41cd20ffaea059.js | 1 + .../0e67325b9a04863301e36c0c37947069.js | 1 + .../0f147528a6f36ca40c8b3ec796429f58.js | 1 + .../0f2d1162158745e1093693a3a999932a.js | 1 + .../0fa30731c46fe8b6a54f9752ad0ed7e0.js | 1 + .../0fd64c8920c10008be86572dd6830dc1.js | 1 + .../105b17c6442efb97c18ca2aef3976b06.js | 1 + .../10c464f3f882bfeeefbc0934c2ee9fbe.js | 1 + .../111d9fdb9864abba36298d1a0807fe6d.js | 1 + .../1195816afa4a5e8183857be16a04ae6f.js | 1 + .../119f6c45ea400e3c27e1ce172e4c881d.js | 1 + .../11e3a2a8fb5bcb9d19298a80cafd3f5a.js | 1 + .../135747176621bcc94e9edd0323a81d3c.js | 1 + .../1383530217ac0068c844902d24e18e08.js | 1 + .../1495a3d68b15b8622c53f6688b64809f.js | 1 + .../16c2e1b50af4ba05edaa03c8c9e9d18c.js | 1 + .../1736cea368ae85240f34289307fdf67f.js | 1 + .../17632e1e19e438f431784dfd77e01773.js | 1 + .../1875ecdf54e78b5f07ff1bd944cf794b.js | 1 + .../1c24a68cb472146022d0806ea2505cfb.js | 1 + .../1cc6fc3772824e2f87f10a9c3fad2dae.js | 1 + .../1ce14f2cad9f3c122cb5ccfcd485ffb4.js | 1 + .../1d3796180f854b5d8ab435ab0a1c2c11.js | 1 + .../1dddd8903e00ce9149ded23fb87f6f34.js | 1 + .../1e5fe0a75db78dcabbd4f27c2b084e4b.js | 1 + .../1ed6368e8e20628ad5229329eec28baa.js | 1 + .../1ff1389501159e4846a5133e3b8992d8.js | 1 + .../210aec2722e6416a0349a987260e14a3.js | 1 + .../228ca80abf1ae030cbfe7faaec61913f.js | 1 + .../2302902e10c4afab56e1b864c96070cb.js | 1 + .../23602ad4c88f0f19e7a0a12454ebf556.js | 1 + .../24f97ddd76026815674affbc50ad6169.js | 1 + .../262f489eb59166e1215642b60446d123.js | 1 + .../269732f4c5f6e82ea3246548a9631b47.js | 1 + .../27541d65762f8c71d4d899835aa52cc2.js | 1 + .../275d8f4e0550edce2f3b85b3eaa94e54.js | 1 + .../27846e85433e54a3ec0ab34d62233dc5.js | 1 + .../283970c76db99e2d0d90f0e7c45494f9.js | 1 + .../2a8394955e047270a2a965ec67843989.js | 1 + .../2aa392a501973ebfcea38239a45ed8e7.js | 1 + .../2ad349208b3a727abb3c9f943865a27c.js | 1 + .../2b1b8f8b9e8f1e423a69afd121fd7da9.js | 1 + .../2b5729e073775b8fb827fc8e4725e48a.js | 1 + .../2c3ad366cda02f17520d3369cae64c2c.js | 1 + .../2d2a75e3d01a74b93d07db04df8abe5e.js | 1 + .../2e841e8b77c2a2c00fd71940632bc1e1.js | 1 + .../2f25a4dc442bc9aebc58cae30c50c3e2.js | 1 + .../2f55cddc8eb85b63ee5b4ce0e5488230.js | 1 + .../2fe2904fc024afaf81732563cb83e547.js | 1 + .../2ffb9b6da7e84de9b507215e1bb884e2.js | 1 + .../318dcae1cdcd4733986a93e7a5fab7b8.js | 1 + .../31c610efb1d25afc90853b52ba4cb089.js | 1 + .../328cbf598e9711b0a87c19437b02f80d.js | 1 + .../33b4e371d4983ab56f4db08627119f0b.js | 1 + .../349237ad9565dc823ce7bcb7527ba7ee.js | 1 + .../34b8d1c8a81822685f809c49097b81fc.js | 1 + .../34f99cce131bd7aa65e7a924e2456006.js | 1 + .../363d3bac8dcd9a83332c3758185ce080.js | 1 + .../3645af9e7e929d3abe3255c739e20e84.js | 1 + .../3834f2acef5a5debb2a21ad919272307.js | 1 + .../38b1d18836e38ee7b4deaeba0c35f7b8.js | 1 + .../39fea85ed7dd99d7c6c9e59b7040523f.js | 1 + .../3a1227a65a1fc39ca476c295d1a260a4.js | 1 + .../3a6ca6958d003ae67bb7fefc8713ee93.js | 1 + .../3ac8c7749734990e2d9f81eeca219886.js | 1 + .../3b02cca9e95276a74f3ed2bbc7a64ce6.js | 1 + .../3bf96f8eb1859e2724a4b769af3b5f1e.js | 1 + .../3ea020c57c2bbf457a8497df313b2e5c.js | 1 + .../3eefbe1c009cfd730b2ca6f834367c45.js | 1 + .../3f72490496a86b078aee5dde15a62ed0.js | 1 + .../3f896944a97f002f2146e028ff2eac63.js | 1 + .../414cd2c842fa42bf71e155f870619e00.js | 1 + .../416d18f139ca4fa0305fc56919d40f58.js | 1 + .../425a0207a61f20ee14aba0647379ab47.js | 1 + .../42c556183279bbdaaed3a8a9f9108f58.js | 1 + .../42e0ea6351d45d342caab13cb12f9ea4.js | 1 + .../43139bfbcbce9de597b4985dc1e6a03b.js | 1 + .../432a5982ba3ddf958381d780e1e9a8e2.js | 1 + .../432aff60ba31a74d2120031fdc894775.js | 1 + .../4430c55f023b72fb5e389cee9351b38c.js | 1 + .../44599d9b6202ebebfcdd073edf3562e3.js | 1 + .../44efcea2f84e80cc4092a89796afe886.js | 1 + .../472ba8f81bf8cac86027cb1be4e3b9cd.js | 1 + .../479ec45a8edfe482fae4298d1e9862d2.js | 1 + .../47e4cb297b2c3841ef86ce04a7f5584e.js | 1 + .../47e5776dff3b80ed69ab5947dba33c76.js | 1 + .../492e618a031cfde9c83d699c430de2ac.js | 1 + .../49582665262ff6179b9f3a98adf7ed5c.js | 1 + .../4b692785a8a6340a89e6067274a7583c.js | 1 + .../4bee3a46b8378a7b4ef84492f08abd22.js | 1 + .../4bf6763c5956e3bccbf0373068810ded.js | 1 + .../4d0849c6c9a868c09130600ac68319b3.js | 1 + .../4d0ebf4c528cee9b0cdd3e076e06570b.js | 1 + .../4d156ee0485ab4b40b090a3cd7b995a9.js | 1 + .../4d6d9020e7e5c8d8dee7a5e374355f05.js | 1 + .../4f683c6881e9f8740f5516a85b9eb9da.js | 1 + .../5106411f7468a5ee5b1ee77aed12c0c7.js | 1 + .../52fd09d1713345d9ee64dc7daea9fd6f.js | 1 + .../5348f3cfbe5a63954e7d984f197bbddb.js | 1 + .../5398e3b596fa15df4d84b2aa0464e5c4.js | 1 + .../54a10f3bddad1e6da452fee7124fe846.js | 1 + .../57e14488b13e50ebdb5fdfc7880da683.js | 1 + .../58e7f91772635a5c59bacc975735da6c.js | 1 + .../5a741aab715866cb4d9a55e89dfc8420.js | 1 + .../5cab33610b8d9c1aee4db4672811cb5f.js | 1 + .../5cd4e1282f4409600b942819b7aa4f21.js | 1 + .../5ce650c06c385f9d15621e54c60457c0.js | 1 + .../5cebfc2c3495b6294dcb2a99e5174872.js | 1 + .../5d312b184c1f4565f51247d3c6dbba90.js | 1 + .../5df362c9904925cdf574d9506e4be76d.js | 1 + .../5e8a4f4320a07ae4bb1d8a5cd621d955.js | 1 + .../5f5a93ab1249b7cbdb13d9466febd3a0.js | 1 + .../60190285b6c2243e14184b9e57d48dbb.js | 1 + .../60ede8d7ffdf4c05f2ce51b6d8d2be68.js | 1 + .../6130486ae80b103700a2e1eec0bc5cea.js | 1 + .../622e27eec5f26148f51ccc30315a3deb.js | 1 + .../6250c7594cd66ca91184b5beca293e06.js | 1 + .../62a96977e725e8bc809dc80afe0fedf1.js | 1 + .../6490772da5aecc6cb9e4c625abc74a96.js | 1 + .../65542fa1baa8ef8036ee7ba08456d4b2.js | 1 + .../65e7cf62ca9df32c18b630f31025a401.js | 1 + .../663ffb67b9683a2126410325d1a5a152.js | 1 + .../669c462287be8fa855e0ac003c145b55.js | 1 + .../678f5201c1917429f334b88078ca4174.js | 1 + .../6a1c347ab79a93f3ac01b08c8ccfc827.js | 1 + .../6a851f05f1f4a974e02fe23eac2bad4e.js | 1 + .../6b4b87a54f673cfbb82be45329441bef.js | 1 + .../6bed1b724e74e6bc80688f42bc824d70.js | 1 + .../6c6d192b6860b4508a14c2d04769a35e.js | 1 + .../6d0c0aa17d36cb16bafc76d7376b97f7.js | 1 + .../6e40b726d91e9138d9eaef6fd012c740.js | 1 + .../70289d3b9b2b851df3286e20e40410a6.js | 1 + .../70efbabef77fb217f904f41dbf7fe8bf.js | 1 + .../714763ddd9bd466c95df7b042900bb87.js | 1 + .../7222998c10fabd9c824cf8cf540b3b74.js | 1 + .../724a16861717b5b4f786d24b56b62614.js | 1 + .../7259bceba25ac1476fc775122a63d249.js | 1 + .../742afd6665dee8dafd43661093bdda9d.js | 1 + .../757ef1b870d065a77ce3c182a03d93ad.js | 1 + .../7648d83718f74149cb2db078b19fb7db.js | 1 + .../764b59bdd3a89e14f88c9d63020551a1.js | 1 + .../78632dc7e1875ec8c39416f645e53733.js | 1 + .../79241f85b016a7332f85bb66667459c2.js | 1 + .../7aa17a5a81c83c0f455941b3b286d5da.js | 1 + .../7b839a5c1f6d89538928c8a29003bbda.js | 1 + .../7bc18fc7a7d1323c178aa1846d79fb3c.js | 1 + .../7d64980faff5b041a461fd0ba3e2f3f5.js | 1 + .../7ec97a8161bf26e434d3891f64adb15b.js | 1 + .../7f45be8b3fab8d742afc26fc48a23d2e.js | 1 + .../7f79d4bde67c8013b187889b63e25bce.js | 1 + .../7f9a9efc9ab681fcbf6400e2adb368a9.js | 1 + .../80ddbf4f0fdde4ddba57130e61043017.js | 1 + .../81318a3530fb35d5178eb7a4a13a606f.js | 1 + .../817edb0c6f9d66f9c0027762edb1d797.js | 1 + .../827c1cbf746eacfc23ed2037e4d6359d.js | 1 + .../839e3594798c1942d3c92f9acfaa5f0b.js | 1 + .../83bd353f98aa901411c82b8af58d1296.js | 1 + .../84270e22d4439d15b0d8f392d1338d8e.js | 1 + .../843c762c24f7fac628d8c62519a7b308.js | 1 + .../84abf03cc94d264bb38020b4ac5f76e1.js | 1 + .../84effdea6b72577c780f6621246d2e82.js | 1 + .../852f0ecd7b17e3bfd700a821ff438f7e.js | 1 + .../85a21b12b9b44dbd645c927f6b9f33a2.js | 1 + .../8646c11c7b2b46a2b2becab0d9e549c7.js | 1 + .../875ae58e8015a6d08dbc9d0c04e24638.js | 1 + .../879d6bc1ca1dde95a9a98dc7a2ab0d06.js | 1 + .../87bce6f50196688852142c679227b1b9.js | 1 + .../880ae94877022f7fb0458ced0825eb4c.js | 1 + .../88730abfeb4a23e692ac7933882f12eb.js | 1 + .../88da0e09d486e197aaca5bc3d6350998.js | 1 + .../894052ca1f8f35cc1cf7cfb29ef75027.js | 1 + .../8a31266178067a316bb2503147cdb5cb.js | 1 + .../8a5127228870aafabfff6111d29313d6.js | 1 + .../8b8336037f074d9dcbd20eab535b803f.js | 1 + .../8c7616f0adba6a5ac0d2f06ba4ebd696.js | 1 + .../8ed5aba33ead1f94e97d5c35a5e93434.js | 1 + .../8eede17ae9e4d25c3c17b8a8a7fc3c3d.js | 1 + .../8f9ce72eeabbf31f2d51f4bcfc66d3b0.js | 1 + .../90812d89181b698975cbb081adcbbcb0.js | 1 + .../90f3dc3c18d447104b63c156cb7fddb5.js | 1 + .../91beb08737a1bbf071f351fb0acdbf3c.js | 1 + .../950a205e91da7e78226dd785fd6d34db.js | 1 + .../96b8d8b5efd11741639659c63a485c27.js | 1 + .../972ea4b6ab9d3baeab6d00057cd5f9d3.js | 1 + .../981bd23edacd811f9e4a583d89b544ee.js | 1 + .../9827973b533de05b338533a0211d97d9.js | 1 + .../983fccb9f00748c487e889f6c83aa367.js | 1 + .../9920e03a65566d728a73c7bf18bc5741.js | 1 + .../99add2656ccb006ff11de385c4219f41.js | 1 + .../9b4de1346c73ba258736f1a3f00fdc14.js | 1 + .../9b5a6ec07bb0a2daade10189696fc399.js | 1 + .../9b80d1a12acd18c90e41ca92073122a7.js | 1 + .../9b9578869f378f8e2afbf85a76c0ac72.js | 1 + .../9c20b772fb49e1a6af1d4334059db12a.js | 1 + .../9ebb9ac2c9c875649c72722bc585d445.js | 1 + .../9ed8c3550b5c3c1e878d0692f0338cb7.js | 1 + .../9fa80a5bc14fe8644697fe0dd7b99431.js | 1 + .../9fd3f255cfd09016ec7f4896bc51864c.js | 1 + .../a09aafd5b6029416c0295e513332c7d2.js | 1 + .../a0e32ba94aa4384823d768802b9486e1.js | 1 + .../a223748cd69094dd12b486353b22f479.js | 1 + .../a2746fc96d535b19c120d4b87dc86ef1.js | 1 + .../a2b29b879b9e8606085c0d3776f789ca.js | 1 + .../a34efdb6282815cdc27d2f83352b59e0.js | 1 + .../a38d50d71503f31761f1ae0848eafe31.js | 1 + .../a3dfa410d90c00078f4b015410048f34.js | 1 + .../a496f663a8cf2dc047e12d8a80d76510.js | 1 + .../a4e021a4b5d5d65cc87fee17c1886c3f.js | 1 + .../a52f9ac0e3d582ed7e488aa1dfc33eda.js | 1 + .../a569591af2f834ec4b58f43ab7742186.js | 1 + .../a678d4dedcc646810a379211797d5294.js | 1 + .../a6eb87af5cd7ae7e4fcba8ec606ec4ba.js | 1 + .../a709bba98acec5da3ea6258e245514cb.js | 1 + .../a9cb92db2399f7ac97ad55fe79fe5c20.js | 1 + .../a9f61cc92a7407c8ca0a5843b29d7a57.js | 1 + .../aa0417796df2b0398a45c00f93f37ea4.js | 1 + .../ab0128ab12bcb8729032421b40f5f8dd.js | 1 + .../ab237eed5fd16ab99c06f0d28d465edb.js | 1 + .../ab720dd0a0fd070ad82c052263f748e2.js | 1 + .../abb905320bf382006f050d20bd78b5fa.js | 1 + .../ac54fd77986affc0a122d325788b34d3.js | 1 + html/bundle/admin.bundle.js | 2 +- html/bundle/admin.bundle.js.LICENSE.txt | 30 +- html/bundle/admin.bundle.js.map | 2 +- .../ae2ed12a400dcd965f70185d993c43d6.js | 1 + .../af1635b600efd13f6059eb6ac9deae12.js | 1 + .../af6fdb556ee3f9065578bb01f81f6216.js | 1 + .../afba1f28f2baa29eae717d6cb03f5464.js | 1 + .../b10accbff47791a59b8494225af07025.js | 1 + .../b1e349371cb9c226905c846706ad8b93.js | 1 + .../b24bb117549d04501b98ffb66b427e0f.js | 1 + .../b275e591896df64fa3202d90ae70c583.js | 1 + .../b2d62f22463367ca31dfdbc615637c32.js | 1 + .../b306285dfd802d091e788de0f96b8cb2.js | 1 + .../b3f1431b9e6d9e6632a93c2cd89f945b.js | 1 + .../b676b876040015b30352b3cda5e243b7.js | 1 + .../b714a3647ca66ab7685eb0437c9e3a8d.js | 1 + .../b8b6bd460e7da0ba8f3b2218327966ee.js | 1 + .../b934b22e8f8a8b1ba81dbc2cf058b0cd.js | 1 + .../b953ce2f19e7291598cd9c05128133c1.js | 1 + .../b992b348ffb6453e4a02a60e71c5304e.js | 1 + .../bb1365c0983ce5ad50060b24788b9630.js | 1 + .../bb1de0986c4fb3ee31c5a413b8f97c94.js | 1 + .../bd309bb3f23f2bfbcf914f2e71474ab5.js | 1 + .../be75b76e74c78535966ec8aaa7d46bec.js | 1 + .../bf37de323316c6ae5745fc11fd576b1c.js | 1 + .../c1a1f4ba29aa2d9a0b1a1abe5cfee0c6.js | 1 + .../c2f4581864c135dff9056745035d3914.js | 1 + .../c2fa476995041f9982b89a1c483da2b9.js | 1 + .../c3832579be376308fa819b04e7b0c66f.js | 1 + .../c3f345c994392d97785925e790513a9f.js | 1 + .../c428d0ff296b8b683347a18896d72015.js | 1 + .../c4e58637b4d14c303e29d3ce4b4a210f.js | 1 + .../c5647f3b9e799d1b9818e80796f8a574.js | 1 + .../c64d6e1e72024bb5d3d3e9bfc19d183d.js | 1 + .../c6938ce24c731f9ee703747909cd2aad.js | 1 + .../c8230f96396f0378d032dce2be3dce66.js | 1 + .../c93947dfac92c92c3999d1d51fc5b516.js | 1 + .../cb0d121a88477f943960f5ad60602c22.js | 1 + .../cb4bb785934eeca9b408e892ae6b73b7.js | 1 + .../cb5746e29527a2fdb9f857a121e086ed.js | 1 + .../cb9910e014b468ada91393696fcad206.js | 1 + .../cc0de4981277622a9017f137023a6dd5.js | 1 + .../cc65d108f0e7cfb200de1d0bcf115005.js | 1 + .../cf909ad6e321c2f98750f5c3581556f8.js | 1 + .../cfaaa83ec3973688a7946b95b597c228.js | 1 + .../d0415105402964718010284fcfa8b2ea.js | 1 + .../d1a1ee70e5eed28571ae9c619f33de7c.js | 1 + .../d1db2c4677dd2ee7a0c690c58798a013.js | 1 + .../d4ad4ca9643d85d3990bfefe29cb3bb0.js | 1 + .../d4f1a314cb3668f8e17f24bccf0229b6.js | 1 + .../d4f5981ee5a73d8a6e19112f2ffcb72c.js | 1 + .../d5999827bd3af6b813a871de344b109a.js | 1 + .../d7340300249ab98bd9b3f538a767106e.js | 1 + .../d83cda12aee0c87c8b381a1234bf7798.js | 1 + .../d869a443b727ea4b7cef2de0ff2a6ed8.js | 1 + .../d8f7ecdd496f3caf14f5afbedfff1937.js | 1 + .../d9b2daf38414fcbaf89924ad3e10e587.js | 1 + .../da740c1b29a85b999a6874b59a1baeef.js | 1 + .../dc8240db39815020378555a4d80571c3.js | 1 + .../dc83a73f0eb89665520bbb6672dfa3cb.js | 1 + .../dc932cde2fbfca8e2901fb693968b131.js | 1 + .../de73b4d2a9ed4bcb851f9141e303636d.js | 1 + .../e0c565aadda4787ba4ef4456c0a7ee29.js | 1 + .../e0fa6a4fe8bff90d50ce812e666957ca.js | 1 + .../e13fc7d468ab9b5797f2a44412ca2f00.js | 1 + .../e2fe8f0d4fd950b20b30fabaea96b3f8.js | 1 + .../e37ac12436bcd0536ec98ae8470a1228.js | 1 + .../e7f37e0f2b6113039c45a326264c4d36.js | 1 + .../e80d5ee40455d0675f8f2a3688071adf.js | 1 + .../e9382a0e67b22188c75e9418de1c9295.js | 1 + .../ea6edcde22c9fdbb9f7b8d9cf72a062b.js | 1 + .../eb08efe1d361a9c5e37e1d4c8100212e.js | 1 + .../eb0b62e1895dcf7491419aa728f00c38.js | 1 + .../ecff3d4bbf59ef41230960af46098e74.js | 1 + .../ed88b2c21452a7eaea143e54e27a0879.js | 1 + .../ee41eb1fd1d1c87c45e818b5a8a65cf8.js | 1 + .../ee5d36473f84db2af26d82efd69a38ec.js | 1 + .../ef6cac9d9a3156e1c19b46cd181863ed.js | 1 + .../ef87482c92662e8b69a21f47588474ea.js | 1 + .../eff4371180dfac54de25ed3a0105d82f.js | 1 + .../f15362a7feef894b2e7f706252e6c510.js | 1 + .../f15cbf0d23cba4a313f3f2acfef5370c.js | 1 + .../f18c12f0446bad25ec3732c621d60f88.js | 1 + .../f2fb7fcc9bdd849d687150c07a81ffe4.js | 1 + .../f4480bd3d93cb0949fc4f3af8eff6531.js | 1 + .../f5655f072ce70050c78fab024d5028a8.js | 1 + .../f666b5647087bcfdf6623f8b14d56657.js | 1 + .../f6a4758ab0dfb5c56613f0d43ceda80f.js | 1 + .../f6d7091e70dee6c74956acfef2464d08.js | 1 + .../f799992a362826cff3c7d1ce9dc9940c.js | 1 + .../fa0c561bb37040fc8145e5c70ea64912.js | 1 + .../fb393a7455b47f3d4fc30cf219d5145c.js | 1 + .../fb5080213f065f82f0391c551c864434.js | 1 + .../fd3859a700b456e06c65c0cf6b0af05c.js | 1 + .../fd9645aaf1f70c8abc562be41bee25fc.js | 1 + .../fd98f0e48b18e1de428edd5174539c2a.js | 1 + .../fe9499c0a5444f7f42843fa00fb355cb.js | 1 + .../fec23c6964d6cf25681d1f3e24b076a4.js | 1 + html/bundle/front.bundle.js | 2 +- html/bundle/front.bundle.js.LICENSE.txt | 22 +- html/bundle/front.bundle.js.map | 2 +- html/bundle/install.bundle.js | 2 +- html/bundle/install.bundle.js.LICENSE.txt | 22 +- html/bundle/install.bundle.js.map | 2 +- html/template/admin/assets/css/bootstrap.css | 5644 ++++++++++------ .../admin/assets/css/bootstrap.css.map | 2 +- .../admin/assets/css/bootstrap.min.css | 7 +- .../admin/assets/css/bootstrap.min.css.map | 2 +- html/template/default/assets/css/style.css | 5847 +++++++++++------ .../template/default/assets/css/style.css.map | 2 +- .../template/default/assets/css/style.min.css | 7 +- .../default/assets/css/style.min.css.map | 2 +- 349 files changed, 7762 insertions(+), 4169 deletions(-) create mode 100644 html/bundle/003671ee2a876e7614cd94390e2255b3.js create mode 100644 html/bundle/0078b630bed2938ce03f618c2bcd1363.js create mode 100644 html/bundle/0144de97a3c256f81447e7e7135780e5.js create mode 100644 html/bundle/019e34e85139cfc611bf23efa096c980.js create mode 100644 html/bundle/02174460fe8ff6a6bc19db86543b9600.js create mode 100644 html/bundle/03452373324e7ceaf58e3830eafd1a28.js create mode 100644 html/bundle/03a5f5b2b97a8fc289399d92fba810d0.js create mode 100644 html/bundle/03e5ab5dd6985dc9d42c81a654b83e56.js create mode 100644 html/bundle/0416c21cfe088739209926632a360e3b.js create mode 100644 html/bundle/069a0d6b093e73e820f6a60a91fa614b.js create mode 100644 html/bundle/07397bd479cbc34bc04576b4f15bdf18.js create mode 100644 html/bundle/07567125b93045706d81f17f7d04e262.js create mode 100644 html/bundle/0972f21af3e75388ef55435c0b3b831d.js create mode 100644 html/bundle/0973bb38b2e3efd2a879fd8e81d50fce.js create mode 100644 html/bundle/0b06cbc7edf78b6f2810187262e7630b.js create mode 100644 html/bundle/0bd45b2d490c48c31619072a4fb0eaea.js create mode 100644 html/bundle/0dd9fc97c3dee2275f41cd20ffaea059.js create mode 100644 html/bundle/0e67325b9a04863301e36c0c37947069.js create mode 100644 html/bundle/0f147528a6f36ca40c8b3ec796429f58.js create mode 100644 html/bundle/0f2d1162158745e1093693a3a999932a.js create mode 100644 html/bundle/0fa30731c46fe8b6a54f9752ad0ed7e0.js create mode 100644 html/bundle/0fd64c8920c10008be86572dd6830dc1.js create mode 100644 html/bundle/105b17c6442efb97c18ca2aef3976b06.js create mode 100644 html/bundle/10c464f3f882bfeeefbc0934c2ee9fbe.js create mode 100644 html/bundle/111d9fdb9864abba36298d1a0807fe6d.js create mode 100644 html/bundle/1195816afa4a5e8183857be16a04ae6f.js create mode 100644 html/bundle/119f6c45ea400e3c27e1ce172e4c881d.js create mode 100644 html/bundle/11e3a2a8fb5bcb9d19298a80cafd3f5a.js create mode 100644 html/bundle/135747176621bcc94e9edd0323a81d3c.js create mode 100644 html/bundle/1383530217ac0068c844902d24e18e08.js create mode 100644 html/bundle/1495a3d68b15b8622c53f6688b64809f.js create mode 100644 html/bundle/16c2e1b50af4ba05edaa03c8c9e9d18c.js create mode 100644 html/bundle/1736cea368ae85240f34289307fdf67f.js create mode 100644 html/bundle/17632e1e19e438f431784dfd77e01773.js create mode 100644 html/bundle/1875ecdf54e78b5f07ff1bd944cf794b.js create mode 100644 html/bundle/1c24a68cb472146022d0806ea2505cfb.js create mode 100644 html/bundle/1cc6fc3772824e2f87f10a9c3fad2dae.js create mode 100644 html/bundle/1ce14f2cad9f3c122cb5ccfcd485ffb4.js create mode 100644 html/bundle/1d3796180f854b5d8ab435ab0a1c2c11.js create mode 100644 html/bundle/1dddd8903e00ce9149ded23fb87f6f34.js create mode 100644 html/bundle/1e5fe0a75db78dcabbd4f27c2b084e4b.js create mode 100644 html/bundle/1ed6368e8e20628ad5229329eec28baa.js create mode 100644 html/bundle/1ff1389501159e4846a5133e3b8992d8.js create mode 100644 html/bundle/210aec2722e6416a0349a987260e14a3.js create mode 100644 html/bundle/228ca80abf1ae030cbfe7faaec61913f.js create mode 100644 html/bundle/2302902e10c4afab56e1b864c96070cb.js create mode 100644 html/bundle/23602ad4c88f0f19e7a0a12454ebf556.js create mode 100644 html/bundle/24f97ddd76026815674affbc50ad6169.js create mode 100644 html/bundle/262f489eb59166e1215642b60446d123.js create mode 100644 html/bundle/269732f4c5f6e82ea3246548a9631b47.js create mode 100644 html/bundle/27541d65762f8c71d4d899835aa52cc2.js create mode 100644 html/bundle/275d8f4e0550edce2f3b85b3eaa94e54.js create mode 100644 html/bundle/27846e85433e54a3ec0ab34d62233dc5.js create mode 100644 html/bundle/283970c76db99e2d0d90f0e7c45494f9.js create mode 100644 html/bundle/2a8394955e047270a2a965ec67843989.js create mode 100644 html/bundle/2aa392a501973ebfcea38239a45ed8e7.js create mode 100644 html/bundle/2ad349208b3a727abb3c9f943865a27c.js create mode 100644 html/bundle/2b1b8f8b9e8f1e423a69afd121fd7da9.js create mode 100644 html/bundle/2b5729e073775b8fb827fc8e4725e48a.js create mode 100644 html/bundle/2c3ad366cda02f17520d3369cae64c2c.js create mode 100644 html/bundle/2d2a75e3d01a74b93d07db04df8abe5e.js create mode 100644 html/bundle/2e841e8b77c2a2c00fd71940632bc1e1.js create mode 100644 html/bundle/2f25a4dc442bc9aebc58cae30c50c3e2.js create mode 100644 html/bundle/2f55cddc8eb85b63ee5b4ce0e5488230.js create mode 100644 html/bundle/2fe2904fc024afaf81732563cb83e547.js create mode 100644 html/bundle/2ffb9b6da7e84de9b507215e1bb884e2.js create mode 100644 html/bundle/318dcae1cdcd4733986a93e7a5fab7b8.js create mode 100644 html/bundle/31c610efb1d25afc90853b52ba4cb089.js create mode 100644 html/bundle/328cbf598e9711b0a87c19437b02f80d.js create mode 100644 html/bundle/33b4e371d4983ab56f4db08627119f0b.js create mode 100644 html/bundle/349237ad9565dc823ce7bcb7527ba7ee.js create mode 100644 html/bundle/34b8d1c8a81822685f809c49097b81fc.js create mode 100644 html/bundle/34f99cce131bd7aa65e7a924e2456006.js create mode 100644 html/bundle/363d3bac8dcd9a83332c3758185ce080.js create mode 100644 html/bundle/3645af9e7e929d3abe3255c739e20e84.js create mode 100644 html/bundle/3834f2acef5a5debb2a21ad919272307.js create mode 100644 html/bundle/38b1d18836e38ee7b4deaeba0c35f7b8.js create mode 100644 html/bundle/39fea85ed7dd99d7c6c9e59b7040523f.js create mode 100644 html/bundle/3a1227a65a1fc39ca476c295d1a260a4.js create mode 100644 html/bundle/3a6ca6958d003ae67bb7fefc8713ee93.js create mode 100644 html/bundle/3ac8c7749734990e2d9f81eeca219886.js create mode 100644 html/bundle/3b02cca9e95276a74f3ed2bbc7a64ce6.js create mode 100644 html/bundle/3bf96f8eb1859e2724a4b769af3b5f1e.js create mode 100644 html/bundle/3ea020c57c2bbf457a8497df313b2e5c.js create mode 100644 html/bundle/3eefbe1c009cfd730b2ca6f834367c45.js create mode 100644 html/bundle/3f72490496a86b078aee5dde15a62ed0.js create mode 100644 html/bundle/3f896944a97f002f2146e028ff2eac63.js create mode 100644 html/bundle/414cd2c842fa42bf71e155f870619e00.js create mode 100644 html/bundle/416d18f139ca4fa0305fc56919d40f58.js create mode 100644 html/bundle/425a0207a61f20ee14aba0647379ab47.js create mode 100644 html/bundle/42c556183279bbdaaed3a8a9f9108f58.js create mode 100644 html/bundle/42e0ea6351d45d342caab13cb12f9ea4.js create mode 100644 html/bundle/43139bfbcbce9de597b4985dc1e6a03b.js create mode 100644 html/bundle/432a5982ba3ddf958381d780e1e9a8e2.js create mode 100644 html/bundle/432aff60ba31a74d2120031fdc894775.js create mode 100644 html/bundle/4430c55f023b72fb5e389cee9351b38c.js create mode 100644 html/bundle/44599d9b6202ebebfcdd073edf3562e3.js create mode 100644 html/bundle/44efcea2f84e80cc4092a89796afe886.js create mode 100644 html/bundle/472ba8f81bf8cac86027cb1be4e3b9cd.js create mode 100644 html/bundle/479ec45a8edfe482fae4298d1e9862d2.js create mode 100644 html/bundle/47e4cb297b2c3841ef86ce04a7f5584e.js create mode 100644 html/bundle/47e5776dff3b80ed69ab5947dba33c76.js create mode 100644 html/bundle/492e618a031cfde9c83d699c430de2ac.js create mode 100644 html/bundle/49582665262ff6179b9f3a98adf7ed5c.js create mode 100644 html/bundle/4b692785a8a6340a89e6067274a7583c.js create mode 100644 html/bundle/4bee3a46b8378a7b4ef84492f08abd22.js create mode 100644 html/bundle/4bf6763c5956e3bccbf0373068810ded.js create mode 100644 html/bundle/4d0849c6c9a868c09130600ac68319b3.js create mode 100644 html/bundle/4d0ebf4c528cee9b0cdd3e076e06570b.js create mode 100644 html/bundle/4d156ee0485ab4b40b090a3cd7b995a9.js create mode 100644 html/bundle/4d6d9020e7e5c8d8dee7a5e374355f05.js create mode 100644 html/bundle/4f683c6881e9f8740f5516a85b9eb9da.js create mode 100644 html/bundle/5106411f7468a5ee5b1ee77aed12c0c7.js create mode 100644 html/bundle/52fd09d1713345d9ee64dc7daea9fd6f.js create mode 100644 html/bundle/5348f3cfbe5a63954e7d984f197bbddb.js create mode 100644 html/bundle/5398e3b596fa15df4d84b2aa0464e5c4.js create mode 100644 html/bundle/54a10f3bddad1e6da452fee7124fe846.js create mode 100644 html/bundle/57e14488b13e50ebdb5fdfc7880da683.js create mode 100644 html/bundle/58e7f91772635a5c59bacc975735da6c.js create mode 100644 html/bundle/5a741aab715866cb4d9a55e89dfc8420.js create mode 100644 html/bundle/5cab33610b8d9c1aee4db4672811cb5f.js create mode 100644 html/bundle/5cd4e1282f4409600b942819b7aa4f21.js create mode 100644 html/bundle/5ce650c06c385f9d15621e54c60457c0.js create mode 100644 html/bundle/5cebfc2c3495b6294dcb2a99e5174872.js create mode 100644 html/bundle/5d312b184c1f4565f51247d3c6dbba90.js create mode 100644 html/bundle/5df362c9904925cdf574d9506e4be76d.js create mode 100644 html/bundle/5e8a4f4320a07ae4bb1d8a5cd621d955.js create mode 100644 html/bundle/5f5a93ab1249b7cbdb13d9466febd3a0.js create mode 100644 html/bundle/60190285b6c2243e14184b9e57d48dbb.js create mode 100644 html/bundle/60ede8d7ffdf4c05f2ce51b6d8d2be68.js create mode 100644 html/bundle/6130486ae80b103700a2e1eec0bc5cea.js create mode 100644 html/bundle/622e27eec5f26148f51ccc30315a3deb.js create mode 100644 html/bundle/6250c7594cd66ca91184b5beca293e06.js create mode 100644 html/bundle/62a96977e725e8bc809dc80afe0fedf1.js create mode 100644 html/bundle/6490772da5aecc6cb9e4c625abc74a96.js create mode 100644 html/bundle/65542fa1baa8ef8036ee7ba08456d4b2.js create mode 100644 html/bundle/65e7cf62ca9df32c18b630f31025a401.js create mode 100644 html/bundle/663ffb67b9683a2126410325d1a5a152.js create mode 100644 html/bundle/669c462287be8fa855e0ac003c145b55.js create mode 100644 html/bundle/678f5201c1917429f334b88078ca4174.js create mode 100644 html/bundle/6a1c347ab79a93f3ac01b08c8ccfc827.js create mode 100644 html/bundle/6a851f05f1f4a974e02fe23eac2bad4e.js create mode 100644 html/bundle/6b4b87a54f673cfbb82be45329441bef.js create mode 100644 html/bundle/6bed1b724e74e6bc80688f42bc824d70.js create mode 100644 html/bundle/6c6d192b6860b4508a14c2d04769a35e.js create mode 100644 html/bundle/6d0c0aa17d36cb16bafc76d7376b97f7.js create mode 100644 html/bundle/6e40b726d91e9138d9eaef6fd012c740.js create mode 100644 html/bundle/70289d3b9b2b851df3286e20e40410a6.js create mode 100644 html/bundle/70efbabef77fb217f904f41dbf7fe8bf.js create mode 100644 html/bundle/714763ddd9bd466c95df7b042900bb87.js create mode 100644 html/bundle/7222998c10fabd9c824cf8cf540b3b74.js create mode 100644 html/bundle/724a16861717b5b4f786d24b56b62614.js create mode 100644 html/bundle/7259bceba25ac1476fc775122a63d249.js create mode 100644 html/bundle/742afd6665dee8dafd43661093bdda9d.js create mode 100644 html/bundle/757ef1b870d065a77ce3c182a03d93ad.js create mode 100644 html/bundle/7648d83718f74149cb2db078b19fb7db.js create mode 100644 html/bundle/764b59bdd3a89e14f88c9d63020551a1.js create mode 100644 html/bundle/78632dc7e1875ec8c39416f645e53733.js create mode 100644 html/bundle/79241f85b016a7332f85bb66667459c2.js create mode 100644 html/bundle/7aa17a5a81c83c0f455941b3b286d5da.js create mode 100644 html/bundle/7b839a5c1f6d89538928c8a29003bbda.js create mode 100644 html/bundle/7bc18fc7a7d1323c178aa1846d79fb3c.js create mode 100644 html/bundle/7d64980faff5b041a461fd0ba3e2f3f5.js create mode 100644 html/bundle/7ec97a8161bf26e434d3891f64adb15b.js create mode 100644 html/bundle/7f45be8b3fab8d742afc26fc48a23d2e.js create mode 100644 html/bundle/7f79d4bde67c8013b187889b63e25bce.js create mode 100644 html/bundle/7f9a9efc9ab681fcbf6400e2adb368a9.js create mode 100644 html/bundle/80ddbf4f0fdde4ddba57130e61043017.js create mode 100644 html/bundle/81318a3530fb35d5178eb7a4a13a606f.js create mode 100644 html/bundle/817edb0c6f9d66f9c0027762edb1d797.js create mode 100644 html/bundle/827c1cbf746eacfc23ed2037e4d6359d.js create mode 100644 html/bundle/839e3594798c1942d3c92f9acfaa5f0b.js create mode 100644 html/bundle/83bd353f98aa901411c82b8af58d1296.js create mode 100644 html/bundle/84270e22d4439d15b0d8f392d1338d8e.js create mode 100644 html/bundle/843c762c24f7fac628d8c62519a7b308.js create mode 100644 html/bundle/84abf03cc94d264bb38020b4ac5f76e1.js create mode 100644 html/bundle/84effdea6b72577c780f6621246d2e82.js create mode 100644 html/bundle/852f0ecd7b17e3bfd700a821ff438f7e.js create mode 100644 html/bundle/85a21b12b9b44dbd645c927f6b9f33a2.js create mode 100644 html/bundle/8646c11c7b2b46a2b2becab0d9e549c7.js create mode 100644 html/bundle/875ae58e8015a6d08dbc9d0c04e24638.js create mode 100644 html/bundle/879d6bc1ca1dde95a9a98dc7a2ab0d06.js create mode 100644 html/bundle/87bce6f50196688852142c679227b1b9.js create mode 100644 html/bundle/880ae94877022f7fb0458ced0825eb4c.js create mode 100644 html/bundle/88730abfeb4a23e692ac7933882f12eb.js create mode 100644 html/bundle/88da0e09d486e197aaca5bc3d6350998.js create mode 100644 html/bundle/894052ca1f8f35cc1cf7cfb29ef75027.js create mode 100644 html/bundle/8a31266178067a316bb2503147cdb5cb.js create mode 100644 html/bundle/8a5127228870aafabfff6111d29313d6.js create mode 100644 html/bundle/8b8336037f074d9dcbd20eab535b803f.js create mode 100644 html/bundle/8c7616f0adba6a5ac0d2f06ba4ebd696.js create mode 100644 html/bundle/8ed5aba33ead1f94e97d5c35a5e93434.js create mode 100644 html/bundle/8eede17ae9e4d25c3c17b8a8a7fc3c3d.js create mode 100644 html/bundle/8f9ce72eeabbf31f2d51f4bcfc66d3b0.js create mode 100644 html/bundle/90812d89181b698975cbb081adcbbcb0.js create mode 100644 html/bundle/90f3dc3c18d447104b63c156cb7fddb5.js create mode 100644 html/bundle/91beb08737a1bbf071f351fb0acdbf3c.js create mode 100644 html/bundle/950a205e91da7e78226dd785fd6d34db.js create mode 100644 html/bundle/96b8d8b5efd11741639659c63a485c27.js create mode 100644 html/bundle/972ea4b6ab9d3baeab6d00057cd5f9d3.js create mode 100644 html/bundle/981bd23edacd811f9e4a583d89b544ee.js create mode 100644 html/bundle/9827973b533de05b338533a0211d97d9.js create mode 100644 html/bundle/983fccb9f00748c487e889f6c83aa367.js create mode 100644 html/bundle/9920e03a65566d728a73c7bf18bc5741.js create mode 100644 html/bundle/99add2656ccb006ff11de385c4219f41.js create mode 100644 html/bundle/9b4de1346c73ba258736f1a3f00fdc14.js create mode 100644 html/bundle/9b5a6ec07bb0a2daade10189696fc399.js create mode 100644 html/bundle/9b80d1a12acd18c90e41ca92073122a7.js create mode 100644 html/bundle/9b9578869f378f8e2afbf85a76c0ac72.js create mode 100644 html/bundle/9c20b772fb49e1a6af1d4334059db12a.js create mode 100644 html/bundle/9ebb9ac2c9c875649c72722bc585d445.js create mode 100644 html/bundle/9ed8c3550b5c3c1e878d0692f0338cb7.js create mode 100644 html/bundle/9fa80a5bc14fe8644697fe0dd7b99431.js create mode 100644 html/bundle/9fd3f255cfd09016ec7f4896bc51864c.js create mode 100644 html/bundle/a09aafd5b6029416c0295e513332c7d2.js create mode 100644 html/bundle/a0e32ba94aa4384823d768802b9486e1.js create mode 100644 html/bundle/a223748cd69094dd12b486353b22f479.js create mode 100644 html/bundle/a2746fc96d535b19c120d4b87dc86ef1.js create mode 100644 html/bundle/a2b29b879b9e8606085c0d3776f789ca.js create mode 100644 html/bundle/a34efdb6282815cdc27d2f83352b59e0.js create mode 100644 html/bundle/a38d50d71503f31761f1ae0848eafe31.js create mode 100644 html/bundle/a3dfa410d90c00078f4b015410048f34.js create mode 100644 html/bundle/a496f663a8cf2dc047e12d8a80d76510.js create mode 100644 html/bundle/a4e021a4b5d5d65cc87fee17c1886c3f.js create mode 100644 html/bundle/a52f9ac0e3d582ed7e488aa1dfc33eda.js create mode 100644 html/bundle/a569591af2f834ec4b58f43ab7742186.js create mode 100644 html/bundle/a678d4dedcc646810a379211797d5294.js create mode 100644 html/bundle/a6eb87af5cd7ae7e4fcba8ec606ec4ba.js create mode 100644 html/bundle/a709bba98acec5da3ea6258e245514cb.js create mode 100644 html/bundle/a9cb92db2399f7ac97ad55fe79fe5c20.js create mode 100644 html/bundle/a9f61cc92a7407c8ca0a5843b29d7a57.js create mode 100644 html/bundle/aa0417796df2b0398a45c00f93f37ea4.js create mode 100644 html/bundle/ab0128ab12bcb8729032421b40f5f8dd.js create mode 100644 html/bundle/ab237eed5fd16ab99c06f0d28d465edb.js create mode 100644 html/bundle/ab720dd0a0fd070ad82c052263f748e2.js create mode 100644 html/bundle/abb905320bf382006f050d20bd78b5fa.js create mode 100644 html/bundle/ac54fd77986affc0a122d325788b34d3.js create mode 100644 html/bundle/ae2ed12a400dcd965f70185d993c43d6.js create mode 100644 html/bundle/af1635b600efd13f6059eb6ac9deae12.js create mode 100644 html/bundle/af6fdb556ee3f9065578bb01f81f6216.js create mode 100644 html/bundle/afba1f28f2baa29eae717d6cb03f5464.js create mode 100644 html/bundle/b10accbff47791a59b8494225af07025.js create mode 100644 html/bundle/b1e349371cb9c226905c846706ad8b93.js create mode 100644 html/bundle/b24bb117549d04501b98ffb66b427e0f.js create mode 100644 html/bundle/b275e591896df64fa3202d90ae70c583.js create mode 100644 html/bundle/b2d62f22463367ca31dfdbc615637c32.js create mode 100644 html/bundle/b306285dfd802d091e788de0f96b8cb2.js create mode 100644 html/bundle/b3f1431b9e6d9e6632a93c2cd89f945b.js create mode 100644 html/bundle/b676b876040015b30352b3cda5e243b7.js create mode 100644 html/bundle/b714a3647ca66ab7685eb0437c9e3a8d.js create mode 100644 html/bundle/b8b6bd460e7da0ba8f3b2218327966ee.js create mode 100644 html/bundle/b934b22e8f8a8b1ba81dbc2cf058b0cd.js create mode 100644 html/bundle/b953ce2f19e7291598cd9c05128133c1.js create mode 100644 html/bundle/b992b348ffb6453e4a02a60e71c5304e.js create mode 100644 html/bundle/bb1365c0983ce5ad50060b24788b9630.js create mode 100644 html/bundle/bb1de0986c4fb3ee31c5a413b8f97c94.js create mode 100644 html/bundle/bd309bb3f23f2bfbcf914f2e71474ab5.js create mode 100644 html/bundle/be75b76e74c78535966ec8aaa7d46bec.js create mode 100644 html/bundle/bf37de323316c6ae5745fc11fd576b1c.js create mode 100644 html/bundle/c1a1f4ba29aa2d9a0b1a1abe5cfee0c6.js create mode 100644 html/bundle/c2f4581864c135dff9056745035d3914.js create mode 100644 html/bundle/c2fa476995041f9982b89a1c483da2b9.js create mode 100644 html/bundle/c3832579be376308fa819b04e7b0c66f.js create mode 100644 html/bundle/c3f345c994392d97785925e790513a9f.js create mode 100644 html/bundle/c428d0ff296b8b683347a18896d72015.js create mode 100644 html/bundle/c4e58637b4d14c303e29d3ce4b4a210f.js create mode 100644 html/bundle/c5647f3b9e799d1b9818e80796f8a574.js create mode 100644 html/bundle/c64d6e1e72024bb5d3d3e9bfc19d183d.js create mode 100644 html/bundle/c6938ce24c731f9ee703747909cd2aad.js create mode 100644 html/bundle/c8230f96396f0378d032dce2be3dce66.js create mode 100644 html/bundle/c93947dfac92c92c3999d1d51fc5b516.js create mode 100644 html/bundle/cb0d121a88477f943960f5ad60602c22.js create mode 100644 html/bundle/cb4bb785934eeca9b408e892ae6b73b7.js create mode 100644 html/bundle/cb5746e29527a2fdb9f857a121e086ed.js create mode 100644 html/bundle/cb9910e014b468ada91393696fcad206.js create mode 100644 html/bundle/cc0de4981277622a9017f137023a6dd5.js create mode 100644 html/bundle/cc65d108f0e7cfb200de1d0bcf115005.js create mode 100644 html/bundle/cf909ad6e321c2f98750f5c3581556f8.js create mode 100644 html/bundle/cfaaa83ec3973688a7946b95b597c228.js create mode 100644 html/bundle/d0415105402964718010284fcfa8b2ea.js create mode 100644 html/bundle/d1a1ee70e5eed28571ae9c619f33de7c.js create mode 100644 html/bundle/d1db2c4677dd2ee7a0c690c58798a013.js create mode 100644 html/bundle/d4ad4ca9643d85d3990bfefe29cb3bb0.js create mode 100644 html/bundle/d4f1a314cb3668f8e17f24bccf0229b6.js create mode 100644 html/bundle/d4f5981ee5a73d8a6e19112f2ffcb72c.js create mode 100644 html/bundle/d5999827bd3af6b813a871de344b109a.js create mode 100644 html/bundle/d7340300249ab98bd9b3f538a767106e.js create mode 100644 html/bundle/d83cda12aee0c87c8b381a1234bf7798.js create mode 100644 html/bundle/d869a443b727ea4b7cef2de0ff2a6ed8.js create mode 100644 html/bundle/d8f7ecdd496f3caf14f5afbedfff1937.js create mode 100644 html/bundle/d9b2daf38414fcbaf89924ad3e10e587.js create mode 100644 html/bundle/da740c1b29a85b999a6874b59a1baeef.js create mode 100644 html/bundle/dc8240db39815020378555a4d80571c3.js create mode 100644 html/bundle/dc83a73f0eb89665520bbb6672dfa3cb.js create mode 100644 html/bundle/dc932cde2fbfca8e2901fb693968b131.js create mode 100644 html/bundle/de73b4d2a9ed4bcb851f9141e303636d.js create mode 100644 html/bundle/e0c565aadda4787ba4ef4456c0a7ee29.js create mode 100644 html/bundle/e0fa6a4fe8bff90d50ce812e666957ca.js create mode 100644 html/bundle/e13fc7d468ab9b5797f2a44412ca2f00.js create mode 100644 html/bundle/e2fe8f0d4fd950b20b30fabaea96b3f8.js create mode 100644 html/bundle/e37ac12436bcd0536ec98ae8470a1228.js create mode 100644 html/bundle/e7f37e0f2b6113039c45a326264c4d36.js create mode 100644 html/bundle/e80d5ee40455d0675f8f2a3688071adf.js create mode 100644 html/bundle/e9382a0e67b22188c75e9418de1c9295.js create mode 100644 html/bundle/ea6edcde22c9fdbb9f7b8d9cf72a062b.js create mode 100644 html/bundle/eb08efe1d361a9c5e37e1d4c8100212e.js create mode 100644 html/bundle/eb0b62e1895dcf7491419aa728f00c38.js create mode 100644 html/bundle/ecff3d4bbf59ef41230960af46098e74.js create mode 100644 html/bundle/ed88b2c21452a7eaea143e54e27a0879.js create mode 100644 html/bundle/ee41eb1fd1d1c87c45e818b5a8a65cf8.js create mode 100644 html/bundle/ee5d36473f84db2af26d82efd69a38ec.js create mode 100644 html/bundle/ef6cac9d9a3156e1c19b46cd181863ed.js create mode 100644 html/bundle/ef87482c92662e8b69a21f47588474ea.js create mode 100644 html/bundle/eff4371180dfac54de25ed3a0105d82f.js create mode 100644 html/bundle/f15362a7feef894b2e7f706252e6c510.js create mode 100644 html/bundle/f15cbf0d23cba4a313f3f2acfef5370c.js create mode 100644 html/bundle/f18c12f0446bad25ec3732c621d60f88.js create mode 100644 html/bundle/f2fb7fcc9bdd849d687150c07a81ffe4.js create mode 100644 html/bundle/f4480bd3d93cb0949fc4f3af8eff6531.js create mode 100644 html/bundle/f5655f072ce70050c78fab024d5028a8.js create mode 100644 html/bundle/f666b5647087bcfdf6623f8b14d56657.js create mode 100644 html/bundle/f6a4758ab0dfb5c56613f0d43ceda80f.js create mode 100644 html/bundle/f6d7091e70dee6c74956acfef2464d08.js create mode 100644 html/bundle/f799992a362826cff3c7d1ce9dc9940c.js create mode 100644 html/bundle/fa0c561bb37040fc8145e5c70ea64912.js create mode 100644 html/bundle/fb393a7455b47f3d4fc30cf219d5145c.js create mode 100644 html/bundle/fb5080213f065f82f0391c551c864434.js create mode 100644 html/bundle/fd3859a700b456e06c65c0cf6b0af05c.js create mode 100644 html/bundle/fd9645aaf1f70c8abc562be41bee25fc.js create mode 100644 html/bundle/fd98f0e48b18e1de428edd5174539c2a.js create mode 100644 html/bundle/fe9499c0a5444f7f42843fa00fb355cb.js create mode 100644 html/bundle/fec23c6964d6cf25681d1f3e24b076a4.js diff --git a/html/bundle/003671ee2a876e7614cd94390e2255b3.js b/html/bundle/003671ee2a876e7614cd94390e2255b3.js new file mode 100644 index 00000000000..7d6dcb3e367 --- /dev/null +++ b/html/bundle/003671ee2a876e7614cd94390e2255b3.js @@ -0,0 +1 @@ +ace.define("ace/snippets/csound_document.snippets",["require","exports","module"],(function(e,n,t){t.exports="# \nsnippet synth\n\t\n\t\n\t${1}\n\t\n\t\n\te\n\t\n\t\n"})),ace.define("ace/snippets/csound_document",["require","exports","module","ace/snippets/csound_document.snippets"],(function(e,n,t){"use strict";n.snippetText=e("./csound_document.snippets"),n.scope="csound_document"})),ace.require(["ace/snippets/csound_document"],(function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)})); \ No newline at end of file diff --git a/html/bundle/0078b630bed2938ce03f618c2bcd1363.js b/html/bundle/0078b630bed2938ce03f618c2bcd1363.js new file mode 100644 index 00000000000..6d299ebd21d --- /dev/null +++ b/html/bundle/0078b630bed2938ce03f618c2bcd1363.js @@ -0,0 +1 @@ +ace.define("ace/mode/ion_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){var e={token:this.createKeywordMapper({"constant.language.bool.ion":"TRUE|FALSE","constant.language.null.ion":"NULL.NULL|NULL.BOOL|NULL.INT|NULL.FLOAT|NULL.DECIMAL|NULL.TIMESTAMP|NULL.STRING|NULL.SYMBOL|NULL.BLOB|NULL.CLOB|NULL.STRUCT|NULL.LIST|NULL.SEXP|NULL"},"constant.other.symbol.identifier.ion",!0),regex:"\\b\\w+(?:\\.\\w+)?\\b"};this.$rules={start:[{include:"value"}],value:[{include:"whitespace"},{include:"comment"},{include:"annotation"},{include:"string"},{include:"number"},{include:"keywords"},{include:"symbol"},{include:"clob"},{include:"blob"},{include:"struct"},{include:"list"},{include:"sexp"}],sexp:[{token:"punctuation.definition.sexp.begin.ion",regex:"\\(",push:[{token:"punctuation.definition.sexp.end.ion",regex:"\\)",next:"pop"},{include:"comment"},{include:"value"},{token:"storage.type.symbol.operator.ion",regex:"[\\!\\#\\%\\&\\*\\+\\-\\./\\;\\<\\=\\>\\?\\@\\^\\`\\|\\~]+"}]}],comment:[{token:"comment.line.ion",regex:"//[^\\n]*"},{token:"comment.block.ion",regex:"/\\*",push:[{token:"comment.block.ion",regex:"[*]/",next:"pop"},{token:"comment.block.ion",regex:"[^*/]+"},{token:"comment.block.ion",regex:"[*/]+"}]}],list:[{token:"punctuation.definition.list.begin.ion",regex:"\\[",push:[{token:"punctuation.definition.list.end.ion",regex:"\\]",next:"pop"},{include:"comment"},{include:"value"},{token:"punctuation.definition.list.separator.ion",regex:","}]}],struct:[{token:"punctuation.definition.struct.begin.ion",regex:"\\{",push:[{token:"punctuation.definition.struct.end.ion",regex:"\\}",next:"pop"},{include:"comment"},{include:"value"},{token:"punctuation.definition.struct.separator.ion",regex:",|:"}]}],blob:[{token:["punctuation.definition.blob.begin.ion","string.other.blob.ion","punctuation.definition.blob.end.ion"],regex:'(\\{\\{)([^"]*)(\\}\\})'}],clob:[{token:["punctuation.definition.clob.begin.ion","string.other.clob.ion","punctuation.definition.clob.end.ion"],regex:'(\\{\\{)("[^"]*")(\\}\\})'}],symbol:[{token:"storage.type.symbol.quoted.ion",regex:"(['])((?:(?:\\\\')|(?:[^']))*?)(['])"},{token:"storage.type.symbol.identifier.ion",regex:"[\\$_a-zA-Z][\\$_a-zA-Z0-9]*"}],number:[{token:"constant.numeric.timestamp.ion",regex:"\\d{4}(?:-\\d{2})?(?:-\\d{2})?T(?:\\d{2}:\\d{2})(?::\\d{2})?(?:\\.\\d+)?(?:Z|[-+]\\d{2}:\\d{2})?"},{token:"constant.numeric.timestamp.ion",regex:"\\d{4}-\\d{2}-\\d{2}T?"},{token:"constant.numeric.integer.binary.ion",regex:"-?0[bB][01](?:_?[01])*"},{token:"constant.numeric.integer.hex.ion",regex:"-?0[xX][0-9a-fA-F](?:_?[0-9a-fA-F])*"},{token:"constant.numeric.float.ion",regex:"-?(?:0|[1-9](?:_?\\d)*)(?:\\.(?:\\d(?:_?\\d)*)?)?(?:[eE][+-]?\\d+)"},{token:"constant.numeric.float.ion",regex:"(?:[-+]inf)|(?:nan)"},{token:"constant.numeric.decimal.ion",regex:"-?(?:0|[1-9](?:_?\\d)*)(?:(?:(?:\\.(?:\\d(?:_?\\d)*)?)(?:[dD][+-]?\\d+)|\\.(?:\\d(?:_?\\d)*)?)|(?:[dD][+-]?\\d+))"},{token:"constant.numeric.integer.ion",regex:"-?(?:0|[1-9](?:_?\\d)*)"}],string:[{token:["punctuation.definition.string.begin.ion","string.quoted.double.ion","punctuation.definition.string.end.ion"],regex:'(["])((?:(?:\\\\")|(?:[^"]))*?)(["])'},{token:"punctuation.definition.string.begin.ion",regex:"'{3}",push:[{token:"punctuation.definition.string.end.ion",regex:"'{3}",next:"pop"},{token:"string.quoted.triple.ion",regex:"(?:\\\\'|[^'])+"},{token:"string.quoted.triple.ion",regex:"'"}]}],annotation:[{token:["variable.language.annotation.ion","punctuation.definition.annotation.ion"],regex:/('(?:[^'\\]|\\.)*')\s*(::)/},{token:["variable.language.annotation.ion","punctuation.definition.annotation.ion"],regex:"([\\$_a-zA-Z][\\$_a-zA-Z0-9]*)\\s*(::)"}],whitespace:[{token:"text.ion",regex:"\\s+"}]},this.$rules.keywords=[e],this.normalizeRules()};i.inherits(r,o),t.IonHighlightRules=r})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=e.findMatchingBracket({row:t,column:o});if(!r||r.row==t)return 0;var a=this.$getIndent(e.getLine(r.row));e.replace(new i(t,0,t,o-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,a=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(a,r),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o,r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);if(o=r.match(this.foldingStartMarker)){var a=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,a);var s=e.getCommentFoldRange(n,a+o[0].length,1);return s&&!s.isMultiLine()&&(i?s=this.getSectionRange(e,n):"all"!=t&&(s=null)),s}return"markbegin"!==t&&(o=r.match(this.foldingStopMarker))?(a=o.index+o[0].length,o[1]?this.closingBracketBlock(e,o[1],n,a):e.getCommentFoldRange(n,a,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),r=t,a=n.length,s=t+=1,c=e.getLength();++tu)break;var d=this.getFoldWidgetRange(e,"all",t);if(d){if(d.start.row<=r)break;if(d.isMultiLine())t=d.end.row;else if(i==u)break}s=t}}return new o(r,a,s,e.getLine(s).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),a=n,s=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++na)return new o(a,i,n,t.length)}}.call(a.prototype)})),ace.define("ace/mode/ion",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ion_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text").Mode,r=e("./ion_highlight_rules").IonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,s=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=r,this.$outdent=new a,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new s};i.inherits(c,o),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t);return"start"==e&&t.match(/^.*[\{\(\[]\s*$/)&&(i+=n),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/ion"}.call(c.prototype),t.Mode=c})),ace.require(["ace/mode/ion"],(function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)})); \ No newline at end of file diff --git a/html/bundle/0144de97a3c256f81447e7e7135780e5.js b/html/bundle/0144de97a3c256f81447e7e7135780e5.js new file mode 100644 index 00000000000..cd7b7987768 --- /dev/null +++ b/html/bundle/0144de97a3c256f81447e7e7135780e5.js @@ -0,0 +1 @@ +ace.define("ace/mode/properties_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,o){"use strict";var i=e("../lib/oop"),r=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=/\\u[0-9a-fA-F]{4}|\\/;this.$rules={start:[{token:"comment",regex:/[!#].*$/},{token:"keyword",regex:/[=:]$/},{token:"keyword",regex:/[=:]/,next:"value"},{token:"constant.language.escape",regex:e},{defaultToken:"variable"}],value:[{regex:/\\$/,token:"string",next:"value"},{regex:/$/,token:"string",next:"start"},{token:"constant.language.escape",regex:e},{defaultToken:"string"}]}};i.inherits(s,r),t.PropertiesHighlightRules=s})),ace.define("ace/mode/properties",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/properties_highlight_rules"],(function(e,t,o){"use strict";var i=e("../lib/oop"),r=e("./text").Mode,s=e("./properties_highlight_rules").PropertiesHighlightRules,l=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};i.inherits(l,r),function(){this.$id="ace/mode/properties"}.call(l.prototype),t.Mode=l})),ace.require(["ace/mode/properties"],(function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)})); \ No newline at end of file diff --git a/html/bundle/019e34e85139cfc611bf23efa096c980.js b/html/bundle/019e34e85139cfc611bf23efa096c980.js new file mode 100644 index 00000000000..9d874b1089a --- /dev/null +++ b/html/bundle/019e34e85139cfc611bf23efa096c980.js @@ -0,0 +1 @@ +ace.define("ace/theme/chrome-css",["require","exports","module"],(function(e,c,n){n.exports='.ace-chrome .ace_gutter {\n background: #ebebeb;\n color: #333;\n overflow : hidden;\n}\n\n.ace-chrome .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-chrome {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-chrome .ace_cursor {\n color: black;\n}\n\n.ace-chrome .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-chrome .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-chrome .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-chrome .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-chrome .ace_invalid {\n background-color: rgb(153, 0, 0);\n color: white;\n}\n\n.ace-chrome .ace_fold {\n}\n\n.ace-chrome .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-chrome .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-chrome .ace_support.ace_type,\n.ace-chrome .ace_support.ace_class\n.ace-chrome .ace_support.ace_other {\n color: rgb(109, 121, 222);\n}\n\n.ace-chrome .ace_variable.ace_parameter {\n font-style:italic;\n color:#FD971F;\n}\n.ace-chrome .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-chrome .ace_comment {\n color: #236e24;\n}\n\n.ace-chrome .ace_comment.ace_doc {\n color: #236e24;\n}\n\n.ace-chrome .ace_comment.ace_doc.ace_tag {\n color: #236e24;\n}\n\n.ace-chrome .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-chrome .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-chrome .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-chrome .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-chrome .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-chrome .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-chrome .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-chrome .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-chrome .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-chrome .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-chrome .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-chrome .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-chrome .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-chrome .ace_storage,\n.ace-chrome .ace_keyword,\n.ace-chrome .ace_meta.ace_tag {\n color: rgb(147, 15, 128);\n}\n\n.ace-chrome .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-chrome .ace_string {\n color: #1A1AA6;\n}\n\n.ace-chrome .ace_entity.ace_other.ace_attribute-name {\n color: #994409;\n}\n\n.ace-chrome .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n \n.ace-chrome .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n}\n'})),ace.define("ace/theme/chrome",["require","exports","module","ace/theme/chrome-css","ace/lib/dom"],(function(e,c,n){c.isDark=!1,c.cssClass="ace-chrome",c.cssText=e("./chrome-css"),e("../lib/dom").importCssString(c.cssText,c.cssClass,!1)})),ace.require(["ace/theme/chrome"],(function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)})); \ No newline at end of file diff --git a/html/bundle/02174460fe8ff6a6bc19db86543b9600.js b/html/bundle/02174460fe8ff6a6bc19db86543b9600.js new file mode 100644 index 00000000000..babd16b09af --- /dev/null +++ b/html/bundle/02174460fe8ff6a6bc19db86543b9600.js @@ -0,0 +1 @@ +ace.define("ace/snippets/robot.snippets",["require","exports","module"],(function(n,e,t){t.exports="# scope: robot\n### Sections\nsnippet settingssection\ndescription *** Settings *** section\n\t*** Settings ***\n\tLibrary ${1}\n\nsnippet keywordssection\ndescription *** Keywords *** section\n\t*** Keywords ***\n\t${1:Keyword Name}\n\t [Arguments] \\${${2:Example Arg 1}}\n\t\nsnippet testcasessection\ndescription *** Test Cases *** section\n\t*** Test Cases ***\n\t${1:First Test Case}\n\t ${2:Log Example Arg}\n\nsnippet variablessection\ndescription *** Variables *** section\n\t*** Variables ***\n\t\\${${1:Variable Name}}= ${2:Variable Value}\n\n### Helpful keywords\nsnippet testcase\ndescription A test case\n\t${1:Test Case Name}\n\t ${2:Log Example log message}\n\t\nsnippet keyword\ndescription A keyword\n\t${1:Example Keyword}\n\t [Arguments] \\${${2:Example Arg 1}}\n\n### Built Ins\nsnippet forinr\ndescription For In Range Loop\n\tFOR \\${${1:Index}} IN RANGE \\${${2:10}}\n\t Log \\${${1:Index}}\n\tEND\n\nsnippet forin\ndescription For In Loop\n\tFOR \\${${1:Item}} IN @{${2:List Variable}}\n\t Log \\${${1:Item}}\n\tEND\n\nsnippet if\ndescription If Statement\n\tIF ${1:condition}\n\t ${2:Do something}\n\tEND\n\nsnippet else\ndescription If Statement\n\tIF ${1:Condition}\n\t ${2:Do something}\n\tELSE\n\t ${3:Otherwise do this}\n\tEND\n\nsnippet elif\ndescription Else-If Statement\n\tIF ${1:Condition 1}\n\t ${2:Do something}\n\tELSE IF ${3:Condition 2}\n\t ${4:Do something else}\n\tEND\n"})),ace.define("ace/snippets/robot",["require","exports","module","ace/snippets/robot.snippets"],(function(n,e,t){"use strict";e.snippetText=n("./robot.snippets"),e.scope="robot"})),ace.require(["ace/snippets/robot"],(function(n){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=n)})); \ No newline at end of file diff --git a/html/bundle/03452373324e7ceaf58e3830eafd1a28.js b/html/bundle/03452373324e7ceaf58e3830eafd1a28.js new file mode 100644 index 00000000000..2506ba23fa4 --- /dev/null +++ b/html/bundle/03452373324e7ceaf58e3830eafd1a28.js @@ -0,0 +1 @@ +ace.define("ace/mode/xquery/xquery_lexer",["require","exports","module"],(function(e,a,t){t.exports=function a(t,n,r){var s="function"==typeof e&&e;function o(c,i){if(!n[c]){if(!t[c]){var k="function"==typeof e&&e;if(!i&&k)return k(c,!0);if(s)return s(c,!0);var u=new Error("Cannot find module '"+c+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[c]={exports:{}};t[c][0].call(l.exports,(function(e){return o(t[c][1][e]||e)}),l,l.exports,a,t,n,r)}return n[c].exports}for(var c=0;cu?u:c),n=o,r=c,s=0):x(o,c,0,s,a)}function d(){r!=o&&(n=r,r=o,i.whitespace(n,r))}function p(e){0==s&&(s=function(e){for(var a;28==(a=v(e)););return a}(e),o=l,c=b)}function h(e){0==s&&(s=v(e),o=l,c=b)}function x(e,a,t,n,r){throw new m.ParseException(e,a,t,n,r)}function v(a){var t=!1;l=b;for(var n=b,r=e.INITIAL[a],s=0,o=4095&r;0!=o;){var c,i=n>4))+e.MAP1[h>>5]]];else{i<56320&&(h=n=56320&&h<57344&&(++n,i=((1023&i)<<10)+(1023&h)+65536,t=!0);for(var m=0,g=5,f=3;;f=g+m>>1){if(e.MAP2[f]>i)g=f-1;else{if(!(e.MAP2[6+f]g){c=0;break}}}s=o;var d=(c<<12)+o-1;(o=e.TRANSITION[(15&d)+e.TRANSITION[d>>4]])>4095&&(r=o,o&=4095,b=n)}if(0==(r>>=12))return(h=(b=n-1)=56320&&h<57344&&--b,x(l,b,s,-1,-1);if(t)for(var p=r>>9;p>0;--p){var h;(h=--b=56320&&h<57344&&--b}else b-=r>>9;return(511&r)-1}this.ParseException=function(e,a,t,n,r){var s=e,o=a,c=t,i=n,k=r;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return c},this.getExpected=function(){return k},this.getOffending=function(){return i},this.getMessage=function(){return i<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return k},this.getOffendingToken=function(a){var t=a.getOffending();return t>=0?e.TOKEN[t]:null},this.getExpectedTokenSet=function(a){return a.getExpected()<0?e.getTokenSet(-a.getState()):[e.TOKEN[a.getExpected()]]},this.getErrorMessage=function(e){var a=this.getExpectedTokenSet(e),t=this.getOffendingToken(e),n=k.substring(0,e.getBegin()).split("\n"),r=n.length,s=n[r-1].length+1,o=e.getEnd()-e.getBegin();return e.getMessage()+(null==t?"":", found "+t)+"\nwhile expecting "+(1==a.length?a[0]:"["+a.join(", ")+"]")+"\n"+(0==o||null!=t?"":"after successfully scanning "+o+" characters beginning ")+"at line "+r+", column "+s+":\n..."+k.substring(e.getBegin(),Math.min(k.length,e.getBegin()+64))+"..."},this.parse_start=function(){switch(i.startNonterminal("start",r),p(14),s){case 55:f(55);break;case 54:f(54);break;case 56:f(56);break;case 40:f(40);break;case 42:f(42);break;case 41:f(41);break;case 35:f(35);break;case 38:f(38);break;case 274:f(274);break;case 271:f(271);break;case 39:f(39);break;case 43:f(43);break;case 49:f(49);break;case 62:f(62);break;case 63:f(63);break;case 46:f(46);break;case 48:f(48);break;case 53:f(53);break;case 51:f(51);break;case 34:f(34);break;case 273:f(273);break;case 2:f(2);break;case 1:f(1);break;case 3:f(3);break;case 12:f(12);break;case 13:f(13);break;case 15:f(15);break;case 16:f(16);break;case 17:f(17);break;case 5:f(5);break;case 6:f(6);break;case 4:f(4);break;case 33:f(33);break;default:g()}i.endNonterminal("start",r)},this.parse_StartTag=function(){switch(i.startNonterminal("StartTag",r),p(8),s){case 58:f(58);break;case 50:f(50);break;case 27:f(27);break;case 57:f(57);break;case 35:f(35);break;case 38:f(38);break;default:f(33)}i.endNonterminal("StartTag",r)},this.parse_TagContent=function(){switch(i.startNonterminal("TagContent",r),h(11),s){case 23:f(23);break;case 6:f(6);break;case 7:f(7);break;case 55:f(55);break;case 54:f(54);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;default:f(33)}i.endNonterminal("TagContent",r)},this.parse_AposAttr=function(){switch(i.startNonterminal("AposAttr",r),h(10),s){case 20:f(20);break;case 25:f(25);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;case 38:f(38);break;default:f(33)}i.endNonterminal("AposAttr",r)},this.parse_QuotAttr=function(){switch(i.startNonterminal("QuotAttr",r),h(9),s){case 19:f(19);break;case 24:f(24);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;case 35:f(35);break;default:f(33)}i.endNonterminal("QuotAttr",r)},this.parse_CData=function(){switch(i.startNonterminal("CData",r),h(1),s){case 11:f(11);break;case 64:f(64);break;default:f(33)}i.endNonterminal("CData",r)},this.parse_XMLComment=function(){switch(i.startNonterminal("XMLComment",r),h(0),s){case 9:f(9);break;case 47:f(47);break;default:f(33)}i.endNonterminal("XMLComment",r)},this.parse_PI=function(){switch(i.startNonterminal("PI",r),h(3),s){case 10:f(10);break;case 59:f(59);break;case 60:f(60);break;default:f(33)}i.endNonterminal("PI",r)},this.parse_Pragma=function(){switch(i.startNonterminal("Pragma",r),h(2),s){case 8:f(8);break;case 36:f(36);break;case 37:f(37);break;default:f(33)}i.endNonterminal("Pragma",r)},this.parse_Comment=function(){switch(i.startNonterminal("Comment",r),h(4),s){case 52:f(52);break;case 41:f(41);break;case 30:f(30);break;default:f(33)}i.endNonterminal("Comment",r)},this.parse_CommentDoc=function(){switch(i.startNonterminal("CommentDoc",r),h(5),s){case 31:f(31);break;case 32:f(32);break;case 52:f(52);break;case 41:f(41);break;default:f(33)}i.endNonterminal("CommentDoc",r)},this.parse_QuotString=function(){switch(i.startNonterminal("QuotString",r),h(6),s){case 18:f(18);break;case 29:f(29);break;case 19:f(19);break;case 21:f(21);break;case 35:f(35);break;default:f(33)}i.endNonterminal("QuotString",r)},this.parse_AposString=function(){switch(i.startNonterminal("AposString",r),h(7),s){case 18:f(18);break;case 29:f(29);break;case 20:f(20);break;case 22:f(22);break;case 38:f(38);break;default:f(33)}i.endNonterminal("AposString",r)},this.parse_Prefix=function(){i.startNonterminal("Prefix",r),p(13),d(),function(){switch(i.startNonterminal("NCName",r),s){case 26:f(26);break;case 65:f(65);break;case 70:f(70);break;case 74:f(74);break;case 75:f(75);break;case 79:f(79);break;case 83:f(83);break;case 84:f(84);break;case 85:f(85);break;case 89:f(89);break;case 100:f(100);break;case 104:f(104);break;case 108:f(108);break;case 113:f(113);break;case 117:f(117);break;case 118:f(118);break;case 121:f(121);break;case 123:f(123);break;case 126:f(126);break;case 132:f(132);break;case 141:f(141);break;case 143:f(143);break;case 145:f(145);break;case 146:f(146);break;case 155:f(155);break;case 157:f(157);break;case 158:f(158);break;case 159:f(159);break;case 167:f(167);break;case 169:f(169);break;case 173:f(173);break;case 175:f(175);break;case 176:f(176);break;case 181:f(181);break;case 193:f(193);break;case 195:f(195);break;case 196:f(196);break;case 215:f(215);break;case 219:f(219);break;case 231:f(231);break;case 232:f(232);break;case 243:f(243);break;case 244:f(244);break;case 249:f(249);break;case 261:f(261);break;case 265:f(265);break;case 68:f(68);break;case 69:f(69);break;case 77:f(77);break;case 88:f(88);break;case 91:f(91);break;case 98:f(98);break;case 103:f(103);break;case 105:f(105);break;case 106:f(106);break;case 107:f(107);break;case 114:f(114);break;case 115:f(115);break;case 116:f(116);break;case 119:f(119);break;case 124:f(124);break;case 129:f(129);break;case 130:f(130);break;case 131:f(131);break;case 140:f(140);break;case 147:f(147);break;case 148:f(148);break;case 154:f(154);break;case 160:f(160);break;case 165:f(165);break;case 177:f(177);break;case 179:f(179);break;case 180:f(180);break;case 186:f(186);break;case 197:f(197);break;case 201:f(201);break;case 207:f(207);break;case 208:f(208);break;case 211:f(211);break;case 213:f(213);break;case 214:f(214);break;case 221:f(221);break;case 222:f(222);break;case 224:f(224);break;case 230:f(230);break;case 238:f(238);break;case 239:f(239);break;case 245:f(245);break;case 248:f(248);break;case 251:f(251);break;case 255:f(255);break;case 257:f(257);break;case 269:f(269);break;case 67:f(67);break;case 76:f(76);break;case 78:f(78);break;case 80:f(80);break;case 81:f(81);break;case 86:f(86);break;case 93:f(93);break;case 96:f(96);break;case 97:f(97);break;case 99:f(99);break;case 101:f(101);break;case 120:f(120);break;case 127:f(127);break;case 128:f(128);break;case 136:f(136);break;case 149:f(149);break;case 150:f(150);break;case 156:f(156);break;case 166:f(166);break;case 187:f(187);break;case 194:f(194);break;case 198:f(198);break;case 217:f(217);break;case 220:f(220);break;case 223:f(223);break;case 229:f(229);break;case 235:f(235);break;case 246:f(246);break;case 247:f(247);break;case 252:f(252);break;case 256:f(256);break;case 258:f(258);break;case 262:f(262);break;case 92:f(92);break;case 171:f(171);break;default:f(216)}i.endNonterminal("NCName",r)}(),i.endNonterminal("Prefix",r)},this.parse__EQName=function(){i.startNonterminal("_EQName",r),p(12),d(),g(),i.endNonterminal("_EQName",r)}};n.getTokenSet=function(e){for(var a=[],t=e<0?-e:4095&INITIAL[e],r=0;r<276;r+=32)for(var s=r,o=2062*(r>>5)+t-1,c=o>>2,i=c>>2,k=n.EXPECTED[(3&o)+n.EXPECTED[(3&c)+n.EXPECTED[(3&i)+n.EXPECTED[i>>2]]]];0!=k;k>>>=1,++s)0!=(1&k)&&a.push(n.TOKEN[s]);return a},n.MAP0=[66,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,35,31,35,37,38,39,40,41,42,43,44,45,31,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,31,61,62,63,64,35],n.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,347,363,379,416,416,416,408,331,323,331,323,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,433,433,433,433,433,433,433,316,331,331,331,331,331,331,331,331,394,416,416,417,415,416,416,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,330,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,66,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,31,31,31,31,35,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,35,31,35,37,38,39,40,41,42,43,44,45,31,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,31,61,62,63,64,35,35,35,35,35,35,35,35,35,35,35,35,31,31,35,35,35,35,35,35,35,65,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65],n.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,35,31,35,31,31,35],n.INITIAL=[1,2,36867,45060,5,6,7,8,9,10,11,12,13,14,15],n.TRANSITION=[17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22908,18836,17152,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17365,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,17470,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18157,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,17848,17880,18731,17918,36551,17292,17934,17979,18727,18023,36545,18621,18039,18056,18072,18117,18143,18173,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17687,18805,18421,18437,18101,17393,18489,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18579,21711,17152,19008,19233,20367,19008,28684,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17365,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,17470,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18157,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,17848,17880,18731,17918,36551,17292,17934,17979,18727,18023,36545,18621,18039,18056,18072,18117,18143,18173,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17687,18805,18421,18437,18101,17393,18489,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,20116,18836,18637,19008,19233,21267,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18763,18778,18794,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18821,22923,18906,19008,19233,17431,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18937,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,19054,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,18953,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21843,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21696,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22429,20131,18720,19008,19233,20367,19008,17173,23559,36437,17330,17349,18921,17189,17208,17281,20355,18087,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,21242,19111,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19024,18836,18609,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19081,22444,18987,19008,19233,20367,19008,19065,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21992,22007,18987,19008,19233,20367,19008,18690,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22414,18836,18987,19008,19233,30651,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,19138,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,19280,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,19172,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21783,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,19218,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21651,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19249,19265,19307,18888,27857,30536,24401,31444,23357,18888,19351,18888,18890,27211,19370,27211,27211,19392,24401,31911,24401,24401,25467,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19440,24401,24401,24401,24401,24036,17994,24060,18888,18888,18888,18890,19468,27211,27211,27211,27211,19484,35367,19520,24401,24401,24401,19628,18888,29855,18888,18888,23086,27211,19538,27211,27211,30756,24012,24401,19560,24401,24401,26750,18888,18888,19327,27855,27211,27211,19580,17590,24017,24401,24401,19600,25665,18888,18888,28518,27211,27212,24016,19620,19868,28435,25722,18889,19644,27211,32888,35852,19868,31018,19694,19376,19717,22215,19735,22098,19751,35203,19776,19797,19817,19840,25783,31738,24135,19701,19856,31015,23516,31008,28311,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21768,18836,19307,18888,27857,27904,24401,29183,28015,18888,18888,18888,18890,27211,27211,27211,27211,19888,24401,24401,24401,24401,22953,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19440,24401,24401,24401,24401,24036,18881,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22399,18836,19918,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21666,18836,19307,18888,27857,27525,24401,29183,21467,18888,18888,18888,18890,27211,27211,27211,27211,19946,24401,24401,24401,24401,32382,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19998,24401,24401,24401,24401,31500,18467,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,20021,24401,24401,24401,24401,24401,34271,18888,18888,18888,18888,23086,27211,27211,27211,27211,32926,29908,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,20050,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,20101,19039,20191,20412,20903,17569,20309,20872,25633,20623,20505,20218,20242,17189,17208,17281,20355,20265,20306,20328,20383,22490,20796,20619,21354,20654,20410,20956,21232,20765,17421,20535,17192,18127,22459,20312,25531,22470,20309,20428,18964,20466,20491,21342,21070,20521,20682,17714,18326,17543,17559,17585,22497,20559,19504,20279,20575,20290,20475,20604,20639,20226,20670,17661,21190,17703,21176,17730,19494,20698,20711,22480,21046,21116,18971,21130,20727,20755,17675,17753,17832,17590,25518,20394,20781,20831,20202,20847,21401,17292,17934,17979,18549,20863,20588,25542,20888,20919,18072,18117,20935,20972,21032,21062,21086,18239,21102,18563,21146,21162,21206,18351,20949,20902,18340,21222,21258,21283,18360,20249,17405,21295,21311,21327,20739,20343,21370,21386,21417,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21977,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,21452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,21504,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,36501,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,28674,21946,17617,36473,18223,17237,17477,19152,17860,17892,17675,17753,17832,21575,21534,17481,19156,17864,18731,17918,36551,17292,17934,21560,30628,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21798,18836,21612,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21636,18836,18987,19008,19233,17902,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21753,19096,21903,19008,19233,20367,19008,19291,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17379,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,21931,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18280,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21962,18594,18987,19008,19233,22043,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21681,21858,18987,19008,19233,20367,19008,21544,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,32319,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,22231,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,31678,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,33588,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,35019,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22248,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22324,18836,22059,18888,27857,30501,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,34365,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22354,18836,18987,19008,19233,20367,19008,17173,27086,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,19930,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22309,22513,18987,19008,19233,20367,19008,19122,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,22544,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22608,18836,22988,23004,27585,23020,23036,23067,22087,18888,18888,18888,23083,27211,27211,27211,23102,22121,24401,24401,24401,23122,31386,26154,19674,18888,28119,28232,19424,23705,27211,27211,23142,23173,23189,23212,24401,24401,23246,34427,31693,23262,18888,23290,23308,27783,27620,23327,35263,35107,33383,23346,18193,23393,32748,23968,24401,23414,35153,23463,18888,33913,23442,23482,27211,27211,23532,23552,21431,23575,24401,24401,23604,26095,23635,23657,18888,33482,23685,33251,27211,22187,18851,23721,35536,24401,18887,23750,32641,27211,23769,23787,20080,33012,24384,25659,18888,18889,27211,27211,19719,23889,23803,31018,18890,27211,31833,19406,19447,23086,23330,19828,28224,31826,23823,26917,34978,23850,26493,25782,23878,23914,23516,31008,22105,19419,27963,19659,29781,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22623,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,28909,25783,27211,27211,27211,34048,23933,22164,24401,24401,24401,28409,23949,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,26583,18888,18888,18888,35585,23984,27211,27211,27211,24005,22201,24033,24401,24401,24401,24052,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,26496,24076,24126,24151,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22638,18836,22059,19678,27857,24185,24401,24201,24217,26592,18888,18888,18890,24252,24268,27211,27211,22121,24287,24303,24401,24401,30613,19781,35432,36007,32649,18888,25783,24322,28966,23771,27211,35072,22164,24358,32106,26829,24400,31500,31693,18888,18888,18888,24801,18890,27211,27211,27211,27211,24418,19484,24401,24401,24401,24401,20167,31181,18888,18888,18888,27833,23086,27211,27211,33540,27211,30756,21431,24401,24401,22972,24401,26095,18888,36131,18888,27855,27211,24440,27211,22187,22968,24401,24459,24401,31699,28454,18888,34528,34570,35779,24478,24402,24494,25659,18888,36228,27211,27211,24515,30981,23734,31018,18890,27211,31833,19406,19447,23086,23330,24538,31017,27856,31741,30059,23377,24563,19837,25782,19760,31015,23516,25374,22105,19419,29793,24579,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22653,18836,22059,25756,19982,34097,23196,29183,24614,24110,23641,24673,26103,24697,24443,24713,28558,22121,24748,24462,24764,23398,30613,18888,18888,18888,18888,24798,25783,27211,27211,27211,34232,35072,22164,24401,24401,24401,33302,31500,22559,24106,24232,18888,18888,34970,24817,30411,27211,27211,32484,19484,29750,35127,24401,24401,19872,31181,24852,18888,18888,24871,29221,27211,27211,32072,27211,30756,34441,24401,24401,31571,24401,26095,33141,27802,27011,27855,25295,25607,24888,22187,22968,19195,34593,24906,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,33663,27211,27211,24924,24947,23588,31018,18890,27211,31833,22135,19447,23086,23330,19828,30904,31042,24972,19840,25e3,31738,30898,25782,19760,31015,23516,31008,22105,19419,25016,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22668,18836,25041,25057,31320,25073,25089,25105,22087,34796,24236,36138,34870,34125,25121,23106,35497,22248,36613,25137,30671,27365,30613,25153,26447,25199,25233,22574,23274,25249,25265,25281,25318,25344,25360,25400,25428,25452,26731,25504,31693,23669,25558,27407,25575,28599,25934,25599,27211,28180,27304,25623,25839,25649,24401,34820,25681,25698,22586,27775,30190,25745,25778,25799,25817,28995,33569,30756,21518,33443,25837,25855,25893,26095,31254,26677,30136,27855,25930,25950,27211,22187,22968,25966,25986,24401,23428,27763,36330,26959,26002,26029,26045,26085,26119,26170,26203,26222,26239,30527,26372,26274,28404,31018,33757,27211,34262,26316,36729,26345,26366,35337,31017,26388,26407,30954,26350,33861,26434,26463,26479,26512,23516,33189,26531,26547,27963,31293,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22683,18836,26568,26181,26608,34097,26643,29183,22087,26669,18888,18888,18890,26693,27211,27211,27211,22121,26720,24401,24401,24401,30613,18888,18888,18888,18888,26774,25783,27211,27211,27211,26619,35072,22164,24401,24401,24401,21596,31500,31693,18888,18888,33978,18888,18890,27211,27211,25801,27211,27211,19484,24401,24401,24401,26792,24401,31181,18888,18888,18888,35464,23086,27211,27211,27211,26809,30756,21431,24401,24401,24401,26828,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,31948,18889,35707,27211,19719,26845,19868,31018,18890,27211,31833,19406,19447,23086,23330,26905,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,24984,31088,19419,26945,27651,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22698,18836,26999,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,23051,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,27033,24401,24401,24401,24401,24036,31693,18888,18888,27056,18888,18890,27211,27211,30320,27211,27211,27075,24401,24401,29032,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,33986,27855,27211,27211,27102,17590,24017,24401,24401,27123,27144,36254,27162,27210,27228,28500,18187,34842,33426,27244,35980,27277,27302,27320,36048,34013,20999,31882,21478,27895,27356,30287,27381,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,26329,30087,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,27406,27423,27445,35294,27461,22087,18888,18888,30140,18890,27211,27211,27989,27211,22121,24401,24401,25682,24401,18866,18888,18888,18888,18888,18888,34042,27211,27211,27211,27211,29700,22164,24401,24401,24401,24401,27128,31693,27477,18888,18888,18888,18890,27194,27211,27211,27211,27211,19484,35299,24401,24401,24401,24401,19628,18888,18888,18888,27059,23086,27211,27211,27211,33366,30756,24012,24401,24401,24401,35044,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,20815,27211,30818,19960,33969,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22713,18836,22059,27496,27516,27541,35231,27557,22087,29662,26292,23292,27573,24836,27601,27211,27636,22121,35544,27686,24401,27721,18866,18888,27799,18888,27818,22071,27853,32260,27211,26013,27873,27920,22164,29419,24401,29946,33413,26742,27751,26881,18888,18888,27261,36776,27936,27211,27211,27211,27988,28005,28031,28052,24401,24401,28069,28088,28135,25488,28152,26069,28167,27211,28340,24657,28196,30756,31523,24401,28212,34176,36174,24956,28248,28266,28290,21488,33077,28327,28356,17590,20986,23126,28391,28425,28102,28451,28470,28490,28516,28534,20034,33728,25868,25659,18888,18889,27211,27211,19719,23889,19868,30241,28274,28553,28574,19406,28590,23086,23330,19828,19452,28615,28660,26147,25783,31738,19837,25782,19760,29613,35958,29276,22105,19419,27963,23157,28700,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,22528,18888,18888,18888,18888,18890,27333,27211,27211,27211,27211,19484,30853,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22728,18836,28747,28782,28817,28841,28857,28880,28896,24161,28943,32011,36261,27340,28961,29492,28982,29011,24522,29027,25436,29048,23051,27500,29090,29110,30713,18888,23512,29130,25183,27211,29155,28927,27033,29173,23230,24401,29199,35373,31693,18888,18888,25583,32629,29218,27211,27211,31461,30692,29237,27075,24401,24401,24401,29262,29302,19628,18888,34329,18888,18888,23086,27211,29329,27211,27211,30756,24012,35933,24401,24401,24401,27705,31612,18888,18888,29346,29374,27211,35650,17590,21436,29393,24401,25970,18887,33895,18888,27211,32528,27212,24016,32769,19868,25659,18888,26889,27211,27211,29412,23889,24371,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31768,19840,25783,31738,19837,29435,29508,31102,29550,29606,22105,30300,29462,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22743,18836,22059,29629,29473,34097,33285,29183,29651,27254,18888,29678,33329,32535,27211,29694,29716,22121,19202,24401,32742,29741,18866,26776,33921,28474,18888,18888,25783,29766,27211,29809,27211,35072,22164,35825,24401,29828,24401,24036,36769,25217,18888,18888,29848,18890,27211,29871,27211,26258,27211,29894,24401,29929,24401,36587,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,29725,29962,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18473,18888,18888,19584,27211,27212,24016,29982,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19902,19447,32052,19544,19828,29998,30097,30031,19840,25783,30047,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,30075,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22758,18836,30121,30156,30206,30257,30273,30336,22087,35624,32837,25762,18890,29878,34934,26812,27211,22121,24931,23223,29202,24401,18866,34373,30352,18888,18888,18888,23447,24828,27211,27211,27211,35072,30370,35052,24401,24401,24401,24036,29523,18888,18888,27146,18888,31308,30386,27211,27211,30405,30558,19484,30427,24401,24401,29938,35686,19628,28766,30447,34506,35614,23086,28731,30482,30517,30552,30756,24012,20156,30574,30598,30667,26283,33464,28945,27670,30687,32915,33504,25328,17590,23963,20450,33837,21016,32397,26300,30708,30729,27885,30748,21588,36373,30779,26653,24628,33220,32514,30806,31835,25412,25906,26515,18890,28825,31833,26133,19447,28304,31730,23834,26057,30869,30885,32181,30920,30942,32797,25782,30970,31015,23516,31008,30997,31034,27963,19659,29450,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22773,18836,31058,31074,32463,31125,31141,31197,22087,18888,29534,35471,36738,27211,24342,31213,24424,22121,24401,20175,31229,31917,27736,31245,34334,27175,18888,29094,27286,27211,31278,31336,27211,31355,31371,24401,31402,31418,24401,31437,31693,18888,31619,32841,18888,18890,27211,27211,31460,31477,27211,19484,24401,24401,31497,36581,24401,33020,18888,18888,18888,18888,30007,27211,27211,27211,27211,31516,32310,24401,24401,24401,24401,31539,18888,28762,18888,24651,35740,27211,27211,28644,31565,35796,24401,24401,19318,32188,18888,24334,28366,27212,29966,29832,19868,25659,18888,18889,27211,27211,19719,31587,19868,31635,32435,33693,30105,31663,20005,31715,31757,31784,31812,30015,31851,31878,25783,31898,19837,25782,19760,31015,23516,31008,22105,19419,27963,31933,30221,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22788,18836,22059,25729,30466,31968,24306,31984,32e3,32807,35160,27017,29590,34941,19801,29377,33700,22121,27040,30431,29396,28864,29565,18888,18888,18888,32027,18888,25783,27211,27211,23698,27211,35072,22164,24401,24401,30845,24401,24036,32045,18888,26929,18888,18888,18890,27211,31481,32068,27211,27211,32088,24401,33058,32122,24401,24401,33736,18888,18888,33162,18888,23086,27211,27211,29484,27211,28375,32144,24401,24401,33831,24401,26750,18888,18888,18888,27855,27211,27211,27211,36704,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,33107,22171,33224,24271,32169,31017,27856,31741,19840,25783,31738,30234,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,32204,32232,32252,32677,33295,29074,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,23619,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,32276,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,32299,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,33886,18889,36065,27211,19719,35326,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22803,18836,32335,31647,34666,32351,32367,32417,22087,18888,32433,19335,32451,27211,32479,27107,32500,22121,24401,32551,20085,32572,18866,22287,23753,18888,18888,32602,32665,27211,32693,27211,26972,32713,32729,24401,32764,24401,25877,32785,34768,18888,27390,32823,24594,24855,32857,24890,32878,32904,27211,32942,32977,24401,33e3,29313,24401,30790,26206,27666,33904,18888,23086,36353,27211,33036,27211,30756,24012,32153,24401,33056,24401,35861,18888,18888,30354,27972,27211,27211,33800,17590,20145,24401,24401,34638,20811,18888,18888,33074,27211,27212,36167,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,34616,24169,33093,33123,33157,27856,31741,23862,26552,34302,19837,25782,19760,31015,23516,31008,33178,19973,27963,23497,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22818,18836,33205,28113,33240,34097,33275,29183,22087,33318,35438,18888,18890,33345,26391,33382,27211,22121,33399,28072,33442,24401,18866,22232,18888,33459,18888,18888,33480,33498,25175,27211,27211,26704,22164,24775,35239,24401,24401,25914,29580,18888,18888,31109,25211,33520,33539,27211,27211,33556,36284,19484,33585,24401,24401,33604,32556,19628,18888,18888,31262,33658,23086,27211,27211,33679,27211,30756,24012,24401,24401,33716,24401,26854,27480,18888,33752,27855,33259,34701,27211,17590,32102,24782,23807,24401,18887,18888,18888,27211,27211,27212,33773,36105,19868,25659,18888,23368,27211,29157,19719,23889,34454,29286,18890,33794,25302,33816,19447,34079,33853,31862,31017,27856,31741,33877,28920,33937,19837,30461,34002,22276,36041,34029,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22833,18836,34064,32616,34113,34141,34157,34192,34208,32216,36013,31549,31952,34224,34248,34287,29330,34350,34389,34413,34481,26793,18866,26187,29635,22293,18888,36654,25783,34522,34544,34566,25821,35072,22164,34586,34609,34632,19604,24036,36644,36674,24681,18888,32401,34654,31339,34682,34698,27211,34717,34753,28053,34812,34836,24401,33619,19628,34858,32236,34906,24598,33523,27612,34890,34922,24732,29246,36717,33634,34465,32984,34168,26750,34957,18888,18888,34994,35010,27211,33040,17590,29913,35035,24401,36304,25482,30171,35883,35068,35088,26627,20441,31173,35123,35143,35176,24640,30492,29358,19719,35192,35219,25384,28801,35255,35279,32586,34496,23086,23330,29061,31017,27856,31741,19840,25783,31738,24547,25164,35315,31796,35353,34316,22105,19419,27963,24091,28630,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22848,18836,22059,34782,34088,35389,21008,35405,35421,35454,18888,18888,23466,35487,27211,27211,27211,35513,31154,24401,24401,24401,35560,18888,26863,36664,35601,24872,25783,30389,23536,26250,35647,35666,22164,19522,19564,30582,35682,27697,35575,29114,18888,18888,18888,18890,27211,35702,27211,27211,27211,35723,24401,35527,24401,24401,24401,19628,30184,18888,18888,18888,23086,35739,27211,27211,27211,29139,22938,24401,24401,24401,24401,23898,35756,18888,18888,25025,35778,27211,27211,17590,20064,35795,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,23917,18890,34550,31833,22262,19447,23086,23330,26418,31017,27856,31741,19840,25783,35812,19837,27187,35841,33135,23516,31008,22105,22148,28712,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22863,18836,22059,35877,28723,34097,31164,29183,22087,26758,18888,22592,18890,23989,27211,29812,27211,22121,33778,24401,31421,24401,18866,18888,18888,26872,18888,18888,25783,27211,30732,27211,27211,35072,22164,24401,24908,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22878,18836,22059,27837,27857,35899,24401,35915,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31602,18888,18888,18888,18888,26223,27211,27211,27211,27211,27211,19484,35931,24401,24401,24401,24401,19628,18888,28136,18888,18888,35949,27211,32862,27211,32697,30756,24012,24401,32283,24401,32128,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22893,18836,22059,35974,34882,34097,33960,29183,35996,18888,23311,18888,36029,27211,27211,36064,36081,22121,24401,24401,36104,33950,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,36121,18888,25559,18888,18888,18890,27211,27211,30313,27211,27211,36154,24401,24401,34397,24401,24401,19628,28250,18888,18888,18888,23086,30926,27211,27211,27211,26983,24012,33642,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,19354,27857,36190,24401,36206,22087,18888,18888,18888,18007,27211,27211,27211,24724,22121,24401,24401,24401,30827,18866,18888,36222,18888,28795,18888,25783,35100,27211,27429,27211,35072,22164,30836,24401,24499,24401,24036,31693,18888,36244,18888,18888,18890,27211,36088,27211,27211,27211,19484,24401,28036,24401,24401,24401,19628,18888,18888,35631,18888,35762,27211,27211,36277,27211,34730,24012,24401,24401,36300,24401,36320,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,25712,18888,18888,36346,27211,27212,19184,24402,19868,25659,32029,18889,27211,33359,19719,23889,36369,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22384,18836,36389,19008,19233,20367,36434,17173,17595,36437,17330,17349,18921,17189,17208,17281,20355,36453,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20362,21726,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22369,18836,18987,19008,19233,20367,19008,21737,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21813,18836,36489,19008,19233,20367,19008,17173,17737,36437,17330,17349,18921,17189,17208,17281,20355,17768,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20543,22022,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,36517,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,19307,18888,27857,30756,24401,29183,28015,18888,18888,18888,18890,27211,27211,27211,27211,36567,24401,24401,24401,24401,22953,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,36603,24401,24401,24401,24401,24036,18881,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,36629,36690,18720,19008,19233,20367,19008,17454,17595,36437,17330,17349,18921,17189,17208,17281,20355,17223,17308,17327,17346,18918,36754,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20362,21726,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,0,94242,0,118820,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2482176,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,27,27,27,2207744,2404352,2412544,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3104768,2605056,2207744,2207744,2207744,2207744,2207744,2207744,2678784,2207744,2695168,2207744,2703360,2207744,2711552,2752512,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,0,2158592,2158592,3170304,3174400,2158592,0,139,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2748416,2756608,2777088,2801664,2158592,2158592,2158592,2863104,2891776,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2785280,2207744,2809856,2207744,2207744,2842624,2207744,2207744,2207744,2899968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2473984,2207744,2207744,2494464,2207744,2207744,2207744,2523136,2158592,2404352,2412544,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2564096,2158592,2158592,2605056,2158592,2158592,2158592,2158592,2158592,2158592,2678784,2158592,2695168,2158592,2703360,2158592,2711552,2752512,2158592,2158592,2785280,2158592,2158592,2785280,2158592,2809856,2158592,2158592,2842624,2158592,2158592,2158592,2899968,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,18,0,0,0,0,0,0,0,2211840,0,0,641,0,2158592,0,0,0,0,0,0,0,0,2211840,0,0,32768,0,2158592,0,2158592,2158592,2158592,2383872,2158592,2158592,2158592,2158592,3006464,2383872,2207744,2207744,2207744,2207744,2158877,2158877,2158877,2158877,0,0,0,2158877,2572573,2158877,2158877,0,2207744,2207744,2596864,2207744,2207744,2207744,2207744,2207744,2207744,2641920,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,167936,0,0,2162688,0,0,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,0,0,0,2146304,2146304,2224128,2224128,2232320,2232320,2232320,641,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2531328,2158592,2158592,2158592,2158592,2158592,2617344,2158592,2158592,2158592,2158592,2441216,2445312,2158592,2158592,2158592,2158592,2158592,2158592,2502656,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2580480,2158592,2158592,2158592,2158592,2621440,2158592,2580480,2158592,2158592,2158592,2158592,2621440,2158592,2158592,2158592,2158592,2158592,2158592,2699264,2158592,2158592,2158592,2158592,2158592,2748416,2756608,2777088,2801664,2207744,2863104,2891776,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3018752,2207744,3043328,2207744,2207744,2207744,2207744,3080192,2207744,2207744,3112960,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,172310,279,0,2162688,0,0,2207744,2207744,2207744,3186688,2207744,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2158592,2158592,2158592,2404352,2412544,2158592,2510848,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2584576,2158592,2609152,2158592,2158592,2629632,2158592,2158592,2158592,2686976,2158592,2715648,2158592,2158592,3121152,2158592,2158592,2158592,3149824,2158592,2158592,3170304,3174400,2158592,2367488,2207744,2207744,2207744,2207744,2158592,2158592,2158592,2158592,0,0,0,2158592,2572288,2158592,2158592,0,2207744,2207744,2207744,2433024,2207744,2453504,2461696,2207744,2207744,2207744,2207744,2207744,2207744,2510848,2207744,2207744,2207744,2207744,2207744,2531328,2207744,2207744,2207744,2207744,2207744,2617344,2207744,2207744,2207744,2207744,2158592,2158592,2158592,2158592,0,0,0,2158592,2572288,2158592,2158592,1508,2715648,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2867200,2207744,2904064,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2580480,2207744,2207744,2207744,2207744,2621440,2207744,2207744,2207744,3149824,2207744,2207744,3170304,3174400,2207744,0,0,0,0,0,0,0,0,0,0,138,2158592,2158592,2158592,2404352,2412544,2707456,2732032,2207744,2207744,2207744,2822144,2826240,2207744,2895872,2207744,2207744,2924544,2207744,2207744,2973696,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,285,2158592,2158592,3112960,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3186688,2158592,2207744,2207744,2158592,2158592,2158592,2158592,2158592,0,0,0,2158592,2158592,2158592,2158592,0,0,2535424,2543616,2158592,2158592,2158592,0,0,0,2158592,2158592,2158592,2990080,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2572288,2981888,2207744,2207744,3002368,2207744,3047424,3063808,3076096,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3203072,2708960,2732032,2158592,2158592,2158592,2822144,2827748,2158592,2895872,2158592,2158592,2924544,2158592,2158592,2973696,2158592,2981888,2158592,2158592,3002368,2158592,3047424,3063808,3076096,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3203072,2981888,2158592,2158592,3003876,2158592,3047424,3063808,3076096,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3203072,2207744,2207744,2207744,2207744,2207744,2424832,2207744,2207744,2207744,2207744,2207744,2207744,2207744,20480,0,0,0,0,0,2162688,20480,0,2523136,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2908160,2527232,2207744,2207744,2576384,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2908160,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,286,2158592,2158592,0,0,2158592,2158592,2158592,2158592,2633728,2658304,0,0,2740224,2744320,0,2834432,2207744,2207744,2977792,2207744,2207744,2207744,2207744,3039232,2207744,2207744,2207744,2207744,2207744,2207744,3158016,0,0,29315,0,0,0,0,45,45,45,45,45,933,45,45,45,45,442,45,45,45,45,45,45,45,45,45,67,67,2494464,2158592,2158592,2158592,2524757,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,1504,2158592,2498560,2158592,2158592,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,2736128,2158592,2158592,0,2158592,2912256,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3108864,2158592,2158592,3133440,3145728,3153920,2375680,2379776,2207744,2207744,2420736,2207744,2449408,2207744,2207744,2207744,2498560,2207744,2207744,2207744,2207744,2568192,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,551,2158592,2158592,2158592,2158592,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158592,2506752,0,2020,2158592,2592768,2625536,2207744,2207744,2674688,2736128,2207744,2207744,2207744,2912256,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,542,0,544,2207744,3108864,2207744,2207744,3133440,3145728,3153920,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,641,0,0,0,0,0,0,2367488,2158592,2498560,2158592,2158592,1621,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,0,0,0,0,0,1608,97,97,97,97,97,97,97,97,97,97,1107,97,97,1110,97,97,3133440,3145728,3153920,2158592,2408448,2416640,2158592,2465792,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3014656,2158592,2158592,3051520,2158592,2158592,3100672,2158592,2158592,3121152,2158592,2158592,2158592,3149824,2416640,2207744,2465792,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2633728,2658304,2740224,2744320,2834432,2949120,2158592,2985984,2158592,2998272,2158592,2158592,2158592,3129344,2207744,2408448,2949120,2207744,2985984,2207744,2998272,2207744,2207744,2207744,3129344,2158592,2408448,2416640,2158592,2465792,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,32768,0,0,0,0,0,0,2367488,2949120,2158592,2985984,2158592,2998272,2158592,2158592,2158592,3129344,2158592,2158592,2478080,2158592,2158592,2158592,2535424,2543616,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3117056,2207744,2207744,2478080,2207744,2207744,2207744,2207744,2699264,2207744,2207744,2207744,2207744,2207744,2748416,2756608,2777088,2801664,2207744,2207744,2158877,2158877,2158877,2158877,2158877,0,0,0,2158877,2158877,2158877,2158877,0,0,2535709,2543901,2158877,2158877,2158877,0,0,0,2158877,2158877,2158877,2990365,2158877,2158877,2158730,2158730,2158730,2158730,2158730,2572426,2207744,2535424,2543616,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3117056,2158592,2158592,2478080,2207744,2207744,2990080,2207744,2207744,2158592,2158592,2482176,2158592,2158592,0,0,0,2158592,2158592,2158592,0,2158592,2908160,2158592,2158592,2158592,2977792,2158592,2158592,2158592,2158592,3039232,2158592,2158592,3010560,2207744,2428928,2207744,2514944,2207744,2588672,2207744,2838528,2207744,2207744,2207744,3010560,2158592,2428928,2158592,2514944,0,0,2158592,2588672,2158592,0,2838528,2158592,2158592,2158592,3010560,2158592,2506752,2158592,18,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,0,29315,922,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,1539,45,3006464,2383872,0,2020,2158592,2158592,2158592,2158592,3006464,2158592,2637824,2953216,2158592,2207744,2637824,2953216,2207744,0,0,2158592,2637824,2953216,2158592,2539520,2158592,2539520,2207744,0,0,2539520,2158592,2158592,2158592,2158592,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158592,2506752,0,0,2158592,2207744,0,2158592,2158592,2207744,0,2158592,2158592,2207744,0,2158592,2965504,2965504,2965504,0,0,0,0,0,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2474269,2158877,2158877,0,0,2158877,2158877,2158877,2158877,2634013,2658589,0,0,2740509,2744605,0,2834717,40976,18,36884,45078,24,28,90143,94242,118820,102439,106538,98347,118820,118820,118820,40976,18,18,36884,0,0,0,24,24,24,27,27,27,27,90143,0,0,86016,0,0,2211840,102439,0,0,0,98347,0,2158592,2158592,2158592,2158592,2158592,3158016,0,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,0,94242,0,0,0,2211840,102439,0,0,106538,98347,135,2158592,2158592,2158592,2158592,2158592,2158592,2564096,2158592,2158592,2158592,2158592,2158592,2596864,2158592,2158592,2158592,2158592,2158592,2158592,2641920,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2781184,2793472,2494464,2158592,2158592,2158592,2523136,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,0,27,27,0,2158592,2498560,2158592,2158592,0,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,0,0,0,0,0,2211840,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2473984,2158592,2158592,2494464,2158592,2158592,2158592,3006464,2383872,0,0,2158592,2158592,2158592,2158592,3006464,2158592,2637824,2953216,2158592,2207744,2637824,2953216,40976,18,36884,45078,24,27,147488,94242,147456,147488,106538,98347,0,0,147456,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,0,81920,0,94242,0,0,0,2211840,0,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,2428928,2158592,2514944,2158592,2588672,2158592,2838528,2158592,2158592,40976,18,151573,45078,24,27,90143,94242,0,102439,106538,98347,0,0,0,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,0,1315,0,97,97,97,97,97,97,97,97,97,97,1487,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,0,0,29315,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,130,94242,0,0,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,3096576,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2158592,18,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,644,2207744,2207744,2207744,3186688,2207744,0,1080,0,1084,0,1088,0,0,0,0,0,0,0,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2531466,2158730,2158730,2158730,2158730,2158730,2617482,0,94242,0,0,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2781184,2793472,2158592,2818048,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,40976,18,36884,45078,24,27,90143,159779,159744,102439,159779,98347,0,0,159744,40976,18,18,36884,0,45078,0,2224253,172032,2224253,2232448,2232448,172032,2232448,90143,0,0,2170880,0,0,550,829,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,124,124,127,127,127,40976,18,36884,45078,25,29,90143,94242,0,102439,106538,98347,0,0,163931,40976,18,18,36884,0,45078,249856,24,24,24,27,27,27,27,90143,0,0,2170880,0,0,827,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,4243810,4243810,24,24,27,27,27,2207744,0,0,0,0,0,0,2166784,0,0,0,0,57344,286,2158592,2158592,2158592,2158592,2707456,2732032,2158592,2158592,2158592,2822144,2826240,2158592,2895872,2158592,2158592,2924544,2158592,2158592,2973696,2158592,2207744,2207744,2207744,3186688,2207744,0,0,0,0,0,0,53248,0,0,0,0,0,97,97,97,97,97,1613,97,97,97,97,97,97,1495,97,97,97,97,97,97,97,97,97,566,97,97,97,97,97,97,2207744,0,0,0,0,0,0,2166784,546,0,0,0,0,286,2158592,2158592,2158592,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,17,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,20480,120,121,18,18,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,0,2170880,0,53248,550,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,196608,18,266240,24,24,27,27,27,0,94242,0,0,0,38,102439,0,0,106538,98347,0,45,45,45,45,45,45,45,1535,45,45,45,45,45,45,45,1416,45,45,45,45,45,45,45,45,424,45,45,45,45,45,45,45,45,45,405,45,45,45,45,45,45,45,45,45,45,45,45,45,199,45,45,67,67,67,67,67,491,67,67,67,67,67,67,67,67,67,67,67,1766,67,67,67,1767,67,24850,24850,12564,12564,0,0,2166784,546,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,743,57889,0,2170880,0,0,550,0,97,97,97,97,97,97,97,97,97,45,45,45,45,45,45,45,45,1856,45,1858,1859,67,67,67,1009,67,67,67,67,67,67,67,67,67,67,67,1021,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,0,2367773,2158877,2158877,2158877,2158877,2158877,2158877,2699549,2158877,2158877,2158877,2158877,2158877,2748701,2756893,2777373,2801949,97,1115,97,97,97,97,97,97,97,97,97,97,97,97,97,97,857,97,67,67,67,67,67,1258,67,67,67,67,67,67,67,67,67,67,67,1826,67,97,97,97,97,97,97,1338,97,97,97,97,97,97,97,97,97,97,97,97,97,870,97,97,67,67,67,1463,67,67,67,67,67,67,67,67,67,67,67,67,67,1579,67,67,97,97,97,1518,97,97,97,97,97,97,97,97,97,97,97,97,97,904,905,97,97,97,97,1620,97,97,97,97,97,97,97,97,97,97,97,0,921,0,0,0,0,0,0,45,1679,67,67,67,1682,67,67,67,67,67,67,67,67,67,1690,67,0,0,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,669,45,45,45,45,45,45,45,45,45,45,45,45,189,45,45,45,1748,45,45,45,1749,1750,45,45,45,45,45,45,45,45,67,67,67,67,1959,67,67,67,67,1768,67,67,67,67,67,67,67,67,97,97,97,97,97,97,97,97,97,1791,97,97,97,97,97,97,97,97,45,45,45,45,45,45,1802,67,1817,67,67,67,67,67,67,1823,67,67,67,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,97,97,1848,45,45,45,45,45,45,45,45,45,45,45,659,45,45,45,45,45,45,45,1863,67,67,67,67,67,67,67,67,67,67,67,67,495,67,67,67,67,67,1878,97,97,97,97,0,0,0,97,97,97,97,0,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,45,45,45,45,45,67,67,67,67,97,97,97,97,0,0,0,1973,97,97,97,0,97,97,97,97,97,97,97,97,97,97,97,97,97,1165,97,1167,67,24850,24850,12564,12564,0,0,2166784,0,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,0,97,97,1789,97,0,94242,0,0,0,2211840,102439,0,0,106538,98347,136,2158592,2158592,2158592,2158592,2158592,3158016,229376,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,67,24850,24850,12564,12564,0,0,280,547,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,1788,97,97,0,97,2024,97,45,45,45,45,45,45,67,67,67,67,67,67,67,67,235,67,67,67,67,67,57889,547,547,0,0,550,0,97,97,97,97,97,97,97,97,97,45,45,45,1799,45,45,45,67,67,67,67,67,25398,0,13112,0,54074,0,0,1092,0,0,0,0,0,97,97,97,97,1612,97,97,97,97,1616,97,1297,1472,0,0,0,0,1303,1474,0,0,0,0,1309,1476,0,0,0,0,97,97,97,1481,97,97,97,97,97,97,1488,97,0,1474,0,1476,0,97,97,97,97,97,97,97,97,97,97,97,607,97,97,97,97,40976,18,36884,45078,26,30,90143,94242,0,102439,106538,98347,0,0,213080,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,143448,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,0,0,0,0,97,97,97,97,1482,97,1483,97,97,97,97,97,97,1326,97,97,1329,1330,97,97,97,97,97,97,1159,1160,97,97,97,97,97,97,97,97,590,97,97,97,97,97,97,97,0,94242,0,0,0,2211974,102439,0,0,106538,98347,0,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2474122,2158730,2158730,2494602,2158730,2158730,2158730,2809994,2158730,2158730,2842762,2158730,2158730,2158730,2900106,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3014794,2158730,2158730,3051658,2158730,2158730,3100810,2158730,2158730,2158730,2158730,3096714,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2207744,2207744,2207744,2207744,2207744,2572288,2207744,2207744,2207744,2207744,541,541,543,543,0,0,2166784,0,548,549,549,0,286,2158877,2158877,2158877,2863389,2892061,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3186973,2158877,0,0,0,0,0,0,0,0,2367626,2158877,2404637,2412829,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2564381,2158877,2158877,2605341,2158877,2158877,2158877,2158877,2158877,2158877,2679069,2158877,2695453,2158877,2703645,2158877,2711837,2752797,2158877,0,2158877,2158877,2158877,2384010,2158730,2158730,2158730,2158730,3006602,2383872,2207744,2207744,2207744,2207744,2207744,2207744,3096576,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,0,0,2158877,2785565,2158877,2810141,2158877,2158877,2842909,2158877,2158877,2158877,2900253,2158877,2158877,2158877,2158877,2158877,2531613,2158877,2158877,2158877,2158877,2158877,2617629,2158877,2158877,2158877,2158877,2158730,2818186,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3105053,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,0,0,0,0,0,97,97,97,1611,97,97,97,97,97,97,97,1496,97,97,1499,97,97,97,97,97,2441354,2445450,2158730,2158730,2158730,2158730,2158730,2158730,2502794,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2433162,2158730,2453642,2461834,2158730,2158730,2158730,2158730,2158730,2158730,2580618,2158730,2158730,2158730,2158730,2621578,2158730,2158730,2158730,2158730,2158730,2158730,2699402,2158730,2158730,2158730,2158730,2678922,2158730,2695306,2158730,2703498,2158730,2711690,2752650,2158730,2158730,2785418,2158730,2158730,2158730,3113098,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3186826,2158730,2207744,2207744,2207744,2207744,2781184,2793472,2207744,2818048,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,541,0,543,2158877,2502941,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2580765,2158877,2158877,2158877,2158877,2621725,2158877,3019037,2158877,3043613,2158877,2158877,2158877,2158877,3080477,2158877,2158877,3113245,2158877,2158877,2158877,2158877,0,2158877,2908445,2158877,2158877,2158877,2978077,2158877,2158877,2158877,2158877,3039517,2158877,2158730,2510986,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2584714,2158730,2609290,2158730,2158730,2629770,2158730,2158730,2158730,2388106,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2605194,2158730,2158730,2158730,2158730,2687114,2158730,2715786,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2867338,2158730,2904202,2158730,2158730,2158730,2642058,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2781322,2793610,2158730,3121290,2158730,2158730,2158730,3149962,2158730,2158730,3170442,3174538,2158730,2367488,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2441216,2445312,2207744,2207744,2207744,2207744,2207744,2207744,2502656,2158877,2433309,2158877,2453789,2461981,2158877,2158877,2158877,2158877,2158877,2158877,2511133,2158877,2158877,2158877,2158877,2584861,2158877,2609437,2158877,2158877,2629917,2158877,2158877,2158877,2687261,2158877,2715933,2158877,2158730,2158730,2973834,2158730,2982026,2158730,2158730,3002506,2158730,3047562,3063946,3076234,2158730,2158730,2158730,2158730,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158877,2507037,0,0,2158877,2158730,2158730,2158730,3203210,2207744,2207744,2207744,2207744,2207744,2424832,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2564096,2207744,2207744,2207744,2707741,2732317,2158877,2158877,2158877,2822429,2826525,2158877,2896157,2158877,2158877,2924829,2158877,2158877,2973981,2158877,18,0,0,0,0,0,0,0,2211840,0,0,642,0,2158592,0,45,1529,45,45,45,45,45,45,45,45,45,45,45,45,45,1755,45,67,67,2982173,2158877,2158877,3002653,2158877,3047709,3064093,3076381,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3203357,2523274,2527370,2158730,2158730,2576522,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2908298,2494749,2158877,2158877,2158877,2523421,2527517,2158877,2158877,2576669,2158877,2158877,2158877,2158877,2158877,2158877,0,40976,0,18,18,4321280,2224253,2232448,4329472,2232448,2158730,2498698,2158730,2158730,2158730,2158730,2568330,2158730,2592906,2625674,2158730,2158730,2674826,2736266,2158730,2158730,2158730,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2158730,2912394,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3109002,2158730,2158730,3133578,3145866,3154058,2375680,2207744,3108864,2207744,2207744,3133440,3145728,3153920,2375965,2380061,2158877,2158877,2421021,2158877,2449693,2158877,2158877,2158877,3117341,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3104906,2158730,2158730,2158730,2158730,2158730,2158730,2158877,2498845,2158877,2158877,0,2158877,2158877,2568477,2158877,2593053,2625821,2158877,2158877,2674973,0,0,0,0,97,97,1480,97,97,97,97,97,1485,97,97,97,0,97,97,1729,97,1731,97,97,97,97,97,97,97,311,97,97,97,97,97,97,97,97,1520,97,97,1523,97,97,1526,97,2736413,2158877,2158877,0,2158877,2912541,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3109149,2158877,2158877,3014941,2158877,2158877,3051805,2158877,2158877,3100957,2158877,2158877,3121437,2158877,2158877,2158877,3150109,3133725,3146013,3154205,2158730,2408586,2416778,2158730,2465930,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3018890,2158730,3043466,2158730,2158730,2158730,2158730,3080330,2633866,2658442,2740362,2744458,2834570,2949258,2158730,2986122,2158730,2998410,2158730,2158730,2158730,3129482,2207744,2408448,2949120,2207744,2985984,2207744,2998272,2207744,2207744,2207744,3129344,2158877,2408733,2416925,2158877,2466077,2158877,2158877,3170589,3174685,2158877,0,0,0,2158730,2158730,2158730,2158730,2158730,2424970,2158730,2158730,2158730,2158730,2707594,2732170,2158730,2158730,2158730,2822282,2826378,2158730,2896010,2158730,2158730,2924682,2949405,2158877,2986269,2158877,2998557,2158877,2158877,2158877,3129629,2158730,2158730,2478218,2158730,2158730,2158730,2535562,2543754,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3117194,2207744,2207744,2478080,2207744,2207744,2207744,2207744,3014656,2207744,2207744,3051520,2207744,2207744,3100672,2207744,2207744,3121152,2207744,2207744,2207744,2207744,2207744,2584576,2207744,2609152,2207744,2207744,2629632,2207744,2207744,2207744,2686976,2207744,2207744,2535424,2543616,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3117056,2158877,2158877,2478365,0,2158877,2158877,2158877,2158877,2158877,2158877,2158730,2158730,2482314,2158730,2158730,2158730,2158730,2158730,2158730,2207744,2207744,2207744,2387968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,823,0,825,2158730,2158730,2158730,2990218,2158730,2158730,2207744,2207744,2482176,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,135,0,2207744,2207744,2990080,2207744,2207744,2158877,2158877,2482461,2158877,2158877,0,0,0,2158877,2158877,2158877,2158877,2158877,2158730,2429066,2158730,2515082,2158730,2588810,2158730,2838666,2158730,2158730,2158730,3010698,2207744,2428928,2207744,2514944,2207744,2588672,2207744,2838528,2207744,2207744,2207744,3010560,2158877,2429213,2158877,2515229,0,0,2158877,2588957,2158877,0,2838813,2158877,2158877,2158877,3010845,2158730,2506890,2158730,2158730,2158730,2748554,2756746,2777226,2801802,2158730,2158730,2158730,2863242,2891914,2158730,2158730,2158730,2158730,2158730,2158730,2564234,2158730,2158730,2158730,2158730,2158730,2597002,2158730,2158730,2158730,3006464,2384157,0,0,2158877,2158877,2158877,2158877,3006749,2158730,2637962,2953354,2158730,2207744,2637824,2953216,2207744,0,0,2158877,2638109,2953501,2158877,2539658,2158730,2539520,2207744,0,0,2539805,2158877,2158730,2158730,2158730,2977930,2158730,2158730,2158730,2158730,3039370,2158730,2158730,2158730,2158730,2158730,2158730,3158154,2207744,0,2158877,2158730,2207744,0,2158877,2158730,2207744,0,2158877,2965642,2965504,2965789,0,0,0,0,1315,0,0,0,0,97,97,97,97,97,97,97,1484,97,97,97,97,2158592,18,0,122880,0,0,0,77824,0,2211840,0,0,0,0,2158592,0,356,0,0,0,0,0,0,28809,0,139,45,45,45,45,45,45,1751,45,45,45,45,45,45,45,67,67,1427,67,67,67,67,67,1432,67,67,67,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,122880,0,0,0,0,1315,0,0,0,0,97,97,97,97,97,97,1322,550,0,286,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,4329472,27,27,2207744,2207744,2977792,2207744,2207744,2207744,2207744,3039232,2207744,2207744,2207744,2207744,2207744,2207744,3158016,542,0,0,0,542,0,544,0,0,0,544,0,550,0,0,0,0,0,97,97,1610,97,97,97,97,97,97,97,97,898,97,97,97,97,97,97,97,0,94242,0,0,0,2211840,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2158592,2158592,2158592,40976,18,36884,45078,24,27,90143,94242,237568,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,192512,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,94,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,96,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,12378,40976,18,18,36884,0,45078,0,24,24,24,126,126,126,126,90143,0,0,2170880,0,0,0,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,20480,40976,0,18,18,24,24,27,27,27,40976,18,36884,45078,24,27,90143,94242,241664,102439,106538,98347,0,0,20568,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,200797,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,0,0,44,0,0,20575,40976,18,36884,45078,24,27,90143,94242,0,41,41,41,0,0,1126400,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,0,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,89,40976,18,18,36884,0,45078,0,24,24,24,27,131201,27,27,90143,0,0,2170880,0,0,550,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2441216,2445312,2158592,2158592,2158592,2158592,2158592,0,94242,0,0,208896,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,0,0,0,0,0,0,0,2367488,32768,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2433024,2158592,2453504,2461696,2158592,2158592,2158592,2158592,2158592,2158592,2510848,2158592,2158592,2158592,2158592,40976,18,36884,245783,24,27,90143,94242,0,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,221184,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,180224,40976,18,18,36884,155648,45078,0,24,24,217088,27,27,27,217088,90143,0,0,2170880,0,0,828,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2207744,2387968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,233472,0,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,45,718,45,45,45,45,45,45,45,45,45,727,131427,0,0,0,0,362,0,365,28809,367,139,45,45,45,45,45,45,1808,45,45,45,45,67,67,67,67,67,67,67,97,97,0,0,97,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,97,0,0,97,97,97,97,97,97,1787,0,97,97,0,97,97,97,45,45,45,45,2029,45,67,67,67,67,2033,57889,0,0,54074,54074,550,0,97,97,97,97,97,97,97,97,97,45,1798,45,45,1800,45,45,0,1472,0,0,0,0,0,1474,0,0,0,0,0,1476,0,0,0,0,1315,0,0,0,0,97,97,97,97,1320,97,97,0,0,97,97,97,97,1786,97,0,0,97,97,0,1790,1527,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,663,67,24850,24850,12564,12564,0,57889,281,0,0,53531,53531,367,286,97,97,0,0,97,97,97,1785,97,97,0,0,97,97,0,97,97,1979,97,97,45,45,1983,45,1984,45,45,45,45,45,652,45,45,45,45,45,45,45,45,45,45,690,45,45,694,45,45,40976,19,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,262144,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,46,67,98,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,45,67,97,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,258048,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,1122423,40976,18,36884,45078,24,27,90143,94242,0,1114152,1114152,1114152,0,0,1114112,40976,18,36884,45078,24,27,90143,94242,37,102439,106538,98347,0,0,204800,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,57436,40976,18,36884,45078,24,27,33,33,0,33,33,33,0,0,0,40976,18,18,36884,0,45078,0,124,124,124,127,127,127,127,90143,0,0,2170880,0,0,550,0,2158877,2158877,2158877,2388253,2158877,2158877,2158877,2158877,2158877,2781469,2793757,2158877,2818333,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2867485,2158877,2904349,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3096861,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2441501,2445597,2158877,2158877,2158877,2158877,2158877,40976,122,123,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,45,936,2158592,4243810,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,935,45,45,45,715,45,45,45,45,45,45,45,723,45,45,45,45,45,1182,45,45,45,45,45,45,45,45,45,45,430,45,45,45,45,45,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,47,68,99,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,48,69,100,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,49,70,101,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,50,71,102,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,51,72,103,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,52,73,104,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,53,74,105,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,54,75,106,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,55,76,107,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,56,77,108,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,57,78,109,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,58,79,110,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,59,80,111,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,60,81,112,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,61,82,113,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,62,83,114,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,63,84,115,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,64,85,116,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,65,86,117,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,66,87,118,40976,18,36884,45078,24,27,90143,94242,118820,102439,106538,98347,118820,118820,118820,40976,18,18,0,0,45078,0,24,24,24,27,27,27,27,90143,0,0,1314,0,0,0,0,0,0,97,97,97,97,97,1321,97,18,131427,0,0,0,0,0,0,362,0,0,365,0,367,0,0,1315,0,97,97,97,97,97,97,97,97,97,97,97,97,97,1360,97,97,131,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,145,149,45,45,45,45,45,174,45,179,45,185,45,188,45,45,202,67,255,67,67,269,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,292,296,97,97,97,97,97,321,97,326,97,332,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,646,335,97,97,349,97,97,0,40976,0,18,18,24,24,27,27,27,437,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,523,67,67,67,67,67,67,67,67,67,67,67,67,511,67,67,67,97,97,97,620,97,97,97,97,97,97,97,97,97,97,97,97,97,1501,1502,97,793,67,67,796,67,67,67,67,67,67,67,67,67,67,808,67,0,0,97,97,97,97,45,45,67,67,0,0,97,97,2052,67,67,67,67,813,67,67,67,67,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,830,97,97,97,97,97,97,97,97,97,315,97,97,97,97,97,97,841,97,97,97,97,97,97,97,97,97,854,97,97,97,97,97,97,589,97,97,97,97,97,97,97,97,97,867,97,97,97,97,97,97,97,891,97,97,894,97,97,97,97,97,97,97,97,97,97,906,45,937,45,45,940,45,45,45,45,45,45,948,45,45,45,45,45,734,735,67,737,67,738,67,740,67,67,67,45,967,45,45,45,45,45,45,45,45,45,45,45,45,45,45,435,45,45,45,980,45,45,45,45,45,45,45,45,45,45,45,45,45,415,45,45,67,67,1024,67,67,67,67,67,67,67,67,67,67,67,67,67,97,97,97,67,67,67,67,67,25398,1081,13112,1085,54074,1089,0,0,0,0,0,0,363,0,28809,0,139,45,45,45,45,45,45,1674,45,45,45,45,45,45,45,45,67,1913,67,1914,67,67,67,1918,67,67,97,97,97,97,1118,97,97,97,97,97,97,97,97,97,97,97,630,97,97,97,97,97,1169,97,97,97,97,97,0,921,0,1175,0,0,0,0,45,45,45,45,45,45,1534,45,45,45,45,45,1538,45,45,45,45,1233,45,45,45,45,45,45,67,67,67,67,67,67,67,67,742,67,45,45,1191,45,45,45,45,45,45,45,45,45,45,45,45,45,454,67,67,67,67,1243,67,67,67,67,67,67,67,67,67,67,67,1251,67,0,0,97,97,97,97,45,45,67,67,2050,0,97,97,45,45,45,732,45,45,67,67,67,67,67,67,67,67,67,67,67,67,97,97,67,67,67,1284,67,67,67,67,67,67,67,67,67,67,67,67,772,67,67,67,1293,67,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,368,2158592,2158592,2158592,2404352,2412544,1323,97,97,97,97,97,97,97,97,97,97,97,1331,97,97,97,0,97,97,97,97,97,97,97,97,97,97,97,1737,97,1364,97,97,97,97,97,97,97,97,97,97,97,97,1373,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,647,45,45,1387,45,45,1391,45,45,45,45,45,45,45,45,45,45,410,45,45,45,45,45,1400,45,45,45,45,45,45,45,45,45,45,1407,45,45,45,45,45,941,45,943,45,45,45,45,45,45,951,45,67,1438,67,67,67,67,67,67,67,67,67,67,1447,67,67,67,67,67,67,782,67,67,67,67,67,67,67,67,67,756,67,67,67,67,67,67,97,1491,97,97,97,97,97,97,97,97,97,97,1500,97,97,97,0,97,97,97,97,97,97,97,97,97,97,1736,97,45,45,1541,45,45,45,45,45,45,45,45,45,45,45,45,45,677,45,45,67,1581,67,67,67,67,67,67,67,67,67,67,67,67,67,67,791,792,67,67,67,67,1598,67,1600,67,67,67,67,67,67,67,67,1472,97,97,97,1727,97,97,97,97,97,97,97,97,97,97,97,97,97,1513,97,97,67,67,97,1879,97,1881,97,0,1884,0,97,97,97,97,0,0,97,97,97,97,97,0,0,0,1842,97,97,67,67,67,67,67,97,97,97,97,1928,0,0,0,97,97,97,97,97,97,45,45,45,45,45,1903,45,45,45,67,67,67,67,97,97,97,97,1971,0,0,97,97,97,97,0,97,97,97,97,97,97,97,97,97,0,0,0,45,45,45,1381,45,45,45,45,1976,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,45,1747,809,67,67,67,67,67,67,67,67,67,67,67,25398,542,13112,544,97,907,97,97,97,97,97,97,97,97,97,97,97,638,0,0,0,0,1478,97,97,97,97,97,97,97,97,97,97,97,1150,97,97,97,97,67,67,67,67,1244,67,67,67,67,67,67,67,67,67,67,67,477,67,67,67,67,67,67,1294,67,67,67,67,0,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1324,97,97,97,97,97,97,97,97,97,97,97,97,97,0,0,0,1374,97,97,97,97,0,1175,0,45,45,45,45,45,45,45,45,945,45,45,45,45,45,45,45,45,1908,45,45,1910,45,67,67,67,67,67,67,67,67,1919,67,0,0,97,97,97,97,45,2048,67,2049,0,0,97,2051,45,45,45,939,45,45,45,45,45,45,45,45,45,45,45,45,397,45,45,45,1921,67,67,1923,67,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,1947,45,1935,0,0,0,97,1939,97,97,1941,97,45,45,45,45,45,45,382,389,45,45,45,45,45,45,45,45,1810,45,45,1812,67,67,67,67,67,256,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,336,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,0,362,0,365,28809,367,139,45,45,371,373,45,45,45,955,45,45,45,45,45,45,45,45,45,45,45,45,413,45,45,45,457,459,67,67,67,67,67,67,67,67,473,67,478,67,67,482,67,67,485,67,67,67,67,67,67,67,67,67,67,67,67,67,97,1828,97,554,556,97,97,97,97,97,97,97,97,570,97,575,97,97,579,97,97,582,97,97,97,97,97,97,97,97,97,97,97,97,97,330,97,97,67,746,67,67,67,67,67,67,67,67,67,758,67,67,67,67,67,67,67,1575,67,67,67,67,67,67,67,67,493,67,67,67,67,67,67,67,97,97,844,97,97,97,97,97,97,97,97,97,856,97,97,97,0,97,97,97,97,97,97,97,97,1735,97,97,97,0,97,97,97,97,97,97,97,1642,97,1644,97,97,890,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,67,67,67,67,1065,1066,67,67,67,67,67,67,67,67,67,67,532,67,67,67,67,67,67,67,1451,67,67,67,67,67,67,67,67,67,67,67,67,67,496,67,67,97,97,1505,97,97,97,97,97,97,97,97,97,97,97,97,97,593,97,97,0,1474,0,1476,0,97,97,97,97,97,97,97,97,97,97,1617,97,97,1635,0,1637,97,97,97,97,97,97,97,97,97,97,97,885,97,97,97,97,67,67,1704,67,67,67,67,97,97,97,97,97,97,97,97,97,565,572,97,97,97,97,97,97,97,97,1832,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,1946,45,45,67,67,67,67,67,97,1926,97,1927,97,0,0,0,97,97,1934,2043,0,0,97,97,97,2047,45,45,67,67,0,1832,97,97,45,45,45,981,45,45,45,45,45,45,45,45,45,45,45,45,1227,45,45,45,131427,0,0,0,0,362,0,365,28809,367,139,45,45,372,45,45,45,45,1661,1662,45,45,45,45,45,1666,45,45,45,45,45,1673,45,1675,45,45,45,45,45,45,45,67,1426,67,67,67,67,67,67,67,67,67,67,1275,67,67,67,67,67,45,418,45,45,420,45,45,423,45,45,45,45,45,45,45,45,959,45,45,962,45,45,45,45,458,67,67,67,67,67,67,67,67,67,67,67,67,67,67,483,67,67,67,67,504,67,67,506,67,67,509,67,67,67,67,67,67,67,528,67,67,67,67,67,67,67,67,1287,67,67,67,67,67,67,67,555,97,97,97,97,97,97,97,97,97,97,97,97,97,97,580,97,97,97,97,601,97,97,603,97,97,606,97,97,97,97,97,97,848,97,97,97,97,97,97,97,97,97,1498,97,97,97,97,97,97,45,45,714,45,45,45,45,45,45,45,45,45,45,45,45,45,989,990,45,67,67,67,67,67,1011,67,67,67,67,1015,67,67,67,67,67,67,67,753,67,67,67,67,67,67,67,67,467,67,67,67,67,67,67,67,45,45,1179,45,45,45,45,45,45,45,45,45,45,45,45,45,1003,1004,67,1217,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,728,67,1461,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1034,67,97,1516,97,97,97,97,97,97,97,97,97,97,97,97,97,97,871,97,67,67,67,1705,67,67,67,97,97,97,97,97,97,97,97,97,567,97,97,97,97,97,97,97,97,97,97,1715,97,97,97,97,97,97,97,97,97,0,0,0,45,45,1380,45,45,45,45,45,67,67,97,97,97,97,97,0,0,0,97,1887,97,97,0,0,97,97,97,0,97,97,97,97,97,2006,45,45,1907,45,45,45,45,45,67,67,67,67,67,67,67,67,67,1920,67,97,0,2035,97,97,97,97,97,45,45,45,45,67,67,67,1428,67,67,67,67,67,67,1435,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,146,45,152,45,45,165,45,175,45,180,45,45,187,190,195,45,203,254,257,262,67,270,67,67,0,24850,12564,0,0,0,281,28809,53531,97,97,97,293,97,299,97,97,312,97,322,97,327,97,97,334,337,342,97,350,97,97,0,40976,0,18,18,24,24,27,27,27,67,484,67,67,67,67,67,67,67,67,67,67,67,67,67,499,97,581,97,97,97,97,97,97,97,97,97,97,97,97,97,596,648,45,650,45,651,45,653,45,45,45,657,45,45,45,45,45,45,1954,67,67,67,1958,67,67,67,67,67,67,67,768,67,67,67,67,67,67,67,67,769,67,67,67,67,67,67,67,680,45,45,45,45,45,45,45,45,688,689,691,45,45,45,45,45,983,45,45,45,45,45,45,45,45,45,45,947,45,45,45,45,952,45,45,698,699,45,45,702,703,45,45,45,45,45,45,45,711,744,67,67,67,67,67,67,67,67,67,757,67,67,67,67,761,67,67,67,67,765,67,767,67,67,67,67,67,67,67,67,775,776,778,67,67,67,67,67,67,785,786,67,67,789,790,67,67,67,67,67,67,1442,67,67,67,67,67,67,67,67,67,97,97,97,1775,97,97,97,67,67,67,67,67,798,67,67,67,802,67,67,67,67,67,67,67,67,1465,67,67,1468,67,67,1471,67,67,810,67,67,67,67,67,67,67,67,67,821,25398,542,13112,544,57889,0,0,54074,54074,550,0,833,97,835,97,836,97,838,97,97,0,0,97,97,97,2002,97,97,97,97,97,45,45,45,45,45,1740,45,45,45,1744,45,45,45,97,842,97,97,97,97,97,97,97,97,97,855,97,97,97,97,0,1717,1718,97,97,97,97,97,1722,97,0,0,859,97,97,97,97,863,97,865,97,97,97,97,97,97,97,97,604,97,97,97,97,97,97,97,873,874,876,97,97,97,97,97,97,883,884,97,97,887,888,97,18,131427,0,0,0,0,0,0,362,225280,0,365,0,367,0,45,45,45,1531,45,45,45,45,45,45,45,45,45,45,45,1199,45,45,45,45,45,97,97,908,97,97,97,97,97,97,97,97,97,919,638,0,0,0,0,2158877,2158877,2158877,2158877,2158877,2425117,2158877,2158877,2158877,2158877,2158877,2158877,2597149,2158877,2158877,2158877,2158877,2158877,2158877,2642205,2158877,2158877,2158877,2158877,2158877,3158301,0,2375818,2379914,2158730,2158730,2420874,2158730,2449546,2158730,2158730,953,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,965,978,45,45,45,45,45,45,985,45,45,45,45,45,45,45,45,971,45,45,45,45,45,45,45,67,67,67,67,67,1027,67,1029,67,67,67,67,67,67,67,67,67,1455,67,67,67,67,67,67,67,1077,1078,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,366,0,139,2158730,2158730,2158730,2404490,2412682,1113,97,97,97,97,97,97,1121,97,1123,97,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1540,1155,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,615,1168,97,97,1171,1172,97,97,0,921,0,1175,0,0,0,0,45,45,45,45,45,1533,45,45,45,45,45,45,45,45,45,1663,45,45,45,45,45,45,45,45,45,183,45,45,45,45,201,45,45,45,1219,45,45,45,45,45,45,45,1226,45,45,45,45,45,168,45,45,45,45,45,45,45,45,45,45,427,45,45,45,45,45,45,45,1231,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,1242,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1046,67,67,1254,67,1256,67,67,67,67,67,67,67,67,67,67,67,67,806,807,67,67,97,1336,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1111,97,97,97,97,97,1351,97,97,97,1354,97,97,97,1359,97,97,97,0,97,97,97,97,1640,97,97,97,97,97,97,97,897,97,97,97,902,97,97,97,97,97,97,97,97,1366,97,97,97,97,97,97,97,1371,97,97,97,0,97,97,97,1730,97,97,97,97,97,97,97,97,915,97,97,97,97,0,360,0,67,67,67,1440,67,67,67,67,67,67,67,67,67,67,67,67,1017,67,1019,67,67,67,67,67,1453,67,67,67,67,67,67,67,67,67,67,1459,97,97,97,1493,97,97,97,97,97,97,97,97,97,97,97,97,97,1525,97,97,97,97,97,97,1507,97,97,97,97,97,97,97,97,97,97,1514,67,67,67,67,1584,67,67,67,67,67,1590,67,67,67,67,67,67,67,783,67,67,67,788,67,67,67,67,67,67,67,67,67,1599,1601,67,67,67,1604,67,1606,1607,67,1472,0,1474,0,1476,0,97,97,97,97,97,97,1614,97,97,97,97,45,45,1850,45,45,45,45,1855,45,45,45,45,45,1222,45,45,45,45,45,45,45,45,45,1229,97,1618,97,97,97,97,97,97,97,1625,97,97,97,97,97,0,1175,0,45,45,45,45,45,45,45,45,447,45,45,45,45,45,67,67,1633,97,97,0,97,97,97,97,97,97,97,97,1643,1645,97,97,0,0,97,97,1784,97,97,97,0,0,97,97,0,97,1894,1895,97,1897,97,45,45,45,45,45,45,45,45,45,656,45,45,45,45,45,45,97,1648,97,1650,1651,97,0,45,45,45,1654,45,45,45,45,45,169,45,45,45,45,45,45,45,45,45,45,658,45,45,45,45,664,45,45,1659,45,45,45,45,45,45,45,45,45,45,45,45,45,1187,45,45,1669,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,1005,67,67,1681,67,67,67,67,67,67,67,1686,67,67,67,67,67,67,67,784,67,67,67,67,67,67,67,67,1055,67,67,67,67,1060,67,67,97,97,1713,97,0,97,97,97,97,97,97,97,97,97,0,0,0,1378,45,45,45,45,45,45,45,408,45,45,45,45,45,45,45,45,1547,45,1549,45,45,45,45,45,97,97,1780,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,45,45,2027,2028,45,45,67,67,2031,2032,67,45,45,1804,45,45,45,45,45,45,45,45,67,67,67,67,67,67,1917,67,67,67,67,67,67,67,1819,67,67,67,67,67,67,67,67,97,97,97,1708,97,97,97,97,97,45,45,1862,67,67,67,67,67,67,67,67,67,67,67,67,67,497,67,67,67,1877,97,97,97,97,97,0,0,0,97,97,97,97,0,0,97,97,97,97,97,1839,0,0,97,97,97,97,1936,0,0,97,97,97,97,97,97,1943,1944,1945,45,45,45,45,670,45,45,45,45,674,45,45,45,45,678,45,1948,45,1950,45,45,45,45,1955,1956,1957,67,67,67,1960,67,1962,67,67,67,67,1967,1968,1969,97,0,0,0,97,97,1974,97,0,1936,0,97,97,97,97,97,97,45,45,45,45,45,45,45,45,1906,0,1977,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,1746,45,45,45,45,2011,67,67,2013,67,67,67,2017,97,97,0,0,2021,97,8192,97,97,2025,45,45,45,45,45,45,67,67,67,67,67,1916,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,140,45,45,45,1180,45,45,45,45,1184,45,45,45,45,45,45,45,387,45,392,45,45,396,45,45,399,45,45,67,207,67,67,67,67,67,67,236,67,67,67,67,67,67,67,800,67,67,67,67,67,67,67,67,67,1603,67,67,67,67,67,0,97,97,287,97,97,97,97,97,97,316,97,97,97,97,97,97,0,45,45,45,45,45,45,45,1656,1657,45,376,45,45,45,45,45,388,45,45,45,45,45,45,45,45,1406,45,45,45,45,45,45,45,67,67,67,67,462,67,67,67,67,67,474,67,67,67,67,67,67,67,817,67,67,67,67,25398,542,13112,544,97,97,97,97,559,97,97,97,97,97,571,97,97,97,97,97,97,896,97,97,97,900,97,97,97,97,97,97,912,914,97,97,97,97,97,0,0,0,45,45,45,45,45,45,45,45,391,45,45,45,45,45,45,45,45,713,45,45,45,45,45,45,45,45,45,45,45,45,45,45,662,45,1140,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,636,67,67,1283,67,67,67,67,67,67,67,67,67,67,67,67,67,513,67,67,1363,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,889,97,97,97,1714,0,97,97,97,97,97,97,97,97,97,0,0,926,45,45,45,45,45,45,45,45,672,45,45,45,45,45,45,45,45,686,45,45,45,45,45,45,45,45,944,45,45,45,45,45,45,45,45,1676,45,45,45,45,45,45,67,97,97,97,1833,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,1902,45,45,45,45,45,957,45,45,45,45,961,45,963,45,45,45,67,97,2034,0,97,97,97,97,97,2040,45,45,45,2042,67,67,67,67,67,67,1574,67,67,67,67,67,1578,67,67,67,67,67,67,799,67,67,67,804,67,67,67,67,67,67,67,1298,0,0,0,1304,0,0,0,1310,132,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,45,1414,45,45,45,45,45,45,45,45,45,45,428,45,45,45,45,45,57889,0,0,54074,54074,550,831,97,97,97,97,97,97,97,97,97,568,97,97,97,97,578,97,45,45,968,45,45,45,45,45,45,45,45,45,45,45,45,45,1228,45,45,67,67,67,67,67,25398,1082,13112,1086,54074,1090,0,0,0,0,0,0,364,0,0,0,139,2158592,2158592,2158592,2404352,2412544,67,67,67,67,1464,67,67,67,67,67,67,67,67,67,67,67,510,67,67,67,67,97,97,97,97,1519,97,97,97,97,97,97,97,97,97,97,97,918,97,0,0,0,0,1528,45,45,45,45,45,45,45,45,45,45,45,45,45,45,976,45,1554,45,45,45,45,45,45,45,45,1562,45,45,1565,45,45,45,45,683,45,45,45,687,45,45,692,45,45,45,45,45,1953,45,67,67,67,67,67,67,67,67,67,1014,67,67,67,67,67,67,1568,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,0,67,67,67,67,67,1585,67,67,67,67,67,67,67,67,67,1594,97,97,1649,97,97,97,0,45,45,1653,45,45,45,45,45,45,383,45,45,45,45,45,45,45,45,45,986,45,45,45,45,45,45,45,45,1670,45,1672,45,45,45,45,45,45,45,45,45,45,67,736,67,67,67,67,67,741,67,67,67,1680,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1074,67,67,67,1692,67,67,67,67,67,67,67,1697,67,1699,67,67,67,67,67,67,1012,67,67,67,67,67,67,67,67,67,468,475,67,67,67,67,67,67,1769,67,67,67,67,67,67,67,97,97,97,97,97,97,97,624,97,97,97,97,97,97,634,97,97,1792,97,97,97,97,97,97,97,45,45,45,45,45,45,45,958,45,45,45,45,45,45,964,45,150,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,977,204,45,67,67,67,217,67,67,67,67,67,67,67,67,67,67,787,67,67,67,67,67,67,67,67,67,67,271,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,97,351,97,0,40976,0,18,18,24,24,27,27,27,45,45,938,45,45,45,45,45,45,45,45,45,45,45,45,45,1398,45,45,45,153,45,161,45,45,45,45,45,45,45,45,45,45,45,45,660,661,45,45,205,45,67,67,67,67,220,67,228,67,67,67,67,67,67,67,0,0,0,0,0,280,94,0,0,67,67,67,67,67,272,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,97,352,97,0,40976,0,18,18,24,24,27,27,27,45,439,45,45,45,45,45,445,45,45,45,452,45,45,67,67,212,216,67,67,67,67,67,241,67,246,67,252,67,67,486,67,67,67,67,67,67,67,494,67,67,67,67,67,67,67,1245,67,67,67,67,67,67,67,67,1013,67,67,1016,67,67,67,67,67,521,67,67,525,67,67,67,67,67,531,67,67,67,538,67,0,0,2046,97,97,97,45,45,67,67,0,0,97,97,45,45,45,1192,45,45,45,45,45,45,45,45,45,45,45,45,1418,45,45,1421,97,97,583,97,97,97,97,97,97,97,591,97,97,97,97,97,97,913,97,97,97,97,97,97,0,0,0,45,45,45,45,45,45,45,1384,97,618,97,97,622,97,97,97,97,97,628,97,97,97,635,97,18,131427,0,0,0,639,0,132,362,0,0,365,29315,367,0,921,29315,0,0,0,0,45,45,45,45,932,45,45,45,45,45,1544,45,45,45,45,45,1550,45,45,45,45,45,1194,45,1196,45,45,45,45,45,45,45,45,999,45,45,45,45,45,67,67,45,45,667,45,45,45,45,45,45,45,45,45,45,45,45,45,1408,45,45,45,696,45,45,45,701,45,45,45,45,45,45,45,45,710,45,45,45,1220,45,45,45,45,45,45,45,45,45,45,45,45,194,45,45,45,729,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,797,67,67,67,67,67,67,805,67,67,67,67,67,67,67,1587,67,1589,67,67,67,67,67,67,67,67,1763,67,67,67,67,67,67,67,0,0,0,0,0,0,2162968,0,0,67,67,67,67,67,814,816,67,67,67,67,67,25398,542,13112,544,67,67,1008,67,67,67,67,67,67,67,67,67,67,67,1020,67,0,97,45,67,0,97,45,67,0,97,45,67,97,0,0,97,97,97,97,97,45,45,45,45,67,67,67,67,1429,67,1430,67,67,67,67,67,1062,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,518,1076,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,28809,0,139,45,45,45,45,45,97,97,97,97,1102,97,97,97,97,97,97,97,97,97,97,97,1124,97,1126,97,97,1114,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1112,97,97,1156,97,97,97,97,97,97,97,97,97,97,97,97,97,594,97,97,97,97,1170,97,97,97,97,0,921,0,0,0,0,0,0,45,45,45,45,1532,45,45,45,45,1536,45,45,45,45,45,172,45,45,45,45,45,45,45,45,45,45,706,45,45,709,45,45,1177,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1202,45,1204,45,45,45,45,45,45,45,45,45,45,45,45,1215,45,45,45,1232,45,45,45,45,45,45,45,67,1237,67,67,67,67,67,67,1053,1054,67,67,67,67,67,67,1061,67,67,1282,67,67,67,67,67,67,67,67,67,1289,67,67,67,1292,97,97,97,97,1339,97,97,97,97,97,97,1344,97,97,97,97,45,1849,45,1851,45,45,45,45,45,45,45,45,721,45,45,45,45,45,726,45,1385,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1188,45,45,1401,1402,45,45,45,45,1405,45,45,45,45,45,45,45,45,1752,45,45,45,45,45,67,67,1410,45,45,45,1413,45,1415,45,45,45,45,45,45,1419,45,45,45,45,1806,45,45,45,45,45,45,67,67,67,67,67,67,67,97,97,2019,0,97,67,67,67,1452,67,67,67,67,67,67,67,67,1457,67,67,67,67,67,67,1259,67,67,67,67,67,67,1264,67,67,1460,67,1462,67,67,67,67,67,67,1466,67,67,67,67,67,67,67,67,1588,67,67,67,67,67,67,67,0,1300,0,0,0,1306,0,0,0,97,97,97,1506,97,97,97,97,97,97,97,97,1512,97,97,97,0,1728,97,97,97,97,97,97,97,97,97,97,97,901,97,97,97,97,1515,97,1517,97,97,97,97,97,97,1521,97,97,97,97,97,97,0,45,1652,45,45,45,1655,45,45,45,45,45,1542,45,45,45,45,45,45,45,45,45,45,45,45,45,1552,1553,45,45,45,1556,45,45,45,45,45,45,45,45,45,45,45,45,45,693,45,45,45,67,67,67,67,1572,67,67,67,67,1576,67,67,67,67,67,67,67,67,1602,67,67,1605,67,67,67,0,67,1582,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1580,67,67,1596,67,67,67,67,67,67,67,67,67,67,67,67,67,0,542,0,544,67,67,67,67,1759,67,67,67,67,67,67,67,67,67,67,67,533,67,67,67,67,67,67,67,1770,67,67,67,67,67,97,97,97,97,97,97,1777,97,97,97,1793,97,97,97,97,97,45,45,45,45,45,45,45,998,45,45,1001,1002,45,45,67,67,45,1861,45,67,67,67,67,67,67,67,67,1871,67,1873,1874,67,0,97,45,67,0,97,45,67,16384,97,45,67,97,0,0,0,1473,0,1082,0,0,0,1475,0,1086,0,0,0,1477,1876,67,97,97,97,97,97,1883,0,1885,97,97,97,1889,0,0,0,286,0,0,0,286,0,2367488,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,126,126,126,2053,0,2055,45,67,0,97,45,67,0,97,45,67,97,0,0,97,97,97,2039,97,45,45,45,45,67,67,67,67,67,226,67,67,67,67,67,67,67,67,1246,67,67,1249,1250,67,67,67,132,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,141,45,45,45,1403,45,45,45,45,45,45,45,45,45,45,45,45,1186,45,45,1189,45,45,155,45,45,45,45,45,45,45,45,45,191,45,45,45,45,700,45,45,45,45,45,45,45,45,45,45,45,1753,45,45,45,67,67,45,45,67,208,67,67,67,222,67,67,67,67,67,67,67,67,67,1764,67,67,67,67,67,67,67,258,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,288,97,97,97,302,97,97,97,97,97,97,97,97,97,627,97,97,97,97,97,97,338,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,0,362,0,365,28809,367,139,45,370,45,45,45,45,716,45,45,45,45,45,722,45,45,45,45,45,45,1912,67,67,67,67,67,67,67,67,67,819,67,67,25398,542,13112,544,45,403,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1409,45,67,67,67,67,489,67,67,67,67,67,67,67,67,67,67,67,771,67,67,67,67,520,67,67,67,67,67,67,67,67,67,67,67,534,67,67,67,67,67,67,1271,67,67,67,1274,67,67,67,1279,67,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,553,97,97,97,97,586,97,97,97,97,97,97,97,97,97,97,97,1138,97,97,97,97,617,97,97,97,97,97,97,97,97,97,97,97,631,97,97,97,0,1834,97,97,97,97,97,0,0,0,97,97,97,97,97,353,0,40976,0,18,18,24,24,27,27,27,45,45,668,45,45,45,45,45,45,45,45,45,45,45,45,45,724,45,45,45,45,45,682,45,45,45,45,45,45,45,45,45,45,45,45,45,949,45,45,45,67,67,747,748,67,67,67,67,755,67,67,67,67,67,67,67,0,0,0,1302,0,0,0,1308,0,67,794,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1701,67,97,97,97,845,846,97,97,97,97,853,97,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,97,97,892,97,97,97,97,97,97,97,97,97,97,97,97,97,610,97,97,45,992,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,1239,67,67,67,1063,67,67,67,67,67,1068,67,67,67,67,67,67,67,0,0,1301,0,0,0,1307,0,0,97,1141,97,97,97,97,97,97,97,97,97,97,97,1152,97,97,0,0,97,97,2001,0,97,2003,97,97,97,45,45,45,1739,45,45,45,1742,45,45,45,45,45,97,97,97,97,1157,97,97,97,97,97,1162,97,97,97,97,97,97,1145,97,97,97,97,97,1151,97,97,97,1253,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,539,45,1423,45,45,67,67,67,67,67,67,67,1431,67,67,67,67,67,67,67,1695,67,67,67,67,67,1700,67,1702,67,67,1439,67,67,67,67,67,67,67,67,67,67,67,67,67,514,67,67,97,97,1492,97,97,97,97,97,97,97,97,97,97,97,97,97,611,97,97,1703,67,67,67,67,67,67,97,97,97,97,97,97,97,97,97,852,97,97,97,97,97,97,45,1949,45,1951,45,45,45,67,67,67,67,67,67,67,1961,67,0,97,45,67,0,97,2060,2061,0,2062,45,67,97,0,0,2036,97,97,97,97,45,45,45,45,67,67,67,67,67,223,67,67,237,67,67,67,67,67,67,67,1272,67,67,67,67,67,67,67,67,507,67,67,67,67,67,67,67,1963,67,67,67,97,97,97,97,0,1972,0,97,97,97,1975,0,921,29315,0,0,0,0,45,45,45,931,45,45,45,45,45,407,45,45,45,45,45,45,45,45,45,417,45,45,1989,67,67,67,67,67,67,67,67,67,67,67,1996,97,18,131427,0,0,360,0,0,0,362,0,0,365,29315,367,0,921,29315,0,0,0,0,45,45,930,45,45,45,45,45,45,444,45,45,45,45,45,45,45,67,67,97,97,1998,0,97,97,97,0,97,97,97,97,97,45,45,45,45,45,45,1985,45,1986,45,45,45,156,45,45,170,45,45,45,45,45,45,45,45,45,45,675,45,45,45,45,679,131427,0,358,0,0,362,0,365,28809,367,139,45,45,45,45,45,381,45,45,45,45,45,45,45,45,45,400,45,45,419,45,45,45,45,45,45,45,45,45,45,45,45,436,67,67,67,67,67,505,67,67,67,67,67,67,67,67,67,67,820,67,25398,542,13112,544,67,67,522,67,67,67,67,67,529,67,67,67,67,67,67,67,0,1299,0,0,0,1305,0,0,0,97,97,619,97,97,97,97,97,626,97,97,97,97,97,97,97,1105,97,97,97,97,1109,97,97,97,67,67,67,67,749,67,67,67,67,67,67,67,67,67,760,67,0,97,45,67,2058,97,45,67,0,97,45,67,97,0,0,97,97,97,97,97,45,45,45,2041,67,67,67,67,67,780,67,67,67,67,67,67,67,67,67,67,67,67,67,516,67,67,97,97,97,878,97,97,97,97,97,97,97,97,97,97,97,97,97,1629,97,0,45,979,45,45,45,45,984,45,45,45,45,45,45,45,45,45,1198,45,45,45,45,45,45,67,1023,67,67,67,67,1028,67,67,67,67,67,67,67,67,67,470,67,67,67,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,1094,0,0,0,1092,1315,0,0,0,0,97,97,97,97,97,97,97,97,97,1486,97,1489,97,97,97,1117,97,97,97,97,1122,97,97,97,97,97,97,97,1146,97,97,97,97,97,97,97,97,881,97,97,97,886,97,97,97,1311,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,1615,97,97,97,97,97,1619,97,97,97,97,97,97,97,97,97,97,97,97,1631,97,97,1847,97,45,45,45,45,1852,45,45,45,45,45,45,45,1235,45,45,45,67,67,67,67,67,1868,67,67,67,1872,67,67,67,67,67,97,97,97,97,1882,0,0,0,97,97,97,97,0,1891,67,67,67,67,67,97,97,97,97,97,1929,0,0,97,97,97,97,97,97,45,1900,45,1901,45,45,45,1905,45,67,2054,97,45,67,0,97,45,67,0,97,45,67,97,0,0,97,2037,2038,97,97,45,45,45,45,67,67,67,67,1867,67,67,67,67,67,67,67,67,67,1774,97,97,97,97,97,97,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,142,45,45,45,1412,45,45,45,45,45,45,45,45,45,45,45,45,432,45,45,45,45,45,157,45,45,171,45,45,45,182,45,45,45,45,200,45,45,45,1543,45,45,45,45,45,45,45,45,1551,45,45,45,45,1181,45,45,45,45,45,45,45,45,45,45,45,1211,45,45,45,1214,45,45,45,67,209,67,67,67,224,67,67,238,67,67,67,249,67,0,97,2056,2057,0,2059,45,67,0,97,45,67,97,0,0,1937,97,97,97,97,97,97,45,45,45,45,45,45,1741,45,45,45,45,45,45,67,67,67,267,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,289,97,97,97,304,97,97,318,97,97,97,329,97,97,0,0,97,1783,97,97,97,97,0,0,97,97,0,97,97,97,45,2026,45,45,45,45,67,2030,67,67,67,67,67,67,1041,67,67,67,67,67,67,67,67,67,1044,67,67,67,67,67,67,97,97,347,97,97,97,0,40976,0,18,18,24,24,27,27,27,45,666,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1420,45,57889,0,0,54074,54074,550,0,97,97,97,97,97,97,97,97,840,67,1007,67,67,67,67,67,67,67,67,67,67,67,67,67,67,759,67,67,67,67,67,67,67,1052,67,67,67,67,67,67,67,67,67,67,1031,67,67,67,67,67,97,97,97,1101,97,97,97,97,97,97,97,97,97,97,97,97,592,97,97,97,1190,45,45,45,45,45,1195,45,1197,45,45,45,45,1201,45,45,45,45,1952,45,45,67,67,67,67,67,67,67,67,67,67,67,67,250,67,67,67,1255,67,1257,67,67,67,67,1261,67,67,67,67,67,67,67,67,1685,67,67,67,67,67,67,67,0,24851,12565,0,0,0,0,28809,53532,67,67,1267,67,67,67,67,67,67,1273,67,67,67,67,67,67,67,67,1696,67,67,67,67,67,67,67,0,0,0,0,0,0,2162688,0,0,1281,67,67,67,67,1285,67,67,67,67,67,67,67,67,67,67,1070,67,67,67,67,67,1335,97,1337,97,97,97,97,1341,97,97,97,97,97,97,97,97,882,97,97,97,97,97,97,97,1347,97,97,97,97,97,97,1353,97,97,97,97,97,97,1361,97,18,131427,0,638,0,0,0,0,362,0,0,365,29315,367,0,544,0,550,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2473984,2158592,2158592,2158592,2990080,2158592,2158592,2207744,2207744,2482176,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,0,53530,97,97,97,1365,97,97,97,97,97,97,97,97,97,97,97,97,608,97,97,97,45,45,1424,45,1425,67,67,67,67,67,67,67,67,67,67,67,1058,67,67,67,67,45,1555,45,45,1557,45,45,45,45,45,45,45,45,45,45,45,707,45,45,45,45,67,67,1570,67,67,67,67,67,67,67,67,67,67,67,67,67,773,67,67,1595,67,67,1597,67,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,139,2158592,2158592,2158592,2404352,2412544,97,97,97,1636,97,97,97,1639,97,97,1641,97,97,97,97,97,97,1173,0,921,0,0,0,0,0,0,45,67,67,67,1693,67,67,67,67,67,67,67,1698,67,67,67,67,67,67,67,1773,67,97,97,97,97,97,97,97,625,97,97,97,97,97,97,97,97,850,97,97,97,97,97,97,97,97,880,97,97,97,97,97,97,97,97,1106,97,97,97,97,97,97,97,1860,45,45,67,67,1865,67,67,67,67,1870,67,67,67,67,1875,67,67,97,97,1880,97,97,0,0,0,97,97,1888,97,0,0,0,1938,97,97,97,97,97,45,45,45,45,45,45,1854,45,45,45,45,45,45,45,1909,45,45,1911,67,67,67,67,67,67,67,67,67,67,1248,67,67,67,67,67,67,1922,67,67,1924,97,97,97,97,97,0,0,0,97,97,97,97,97,1898,45,45,45,45,45,45,1904,45,45,67,67,67,67,97,97,97,97,0,0,16384,97,97,97,97,0,97,97,97,97,97,97,97,97,97,0,1724,2008,2009,45,45,67,67,67,2014,2015,67,67,97,97,0,0,97,97,97,0,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,45,45,2022,0,2023,97,97,45,45,45,45,45,45,67,67,67,67,67,67,1869,67,67,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,147,151,154,45,162,45,45,176,178,181,45,45,45,192,196,45,45,45,45,2012,67,67,67,67,67,67,2018,97,0,0,97,1978,97,97,97,1982,45,45,45,45,45,45,45,45,45,972,973,45,45,45,45,45,67,259,263,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,294,298,301,97,309,97,97,323,325,328,97,97,97,97,97,560,97,97,97,569,97,97,97,97,97,97,306,97,97,97,97,97,97,97,97,97,1624,97,97,97,97,97,97,97,0,921,0,1175,0,0,0,0,45,339,343,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,67,67,503,67,67,67,67,67,67,67,67,67,512,67,67,519,97,97,600,97,97,97,97,97,97,97,97,97,609,97,97,616,45,649,45,45,45,45,45,654,45,45,45,45,45,45,45,45,1393,45,45,45,45,45,45,45,45,1209,45,45,45,45,45,45,45,67,763,67,67,67,67,67,67,67,67,770,67,67,67,774,67,0,2045,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,994,45,45,45,45,45,45,45,45,45,45,67,67,213,67,219,67,67,232,67,242,67,247,67,67,67,779,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1018,67,67,67,67,811,67,67,67,67,67,67,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,0,97,834,97,97,97,97,97,839,97,18,131427,0,638,0,0,0,0,362,0,0,365,29315,367,645,97,97,861,97,97,97,97,97,97,97,97,868,97,97,97,872,97,97,877,97,97,97,97,97,97,97,97,97,97,97,97,97,613,97,97,97,97,97,909,97,97,97,97,97,97,97,97,97,0,0,0,18,18,24,24,27,27,27,1036,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1047,67,67,67,1050,67,67,67,67,67,67,67,67,67,67,67,67,1033,67,67,67,97,97,1130,97,97,97,97,97,97,97,97,97,97,97,97,97,638,0,0,67,67,67,1295,67,67,67,0,0,0,0,0,0,0,0,0,97,1317,97,97,97,97,97,97,1375,97,97,97,0,0,0,45,1379,45,45,45,45,45,45,422,45,45,45,429,431,45,45,45,45,0,1090,0,0,97,1479,97,97,97,97,97,97,97,97,97,97,1357,97,97,97,97,97,97,97,97,97,1716,97,97,97,97,97,97,97,97,97,1723,0,921,29315,0,0,0,0,45,929,45,45,45,45,45,45,45,1392,45,45,45,45,45,45,45,45,45,960,45,45,45,45,45,45,97,97,97,1738,45,45,45,45,45,45,45,1743,45,45,45,45,166,45,45,45,45,184,186,45,45,197,45,45,97,1779,0,0,97,97,97,97,97,97,0,0,97,97,0,97,18,131427,0,638,0,0,0,0,362,0,640,365,29315,367,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,45,45,45,1537,45,45,45,45,45,1803,45,45,45,45,45,1809,45,45,45,67,67,67,1814,67,67,67,67,67,67,1821,67,67,67,67,67,67,97,97,97,97,97,0,0,0,97,97,97,97,0,0,67,67,67,1818,67,67,67,67,67,1824,67,67,67,97,97,97,97,97,0,0,0,97,97,97,97,1890,0,1829,97,97,0,0,97,97,1836,97,97,0,0,0,97,97,97,97,1981,45,45,45,45,45,45,45,45,45,1987,1845,97,97,97,45,45,45,45,45,1853,45,45,45,1857,45,45,45,67,1864,67,1866,67,67,67,67,67,67,67,67,67,97,97,97,97,97,97,97,1710,1711,67,67,97,97,97,97,97,0,0,0,1886,97,97,97,0,0,97,97,97,97,1838,0,0,0,97,1843,97,0,1893,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,1745,45,45,67,67,67,67,67,97,97,97,97,97,0,0,1931,97,97,97,97,97,588,97,97,97,97,97,97,97,97,97,97,629,97,97,97,97,97,67,2044,0,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,1660,45,45,45,45,45,45,45,45,45,45,45,45,453,45,455,67,67,67,67,268,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,348,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,359,0,0,362,0,365,28809,367,139,45,45,45,45,45,421,45,45,45,45,45,45,45,434,45,45,695,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1667,45,0,921,29315,0,925,0,0,45,45,45,45,45,45,45,45,45,1811,45,67,67,67,67,67,67,1037,67,1039,67,67,67,67,67,67,67,67,67,67,67,67,1277,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,1095,0,0,0,1096,97,97,97,97,97,97,97,97,97,97,97,97,869,97,97,97,97,97,97,1131,97,1133,97,97,97,97,97,97,97,97,97,97,1370,97,97,97,97,97,1312,0,0,0,0,1096,0,0,0,97,97,97,97,97,97,97,1327,97,97,97,97,97,1332,97,97,97,1830,97,0,0,97,97,97,97,97,0,0,0,97,97,97,1896,97,97,45,45,45,45,45,45,45,45,45,1548,45,45,45,45,45,45,133,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,380,45,45,45,45,45,45,45,45,45,45,401,45,45,158,45,45,45,45,45,45,45,45,45,45,45,45,45,1200,45,45,45,45,206,67,67,67,67,67,225,67,67,67,67,67,67,67,67,754,67,67,67,67,67,67,67,57889,0,0,54074,54074,550,832,97,97,97,97,97,97,97,97,97,1342,97,97,97,97,97,97,67,67,67,67,67,25398,1083,13112,1087,54074,1091,0,0,0,0,0,0,1316,0,831,97,97,97,97,97,97,97,1174,921,0,1175,0,0,0,0,45,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,148,67,67,264,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,295,97,97,97,97,313,97,97,97,97,331,333,97,18,131427,356,638,0,0,0,0,362,0,0,365,0,367,0,45,45,1530,45,45,45,45,45,45,45,45,45,45,45,45,988,45,45,45,97,344,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,402,404,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1756,67,438,45,45,45,45,45,45,45,45,449,450,45,45,45,67,67,214,218,221,67,229,67,67,243,245,248,67,67,67,67,67,488,490,67,67,67,67,67,67,67,67,67,67,67,1071,67,1073,67,67,67,67,67,524,67,67,67,67,67,67,67,67,535,536,67,67,67,67,67,67,1683,1684,67,67,67,67,1688,1689,67,67,67,67,67,67,1586,67,67,67,67,67,67,67,67,67,469,67,67,67,67,67,67,97,97,97,585,587,97,97,97,97,97,97,97,97,97,97,97,1163,97,97,97,97,97,97,97,621,97,97,97,97,97,97,97,97,632,633,97,97,0,0,1782,97,97,97,97,97,0,0,97,97,0,97,712,45,45,45,717,45,45,45,45,45,45,45,45,725,45,45,45,163,167,173,177,45,45,45,45,45,193,45,45,45,45,982,45,45,45,45,45,45,987,45,45,45,45,45,1558,45,1560,45,45,45,45,45,45,45,45,704,705,45,45,45,45,45,45,45,45,731,45,45,45,67,67,67,67,67,739,67,67,67,67,67,67,273,0,24850,12564,0,0,0,0,28809,53531,67,67,67,764,67,67,67,67,67,67,67,67,67,67,67,67,1290,67,67,67,67,67,67,812,67,67,67,67,818,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,0,97,97,97,97,97,837,97,97,97,97,97,602,97,97,97,97,97,97,97,97,97,97,1137,97,97,97,97,97,97,97,97,97,862,97,97,97,97,97,97,97,97,97,97,97,1627,97,97,97,0,97,97,97,97,910,97,97,97,97,916,97,97,97,0,0,0,97,97,1940,97,97,1942,45,45,45,45,45,45,385,45,45,45,45,395,45,45,45,45,966,45,969,45,45,45,45,45,45,45,45,45,45,975,45,45,45,406,45,45,45,45,45,45,45,45,45,45,45,45,974,45,45,45,67,67,67,67,1010,67,67,67,67,67,67,67,67,67,67,67,1262,67,67,67,67,67,67,67,67,67,1040,67,1042,67,1045,67,67,67,67,67,67,67,97,1706,97,97,97,1709,97,97,97,67,67,67,67,1051,67,67,67,67,67,1057,67,67,67,67,67,67,67,1443,67,67,1446,67,67,67,67,67,67,67,1297,0,0,0,1303,0,0,0,1309,67,67,67,67,1079,25398,0,13112,0,54074,0,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2207744,2207744,2207744,2572288,2207744,2207744,2207744,1098,97,97,97,97,97,1104,97,97,97,97,97,97,97,97,97,1356,97,97,97,97,97,97,1128,97,97,97,97,97,97,1134,97,1136,97,1139,97,97,97,97,97,97,1622,97,97,97,97,97,97,97,97,0,921,0,0,0,1176,0,646,45,67,67,67,1268,67,67,67,67,67,67,67,67,67,67,67,67,1469,67,67,67,97,1348,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1127,97,67,1569,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1448,1449,67,1816,67,67,67,67,67,67,67,67,67,1825,67,67,1827,97,97,0,1781,97,97,97,97,97,97,0,0,97,97,0,97,97,97,1831,0,0,97,97,97,97,97,0,0,0,97,97,97,1980,97,45,45,45,45,45,45,45,45,45,45,1395,45,45,45,45,45,97,1846,97,97,45,45,45,45,45,45,45,45,45,45,45,45,1212,45,45,45,45,45,45,2010,45,67,67,67,67,67,2016,67,97,97,0,0,97,97,97,0,97,97,97,97,97,45,45,2007,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,143,45,45,45,1671,45,45,45,45,45,45,45,45,45,45,45,67,1813,67,67,1815,45,45,67,210,67,67,67,67,67,67,239,67,67,67,67,67,67,67,1454,67,67,67,67,67,67,67,67,67,1445,67,67,67,67,67,67,97,97,290,97,97,97,97,97,97,319,97,97,97,97,97,97,303,97,97,317,97,97,97,97,97,97,305,97,97,97,97,97,97,97,97,97,899,97,97,97,97,97,97,375,45,45,45,379,45,45,390,45,45,394,45,45,45,45,45,443,45,45,45,45,45,45,45,45,67,67,67,67,67,461,67,67,67,465,67,67,476,67,67,480,67,67,67,67,67,67,1694,67,67,67,67,67,67,67,67,67,1288,67,67,67,67,67,67,500,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1075,97,97,97,558,97,97,97,562,97,97,573,97,97,577,97,97,97,97,97,895,97,97,97,97,97,97,903,97,97,97,0,97,97,1638,97,97,97,97,97,97,97,97,1646,597,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1334,45,681,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1396,45,45,1399,45,45,730,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1434,67,67,67,67,67,67,750,67,67,67,67,67,67,67,67,67,67,1456,67,67,67,67,67,45,45,993,45,45,45,45,45,45,45,45,45,45,45,67,67,1238,67,67,1006,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1280,1048,1049,67,67,67,67,67,67,67,67,67,67,1059,67,67,67,67,67,67,1286,67,67,67,67,67,67,67,1291,67,97,97,1100,97,97,97,97,97,97,97,97,97,97,97,97,97,638,0,920,97,97,1142,1143,97,97,97,97,97,97,97,97,97,97,1153,97,97,97,97,97,1158,97,97,97,1161,97,97,97,97,1166,97,97,97,97,97,1325,97,97,97,97,97,97,97,97,97,97,1328,97,97,97,97,97,97,97,45,1218,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1678,45,45,45,67,67,67,67,67,1269,67,67,67,67,67,67,67,67,1278,67,67,67,67,67,67,1761,67,67,67,67,67,67,67,67,67,530,67,67,67,67,67,67,97,97,1349,97,97,97,97,97,97,97,97,1358,97,97,97,97,97,97,1623,97,97,97,97,97,97,97,97,0,921,0,0,926,0,0,0,45,45,1411,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1754,45,45,67,67,1301,0,1307,0,1313,97,97,97,97,97,97,97,97,97,97,97,21054,97,97,97,97,67,1757,67,67,67,1760,67,67,67,67,67,67,67,67,67,67,1467,67,67,67,67,67,1778,97,0,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,97,97,1352,97,97,97,97,97,97,97,97,97,97,1511,97,97,97,97,97,67,67,67,67,67,1820,67,1822,67,67,67,67,67,97,97,97,97,97,0,0,0,97,1933,97,1892,97,97,97,97,97,97,1899,45,45,45,45,45,45,45,45,1664,45,45,45,45,45,45,45,45,1546,45,45,45,45,45,45,45,45,1208,45,45,45,45,45,45,45,45,1224,45,45,45,45,45,45,45,45,673,45,45,45,45,45,45,45,67,67,67,67,67,1925,97,97,97,97,0,0,0,97,97,97,97,97,623,97,97,97,97,97,97,97,97,97,97,307,97,97,97,97,97,97,97,97,97,1796,97,45,45,45,45,45,45,45,970,45,45,45,45,45,45,45,45,1417,45,45,45,45,45,45,45,67,1964,67,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,97,97,97,97,1721,97,97,0,0,1997,97,0,0,2e3,97,97,0,97,97,97,97,97,45,45,45,45,733,45,67,67,67,67,67,67,67,67,67,67,803,67,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,144,45,45,45,1805,45,1807,45,45,45,45,45,67,67,67,67,67,67,231,67,67,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,45,45,67,211,67,67,67,67,230,234,240,244,67,67,67,67,67,67,464,67,67,67,67,67,67,479,67,67,67,260,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,291,97,97,97,97,310,314,320,324,97,97,97,97,97,97,1367,97,97,97,97,97,97,97,97,97,1355,97,97,97,97,97,97,1362,340,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,360,0,362,0,365,28809,367,139,369,45,45,45,374,67,67,460,67,67,67,67,466,67,67,67,67,67,67,67,67,801,67,67,67,67,67,67,67,67,67,487,67,67,67,67,67,67,67,67,67,67,498,67,67,67,67,67,67,1772,67,67,97,97,97,97,97,97,97,0,921,922,1175,0,0,0,0,45,67,502,67,67,67,67,67,67,67,508,67,67,67,515,517,67,67,67,67,67,97,97,97,97,97,0,0,0,1932,97,97,0,1999,97,97,97,0,97,97,2004,2005,97,45,45,45,45,1193,45,45,45,45,45,45,45,45,45,45,45,676,45,45,45,45,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,552,97,97,97,97,97,1377,0,0,45,45,45,45,45,45,45,45,655,45,45,45,45,45,45,45,97,97,557,97,97,97,97,563,97,97,97,97,97,97,97,97,1135,97,97,97,97,97,97,97,97,97,584,97,97,97,97,97,97,97,97,97,97,595,97,97,97,97,97,911,97,97,97,97,97,97,97,638,0,0,0,0,1315,0,0,0,0,97,97,97,1319,97,97,97,0,97,97,97,97,97,97,1733,97,97,97,97,97,97,1340,97,97,97,1343,97,97,1345,97,1346,97,599,97,97,97,97,97,97,97,605,97,97,97,612,614,97,97,97,97,97,1794,97,97,97,45,45,45,45,45,45,45,1207,45,45,45,45,45,45,1213,45,45,745,67,67,67,67,751,67,67,67,67,67,67,67,67,67,67,1577,67,67,67,67,67,762,67,67,67,67,766,67,67,67,67,67,67,67,67,67,67,1765,67,67,67,67,67,777,67,67,781,67,67,67,67,67,67,67,67,67,67,67,67,1592,1593,67,67,97,843,97,97,97,97,849,97,97,97,97,97,97,97,97,97,1510,97,97,97,97,97,97,97,860,97,97,97,97,864,97,97,97,97,97,97,97,97,97,1797,45,45,45,45,1801,45,97,875,97,97,879,97,97,97,97,97,97,97,97,97,97,97,1522,97,97,97,97,97,991,45,45,45,45,996,45,45,45,45,45,45,45,45,67,67,215,67,67,67,67,233,67,67,67,67,251,253,1022,67,67,67,1026,67,67,67,67,67,67,67,67,67,67,1035,67,67,1038,67,67,67,67,67,67,67,67,67,67,67,67,67,1458,67,67,67,67,67,1064,67,67,67,1067,67,67,67,67,1072,67,67,67,67,67,67,1296,0,0,0,0,0,0,0,0,0,2367488,2158592,2158592,2158592,2158592,2158592,2158592,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,1096,0,921,29315,0,0,0,0,928,45,45,45,45,45,934,45,45,45,164,45,45,45,45,45,45,45,45,45,198,45,45,45,378,45,45,45,45,45,45,393,45,45,45,398,45,97,97,1116,97,97,97,1120,97,97,97,97,97,97,97,97,97,1147,1148,97,97,97,97,97,97,97,1129,97,97,1132,97,97,97,97,97,97,97,97,97,97,97,1626,97,97,97,97,0,45,1178,45,45,45,45,45,45,45,45,45,1185,45,45,45,45,441,45,45,45,45,45,45,451,45,45,67,67,67,67,67,227,67,67,67,67,67,67,67,67,1260,67,67,67,1263,67,67,1265,1203,45,45,1205,45,1206,45,45,45,45,45,45,45,45,45,1216,67,1266,67,67,67,67,67,67,67,67,67,1276,67,67,67,67,67,67,492,67,67,67,67,67,67,67,67,67,471,67,67,67,67,481,67,45,1386,45,1389,45,45,45,45,1394,45,45,45,1397,45,45,45,45,995,45,997,45,45,45,45,45,45,45,67,67,67,67,1915,67,67,67,67,67,1422,45,45,45,67,67,67,67,67,67,67,67,67,1433,67,1436,67,67,67,67,1441,67,67,67,1444,67,67,67,67,67,67,67,0,24850,12564,0,0,0,281,28809,53531,97,97,97,97,1494,97,97,97,1497,97,97,97,97,97,97,97,1368,97,97,97,97,97,97,97,97,851,97,97,97,97,97,97,97,67,67,67,1571,67,67,67,67,67,67,67,67,67,67,67,67,25398,542,13112,544,67,67,1583,67,67,67,67,67,67,67,67,1591,67,67,67,67,67,67,752,67,67,67,67,67,67,67,67,67,1056,67,67,67,67,67,67,97,1634,97,0,97,97,97,97,97,97,97,97,97,97,97,97,1125,97,97,97,1647,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,1183,45,45,45,45,45,45,45,45,45,409,45,45,45,45,45,45,1658,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1668,1712,97,97,97,0,97,97,97,97,97,97,97,97,97,0,0,1835,97,97,97,97,0,0,0,97,97,1844,97,97,1726,0,97,97,97,97,97,1732,97,1734,97,97,97,97,97,300,97,308,97,97,97,97,97,97,97,97,866,97,97,97,97,97,97,97,67,67,67,1758,67,67,67,1762,67,67,67,67,67,67,67,67,1043,67,67,67,67,67,67,67,67,67,67,67,67,1771,67,67,67,97,97,97,97,97,1776,97,97,97,97,297,97,97,97,97,97,97,97,97,97,97,97,1108,97,97,97,97,67,67,67,1966,97,97,97,1970,0,0,0,97,97,97,97,0,97,97,97,1720,97,97,97,97,97,0,0,97,97,97,1837,97,0,1840,1841,97,97,97,1988,45,67,67,67,67,67,67,67,67,67,1994,1995,67,97,97,97,97,97,1103,97,97,97,97,97,97,97,97,97,97,917,97,97,0,0,0,67,67,265,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,345,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,361,362,0,365,28809,367,139,45,45,45,45,45,671,45,45,45,45,45,45,45,45,45,45,411,45,45,414,45,45,45,45,377,45,45,45,386,45,45,45,45,45,45,45,45,45,1223,45,45,45,45,45,45,45,45,45,426,45,45,433,45,45,45,67,67,67,67,67,463,67,67,67,472,67,67,67,67,67,67,67,527,67,67,67,67,67,67,537,67,540,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,97,97,97,97,1119,97,97,97,97,97,97,97,97,97,97,1509,97,97,97,97,97,97,97,97,564,97,97,97,97,97,97,97,637,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,0,921,29315,0,0,0,927,45,45,45,45,45,45,45,45,45,1234,45,45,45,45,67,67,67,67,1240,45,697,45,45,45,45,45,45,45,45,45,45,708,45,45,45,45,1221,45,45,45,45,1225,45,45,45,45,45,45,384,45,45,45,45,45,45,45,45,45,1210,45,45,45,45,45,45,67,67,795,67,67,67,67,67,67,67,67,67,67,67,67,67,1470,67,67,67,67,67,67,67,815,67,67,67,67,67,67,25398,542,13112,544,97,97,97,893,97,97,97,97,97,97,97,97,97,97,97,97,1164,97,97,97,67,67,67,1025,67,67,67,67,67,67,67,67,67,67,67,67,1687,67,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,1097,1241,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1450,45,45,1388,45,1390,45,45,45,45,45,45,45,45,45,45,45,1236,67,67,67,67,67,1437,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1472,1490,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1503,67,67,67,67,67,97,97,97,97,97,0,1930,0,97,97,97,97,97,847,97,97,97,97,97,97,97,97,97,858,67,67,1965,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,1719,97,97,97,97,97,97,0,0,0,45,45,45,45,1382,45,1383,45,45,45,159,45,45,45,45,45,45,45,45,45,45,45,45,45,1563,45,45,45,45,45,67,261,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,341,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,97,1099,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1333,97,1230,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,1992,67,1993,67,67,67,97,97,45,45,160,45,45,45,45,45,45,45,45,45,45,45,45,45,1665,45,45,45,45,45,131427,357,0,0,0,362,0,365,28809,367,139,45,45,45,45,45,684,45,45,45,45,45,45,45,45,45,45,412,45,45,45,416,45,45,45,440,45,45,45,45,45,45,45,45,45,45,45,67,67,1990,67,1991,67,67,67,67,67,67,67,97,97,1707,97,97,97,97,97,97,501,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1691,67,67,67,67,67,526,67,67,67,67,67,67,67,67,67,67,1030,67,1032,67,67,67,67,598,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1632,0,921,29315,923,0,0,0,45,45,45,45,45,45,45,45,45,1404,45,45,45,45,45,45,45,45,45,425,45,45,45,45,45,45,67,67,67,67,67,25398,0,13112,0,54074,0,0,1093,0,0,0,0,0,97,1609,97,97,97,97,97,97,97,97,97,1369,97,97,97,1372,97,97,67,67,266,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,346,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,665,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1677,45,45,45,45,67,45,45,954,45,956,45,45,45,45,45,45,45,45,45,45,45,1545,45,45,45,45,45,45,45,45,45,448,45,45,45,45,67,456,67,67,67,67,67,1270,67,67,67,67,67,67,67,67,67,67,1069,67,67,67,67,67,67,97,97,97,1350,97,97,97,97,97,97,97,97,97,97,97,97,1524,97,97,97,97,97,97,97,1376,0,0,0,45,45,45,45,45,45,45,45,1559,1561,45,45,45,1564,45,1566,1567,45,67,67,67,67,67,1573,67,67,67,67,67,67,67,67,67,67,1247,67,67,67,67,67,1252,97,1725,97,0,97,97,97,97,97,97,97,97,97,97,97,97,1628,97,1630,0,0,94242,0,0,0,2211840,0,1118208,0,0,0,0,2158592,2158731,2158592,2158592,2158592,3117056,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3018752,2158592,3043328,2158592,2158592,2158592,2158592,3080192,2158592,2158592,3112960,2158592,2158592,2158592,2158592,2158592,2158878,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2605056,2158592,2158592,2207744,0,542,0,544,0,0,2166784,0,0,0,550,0,0,2158592,2158592,2686976,2158592,2715648,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2867200,2158592,2904064,2158592,2158592,2158592,2158592,2158592,2158592,2158592,0,94242,0,0,0,2211840,0,0,1130496,0,0,0,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,0,139,0,0,0,139,0,2367488,2207744,0,0,0,0,176128,0,2166784,0,0,0,0,0,286,2158592,2158592,3170304,3174400,2158592,0,0,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,1508,2158592,2908160,2158592,2158592,2158592,2977792,2158592,2158592,2158592,2158592,3039232,2158592,2158592,2158592,2158592,2158592,2158592,3158016,67,24850,24850,12564,12564,0,0,0,0,0,53531,53531,0,286,97,97,97,97,97,1144,97,97,97,97,97,97,97,97,97,97,1149,97,97,97,97,1154,57889,0,0,0,0,550,0,97,97,97,97,97,97,97,97,97,561,97,97,97,97,97,97,576,97,97,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,0,0,139264,0,921,29315,0,0,926,0,45,45,45,45,45,45,45,45,45,719,720,45,45,45,45,45,45,45,45,685,45,45,45,45,45,45,45,45,45,942,45,45,946,45,45,45,950,45,45,0,2146304,2146304,0,0,0,0,2224128,2224128,2224128,2232320,2232320,2232320,2232320,0,0,1301,0,0,0,0,0,1307,0,0,0,0,0,1313,0,0,0,0,0,0,0,97,97,1318,97,97,97,97,97,97,1795,97,97,45,45,45,45,45,45,45,446,45,45,45,45,45,45,67,67,2158592,2146304,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,921,29315,0,924,0,0,45,45,45,45,45,45,45,45,45,1e3,45,45,45,45,67,67],n.EXPECTED=[290,300,304,353,296,309,305,319,315,324,328,352,354,334,338,330,320,345,349,293,358,362,341,366,312,370,374,378,382,386,390,394,398,737,402,634,439,604,634,634,634,634,408,634,634,634,404,634,634,634,457,634,634,963,634,634,413,634,634,634,634,634,634,634,663,418,422,903,902,426,431,548,634,437,521,919,443,615,409,449,455,624,731,751,634,461,465,672,470,469,474,481,485,477,489,493,629,542,497,505,603,602,991,648,510,804,634,515,958,526,525,530,768,634,546,552,711,710,593,558,562,618,566,570,574,578,582,586,590,608,612,660,822,821,634,622,596,444,628,533,724,633,640,653,647,652,536,1008,451,450,445,657,670,676,685,689,693,697,701,704,707,715,719,798,815,634,723,762,996,634,728,969,730,735,908,634,741,679,889,511,747,634,750,755,499,666,499,501,759,772,776,780,634,787,784,797,802,809,808,427,814,1006,517,634,519,853,634,813,850,793,634,819,826,833,832,837,843,847,857,861,863,867,871,875,879,883,643,887,539,980,979,634,893,944,634,900,896,634,907,933,506,912,917,828,433,636,635,554,961,923,930,927,937,941,634,634,634,974,948,952,985,913,968,967,743,634,973,839,634,978,599,634,984,989,765,444,995,1e3,634,1003,790,955,1012,681,634,634,634,634,634,414,1016,1020,1024,1085,1027,1090,1090,1046,1080,1137,1108,1215,1049,1032,1039,1085,1085,1085,1085,1058,1062,1068,1085,1086,1090,1090,1091,1072,1064,1107,1090,1090,1090,1118,1123,1138,1078,1074,1084,1085,1085,1085,1087,1090,1062,1052,1060,1114,1062,1104,1085,1085,1090,1090,1028,1122,1063,1128,1139,1127,1158,1085,1085,1151,1090,1090,1090,1095,1090,1132,1073,1136,1143,1061,1150,1085,1155,1098,1101,1146,1162,1169,1101,1185,1151,1090,1110,1173,1054,1087,1109,1177,1165,1089,1204,1184,1107,1189,1193,1088,1197,1180,1201,1208,1042,1212,1219,1223,1227,1231,1235,1245,1777,1527,1686,1686,1238,1686,1254,1686,1686,1686,1294,1669,1686,1686,1686,1322,1625,1534,1268,1624,1275,1281,1443,1292,1300,1686,1686,1686,1350,1826,1306,1686,1686,1240,2032,1317,1321,1686,1686,1253,1686,1326,1686,1686,1686,1418,1709,1446,1686,1686,1686,1492,1686,1295,1447,1686,1686,1258,1686,1736,1686,1686,1520,1355,1686,1288,1348,1361,1686,1359,1686,1364,1498,1368,1302,1362,1381,1389,1395,1486,1686,1371,1377,1370,1686,1375,1382,1384,1402,1408,1385,1383,1619,1413,1423,1428,1433,1686,1686,1270,1686,1338,1686,1440,1686,1686,1686,1499,1465,1686,1686,1686,1639,1473,1884,1686,1686,1293,1864,1686,1686,1296,1321,1483,1686,1686,1686,1646,1686,1748,1496,1686,1418,1675,1686,1418,1702,1686,1418,1981,1686,1429,1409,1427,1504,1692,1686,1686,1313,1448,1651,1508,1686,1686,1340,1686,1903,1686,1686,1435,1513,1686,1283,1287,1519,1686,1524,1363,1568,1938,1539,1566,1579,1479,1533,1538,1553,1544,1552,1557,1563,1574,1557,1583,1589,1590,1759,1594,1603,1607,1611,1686,1436,1514,1686,1434,1656,1686,1434,1680,1686,1453,1686,1686,1686,1559,1617,1686,1770,1418,1623,1769,1629,1686,1515,1335,1686,1285,1686,1671,1921,1650,1686,1686,1344,1308,1666,1686,1686,1686,1659,1685,1686,1686,1686,1686,1241,1686,1686,1844,1691,1686,1630,1977,1970,1362,1686,1686,1686,1693,1698,1686,1686,1686,1697,1686,1764,1715,1686,1634,1638,1686,1599,1585,1686,1271,1686,1269,1686,1721,1686,1686,1354,1686,1801,1686,1799,1686,1640,1686,1686,1461,1686,1686,1732,1686,1944,1686,1740,1686,1746,1415,1396,1686,1598,1547,1417,1597,1416,1577,1546,1397,1577,1547,1548,1570,1398,1753,1686,1652,1509,1686,1686,1686,1757,1686,1419,1686,1763,1418,1768,1781,1686,1686,1686,1705,1686,2048,1792,1686,1686,1686,1735,1686,1797,1686,1686,1404,1686,1639,1815,1686,1686,1418,2017,1820,1686,1686,1803,1686,1686,1686,1736,1489,1686,1686,1825,1338,1260,1263,1686,1686,1785,1686,1686,1728,1686,1686,1749,1497,1830,1830,1262,1248,1261,1329,1260,1264,1329,1248,1249,1259,1540,1849,1842,1686,1686,1835,1686,1686,1816,1686,1686,1831,1882,1848,1686,1686,1686,1774,2071,1854,1686,1686,1469,1884,1686,1821,1859,1686,1686,1350,1883,1686,1686,1686,1781,1391,1875,1686,1686,1613,1644,1686,1686,1889,1686,1686,1662,1884,1686,1885,1890,1686,1686,1686,1894,1686,1686,1678,1686,1907,1686,1686,1529,1914,1686,1838,1686,1686,1881,1686,1686,1872,1876,1836,1919,1686,1837,1692,1910,1686,1925,1928,1742,1686,1811,1811,1930,1810,1929,1935,1928,1900,1942,1867,1868,1931,1035,1788,1948,1952,1956,1960,1964,1686,1976,1686,1686,1686,2065,1686,1992,2037,1686,1686,1998,2009,1972,2002,1686,1686,1686,2077,1300,2023,1686,1686,1686,1807,2031,1686,1686,1686,1860,1500,2032,1686,1686,1686,2083,1686,2036,1686,1277,1276,2042,1877,1686,1686,2041,1686,1686,2027,2037,2012,1686,2012,1855,1850,1686,2046,1686,1686,2054,1996,1686,1897,1309,2059,2052,1686,2058,1686,1686,2081,1686,1717,1477,1686,1331,1686,1686,1687,1686,1860,1681,1686,1686,1686,1966,1724,1686,1686,1686,1984,2015,1686,1686,1686,1988,1686,2063,1686,1686,1686,2005,1686,1727,1686,1686,1711,1457,2069,1686,1686,1686,2019,2075,1686,1686,1915,1686,1686,1793,1874,1686,1686,1491,1362,1449,1686,1686,1460,2098,2087,2091,2095,2184,2102,2113,2780,2117,2134,2142,2281,2146,2146,2146,2304,2296,2181,2639,2591,2872,2592,2873,2313,2195,2200,2281,2146,2273,2226,2204,2152,2219,2276,2167,2177,2276,2235,2276,2276,2230,2281,2276,2296,2276,2293,2276,2276,2276,2276,2234,2276,2311,2314,2210,2199,2217,2222,2276,2276,2276,2240,2276,2294,2276,2276,2173,2276,2198,2281,2281,2281,2281,2282,2146,2146,2146,2146,2205,2146,2204,2248,2276,2235,2276,2297,2276,2276,2276,2277,2256,2281,2283,2146,2146,2146,2275,2276,2295,2276,2276,2293,2146,2304,2264,2269,2221,2276,2276,2276,2293,2295,2276,2276,2276,2295,2263,2205,2268,2220,2172,2276,2276,2276,2296,2276,2276,2296,2294,2276,2276,2278,2281,2281,2280,2281,2281,2281,2283,2206,2223,2276,2276,2279,2281,2281,2146,2273,2276,2276,2281,2281,2281,2276,2292,2276,2298,2225,2276,2298,2169,2224,2292,2298,2171,2229,2281,2281,2171,2236,2281,2281,2281,2146,2275,2225,2292,2299,2276,2229,2281,2146,2276,2290,2297,2283,2146,2146,2274,2224,2227,2298,2225,2297,2276,2230,2170,2230,2282,2146,2147,2151,2156,2288,2276,2230,2303,2308,2236,2284,2228,2318,2318,2318,2326,2335,2339,2343,2349,2416,2693,2357,2592,2109,2592,2592,2162,2943,2823,2646,2592,2361,2592,2122,2592,2592,2122,2470,2592,2592,2592,2109,2107,2592,2592,2592,2123,2592,2592,2592,2125,2592,2413,2592,2592,2592,2127,2592,2592,2414,2592,2592,2592,2130,2952,2592,2594,2592,2592,2212,2609,2252,2592,2592,2592,2446,2434,2592,2592,2592,2212,2446,2450,2456,2431,2435,2592,2592,2243,2478,2448,2439,2946,2592,2592,2592,2368,2809,2813,2450,2441,2212,2812,2449,2440,2947,2592,2592,2592,2345,2451,2457,2948,2592,2124,2592,2592,2650,2823,2449,2455,2946,2592,2128,2592,2592,2649,2952,2592,2810,2448,2461,2991,2467,2592,2592,2329,2817,2474,2990,2466,2592,2592,2373,2447,2992,2469,2592,2592,2592,2373,2447,2477,2468,2592,2592,2353,2469,2592,2495,2592,2592,2415,2483,2592,2415,2496,2592,2592,2352,2592,2592,2352,2352,2469,2592,2592,2363,2331,2494,2592,2592,2592,2375,2592,2375,2415,2504,2592,2592,2367,2372,2503,2592,2592,2592,2389,2418,2415,2592,2592,2373,2592,2592,2592,2593,2732,2417,2415,2592,2417,2520,2592,2592,2592,2390,2521,2521,2592,2592,2592,2401,2599,2585,2526,2531,2120,2592,2212,2426,2450,2463,2948,2592,2592,2592,2213,2389,2527,2532,2121,2542,2551,2105,2592,2213,2592,2592,2592,2558,2538,2544,2553,2557,2537,2543,2552,2421,2572,2576,2546,2543,2547,2592,2592,2373,2615,2575,2545,2105,2592,2244,2479,2592,2129,2592,2592,2628,2690,2469,2562,2566,2592,2592,2592,2415,2928,2934,2401,2570,2574,2564,2572,2585,2590,2592,2592,2585,2965,2592,2592,2592,2445,2251,2592,2592,2592,2474,2592,2609,2892,2592,2362,2592,2592,2138,2851,2159,2592,2592,2592,2509,2888,2892,2592,2592,2592,2490,2418,2891,2592,2592,2376,2592,2592,2374,2592,2889,2388,2592,2373,2373,2890,2592,2592,2387,2592,2887,2505,2892,2592,2373,2610,2388,2592,2592,2376,2373,2592,2887,2891,2592,2374,2592,2592,2608,2159,2614,2620,2592,2592,2394,2594,2887,2399,2592,2887,2397,2508,2374,2507,2592,2375,2592,2592,2592,2595,2508,2506,2592,2506,2505,2505,2592,2507,2637,2505,2592,2592,2401,2661,2592,2643,2592,2592,2417,2592,2655,2592,2592,2592,2510,2414,2656,2592,2592,2592,2516,2592,2593,2660,2665,2880,2592,2592,2592,2522,2767,2666,2881,2592,2592,2420,2571,2696,2592,2592,2592,2580,2572,2686,2632,2698,2592,2383,2514,2592,2163,2932,2465,2685,2631,2697,2592,2388,2592,2592,2212,2604,2671,2632,2678,2592,2401,2405,2409,2592,2592,2592,2679,2592,2592,2592,2592,2108,2677,2591,2592,2592,2592,2419,2592,2683,2187,2191,2469,2671,2189,2467,2592,2401,2629,2633,2702,2468,2592,2592,2421,2536,2703,2469,2592,2592,2422,2573,2593,2672,2467,2592,2402,2406,2592,2402,2979,2592,2592,2626,2673,2467,2592,2446,2259,2947,2592,2377,2709,2592,2592,2522,2862,2713,2468,2592,2592,2581,2572,2562,2374,2374,2592,2376,2721,2724,2592,2592,2624,2373,2731,2592,2592,2592,2626,2732,2592,2592,2592,2755,2656,2726,2736,2741,2592,2486,2593,2381,2592,2727,2737,2742,2715,2747,2753,2592,2498,2469,2873,2743,2592,2592,2592,2791,2759,2763,2592,2592,2627,2704,2592,2592,2522,2789,2593,2761,2753,2592,2498,2863,2592,2592,2767,2592,2592,2592,2792,2789,2592,2592,2592,2803,2126,2592,2592,2592,2811,2122,2592,2592,2592,2834,2777,2592,2592,2592,2848,2936,2591,2489,2797,2592,2592,2670,2631,2490,2798,2592,2592,2592,2963,2807,2592,2592,2592,2965,2838,2592,2592,2592,2975,2330,2818,2829,2592,2498,2939,2592,2498,2592,2791,2331,2819,2830,2592,2592,2592,2982,2834,2817,2828,2106,2592,2592,2592,2405,2405,2817,2828,2592,2592,2415,2849,2842,2592,2522,2773,2592,2522,2868,2592,2580,2600,2586,2137,2850,2843,2592,2592,2855,2937,2844,2592,2592,2592,2987,2936,2591,2592,2592,2684,2630,2592,2856,2938,2592,2592,2860,2939,2592,2592,2872,2592,2861,2591,2592,2592,2887,2616,2592,2867,2592,2592,2708,2592,2498,2469,2498,2497,2785,2773,2499,2783,2770,2877,2877,2877,2772,2592,2592,2345,2885,2592,2592,2592,2715,2762,2515,2896,2592,2592,2715,2917,2516,2897,2592,2592,2592,2901,2906,2911,2592,2592,2956,2960,2715,2902,2907,2912,2593,2916,2920,2820,2922,2822,2592,2592,2715,2927,2921,2821,2106,2592,2592,2974,2408,2321,2821,2106,2592,2592,2983,2592,2593,2404,2408,2592,2592,2717,2749,2716,2928,2322,2822,2593,2926,2919,2820,2934,2823,2592,2592,2592,2651,2824,2592,2592,2592,2130,2952,2592,2592,2592,2592,2964,2592,2592,2716,2748,2592,2969,2592,2592,2716,2918,2368,2970,2592,2592,2592,2403,2407,2592,2592,2787,2211,2404,2409,2592,2592,2802,2837,2987,2592,2592,2592,2809,2427,2592,2793,2592,2592,2809,2447,1073741824,2147483648,539754496,542375936,402653184,554434560,571736064,545521856,268451840,335544320,268693630,512,2048,256,1024,0,1024,0,1073741824,2147483648,0,0,0,8388608,0,0,1073741824,1073741824,0,2147483648,537133056,4194304,1048576,268435456,-1073741824,0,0,0,1048576,0,0,0,1572864,0,0,0,4194304,0,134217728,16777216,0,0,32,64,98304,0,33554432,8388608,192,67108864,67108864,67108864,67108864,16,32,4,0,8192,196608,196608,229376,80,4096,524288,8388608,0,0,32,128,256,24576,24600,24576,24576,2,24576,24576,24576,24584,24592,24576,24578,24576,24578,24576,24576,16,512,2048,2048,256,4096,32768,1048576,4194304,67108864,134217728,268435456,262144,134217728,0,128,128,64,16384,16384,16384,67108864,32,32,4,4,4096,262144,134217728,0,0,0,2,0,8192,131072,131072,4096,4096,4096,4096,24576,24576,24576,8,8,24576,24576,16384,16384,16384,24576,24584,24576,24576,24576,16384,24576,536870912,262144,0,0,32,2048,8192,4,4096,4096,4096,786432,8388608,16777216,0,128,16384,16384,16384,32768,65536,2097152,32,32,32,32,4,4,4,4,4,4096,67108864,67108864,67108864,24576,24576,24576,24576,0,16384,16384,16384,16384,67108864,67108864,8,67108864,24576,8,8,8,24576,24576,24576,24578,24576,24576,24576,2,2,2,16384,67108864,67108864,67108864,32,67108864,8,8,24576,2048,2147483648,536870912,262144,262144,262144,67108864,8,24576,16384,32768,1048576,4194304,25165824,67108864,24576,32770,2,4,112,512,98304,524288,50,402653186,1049090,1049091,10,66,100925514,10,66,12582914,0,0,-1678194207,-1678194207,-1041543218,0,32768,0,0,32,65536,268435456,1,1,513,1048577,0,12582912,0,0,0,4,1792,0,0,0,7,29360128,0,0,0,8,0,0,0,12,1,1,0,0,-604102721,-604102721,4194304,8388608,0,0,0,31,925600,997981306,997981306,997981306,0,0,2048,8388608,0,0,1,2,4,32,64,512,8192,0,0,0,245760,997720064,0,0,0,32,0,0,0,3,12,16,32,8,112,3072,12288,16384,32768,65536,131072,7864320,16777216,973078528,0,0,65536,131072,3670016,4194304,16777216,33554432,2,8,48,2048,8192,16384,32768,65536,131072,524288,131072,524288,3145728,4194304,16777216,33554432,65536,131072,2097152,4194304,16777216,33554432,134217728,268435456,536870912,0,0,0,1024,0,8,48,2048,8192,65536,33554432,268435456,536870912,65536,268435456,536870912,0,0,32768,0,0,126,623104,65011712,0,32,65536,536870912,0,0,65536,524288,0,32,65536,0,0,0,2048,0,0,0,15482,245760,-604102721,0,0,0,18913,33062912,925600,-605028352,0,0,0,65536,31,8096,131072,786432,3145728,3145728,12582912,50331648,134217728,268435456,160,256,512,7168,131072,786432,131072,786432,1048576,2097152,12582912,16777216,268435456,1073741824,2147483648,12582912,16777216,33554432,268435456,1073741824,2147483648,3,12,16,160,256,7168,786432,1048576,12582912,16777216,268435456,1073741824,0,8,16,32,128,256,512,7168,786432,1048576,2097152,0,1,2,8,16,7168,786432,1048576,8388608,16777216,16777216,1073741824,0,0,0,0,1,0,0,8,32,128,256,7168,8,32,0,3072,0,8,32,3072,4096,524288,8,32,0,0,3072,4096,0,2048,524288,8388608,8,2048,0,0,1,12,256,4096,32768,262144,1048576,4194304,67108864,0,2048,0,2048,2048,1073741824,-58805985,-58805985,-58805985,0,0,262144,0,0,32,4194304,16777216,134217728,4382,172032,-58982400,0,0,2,28,256,4096,8192,8192,32768,131072,262144,524288,1,2,12,256,4096,0,0,4194304,67108864,134217728,805306368,1073741824,0,0,1,2,12,16,256,4096,1048576,67108864,134217728,268435456,0,512,1048576,4194304,201326592,1879048192,0,0,12,256,4096,134217728,268435456,536870912,12,256,268435456,536870912,0,12,256,0,0,1,32,64,512,0,0,205236961,205236961,0,0,0,1,96,640,1,10976,229376,204996608,0,640,2048,8192,229376,1572864,1572864,2097152,201326592,0,0,0,64,512,2048,229376,1572864,201326592,1572864,201326592,0,0,1,4382,0,1,32,2048,65536,131072,1572864,201326592,131072,1572864,134217728,0,0,524288,524288,0,0,0,-68582786,-68582786,-68582786,0,0,2097152,524288,0,524288,0,0,65536,131072,1572864,0,0,2,4,0,0,65011712,-134217728,0,0,0,0,2,4,120,512,-268435456,0,0,0,2,8,48,64,2048,8192,98304,524288,2097152,4194304,25165824,33554432,134217728,268435456,2147483648,0,0,25165824,33554432,134217728,1879048192,2147483648,0,0,4,112,512,622592,65011712,134217728,-268435456,16777216,33554432,134217728,1610612736,0,0,0,64,98304,524288,4194304,16777216,33554432,0,98304,524288,16777216,33554432,0,65536,524288,33554432,536870912,1073741824,0,65536,524288,536870912,1073741824,0,0,65536,524288,536870912,0,524288,0,524288,524288,1048576,2086666240,2147483648,0,-1678194207,0,0,0,8,32,2048,524288,8388608,0,0,33062912,436207616,2147483648,0,0,32,64,2432,16384,32768,32768,524288,3145728,4194304,25165824,25165824,167772160,268435456,2147483648,0,32,64,384,2048,16384,32768,1048576,2097152,4194304,25165824,32,64,128,256,2048,16384,2048,16384,1048576,4194304,16777216,33554432,134217728,536870912,1073741824,0,0,2048,16384,4194304,16777216,33554432,134217728,805306368,0,0,16777216,134217728,268435456,2147483648,0,622592,622592,622592,8807,8807,434791,0,0,16777216,0,0,0,7,608,8192,0,0,0,3,4,96,512,32,64,8192,0,0,16777216,134217728,0,0,2,4,8192,16384,65536,2097152,33554432,268435456],n.TOKEN=["(0)","ModuleDecl","Annotation","OptionDecl","Operator","Variable","Tag","EndTag","PragmaContents","DirCommentContents","DirPIContents","CDataSectionContents","AttrTest","Wildcard","EQName","IntegerLiteral","DecimalLiteral","DoubleLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","QuotChar","AposChar","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","NCName","QName","S","CharRef","CommentContents","DocTag","DocCommentContents","EOF","'!'","'\"'","'#'","'#)'","''''","'('","'(#'","'(:'","'(:~'","')'","'*'","'*'","','","'--\x3e'","'.'","'/'","'/>'","':'","':)'","';'","'\x3c!--'","''","'?'","'?>'","'NaN'","'['","']'","']]>'","'after'","'all'","'allowing'","'ancestor'","'ancestor-or-self'","'and'","'any'","'append'","'array'","'as'","'ascending'","'at'","'attribute'","'base-uri'","'before'","'boundary-space'","'break'","'by'","'case'","'cast'","'castable'","'catch'","'check'","'child'","'collation'","'collection'","'comment'","'constraint'","'construction'","'contains'","'content'","'context'","'continue'","'copy'","'copy-namespaces'","'count'","'decimal-format'","'decimal-separator'","'declare'","'default'","'delete'","'descendant'","'descendant-or-self'","'descending'","'diacritics'","'different'","'digit'","'distance'","'div'","'document'","'document-node'","'element'","'else'","'empty'","'empty-sequence'","'encoding'","'end'","'entire'","'eq'","'every'","'exactly'","'except'","'exit'","'external'","'first'","'following'","'following-sibling'","'for'","'foreach'","'foreign'","'from'","'ft-option'","'ftand'","'ftnot'","'ftor'","'function'","'ge'","'greatest'","'group'","'grouping-separator'","'gt'","'idiv'","'if'","'import'","'in'","'index'","'infinity'","'inherit'","'insensitive'","'insert'","'instance'","'integrity'","'intersect'","'into'","'is'","'item'","'json'","'json-item'","'key'","'language'","'last'","'lax'","'le'","'least'","'let'","'levels'","'loop'","'lowercase'","'lt'","'minus-sign'","'mod'","'modify'","'module'","'most'","'namespace'","'namespace-node'","'ne'","'next'","'no'","'no-inherit'","'no-preserve'","'node'","'nodes'","'not'","'object'","'occurs'","'of'","'on'","'only'","'option'","'or'","'order'","'ordered'","'ordering'","'paragraph'","'paragraphs'","'parent'","'pattern-separator'","'per-mille'","'percent'","'phrase'","'position'","'preceding'","'preceding-sibling'","'preserve'","'previous'","'processing-instruction'","'relationship'","'rename'","'replace'","'return'","'returning'","'revalidation'","'same'","'satisfies'","'schema'","'schema-attribute'","'schema-element'","'score'","'self'","'sensitive'","'sentence'","'sentences'","'skip'","'sliding'","'some'","'stable'","'start'","'stemming'","'stop'","'strict'","'strip'","'structured-item'","'switch'","'text'","'then'","'thesaurus'","'times'","'to'","'treat'","'try'","'tumbling'","'type'","'typeswitch'","'union'","'unique'","'unordered'","'updating'","'uppercase'","'using'","'validate'","'value'","'variable'","'version'","'weight'","'when'","'where'","'while'","'wildcards'","'window'","'with'","'without'","'word'","'words'","'xquery'","'zero-digit'","'{'","'{{'","'|'","'}'","'}}'"]},{}],"/node_modules/xqlint/lib/lexers/lexer.js":[function(e,a,t){"use strict";var n=function(e){var a=e;this.tokens=[],this.reset=function(){this.tokens=[]},this.startNonterminal=function(){},this.endNonterminal=function(){},this.terminal=function(e,t,n){this.tokens.push({name:e,value:a.substring(t,n)})},this.whitespace=function(e,t){this.tokens.push({name:"WS",value:a.substring(e,t)})}};t.Lexer=function(e,a){this.tokens=[],this.getLineTokens=function(t,r){r="start"!==r&&r?r:'["start"]';for(var s=JSON.parse(r),o=new n(t),c=new e(t,o),i=[];;){var k=s[s.length-1];try{o.tokens=[],c["parse_"+k]();var u=null;o.tokens.length>1&&"WS"===o.tokens[0].name&&(i.push({type:"text",value:o.tokens[0].value}),o.tokens.splice(0,1));for(var l=o.tokens[0],b=a[k],m=0;m1&&e.pop()}},{name:m("{"),token:"text",next:function(e){e.push("start")}}].concat(o),_EQName:[{name:"EQName",token:"text",next:function(e){e.pop()}}].concat(c),Prefix:[{name:"NCName",token:"text",next:function(e){e.pop()}}].concat(c),StartTag:[{name:m(">"),token:"meta.tag",next:function(e){e.push("TagContent")}},{name:"QName",token:"entity.other.attribute-name"},{name:m("="),token:"text"},{name:m("''"),token:"string",next:function(e){e.push("AposAttr")}},{name:m('"'),token:"string",next:function(e){e.push("QuotAttr")}},{name:m("/>"),token:"meta.tag.r",next:function(e){e.pop()}}],TagContent:[{name:"ElementContentChar",token:"text"},{name:m(""),token:i,next:function(e){e.pop()}}],PI:[{name:"DirPIContents",token:l},{name:m("?"),token:l},{name:m("?>"),token:l,next:function(e){e.pop()}}],AposString:[{name:m("''"),token:"string",next:function(e){e.pop()}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:"EscapeApos",token:"constant.language.escape"},{name:"AposChar",token:"string"}],QuotString:[{name:m('"'),token:"string",next:function(e){e.pop()}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:"EscapeQuot",token:"constant.language.escape"},{name:"QuotChar",token:"string"}]};t.XQueryLexer=function(){return new r(n,g)}},{"./XQueryTokenizer":"/node_modules/xqlint/lib/lexers/XQueryTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}]},{},["/node_modules/xqlint/lib/lexers/xquery_lexer.js"])})),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],(function(e,a,t){"use strict";var n=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator;function o(e,a){return e&&e.type.lastIndexOf(a+".xml")>-1}e("../../lib/lang");var c=function(){this.add("string_dquotes","insertion",(function(e,a,t,n,r){if('"'==r||"'"==r){var c=r,i=n.doc.getTextRange(t.getSelectionRange());if(""!==i&&"'"!==i&&'"'!=i&&t.getWrapBehavioursEnabled())return{text:c+i+c,selection:!1};var k=t.getCursorPosition(),u=n.doc.getLine(k.row).substring(k.column,k.column+1),l=new s(n,k.row,k.column),b=l.getCurrentToken();if(u==c&&(o(b,"attribute-value")||o(b,"string")))return{text:"",selection:[1,1]};if(b||(b=l.stepBackward()),!b)return;for(;o(b,"tag-whitespace")||o(b,"whitespace");)b=l.stepBackward();var m=!u||u.match(/\s/);if(o(b,"attribute-equals")&&(m||">"==u)||o(b,"decl-attribute-equals")&&(m||"?"==u))return{text:c+c,selection:[1,1]}}})),this.add("string_dquotes","deletion",(function(e,a,t,n,r){var s=n.doc.getTextRange(r);if(!r.isMultiLine()&&('"'==s||"'"==s)&&n.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)==s)return r.end.column++,r})),this.add("autoclosing","insertion",(function(e,a,t,n,r){if(">"==r){var c=t.getSelectionRange().start,i=new s(n,c.row,c.column),k=i.getCurrentToken()||i.stepBackward();if(!k||!(o(k,"tag-name")||o(k,"tag-whitespace")||o(k,"attribute-name")||o(k,"attribute-equals")||o(k,"attribute-value")))return;if(o(k,"reference.attribute-value"))return;if(o(k,"attribute-value")){var u=i.getCurrentTokenColumn()+k.value.length;if(c.column/.test(n.getLine(c.row).slice(c.column)))return;for(;!o(k,"tag-name");)if("<"==(k=i.stepBackward()).value){k=i.stepForward();break}var b=i.getCurrentTokenRow(),m=i.getCurrentTokenColumn();if(o(i.stepBackward(),"end-tag-open"))return;var g=k.value;if(b==c.row&&(g=g.substring(0,c.column-m)),this.voidElements.hasOwnProperty(g.toLowerCase()))return;return{text:">",selection:[1,1]}}})),this.add("autoindent","insertion",(function(e,a,t,n,r){if("\n"==r){var o=t.getCursorPosition(),c=n.getLine(o.row),i=new s(n,o.row,o.column),k=i.getCurrentToken();if(k&&-1!==k.type.indexOf("tag-close")){if("/>"==k.value)return;for(;k&&-1===k.type.indexOf("tag-name");)k=i.stepBackward();if(!k)return;var u=k.value,l=i.getCurrentTokenRow();if(!(k=i.stepBackward())||-1!==k.type.indexOf("end-tag"))return;if(this.voidElements&&!this.voidElements[u]){var b=n.getTokenAt(o.row,o.column+1),m=(c=n.getLine(l),this.$getIndent(c)),g=m+n.getTabString();return b&&""==r){var s=t.getCursorPosition(),o=new c(n,s.row,s.column),k=o.getCurrentToken(),u=!1;if(e=JSON.parse(e).pop(),k&&">"===k.value||"StartTag"!==e)return;if(k&&(i(k,"meta.tag")||i(k,"text")&&k.value.match("/")))u=!0;else do{k=o.stepBackward()}while(k&&(i(k,"string")||i(k,"keyword.operator")||i(k,"entity.attribute-name")||i(k,"text")));var l=o.stepBackward();if(!k||!i(k,"meta.tag")||null!==l&&l.value.match("/"))return;var b=k.value.substring(1);return u&&(b=b.substring(0,s.column-k.start)),{text:">",selection:[1,1]}}}))};n.inherits(k,r),a.XQueryBehaviour=k})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,a,t){"use strict";var n=e("../../lib/oop"),r=e("../../range").Range,s=e("./fold_mode").FoldMode,o=a.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};n.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,a,t){var n=e.getLine(t);if(this.singleLineBlockCommentRe.test(n)&&!this.startRegionRe.test(n)&&!this.tripleStarBlockCommentRe.test(n))return"";var r=this._getFoldWidgetBase(e,a,t);return!r&&this.startRegionRe.test(n)?"start":r},this.getFoldWidgetRange=function(e,a,t,n){var r,s=e.getLine(t);if(this.startRegionRe.test(s))return this.getCommentRegionBlock(e,s,t);if(r=s.match(this.foldingStartMarker)){var o=r.index;if(r[1])return this.openingBracketBlock(e,r[1],t,o);var c=e.getCommentFoldRange(t,o+r[0].length,1);return c&&!c.isMultiLine()&&(n?c=this.getSectionRange(e,t):"all"!=a&&(c=null)),c}return"markbegin"!==a&&(r=s.match(this.foldingStopMarker))?(o=r.index+r[0].length,r[1]?this.closingBracketBlock(e,r[1],t,o):e.getCommentFoldRange(t,o,-1)):void 0},this.getSectionRange=function(e,a){for(var t=e.getLine(a),n=t.search(/\S/),s=a,o=t.length,c=a+=1,i=e.getLength();++ak)break;var u=this.getFoldWidgetRange(e,"all",a);if(u){if(u.start.row<=s)break;if(u.isMultiLine())a=u.end.row;else if(n==k)break}c=a}}return new r(s,o,c,e.getLine(c).length)},this.getCommentRegionBlock=function(e,a,t){for(var n=a.search(/\s*$/),s=e.getLength(),o=t,c=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,i=1;++to)return new r(o,n,t,a.length)}}.call(o.prototype)})),ace.define("ace/mode/xquery",["require","exports","module","ace/worker/worker_client","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/xquery/xquery_lexer","ace/range","ace/mode/behaviour/xquery","ace/mode/folding/cstyle","ace/anchor"],(function(e,a,t){"use strict";var n=e("../worker/worker_client").WorkerClient,r=e("../lib/oop"),s=e("./text").Mode,o=e("./text_highlight_rules").TextHighlightRules,c=e("./xquery/xquery_lexer").XQueryLexer,i=e("../range").Range,k=e("./behaviour/xquery").XQueryBehaviour,u=e("./folding/cstyle").FoldMode,l=e("../anchor").Anchor,b=function(){this.$tokenizer=new c,this.$behaviour=new k,this.foldingRules=new u,this.$highlightRules=new o};r.inherits(b,s),function(){this.completer={getCompletions:function(e,a,t,n,r){if(!a.$worker)return r();a.$worker.emit("complete",{data:{pos:t,prefix:n}}),a.$worker.on("complete",(function(e){r(null,e.data)}))}},this.getNextLineIndent=function(e,a,t){var n=this.$getIndent(a);return a.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/)&&(n+=t),n},this.checkOutdent=function(e,a,t){return!!/^\s+$/.test(a)&&/^\s*[\}\)]/.test(t)},this.autoOutdent=function(e,a,t){var n=a.getLine(t).match(/^(\s*[\}\)])/);if(!n)return 0;var r=n[1].length,s=a.findMatchingBracket({row:t,column:r});if(!s||s.row==t)return 0;var o=this.$getIndent(a.getLine(s.row));a.replace(new i(t,0,t,r-1),o)},this.toggleCommentLines=function(e,a,t,n){var r,s,o=!0,c=/^\s*\(:(.*):\)/;for(r=t;r<=n;r++)if(!c.test(a.getLine(r))){o=!1;break}var k=new i(0,0,0,0);for(r=t;r<=n;r++)s=a.getLine(r),k.start.row=r,k.end.row=r,k.end.column=s.length,a.replace(k,o?s.match(c)[1]:"(:"+s+":)")},this.createWorker=function(e){var a=new n(["ace"],"ace/mode/xquery_worker","XQueryWorker"),t=this;return a.attachToDocument(e.getDocument()),a.on("ok",(function(a){e.clearAnnotations()})),a.on("markers",(function(a){e.clearAnnotations(),t.addMarkers(a.data,e)})),a.on("highlight",(function(a){t.$tokenizer.tokens=a.data.tokens,t.$tokenizer.lines=e.getDocument().getAllLines();for(var n=Object.keys(t.$tokenizer.tokens),r=0;r>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"punctuation",regex:",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:["keyword","text","entity.name.function"],regex:"(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)"},{token:"text",regex:"\\s+"},{include:"constants"}],qqstring3:[{token:"constant.language.escape",regex:l},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:l},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:l},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:l},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],rawqqstring3:[{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],rawqstring3:[{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],rawqqstring:[{token:"string",regex:"\\\\$",next:"rawqqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],rawqstring:[{token:"string",regex:"\\\\$",next:"rawqstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],fqqstring3:[{token:"constant.language.escape",regex:l},{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring3:[{token:"constant.language.escape",regex:l},{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqqstring:[{token:"constant.language.escape",regex:l},{token:"string",regex:"\\\\$",next:"fqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring:[{token:"constant.language.escape",regex:l},{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring3:[{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring3:[{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring:[{token:"string",regex:"\\\\$",next:"rfqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring:[{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstringParRules:[{token:"paren.lparen",regex:"[\\[\\(]"},{token:"paren.rparen",regex:"[\\]\\)]"},{token:"string",regex:"\\s+"},{token:"string",regex:"'[^']*'"},{token:"string",regex:'"[^"]*"'},{token:"function.support",regex:"(!s|!r|!a)"},{include:"constants"},{token:"paren.rparen",regex:"}",next:"pop"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"}],constants:[{token:"constant.numeric",regex:"(?:"+a+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:s+"[lL]\\b"},{token:"constant.numeric",regex:s+"\\b"},{token:["punctuation","function.support"],regex:"(\\.)([a-zA-Z_]+)\\b"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}]},this.normalizeRules()};r.inherits(s,i),t.PythonHighlightRules=s})),ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+e+")(?:\\s*)(?:#.*)?$")};r.inherits(s,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n).match(this.foldingStartMarker);if(r)return r[1]?this.openingBracketBlock(e,r[1],n,r.index):r[2]?this.indentationBlock(e,n,r.index+r[2].length):this.indentationBlock(e,n)}}.call(s.prototype)})),ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"],(function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./python_highlight_rules").PythonHighlightRules,o=e("./folding/pythonic").FoldMode,g=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o("\\:"),this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="#",this.$pairQuotesAfter={"'":/[ruf]/i,'"':/[ruf]/i},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;return i.length&&"comment"==i[i.length-1].type||"start"==e&&t.match(/^.*[\{\(\[:]\s*$/)&&(r+=n),r};var e={pass:1,return:1,raise:1,break:1,continue:1};this.checkOutdent=function(t,n,r){if("\r\n"!==r&&"\r"!==r&&"\n"!==r)return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do{var s=i.pop()}while(s&&("comment"==s.type||"text"==s.type&&s.value.match(/^\s+$/)));return!!s&&"keyword"==s.type&&e[s.value]},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new g(n,r.length-i.length,n,r.length))},this.$id="ace/mode/python",this.snippetFileId="ace/snippets/python"}.call(a.prototype),t.Mode=a})),ace.require(["ace/mode/python"],(function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)})); \ No newline at end of file diff --git a/html/bundle/03e5ab5dd6985dc9d42c81a654b83e56.js b/html/bundle/03e5ab5dd6985dc9d42c81a654b83e56.js new file mode 100644 index 00000000000..795ac459013 --- /dev/null +++ b/html/bundle/03e5ab5dd6985dc9d42c81a654b83e56.js @@ -0,0 +1 @@ +ace.define("ace/ext/hardwrap",["require","exports","module","ace/range","ace/editor","ace/config"],(function(e,t,n){"use strict";var r=e("../range").Range;function o(e,t){for(var n=t.column||e.getOption("printMarginColumn"),o=0!=t.allowMerge,i=Math.min(t.startRow,t.endRow),a=Math.max(t.startRow,t.endRow),s=e.session;i<=a;){var c=s.getLine(i);if(c.length>n){if(h=g(c,n,5)){var l=/^\s*/.exec(c)[0];s.replace(new r(i,h.start,i,h.end),"\n"+l)}a++}else if(o&&/\S/.test(c)&&i!=a){var u=s.getLine(i+1);if(u&&/\S/.test(u)){var h,p=c.replace(/\s+$/,""),d=u.replace(/^\s+/,""),f=p+" "+d;if((h=g(f,n,5))&&h.start>p.length||f.lengthn?{start:a.index,end:a.index+a[2].length}:i&&i[2]?{start:s=t+i[2].length,end:s+i[3].length}:void 0}}}function i(e){if("insertstring"==e.command.name&&/\S/.test(e.args)){var t=e.editor,n=t.selection.cursor;if(n.column<=t.renderer.$printMarginColumn)return;var r=t.session.$undoManager.$lastDelta;o(t,{startRow:n.row,endRow:n.row,allowMerge:!1}),r!=t.session.$undoManager.$lastDelta&&t.session.markUndoGroup()}}var a=e("../editor").Editor;e("../config").defineOptions(a.prototype,"editor",{hardWrap:{set:function(e){e?this.commands.on("afterExec",i):this.commands.off("afterExec",i)},value:!1}}),t.hardWrap=o})),ace.define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/dom","ace/lib/oop","ace/lib/keys","ace/lib/event","ace/search","ace/lib/useragent","ace/search_highlight","ace/commands/multi_select_commands","ace/mode/text","ace/ext/hardwrap","ace/multi_select"],(function(e,t,n){"use strict";var r=e("../range").Range,o=e("../lib/event_emitter").EventEmitter,i=e("../lib/dom"),a=e("../lib/oop"),s=e("../lib/keys"),c=e("../lib/event"),l=e("../search").Search,u=e("../lib/useragent"),h=e("../search_highlight").SearchHighlight,p=e("../commands/multi_select_commands"),d=e("../mode/text").Mode.prototype.tokenRe,f=e("../ext/hardwrap").hardWrap;e("../multi_select");var m=function(e){this.ace=e,this.state={},this.marks={},this.options={},this.$uid=0,this.onChange=this.onChange.bind(this),this.onSelectionChange=this.onSelectionChange.bind(this),this.onBeforeEndOperation=this.onBeforeEndOperation.bind(this),this.ace.on("change",this.onChange),this.ace.on("changeSelection",this.onSelectionChange),this.ace.on("beforeEndOperation",this.onBeforeEndOperation)};function g(e){return{row:e.line,column:e.ch}}function v(e){return new y(e.row,e.column)}m.Pos=function(e,t){if(!(this instanceof y))return new y(e,t);this.line=e,this.ch=t},m.defineOption=function(e,t,n){},m.commands={redo:function(e){e.ace.redo()},undo:function(e){e.ace.undo()},newlineAndIndent:function(e){e.ace.insert("\n")},goLineLeft:function(e){e.ace.selection.moveCursorLineStart()},goLineRight:function(e){e.ace.selection.moveCursorLineEnd()}},m.keyMap={},m.addClass=m.rmClass=function(){},m.e_stop=m.e_preventDefault=c.stopEvent,m.keyName=function(e){var t=s[e.keyCode]||e.key||"";return 1==t.length&&(t=t.toUpperCase()),c.getModifierString(e).replace(/(^|-)\w/g,(function(e){return e.toUpperCase()}))+t},m.keyMap.default=function(e){return function(t){var n=t.ace.commands.commandKeyBinding[e.toLowerCase()];return n&&!1!==t.ace.execCommand(n)}},m.lookupKey=function e(t,n,r){n||(n="default"),"string"==typeof n&&(n=m.keyMap[n]);var o="function"==typeof n?n(t):n[t];if(!1===o)return"nothing";if("..."===o)return"multi";if(null!=o&&r(o))return"handled";if(n.fallthrough){if(!Array.isArray(n.fallthrough))return e(t,n.fallthrough,r);for(var i=0;i0?(c.row+=i,c.column+=c.row==o.row?a:0):!t&&u<=0&&(c.row=n.row,c.column=n.column,0===u&&(c.bias=1))}}};var e=function(e,t,n,r){this.cm=e,this.id=t,this.row=n,this.column=r,e.marks[this.id]=this};e.prototype.clear=function(){delete this.cm.marks[this.id]},e.prototype.find=function(){return v(this)},this.setBookmark=function(t,n){var r=new e(this,this.$uid++,t.line,t.ch);return n&&n.insertLeft||(r.$insertRight=!0),this.marks[r.id]=r,r},this.moveH=function(e,t){if("char"==t){var n=this.ace.selection;n.clearSelection(),n.moveCursorBy(0,e)}},this.findPosV=function(e,t,n,r){if("page"==n){var o=this.ace.renderer.layerConfig;t*=Math.floor(o.height/o.lineHeight),n="line"}if("line"==n){var i=this.ace.session.documentToScreenPosition(e.line,e.ch);return null!=r&&(i.column=r),i.row+=t,i.row=Math.min(Math.max(0,i.row),this.ace.session.getScreenLength()-1),v(this.ace.session.screenToDocumentPosition(i.row,i.column))}},this.charCoords=function(e,t){if("div"==t||!t)return{left:(r=this.ace.session.documentToScreenPosition(e.line,e.ch)).column,top:r.row};if("local"==t){var n=this.ace.renderer,r=this.ace.session.documentToScreenPosition(e.line,e.ch),o=n.layerConfig.lineHeight,i=n.layerConfig.characterWidth,a=o*r.row;return{left:r.column*i,top:a,bottom:a+o}}},this.coordsChar=function(e,t){var n=this.ace.renderer;if("local"==t){var r=Math.max(0,Math.floor(e.top/n.lineHeight)),o=Math.max(0,Math.floor(e.left/n.characterWidth));return v(n.session.screenToDocumentPosition(r,o))}if("div"==t)throw"not implemented"},this.getSearchCursor=function(e,t,n){var r=!1,o=!1;e instanceof RegExp&&!e.global&&(r=!e.ignoreCase,e=e.source,o=!0),"\\n"==e&&(e="\n",o=!1);var i=new l;null==t.ch&&(t.ch=Number.MAX_VALUE);var a={row:t.line,column:t.ch},s=this,c=null;return{findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(t){i.setOptions({needle:e,caseSensitive:r,wrap:!1,backwards:t,regExp:o,start:c||a});var n=i.find(s.ace.session);return(c=n)&&[!c.isEmpty()]},from:function(){return c&&v(c.start)},to:function(){return c&&v(c.end)},replace:function(e){c&&(c.end=s.ace.session.doc.replace(c,e))}}},this.scrollTo=function(e,t){var n=this.ace.renderer,r=n.layerConfig,o=r.maxHeight;o-=(n.$size.scrollerHeight-n.lineHeight)*n.$scrollPastEnd,null!=t&&this.ace.session.setScrollTop(Math.max(0,Math.min(t,o))),null!=e&&this.ace.session.setScrollLeft(Math.max(0,Math.min(e,r.width)))},this.scrollInfo=function(){return 0},this.scrollIntoView=function(e,t){if(e){var n=this.ace.renderer,r={top:0,bottom:t};n.scrollCursorIntoView(g(e),2*n.lineHeight/n.$size.scrollerHeight,r)}},this.getLine=function(e){return this.ace.session.getLine(e)},this.getRange=function(e,t){return this.ace.session.getTextRange(new r(e.line,e.ch,t.line,t.ch))},this.replaceRange=function(e,t,n){n||(n=t);var o=new r(t.line,t.ch,n.line,n.ch);return this.ace.session.$clipRangeToDocument(o),this.ace.session.replace(o,e)},this.replaceSelection=this.replaceSelections=function(e){var t=this.ace.selection;if(this.ace.inVirtualSelectionMode)this.ace.session.replace(t.getRange(),e[0]||"");else{t.inVirtualSelectionMode=!0;var n=t.rangeList.ranges;n.length||(n=[this.ace.multiSelect.getRange()]);for(var r=n.length;r--;)this.ace.session.replace(n[r],e[r]||"");t.inVirtualSelectionMode=!1}},this.getSelection=function(){return this.ace.getSelectedText()},this.getSelections=function(){return this.listSelections().map((function(e){return this.getRange(e.anchor,e.head)}),this)},this.getInputField=function(){return this.ace.textInput.getElement()},this.getWrapperElement=function(){return this.ace.container};var t={indentWithTabs:"useSoftTabs",indentUnit:"tabSize",tabSize:"tabSize",firstLineNumber:"firstLineNumber",readOnly:"readOnly"};this.setOption=function(e,n){switch(this.state[e]=n,e){case"indentWithTabs":e=t[e],n=!n;break;case"keyMap":return void(this.state.$keyMap=n);default:e=t[e]}e&&this.ace.setOption(e,n)},this.getOption=function(e){var n,r=t[e];switch(r&&(n=this.ace.getOption(r)),e){case"indentWithTabs":return e=t[e],!n;case"keyMap":return this.state.$keyMap||"vim"}return r?n:this.state[e]},this.toggleOverwrite=function(e){return this.state.overwrite=e,this.ace.setOverwrite(e)},this.addOverlay=function(e){if(!this.$searchHighlight||!this.$searchHighlight.session){var t=new h(null,"ace_highlight-marker","text"),n=this.ace.session.addDynamicMarker(t);t.id=n.id,t.session=this.ace.session,t.destroy=function(e){t.session.off("change",t.updateOnChange),t.session.off("changeEditor",t.destroy),t.session.removeMarker(t.id),t.session=null},t.updateOnChange=function(e){var n=e.start.row;n==e.end.row?t.cache[n]=void 0:t.cache.splice(n,t.cache.length)},t.session.on("changeEditor",t.destroy),t.session.on("change",t.updateOnChange)}var r=new RegExp(e.query.source,"gmi");this.$searchHighlight=e.highlight=t,this.$searchHighlight.setRegexp(r),this.ace.renderer.updateBackMarkers()},this.removeOverlay=function(e){this.$searchHighlight&&this.$searchHighlight.session&&this.$searchHighlight.destroy()},this.getScrollInfo=function(){var e=this.ace.renderer,t=e.layerConfig;return{left:e.scrollLeft,top:e.scrollTop,height:t.maxHeight,width:t.width,clientHeight:t.height,clientWidth:t.width}},this.getValue=function(){return this.ace.getValue()},this.setValue=function(e){return this.ace.setValue(e,-1)},this.getTokenTypeAt=function(e){var t=this.ace.session.getTokenAt(e.line,e.ch);return t&&/comment|string/.test(t.type)?"string":""},this.findMatchingBracket=function(e){var t=this.ace.session.findMatchingBracket(g(e));return{to:t&&v(t)}},this.findMatchingTag=function(e){var t=this.ace.session.getMatchingTags(g(e));if(t)return{open:{from:v(t.openTag.start),to:v(t.openTag.end)},close:{from:v(t.closeTag.start),to:v(t.closeTag.end)}}},this.indentLine=function(e,t){!0===t?this.ace.session.indentRows(e,e,"\t"):!1===t&&this.ace.session.outdentRows(new r(e,0,e,0))},this.indexFromPos=function(e){return this.ace.session.doc.positionToIndex(g(e))},this.posFromIndex=function(e){return v(this.ace.session.doc.indexToPosition(e))},this.focus=function(e){return this.ace.textInput.focus()},this.blur=function(e){return this.ace.blur()},this.defaultTextHeight=function(e){return this.ace.renderer.layerConfig.lineHeight},this.scanForBracket=function(e,t,n,r){var o=r.bracketRegex.source,i=/paren|text|operator|tag/;if(1==t)var a=this.ace.session.$findClosingBracket(o.slice(1,2),g(e),i);else a=this.ace.session.$findOpeningBracket(o.slice(-2,-1),{row:e.line,column:e.ch+1},i);return a&&{pos:v(a)}},this.refresh=function(){return this.ace.resize(!0)},this.getMode=function(){return{name:this.getOption("mode")}},this.execCommand=function(e){return m.commands.hasOwnProperty(e)?m.commands[e](this):"indentAuto"==e?this.ace.execCommand("autoindent"):void console.log(e+" is not implemented")},this.getLineNumber=function(e){return e.row},this.getLineHandle=function(e){return{text:this.ace.session.getLine(e),row:e}}}.call(m.prototype),(m.StringStream=function(e,t){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0}).prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){if(this.post},eatSpace:function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},backUp:function(e){this.pos-=e},column:function(){throw"not implemented"},indentation:function(){throw"not implemented"},match:function(e,t,n){if("string"!=typeof e){var r=this.string.slice(this.pos).match(e);return r&&r.index>0?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}var o=function(e){return n?e.toLowerCase():e};if(o(this.string.substr(this.pos,e.length))==o(e))return!1!==t&&(this.pos+=e.length),!0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}},m.defineExtension=function(e,t){m.prototype[e]=t},i.importCssString(".normal-mode .ace_cursor{\n border: none;\n background-color: rgba(255,0,0,0.5);\n}\n.normal-mode .ace_hidden-cursors .ace_cursor{\n background-color: transparent;\n border: 1px solid red;\n opacity: 0.7\n}\n.ace_dialog {\n position: absolute;\n left: 0; right: 0;\n background: inherit;\n z-index: 15;\n padding: .1em .8em;\n overflow: hidden;\n color: inherit;\n}\n.ace_dialog-top {\n border-bottom: 1px solid #444;\n top: 0;\n}\n.ace_dialog-bottom {\n border-top: 1px solid #444;\n bottom: 0;\n}\n.ace_dialog input {\n border: none;\n outline: none;\n background: transparent;\n width: 20em;\n color: inherit;\n font-family: monospace;\n}","vimMode",!1),function(){function e(e,t,n){var r;return(r=e.ace.container.appendChild(document.createElement("div"))).className=n?"ace_dialog ace_dialog-bottom":"ace_dialog ace_dialog-top","string"==typeof t?r.innerHTML=t:r.appendChild(t),r}function t(e,t){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=t}m.defineExtension("openDialog",(function(n,r,o){if(!this.virtualSelectionMode()){o||(o={}),t(this,null);var i=e(this,n,o.bottom),a=!1,s=this;this.state.dialog=i;var c,l=i.getElementsByTagName("input")[0];return l?(o.value&&(l.value=o.value,!1!==o.selectValueOnOpen&&l.select()),o.onInput&&m.on(l,"input",(function(e){o.onInput(e,l.value,u)})),o.onKeyUp&&m.on(l,"keyup",(function(e){o.onKeyUp(e,l.value,u)})),m.on(l,"keydown",(function(e){o&&o.onKeyDown&&o.onKeyDown(e,l.value,u)||(13==e.keyCode&&r(l.value),(27==e.keyCode||!1!==o.closeOnEnter&&13==e.keyCode)&&(m.e_stop(e),u()))})),!1!==o.closeOnBlur&&m.on(l,"blur",u),l.focus()):(c=i.getElementsByTagName("button")[0])&&(m.on(c,"click",(function(){u(),s.focus()})),!1!==o.closeOnBlur&&m.on(c,"blur",u),c.focus()),u}function u(e){if("string"==typeof e)l.value=e;else{if(a)return;if(e&&"blur"==e.type&&document.activeElement===l)return;s.state.dialog==i&&(s.state.dialog=null,s.focus()),a=!0,i.remove(),o.onClose&&o.onClose(i);var t=s;t.state.vim&&(t.state.vim.status=null,t.ace._signal("changeStatus"),t.ace.renderer.$loop.schedule(t.ace.renderer.CHANGE_CURSOR))}}})),m.defineExtension("openNotification",(function(n,r){if(!this.virtualSelectionMode()){t(this,c);var o,i=e(this,n,r&&r.bottom),a=!1,s=r&&void 0!==r.duration?r.duration:5e3;return m.on(i,"click",(function(e){m.e_preventDefault(e),c()})),s&&(o=setTimeout(c,s)),c}function c(){a||(a=!0,clearTimeout(o),i.remove())}}))}();var y=m.Pos;function C(e,t){var n=e.state.vim;if(!n||n.insertMode)return t.head;var r=n.sel.head;return r?n.visualBlock&&t.head.line!=r.line?void 0:t.from()!=t.anchor||t.empty()||t.head.line!=r.line||t.head.ch==r.ch?t.head:new y(t.head.line,t.head.ch-1):t.head}function k(e,t,n){if(t.line===n.line&&t.ch>=n.ch-1){var r=e.getLine(t.line).charCodeAt(t.ch);55296<=r&&r<=55551&&(n.ch+=1)}return{start:t,end:n}}var w=[{keys:"",type:"keyToKey",toKeys:"h"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"g",type:"keyToKey",toKeys:"gk"},{keys:"g",type:"keyToKey",toKeys:"gj"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"",type:"keyToKey",toKeys:"x",context:"normal"},{keys:"",type:"keyToKey",toKeys:"W"},{keys:"",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"",type:"keyToKey",toKeys:"w"},{keys:"",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"",type:"keyToKey",toKeys:"0"},{keys:"",type:"keyToKey",toKeys:"$"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"",type:"keyToKey",toKeys:"i",context:"normal"},{keys:"",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"(",type:"motion",motion:"moveBySentence",motionArgs:{forward:!1}},{keys:")",type:"motion",motion:"moveBySentence",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"g$",type:"motion",motion:"moveToEndOfDisplayLine"},{keys:"g^",type:"motion",motion:"moveToStartOfDisplayLine"},{keys:"g0",type:"motion",motion:"moveToStartOfDisplayLine"},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:"=",type:"operator",operator:"indentAuto"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"gn",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!0}},{keys:"gN",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!1}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"expandToLine",motionArgs:{linewise:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveToStartOfLine",context:"insert"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"",type:"idle",context:"normal"},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"gi",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"lastEdit"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"gI",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"bol"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"gJ",type:"action",action:"joinLines",actionArgs:{keepSpaces:!0},isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r",type:"action",action:"replace",isEdit:!0},{keys:"@",type:"action",action:"replayMacro"},{keys:"q",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0},context:"normal"},{keys:"R",type:"operator",operator:"change",operatorArgs:{linewise:!0,fullLine:!0},context:"visual",exitVisualBlock:!0},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"",type:"action",action:"redo"},{keys:"m",type:"action",action:"setMark"},{keys:'"',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a",type:"motion",motion:"textObjectManipulation"},{keys:"i",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],x=w.length,S=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"vglobal",shortName:"v"},{name:"global",shortName:"g"}];function M(e){e.setOption("disableInput",!0),e.setOption("showCursorWhenSelecting",!1),m.signal(e,"vim-mode-change",{mode:"normal"}),e.on("cursorActivity",Ct),re(e),m.on(e.getInputField(),"paste",R(e))}function A(e){e.setOption("disableInput",!1),e.off("cursorActivity",Ct),m.off(e.getInputField(),"paste",R(e)),e.state.vim=null,it&&clearTimeout(it)}function b(e,t){this==m.keyMap.vim&&(e.options.$customCursor=null,m.rmClass(e.getWrapperElement(),"cm-fat-cursor")),t&&t.attach==L||A(e)}function L(e,t){this==m.keyMap.vim&&(e.curOp&&(e.curOp.selectionChanged=!0),e.options.$customCursor=C,m.addClass(e.getWrapperElement(),"cm-fat-cursor")),t&&t.attach==L||M(e)}function O(e,t){if(t){if(this[e])return this[e];var n=function(e){if("'"==e.charAt(0))return e.charAt(1);var t=e.split(/-(?!$)/),n=t[t.length-1];if(1==t.length&&1==t[0].length)return!1;if(2==t.length&&"Shift"==t[0]&&1==n.length)return!1;for(var r=!1,o=0;o")}(e);if(!n)return!1;var r=ie.findKey(t,n);return"function"==typeof r&&m.signal(t,"vim-keypress",n),r}}m.defineOption("vimMode",!1,(function(e,t,n){t&&"vim"!=e.getOption("keyMap")?e.setOption("keyMap","vim"):!t&&n!=m.Init&&/^vim/.test(e.getOption("keyMap"))&&e.setOption("keyMap","default")}));var T={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A",CapsLock:""},E={Enter:"CR",Backspace:"BS",Delete:"Del",Insert:"Ins"};function R(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(ye(e.getCursor(),0,1)),me.enterInsertMode(e,{},t))}),t.onPasteFn}var B=/[\d]/,I=[m.isWordChar,function(e){return e&&!m.isWordChar(e)&&!/\s/.test(e)}],K=[function(e){return/\S/.test(e)}];function P(e,t){for(var n=[],r=e;r"]),V=[].concat(_,H,$,["-",'"',".",":","_","/","+"]);try{N=new RegExp("^[\\p{Lu}]$","u")}catch(e){N=/^[A-Z]$/}function F(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function j(e){return/^[a-z]$/.test(e)}function W(e){return N.test(e)}function U(e){return/^\s*$/.test(e)}function z(e){return-1!=".?!".indexOf(e)}function J(e,t){for(var n=0;nn?t=n:t0?1:-1,u=i.getCursor();do{if((s=o[(e+(t+=l))%e])&&(c=s.find())&&!xe(u,c))break}while(tr)}return s}return{cachedCursor:void 0,add:function(i,a,s){var c=o[t%e];function l(n){var r=++t%e,a=o[r];a&&a.clear(),o[r]=i.setBookmark(n)}if(c){var u=c.find();u&&!xe(u,a)&&l(a)}else l(a);l(s),n=t,(r=t-e+1)<0&&(r=0)},find:function(e,n){var r=t,o=i(e,n);return t=r,o&&o.find()},move:i}},te=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};function ne(){this.latestRegister=void 0,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=void 0,this.lastInsertModeChanges=te()}function re(e){return e.state.vim||(e.state.vim={inputState:new ae,lastEditInputState:void 0,lastEditActionCommand:void 0,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},insertMode:!1,insertModeRepeat:void 0,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{}}),e.state.vim}function oe(){for(var e in Z={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:void 0,jumpList:ee(),macroModeState:new ne,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new le({}),searchHistoryController:new ue,exCommandHistoryController:new ue},q){var t=q[e];t.value=t.defaultValue}}ne.prototype={exitMacroRecordMode:function(){var e=Z.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=void 0,e.isRecording=!1},enterMacroRecordMode:function(e,t){var n=Z.registerController.getRegister(t);if(n){if(n.clear(),this.latestRegister=t,e.openDialog){var r=tt("span",{class:"cm-vim-message"},"recording @"+t);this.onRecordingDone=e.openDialog(r,null,{bottom:!0})}this.isRecording=!0}}};var ie={enterVimMode:M,leaveVimMode:A,buildKeyMap:function(){},getRegisterController:function(){return Z.registerController},resetVimGlobalState_:oe,getVimGlobalState_:function(){return Z},maybeInitVimState_:re,suppressErrorLogging:!1,InsertModeKey:wt,map:function(e,t,n){ft.map(e,t,n)},unmap:function(e,t){return ft.unmap(e,t)},noremap:function(e,t,n){function r(e){return e?[e]:["normal","insert","visual"]}for(var o=r(n),i=w.length,a=i-x;a=0;o--){var i=r[o];if(e!==i.context)if(i.context)this._mapCommand(i);else{var a=["normal","insert","visual"];for(var s in a)if(a[s]!==e){var c={};for(var l in i)c[l]=i[l];c.context=a[s],this._mapCommand(c)}}}},setOption:G,getOption:X,defineOption:Q,defineEx:function(e,t,n){if(t){if(0!==e.indexOf(t))throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered')}else t=e;dt[e]=n,ft.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,n){var r=this.findKey(e,t,n);if("function"==typeof r)return r()},multiSelectHandleKey:Ot,findKey:function(e,t,n){var r,o=re(e);function i(){if(""==t){if(o.visualMode)Pe(e);else{if(!o.insertMode)return;mt(e)}return se(e),!0}}return!1===(r=o.insertMode?function(){if(i())return!0;for(var n=o.inputState.keyBuffer=o.inputState.keyBuffer+t,r=1==t.length,a=he.matchCommand(n,w,o.inputState,"insert");n.length>1&&"full"!=a.type;){n=o.inputState.keyBuffer=n.slice(1);var s=he.matchCommand(n,w,o.inputState,"insert");"none"!=s.type&&(a=s)}if("none"==a.type)return se(e),!1;if("partial"==a.type)return Y&&window.clearTimeout(Y),Y=window.setTimeout((function(){o.insertMode&&o.inputState.keyBuffer&&se(e)}),X("insertModeEscKeysTimeout")),!r;if(Y&&window.clearTimeout(Y),r){for(var c=e.listSelections(),l=0;l|<\w+>|./.exec(n),t=r[0],n=n.substring(r.index+t.length),ie.handleKey(e,t,"mapping")}(r.toKeys):he.processCommand(e,o,r)}catch(t){throw e.state.vim=void 0,re(e),ie.suppressErrorLogging||console.log(t),t}return!0}))}},handleEx:function(e,t){ft.processCommand(e,t)},defineMotion:function(e,t){pe[e]=t},defineAction:function(e,t){me[e]=t},defineOperator:function(e,t){fe[e]=t},mapCommand:function(e,t,n,r,o){var i={keys:e,type:t};for(var a in i[t]=n,i[t+"Args"]=r,o)i[a]=o[a];gt(i)},_mapCommand:gt,defineRegister:function(e,t){var n=Z.registerController.registers;if(!e||1!=e.length)throw Error("Register name must be 1 character");n[e]=t,V.push(e)},exitVisualMode:Pe,exitInsertMode:mt};function ae(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}function se(e,t){e.state.vim.inputState=new ae,m.signal(e,"vim-command-done",t)}function ce(e,t,n){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!n}function le(e){this.registers=e,this.unnamedRegister=e['"']=new ce,e["."]=new ce,e[":"]=new ce,e["/"]=new ce,e["+"]=new ce}function ue(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}ae.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},ae.prototype.getRepeat=function(){var e=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(e=1,this.prefixRepeat.length>0&&(e*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(e*=parseInt(this.motionRepeat.join(""),10))),e},ce.prototype={setText:function(e,t,n){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!n},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(te(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},le.prototype={pushText:function(e,t,n,r,o){if("_"!==e){r&&"\n"!==n.charAt(n.length-1)&&(n+="\n");var i=this.isValidRegister(e)?this.getRegister(e):null;if(i)W(e)?i.pushText(n,r):i.setText(n,r,o),"+"===e&&"undefined"!=typeof navigator&&void 0!==navigator.clipboard&&"function"==typeof navigator.clipboard.readText&&navigator.clipboard.writeText(n),this.unnamedRegister.setText(i.toString(),r);else{switch(t){case"yank":this.registers[0]=new ce(n,r,o);break;case"delete":case"change":-1==n.indexOf("\n")?this.registers["-"]=new ce(n,r):(this.shiftNumericRegisters_(),this.registers[1]=new ce(n,r))}this.unnamedRegister.setText(n,r,o)}}},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new ce),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&J(e,V)},shiftNumericRegisters_:function(){for(var e=9;e>=2;e--)this.registers[e]=this.getRegister(""+(e-1))}},ue.prototype={nextMatch:function(e,t){var n=this.historyBuffer,r=t?-1:1;null===this.initialPrefix&&(this.initialPrefix=e);for(var o=this.iterator+r;t?o>=0:o=n.length?(this.iterator=n.length,this.initialPrefix):o<0?e:void 0},pushInput:function(e){var t=this.historyBuffer.indexOf(e);t>-1&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var he={matchCommand:function(e,t,n,r){var o,i=function(e,t,n,r){for(var o,i=[],a=[],s=0;s"==o.keys.slice(-11)){var c=function(e){var t=/^.*(<[^>]+>)$/.exec(e),n=t?t[1]:e.slice(-1);if(n.length>1)switch(n){case"":n="\n";break;case"":n=" ";break;default:n=""}return n}(e);if(!c||c.length>1)return{type:"clear"};n.selectedCharacter=c}return{type:"full",command:o}},processCommand:function(e,t,n){switch(t.inputState.repeatOverride=n.repeatOverride,n.type){case"motion":this.processMotion(e,t,n);break;case"operator":this.processOperator(e,t,n);break;case"operatorMotion":this.processOperatorMotion(e,t,n);break;case"action":this.processAction(e,t,n);break;case"search":this.processSearch(e,t,n);break;case"ex":case"keyToEx":this.processEx(e,t,n)}},processMotion:function(e,t,n){t.inputState.motion=n.motion,t.inputState.motionArgs=ve(n.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,n){var r=t.inputState;if(r.operator){if(r.operator==n.operator)return r.motion="expandToLine",r.motionArgs={linewise:!0},void this.evalInput(e,t);se(e)}r.operator=n.operator,r.operatorArgs=ve(n.operatorArgs),n.keys.length>1&&(r.operatorShortcut=n.keys),n.exitVisualBlock&&(t.visualBlock=!1,Ie(e)),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,n){var r=t.visualMode,o=ve(n.operatorMotionArgs);o&&r&&o.visualLine&&(t.visualLine=!0),this.processOperator(e,t,n),r||this.processMotion(e,t,n)},processAction:function(e,t,n){var r=t.inputState,o=r.getRepeat(),i=!!o,a=ve(n.actionArgs)||{};r.selectedCharacter&&(a.selectedCharacter=r.selectedCharacter),n.operator&&this.processOperator(e,t,n),n.motion&&this.processMotion(e,t,n),(n.motion||n.operator)&&this.evalInput(e,t),a.repeat=o||1,a.repeatIsExplicit=i,a.registerName=r.registerName,se(e),t.lastMotion=null,n.isEdit&&this.recordLastEdit(t,r,n),me[n.action](e,a,t)},processSearch:function(e,t,n){if(e.getSearchCursor){var r=n.searchArgs.forward,o=n.searchArgs.wholeWordOnly;Ge(e).setReversed(!r);var i=r?"/":"?",a=Ge(e).getQuery(),s=e.getScrollInfo();switch(n.searchArgs.querySrc){case"prompt":var c=Z.macroModeState;c.isPlaying?p(h=c.replaySearchQueries.shift(),!0,!1):rt(e,{onClose:function(e){p(e,!0,!0);var t=Z.macroModeState;t.isRecording&&function(e,t){if(!e.isPlaying){var n=e.latestRegister,r=Z.registerController.getRegister(n);r&&r.pushSearchQuery&&r.pushSearchQuery(t)}}(t,e)},prefix:i,desc:"(JavaScript regexp)",onKeyUp:function(t,n,o){var i,a,c,l=m.keyName(t);"Up"==l||"Down"==l?(i="Up"==l,a=t.target?t.target.selectionEnd:0,o(n=Z.searchHistoryController.nextMatch(n,i)||""),a&&t.target&&(t.target.selectionEnd=t.target.selectionStart=Math.min(a,t.target.value.length))):"Left"!=l&&"Right"!=l&&"Ctrl"!=l&&"Alt"!=l&&"Shift"!=l&&Z.searchHistoryController.reset();try{c=ot(e,n,!0,!0)}catch(t){}c?e.scrollIntoView(st(e,!r,c),30):(ct(e),e.scrollTo(s.left,s.top))},onKeyDown:function(t,n,r){var o=m.keyName(t);"Esc"==o||"Ctrl-C"==o||"Ctrl-["==o||"Backspace"==o&&""==n?(Z.searchHistoryController.pushInput(n),Z.searchHistoryController.reset(),ot(e,a),ct(e),e.scrollTo(s.left,s.top),m.e_stop(t),se(e),r(),e.focus()):"Up"==o||"Down"==o?m.e_stop(t):"Ctrl-U"==o&&(m.e_stop(t),r(""))}});break;case"wordUnderCursor":var l=_e(e,!1,0,!1,!0),u=!0;if(l||(l=_e(e,!1,0,!1,!1),u=!1),!l)return;var h=e.getLine(l.start.line).substring(l.start.ch,l.end.ch);h=u&&o?"\\b"+h+"\\b":h.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1"),Z.jumpList.cachedCursor=e.getCursor(),e.setCursor(l.start),p(h,!0,!1)}}function p(r,o,i){Z.searchHistoryController.pushInput(r),Z.searchHistoryController.reset();try{ot(e,r,o,i)}catch(t){return nt(e,"Invalid regex: "+r),void se(e)}he.processMotion(e,t,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:n.searchArgs.toJumplist}})}},processEx:function(e,t,n){function r(t){Z.exCommandHistoryController.pushInput(t),Z.exCommandHistoryController.reset(),ft.processCommand(e,t),e.state.vim&&se(e)}function o(t,n,r){var o,i,a=m.keyName(t);("Esc"==a||"Ctrl-C"==a||"Ctrl-["==a||"Backspace"==a&&""==n)&&(Z.exCommandHistoryController.pushInput(n),Z.exCommandHistoryController.reset(),m.e_stop(t),se(e),r(),e.focus()),"Up"==a||"Down"==a?(m.e_stop(t),o="Up"==a,i=t.target?t.target.selectionEnd:0,r(n=Z.exCommandHistoryController.nextMatch(n,o)||""),i&&t.target&&(t.target.selectionEnd=t.target.selectionStart=Math.min(i,t.target.value.length))):"Ctrl-U"==a?(m.e_stop(t),r("")):"Left"!=a&&"Right"!=a&&"Ctrl"!=a&&"Alt"!=a&&"Shift"!=a&&Z.exCommandHistoryController.reset()}"keyToEx"==n.type?ft.processCommand(e,n.exArgs.input):t.visualMode?rt(e,{onClose:r,prefix:":",value:"'<,'>",onKeyDown:o,selectValueOnOpen:!1}):rt(e,{onClose:r,prefix:":",onKeyDown:o})},evalInput:function(e,t){var n,r,o,i=t.inputState,a=i.motion,s=i.motionArgs||{},c=i.operator,l=i.operatorArgs||{},u=i.registerName,h=t.sel,p=we(t.visualMode?ge(e,h.head):e.getCursor("head")),d=we(t.visualMode?ge(e,h.anchor):e.getCursor("anchor")),f=we(p),m=we(d);if(c&&this.recordLastEdit(t,i),(o=void 0!==i.repeatOverride?i.repeatOverride:i.getRepeat())>0&&s.explicitRepeat?s.repeatIsExplicit=!0:(s.noRepeat||!s.explicitRepeat&&0===o)&&(o=1,s.repeatIsExplicit=!1),i.selectedCharacter&&(s.selectedCharacter=l.selectedCharacter=i.selectedCharacter),s.repeat=o,se(e),a){var g=pe[a](e,p,s,t,i);if(t.lastMotion=pe[a],!g)return;if(s.toJumplist){c||null==e.ace.curOp||(e.ace.curOp.command.scrollIntoView="center-animate");var v=Z.jumpList,C=v.cachedCursor;C?(He(e,C,g),delete v.cachedCursor):He(e,p,g)}g instanceof Array?(r=g[0],n=g[1]):n=g,n||(n=we(p)),t.visualMode?(t.visualBlock&&n.ch===1/0||(n=ge(e,n,f)),r&&(r=ge(e,r)),r=r||m,h.anchor=r,h.head=n,Ie(e),Ue(e,t,"<",Se(r,n)?r:n),Ue(e,t,">",Se(r,n)?n:r)):c||(e.ace.curOp&&(e.ace.curOp.vimDialogScroll="center-animate"),n=ge(e,n,f),e.setCursor(n.line,n.ch))}if(c){if(l.lastSel){r=m;var w=l.lastSel,x=Math.abs(w.head.line-w.anchor.line),S=Math.abs(w.head.ch-w.anchor.ch);n=w.visualLine?new y(m.line+x,m.ch):w.visualBlock?new y(m.line+x,m.ch+S):w.head.line==w.anchor.line?new y(m.line,m.ch+S):new y(m.line+x,m.ch),t.visualMode=!0,t.visualLine=w.visualLine,t.visualBlock=w.visualBlock,h=t.sel={anchor:r,head:n},Ie(e)}else t.visualMode&&(l.lastSel={anchor:we(h.anchor),head:we(h.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var M,A,b,L,O;if(t.visualMode){if(M=Me(h.head,h.anchor),A=Ae(h.head,h.anchor),b=t.visualLine||l.linewise,L=t.visualBlock?"block":b?"line":"char",O=Ke(e,{anchor:(B=k(e,M,A)).start,head:B.end},L),b){var T=O.ranges;if("block"==L)for(var E=0;E0&&i&&U(i);i=o.pop())n.line--,n.ch=0;i?(n.line--,n.ch=Le(e,n.line)):n.ch=0}}(e,M,A),L="char";var B,I=!s.inclusive||b;O=Ke(e,{anchor:(B=k(e,M,A)).start,head:B.end},L,I)}e.setSelections(O.ranges,O.primary),t.lastMotion=null,l.repeat=o,l.registerName=u,l.linewise=b;var K=fe[c](e,l,O.ranges,m,n);t.visualMode&&Pe(e,null!=K),K&&e.setCursor(K)}},recordLastEdit:function(e,t,n){var r=Z.macroModeState;r.isPlaying||(e.lastEditInputState=t,e.lastEditActionCommand=n,r.lastInsertModeChanges.changes=[],r.lastInsertModeChanges.expectCursorActivityForChange=!1,r.lastInsertModeChanges.visualBlock=e.visualBlock?e.sel.head.line-e.sel.anchor.line:0)}},pe={moveToTopLine:function(e,t,n){var r=lt(e).top+n.repeat-1;return new y(r,Ne(e.getLine(r)))},moveToMiddleLine:function(e){var t=lt(e),n=Math.floor(.5*(t.top+t.bottom));return new y(n,Ne(e.getLine(n)))},moveToBottomLine:function(e,t,n){var r=lt(e).bottom-n.repeat+1;return new y(r,Ne(e.getLine(r)))},expandToLine:function(e,t,n){return new y(t.line+n.repeat-1,1/0)},findNext:function(e,t,n){var r=Ge(e),o=r.getQuery();if(o){var i=!n.forward;return i=r.isReversed()?!i:i,at(e,o),st(e,i,o,n.repeat)}},findAndSelectNextInclusive:function(e,t,n,r,o){var i=Ge(e),a=i.getQuery();if(a){var s=!n.forward,c=function(e,t,n,r,o){return void 0===r&&(r=1),e.operation((function(){var i=e.getCursor(),a=e.getSearchCursor(n,i),s=a.find(!t);!o.visualMode&&s&&xe(a.from(),i)&&a.find(!t);for(var c=0;cl&&o.line==l)return je(e,t,n,r,!0);var u=e.ace.session.getFoldLine(s);return u&&(n.forward?s>u.start.row&&(s=u.end.row+1):s=u.start.row),n.toFirstChar&&(i=Ne(e.getLine(s)),r.lastHPos=i),r.lastHSPos=e.charCoords(new y(s,i),"div").left,new y(s,i)},moveByDisplayLines:function(e,t,n,r){var o=t;switch(r.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:r.lastHSPos=e.charCoords(o,"div").left}var i=n.repeat;if((s=e.findPosV(o,n.forward?i:-i,"line",r.lastHSPos)).hitSide)if(n.forward)var a={top:e.charCoords(s,"div").top+8,left:r.lastHSPos},s=e.coordsChar(a,"div");else{var c=e.charCoords(new y(e.firstLine(),0),"div");c.left=r.lastHSPos,s=e.coordsChar(c,"div")}return r.lastHPos=s.ch,s},moveByPage:function(e,t,n){var r=t,o=n.repeat;return e.findPosV(r,n.forward?o:-o,"page")},moveByParagraph:function(e,t,n){var r=n.forward?1:-1;return Je(e,t,n.repeat,r)},moveBySentence:function(e,t,n){var r=n.forward?1:-1;return function(e,t,n,r){function o(e,t){if(t.pos+t.dir<0||t.pos+t.dir>=t.line.length){if(t.ln+=t.dir,!F(e,t.ln))return t.line=null,t.ln=null,void(t.pos=null);t.line=e.getLine(t.ln),t.pos=t.dir>0?0:t.line.length-1}else t.pos+=t.dir}function i(e,t,n,r){var i=""===(l=e.getLine(t)),a={line:l,ln:t,pos:n,dir:r},s={ln:a.ln,pos:a.pos},c=""===a.line;for(o(e,a);null!==a.line;){if(s.ln=a.ln,s.pos=a.pos,""===a.line&&!c)return{ln:a.ln,pos:a.pos};if(i&&""!==a.line&&!U(a.line[a.pos]))return{ln:a.ln,pos:a.pos};!z(a.line[a.pos])||i||a.pos!==a.line.length-1&&!U(a.line[a.pos+1])||(i=!0),o(e,a)}var l=e.getLine(s.ln);s.pos=0;for(var u=l.length-1;u>=0;--u)if(!U(l[u])){s.pos=u;break}return s}function a(e,t,n,r){var i={line:e.getLine(t),ln:t,pos:n,dir:r},a={ln:i.ln,pos:null},s=""===i.line;for(o(e,i);null!==i.line;){if(""===i.line&&!s)return null!==a.pos?a:{ln:i.ln,pos:i.pos};if(z(i.line[i.pos])&&null!==a.pos&&(i.ln!==a.ln||i.pos+1!==a.pos))return a;""===i.line||U(i.line[i.pos])||(s=!1,a={ln:i.ln,pos:i.pos}),o(e,i)}var c=e.getLine(a.ln);a.pos=0;for(var l=0;l0;)s=r<0?a(e,s.ln,s.pos,r):i(e,s.ln,s.pos,r),n--;return new y(s.ln,s.pos)}(e,t,n.repeat,r)},moveByScroll:function(e,t,n,r){var o,i=e.getScrollInfo(),a=n.repeat;a||(a=i.clientHeight/(2*e.defaultTextHeight()));var s=e.charCoords(t,"local");if(n.repeat=a,!(o=pe.moveByDisplayLines(e,t,n,r)))return null;var c=e.charCoords(o,"local");return e.scrollTo(null,i.top+c.top-s.top),o},moveByWords:function(e,t,n){return function(e,t,n,r,o,i){var a=we(t),s=[];(r&&!o||!r&&o)&&n++;for(var c=!(r&&o),l=0;l0)u.index=0;else{var f=u.lineText.length;u.index=f>0?f-1:0}u.nextCh=u.lineText.charAt(u.index)}d(u)&&(o.line=c,o.ch=u.index,t--)}return u.nextCh||u.curMoveThrough?new y(c,u.index):o}(e,n.repeat,n.forward,n.selectedCharacter)||t},moveToColumn:function(e,t,n,r){var o=n.repeat;return r.lastHPos=o-1,r.lastHSPos=e.charCoords(t,"div").left,function(e,t){var n=e.getCursor().line;return ge(e,new y(n,t-1))}(e,o)},moveToEol:function(e,t,n,r){return je(e,t,n,r,!1)},moveToFirstNonWhiteSpaceCharacter:function(e,t){var n=t;return new y(n.line,Ne(e.getLine(n.line)))},moveToMatchedSymbol:function(e,t){for(var n,r=t,o=r.line,i=r.ch,a=e.getLine(o);i]/.test(a[i])?/[(){}[\]<>]/:/[(){}[\]]/;return e.findMatchingBracket(new y(o,i+1),{bracketRegex:c}).to}return r},moveToStartOfLine:function(e,t){return new y(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,n){var r=n.forward?e.lastLine():e.firstLine();return n.repeatIsExplicit&&(r=n.repeat-e.getOption("firstLineNumber")),new y(r,Ne(e.getLine(r)))},moveToStartOfDisplayLine:function(e){return e.execCommand("goLineLeft"),e.getCursor()},moveToEndOfDisplayLine:function(e){e.execCommand("goLineRight");var t=e.getCursor();return"before"==t.sticky&&t.ch--,t},textObjectManipulation:function(e,t,n,r){var o=n.selectedCharacter;"b"==o?o="(":"B"==o&&(o="{");var i,a=!n.textObjectInner;if({"(":")",")":"(","{":"}","}":"{","[":"]","]":"[","<":">",">":"<"}[o])i=function(e,t,n,r){var o,i,a=t,s={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/,"<":/[<>]/,">":/[<>]/}[n],c={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{","<":"<",">":"<"}[n],l=e.getLine(a.line).charAt(a.ch)===c?1:0;if(o=e.scanForBracket(new y(a.line,a.ch+l),-1,void 0,{bracketRegex:s}),i=e.scanForBracket(new y(a.line,a.ch+l),1,void 0,{bracketRegex:s}),!o||!i)return{start:a,end:a};if(o=o.pos,i=i.pos,o.line==i.line&&o.ch>i.ch||o.line>i.line){var u=o;o=i,i=u}return r?i.ch+=1:o.ch+=1,{start:o,end:i}}(e,t,o,a);else if({"'":!0,'"':!0,"`":!0}[o])i=function(e,t,n,r){var o,i,a,s,c=we(t),l=e.getLine(c.line).split(""),u=l.indexOf(n);if(c.ch-1&&!o;a--)l[a]==n&&(o=a+1);else o=c.ch+1;if(o&&!i)for(a=o,s=l.length;a0&&z(c[t.ch])&&(t.ch-=1);var l=qe(e,t,n.repeat,1,a),u=qe(e,t,n.repeat,-1,a);U(e.getLine(u.line)[u.ch])&&U(e.getLine(l.line)[l.ch-1])&&(u={line:u.line,ch:u.ch+1}),i={start:u,end:l}}return e.state.vim.visualMode?function(e,t,n){var r,o=e.state.vim.sel,i=o.head,a=o.anchor;return Se(n,t)&&(r=n,n=t,t=r),Se(i,a)?(i=Me(t,i),a=Ae(a,n)):(a=Me(t,a),-1==(i=ye(i=Ae(i,n),0,-1)).ch&&i.line!=e.firstLine()&&(i=new y(i.line-1,Le(e,i.line-1)))),[a,i]}(e,i.start,i.end):[i.start,i.end]},repeatLastCharacterSearch:function(e,t,n){var r=Z.lastCharacterSearch,o=n.repeat,i=n.forward===r.forward,a=(r.increment?1:0)*(i?-1:1);e.moveH(-a,"char"),n.inclusive=!!i;var s=We(e,o,i,r.selectedCharacter);return s?(s.ch+=a,s):(e.moveH(a,"char"),t)}};function de(e,t){for(var n=[],r=0;re.lastLine()&&t.linewise&&!p?e.replaceRange("",h,s):e.replaceRange("",a,s),t.linewise&&(p||(e.setCursor(h),m.commands.newlineAndIndent(e)),a.ch=Number.MAX_VALUE),r=a}Z.registerController.pushText(t.registerName,"change",o,t.linewise,n.length>1),me.enterInsertMode(e,{head:r},e.state.vim)},delete:function(e,t,n){var r,o,i=e.state.vim;if(i.visualBlock){o=e.getSelection();var a=de("",n.length);e.replaceSelections(a),r=Me(n[0].head,n[0].anchor)}else{var s=n[0].anchor,c=n[0].head;t.linewise&&c.line!=e.firstLine()&&s.line==e.lastLine()&&s.line==c.line-1&&(s.line==e.firstLine()?s.ch=0:s=new y(s.line-1,Le(e,s.line-1))),o=e.getRange(s,c),e.replaceRange("",s,c),r=s,t.linewise&&(r=pe.moveToFirstNonWhiteSpaceCharacter(e,s))}return Z.registerController.pushText(t.registerName,"delete",o,t.linewise,i.visualBlock),ge(e,r)},indent:function(e,t,n){var r=e.state.vim;if(e.indentMore)for(var o=r.visualMode?t.repeat:1,i=0;i1&&e.setSelection(n[0].anchor,n[n.length-1].head),e.execCommand("indentAuto"),pe.moveToFirstNonWhiteSpaceCharacter(e,n[0].anchor)},changeCase:function(e,t,n,r,o){for(var i=e.getSelections(),a=[],s=t.toLower,c=0;cl.top?(c.line+=(s-l.top)/o,c.line=Math.ceil(c.line),e.setCursor(c),l=e.charCoords(c,"local"),e.scrollTo(null,l.top)):e.scrollTo(null,s);else{var u=s+e.getScrollInfo().clientHeight;u=o.anchor.line?ye(o.head,0,1):new y(o.anchor.line,0)}else if("inplace"==r){if(n.visualMode)return}else"lastEdit"==r&&(i=ht(e)||i);e.setOption("disableInput",!1),t&&t.replace?(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),m.signal(e,"vim-mode-change",{mode:"replace"})):(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),m.signal(e,"vim-mode-change",{mode:"insert"})),Z.macroModeState.isPlaying||(e.on("change",yt),m.on(e.getInputField(),"keydown",xt)),n.visualMode&&Pe(e),Re(e,i,a)}},toggleVisualMode:function(e,t,n){var r,o=t.repeat,i=e.getCursor();if(n.visualMode)n.visualLine^t.linewise||n.visualBlock^t.blockwise?(n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,m.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),Ie(e)):Pe(e);else{n.visualMode=!0,n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise;var a=k(e,i,r=ge(e,new y(i.line,i.ch+o-1)));n.sel={anchor:a.start,head:a.end},m.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),Ie(e),Ue(e,n,"<",Me(i,r)),Ue(e,n,">",Ae(i,r))}},reselectLastSelection:function(e,t,n){var r=n.lastSelection;if(n.visualMode&&Be(e,n),r){var o=r.anchorMark.find(),i=r.headMark.find();if(!o||!i)return;n.sel={anchor:o,head:i},n.visualMode=!0,n.visualLine=r.visualLine,n.visualBlock=r.visualBlock,Ie(e),Ue(e,n,"<",Me(o,i)),Ue(e,n,">",Ae(o,i)),m.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""})}},joinLines:function(e,t,n){var r,o;if(n.visualMode){if(r=e.getCursor("anchor"),Se(o=e.getCursor("head"),r)){var i=o;o=r,r=i}o.ch=Le(e,o.line)-1}else{var a=Math.max(t.repeat,2);r=e.getCursor(),o=ge(e,new y(r.line+a-1,1/0))}for(var s=0,c=r.line;c1&&(r=Array(t.repeat+1).join(r));var d,f,m=o.linewise,g=o.blockwise;if(g){r=r.split("\n"),m&&r.pop();for(var v=0;ve.lastLine()&&e.replaceRange("\n",new y(b,0)),Le(e,b)c.length&&(r=c.length),o=new y(a.line,r)}var l=k(e,a,o);if(a=l.start,o=l.end,"\n"==i)n.visualMode||e.replaceRange("",a,o),(m.commands.newlineAndIndentContinueComment||m.commands.newlineAndIndent)(e);else{var u=e.getRange(a,o);if(u=(u=u.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,i)).replace(/[^\n]/g,i),n.visualBlock){var h=new Array(e.getOption("tabSize")+1).join(" ");u=(u=(u=e.getSelection()).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,i)).replace(/\t/g,h).replace(/[^\n]/g,i).split("\n"),e.replaceSelections(u)}else e.replaceRange(u,a,o);n.visualMode?(a=Se(s[0].anchor,s[0].head)?s[0].anchor:s[0].head,e.setCursor(a),Pe(e,!1)):e.setCursor(ye(o,0,-1))}},incrementNumberToken:function(e,t){for(var n,r,o,i,a=e.getCursor(),s=e.getLine(a.line),c=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;null!==(n=c.exec(s))&&(o=(r=n.index)+n[0].length,!(a.chc&&(u=-1),(c+=u)>s&&(c-=2)}return new y(i,c)}function ve(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function ye(e,t,n){return"object"==typeof t&&(n=t.ch,t=t.line),new y(e.line+t,e.ch+n)}function Ce(e,t){if(""==t.slice(-11)){var n=t.length-11,r=e.slice(0,n),o=t.slice(0,n);return r==o&&e.length>n?"full":0==o.indexOf(r)&&"partial"}return e==t?"full":0==t.indexOf(e)&&"partial"}function ke(e,t,n){return function(){for(var r=0;r2&&(t=Me.apply(void 0,Array.prototype.slice.call(arguments,1))),Se(e,t)?e:t}function Ae(e,t){return arguments.length>2&&(t=Ae.apply(void 0,Array.prototype.slice.call(arguments,1))),Se(e,t)?t:e}function be(e,t,n){var r=Se(e,t),o=Se(t,n);return r&&o}function Le(e,t){return e.getLine(t).length}function Oe(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function Te(e,t,n){var r=Le(e,t),o=new Array(n-r+1).join(" ");e.setCursor(new y(t,r)),e.replaceRange(o,e.getCursor())}function Ee(e,t){var n=[],r=e.listSelections(),o=we(e.clipPos(t)),i=!xe(t,o),a=function(e,t,n){for(var r=0;ra?c:0,u=r[l].anchor,h=Math.min(u.line,o.line),p=Math.max(u.line,o.line),d=u.ch,f=o.ch,m=r[l].head.ch-d,g=f-d;m>0&&g<=0?(d++,i||f--):m<0&&g>=0?(d--,s||f++):m<0&&-1==g&&(d--,f++);for(var v=h;v<=p;v++){var C={anchor:new y(v,d),head:new y(v,f)};n.push(C)}return e.setSelections(n),t.ch=f,u.ch=d,u}function Re(e,t,n){for(var r=[],o=0;oc&&(o.line=c),o.ch=Le(e,o.line)}return{ranges:[{anchor:i,head:o}],primary:0}}if("block"==n){var l=Math.min(i.line,o.line),u=i.ch,h=Math.max(i.line,o.line),p=o.ch;u=a.length)return null;r?c=K[0]:(c=I[0])(a.charAt(s))||(c=I[1]);for(var l=s,u=s;c(a.charAt(l))&&l=0;)u--;if(u++,t){for(var h=l;/\s/.test(a.charAt(l))&&l0;)u--;u||(u=p)}}return{start:new y(i.line,u),end:new y(i.line,l)}}function He(e,t,n){xe(t,n)||Z.jumpList.add(e,t,n)}function $e(e,t){Z.lastCharacterSearch.increment=e,Z.lastCharacterSearch.forward=t.forward,Z.lastCharacterSearch.selectedCharacter=t.selectedCharacter}var De={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},Ve={bracket:{isComplete:function(e){if(e.nextCh===e.symb){if(e.depth++,e.depth>=1)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return 0===e.index&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t="*"===e.lastCh&&"/"===e.nextCh;return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb="m"===e.symb?"{":"}",e.reverseSymb="{"===e.symb?"}":"{"},isComplete:function(e){return e.nextCh===e.symb}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if("#"===e.nextCh){var t=e.lineText.match(/^#(\w+)/)[1];if("endif"===t){if(e.forward&&0===e.depth)return!0;e.depth++}else if("if"===t){if(!e.forward&&0===e.depth)return!0;e.depth--}if("else"===t&&0===e.depth)return!0}return!1}}};function Fe(e,t,n,r,o){var i=t.line,a=t.ch,s=e.getLine(i),c=n?1:-1,l=r?K:I;if(o&&""==s){if(i+=c,s=e.getLine(i),!F(e,i))return null;a=n?0:s.length}for(;;){if(o&&""==s)return{from:0,to:0,line:i};for(var u=c>0?s.length:-1,h=u,p=u;a!=u;){for(var d=!1,f=0;f0?0:s.length}}function je(e,t,n,r,o){var i=new y(t.line+n.repeat-1,1/0),a=e.clipPos(i);return a.ch--,o||(r.lastHPos=1/0,r.lastHSPos=e.charCoords(a,"div").left),i}function We(e,t,n,r){for(var o,i=e.getCursor(),a=i.ch,s=0;s0?1:-1;var n=e.ace.session.getFoldLine(t);n&&t+r>n.start.row&&t+r0?n.end.row:n.start.row)-t)}if(r){for(;s<=l&&l<=c&&n>0;)p(l),h(l,r)&&n--,l+=r;return new y(l,0)}var d=e.state.vim;if(d.visualLine&&h(a,1,!0)){var f=d.sel.anchor;h(f.line,-1,!0)&&(o&&f.line==a||(a+=1))}var m=u(a);for(l=a;l<=c&&n;l++)h(l,1,!0)&&(o&&u(l)==m||n--);for(i=new y(l,0),l>c&&!m?m=!0:o=!1,l=a;l>s&&(o&&u(l)!=m&&l!=a||!h(l,-1,!0));l--);return{start:new y(l,0),end:i}}function qe(e,t,n,r,o){function i(e){e.pos+e.dir<0||e.pos+e.dir>=e.line.length?e.line=null:e.pos+=e.dir}function a(e,t,n,r){var a={line:e.getLine(t),ln:t,pos:n,dir:r};if(""===a.line)return{ln:a.ln,pos:a.pos};var s=a.pos;for(i(a);null!==a.line;){if(s=a.pos,z(a.line[a.pos])){if(o){for(i(a);null!==a.line&&U(a.line[a.pos]);)s=a.pos,i(a);return{ln:a.ln,pos:s+1}}return{ln:a.ln,pos:a.pos+1}}i(a)}return{ln:a.ln,pos:s+1}}function s(e,t,n,r){var a=e.getLine(t),s={line:a,ln:t,pos:n,dir:r};if(""===s.line)return{ln:s.ln,pos:s.pos};var c=s.pos;for(i(s);null!==s.line;){if(U(s.line[s.pos])||z(s.line[s.pos])){if(z(s.line[s.pos]))return o&&U(s.line[s.pos+1])?{ln:s.ln,pos:s.pos+1}:{ln:s.ln,pos:c}}else c=s.pos;i(s)}return s.line=a,o&&U(s.line[s.pos])?{ln:s.ln,pos:s.pos}:{ln:s.ln,pos:c}}for(var c={ln:t.line,pos:t.ch};n>0;)c=r<0?s(e,c.ln,c.pos,r):a(e,c.ln,c.pos,r),n--;return new y(c.ln,c.pos)}function Qe(){}function Ge(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new Qe)}function Xe(e,t){var n=Ze(e,t)||[];if(!n.length)return[];var r=[];if(0===n[0]){for(var o=0;o@~])/);return n.commandName=r?r[1]:t.match(/.*/)[0],n},parseLineSpec_:function(e,t){var n=t.match(/^(\d+)/);if(n)return parseInt(n[1],10)-1;switch(t.next()){case".":return this.parseLineSpecOffset_(t,e.getCursor().line);case"$":return this.parseLineSpecOffset_(t,e.lastLine());case"'":var r=t.next(),o=ut(e,e.state.vim,r);if(!o)throw new Error("Mark not set");return this.parseLineSpecOffset_(t,o.line);case"-":case"+":return t.backUp(1),this.parseLineSpecOffset_(t,e.getCursor().line);default:return void t.backUp(1)}},parseLineSpecOffset_:function(e,t){var n=e.match(/^([+-])?(\d+)/);if(n){var r=parseInt(n[2],10);"-"==n[1]?t-=r:t+=r}return t},parseCommandArgs_:function(e,t,n){if(!e.eol()){t.argString=e.match(/.*/)[0];var r=n.argDelimiter||/\s+/,o=Oe(t.argString).split(r);o.length&&o[0]&&(t.args=o)}},matchCommand_:function(e){for(var t=e.length;t>0;t--){var n=e.substring(0,t);if(this.commandMap_[n]){var r=this.commandMap_[n];if(0===r.name.indexOf(e))return r}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e1)return"Invalid arguments";i=(c?"decimal":l&&"hex")||u&&"octal"}s[2]&&(a=new RegExp(s[2].substr(1,s[2].length-2),r?"i":""))}}();if(s)nt(e,s+": "+t.argString);else{var c=t.line||e.firstLine(),l=t.lineEnd||t.line||e.lastLine();if(c!=l){var u=new y(c,0),h=new y(l,Le(e,l)),p=e.getRange(u,h).split("\n"),d=a||("decimal"==i?/(-?)([\d]+)/:"hex"==i?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==i?/([0-7]+)/:null),f="decimal"==i?10:"hex"==i?16:"octal"==i?8:null,g=[],v=[];if(i||a)for(var C=0;C=a&&t<=s:t==a);)if(n||i.from().line!=u||h)return e.scrollIntoView(i.from(),30),e.setSelection(i.from(),i.to()),l=i.from(),void(p=!1);var t,a,s,c,d;p=!0}function v(t){if(t&&t(),e.focus(),l){e.setCursor(l);var n=e.state.vim;n.exMode=!1,n.lastHPos=n.lastHSPos=l.ch}c&&c()}if(g(),!p)return t?void rt(e,{prefix:tt("span","replace with ",tt("strong",s)," (y/n/a/q/l)"),onKeyDown:function(t,n,r){switch(m.e_stop(t),m.keyName(t)){case"Y":f(),g();break;case"N":g();break;case"A":var o=c;c=void 0,e.operation(d),c=o;break;case"L":f();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":v(r)}return p&&v(r),!0}}):(d(),void(c&&c()));nt(e,"No matches for "+a.source)}(e,l,u,p,d,g,h,c,t.callback)}else nt(e,"No previous substitute regular expression")},redo:m.commands.redo,undo:m.commands.undo,write:function(e){m.commands.save?m.commands.save(e):e.save&&e.save()},nohlsearch:function(e){ct(e)},yank:function(e){var t=we(e.getCursor()).line,n=e.getLine(t);Z.registerController.pushText("0","yank",n,!0,!0)},delmarks:function(e,t){if(t.argString&&Oe(t.argString))for(var n=e.state.vim,r=new m.StringStream(Oe(t.argString));!r.eol();){r.eatSpace();var o=r.pos;if(!r.match(/[a-zA-Z]/,!1))return void nt(e,"Invalid argument: "+t.argString.substring(o));var i=r.next();if(r.match("-",!0)){if(!r.match(/[a-zA-Z]/,!1))return void nt(e,"Invalid argument: "+t.argString.substring(o));var a=i,s=r.next();if(!(j(a)&&j(s)||W(a)&&W(s)))return void nt(e,"Invalid argument: "+a+"-");var c=a.charCodeAt(0),l=s.charCodeAt(0);if(c>=l)return void nt(e,"Invalid argument: "+t.argString.substring(o));for(var u=0;u<=l-c;u++){var h=String.fromCharCode(c+u);delete n.marks[h]}}else delete n.marks[i]}else nt(e,"Argument required")}},ft=new pt;function mt(e){var t=e.state.vim,n=Z.macroModeState,r=Z.registerController.getRegister("."),o=n.isPlaying,i=n.lastInsertModeChanges;o||(e.off("change",yt),m.off(e.getInputField(),"keydown",xt)),!o&&t.insertModeRepeat>1&&(St(e,t,t.insertModeRepeat-1,!0),t.lastEditInputState.repeatOverride=t.insertModeRepeat),delete t.insertModeRepeat,t.insertMode=!1,e.setCursor(e.getCursor().line,e.getCursor().ch-1),e.setOption("keyMap","vim"),e.setOption("disableInput",!0),e.toggleOverwrite(!1),r.setText(i.changes.join("")),m.signal(e,"vim-mode-change",{mode:"normal"}),n.isRecording&&function(e){if(!e.isPlaying){var t=e.latestRegister,n=Z.registerController.getRegister(t);n&&n.pushInsertModeChanges&&n.pushInsertModeChanges(e.lastInsertModeChanges)}}(n)}function gt(e){w.unshift(e)}function vt(e,t,n,r){var o=Z.registerController.getRegister(r);if(":"==r)return o.keyBuffer[0]&&ft.processCommand(e,o.keyBuffer[0]),void(n.isPlaying=!1);var i=o.keyBuffer,a=0;n.isPlaying=!0,n.replaySearchQueries=o.searchQueries.slice(0);for(var s=0;s|<\w+>|./.exec(u))[0],u=u.substring(c.index+l.length),ie.handleKey(e,l,"macro"),t.insertMode){var h=o.insertModeChanges[a++].changes;Z.macroModeState.lastInsertModeChanges.changes=h,Mt(e,h,1),mt(e)}n.isPlaying=!1}function yt(e,t){var n=Z.macroModeState,r=n.lastInsertModeChanges;if(!n.isPlaying)for(;t;){if(r.expectCursorActivityForChange=!0,r.ignoreCount>1)r.ignoreCount--;else if("+input"==t.origin||"paste"==t.origin||void 0===t.origin){var o=e.listSelections().length;o>1&&(r.ignoreCount=o);var i=t.text.join("\n");r.maybeReset&&(r.changes=[],r.maybeReset=!1),i&&(e.state.overwrite&&!/\n/.test(i)?r.changes.push([i]):r.changes.push(i))}t=t.next}}function Ct(e){var t=e.state.vim;if(t.insertMode){var n=Z.macroModeState;if(n.isPlaying)return;var r=n.lastInsertModeChanges;r.expectCursorActivityForChange?r.expectCursorActivityForChange=!1:r.maybeReset=!0}else e.curOp.isVimOp||kt(e,t)}function kt(e,t,n){var r=e.getCursor("anchor"),o=e.getCursor("head");if(t.visualMode&&!e.somethingSelected()?Pe(e,!1):t.visualMode||t.insertMode||!e.somethingSelected()||(t.visualMode=!0,t.visualLine=!1,m.signal(e,"vim-mode-change",{mode:"visual"})),t.visualMode){var i=Se(o,r)?0:-1,a=Se(o,r)?-1:0;o=ye(o,0,i),r=ye(r,0,a),t.sel={anchor:r,head:o},Ue(e,t,"<",Me(o,r)),Ue(e,t,">",Ae(o,r))}else t.insertMode||n||(t.lastHPos=e.getCursor().ch)}function wt(e){this.keyName=e}function xt(e){var t=Z.macroModeState.lastInsertModeChanges,n=m.keyName(e);n&&(-1==n.indexOf("Delete")&&-1==n.indexOf("Backspace")||m.lookupKey(n,"vim-insert",(function(){return t.maybeReset&&(t.changes=[],t.maybeReset=!1),t.changes.push(new wt(n)),!0})))}function St(e,t,n,r){var o=Z.macroModeState;o.isPlaying=!0;var i=!!t.lastEditActionCommand,a=t.inputState;function s(){i?he.processAction(e,t,t.lastEditActionCommand):he.evalInput(e,t)}function c(n){if(o.lastInsertModeChanges.changes.length>0){n=t.lastEditActionCommand?n:1;var r=o.lastInsertModeChanges;Mt(e,r.changes,n)}}if(t.inputState=t.lastEditInputState,i&&t.lastEditActionCommand.interlaceInsertRepeat)for(var l=0;l"!=t||o.insertMode||o.visualMode||!a)if(i||!a||e.ace.inVirtualSelectionMode)r=ie.handleKey(e,t,n);else{var s=Lt(o);e.operation((function(){e.ace.forEachSelection((function(){var o=e.ace.selection;e.state.vim.lastHPos=null==o.$desiredColumn?o.lead.column:o.$desiredColumn;var i=e.getCursor("head"),a=e.getCursor("anchor"),c=Se(i,a)?0:-1,l=Se(i,a)?-1:0;i=ye(i,0,c),a=ye(a,0,l),e.state.vim.sel.head=i,e.state.vim.sel.anchor=a,r=bt(e,t,n),o.$desiredColumn=-1==e.state.vim.lastHPos?null:e.state.vim.lastHPos,e.virtualSelectionMode()&&(e.state.vim=Lt(s))})),e.curOp.cursorActivity&&!r&&(e.curOp.cursorActivity=!1)}),!0)}else e.ace.exitMultiSelectMode();return!r||o.visualMode||o.insert||o.visualMode==e.somethingSelected()||kt(e,o,!0),r}ie.handleKey=function(e,t,n){return e.operation((function(){return bt(e,t,n)}),!0)},t.CodeMirror=m;var Tt=ie.maybeInitVimState_;function Et(e,t){t.off("beforeEndOperation",Et);var n=t.state.cm.vimCmd;n&&t.execCommand(n.exec?n:n.name,n.args),t.curOp=t.prevOp}t.handler={$id:"ace/keyboard/vim",drawCursor:function(e,t,n,o,a){var s=this.state.vim||{},c=n.characterWidth,l=n.lineHeight,u=t.top,h=t.left;s.insertMode||!(o.cursor?r.comparePoints(o.cursor,o.start)<=0:a.selection.isBackwards()||a.selection.isEmpty())&&h>c&&(h-=c),!s.insertMode&&s.status&&(u+=l/=2),i.translate(e,h,u),i.setStyle(e.style,"width",c+"px"),i.setStyle(e.style,"height",l+"px")},$getDirectionForHighlight:function(e){var t=e.state.cm;if(!Tt(t).insertMode)return e.session.selection.isBackwards()||e.session.selection.isEmpty()},handleKeyboard:function(e,t,n,r,o){var i=e.editor,a=i.state.cm,s=Tt(a);if(-1!=r){if(s.insertMode||(-1==t?(n.charCodeAt(0)>255&&e.inputKey&&(n=e.inputKey)&&4==e.inputHash&&(n=n.toUpperCase()),e.inputChar=n):4==t||0==t?e.inputKey==n&&e.inputHash==t&&e.inputChar?(n=e.inputChar,t=-1):(e.inputChar=null,e.inputKey=n,e.inputHash=t):e.inputChar=e.inputKey=null),a.state.overwrite&&s.insertMode&&"backspace"==n&&0==t)return{command:"gotoleft"};if("c"==n&&1==t&&!u.isMac&&i.getCopyText())return i.once("copy",(function(){s.insertMode?i.selection.clearSelection():a.operation((function(){Pe(a)}))})),{command:"null",passEvent:!0};if("esc"==n&&!s.insertMode&&!s.visualMode&&!a.ace.inMultiSelectMode){var c=Ge(a).getOverlay();c&&a.removeOverlay(c)}if(-1==t||1&t||0===t&&n.length>1){var l=s.insertMode,h=function(e,t,n){t.length>1&&"n"==t[0]&&(t=t.replace("numpad","")),t=At[t]||t;var r="";return n.ctrlKey&&(r+="C-"),n.altKey&&(r+="A-"),(r||t.length>1)&&n.shiftKey&&(r+="S-"),(r+=t).length>1&&(r="<"+r+">"),r}(0,n,o||{});null==s.status&&(s.status="");var p=Ot(a,h,"user");if(s=Tt(a),p&&null!=s.status?s.status+=h:null==s.status&&(s.status=""),a._signal("changeStatus"),!p&&(-1!=t||l))return;return{command:"null",passEvent:!p}}}},attach:function(e){e.state||(e.state={});var t=new m(e);function n(){var n=Tt(t).insertMode;t.ace.renderer.setStyle("normal-mode",!n),e.textInput.setCommandMode(!n),e.renderer.$keepTextAreaAtCursor=n,e.renderer.$blockCursor=!n}e.state.cm=t,e.$vimModeHandler=this,m.keyMap.vim.attach(t),Tt(t).status=null,t.on("vim-command-done",(function(){t.virtualSelectionMode()||(Tt(t).status=null,t.ace._signal("changeStatus"),t.ace.session.markUndoGroup())})),t.on("changeStatus",(function(){t.ace.renderer.updateCursor(),t.ace._signal("changeStatus")})),t.on("vim-mode-change",(function(){t.virtualSelectionMode()||(n(),t._signal("changeStatus"))})),n(),e.renderer.$cursorLayer.drawCursor=this.drawCursor.bind(t)},detach:function(e){var t=e.state.cm;m.keyMap.vim.detach(t),t.destroy(),e.state.cm=null,e.$vimModeHandler=null,e.renderer.$cursorLayer.drawCursor=null,e.renderer.setStyle("normal-mode",!1),e.textInput.setCommandMode(!1),e.renderer.$keepTextAreaAtCursor=!0},getStatusText:function(e){var t=e.state.cm,n=Tt(t);if(n.insertMode)return"INSERT";var r="";return n.visualMode&&(r+="VISUAL",n.visualLine&&(r+=" LINE"),n.visualBlock&&(r+=" BLOCK")),n.status&&(r+=(r?" ":"")+n.status),r}},ie.defineOption({name:"wrap",set:function(e,t){t&&t.ace.setOption("wrap",e)},type:"boolean"},!1),ie.defineEx("write","w",(function(){console.log(":write is not implemented")})),w.push({keys:"zc",type:"action",action:"fold",actionArgs:{open:!1}},{keys:"zC",type:"action",action:"fold",actionArgs:{open:!1,all:!0}},{keys:"zo",type:"action",action:"fold",actionArgs:{open:!0}},{keys:"zO",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"za",type:"action",action:"fold",actionArgs:{toggle:!0}},{keys:"zA",type:"action",action:"fold",actionArgs:{toggle:!0,all:!0}},{keys:"zf",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"zd",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"addCursorAbove"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"addCursorBelow"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"addCursorAboveSkipCurrent"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"addCursorBelowSkipCurrent"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"selectMoreBefore"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"selectMoreAfter"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"selectNextBefore"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"selectNextAfter"}}),w.push({keys:"gq",type:"operator",operator:"hardWrap"}),ie.defineOperator("hardWrap",(function(e,t,n,r,o){var i=n[0].anchor.line,a=n[0].head.line;return t.linewise&&a--,f(e.ace,{startRow:i,endRow:a}),y(a,0)})),Q("textwidth",void 0,"number",["tw"],(function(e,t){if(void 0!==t){if(void 0===e)return t.ace.getOption("printMarginColumn");var n=Math.round(e);n>1&&t.ace.setOption("printMarginColumn",n)}})),me.aceCommand=function(e,t,n){e.vimCmd=t,e.ace.inVirtualSelectionMode?e.ace.on("beforeEndOperation",Et):Et(0,e.ace)},me.fold=function(e,t,n){e.ace.execCommand(["toggleFoldWidget","toggleFoldWidget","foldOther","unfoldall"][(t.all?2:0)+(t.open?1:0)])},t.handler.defaultKeymap=w,t.handler.actions=me,t.Vim=ie})),ace.require(["ace/keyboard/vim"],(function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)})); \ No newline at end of file diff --git a/html/bundle/0416c21cfe088739209926632a360e3b.js b/html/bundle/0416c21cfe088739209926632a360e3b.js new file mode 100644 index 00000000000..c24263c000e --- /dev/null +++ b/html/bundle/0416c21cfe088739209926632a360e3b.js @@ -0,0 +1 @@ +ace.define("ace/mode/flix_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,r){"use strict";var o=e("../lib/oop"),n=e("./text_highlight_rules").TextHighlightRules,a=function(){var e=this.createKeywordMapper({keyword:"use|checked_cast|checked_ecast|unchecked_cast|masked_cast|as|discard|from|into|inject|project|solve|query|where|select|force|import|region|red|deref","keyword.control":"choose|debug|do|for|forA|forM|foreach|yield|if|else|case|match|typematch|try|catch|resume|spawn|par|branch|jumpto","keyword.operator":"not|and|or|fix","storage.type":"eff|def|law|enum|case|type|alias|class|instance|mod|let","storage.modifier":"with|without|opaque|lazy|lawful|pub|override|sealed|static","support.type":"Unit|Bool|Char|Float32|Float64|Int8|Int16|Int32|Int64|BigInt|String"},"identifier");this.$rules={start:[{token:"comment.line",regex:"\\/\\/.*$"},{token:"comment.block",regex:"\\/\\*",next:"comment"},{token:"string",regex:'"',next:"string"},{token:"string.regexp",regex:'regex"',next:"regex"},{token:"constant.character",regex:"'",next:"char"},{token:"constant.numeric",regex:"0x[a-fA-F0-9](_*[a-fA-F0-9])*(i8|i16|i32|i64|ii)?\\b"},{token:"constant.numeric",regex:"[0-9](_*[0-9])*\\.[0-9](_*[0-9])*(f32|f64)?\\b"},{token:"constant.numeric",regex:"[0-9](_*[0-9])*(i8|i16|i32|i64|ii)?\\b"},{token:"constant.language.boolean",regex:"(true|false)\\b"},{token:"constant.language",regex:"null\\b"},{token:"keyword.operator",regex:"\\->|~>|<\\-|=>"},{token:"storage.modifier",regex:"@(Deprecated|Experimental|Internal|ParallelWhenPure|Parallel|LazyWhenPure|Lazy|Skip|Test)\\b"},{token:"keyword",regex:"(\\?\\?\\?|\\?[a-zA-Z0-9]+)"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.block",regex:"\\*\\/",next:"start"},{defaultToken:"comment.block"}],string:[{token:"constant.character.escape",regex:"\\\\(u[0-9a-fA-F]{4})"},{token:"constant.character.escape",regex:"\\\\."},{token:"string",regex:'"',next:"start"},{token:"string",regex:'[^"\\\\]+'}],regex:[{token:"constant.character.escape",regex:"\\\\(u[0-9a-fA-F]{4})"},{token:"constant.character.escape",regex:"\\\\."},{token:"string.regexp",regex:'"',next:"start"},{token:"string.regexp",regex:'[^"\\\\]+'}],char:[{token:"constant.character.escape",regex:"\\\\(u[0-9a-fA-F]{4})"},{token:"constant.character.escape",regex:"\\\\."},{token:"constant.character",regex:"'",next:"start"},{token:"constant.character",regex:"[^'\\\\]+"}]}};o.inherits(a,n),t.FlixHighlightRules=a})),ace.define("ace/mode/flix",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/flix_highlight_rules"],(function(e,t,r){"use strict";var o=e("../lib/oop"),n=e("./text").Mode,a=e("./flix_highlight_rules").FlixHighlightRules,c=function(){this.HighlightRules=a};o.inherits(c,n),function(){this.$id="ace/mode/flix"}.call(c.prototype),t.Mode=c})),ace.require(["ace/mode/flix"],(function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)})); \ No newline at end of file diff --git a/html/bundle/069a0d6b093e73e820f6a60a91fa614b.js b/html/bundle/069a0d6b093e73e820f6a60a91fa614b.js new file mode 100644 index 00000000000..4914521550b --- /dev/null +++ b/html/bundle/069a0d6b093e73e820f6a60a91fa614b.js @@ -0,0 +1 @@ +ace.define("ace/mode/sparql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,r){"use strict";var i=e("../lib/oop"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{include:"#comments"},{include:"#strings"},{include:"#string-language-suffixes"},{include:"#string-datatype-suffixes"},{include:"#logic-operators"},{include:"#relative-urls"},{include:"#xml-schema-types"},{include:"#rdf-schema-types"},{include:"#owl-types"},{include:"#qnames"},{include:"#keywords"},{include:"#built-in-functions"},{include:"#variables"},{include:"#boolean-literal"},{include:"#punctuation-operators"}],"#boolean-literal":[{token:"constant.language.boolean.sparql",regex:/true|false/}],"#built-in-functions":[{token:"support.function.sparql",regex:/[Aa][Bb][Ss]|[Aa][Vv][Gg]|[Bb][Nn][Oo][Dd][Ee]|[Bb][Oo][Uu][Nn][Dd]|[Cc][Ee][Ii][Ll]|[Cc][Oo][Aa][Ll][Ee][Ss][Cc][Ee]|[Cc][Oo][Nn][Cc][Aa][Tt]|[Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]|[Cc][Oo][Uu][Nn][Tt]|[Dd][Aa][Tt][Aa][Tt][Yy][Pp][Ee]|[Dd][Aa][Yy]|[Ee][Nn][Cc][Oo][Dd][Ee]_[Ff][Oo][Rr]_[Uu][Rr][Ii]|[Ee][Xx][Ii][Ss][Tt][Ss]|[Ff][Ll][Oo][Oo][Rr]|[Gg][Rr][Oo][Uu][Pp]_[Cc][Oo][Nn][Cc][Aa][Tt]|[Hh][Oo][Uu][Rr][Ss]|[Ii][Ff]|[Ii][Rr][Ii]|[Ii][Ss][Bb][Ll][Aa][Nn][Kk]|[Ii][Ss][Ii][Rr][Ii]|[Ii][Ss][Ll][Ii][Tt][Ee][Rr][Aa][Ll]|[Ii][Ss][Nn][Uu][Mm][Ee][Rr][Ii][Cc]|[Ii][Ss][Uu][Rr][Ii]|[Ll][Aa][Nn][Gg]|[Ll][Aa][Nn][Gg][Mm][Aa][Tt][Cc][Hh][Ee][Ss]|[Ll][Cc][Aa][Ss][Ee]|[Mm][Aa][Xx]|[Mm][Dd]5|[Mm][Ii][Nn]|[Mm][Ii][Nn][Uu][Tt][Ee][Ss]|[Mm][Oo][Nn][Tt][Hh]|[Nn][Oo][Ww]|[Rr][Aa][Nn][Dd]|[Rr][Ee][Gg][Ee][Xx]|[Rr][Ee][Pp][Ll][Aa][Cc][Ee]|[Rr][Oo][Uu][Nn][Dd]|[Ss][Aa][Mm][Ee][Tt][Ee][Rr][Mm]|[Ss][Aa][Mm][Pp][Ll][Ee]|[Ss][Ee][Cc][Oo][Nn][Dd][Ss]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Hh][Aa](?:1|256|384|512)|[Ss][Tt][Rr]|[Ss][Tt][Rr][Aa][Ff][Tt][Ee][Rr]|[Ss][Tt][Rr][Bb][Ee][Ff][Oo][Rr][Ee]|[Ss][Tt][Rr][Dd][Tt]|[Ss][Tt][Rr][Ee][Nn][Dd][Ss]|[Ss][Tt][Rr][Ll][Aa][Nn][Gg]|[Ss][Tt][Rr][Ll][Ee][Nn]|[Ss][Tt][Rr][Ss][Tt][Aa][Rr][Tt][Ss]|[Ss][Tt][Rr][Uu][Uu][Ii][Dd]|[Ss][Uu][Bb][Ss][Tt][Rr]|[Ss][Uu][Mm]|[Tt][Ii][Mm][Ee][Zz][Oo][Nn][Ee]|[Tt][Zz]|[Uu][Cc][Aa][Ss][Ee]|[Uu][Rr][Ii]|[Uu][Uu][Ii][Dd]|[Yy][Ee][Aa][Rr]/}],"#comments":[{token:["punctuation.definition.comment.sparql","comment.line.hash.sparql"],regex:/(#)(.*$)/}],"#keywords":[{token:"keyword.other.sparql",regex:/[Aa][Dd][Dd]|[Aa][Ll][Ll]|[Aa][Ss]|[As][Ss][Cc]|[Aa][Ss][Kk]|[Bb][Aa][Ss][Ee]|[Bb][Ii][Nn][Dd]|[Bb][Yy]|[Cc][Ll][Ee][Aa][Rr]|[Cc][Oo][Nn][Ss][Tt][Rr][Uu][Cc][Tt]|[Cc][Oo][Pp][Yy]|[Cc][Rr][Ee][Aa][Tt][Ee]|[Dd][Aa][Tt][Aa]|[Dd][Ee][Ff][Aa][Uu][Ll][Tt]|[Dd][Ee][Ll][Ee][Tt][Ee]|[Dd][Ee][Sc][Cc]|[Dd][Ee][Ss][Cc][Rr][Ii][Bb][Ee]|[Dd][Ii][Ss][Tt][Ii][Nn][Cc][Tt]|[Dd][Rr][Oo][Pp]|[Ff][Ii][Ll][Tt][Ee][Rr]|[Ff][Rr][Oo][Mm]|[Gg][Rr][Aa][Pp][Hh]|[Gg][Rr][Oo][Uu][Pp]|[Hh][Aa][Vv][Ii][Nn][Gg]|[Ii][Nn][Ss][Ee][Rr][Tt]|[Ll][Ii][Mm][Ii][Tt]|[Ll][Oo][Aa][Dd]|[Mm][Ii][Nn][Uu][Ss]|[Mm][Oo][Vv][Ee]|[Nn][Aa][Mm][Ee][Dd]|[Oo][Ff][Ff][Ss][Ee][Tt]|[Oo][Pp][Tt][Ii][Oo][Nn][Aa][Ll]|[Oo][Rr][Dd][Ee][Rr]|[Pp][Rr][Ee][Ff][Ii][Xx]|[Rr][Ee][Dd][Uu][Cc][Ee][Dd]|[Ss][Ee][Ll][Ee][Cc][Tt]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Ee][Rr][Vv][Ii][Cc][Ee]|[Ss][Ii][Ll][Ee][Nn][Tt]|[Tt][Oo]|[Uu][Nn][Dd][Ee][Ff]|[Uu][Nn][Ii][Oo][Nn]|[Uu][Ss][Ii][Nn][Gg]|[Vv][Aa][Ll][Uu][Ee][Ss]|[Ww][He][Ee][Rr][Ee]|[Ww][Ii][Tt][Hh]/}],"#logic-operators":[{token:"keyword.operator.logical.sparql",regex:/\|\||&&|=|!=|<|>|<=|>=|(?:^|!?\s)IN(?:!?\s|$)|(?:^|!?\s)NOT(?:!?\s|$)|-|\+|\*|\/|\!/}],"#owl-types":[{token:"support.type.datatype.owl.sparql",regex:/owl:[a-zA-Z]+/}],"#punctuation-operators":[{token:"keyword.operator.punctuation.sparql",regex:/;|,|\.|\(|\)|\{|\}|\|/}],"#qnames":[{token:"entity.name.other.qname.sparql",regex:/(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/}],"#rdf-schema-types":[{token:"support.type.datatype.rdf.schema.sparql",regex:/rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/}],"#relative-urls":[{token:"string.quoted.other.relative.url.sparql",regex://,next:"pop"},{defaultToken:"string.quoted.other.relative.url.sparql"}]}],"#string-datatype-suffixes":[{token:"keyword.operator.datatype.suffix.sparql",regex:/\^\^/}],"#string-language-suffixes":[{token:["keyword.operator.language.suffix.sparql","constant.language.suffix.sparql"],regex:/(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/}],"#strings":[{token:"string.quoted.triple.sparql",regex:/"""/,push:[{token:"string.quoted.triple.sparql",regex:/"""/,next:"pop"},{defaultToken:"string.quoted.triple.sparql"}]},{token:"string.quoted.double.sparql",regex:/"/,push:[{token:"string.quoted.double.sparql",regex:/"/,next:"pop"},{token:"invalid.string.newline",regex:/$/},{token:"constant.character.escape.sparql",regex:/\\./},{defaultToken:"string.quoted.double.sparql"}]}],"#variables":[{token:"variable.other.sparql",regex:/(?:\?|\$)[-_a-zA-Z0-9]+/}],"#xml-schema-types":[{token:"support.type.datatype.schema.sparql",regex:/xsd?:[a-z][a-zA-Z]+/}]},this.normalizeRules()};o.metaData={fileTypes:["rq","sparql"],name:"SPARQL",scopeName:"source.sparql"},i.inherits(o,s),t.SPARQLHighlightRules=o})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,r){"use strict";var i=e("../../lib/oop"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,n=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(n,o),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,r){var i=e.getLine(r);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var s=this._getFoldWidgetBase(e,t,r);return!s&&this.startRegionRe.test(i)?"start":s},this.getFoldWidgetRange=function(e,t,r,i){var s,o=e.getLine(r);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(e,o,r);if(s=o.match(this.foldingStartMarker)){var n=s.index;if(s[1])return this.openingBracketBlock(e,s[1],r,n);var a=e.getCommentFoldRange(r,n+s[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,r):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(s=o.match(this.foldingStopMarker))?(n=s.index+s[0].length,s[1]?this.closingBracketBlock(e,s[1],r,n):e.getCommentFoldRange(r,n,-1)):void 0},this.getSectionRange=function(e,t){for(var r=e.getLine(t),i=r.search(/\S/),o=t,n=r.length,a=t+=1,l=e.getLength();++tg)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=o)break;if(u.isMultiLine())t=u.end.row;else if(i==g)break}a=t}}return new s(o,n,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,r){for(var i=t.search(/\s*$/),o=e.getLength(),n=r,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++rn)return new s(n,i,r,t.length)}}.call(n.prototype)})),ace.define("ace/mode/sparql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sparql_highlight_rules","ace/mode/folding/cstyle"],(function(e,t,r){"use strict";var i=e("../lib/oop"),s=e("./text").Mode,o=e("./sparql_highlight_rules").SPARQLHighlightRules,n=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=o,this.foldingRules=new n};i.inherits(a,s),function(){this.$id="ace/mode/sparql"}.call(a.prototype),t.Mode=a})),ace.require(["ace/mode/sparql"],(function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)})); \ No newline at end of file diff --git a/html/bundle/07397bd479cbc34bc04576b4f15bdf18.js b/html/bundle/07397bd479cbc34bc04576b4f15bdf18.js new file mode 100644 index 00000000000..2a8341daf3f --- /dev/null +++ b/html/bundle/07397bd479cbc34bc04576b4f15bdf18.js @@ -0,0 +1 @@ +ace.define("ace/snippets/perl.snippets",["require","exports","module"],(function(n,t,e){e.exports="# #!/usr/bin/perl\nsnippet #!\n\t#!/usr/bin/env perl\n\n# Hash Pointer\nsnippet .\n\t =>\n# Function\nsnippet sub\n\tsub ${1:function_name} {\n\t\t${2:#body ...}\n\t}\n# Conditional\nsnippet if\n\tif (${1}) {\n\t\t${2:# body...}\n\t}\n# Conditional if..else\nsnippet ife\n\tif (${1}) {\n\t\t${2:# body...}\n\t}\n\telse {\n\t\t${3:# else...}\n\t}\n# Conditional if..elsif..else\nsnippet ifee\n\tif (${1}) {\n\t\t${2:# body...}\n\t}\n\telsif (${3}) {\n\t\t${4:# elsif...}\n\t}\n\telse {\n\t\t${5:# else...}\n\t}\n# Conditional One-line\nsnippet xif\n\t${1:expression} if ${2:condition};${3}\n# Unless conditional\nsnippet unless\n\tunless (${1}) {\n\t\t${2:# body...}\n\t}\n# Unless conditional One-line\nsnippet xunless\n\t${1:expression} unless ${2:condition};${3}\n# Try/Except\nsnippet eval\n\tlocal $@;\n\teval {\n\t\t${1:# do something risky...}\n\t};\n\tif (my $e = $@) {\n\t\t${2:# handle failure...}\n\t}\n# While Loop\nsnippet wh\n\twhile (${1}) {\n\t\t${2:# body...}\n\t}\n# While Loop One-line\nsnippet xwh\n\t${1:expression} while ${2:condition};${3}\n# C-style For Loop\nsnippet cfor\n\tfor (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) {\n\t\t${4:# body...}\n\t}\n# For loop one-line\nsnippet xfor\n\t${1:expression} for @${2:array};${3}\n# Foreach Loop\nsnippet for\n\tforeach my $${1:x} (@${2:array}) {\n\t\t${3:# body...}\n\t}\n# Foreach Loop One-line\nsnippet fore\n\t${1:expression} foreach @${2:array};${3}\n# Package\nsnippet package\n\tpackage ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`};\n\n\t${2}\n\n\t1;\n\n\t__END__\n# Package syntax perl >= 5.14\nsnippet packagev514\n\tpackage ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`} ${2:0.99};\n\n\t${3}\n\n\t1;\n\n\t__END__\n#moose\nsnippet moose\n\tuse Moose;\n\tuse namespace::autoclean;\n\t${1:#}BEGIN {extends '${2:ParentClass}'};\n\n\t${3}\n# parent\nsnippet parent\n\tuse parent qw(${1:Parent Class});\n# Read File\nsnippet slurp\n\tmy $${1:var} = do { local $/; open my $file, '<', \"${2:file}\"; <$file> };\n\t${3}\n# strict warnings\nsnippet strwar\n\tuse strict;\n\tuse warnings;\n# older versioning with perlcritic bypass\nsnippet vers\n\t## no critic\n\tour $VERSION = '${1:version}';\n\teval $VERSION;\n\t## use critic\n# new 'switch' like feature\nsnippet switch\n\tuse feature 'switch';\n\n# Anonymous subroutine\nsnippet asub\n\tsub {\n\t \t${1:# body }\n\t}\n\n\n\n# Begin block\nsnippet begin\n\tBEGIN {\n\t\t${1:# begin body}\n\t}\n\n# call package function with some parameter\nsnippet pkgmv\n\t__PACKAGE__->${1:package_method}(${2:var})\n\n# call package function without a parameter\nsnippet pkgm\n\t__PACKAGE__->${1:package_method}()\n\n# call package \"get_\" function without a parameter\nsnippet pkget\n\t__PACKAGE__->get_${1:package_method}()\n\n# call package function with a parameter\nsnippet pkgetv\n\t__PACKAGE__->get_${1:package_method}(${2:var})\n\n# complex regex\nsnippet qrx\n\tqr/\n\t ${1:regex}\n\t/xms\n\n#simpler regex\nsnippet qr/\n\tqr/${1:regex}/x\n\n#given\nsnippet given\n\tgiven ($${1:var}) {\n\t\t${2:# cases}\n\t\t${3:# default}\n\t}\n\n# switch-like case\nsnippet when\n\twhen (${1:case}) {\n\t\t${2:# body}\n\t}\n\n# hash slice\nsnippet hslice\n\t@{ ${1:hash} }{ ${2:array} }\n\n\n# map\nsnippet map\n\tmap { ${2: body } } ${1: @array } ;\n\n\n\n# Pod stub\nsnippet ppod\n\t=head1 NAME\n\n\t${1:ClassName} - ${2:ShortDesc}\n\n\t=head1 SYNOPSIS\n\n\t use $1;\n\n\t ${3:# synopsis...}\n\n\t=head1 DESCRIPTION\n\n\t${4:# longer description...}\n\n\n\t=head1 INTERFACE\n\n\n\t=head1 DEPENDENCIES\n\n\n\t=head1 SEE ALSO\n\n\n# Heading for a subroutine stub\nsnippet psub\n\t=head2 ${1:MethodName}\n\n\t${2:Summary....}\n\n# Heading for inline subroutine pod\nsnippet psubi\n\t=head2 ${1:MethodName}\n\n\t${2:Summary...}\n\n\n\t=cut\n# inline documented subroutine\nsnippet subpod\n\t=head2 $1\n\n\tSummary of $1\n\n\t=cut\n\n\tsub ${1:subroutine_name} {\n\t\t${2:# body...}\n\t}\n# Subroutine signature\nsnippet parg\n\t=over 2\n\n\t=item\n\tArguments\n\n\n\t=over 3\n\n\t=item\n\tC<${1:DataStructure}>\n\n\t ${2:Sample}\n\n\n\t=back\n\n\n\t=item\n\tReturn\n\n\t=over 3\n\n\n\t=item\n\tC<${3:...return data}>\n\n\n\t=back\n\n\n\t=back\n\n\n\n# Moose has\nsnippet has\n\thas ${1:attribute} => (\n\t\tis\t => '${2:ro|rw}',\n\t\tisa \t=> '${3:Str|Int|HashRef|ArrayRef|etc}',\n\t\tdefault => sub {\n\t\t\t${4:defaultvalue}\n\t\t},\n\t\t${5:# other attributes}\n\t);\n\n\n# override\nsnippet override\n\toverride ${1:attribute} => sub {\n\t\t${2:# my $self = shift;};\n\t\t${3:# my ($self, $args) = @_;};\n\t};\n\n\n# use test classes\nsnippet tuse\n\tuse Test::More;\n\tuse Test::Deep; # (); # uncomment to stop prototype errors\n\tuse Test::Exception;\n\n# local test lib\nsnippet tlib\n\tuse lib qw{ ./t/lib };\n\n#test methods\nsnippet tmeths\n\t$ENV{TEST_METHOD} = '${1:regex}';\n\n# runtestclass\nsnippet trunner\n\tuse ${1:test_class};\n\t$1->runtests();\n\n# Test::Class-style test\nsnippet tsub\n\tsub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) {\n\t\tmy $self = shift;\n\t\t${4:# body}\n\n\t}\n\n# Test::Routine-style test\nsnippet trsub\n\ttest ${1:test_name} => { description => '${2:Description of test.}'} => sub {\n\t\tmy ($self) = @_;\n\t\t${3:# test code}\n\t};\n\n#prep test method\nsnippet tprep\n\tsub prep${1:number}_${2:test_case} :Test(startup) {\n\t\tmy $self = shift;\n\t\t${4:# body}\n\t}\n\n# cause failures to print stack trace\nsnippet debug_trace\n\tuse Carp; # 'verbose';\n\t# cloak \"die\"\n\t# warn \"warning\"\n\t$SIG{'__DIE__'} = sub {\n\t\trequire Carp; Carp::confess\n\t};\n\n"})),ace.define("ace/snippets/perl",["require","exports","module","ace/snippets/perl.snippets"],(function(n,t,e){"use strict";t.snippetText=n("./perl.snippets"),t.scope="perl"})),ace.require(["ace/snippets/perl"],(function(n){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=n)})); \ No newline at end of file diff --git a/html/bundle/07567125b93045706d81f17f7d04e262.js b/html/bundle/07567125b93045706d81f17f7d04e262.js new file mode 100644 index 00000000000..880a4116a00 --- /dev/null +++ b/html/bundle/07567125b93045706d81f17f7d04e262.js @@ -0,0 +1 @@ +ace.define("ace/ext/rtl",["require","exports","module","ace/editor","ace/config"],(function(e,t,i){"use strict";var n=[{name:"leftToRight",bindKey:{win:"Ctrl-Alt-Shift-L",mac:"Command-Alt-Shift-L"},exec:function(e){e.session.$bidiHandler.setRtlDirection(e,!1)},readOnly:!0},{name:"rightToLeft",bindKey:{win:"Ctrl-Alt-Shift-R",mac:"Command-Alt-Shift-R"},exec:function(e){e.session.$bidiHandler.setRtlDirection(e,!0)},readOnly:!0}],r=e("../editor").Editor;function o(e,t){var i=t.getSelection().lead;t.session.$bidiHandler.isRtlLine(i.row)&&0===i.column&&(t.session.$bidiHandler.isMoveLeftOperation&&i.row>0?t.getSelection().moveCursorTo(i.row-1,t.session.getLine(i.row-1).length):t.getSelection().isEmpty()?i.column+=1:i.setPosition(i.row,i.column+1))}function s(e){e.editor.session.$bidiHandler.isMoveLeftOperation=/gotoleft|selectleft|backspace|removewordleft/.test(e.command.name)}function d(e,t){var i=t.session;if(i.$bidiHandler.currentRow=null,i.$bidiHandler.isRtlLine(e.start.row)&&"insert"===e.action&&e.lines.length>1)for(var n=e.start.row;n\n\t\t${2}\n\t\nsnippet header\n\t
\n\t\t${1}\n\t
\nsnippet header.\n\t
\n\t\t${2}\n\t
\nsnippet header#\n\t
\n\t\t${2}\n\t
\nsnippet hgroup\n\t
\n\t\t${1}\n\t
\nsnippet hgroup.\n\t
\n\t${1}\n\t\nsnippet html5\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}\n\t\t\t${2:meta}\n\t\t\n\t\t\n\t\t\t${3:body}\n\t\t\n\t\nsnippet xhtml5\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}\n\t\t\t${2:meta}\n\t\t\n\t\t\n\t\t\t${3:body}\n\t\t\n\t\nsnippet i\n\t${1}\nsnippet iframe\n\t${2}\nsnippet iframe.\n\t${3}\nsnippet iframe#\n\t${3}\nsnippet img\n\t${2}${3}\nsnippet img.\n\t${3}${4}\nsnippet img#\n\t${3}${4}\nsnippet input\n\t${5}\nsnippet input.\n\t${6}\nsnippet input:text\n\t${4}\nsnippet input:submit\n\t${4}\nsnippet input:hidden\n\t${4}\nsnippet input:button\n\t${4}\nsnippet input:image\n\t${5}\nsnippet input:checkbox\n\t${3}\nsnippet input:radio\n\t${3}\nsnippet input:color\n\t${4}\nsnippet input:date\n\t${4}\nsnippet input:datetime\n\t${4}\nsnippet input:datetime-local\n\t${4}\nsnippet input:email\n\t${4}\nsnippet input:file\n\t${4}\nsnippet input:month\n\t${4}\nsnippet input:number\n\t${4}\nsnippet input:password\n\t${4}\nsnippet input:range\n\t${4}\nsnippet input:reset\n\t${4}\nsnippet input:search\n\t${4}\nsnippet input:time\n\t${4}\nsnippet input:url\n\t${4}\nsnippet input:week\n\t${4}\nsnippet ins\n\t${1}\nsnippet kbd\n\t${1}\nsnippet keygen\n\t${1}\nsnippet label\n\t\nsnippet label:i\n\t\n\t${7}\nsnippet label:s\n\t\n\t\nsnippet legend\n\t${1}\nsnippet legend+\n\t${1}\nsnippet li\n\t
  • ${1}
  • \nsnippet li.\n\t
  • ${2}
  • \nsnippet li+\n\t
  • ${1}
  • \n\tli+${2}\nsnippet lia\n\t
  • ${1}
  • \nsnippet lia+\n\t
  • ${1}
  • \n\tlia+${3}\nsnippet link\n\t${5}\nsnippet link:atom\n\t${2}\nsnippet link:css\n\t${4}\nsnippet link:favicon\n\t${2}\nsnippet link:rss\n\t${2}\nsnippet link:touch\n\t${2}\nsnippet map\n\t\n\t\t${2}\n\t\nsnippet map.\n\t\n\t\t${3}\n\t\nsnippet map#\n\t\n\t\t${5}${6}\n\t${7}\nsnippet mark\n\t${1}\nsnippet menu\n\t\n\t\t${1}\n\t\nsnippet menu:c\n\t\n\t\t${1}\n\t\nsnippet menu:t\n\t\n\t\t${1}\n\t\nsnippet meta\n\t${3}\nsnippet meta:compat\n\t${3}\nsnippet meta:refresh\n\t${3}\nsnippet meta:utf\n\t${3}\nsnippet meter\n\t${1}\nsnippet nav\n\t\nsnippet nav.\n\t\nsnippet nav#\n\t\nsnippet noscript\n\t\nsnippet object\n\t\n\t\t${3}\n\t${4}\n# Embed QT Movie\nsnippet movie\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t${6}\nsnippet ol\n\t
      \n\t\t${1}\n\t
    \nsnippet ol.\n\t
      \n\t\t${2}\n\t
    \nsnippet ol+\n\t
      \n\t\t
    1. ${1}
    2. \n\t\tli+${2}\n\t
    \nsnippet opt\n\t\nsnippet opt+\n\t\n\topt+${3}\nsnippet optt\n\t\nsnippet optgroup\n\t\n\t\t\n\t\topt+${3}\n\t\nsnippet output\n\t${1}\nsnippet p\n\t

    ${1}

    \nsnippet param\n\t${3}\nsnippet pre\n\t
    \n\t\t${1}\n\t
    \nsnippet progress\n\t${1}\nsnippet q\n\t${1}\nsnippet rp\n\t${1}\nsnippet rt\n\t${1}\nsnippet ruby\n\t\n\t\t${1}\n\t\nsnippet s\n\t${1}\nsnippet samp\n\t\n\t\t${1}\n\t\nsnippet script\n\t