From 4637eb5a1109142b9a0ae6471120668b91905077 Mon Sep 17 00:00:00 2001 From: Menno ter Laak Date: Thu, 20 Feb 2025 13:10:12 +0100 Subject: [PATCH 01/60] Add postcss to the frontend setup --- .gitignore | 4 + frontend/.stylelintrc.json | 1 + frontend/css/style-test.css | 25 + frontend/package-lock.json | 4864 +++++++++++++++++++++++++++++++++++ frontend/package.json | 19 + frontend/postcss.config.js | 11 + 6 files changed, 4924 insertions(+) create mode 100644 frontend/.stylelintrc.json create mode 100644 frontend/css/style-test.css create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/postcss.config.js diff --git a/.gitignore b/.gitignore index b1dec5aa4..8d99724f1 100644 --- a/.gitignore +++ b/.gitignore @@ -79,3 +79,7 @@ docker/local.env # config dumps from make docker-compose-config-to-file config-compose-* + +# Frontend +frontend/node_modules +frontend/build \ No newline at end of file diff --git a/frontend/.stylelintrc.json b/frontend/.stylelintrc.json new file mode 100644 index 000000000..77ceb29f8 --- /dev/null +++ b/frontend/.stylelintrc.json @@ -0,0 +1 @@ +{ "extends": ["stylelint-config-standard"] } \ No newline at end of file diff --git a/frontend/css/style-test.css b/frontend/css/style-test.css new file mode 100644 index 000000000..33daa5362 --- /dev/null +++ b/frontend/css/style-test.css @@ -0,0 +1,25 @@ +/* Test file for postcss output */ +:root { + color-scheme: light dark; +} + +body { + color: light-dark(#333b3c, #efefec); + background-color: light-dark(#efedea, #223a2c); +} + +input { + /* styles for input not in a label */ + border: tomato 2px solid; +} + +label { + /* styles for label */ + font-family: system-ui; + font-size: 1.25rem; + + & input { + /* styles for input in a label */ + border: blue 2px dashed; + } +} diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 000000000..eb2ecdb27 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,4864 @@ +{ + "name": "frontend", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "autoprefixer": "^10.4.20", + "cssnano": "^7.0.6", + "postcss": "^8.5.2", + "postcss-cli": "^11.0.0", + "postcss-preset-env": "^10.1.4", + "stylelint": "^16.14.1", + "stylelint-config-standard": "^37.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.4.tgz", + "integrity": "sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", + "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", + "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", + "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", + "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.1.tgz", + "integrity": "sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.7.tgz", + "integrity": "sha512-aDHYmhNIHR6iLw4ElWhf+tRqqaXwKnMl0YsQ/X105Zc4dQwe6yJpMrTN6BwOoESrkDjOYMOfORviSSLeDTJkdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-function": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.7.tgz", + "integrity": "sha512-e68Nev4CxZYCLcrfWhHH4u/N1YocOfTmw67/kVX5Rb7rnguqqLyxPjhHWjSBX8o4bmyuukmNf3wrUSU3//kT7g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-content-alt-text": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.4.tgz", + "integrity": "sha512-YItlZUOuZJCBlRaCf8Aucc1lgN41qYGALMly0qQllrxYJhiyzlI6RxOTMUvtWk+KhS8GphMDsDhKQ7KTPfEMSw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-exponential-functions": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.6.tgz", + "integrity": "sha512-IgJA5DQsQLu/upA3HcdvC6xEMR051ufebBTIXZ5E9/9iiaA7juXWz1ceYj814lnDYP/7eWjZnw0grRJlX4eI6g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", + "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.7.tgz", + "integrity": "sha512-gzFEZPoOkY0HqGdyeBXR3JP218Owr683u7KOZazTK7tQZBE8s2yhg06W1tshOqk7R7SWvw9gkw2TQogKpIW8Xw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.7.tgz", + "integrity": "sha512-WgEyBeg6glUeTdS2XT7qeTFBthTJuXlS9GFro/DVomj7W7WMTamAwpoP4oQCq/0Ki2gvfRYFi/uZtmRE14/DFA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.7.tgz", + "integrity": "sha512-LKYqjO+wGwDCfNIEllessCBWfR4MS/sS1WXO+j00KKyOjm7jDW2L6jzUmqASEiv/kkJO39GcoIOvTTfB3yeBUA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.0.tgz", + "integrity": "sha512-9QT5TDGgx7wD3EEMN3BSUG6ckb6Eh5gSPT5kZoVtUuAonfPmLDJyPhqR4ntPpMYhUKAMVKAg3I/AgzqHMSeLhA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-initial": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz", + "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.1.tgz", + "integrity": "sha512-JLp3POui4S1auhDR0n8wHd/zTOWmMsmK3nQd3hhL6FhWPaox5W7j1se6zXOG/aP07wV2ww0lxbKYGwbBszOtfQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-light-dark-function": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.7.tgz", + "integrity": "sha512-ZZ0rwlanYKOHekyIPaU+sVm3BEHCe+Ha0/px+bmHe62n0Uc1lL34vbwrLYn6ote8PHlsqzKeTQdIejQCJ05tfw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", + "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overflow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", + "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", + "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-resize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", + "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.3.tgz", + "integrity": "sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-minmax": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.6.tgz", + "integrity": "sha512-J1+4Fr2W3pLZsfxkFazK+9kr96LhEYqoeBszLmFjb6AjYs+g9oDAw3J5oQignLKk3rC9XHW+ebPTZ9FaW5u5pg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/media-query-list-parser": "^4.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.4.tgz", + "integrity": "sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/media-query-list-parser": "^4.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", + "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz", + "integrity": "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.7.tgz", + "integrity": "sha512-I6WFQIbEKG2IO3vhaMGZDkucbCaUSXMxvHNzDdnfsTCF5tc0UlV3Oe2AhamatQoKFjBi75dSEMrgWq3+RegsOQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.0.0.tgz", + "integrity": "sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-random-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-1.0.2.tgz", + "integrity": "sha512-vBCT6JvgdEkvRc91NFoNrLjgGtkLWt47GKT6E2UDn3nd8ZkMBiziQ1Md1OiKoSsgzxsSnGKG3RVdhlbdZEkHjA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-relative-color-syntax": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.7.tgz", + "integrity": "sha512-apbT31vsJVd18MabfPOnE977xgct5B1I+Jpf+Munw3n6kKb1MMuUmGGH+PT9Hm/fFs6fe61Q/EWnkrb4bNoNQw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz", + "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-sign-functions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.1.tgz", + "integrity": "sha512-MslYkZCeMQDxetNkfmmQYgKCy4c+w9pPDfgOBCJOo/RI1RveEUdZQYtOfrC6cIZB7sD7/PHr2VGOcMXlZawrnA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.6.tgz", + "integrity": "sha512-/dwlO9w8vfKgiADxpxUbZOWlL5zKoRIsCymYoh1IPuBsXODKanKnfuZRr32DEqT0//3Av1VjfNZU9yhxtEfIeA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.1.tgz", + "integrity": "sha512-xPZIikbx6jyzWvhms27uugIc0I4ykH4keRvoa3rxX5K7lEhkbd54rjj/dv60qOCTisoS+3bmwJTeyV1VNBrXaw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.6.tgz", + "integrity": "sha512-c4Y1D2Why/PeccaSouXnTt6WcNHJkoJRidV2VW9s5gJ97cNxnLgQ4Qj8qOqkIR9VmTQKJyNcbF4hy79ZQnWD7A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", + "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/selector-resolve-nested": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.0.0.tgz", + "integrity": "sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/utilities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", + "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@dual-bundle/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", + "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/cacheable": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.8.tgz", + "integrity": "sha512-OE1/jlarWxROUIpd0qGBSKFLkNsotY8pt4GeiVErUYh/NUeTNrT+SBksUgllQv4m6a0W/VZsLuiHb88maavqEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.7.0", + "keyv": "^5.2.3" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001700", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/css-blank-pseudo": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz", + "integrity": "sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-functions-list": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12 || >=16" + } + }, + "node_modules/css-has-pseudo": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.2.tgz", + "integrity": "sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz", + "integrity": "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssdb": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.2.3.tgz", + "integrity": "sha512-9BDG5XmJrJQQnJ51VFxXCAtpZ5ebDlAREmO8sxMOVU0aSxN/gocbctjIG5LMh3WBUq+xTlb/jw2LoljBEqraTA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "MIT-0" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.6.tgz", + "integrity": "sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^7.0.6", + "lilconfig": "^3.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-default": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.6.tgz", + "integrity": "sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.0", + "postcss-calc": "^10.0.2", + "postcss-colormin": "^7.0.2", + "postcss-convert-values": "^7.0.4", + "postcss-discard-comments": "^7.0.3", + "postcss-discard-duplicates": "^7.0.1", + "postcss-discard-empty": "^7.0.0", + "postcss-discard-overridden": "^7.0.0", + "postcss-merge-longhand": "^7.0.4", + "postcss-merge-rules": "^7.0.4", + "postcss-minify-font-values": "^7.0.0", + "postcss-minify-gradients": "^7.0.0", + "postcss-minify-params": "^7.0.2", + "postcss-minify-selectors": "^7.0.4", + "postcss-normalize-charset": "^7.0.0", + "postcss-normalize-display-values": "^7.0.0", + "postcss-normalize-positions": "^7.0.0", + "postcss-normalize-repeat-style": "^7.0.0", + "postcss-normalize-string": "^7.0.0", + "postcss-normalize-timing-functions": "^7.0.0", + "postcss-normalize-unicode": "^7.0.2", + "postcss-normalize-url": "^7.0.0", + "postcss-normalize-whitespace": "^7.0.0", + "postcss-ordered-values": "^7.0.1", + "postcss-reduce-initial": "^7.0.2", + "postcss-reduce-transforms": "^7.0.0", + "postcss-svgo": "^7.0.1", + "postcss-unique-selectors": "^7.0.3" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.0.tgz", + "integrity": "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.102", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", + "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", + "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.6.tgz", + "integrity": "sha512-0wvv16mVo9nN0Md3k7DMjgAPKG/TY4F/gYMBVb/wMThFRJvzrpaqBFqF6km9wf8QfYTN+mNg5aeaBLfy8k35uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^6.1.6" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.6.tgz", + "integrity": "sha512-F+CKgSwp0pzLx67u+Zy1aCueVWFAHWbXepvXlZ+bWVTaASbm5SyCnSJ80Fp1ePEmS57wU+Bf6cx6525qtMZ4lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cacheable": "^1.8.8", + "flatted": "^3.3.2", + "hookified": "^1.7.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "dev": true, + "license": "MIT" + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hookified": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.7.1.tgz", + "integrity": "sha512-OXcdHsXeOiD7OJ5zvWj8Oy/6RCdLwntAX+wUrfemNcMGn6sux4xbEHi2QXwqePYhjQ/yvxxq2MvCRirdlHscBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz", + "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.2.3.tgz", + "integrity": "sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.0.2" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/known-css-properties": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", + "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz", + "integrity": "sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-calc": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz", + "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12 || ^20.9 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.38" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-cli": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.0.tgz", + "integrity": "sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.3.0", + "dependency-graph": "^0.11.0", + "fs-extra": "^11.0.0", + "get-stdin": "^9.0.0", + "globby": "^14.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^5.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "postcss": "index.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.7.tgz", + "integrity": "sha512-EZvAHsvyASX63vXnyXOIynkxhaHRSsdb7z6yiXKIovGXAolW4cMZ3qoh7k3VdTsLBS6VGdksGfIo3r6+waLoOw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz", + "integrity": "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz", + "integrity": "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-colormin": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.2.tgz", + "integrity": "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.4.tgz", + "integrity": "sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-custom-media": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.5.tgz", + "integrity": "sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.4", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/media-query-list-parser": "^4.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-properties": { + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.4.tgz", + "integrity": "sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.4", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.4.tgz", + "integrity": "sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.4", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz", + "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-discard-comments": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz", + "integrity": "sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-comments/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz", + "integrity": "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-empty": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz", + "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz", + "integrity": "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.0.tgz", + "integrity": "sha512-JkIGah3RVbdSEIrcobqj4Gzq0h53GG4uqDPsho88SgY84WnpkTpI0k50MFK/sX7XqVisZ6OqUfFnoUO6m1WWdg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz", + "integrity": "sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz", + "integrity": "sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz", + "integrity": "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-image-set-function": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz", + "integrity": "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-lab-function": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.7.tgz", + "integrity": "sha512-+ONj2bpOQfsCKZE2T9VGMyVVdGcGUpr7u3SVfvkJlvhTRmDCfY25k4Jc8fubB9DclAPR4+w8uVtDZmdRgdAHig==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } + } + }, + "node_modules/postcss-logical": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.0.0.tgz", + "integrity": "sha512-HpIdsdieClTjXLOyYdUPAX/XQASNIwdKt5hoZW08ZOAiI+tbV0ta1oclkpVkW5ANU+xJvk3KkA0FejkjGLXUkg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.4.tgz", + "integrity": "sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^7.0.4" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz", + "integrity": "sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^5.0.0", + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz", + "integrity": "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz", + "integrity": "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-params": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz", + "integrity": "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.4.tgz", + "integrity": "sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-nesting": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.1.tgz", + "integrity": "sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-resolve-nested": "^3.0.0", + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz", + "integrity": "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz", + "integrity": "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz", + "integrity": "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz", + "integrity": "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-string": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz", + "integrity": "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz", + "integrity": "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz", + "integrity": "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz", + "integrity": "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz", + "integrity": "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz", + "integrity": "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==", + "dev": true, + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-ordered-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz", + "integrity": "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz", + "integrity": "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-10.0.0.tgz", + "integrity": "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.1.4.tgz", + "integrity": "sha512-awWKS3CwyY7I4Eb3YSWOZisbj3qXyuQCrylYiu2vSHxnSZAj3LHStN6jOcpCrc6EjYunLwbeNto3M5/JBtXpzg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-cascade-layers": "^5.0.1", + "@csstools/postcss-color-function": "^4.0.7", + "@csstools/postcss-color-mix-function": "^3.0.7", + "@csstools/postcss-content-alt-text": "^2.0.4", + "@csstools/postcss-exponential-functions": "^2.0.6", + "@csstools/postcss-font-format-keywords": "^4.0.0", + "@csstools/postcss-gamut-mapping": "^2.0.7", + "@csstools/postcss-gradients-interpolation-method": "^5.0.7", + "@csstools/postcss-hwb-function": "^4.0.7", + "@csstools/postcss-ic-unit": "^4.0.0", + "@csstools/postcss-initial": "^2.0.1", + "@csstools/postcss-is-pseudo-class": "^5.0.1", + "@csstools/postcss-light-dark-function": "^2.0.7", + "@csstools/postcss-logical-float-and-clear": "^3.0.0", + "@csstools/postcss-logical-overflow": "^2.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", + "@csstools/postcss-logical-resize": "^3.0.0", + "@csstools/postcss-logical-viewport-units": "^3.0.3", + "@csstools/postcss-media-minmax": "^2.0.6", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.4", + "@csstools/postcss-nested-calc": "^4.0.0", + "@csstools/postcss-normalize-display-values": "^4.0.0", + "@csstools/postcss-oklab-function": "^4.0.7", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/postcss-random-function": "^1.0.2", + "@csstools/postcss-relative-color-syntax": "^3.0.7", + "@csstools/postcss-scope-pseudo-class": "^4.0.1", + "@csstools/postcss-sign-functions": "^1.1.1", + "@csstools/postcss-stepped-value-functions": "^4.0.6", + "@csstools/postcss-text-decoration-shorthand": "^4.0.1", + "@csstools/postcss-trigonometric-functions": "^4.0.6", + "@csstools/postcss-unset-value": "^4.0.0", + "autoprefixer": "^10.4.19", + "browserslist": "^4.24.4", + "css-blank-pseudo": "^7.0.1", + "css-has-pseudo": "^7.0.2", + "css-prefers-color-scheme": "^10.0.0", + "cssdb": "^8.2.3", + "postcss-attribute-case-insensitive": "^7.0.1", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^7.0.7", + "postcss-color-hex-alpha": "^10.0.0", + "postcss-color-rebeccapurple": "^10.0.0", + "postcss-custom-media": "^11.0.5", + "postcss-custom-properties": "^14.0.4", + "postcss-custom-selectors": "^8.0.4", + "postcss-dir-pseudo-class": "^9.0.1", + "postcss-double-position-gradients": "^6.0.0", + "postcss-focus-visible": "^10.0.1", + "postcss-focus-within": "^9.0.1", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^6.0.0", + "postcss-image-set-function": "^7.0.0", + "postcss-lab-function": "^7.0.7", + "postcss-logical": "^8.0.0", + "postcss-nesting": "^13.0.1", + "postcss-opacity-percentage": "^3.0.0", + "postcss-overflow-shorthand": "^6.0.0", + "postcss-page-break": "^3.0.4", + "postcss-place": "^10.0.0", + "postcss-pseudo-class-any-link": "^10.0.1", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^8.0.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz", + "integrity": "sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz", + "integrity": "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz", + "integrity": "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-reporter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz", + "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", + "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-safe-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-selector-not": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz", + "integrity": "sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.1.tgz", + "integrity": "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.3.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.3.tgz", + "integrity": "sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylehacks": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz", + "integrity": "sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylelint": { + "version": "16.14.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.14.1.tgz", + "integrity": "sha512-oqCL7AC3786oTax35T/nuLL8p2C3k/8rHKAooezrPGRvUX0wX+qqs5kMWh5YYT4PHQgVDobHT4tw55WgpYG6Sw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/media-query-list-parser": "^4.0.2", + "@csstools/selector-specificity": "^5.0.0", + "@dual-bundle/import-meta-resolve": "^4.1.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.3", + "css-tree": "^3.1.0", + "debug": "^4.3.7", + "fast-glob": "^3.3.3", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^10.0.5", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^7.0.3", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.35.0", + "mathml-tag-names": "^2.1.3", + "meow": "^13.2.0", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.5.1", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "supports-hyperlinks": "^3.1.0", + "svg-tags": "^1.0.0", + "table": "^6.9.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/stylelint-config-recommended": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-15.0.0.tgz", + "integrity": "sha512-9LejMFsat7L+NXttdHdTq94byn25TD+82bzGRiV1Pgasl99pWnwipXS5DguTpp3nP1XjvLXVnEJIuYBfsRjRkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.13.0" + } + }, + "node_modules/stylelint-config-standard": { + "version": "37.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-37.0.0.tgz", + "integrity": "sha512-+6eBlbSTrOn/il2RlV0zYGQwRTkr+WtzuVSs1reaWGObxnxLpbcspCUYajVQHonVfxVw2U+h42azGhrBvcg8OA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "dependencies": { + "stylelint-config-recommended": "^15.0.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.13.0" + } + }, + "node_modules/stylelint/node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/stylelint/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/globby/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/stylelint/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/stylelint/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/table": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 000000000..c3a789e11 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,19 @@ +{ + "scripts": { + "css:lint": "stylelint css/*.css", + "css:build": "postcss css/*.css --dir build", + "css:build:watch": "postcss css/*.css --dir build --watch --poll" + }, + "devDependencies": { + "autoprefixer": "^10.4.20", + "cssnano": "^7.0.6", + "postcss": "^8.5.2", + "postcss-cli": "^11.0.0", + "postcss-preset-env": "^10.1.4", + "stylelint": "^16.14.1", + "stylelint-config-standard": "^37.0.0" + }, + "browserslist": [ + "defaults" + ] +} \ No newline at end of file diff --git a/frontend/postcss.config.js b/frontend/postcss.config.js new file mode 100644 index 000000000..f13d91294 --- /dev/null +++ b/frontend/postcss.config.js @@ -0,0 +1,11 @@ +module.exports = { + plugins: { + autoprefixer: {}, + "postcss-preset-env": { + features: {}, + }, + cssnano: { + preset: "default", + }, + }, +}; From 3d0485e2ac666b981a2bec59e67275d92afc0427 Mon Sep 17 00:00:00 2001 From: Khdulkadir <144004145+Khdulkadir@users.noreply.github.com> Date: Fri, 21 Feb 2025 14:55:45 +0100 Subject: [PATCH 02/60] change tomato to white as git test --- frontend/css/style-test.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/css/style-test.css b/frontend/css/style-test.css index 33daa5362..3a28fa37b 100644 --- a/frontend/css/style-test.css +++ b/frontend/css/style-test.css @@ -10,7 +10,7 @@ body { input { /* styles for input not in a label */ - border: tomato 2px solid; + border: white 2px solid; } label { From 47f4047abbd75065b060416e83805550762bc753 Mon Sep 17 00:00:00 2001 From: Johan Bloemberg Date: Fri, 21 Feb 2025 18:06:51 +0100 Subject: [PATCH 03/60] Build CSS with postcss --- bin/frontend.py | 36 ------------------------- docker/Dockerfile | 28 ++++++++++++++++++- docker/compose.development.yaml | 13 ++++++--- frontend/js/imagecheck.js | 4 +-- frontend/package.json | 6 ++--- integration_tests/common/test_basic.py | 2 +- integration_tests/develop/test_basic.py | 2 +- integration_tests/live/test_basic.py | 2 +- interface/templates/base.html | 4 +-- 9 files changed, 47 insertions(+), 50 deletions(-) diff --git a/bin/frontend.py b/bin/frontend.py index 10badf28b..ab9af0996 100644 --- a/bin/frontend.py +++ b/bin/frontend.py @@ -1,12 +1,10 @@ # Copyright: 2022, ECP, NLnet Labs and the Internet.nl contributors # SPDX-License-Identifier: Apache-2.0 from argparse import ArgumentParser -import io import os from uuid import uuid4 as uuid import rjsmin -import sass FRONTEND_FOLDER = "frontend" @@ -15,7 +13,6 @@ DJANGO_STATIC_FOLDER = "static_frontend" DJANGO_STATIC_JS_FOLDER = DJANGO_STATIC_FOLDER + "/js" -DJANGO_STATIC_CSS_FOLDER = DJANGO_STATIC_FOLDER + "/css" def build_js(args=None): @@ -53,36 +50,6 @@ def build_js(args=None): print("Done!") -def build_css(args=None): - """ - Build/minify CSS and copy into Django's static folder. - - """ - print("-"*20) - print("Building CSS files.") - try: - os.mkdir(DJANGO_STATIC_CSS_FOLDER) - except FileExistsError: - pass - for root, dirs, files in os.walk(FRONTEND_CSS_FOLDER): - for filename in files: - if filename.endswith(".css"): - if filename == "style.css-notyet-scss": - continue - print(f"Found {filename}...") - filepath = os.path.join(root, filename) - content_min = sass.compile( - filename=filepath, output_style="compressed") - filename, _ = filename.rsplit(".", 1) - filepath = os.path.join( - DJANGO_STATIC_CSS_FOLDER, filename + "-min.css") - print(f"... minifying to {filepath}") - with open(filepath, 'w', encoding="utf-8") as f: - f.write(content_min) - break - print("Done!") - - def parse(): """ Parse the command line. @@ -98,9 +65,6 @@ def parse(): parser.set_defaults(func=lambda x: parser.print_help()) - to_django = subparsers.add_parser('css') - to_django.set_defaults(func=build_css) - to_tar = subparsers.add_parser('js') to_tar.set_defaults(func=build_js) diff --git a/docker/Dockerfile b/docker/Dockerfile index 019719c42..6e4278b36 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -133,6 +133,17 @@ USER unbound ENTRYPOINT ["/entrypoint.sh"] +FROM debian:bullseye-20241111-slim AS frontend + +# install npm from official image +COPY --from=node:20-slim /usr/local/bin/ /usr/local/bin/ +COPY --from=node:20-slim /usr/local/lib/node_modules /usr/local/lib/node_modules + +ADD frontend/ /app/frontend +WORKDIR /app/frontend +RUN npm install +RUN npm run css:build + # build main application image target FROM --platform=linux/amd64 debian:bullseye-20241111-slim AS build-app ARG PYTHON_VERSION @@ -204,8 +215,10 @@ RUN install -d -m 0755 -o nobody -g nogroup /app/batch_results # some js/css files use a separate script to generate minimized versions # storage these in a place for django to find RUN mkdir -p /app/static_frontend +# minimize JS files RUN python3 bin/frontend.py js -RUN python3 bin/frontend.py css +# copy build/minimized CSS files from frontand stage +COPY --from=frontend --chown=nobody:nogroup /app/static_frontend/css/*.css /app/static_frontend/css/ # generate language files RUN python3 bin/pofiles.py to_django @@ -227,6 +240,19 @@ ENV SETUPTOOLS_SCM_PRETEND_VERSION=$RELEASE ENTRYPOINT [ "python3", "./manage.py"] CMD ["runserver", "0.0.0.0:8080"] +# app image with development tools for better live reloading +FROM app AS app-dev + +# required for compose `develop` mode file sync/copy +USER root + +# copy dependencies to rebuild CSS (postcss) +COPY --from=frontend /usr/local/bin/ /usr/local/bin/ +COPY --from=frontend /usr/local/lib/node_modules /usr/local/lib/node_modules + +# copy browser reload module +COPY --from=linttest-deps /usr/local/lib/python${PYTHON_VERSION}/dist-packages/django_browser_reload /usr/local/lib/python${PYTHON_VERSION}/dist-packages/django_browser_reload + # supplement application with unittest, lint dependencies FROM build-app AS linttest ARG PYTHON_VERSION diff --git a/docker/compose.development.yaml b/docker/compose.development.yaml index 3b6e7e8f8..4b4db947a 100644 --- a/docker/compose.development.yaml +++ b/docker/compose.development.yaml @@ -22,11 +22,11 @@ services: develop: watch: # auto rebuild/reload when CSS/JS changes - - path: ../frontend/ + - path: ../frontend/js action: sync+exec - target: /app/frontend + target: /app/frontend/js exec: - command: /bin/sh -c "python3 bin/frontend.py js;python3 bin/frontend.py css;" + command: python3 bin/frontend.py js # use Django runserver for better debug abilities during development entrypoint: ["/bin/bash"] # run CSS auto rebuild in the background and start devserver @@ -34,6 +34,11 @@ services: - "-c" - > if [ "$INTERNETNL_AUTORELOAD" = "True" ]; then + # watch CSS files for rebuild + cd /app/frontend; + npm run css:build:watch & + cd /app; + # start development server with auto reloading ./manage.py runserver 0.0.0.0:8080 else ./manage.py runserver 0.0.0.0:8080 --noreload @@ -46,6 +51,8 @@ services: - ../checks:/app/checks - ../interface:/app/interface - ../internetnl:/app/internetnl + # mount CSS files so `css:build:watch` can detect changes an rebuild + - ../frontend/css:/app/frontend/css worker: volumes: diff --git a/frontend/js/imagecheck.js b/frontend/js/imagecheck.js index f1a2d7595..8e609518f 100644 --- a/frontend/js/imagecheck.js +++ b/frontend/js/imagecheck.js @@ -15,7 +15,7 @@ function ImageCheck() { * #unique is added to always get the file from the server if a newer * version exists. */ - objCSS_noimages.href = '/static/css/alt-min.css'+'#'+unique; + objCSS_noimages.href = '/static/css/alt.css'+'#'+unique; objCSS_noimages.type = 'text/css'; } if (check_if_browser_in_high_contrast()) { @@ -28,7 +28,7 @@ function ImageCheck() { * #unique is added to always get the file from the server if a newer * version exists. */ - objCSS_highcontrast.href = '/static/css/high-contrast-min.css'+'#'+unique; + objCSS_highcontrast.href = '/static/css/high-contrast.css'+'#'+unique; objCSS_highcontrast.type = 'text/css'; } } diff --git a/frontend/package.json b/frontend/package.json index c3a789e11..e72a3d885 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,8 +1,8 @@ { "scripts": { "css:lint": "stylelint css/*.css", - "css:build": "postcss css/*.css --dir build", - "css:build:watch": "postcss css/*.css --dir build --watch --poll" + "css:build": "postcss css/*.css --dir /app/static_frontend/css/", + "css:build:watch": "postcss css/*.css --dir /app/static_frontend/css/ --watch --poll" }, "devDependencies": { "autoprefixer": "^10.4.20", @@ -16,4 +16,4 @@ "browserslist": [ "defaults" ] -} \ No newline at end of file +} diff --git a/integration_tests/common/test_basic.py b/integration_tests/common/test_basic.py index dfa3c7c95..f5cb25d5c 100644 --- a/integration_tests/common/test_basic.py +++ b/integration_tests/common/test_basic.py @@ -90,7 +90,7 @@ def test_static_files(page, app_url_subdomain): def test_generated_css_static_files(page, app_url_subdomain): - response = page.request.get(app_url_subdomain + "/static/css/style-min.css") + response = page.request.get(app_url_subdomain + "/static/css/style.css") expect(response).to_be_ok() assert "@font-face" in response.text() assert "expires" in response.headers diff --git a/integration_tests/develop/test_basic.py b/integration_tests/develop/test_basic.py index a7eac20f0..de13c5895 100644 --- a/integration_tests/develop/test_basic.py +++ b/integration_tests/develop/test_basic.py @@ -41,7 +41,7 @@ def test_static_files(page, app_url): def test_generated_css_static_files(page, app_url): - response = requests.get(app_url + "/static/css/style-min.css", verify=False) + response = requests.get(app_url + "/static/css/style.css", verify=False) response.raise_for_status() assert "@font-face" in response.text assert "expires" in response.headers diff --git a/integration_tests/live/test_basic.py b/integration_tests/live/test_basic.py index eb16cc272..83fbcee11 100644 --- a/integration_tests/live/test_basic.py +++ b/integration_tests/live/test_basic.py @@ -46,7 +46,7 @@ def test_static_files(page, app_url): def test_generated_css_static_files(page, app_url): - response = requests.get(app_url + "/static/css/style-min.css") + response = requests.get(app_url + "/static/css/style.css") response.raise_for_status() assert "@font-face" in response.text assert "expires" in response.headers diff --git a/interface/templates/base.html b/interface/templates/base.html index 9988bb04f..7687face1 100644 --- a/interface/templates/base.html +++ b/interface/templates/base.html @@ -15,8 +15,8 @@ - - + + From f4573b2296abbda5db4a5fc93f84787892ae25ba Mon Sep 17 00:00:00 2001 From: Khdulkadir <144004145+Khdulkadir@users.noreply.github.com> Date: Fri, 14 Mar 2025 11:20:16 +0100 Subject: [PATCH 04/60] Feature/header (#9) * feat: new header Created new header: -Responsive -Dark Mode -Language Switch (Not fully tested) -Accessible * feat(frontend/base): add internetnl branding check * fix: header css lint errors and added scroll option when expanded mobile menu doesnt fit vertically * fix: header bug fix mobile menu * fix: header bug fix mobile menu * fix: header bug fix mobile menu * fix: header bug fix * fix: header wijzigingen Wijzigingen: -Betere toegankelijkheid dmv rem waardes en aria attributes -Hover en active states van menu links en logo -Border bottom op header wanneer ie sticky is -transities voor in en uitklappen van subnav/mobile nav -mobile menu gemaakt volgens ontwerp * fix: header bug fix * fix: header color fix * fix: header animatie bug * fix: header variable names, feedback menno * fix: header small fix --------- Co-authored-by: Menno ter Laak --- frontend/css/global.css | 116 ++++++ frontend/css/header.css | 564 ++++++++++++++++++++++++++++++ frontend/css/variables.css | 465 ++++++++++++++++++++++++ frontend/js/header.js | 36 ++ frontend/js/initial.js | 7 + frontend/js/language-switch.js | 6 + frontend/js/{ => old}/menu.js | 0 frontend/js/theme.js | 17 + interface/templates/base.html | 225 +++++++++--- interface/templates/base.html.old | 126 +++++++ package-lock.json | 6 + 11 files changed, 1516 insertions(+), 52 deletions(-) create mode 100644 frontend/css/global.css create mode 100644 frontend/css/header.css create mode 100644 frontend/css/variables.css create mode 100644 frontend/js/header.js create mode 100644 frontend/js/initial.js create mode 100644 frontend/js/language-switch.js rename frontend/js/{ => old}/menu.js (100%) create mode 100644 frontend/js/theme.js create mode 100644 interface/templates/base.html.old create mode 100644 package-lock.json diff --git a/frontend/css/global.css b/frontend/css/global.css new file mode 100644 index 000000000..0480d47e1 --- /dev/null +++ b/frontend/css/global.css @@ -0,0 +1,116 @@ +/* Montserrat-400 */ +@font-face { + font-display: swap; + font-family: Montserrat; + font-style: normal; + font-weight: 400; + src: url('/assets/fonts/montserrat-400.woff2') format('woff2'); +} + +/* Montserrat-500 */ +@font-face { + font-display: swap; + font-family: Montserrat; + font-style: normal; + font-weight: 500; + src: url('/assets/fonts/montserrat-500.woff2') format('woff2'); +} + +/* Montserrat-700 */ +@font-face { + font-display: swap; + font-family: Montserrat; + font-style: normal; + font-weight: 700; + src: url('/assets/fonts/montserrat-700.woff2') format('woff2'); +} + +/* Roboto-400 */ +@font-face { + font-display: swap; + font-family: Roboto; + font-style: normal; + font-weight: 400; + src: url('/assets/fonts/roboto-400.woff2') format('woff2'); +} + +/* Roboto-500 */ +@font-face { + font-display: swap; + font-family: Roboto; + font-style: normal; + font-weight: 500; + src: url('/assets/fonts/roboto-500.woff2') format('woff2'); +} + +/* Roboto-700 */ +@font-face { + font-display: swap; + font-family: Roboto; + font-style: normal; + font-weight: 700; + src: url('/assets/fonts/roboto-700.woff2') format('woff2'); +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: Montserrat, sans-serif; + background-color: var(--primary-bg-color); +} + +ul { + list-style: none; +} + +a { + text-decoration: none; +} + +button { + cursor: pointer; + border: none; + background-color: transparent; +} + +.container { + max-inline-size: 1240px; + margin-inline: auto; + padding-inline: 16px; +} + +section > .container { + display: grid; + grid-template-columns: repeat(12, 1fr); + grid-template-rows: auto; +} + +.skip-link { + position: absolute; + left: -9999px; + z-index: 999; + padding: 16px; + background-color: #000; + color: #FFF; + opacity: 0; +} + +.skip-link:focus { + left: 50%; + transform: translateX(-50%); + opacity: 1; +} + +body:has(.nav-controls.active) .skip-link { + display: none; +} + +body:has(.nav-controls.active) { + @media (scripting: enabled) and (width <= 900px) { + overflow: clip; + } +} \ No newline at end of file diff --git a/frontend/css/header.css b/frontend/css/header.css new file mode 100644 index 000000000..83f28f3ed --- /dev/null +++ b/frontend/css/header.css @@ -0,0 +1,564 @@ +header { + position: sticky; + top: 0; + z-index: 1; + background: var(--nav-bg-color); + transition: border 0.3s, box-shadow 0.3s; + + &.stuck { + border-bottom: var(--nav-sticky-border); + box-shadow: var(--nav-sticky-shadow); + } + + .container { + display: flex; + align-items: center; + padding: 0; + justify-content: space-between; + gap: 16px; + + @media (width >= 900px) { + padding-block: 36px; + } + + &:has(.active) { + padding: 0; + } + + @media (900px <= width <= 1100px) { + flex-wrap: wrap; + } + + @media (scripting: none) { + flex-wrap: wrap; + } + } +} + +.header-logo-toggle-controls { + display: flex; + justify-content: space-between; + background: var(--nav-bg-color); + z-index: 1; + width: 100%; + padding: 20px 16px; + + @media (width >= 900px) { + width: auto; + padding: 0; + } +} + +header:has(.active) .header-logo-toggle-controls { + padding: 20px 16px; + border-radius: 0 0 16px 16px; +} + +.header-logo { + display: flex; + align-items: center; + transition: opacity 0.3s; + + &:hover { + opacity: 0.8; + } + + @media (width >= 900px) { + width: 182px; + height: 40px; + } + + svg { + .search-icon-background, + .big-text { + fill: var(--logo-color-3); + } + + .search-icon { + fill: var(--logo-color-1); + } + + .search-icon-inner { + fill: var(--logo-color-2); + } + + .small-grey-text { + fill: var(--logo-color-3); + display: none; + + @media (width >= 900px) { + display: initial; + } + } + + .small-orange-text { + fill: var(--logo-color-2); + display: none; + + @media (width >= 900px) { + display: initial; + } + } + } +} + +.toggle-menu { + display: flex; + align-items: center; + gap: 8px; + color: var(--nav-text-color); + font: var(--nav-button); + fill: currentcolor; + + .close { + display: none; + } + + @media (width >= 900px) { + display: none; + } + + @media (scripting: none) { + display: none; + } +} + +header:has(.active) { + .close { + display: initial; + } + + .open { + display: none; + } +} + +.nav-controls { + align-items: center; + width: 100%; + flex-direction: column; + position: fixed; + height: 100vh; + top: 0; + left: 0; + background: var(--mobile-nav-bg-color); + display: none; + overflow: auto; + + @media (scripting: enabled) { + padding: 120px 16px 30px; + } + + @media (prefers-reduced-motion: no-preference) and (scripting: enabled) { + @supports (transition-behavior: allow-discrete) { + transition: display 0.5s allow-discrete, opacity 0.5s allow-discrete, left 0.5s allow-discrete; + left: 100%; + opacity: 0; + } + } + + @media (width >= 900px) { + width: 100%; + flex-direction: row; + position: initial; + height: auto; + display: flex; + justify-content: space-between; + gap: 8px; + overflow: initial; + padding: 0; + opacity: 1; + background-color: var(--nav-bg-color); + } + + @media (scripting: none) { + position: initial; + height: auto; + display: flex; + } +} + +.nav-controls.active { + display: flex; + align-items: start; + gap: 40px; + + @media (prefers-reduced-motion: no-preference) { + @supports (transition-behavior: allow-discrete) { + left: 0; + opacity: 1; + + @starting-style { + left: 100%; + opacity: 0; + } + } + } +} + +header nav { + display: flex; + align-items: end; + gap: 8px; + width: 100%; + + @media (width >= 900px) { + display: flex; + align-items: center; + height: auto; + place-content: center; + } + + .nav-list { + display: flex; + flex-direction: column; + width: 100%; + gap: 40px; + + @media (width >= 900px) { + flex-direction: row; + align-items: center; + width: auto; + gap: 32px; + } + + @media (scripting: none) { + flex-flow: row wrap; + } + } + + .nav-item { + padding-bottom: 16px; + border-bottom: var(--mobile-nav-border); + + @media (width >= 900px) { + padding-bottom: 0; + border-bottom: none; + } + } + + .nav-item a, + .nav-item button { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + color: var(--nav-text-color); + font: var(--nav-link); + width: 100%; + border-bottom: 2px solid var(--transparent-100); + transition: border 0.3s; + + &:hover { + @media (width >= 900px) { + border-bottom: 2px solid currentcolor; + } + } + + @media (scripting: none) { + font-size: 1rem; + } + + @media (width >= 900px) { + gap: 4px; + width: auto; + } + } + + .nav-item.current a, + .nav-item.current button { + @media (width >= 900px) { + border-bottom: 2px solid currentcolor; + } + } + + .nav-item:has(.nav-sublist) { + @media (width >= 900px) { + position: relative; + + &::after { + content: ""; + position: absolute; + left: 0; + width: 150%; + height: 20px; + background: var(--transparent-100); + } + } + + .nav-sublist { + display: none; + flex-direction: column; + gap: 32px; + + @media (prefers-reduced-motion: no-preference) and (scripting: enabled) { + @supports (transition-behavior: allow-discrete) { + opacity: 0; + max-height: 0; + transition: max-height 0.3s allow-discrete, opacity 0.3s allow-discrete, display 0.3s allow-discrete, padding 0.3s allow-discrete; + } + } + + @media (width >= 900px) { + gap: 16px; + position: absolute; + padding: 20px 24px; + background-color: var(--dropdown-bg-color); + border-radius: 8px; + width: max-content; + justify-content: space-between; + transform: translateX(-50%); + left: 50%; + margin-top: 20px; + } + + &.expanded { + display: flex; + padding-top: 20px; + + @media (prefers-reduced-motion: no-preference) { + @supports (transition-behavior: allow-discrete) { + opacity: 1; + max-height: 200px; + + @starting-style { + opacity: 0; + max-height: 0; + } + } + } + } + } + + &:focus-within .nav-sublist { + @media (scripting: none) { + display: flex; + } + } + + &:hover .nav-sublist { + @media (width >= 900px) { + display: flex; + + @media (prefers-reduced-motion: no-preference) { + @supports (transition-behavior: allow-discrete) { + opacity: 1; + max-height: 200px; + + @starting-style { + opacity: 0; + max-height: 0; + } + } + } + } + } + + .nav-subitem a { + display: flex; + justify-content: space-between; + font: var(--subnav-link); + + @media (scripting: none) { + font-size: 1rem; + } + + svg { + display: none; + + @media (width >= 900px) { + display: initial; + transform: rotate(270deg); + } + } + } + } + + #toggle-subnav svg { + transform: rotate(360deg) scale(1.25); + transition: 0.3s; + + @media (width >= 900px) { + transform: rotate(0deg); + } + } + + &:has(.nav-sublist.expanded) #toggle-subnav svg { + transform: rotate(180deg) scale(1.25); + + @media (width >= 900px) { + transform: rotate(0deg); + } + } +} + +.language-theme-controls { + display: flex; + gap: 50px; + + @media (width >= 900px) { + display: flex; + flex-direction: row; + gap: 24px; + } +} + +.language-form { + display: flex; + gap: 8px; + + select { + display: flex; + position: relative; + cursor: pointer; + padding: 8px; + border-radius: 8px; + background: var(--mobile-lang-bg-color); + color: var(--mobile-lang-text-color); + border: none; + border-right: 8px solid transparent; + align-items: center; + font: var(--nav-button); + text-transform: uppercase; + + @media (width >= 900px) { + background-color: var(--lang-bg-color); + color: var(--nav-text-color); + } + } + + option { + color: var(--mobile-lang-text-color); + font: var(--nav-button); + text-transform: uppercase; + + @media (width >= 900px) { + color: var(--nav-text-color); + } + } + + /* stylelint-disable-next-line no-descending-specificity */ + button { + color: var(--nav-text-color); + border: 1px solid currentcolor; + border-radius: 8px; + padding: 2px; + + @media (scripting: enabled) { + display: none; + } + } +} + +.theme-button { + display: flex; + font: var(--nav-button); + color: var(--nav-text-color); + gap: 8px; + align-items: center; + + @media (scripting: none) { + cursor: default; + } + + .switch-container { + background-color: var(--theme-button-bg-color); + border-radius: 16px; + display: flex; + align-items: center; + justify-content: left; + width: 53px; + height: 32px; + } + + .switch { + height: 26px; + width: 26px; + border-radius: 100%; + margin-left: 4px; + background-color: var(--theme-button-color); + display: flex; + align-items: center; + justify-content: center; + } +} + +[data-theme="dark"] .theme-button { + .switch-container { + justify-content: right; + } + + .switch { + margin-left: 0; + margin-right: 4px; + } + + .sun-icon { + display: none; + } + + .moon-icon { + display: flex; + } +} + +[data-theme="light"] .theme-button { + .switch-container { + justify-content: left; + } + + .switch { + margin-left: 4px; + margin-right: 0; + } + + .sun-icon { + display: flex; + } + + .moon-icon { + display: none; + } +} + +@media (scripting: none) and (prefers-color-scheme: dark) { + .theme-button { + .switch-container { + justify-content: right; + } + + .switch { + margin-left: 0; + margin-right: 4px; + } + + .sun-icon { + display: none; + } + + .moon-icon { + display: flex; + } + } +} + +@media (scripting: none) and (prefers-color-scheme: light) { + .theme-button { + .switch-container { + justify-content: left; + } + + .switch { + margin-left: 4px; + margin-right: 0; + } + + .sun-icon { + display: flex; + } + + .moon-icon { + display: none; + } + } +} \ No newline at end of file diff --git a/frontend/css/variables.css b/frontend/css/variables.css new file mode 100644 index 000000000..e280f6c01 --- /dev/null +++ b/frontend/css/variables.css @@ -0,0 +1,465 @@ +:root { + /* COLORS */ + --black-100: #000; + --black-200: #191919; + --green-100: #E3F0F5; + --green-200: #EEF6F9; + --green-300: #8BF1FF; + --green-400: #037584; + --green-500: #34545F; + --green-600: #22363C; + --orange-100: #FFEBD2; + --orange-200: #FFC170; + --orange-300: #FFAC40; + --orange-400: #E98400; + --orange-500: #BC6D07; + --orange-600: #CF7604; + --red-100: #E03030; + --white-100: #FFF; + --transparent-100: transparent; + --transparent-200: #E3F0F500; + --transparent-300: #0000001A; + --transparent-400: #FFC17014; + --transparent-500: #FFFFFF80; + + /* FONT FAMILIES */ + --montserrat: 'Montserrat', sans-serif; + --roboto: 'Roboto', sans-serif; + + /* HEADING FONTS */ + --heading-font-xxs: 700 0.875rem/1.5 var(--montserrat); /* 14px */ + --heading-font-xxs-semibold: 500 0.875rem/1.5 var(--montserrat); /* 14px */ + --heading-font-xs: 700 1rem/1.5 var(--montserrat); /* 16px */ + --heading-font-s: 700 1.25rem/1.5 var(--montserrat); /* 20px */ + --heading-font-m: 700 1.5rem/1.3 var(--montserrat); /* 24px */ + --heading-font-l: 700 2rem/1.3 var(--montserrat); /* 32px */ + --heading-font-xl: 700 2.5rem/1.3 var(--montserrat); /* 40px */ + + /* BODY FONTS */ + --body-font-xxs: 400 0.875rem/1.5 var(--roboto); /* 14px */ + --body-font-xxs-bold: 700 0.875rem/1.5 var(--roboto); /* 14px */ + --body-font-xs: 400 1rem/1.5 var(--roboto); /* 16px */ + --body-font-xs-bold: 700 1rem/1.5 var(--roboto); /* 16px */ + --body-font-s: 400 1.125rem/1.75 var(--roboto); /* 18px */ + --body-font-s-bold: 700 1.125rem/1.75 var(--roboto); /* 18px */ + + /* BUTTON FONTS */ + --button-link-font-xxs: 700 0.875rem/2 var(--montserrat); /* 14px */ + --button-link-font-xxs-semibold: 500 0.875rem/2 var(--montserrat); /* 14x */ + --button-link-font-xs: 700 1rem/2 var(--montserrat); /* 16px */ + --button-link-font-s: 700 1.125rem/2 var(--montserrat); /* 18px */ + --button-link-font-m: 700 1.25rem/2 var(--montserrat); /* 20px */ + --button-link-font-l: 700 1.5rem/2 var(--montserrat); /* 24px */ + + /* NAV FONTS MOBILE */ + --nav-link: var(--button-link-font-m); + --nav-button: var(--button-link-font-xs); + --subnav-link: var(--button-link-font-xs); + --footer-link: var(--button-link-font-xs); + --footer-bar-link: var(--button-link-font-xxs); + + /* SECTION FONTS MOBILE */ + --page-title: var(--heading-font-m); + --section-header-1: var(--heading-font-s); + --section-header-2: var(--heading-font-s); + --section-header-3: var(--heading-font-xs); + --section-header-4: var(--heading-font-xs); + --section-header-5: var(--heading-font-xxs); + --section-header-6: var(--heading-font-xxs); + --section-body-1: var(--body-font-xs); + --section-body-2: var(--body-font-xxs); + --section-body-3: var(--body-font-xxs); + --section-body-4: var(--body-font-xxs); + --section-button-1: var(--button-link-font-xxs); + --section-link-1: var(--button-link-font-s); + --section-link-2: var(--button-link-font-xxs-semibold); + + /* CARD FONTS MOBILE */ + --card-header-1: var(--heading-font-s); + --card-header-2: var(--heading-font-xs); + --card-header-3: var(--heading-font-xs); + --card-header-4: var(--heading-font-xxs); + --card-header-5: var(--heading-font-xxs); + --card-body-1: var(--body-font-xxs); + --card-body-2: var(--body-font-xxs); + --card-input-1: var(--body-font-s); + + /* ACCORDION FONTS MOBILE */ + --accordion-header-1: var(--heading-font-xxs); + --accordion-header-2: var(--heading-font-xxs-semibold); + --accordion-body-1: var(--body-font-xxs); + --accordion-body-2: var(--body-font-xxs-semibold); + + @media (width >= 900px) { + /* NAV FONTS DESKTOP */ + --nav-link: var(--button-link-font-xs); + --nav-button: var(--button-link-font-xs); + --subnav-link: var(--button-link-font-xs); + --footer-link: var(--button-link-font-m); + --footer-bar-link: var(--button-link-font-xs); + + /* SECTION FONTS DESKTOP */ + --page-title: var(--heading-font-xl); + --section-header-1: var(--heading-font-l); + --section-header-2: var(--heading-font-m); + --section-header-3: var(--heading-font-m); + --section-header-4: var(--heading-font-s); + --section-header-5: var(--heading-font-m); + --section-header-6: var(--heading-font-xs); + --section-body-1: var(--body-font-s); + --section-body-2: var(--body-font-s); + --section-body-3: var(--body-font-xs); + --section-body-4: var(--body-font-xxs); + --section-button-1: var(--button-link-font-xs); + --section-link-1: var(--button-link-font-s); + --section-link-2: var(--button-link-font-xxs-semibold); + + /* CARD FONTS DESKTOP */ + --card-header-1: var(--heading-font-m); + --card-header-2: var(--heading-font-s); + --card-header-3: var(--heading-font-xs); + --card-header-4: var(--heading-font-xs); + --card-header-5: var(--heading-font-xxs); + --card-body-1: var(--body-font-xs); + --card-body-2: var(--body-font-xxs); + --card-input-1: var(--body-font-s); + + /* ACCORDION FONTS DESKTOP */ + --accordion-header-1: var(--heading-font-xs); + --accordion-header-2: var(--heading-font-xxs-semibold); + --accordion-body-1: var(--body-font-xxs); + --accordion-body-2: var(--body-font-xxs-semibold); + } +} + +@media (prefers-color-scheme: light) { + :root { + /* HEADER COLORS LIGHTMODE */ + --nav-bg-color: var(--white-100); + --nav-text-color: var(--green-500); + --mobile-nav-bg-color: var(--green-200); + --mobile-nav-border: 0.5px solid var(--green-400); + --dropdown-bg-color: var(--green-200); + --nav-sticky-border: 1.5px solid var(--green-400); + --nav-sticky-shadow: 0px 4px 32px 0px var(--transparent-300); + --lang-bg-color: var(--green-200); + --mobile-lang-bg-color: var(--white-100); + --mobile-lang-text-color: var(--green-500); + --theme-button-bg-color: var(--orange-500); + --theme-button-color: var(--white-100); + + /* FOOTER COLORS LIGHTMODE */ + --footer-bg-color: var(--green-400); + --footer-text-color: var(--white-100); + --footer-bar-bg-color: var(--white-100); + --footer-bar-text-color: var(--green-500); + + /* GENERAL COLORS LIGHTMODE */ + --bg-color-1: var(--white-100); + --bg-color-2: var(--green-200); + --bg-color-3: var(--orange-100); + --heading-color-1: var(--green-500); + --heading-color-2: var(--green-400); + --heading-color-3: var(--black-200); + --body-color-1: var(--black-200); + --body-color-2: var(--green-500); + + /* BUTTON COLORS LIGHTMODE */ + --button-bg-color-1: var(--orange-300); + --button-text-color-1: var(--black-200); + --button-bg-color-2: var(--transparent-100); + --button-text-color-2: var(--green-500); + --button-bg-color-3: var(--green-500); + --button-text-color-3: var(--white-100); + --button-bg-color-4: var(--green-200); + --button-text-color-4: var(--green-500); + --button-bg-color-5: var(--white-100); + --button-text-color-5: var(--black-100); + --button-bg-color-6: var(--green-100); + --button-text-color-6: var(--green-500); + + /* CARD COLORS LIGHTMODE */ + --card-bg-color-1: var(--white-100); + --card-heading-color-1: var(--green-400); + --card-body-color-1: var(--green-500); + --card-input-bg-color-1: var(--green-200); + --card-bg-color-2: var(--orange-200); + --card-heading-color-2: var(--black-200); + --card-body-color-2: var(--black-200); + --card-bg-color-3: var(--green-100); + --card-heading-color-3: var(--green-500); + --card-body-color-3: var(--green-500); + --card-bg-color-4: var(--green-400); + --card-heading-color-4: var(--white-100); + --card-body-color-4: var(--white-100); + + /* ELLIPSES LIGHTMODE */ + --ellipse-color-1: linear-gradient(135deg,var(--white-100),var(--transparent-200)) border-box; + --ellipse-color-2: linear-gradient(135deg,var(--orange-200),var(--orange-300)) border-box; + --ellipse-color-3: linear-gradient(135deg,var(--orange-200),var(--transparent-400)) border-box; + + /* LOGO COLORS LIGHTMODE */ + --logo-color-1: var(--white-100); + --logo-color-2: var(--orange-400); + --logo-color-3: var(--green-500); + --logo-color-4: var(--white-100); + --logo-color-5: var(--green-500); + + /* ACCORDION COLORS LIGHTMODE */ + --accordion-bg-color: var(--white-100); + --accordion-heading-color: var(--green-500); + --accordion-body-color: var(--green-500); + + /* IMAGE VISIBILITY LIGHTMODE */ + --image-visible: block; + --image-hidden: none; + } +} + +@media (prefers-color-scheme: dark) { + :root { + /* HEADER COLORS DARKMODE */ + --nav-bg-color: var(--black-200); + --nav-text-color: var(--white-100); + --mobile-nav-bg-color: var(--green-600); + --mobile-nav-border: 0.5px solid var(--black-100); + --dropdown-bg-color: var(--green-600); + --nav-sticky-border: 1.5px solid var(--green-400); + --nav-sticky-shadow: 0px 4px 32px 0px var(--transparent-300); + --lang-bg-color: var(--green-600); + --mobile-lang-bg-color: var(--white-100); + --mobile-lang-text-color: var(--green-500); + --theme-button-bg-color: var(--green-500); + --theme-button-color: var(--white-100); + + /* FOOTER COLORS DARKMODE */ + --footer-bg-color: var(--green-600); + --footer-text-color: var(--white-100); + --footer-bar-bg-color: var(--green-500); + --footer-bar-text-color: var(--white-100); + + /* GENERAL COLORS DARKMODE */ + --bg-color-1: var(--black-100); + --bg-color-2: var(--green-600); + --bg-color-3: var(--orange-100); + --heading-color-1: var(--white-100); + --heading-color-2: var(--green-300); + --heading-color-3: var(--white-100); + --body-color-1: var(--white-100); + --body-color-2: var(--white-100); + + /* BUTTON COLORS DARKMODE */ + --button-bg-color-1: var(--orange-300); + --button-text-color-1: var(--black-200); + --button-bg-color-2: var(--transparent-100); + --button-text-color-2: var(--white-100); + --button-bg-color-3: var(--black-200); + --button-text-color-3: var(--white-100); + --button-bg-color-4: var(--green-200); + --button-text-color-4: var(--green-500); + --button-bg-color-5: var(--white-100); + --button-text-color-5: var(--black-100); + --button-bg-color-6: var(--black-200); + --button-text-color-6: var(--white-100); + + /* CARD COLORS DARKMODE */ + --card-bg-color-1: var(--black-100); + --card-heading-color-1: var(--white-100); + --card-body-color-1: var(--white-100); + --card-input-bg-color-1: var(--green-500); + --card-bg-color-2: var(--green-600); + --card-heading-color-2: var(--white-100); + --card-body-color-2: var(--white-100); + --card-bg-color-3: var(--green-600); + --card-heading-color-3: var(--white-100); + --card-body-color-3: var(--white-100); + --card-bg-color-4: var(--green-500); + --card-heading-color-4: var(--white-100); + --card-body-color-4: var(--white-100); + + /* ELLIPSES DARKMODE */ + --ellipse-color-1: linear-gradient(135deg,var(--white-100),var(--transparent-200)) border-box; + --ellipse-color-2: linear-gradient(135deg,var(--orange-200),var(--orange-300)) border-box; + --ellipse-color-3: linear-gradient(135deg,var(--orange-200),var(--transparent-400)) border-box; + + /* LOGO COLORS DARKMODE */ + --logo-color-1: var(--black-100); + --logo-color-2: var(--white-100); + --logo-color-3: var(--white-100); + --logo-color-4: var(--white-100); + --logo-color-5: var(--green-500); + + /* ACCORDION COLORS DARKMODE */ + --accordion-bg-color: var(--black-200); + --accordion-heading-color: var(--white-100); + --accordion-body-color: var(--white-100); + + /* IMAGE VISIBILITY DARKMODE */ + --image-visible: none; + --image-hidden: block; + } +} + +[data-theme="light"] { + /* HEADER COLORS LIGHTMODE */ + --nav-bg-color: var(--white-100); + --nav-text-color: var(--green-500); + --mobile-nav-bg-color: var(--green-200); + --mobile-nav-border: 0.5px solid var(--green-400); + --dropdown-bg-color: var(--green-200); + --nav-sticky-border: 1.5px solid var(--green-400); + --nav-sticky-shadow: 0px 4px 32px 0px var(--transparent-300); + --lang-bg-color: var(--green-200); + --mobile-lang-bg-color: var(--white-100); + --mobile-lang-text-color: var(--green-500); + --theme-button-bg-color: var(--orange-500); + --theme-button-color: var(--white-100); + + /* FOOTER COLORS LIGHTMODE */ + --footer-bg-color: var(--green-400); + --footer-text-color: var(--white-100); + --footer-bar-bg-color: var(--white-100); + --footer-bar-text-color: var(--green-500); + + /* GENERAL COLORS LIGHTMODE */ + --bg-color-1: var(--white-100); + --bg-color-2: var(--green-200); + --bg-color-3: var(--orange-100); + --heading-color-1: var(--green-500); + --heading-color-2: var(--green-400); + --heading-color-3: var(--black-200); + --body-color-1: var(--black-200); + --body-color-2: var(--green-500); + + /* BUTTON COLORS LIGHTMODE */ + --button-bg-color-1: var(--orange-300); + --button-text-color-1: var(--black-200); + --button-bg-color-2: var(--transparent-100); + --button-text-color-2: var(--green-500); + --button-bg-color-3: var(--green-500); + --button-text-color-3: var(--white-100); + --button-bg-color-4: var(--green-200); + --button-text-color-4: var(--green-500); + --button-bg-color-5: var(--white-100); + --button-text-color-5: var(--black-100); + --button-bg-color-6: var(--green-100); + --button-text-color-6: var(--green-500); + + /* CARD COLORS LIGHTMODE */ + --card-bg-color-1: var(--white-100); + --card-heading-color-1: var(--green-400); + --card-body-color-1: var(--green-500); + --card-input-bg-color-1: var(--green-200); + --card-bg-color-2: var(--orange-200); + --card-heading-color-2: var(--black-200); + --card-body-color-2: var(--black-200); + --card-bg-color-3: var(--green-100); + --card-heading-color-3: var(--green-500); + --card-body-color-3: var(--green-500); + --card-bg-color-4: var(--green-400); + --card-heading-color-4: var(--white-100); + --card-body-color-4: var(--white-100); + + /* ELLIPSES LIGHTMODE */ + --ellipse-color-1: linear-gradient(135deg,var(--white-100),var(--transparent-200)) border-box; + --ellipse-color-2: linear-gradient(135deg,var(--orange-200),var(--orange-300)) border-box; + --ellipse-color-3: linear-gradient(135deg,var(--orange-200),var(--transparent-400)) border-box; + + /* LOGO COLORS LIGHTMODE */ + --logo-color-1: var(--white-100); + --logo-color-2: var(--orange-400); + --logo-color-3: var(--green-500); + --logo-color-4: var(--white-100); + --logo-color-5: var(--green-500); + + /* ACCORDION COLORS LIGHTMODE */ + --accordion-bg-color: var(--white-100); + --accordion-heading-color: var(--green-500); + --accordion-body-color: var(--green-500); + + /* IMAGE VISIBILITY LIGHTMODE */ + --image-visible: block; + --image-hidden: hidden; +} + +[data-theme="dark"] { + /* HEADER COLORS DARKMODE */ + --nav-bg-color: var(--black-200); + --nav-text-color: var(--white-100); + --mobile-nav-bg-color: var(--green-600); + --mobile-nav-border: 0.5px solid var(--black-100); + --dropdown-bg-color: var(--green-600); + --nav-sticky-border: 1.5px solid var(--green-400); + --nav-sticky-shadow: 0px 4px 32px 0px var(--transparent-300); + --lang-bg-color: var(--green-600); + --mobile-lang-bg-color: var(--white-100); + --mobile-lang-text-color: var(--green-500); + --theme-button-bg-color: var(--green-500); + --theme-button-color: var(--white-100); + + /* FOOTER COLORS DARKMODE */ + --footer-bg-color: var(--green-600); + --footer-text-color: var(--white-100); + --footer-bar-bg-color: var(--green-500); + --footer-bar-text-color: var(--white-100); + + /* GENERAL COLORS DARKMODE */ + --bg-color-1: var(--black-100); + --bg-color-2: var(--green-600); + --bg-color-3: var(--orange-100); + --heading-color-1: var(--white-100); + --heading-color-2: var(--green-300); + --heading-color-3: var(--white-100); + --body-color-1: var(--white-100); + --body-color-2: var(--white-100); + + /* BUTTON COLORS DARKMODE */ + --button-bg-color-1: var(--orange-300); + --button-text-color-1: var(--black-200); + --button-bg-color-2: var(--transparent-100); + --button-text-color-2: var(--white-100); + --button-bg-color-3: var(--black-200); + --button-text-color-3: var(--white-100); + --button-bg-color-4: var(--green-200); + --button-text-color-4: var(--green-500); + --button-bg-color-5: var(--white-100); + --button-text-color-5: var(--black-100); + --button-bg-color-6: var(--black-200); + --button-text-color-6: var(--white-100); + + /* CARD COLORS DARKMODE */ + --card-bg-color-1: var(--black-100); + --card-heading-color-1: var(--white-100); + --card-body-color-1: var(--white-100); + --card-input-bg-color-1: var(--green-500); + --card-bg-color-2: var(--green-600); + --card-heading-color-2: var(--white-100); + --card-body-color-2: var(--white-100); + --card-bg-color-3: var(--green-600); + --card-heading-color-3: var(--white-100); + --card-body-color-3: var(--white-100); + --card-bg-color-4: var(--green-500); + --card-heading-color-4: var(--white-100); + --card-body-color-4: var(--white-100); + + /* ELLIPSES DARKMODE */ + --ellipse-color-1: linear-gradient(135deg,var(--white-100),var(--transparent-200)) border-box; + --ellipse-color-2: linear-gradient(135deg,var(--orange-200),var(--orange-300)) border-box; + --ellipse-color-3: linear-gradient(135deg,var(--orange-200),var(--transparent-400)) border-box; + + /* LOGO COLORS DARKMODE */ + --logo-color-1: var(--black-100); + --logo-color-2: var(--white-100); + --logo-color-3: var(--white-100); + --logo-color-4: var(--white-100); + --logo-color-5: var(--green-500); + + /* ACCORDION COLORS DARKMODE */ + --accordion-bg-color: var(--black-200); + --accordion-heading-color: var(--white-100); + --accordion-body-color: var(--white-100); + + /* IMAGE VISIBILITY DARKMODE */ + --image-visible: none; + --image-hidden: block; +} \ No newline at end of file diff --git a/frontend/js/header.js b/frontend/js/header.js new file mode 100644 index 000000000..17357fec3 --- /dev/null +++ b/frontend/js/header.js @@ -0,0 +1,36 @@ +/* TOGGLE MOBILE MENU */ +const toggleMenu = document.querySelector('.toggle-menu'); +const menu = document.getElementById('nav-controls'); +const main = document.querySelector('main'); +const footer = document.querySelector('footer'); + +toggleMenu.addEventListener('click', () => { + menu.classList.toggle('active'); + + toggleMenu.setAttribute('aria-expanded', menu.classList.contains('active')); + main.toggleAttribute('inert', menu.classList.contains('active')); + footer.toggleAttribute('inert', menu.classList.contains('active')); +}); + +/* TOGGLE DROPDOWN MENU */ +const toggleSubMenu = document.getElementById('toggle-subnav'); +const subMenu = document.querySelector('.nav-sublist'); + +toggleSubMenu.addEventListener('click', () => { + subMenu.classList.toggle('expanded'); + + toggleSubMenu.setAttribute('aria-expanded', subMenu.classList.contains('expanded')); +}); + +/* STICKY HEADER */ +const header = document.querySelector('header'); +const scrollWatcher = document.createElement('div'); + +scrollWatcher.setAttribute('data-scroll-watcher', ''); +header.before(scrollWatcher); + +const navObserver = new IntersectionObserver((entries) => { + header.classList.toggle('stuck', !entries[0].isIntersecting) +}); + +navObserver.observe(scrollWatcher); diff --git a/frontend/js/initial.js b/frontend/js/initial.js new file mode 100644 index 000000000..c63d940ca --- /dev/null +++ b/frontend/js/initial.js @@ -0,0 +1,7 @@ + +(function() { + const savedTheme = localStorage.getItem('theme'); + if (savedTheme) { + document.documentElement.setAttribute('data-theme', savedTheme); + } +})(); \ No newline at end of file diff --git a/frontend/js/language-switch.js b/frontend/js/language-switch.js new file mode 100644 index 000000000..d9b1c36f1 --- /dev/null +++ b/frontend/js/language-switch.js @@ -0,0 +1,6 @@ +const languageForm = document.querySelector('.language-form'); +const languageSelect = document.getElementById('language-select'); + +languageSelect.addEventListener('change', function() { + languageForm.submit(); +}); \ No newline at end of file diff --git a/frontend/js/menu.js b/frontend/js/old/menu.js similarity index 100% rename from frontend/js/menu.js rename to frontend/js/old/menu.js diff --git a/frontend/js/theme.js b/frontend/js/theme.js new file mode 100644 index 000000000..a44fc1115 --- /dev/null +++ b/frontend/js/theme.js @@ -0,0 +1,17 @@ +const toggleTheme = document.getElementById('theme-toggle'); + +function setTheme(theme) { + document.documentElement.setAttribute('data-theme', theme); + localStorage.setItem('theme', theme); +} + +function getPreferredTheme() { + return localStorage.getItem('theme') || (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); +} + +document.documentElement.setAttribute('data-theme', getPreferredTheme()); + +toggleTheme.addEventListener('click', () => { + const currentTheme = document.documentElement.getAttribute('data-theme'); + setTheme(currentTheme === 'dark' ? 'light' : 'dark'); +}); \ No newline at end of file diff --git a/interface/templates/base.html b/interface/templates/base.html index 7687face1..977fe76c0 100644 --- a/interface/templates/base.html +++ b/interface/templates/base.html @@ -15,75 +15,196 @@ - + + + - - - + + + + + + + {% block scripting %} {% endblock %} - - + From f98a74828e126430172cc95ae382ab884d768e08 Mon Sep 17 00:00:00 2001 From: Khdulkadir <144004145+Khdulkadir@users.noreply.github.com> Date: Fri, 14 Mar 2025 15:45:55 +0100 Subject: [PATCH 06/60] Feature/test site pagina (#18) * feat: new header Created new header: -Responsive -Dark Mode -Language Switch (Not fully tested) -Accessible * fix: button width and close menu with esc * Update global.css * feat: new footer * feat: test section homepage * feat: waarom testen sectie * feat: hall of fame sectie * Update base.html * feat: about sectie * fix: about section image links * fix: made hall of fame dynamic * feature: nieuws sectie * fix: hall of fame li height * fix: nieuws sectie fix * feat: faq sectie * feat(frontend/base): add internetnl branding check * fix: header css lint errors and added scroll option when expanded mobile menu doesnt fit vertically * fix: header bug fix mobile menu * fix: header bug fix mobile menu * fix: header bug fix mobile menu * fix: header bug fix * fix: header wijzigingen Wijzigingen: -Betere toegankelijkheid dmv rem waardes en aria attributes -Hover en active states van menu links en logo -Border bottom op header wanneer ie sticky is -transities voor in en uitklappen van subnav/mobile nav -mobile menu gemaakt volgens ontwerp * fix: header bug fix * fix: header color fix * fix: header animatie bug * Create package-lock.json.bak * . * fix: explanation update * . * fix: explanation section add carrousel dots * fix: footer changes * fix: test section changes * fix: hall of fame changes * fix: news section * fix: faq changes * fix: faq changes * fix: faq * fix: header variable names, feedback menno * fix: footer variable changes and hover states * fix: explanation sectie hover en variables * fix: explanation padding * Update base.html * fix: hall of fame variables and lint * fix: about section hover and variables * fix: news section variables and hover * fix: faq variables and transition * feat: test site pagina * fix: test site pagina padding --------- Signed-off-by: Khdulkadir <144004145+Khdulkadir@users.noreply.github.com> Co-authored-by: Menno ter Laak --- frontend/css/about-section.css | 120 ++++++ frontend/css/components.css | 302 ++++++++++++++ frontend/css/explanation-section.css | 217 ++++++++++ frontend/css/faq-section.css | 183 +++++++++ frontend/css/global.css | 32 +- frontend/css/hall-of-fame-section.css | 74 ++++ frontend/css/header.css | 2 +- frontend/css/news-section.css | 21 + frontend/css/test-section.css | 152 +++++++ frontend/css/variables.css | 18 +- frontend/js/carrousel.js | 19 + interface/static/fonts/montserrat-400.woff2 | Bin 0 -> 18792 bytes interface/static/fonts/montserrat-500.woff2 | Bin 0 -> 18740 bytes interface/static/fonts/montserrat-700.woff2 | Bin 0 -> 18844 bytes interface/static/fonts/roboto-400.woff2 | Bin 0 -> 20612 bytes interface/static/fonts/roboto-500.woff2 | Bin 0 -> 20928 bytes interface/static/fonts/roboto-700.woff2 | Bin 0 -> 20996 bytes interface/static/images/ncc-wit.png | Bin 0 -> 3217 bytes interface/static/images/ncc.png | Bin 0 -> 3724 bytes interface/static/images/ncsc-wit.png | Bin 0 -> 4359 bytes interface/static/images/ncsc.png | Bin 0 -> 5047 bytes interface/static/images/nlnet-wit.png | Bin 0 -> 3835 bytes interface/static/images/nlnet.png | Bin 0 -> 4038 bytes interface/static/images/surf-wit.png | Bin 0 -> 1366 bytes interface/static/images/surf.png | Bin 0 -> 1168 bytes interface/static/images/vvr-wit.png | Bin 0 -> 4521 bytes interface/static/images/vvr.png | Bin 0 -> 5300 bytes interface/templates/base.html | 26 +- interface/templates/index.html | 418 +++++++++++++++++--- interface/templates/index.html.old | 142 +++++++ interface/templates/test-site.html | 95 ++++- 31 files changed, 1725 insertions(+), 96 deletions(-) create mode 100644 frontend/css/about-section.css create mode 100644 frontend/css/components.css create mode 100644 frontend/css/explanation-section.css create mode 100644 frontend/css/faq-section.css create mode 100644 frontend/css/hall-of-fame-section.css create mode 100644 frontend/css/news-section.css create mode 100644 frontend/css/test-section.css create mode 100644 frontend/js/carrousel.js create mode 100644 interface/static/fonts/montserrat-400.woff2 create mode 100644 interface/static/fonts/montserrat-500.woff2 create mode 100644 interface/static/fonts/montserrat-700.woff2 create mode 100644 interface/static/fonts/roboto-400.woff2 create mode 100644 interface/static/fonts/roboto-500.woff2 create mode 100644 interface/static/fonts/roboto-700.woff2 create mode 100644 interface/static/images/ncc-wit.png create mode 100644 interface/static/images/ncc.png create mode 100644 interface/static/images/ncsc-wit.png create mode 100644 interface/static/images/ncsc.png create mode 100644 interface/static/images/nlnet-wit.png create mode 100644 interface/static/images/nlnet.png create mode 100644 interface/static/images/surf-wit.png create mode 100644 interface/static/images/surf.png create mode 100644 interface/static/images/vvr-wit.png create mode 100644 interface/static/images/vvr.png create mode 100644 interface/templates/index.html.old diff --git a/frontend/css/about-section.css b/frontend/css/about-section.css new file mode 100644 index 000000000..348221b82 --- /dev/null +++ b/frontend/css/about-section.css @@ -0,0 +1,120 @@ +.about-section { + h2 { + grid-column: span 12; + font: var(--section-header-6); + color: var(--heading-color-2); + padding-bottom: 8px; + + @media (width >= 900px) { + padding-bottom: 24px; + } + } + + p { + grid-column: span 12; + color: var(--heading-color-3); + font: var(--section-header-3); + + @media (width >= 900px) { + grid-column: 1 / 7; + } + + &:nth-of-type(2) { + font: var(--section-body-1); + color: var(--body-color-2); + padding-top: 16px; + + @media (width >= 900px) { + grid-column: 8 / 13; + padding-top: 0; + } + } + } + + > div > a { + display: none; + + @media (width >= 900px) { + grid-column: span 12; + gap: 8px; + display: flex; + align-items: center; + color: var(--button-text-color-2); + font: var(--section-link-1); + justify-self: center; + margin-top: 48px; + border-bottom: 1px solid currentcolor; + } + } +} + +.logo-list { + grid-column: span 12; + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-template-rows: auto; + padding-top: 40px; + justify-content: space-between; + align-items: center; + + @media (width >= 900px) { + grid-template-columns: repeat(5, 1fr); + gap: 100px; + overflow-x: auto; + padding-top: 80px; + scroll-snap-type: x mandatory; + scroll-behavior: smooth; + scrollbar-color: var(--green-500) var(--transparent-100); + scrollbar-width: thin; + padding-bottom: 20px; + + &::-webkit-scrollbar { + height: 6px; + } + + &::-webkit-scrollbar-thumb { + background-color: var(--green-500); + border-radius: 10px; + } + + &::-webkit-scrollbar-track { + background-color: var(--transparent-100); + } + } + + li { + grid-column: span 1; + display: flex; + justify-content: center; + scroll-snap-align: start; + + &:last-child { + display: none; + + @media (width >= 900px) { + display: block; + } + } + } + + img { + max-width: 100%; + transition: 0.3s; + + @media screen and (width >= 900px) { + max-width: initial; + } + + &:first-of-type { + display: var(--image-visible); + } + + &:last-of-type { + display: var(--image-hidden); + } + + &:hover { + opacity: 0.6; + } + } +} \ No newline at end of file diff --git a/frontend/css/components.css b/frontend/css/components.css new file mode 100644 index 000000000..2a3401759 --- /dev/null +++ b/frontend/css/components.css @@ -0,0 +1,302 @@ +.primary-button, +.secondary-button { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 16px; + border-radius: 8px; + justify-content: center; + font: var(--button-link-font-xs); + transition: 0.3s; +} + +.primary-button { + background: var(--button-bg-color-1); + color: var(--button-text-color-1); + + &:hover { + background: var(--button-bg-color-hover-1); + } +} + +.secondary-button { + color: var(--button-text-color-2); + border: 2px solid currentcolor; + + &:hover { + border: 2px solid var(--button-bg-color-hover-2); + } +} + +.primary-rounded-button, +.secondary-rounded-button { + width: 32px; + height: 32px; + fill: var(--button-text-color-1); + color: var(--button-text-color-1); + border-radius: 100%; + padding: 6px; + transition: 0.3s; +} + +.primary-rounded-button { + background: var(--button-bg-color-1); + + &:hover { + background: var(--button-bg-color-hover-1); + } +} + +.secondary-rounded-button { + background: var(--button-bg-color-5); +} + +.test-card-large { + background: var(--card-bg-color-1); + padding: 32px 16px; + border-radius: 8px; + display: flex; + flex-direction: column; + justify-content: space-between; + + + @media (width >= 900px) { + padding: 48px; + } + + h2 { + display: flex; + gap: 16px; + align-items: center; + color: var(--card-heading-color-1); + font: var(--card-header-1); + padding-bottom: 24px; + + svg { + min-width: 32px; + min-height: 32px; + } + } + + form { + display: flex; + flex-direction: column; + + @media (width >= 900px) { + flex-direction: row; + gap: 24px; + } + } + + label { + display: flex; + flex-direction: column; + gap: 4px; + color: var(--card-body-color-1); + font: var(--card-header-5); + padding-bottom: 16px; + + @media (width >= 900px) { + width: 50%; + padding-bottom: 0; + } + } + + input { + padding: 8px 16px; + border-radius: 4px; + background: var(--card-input-bg-color-1); + font: var(--card-input-1); + color: var(--card-body-color-1); + border: 1px solid currentcolor; + + &::placeholder { + color: var(--card-body-color-1); + } + } + + button { + padding: 10px 16px; + + @media (width >= 900px) { + width: 50%; + align-self: end; + height: fit-content; + } + } +} + +.test-card-small { + display: flex; + align-items: center; + grid-column: span 12; + padding: 24px 16px; + background: var(--card-bg-color-1); + border-radius: 8px; + gap: 16px; + justify-content: space-between; + + @media (width >= 900px) { + grid-column: span 4; + grid-row: span 1; + padding: 36px 24px; + } + + .card-container { + display: flex; + gap: 16px; + align-items: center; + } + + .content { + display: flex; + flex-direction: column; + + @media (width >= 900px) { + gap: 8px; + } + + h2, h3 { + color: var(--card-heading-color-1); + font: var(--card-header-4); + } + + p { + color: var(--card-body-color-1); + font: var(--card-body-1); + } + } +} + +.ellipse { + border-style: solid; + border-color: transparent; + position: absolute; + border-radius: 100%; + mask: + /* stylelint-disable-next-line declaration-property-value-no-unknown */ + linear-gradient(#000 0 0) padding-box, + linear-gradient(#000 0 0); + mask-composite: exclude; + z-index: -1; + + &.singular { + width: 636px; + height: 636px; + border-width: 96px; + } +} + +.ellipse-container { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + z-index: -1; + + .ellipse { + border-width: 48px; + + @media (width >= 900px) { + border-width: 96px; + } + + &:nth-of-type(1) { + width: 617.5px; + height: 617.5px; + + @media (width >= 900px) { + width: 1235px; + height: 1235px; + } + } + + &:nth-of-type(2) { + width: 468px; + height: 468px; + + @media (width >= 900px) { + width: 936px; + height: 936px; + } + } + + &:nth-of-type(3) { + width: 318px; + height: 318px; + + @media (width >= 900px) { + width: 636px; + height: 636px; + } + } + } +} + +.news-list { + grid-column: span 12; + display: grid; + grid-template-columns: repeat(1, 1fr); + gap: 24px; + + @media (width >= 900px) { + grid-template-columns: repeat(3, 1fr); + gap: 32px; + } + + li { + grid-column: span 1; + + a { + padding: 16px 24px; + border-radius: 8px; + display: flex; + flex-direction: column; + background: var(--card-bg-color-3); + z-index: 0; + position: relative; + overflow: clip; + height: 100%; + justify-content: space-between; + gap: 24px; + + @media (width >= 900px) { + padding: 24px; + } + + &:hover h3 { + text-decoration: underline; + } + } + + .content { + display: flex; + flex-direction: column; + gap: 8px; + } + } + + /* stylelint-disable-next-line no-descending-specificity */ + h3 { + font: var(--card-header-2); + color: var(--card-heading-color-3); + } + + /* stylelint-disable-next-line no-descending-specificity */ + p { + font: var(--card-body-3); + color: var(--card-body-color-3); + } + + /* stylelint-disable-next-line no-descending-specificity */ + .ellipse { + background: var(--ellipse-color-1); + bottom: -90%; + left: 0; + + @media (width >= 900px) { + left: 0; + bottom: -70%; + } + } +} \ No newline at end of file diff --git a/frontend/css/explanation-section.css b/frontend/css/explanation-section.css new file mode 100644 index 000000000..e1d90607b --- /dev/null +++ b/frontend/css/explanation-section.css @@ -0,0 +1,217 @@ +.explanation-section { + .container { + row-gap: 32px; + align-items: center; + + @media (width >= 900px) { + row-gap: 0; + } + } + + .content { + grid-column: span 12; + display: flex; + flex-direction: column; + gap: 16px; + + @media (width >= 900px) { + grid-column: span 5; + gap: 32px; + } + + h2 { + font: var(--section-header-2); + color: var(--heading-color-1); + } + + h2 span { + color: var(--heading-color-2); + } + + p { + font: var(--section-body-2); + color: var(--body-color-1); + } + } + + .button-container.mobile { + grid-column: span 12; + display: flex; + flex-direction: column; + justify-content: center; + gap: 16px; + + @media (width >= 900px) { + display: none; + } + } + + .button-container.desktop { + display: none; + + @media (width >= 900px) { + display: flex; + flex-direction: row; + gap: 16px; + align-items: center; + } + } + + .button-container p { + text-align: center; + font: var(--section-link-2); + font-weight: 500; + } +} + +.explanation-list { + grid-column: span 12; + display: flex; + overflow-x: auto; + scroll-snap-type: x mandatory; + scroll-behavior: smooth; + gap: 16px; + padding-bottom: 20px; + + @media (scripting: enabled) { + scrollbar-width: none; + -ms-overflow-style: none; + + &::-webkit-scrollbar { + display: none; + } + } + + @media (width >= 900px) { + grid-column: 7 / -1; + gap: 32px; + overflow-x: initial; + display: grid; + grid-template-columns: repeat(6, 1fr); + grid-template-rows: repeat(2, 1fr); + padding-bottom: 0; + } + + li { + flex: 0 0 75%; + scroll-snap-align: start; + padding: 32px 24px; + display: flex; + flex-direction: column; + gap: 8px; + border-radius: 8px; + background: var(--card-bg-color-2); + position: relative; + overflow: clip; + z-index: 0; + + @media (width >= 900px) { + padding: 48px 24px 32px; + } + + .ellipse { + background: var(--ellipse-color-1); + + } + + &:nth-child(1) { + @media (width >= 900px) { + grid-row: 1 / 1; + grid-column: 1 / 4; + } + + .ellipse { + bottom: 0; + left: -60%; + + @media (width >= 900px) { + bottom: -20%; + left: 0; + transform: scaleX(-1); + } + } + } + + &:nth-child(2) { + @media (width >= 900px) { + grid-row: 2 / 2; + grid-column: 1 / 4; + } + + .ellipse { + bottom: 0; + left: -60%; + } + } + + &:nth-child(3) { + @media (width >= 900px) { + grid-row: 1 / 3; + grid-column: 4 / 7; + align-self: center; + } + + .ellipse { + bottom: 0; + left: -60%; + + @media (width >= 900px) { + top: -20%; + right: 0; + transform: scaleY(-1); + left: unset; + } + } + } + } + + h3 { + font: var(--card-header-3); + color: var(--card-heading-color-2); + } + + /* stylelint-disable-next-line no-descending-specificity */ + p { + font: var(--card-body-2); + color: var(--card-body-color-2); + } +} + +.dots { + grid-column: span 12; + display: flex; + justify-content: center; + align-items: center; + gap: 20px; + min-height: 15px; + + @media (width >= 900px) { + display: none; + } + + @media (scripting: none) { + display: none; + } +} + +.dot { + width: 8px; + height: 8px; + background-color: var(--green-400); + border-radius: 50%; + transition: background-color 0.3s; + display: flex; + align-items: center; + justify-content: center; + + &.active { + background-color: var(--orange-300); + width: 15px; + height: 15px; + } + + & button { + height: 100%; + width: 100%; + } +} \ No newline at end of file diff --git a/frontend/css/faq-section.css b/frontend/css/faq-section.css new file mode 100644 index 000000000..cbc84f7bc --- /dev/null +++ b/frontend/css/faq-section.css @@ -0,0 +1,183 @@ +.faq-section { + overflow: clip; + background: linear-gradient(to bottom, var(--bg-color-2) 65%, transparent 65%); + margin-bottom: 40px; + + @media (width >= 900px) { + margin-bottom: 80px; + background: linear-gradient(to right, var(--bg-color-2) 80%, transparent 80%); + } + + .container { + position: relative; + z-index: 0; + padding-block: 32px; + + @media (width >= 900px) { + padding-block: 64px; + } + + h2 { + grid-column: span 12; + padding-bottom: 24px; + font: var(--section-header-2); + color: var(--heading-color-1); + + @media (width >= 900px) { + grid-column: span 7; + padding-bottom: 40px; + } + } + + > a { + grid-column: span 12; + margin-block: 16px 32px; + justify-self: center; + + @media (width >= 900px) { + grid-column: span 7; + justify-self: start; + margin-block: 24px 0; + } + } + } + + .ellipse-container { + display: none; + bottom: 60%; + z-index: -1; + + @media (width >= 900px) { + bottom: -5%; + left: -10%; + display: flex; + } + + .ellipse { + background: var(--ellipse-color-1); + } + } +} + +.faq-item { + grid-column: span 12; + margin-bottom: 8px; + background: var(--accordion-bg-color); + border-radius: 8px; + appearance: none; + + @media (width >= 900px) { + grid-column: span 7; + margin-bottom: 16px; + } + + p { + padding: 0 16px 16px; + font: var(--accordion-body-1); + color: var(--accordion-body-color); + + @media (prefers-reduced-motion: no-preference) { + @supports (transition-behavior: allow-discrete) { + transition: display 0.5s allow-discrete, opacity 0.5s allow-discrete; + opacity: 0; + } + } + } + + &[open] { + p { + @media (prefers-reduced-motion: no-preference) { + @supports (transition-behavior: allow-discrete) { + opacity: 1; + + @starting-style { + opacity: 0; + } + } + } + } + + svg { + transform: rotate(180deg); + } + } + + summary { + cursor: pointer; + padding: 16px; + font: var(--accordion-header-1); + color: var(--accordion-heading-color); + list-style: none; + display: flex; + justify-content: space-between; + gap: 24px; + + &::-webkit-details-marker { + display: none; + } + } +} + +.contact-card { + grid-column: span 12; + padding: 32px 16px; + background: var(--card-bg-color-4); + border-radius: 8px; + align-self: start; + + @media (width >= 900px) { + grid-column: 9 / 13; + grid-row: 1 / 8; + padding: 32px; + } + + h3 { + font: var(--card-header-1); + color: var(--card-heading-color-4); + } + + /* stylelint-disable-next-line no-descending-specificity */ + > p { + font: var(--card-body-1); + color: var(--card-body-color-4); + padding-block: 8px 16px; + + @media (width >= 900px) { + padding-block: 16px 32px + } + } + + ul { + display: flex; + gap: 16px; + flex-direction: column; + } + + li { + /* stylelint-disable-next-line no-descending-specificity */ + a { + background: var(--button-bg-color-3); + border-radius: 8px; + padding: 16px; + color: inherit; + display: flex; + justify-content: space-between; + align-items: center; + } + + h4 { + display: flex; + gap: 8px; + align-items: center; + padding-bottom: 8px; + font: var(--card-header-3); + color: var(--card-heading-color-4); + } + + /* stylelint-disable-next-line no-descending-specificity */ + p { + font: var(--card-body-1); + color: var(--card-body-color-4); + } + } +} \ No newline at end of file diff --git a/frontend/css/global.css b/frontend/css/global.css index 09c16ce65..4379f4ec8 100644 --- a/frontend/css/global.css +++ b/frontend/css/global.css @@ -4,7 +4,7 @@ font-family: Montserrat; font-style: normal; font-weight: 400; - src: url('/assets/fonts/montserrat-400.woff2') format('woff2'); + src: url('/static/fonts/montserrat-400.woff2') format('woff2'); } /* Montserrat-500 */ @@ -13,7 +13,7 @@ font-family: Montserrat; font-style: normal; font-weight: 500; - src: url('/assets/fonts/montserrat-500.woff2') format('woff2'); + src: url('/static/fonts/montserrat-500.woff2') format('woff2'); } /* Montserrat-700 */ @@ -22,7 +22,7 @@ font-family: Montserrat; font-style: normal; font-weight: 700; - src: url('/assets/fonts/montserrat-700.woff2') format('woff2'); + src: url('/static/fonts/montserrat-700.woff2') format('woff2'); } /* Roboto-400 */ @@ -31,7 +31,7 @@ font-family: Roboto; font-style: normal; font-weight: 400; - src: url('/assets/fonts/roboto-400.woff2') format('woff2'); + src: url('/static/fonts/roboto-400.woff2') format('woff2'); } /* Roboto-500 */ @@ -40,7 +40,7 @@ font-family: Roboto; font-style: normal; font-weight: 500; - src: url('/assets/fonts/roboto-500.woff2') format('woff2'); + src: url('/static/fonts/roboto-500.woff2') format('woff2'); } /* Roboto-700 */ @@ -49,7 +49,7 @@ font-family: Roboto; font-style: normal; font-weight: 700; - src: url('/assets/fonts/roboto-700.woff2') format('woff2'); + src: url('/static/fonts/roboto-700.woff2') format('woff2'); } * { @@ -60,7 +60,7 @@ body { font-family: Montserrat, sans-serif; - background-color: var(--primary-bg-color); + background-color: var(--bg-color-1); } main { @@ -68,16 +68,11 @@ main { flex-direction: column; gap: 40px; - @media (min-width: 900px) { + @media (width >= 900px) { gap: 80px; } } -section { - padding-left: 16px; - padding-right: 16px; -} - ul { list-style: none; } @@ -109,7 +104,7 @@ section > .container { left: -9999px; z-index: 999; padding: 16px; - background-color: #000; + background-color: var(--black-100); color: #FFF; opacity: 0; } @@ -128,4 +123,13 @@ body:has(.nav-controls.active) { @media (scripting: enabled) and (width <= 900px) { overflow: clip; } +} + +svg { + min-width: 24px; + min-height: 24px; +} + +.block.wide { + display: none; } \ No newline at end of file diff --git a/frontend/css/hall-of-fame-section.css b/frontend/css/hall-of-fame-section.css new file mode 100644 index 000000000..45561fcdb --- /dev/null +++ b/frontend/css/hall-of-fame-section.css @@ -0,0 +1,74 @@ +.hall-of-fame-section { + background: var(--bg-color-2); + border-radius: 16px; + overflow: clip; + margin: 0 16px; + + .container { + row-gap: 24px; + position: relative; + z-index: 0; + padding-block: 32px; + + @media (width >= 900px) { + row-gap: 48px; + padding-block: 64px; + } + + .button-container { + grid-column: span 12; + display: flex; + flex-direction: column; + justify-content: center; + gap: 8px; + + @media (width >= 900px) { + flex-direction: row; + gap: 24px; + } + } + } + + .content { + grid-column: span 12; + display: flex; + gap: 8px; + flex-direction: column; + text-align: center; + + @media (width >= 900px) { + grid-column: 3 / 11; + gap: 16px; + } + + h2 { + font: var(--section-header-6); + color: var(--heading-color-2); + } + + p { + font: var(--section-header-5); + color: var(--heading-color-3); + } + + span { + color: var(--heading-color-2); + } + } + + .ellipse-container { + display: none; + bottom: 60%; + + @media (width >= 900px) { + bottom: -25%; + right: -10%; + display: flex; + } + + .ellipse { + transform: scaleX(-1); + background: var(--ellipse-color-1); + } + } +} \ No newline at end of file diff --git a/frontend/css/header.css b/frontend/css/header.css index 83f28f3ed..1f9b50617 100644 --- a/frontend/css/header.css +++ b/frontend/css/header.css @@ -18,7 +18,7 @@ header { gap: 16px; @media (width >= 900px) { - padding-block: 36px; + padding: 36px 16px; } &:has(.active) { diff --git a/frontend/css/news-section.css b/frontend/css/news-section.css new file mode 100644 index 000000000..d3117545e --- /dev/null +++ b/frontend/css/news-section.css @@ -0,0 +1,21 @@ +.news-section { + .container { + gap: 24px; + + @media (width >= 900px) { + gap: 48px; + } + + h2 { + grid-column: span 12; + font: var(--section-header-1); + color: var(--heading-color-1); + justify-self: center; + } + + > a { + grid-column: span 12; + justify-self: center; + } + } +} \ No newline at end of file diff --git a/frontend/css/test-section.css b/frontend/css/test-section.css new file mode 100644 index 000000000..ca316ec02 --- /dev/null +++ b/frontend/css/test-section.css @@ -0,0 +1,152 @@ +.test-section { + background: var(--bg-color-2); + overflow: clip; + + @media (width >= 900px) { + border-radius: 16px; + margin: 16px 16px 0; + } + + .container { + row-gap: 8px; + position: relative; + z-index: 0; + padding-block: 40px; + + @media (width >= 900px) { + gap: 24px 32px; + padding-block: 104px; + } + + h1 { + font: var(--page-title); + color: var(--heading-color-1); + grid-column: span 12; + padding-bottom: 8px; + } + } + + .ellipse-container { + bottom: 60%; + + @media (width >= 900px) { + bottom: -25%; + left: -10%; + } + + .ellipse { + background: var(--ellipse-color-1); + } + } +} + +.test-card-large { + grid-column: span 12; + + @media (width >= 900px) { + grid-column: span 8; + grid-row: span 2; + } + + a { + display: none; + margin-top: 24px; + align-items: center; + gap: 16px; + color: var(--card-body-color-1); + font: var(--section-link-2); + width: fit-content; + border-bottom: 1px solid var(--transparent-100); + transition: 0.3s; + + &:hover { + border-bottom: 1px solid currentcolor; + } + + @media (width >= 900px) { + display: flex; + } + } +} + +.test-section.test-page { + h1 { + @media (width >= 900px) { + grid-column: 2 / 12; + } + } + + .test-card-large { + @media (width >= 900px) { + grid-column: 2 / 12; + } + } + + ul { + display: none; + gap: 48px; + padding-top: 24px;; + + @media (width >= 900px) { + display: flex; + } + } + + li { + display: flex; + align-items: center; + gap: 16px; + color: var(--card-body-color-1); + font: var(--section-link-2); + + svg { + border-radius: 100%; + padding: 4px; + min-width: 24px; + min-height: 24px; + background: var(--green-100); + } + } +} + +.test-section.secondary.test-page { + border-radius: 16px; + margin: 0 16px 40px; + + @media (width >= 900px) { + margin: 0 16px 80px; + } + + .container { + row-gap: 24px; + padding-block: 32px; + + @media (width >= 900px) { + row-gap: 32px; + padding-block: 48px; + } + } + + h2 { + grid-column: span 12; + text-align: center; + font: var(--section-header-2); + color: var(--heading-color-1); + + @media (width >= 900px) { + grid-column: 2 / 12; + } + } + + .test-card-small { + grid-column: span 12; + + @media (width >= 900px) { + grid-column: 2 / 7; + + &:nth-of-type(2) { + grid-column: 7 / 12; + } + } + } +} \ No newline at end of file diff --git a/frontend/css/variables.css b/frontend/css/variables.css index 6a8738a55..aee053089 100644 --- a/frontend/css/variables.css +++ b/frontend/css/variables.css @@ -82,6 +82,7 @@ --card-header-5: var(--heading-font-xxs); --card-body-1: var(--body-font-xxs); --card-body-2: var(--body-font-xxs); + --card-body-3: var(--body-font-xs); --card-input-1: var(--body-font-s); /* ACCORDION FONTS MOBILE */ @@ -122,6 +123,7 @@ --card-header-5: var(--heading-font-xxs); --card-body-1: var(--body-font-xs); --card-body-2: var(--body-font-xxs); + --card-body-3: var(--body-font-xs); --card-input-1: var(--body-font-s); /* ACCORDION FONTS DESKTOP */ @@ -166,8 +168,10 @@ /* BUTTON COLORS LIGHTMODE */ --button-bg-color-1: var(--orange-300); + --button-bg-color-hover-1: var(--orange-200); --button-text-color-1: var(--black-200); --button-bg-color-2: var(--transparent-100); + --button-bg-color-hover-2: var(--green-400); --button-text-color-2: var(--green-500); --button-bg-color-3: var(--green-500); --button-text-color-3: var(--white-100); @@ -250,8 +254,10 @@ /* BUTTON COLORS DARKMODE */ --button-bg-color-1: var(--orange-300); + --button-bg-color-hover-1: var(--orange-200); --button-text-color-1: var(--black-200); --button-bg-color-2: var(--transparent-100); + --button-bg-color-hover-2: var(--green-400); --button-text-color-2: var(--white-100); --button-bg-color-3: var(--black-200); --button-text-color-3: var(--white-100); @@ -278,7 +284,7 @@ --card-body-color-4: var(--white-100); /* ELLIPSES DARKMODE */ - --ellipse-color-1: linear-gradient(135deg,var(--white-100),var(--transparent-200)) border-box; + --ellipse-color-1: linear-gradient(135deg,var(--green-500),var(--green-600)) border-box; --ellipse-color-2: linear-gradient(135deg,var(--orange-200),var(--orange-300)) border-box; --ellipse-color-3: linear-gradient(135deg,var(--orange-200),var(--transparent-400)) border-box; @@ -333,8 +339,10 @@ /* BUTTON COLORS LIGHTMODE */ --button-bg-color-1: var(--orange-300); + --button-bg-color-hover-1: var(--orange-200); --button-text-color-1: var(--black-200); --button-bg-color-2: var(--transparent-100); + --button-bg-color-hover-2: var(--green-400); --button-text-color-2: var(--green-500); --button-bg-color-3: var(--green-500); --button-text-color-3: var(--white-100); @@ -379,7 +387,7 @@ /* IMAGE VISIBILITY LIGHTMODE */ --image-visible: block; - --image-hidden: hidden; + --image-hidden: none; } [data-theme="dark"] { @@ -415,8 +423,10 @@ /* BUTTON COLORS DARKMODE */ --button-bg-color-1: var(--orange-300); + --button-bg-color-hover-1: var(--orange-200); --button-text-color-1: var(--black-200); --button-bg-color-2: var(--transparent-100); + --button-bg-color-hover-2: var(--green-400); --button-text-color-2: var(--white-100); --button-bg-color-3: var(--black-200); --button-text-color-3: var(--white-100); @@ -443,7 +453,7 @@ --card-body-color-4: var(--white-100); /* ELLIPSES DARKMODE */ - --ellipse-color-1: linear-gradient(135deg,var(--white-100),var(--transparent-200)) border-box; + --ellipse-color-1: linear-gradient(135deg,var(--green-500),var(--green-600)) border-box; --ellipse-color-2: linear-gradient(135deg,var(--orange-200),var(--orange-300)) border-box; --ellipse-color-3: linear-gradient(135deg,var(--orange-200),var(--transparent-400)) border-box; @@ -453,7 +463,7 @@ --logo-color-3: var(--white-100); --logo-color-4: var(--white-100); --logo-color-5: var(--green-500); - + /* ACCORDION COLORS DARKMODE */ --accordion-bg-color: var(--black-200); --accordion-heading-color: var(--white-100); diff --git a/frontend/js/carrousel.js b/frontend/js/carrousel.js new file mode 100644 index 000000000..5477b89c2 --- /dev/null +++ b/frontend/js/carrousel.js @@ -0,0 +1,19 @@ +const carousel = document.querySelector('.explanation-list'); +const dots = document.querySelectorAll('.dot'); +const items = document.querySelectorAll('.explanation-list li'); + +carousel.addEventListener('scroll', () => { + let index = [...items].findIndex(item => { + const rect = item.getBoundingClientRect(); + return rect.left >= 0 && rect.left < window.innerWidth / 2; + }); + + dots.forEach(dot => dot.classList.remove('active')); + if (index !== -1) dots[index].classList.add('active'); +}); + +dots.forEach((dot, index) => { + dot.addEventListener('click', () => { + items[index].scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' }); + }); +}); diff --git a/interface/static/fonts/montserrat-400.woff2 b/interface/static/fonts/montserrat-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..62950ac2e4f1be087751f25bc9dfe3a437f2b8a7 GIT binary patch literal 18792 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 literal 0 HcmV?d00001 diff --git a/interface/static/fonts/montserrat-500.woff2 b/interface/static/fonts/montserrat-500.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a431dd5e6c8f2d16acdcab79b13db96c789187e9 GIT binary patch literal 18740 zcmV(@K-Rx^Pew8T0RR9107*0e5&!@I0KU`!07%RL0RR9100000000000000000000 z0000QfjS$3m=YX{BnDtVQ&d4zL;!_M2z&{j6cGptfrvEiBnyQC00A}vBm;^71Rw>4 z90!jx41*{ejI9T7=PNL}6OdJ<+U|^-jfmYgph^kP;n7i1(y7wu|Noq%GRD5C+Yf+d zWrdhROqL-lO9f3%xyOhs)sQMnvtrGP0i`t@2}?cAnoSi#O|=BYnF$$=c2yNtxXuZ$ zoAq~J%vH>EC`8T|m8sUIi{zo_yI{hH7pmVOrG{6K|aHVo3A66BxH}8~AL@ssZ?n*Y_j05f!JP=(9< zz$elUor_mA@#_R0Sky=QrLEqXBb;-zRWh`y&D#Aj;VhaK>fD+$NQ?Dj1Bckok|(1s zG$o(_KvIicM*uwkE&FEs^*!}N&k~9dqcGhYgOMOyRrgH&p7(omkh38w$TRGmM2_-f z$ucH|;-Jau3yE+@wFjw?4tT!b+qD0{yxB`>uBhIGTZF|Z28DXN{nGkdM>_PRe^B`< zr79btwy1SYZG_EWOeR8$T$yS`Up0dzM2LDrQ0JW9^PI`$-Z-Bmv)#Mcot<4`0fHwi zK!^}|1|XB@odK2(PR5=wPVYQ;R^|sU!LR+1!RjASL%-@$ZMuCM?R z5#?EkZoh7t3Ctgu3S5H&laN5Lkw!sCDB&;>LjJ3AbmXpL#N+aSIBGnuMQHY1cNEUT8(T0s*0%D3e zmRJ*%;3h?A^_W$hluG$)2_hUKh-LagG4^s45FBV2rw`Pw62PQrxRTLO-d8VOBJC~PBBgBKs9|maXO&bp(3~opr17waQxZ4VPqYdDyLwrV z>u%MeS8?a7W>Qynda!oaR@Ld!}bN_;xRa0tQjZht=<&;%XV#JH@x~Ey_N#ZXaU``I( zD;JZ>rO|^qAyLD5>Pw>I!2`@W&Vl84djdb#!W-0(iB0jEb(ksD*pNyOJ?waZIZql- z(YPwE-T?EQJbU^~e3rvJz#OE4q6_N~M*2&tG8ameXjFN{DD$T`EH+bko2kE>y2Grx+<1#)mJ zOqHQoW@M426TvDSnU~^iWo;WMjfXnjhA~tVV*nL;I+LVD68qmUSRnAkF|SuYbm*M! z;u2$*(jSE6oXRNWc*VZNKP5k|g_`p-O;^9m%RIJsQ#*Qf-}%(UaKuB$tn?}eGRR^oV_6lC94oo!$AUmKpQL5r z$*ikDme?4nByPz=AhUJqX%WlR#0a{Pm0Y_0%sKQk%$D@rIZLIN)pK?lza1qEbX_G3i3e_E?pw{`lwO@&7t)I51=Cf zEwc)zp7my-g4Zy0BChig$b_5|B5}kD90$#z{0rk2!lVT9*!l>qm2*iU&(#SE;7Cy8 zHijOIRp6VPIW@$rm8W*)j#Xn6B!s;{n22$-$`Xf>RkiE275M)@ml)ewFaZF#t_5QX z3Pi|KtE>cY7rf&v(9BQ>Aj)D2x=#i`0$2fbi$Xv_Gf+x-3jo{&59KVT1(Z^}t^R0f z4C4(@TDer^zv)hV^h!nF22Ue}P^Ja55~&4g-t$MqQi((i0QWO^aLD$AHTHO2A(lQ` zDUJ(p!+M6cykUhJf!-4=7=4rZZ802_+`pBq?oLd6-@;eoslM!ZDAKM^wA4z=2Zum; z$(%BwUCdMJzEC+%A1_&#kV@(Jwha~(cnfY+;cH-|2;jOjYuqa>C~veVEW2{ycC+?YE@$rGc(U{`Mw`AOD>mh29L^Q(ikH*yC8q?u5>tYP;QK- zTcx90f}M(?wxih*B-lz*S%H2gn47FX0XP>5{aTw;Jr4%_vk%KKR2ZoQ8GH#j!7(Wx z14M5pQZKsAx%uL%N7=nv5N-ooX)nt!zzg`|t<$FU&Hl+a;C*EPfT7e)!<>2XOJdb+ z_neG^0d_#LB*Teek()KBdg=)-url-=*;Hxz7Qy8jz-Wp{Z)#$60;|Lp%~NdF=x-?E z+CtjMI7dFAg<5yc22e2lyi=)_wwYL98PMX-IcK2xp{3&Hkw&$1BXqZw6YEr=kbQ7z zZjm2GMUtB_QNEz@J;$!2Y4@#0wJtN#Hu%Y}U%mIhV^)r5m+QU(u-_c4 za)pbDOUqxh#=pgZL|n#=RC%5CH$szhuqtX(6HK;QhV0RcAe4R|%hPN<gyW za;8PcGwX6^Ou@@loaSjG1>|L+8Imer_rKVmJql*Uk4l#kh{XH#o$E)*gX_vt%;D0& zT{INoSY@qh_Yn}gpap9VUfgtywysIk+Qb|-1OB`C+GRI1-EvpYeJ`cn__EozZ+rau zz1P40gM)*E^0pbi5F>(7i;P)dT+ak=l9Fcp4u&4YzOLxz`Kx;&LjqrxhTZDI{-V5|$=lbXqRNjXCga+LF8BJwH z77k%3@F4(ySiJF|6%rH>a3Rp*hOep>9QfB4IPDA-f#|l#T^1DrLNpNYaEFJxN(-yf zlEQ%Sgv1X-YrJ3(K_P}lhF!0I3ehDcsj%k><`w$bq*x+N3i!B|O;U0iw zzJ~5|WwrFJsi2>=Dy@$*HCgwi$h%uVULsP(so zIWFEaW z`@{C*PR;|gAFQ6cXoFr|UW=^60(N-%NqkLAQE?C=Uy9!V9NVgd($ZJOyfpSL-He;d zuxQ$*1#1%BQYFKF$IsL&%{&QBnd}Vq60lYOMsXLvahhQ*czf zBqaNQsi8*?VT~_Dy4iTrW7LSGshw3vXS@FPxEEewbD@D4B@LM71nJ2pIHwh}##kle zy~&#fJc_Hc_CFV(4RiNsO#39!a9i*<84orR0LSpm zNb$1hG*Sl{yRoq|L>37o+7}El+i>Vy?B~gX(;&)*v0u4UsFCMo2-`9<;WZr4PwJI6NiHwlRBZX&c>Gu-HbM51_M-*Ij&GR6H_>1Y zb|}#O!CfdtxJj(7VIR&7aG0x##`@v@FzByH#s@1mtIiNQZ}}YBb^Q* zRA~&QXF)2O0-=P016LK3AKc(6Z`uQc3I-Ko#7ZWpAW$?H+~B;p;p^auC z5~D5;0H|mlT5lvEdI4w`R!}=f!i?Ly0oHQdgj@} zH#46+^Kd>(LTi@4?H8@t|MTJC?<<-!8h4S1}TdH4QxOf=oPpe z-d|-y@+Zy|r~6U&f_n8Y=sYv{l1_i^kDk5ze7bG%b5IJxt;N8&p0lTcTOTou?iTB7 z_(I4d<4Ym^>;9Oq8)lO{{QU-yebJU$PD`}AJ8mbl{|bH3k^!g30q%t$%Ys?C{Q=yq z(mv=_8tfagy$jvuxiZnjVhwkMIQNcLWxmj&fc6@#9m;CSQ&MT?`n)CGwG>`xQ(DGm zF`bju(k#B)jgdfWzaO!N^bz3jAn0DT#_tXb_rVXK*Kw2|-QFPXv!*8gtYd+!2X(tO zd{>AehHpr+3QgQ#A=J8TcgeS60OL1j#M3(6G|Zrgwfc)axRm6b-nw?qqwTt%abf2E zSEHJV3o9I;AAI=oB#-O8u%LIMaWw5zExyQaq7JUbPlvHwrkPTPj4D~%uR|RQB=B6o zj#@cPvIE$WaJ=jRO5v88K($Brxw&A{-gR50op~cn4>BmbpSUCR{9JM(oO8^6vATnA zANQ(Bw>j!kH!uOnCJb@ckSj$MG)@vHATVL@9bu4e0`rEHzNtj<)Ke)!lYjz4eCmk${va5v8wwNDlpprAk9emx+?45LToJ z#mR{@zyMgWVw4gkBubScl_}$<+(5KJ2ICoG2$i9RQyXCfxsgV3Gujw>iMmE z@;>In2ad|eN1q5ZX(I65PXfRF7U+*Z4C$0ktg*$0g+)R*IJmeNJUl{t0&+qk1Th(g zf`S_*6+}&q=1xeV{fBt(aL1BU0!uxXVd!TmiUu_v&BGxtri?7a$cXq{vegRa((6A}3;amT#1Dsiitnsg675Xthy?zt9n(m_?nA)RRx*K*pFPLsvFM!nu^ueN05mD=>vq7}4bfa`m7ZW>ySYSV3f8apiAm9+-P~b4& zNZ=^obl_|tE(m~tiE5IB_(3qLwCbn8zC>;w&h|%iW?{&7RMKX%wiC}CvJ=(+)cqc@ zTjLL+9QGiw`&mg$I0|2TV3gn33!G#Y;l+&+~ za3cjm42%GUL}RE%a_dr`%2gA}m8M+IiOfqu^wC5F-!-cB-7I4i=*No0fe!UJuZ;=N zMtyghk+1{^(hCB(7p}*%{E+E`F=U2?z%8~PLj%Ph4*`)v%osZh-nYnV;1f+&YS-8# z8QdJL`O-DNnit8*5$DpvFCJ%lIxqCYSXV01=;9F3KI8=Kvxs-`vS7-YY0&9la#5^E z+V1wF2pKvchHQjWWNFKl3ebI2 z&Rc;NYloJgw&G`2Z5u%tI-}mX!$18G4dzfuh~FxCr0LIhk4HSCiC47o4jZ57;v2uT ziho)sAc4^c=twf!3z3e#v~(ExqgBE`Bt&w&L_9>p@+ij=Z2XD#3U-YK&DQU5r}ZX5 zLXGr~Y{Wm7cx$l)4rF!AR}`q5s~@oEx$YbzI5zrYb{#ksI0FC&??$mu4OXrb=Q{<4 zgL7s%Ko0BkM4*n@AK6Foi{XV{F%wLP6wZH7NpK0@7Py?tPGV=X9;}wtvHolb z+kuT`xBKXP=KCzvNp*^r7BB_Ns)H&!18tvJ#~ubmBRCJ5#j07&Qx9g_e-gZ4Bd{NU zp6&zq|4nnQIST;){d!NFu*v>_Z{AyIueI`g^Tq0mCEU|J|MK1h2w*4RIE?{79#0j3 zJZhq?KRBwg-P`iCqwYHCjXxf^=b}rheRR-S2h=#^uy4Nj%H=+UhfhdMPC-ea43cz4X>c0*6#-(q+g}WPoBN%9I;qupx#T z;j)*m_+htW8ol${d#^l7n8!w|_tTSf^vriV>`Ys~J#-@Bwi~0tR$FXy91SCJP#9bS zG7@g2G~9XcB%;%rpH>3-`z%11U?Dbg$;c z6q|)Su4^>q(YO(+bq>o+(JZ3TgEwg^5d|fwgBG{sucTJZliKnSZAUaN6QEDcu>?%= zUD_mk*|3%TGLBy78CA!YWu?tYF4!7p;Yl(j9Iq5TP(nEZ4=(h+&lyopBM@_I-&c15 zNn971X4swmC3%|yL`DQ#^87u~#scTqMEw(CJ2fn${^WfwPiWjMn^>ov2)a^?FZz=% zUko;qBM`=aF(khdQW75fv}R!}5mJYTz=M!S%qTj`&WUjOqbBQK=?%eS(Cf-FLXzZ? zYac=#nNdL=B@2}5xTIxAd7W$K+}?H6^+W@%fe;cK~{+pvOll1r21cgz>G8Iutb3*6Hjc2bVV27>&YbmvW}c+qeT78i~D76QYX zyR0xCpI=9(T_@^s+^rc#L9$A)GkC*c!Z>->4o`)5K`_=oZ2xo?de_Y);gw;ZmM+yx zb&8@VBTdFlU&GU)Dcw`SX_teJ7Uk-;&jFKz1$RTw0tS~4KBz?(mlX7>T7K=Os;e!% z!id<0^S?gQn<~G#{dfd}ado)h^UH9IVFa-A^HBHpLqv9eikMqk(NU47+exykYB@1Bhq`;h=#}bZcin*AF3+4hz2v> z==cKgOJdmPj*Ey-4K{oHm#rnBu7T^gyj{)m+O)9&=e61?LVICHTPYKi7!SzxB zfga%mESZRe2or9yeJ2Ge>z&6^y*I;-C#xlmp9N0E6Vv~ z7H163dB<{X5qXtVM0}fXn3?uSk6SOXJd2}~VfQ_`LWkKTb7MWY8g9`Z$AVmHicW(I zE>9R!`{R&UkgQHF@;(ZlLSRY1Z4FT?M(fzQVB8h&)rW2VM#zaeIBUQFN*g#s(ivT` zEg(sFSfOR0=nV}4g94~AOl%4qXLz?ehhQn#YOuj(&?U!l1u>^i7Zyb2K2yN~X(>~) z^$j@!lwi2dOyIfMUL9q+&6y4kmb}o#M(o$IYnZNzoxQlMv$+ga)TO4jqba}$#sJy= zj#U_a>m`cg^<)a?U7FsP2?~l_bj%Iw)bR;0An0Qe4kng^v%_da769*bGzObEw z+_nc{j_9y8!d(O!!WKUmgRGWGz-)*NfA-jbz7nd13i~RB#3QbK!C5v2G+01&0y2Sw zQY#{anU^a73n4PZK{bcY0eWSsY~i9$2)qn}<&c1Qpu8mu zkw6H6a*Y_ozY-8PzPTn||3v5%xO_C~Rh@<=<3}VcC+fcM31HvuyDcyV_dK?(abs*6 zFeJM*JL6r3F_D|D7vmimG|#wclPwOAhD!^o4~E3d!j=Mez?Bb#)`D>hBd!RphKJA@ zt${k&o7)Yf50&^ZwCbZ^1#(5~0!WNnz+KTDS?g z4$q__R?uuAdEDTYR{Y(y<(xXi7ByV3iRaSljogY60K*BcO1dhHy%R9^U~~f>u0|KB zmSi1UX=&*6wfu<(SC`Zv=LQqK#S)c>ozQ2^WT$3#9R5_M0+YAlT%e8%r?mAz2O|}E zEJE|u1nwWa%r$^6-Y!oU#x>?mf%~r0R^wJEWe*a?sjs%ORe370>Tu}x69mcU3(QT1 z*8v9HfF-~C-{k-Zg>}a`wx11~--7G*4BsgSM7@ff@SbvC_-FDR0OkB&5K)X-$_Cv0 zb*K#cc-uwyrfYoHx_tia;C^61&mwqI#^Jd@IwB>tyvI?_QIl4U_^N!3(OVE6O+Jpt znKr@|m4}L!23WWHJ)@TpxRmPPTOK%V!<^biz>I$n+!NN1%PdTI~-T(+v_I42(0J;x8=}eKO4OSGL}V zA;bsLHxA%CbU*Lah`SMgn~Ge@9a0IBZSYpITwdiTb)_6b!f!zfOmjI$i>=!FNAxBT zExKcI&L^SEg>mwZSFFo`4Equgmqf0qs{87cPO#;sVZ8RF=z~!rg3M4N&vn20fS}%D z8X(&N>N=1u!Sv4n^WFlC?gWNy01EEskbxrzlJjW5cK`&06p31hw?Kl~4k&>h1j4dE zD9Ca|3o7f01JSM<#l;0Q93Lhz8ET{`5Y)i02?-}XTt7caP(M`Y8x)UXxk5PJ%Y*a} z&pH6%zd)fTIU$mRkSi*9ibDXcE;7)Ood=y4;aSIB)VBlF`67_V0hVth4Jdk;DrFPG zzEiNl*{Cs*ceyZ{4HP*Ttg?jg(4u6FW%OroLH0%w$AX3&q8cL=bNh9@cEs|ts|US z0?XbxpH8Z^n~(^;r@zksm|fBZyPgP} zj!6trO8!ON2D&wp7-mcocJfnT8^ARJDED-=i!-F4kJ-VOp#{}Yf+TlE7iqJfsC9$X zRJ5DXl!7S0k>sgZlRV0iA}T6xcpli&E{U9>E}H%>xssl!lrZQkwIKQ?9CMv4ApPPf zrFWP{ahA@tY#Im{m90%9Sg4ay5j&{`1?878!VESC5vu6HYhgV#AdaE!3h9FI)ZLQ6 zs&cHxg1P7#!noaf*d|w=SGfzCbtcmU)M(zNn1;f03b~D8<0Mqc^CY&K!UE8XHS%LJ zc0L1^in9J_ro;}kBxu?^h+A0%FkgtpXX$*G7yGeO0v!ub^GC2l-yz?tRZF$ z56J4BiYHG1#`&sx+mdc20ho19Sg3FTvSS8XE}yNVlCQ>NnaU?}DW?gC1?i^6CTy2J zyme^u0XtRzj^}n&c`Ny}I?Uk@2hFjb)G?QTUAGpFP%1HGthUbINu)+LOQMyp2hFII zLDmCPHI`yNl#;hR`CkaFNyaSqtbFbuVeu)AorrAWBfQQfV+W)aEmA1GfKd3{8AfE( z5p8FEw5mCXuKB!)7t9D;D7rFWYqFv;nxzUm)i%*gK7YgAB~=-FIYs~tsmDw6+o+3Rw-UB^)3v&bX27)h|yMi}_Y7zD{S z5?fK@l2aB8=z($LM`HgaX-W4A4ZBm>iw;^HRSnfqDD<|At z`Z`-FVJ0NO)B9hD*U_S#XHT^7GE0$8B8*{~s(XkJb%FOIND@R}pB*@n1Qlk!gOlkD zY}1Z0G;zM$^enP)UTtTaq9Hx6I8=Rm=oc-uO#^j)`J(RQL9tGj6MWcd=zjz!^7mr85rFBvpiJHeLC{5FJ5*`5DP9$83>JS=iaRi8f;_~_5RY>V0X^=|a%Q0nUQ z?Rx;iY8I*i=zMD7G*sH<>7@5hD;OID(iUFCVBkcmy@77LV3T%AMRYSmM@Jna*{;le zB?H>do1$^nS2V#Hz*k{|7RN|iixf;3Q`vCz7(Y6SdZDcxCK3jYqkax5?)jE~O0syg zrr_#DwaZ~)fxNAd{hzd45OCN=;$s-z1K2=vMPlo)t|b_S%#6G~_S+p?y3oNH&aIU;Rj`xe@UH4sKzKx#TX~fP zty*l+kZ+TfoQMi-yTEyz(TE*5c>*VT8DDU}gfHr{AajW>w~H_!fwK{i5Ird_G1>Km z7;3E=ZYkGEF8t3s9wf@gOn3x+(mCX>ZpHB>7ZzlG1#Q#$u)1IM=IWD>fbc}9y8uvO zO@)P@TjlZ=lVeE-3P0?Y$g_6k^+w^E#OBy$qflRf3muPsY8q5)k^M;lW53&bCcu8y znk(Cnjmtb5IJMiy(8aGvShU=EDk+kKFfOleMbN8`C!K8d3pMY7%tFo7B;1PX0PWSa z%(yjeI>VC(^qJ+=2M=z}mq$qL@IPIfRa>v-`o(~4R6gp9$=f$|RZWir@ExonM1~mjuYJHW&ny z9#mM-qN}LPjNrYMb7dv3#<>eqa?+(ui?A=}X+5q>qxhWxl#JwiT+ZYfPZ2vjhAT={ zk^}SVJAaBWV5$h9p9aw<6%RAV)M21wj(0jR;S5gsY@v%Nb|Ikg1!)p4CsKgs zP*L$}L`dLCG-~+rP65WfYa|if}+=LmBfnc zu=sT^2(OgI*S14OeJN%4i;L6QO24IXKI@^mS>TLH%ewONtWo_u_L0lRN<6$usTE;z^x;#-8mWKD zOAp_N)}xPUHEsW$>H6cRFG7y=rbna&%<;)@U$hJaxc+c0I@9trSQLJyXgt$RnG{ea znRiq0X&Md|RUL1OCtlw2spsx1@SX(g?z3OZnU%N5gD{8`MnShrSDDC15QRS~RL~7+ zp_(wHwimX2Hn9+nYYj#`aQK_x1z%VT!|U%_?TNz(CI8A=4?H}>EptBewwNW-7bFrsd)DGt}bL$yZ@=!TzsR|IU2y7BNU3y z$=CO_oL+geJOD?#qLCYJUqXp>$G{OLI8{|tXSe0kjfBEG)jz$v#mCbdI{2O~LGFSF zZRZ={4$h;nS3fN|m&h%@JP$cn+u0QMU80R2jf3vwJp^2odxYR3FK~AUQcpnExDC1;Z97`ePfc_mpU52E&EP4L9UQ)t1*x1Omv2rM2*cuE0l8L90&Zm}Ab?>79i|DOL-dsyG?X?eFT! z-QjEZABf);-DGu+;sNIf9TB}P-q6OHIVZe2Gl4jJeLm-!30>x`*VNy(4GV>!*Na*C z*Pny~qhe3x{*c!feJcK})~|D}(bvv6nX2{w+6eWX!1X&Dzx^?$!*~z%e`_NYulG~C z!uYTX1e+~F5rRRvI;U>iJhUXpxUZ`Hd;Tik_t*WO)eT=JpxXzfh9Tz5Z*1}pu7m7G zFICQL`ocp=R;MT)A>@KJaB5VOF_xKgEd13XMW*-C*-WltMnkeD)o^E>S~Zdy(|{k3 zf08lrZ~ZXMO#gKI&3oFWM>>j#gl6-6eBtft7tJ0sp zHvM(LEB>lwIWWXta36bHsvZAxKm4@>M=BiWjV_y8mSlX!cW)l#n0rUMdo5RAp-=E- zE=VkJW`y_&=Mj|2;lHQV5HdQ+D$QxYKUP|ja0>+Xj1WKWJnWXTgkQsM95t*nx@<1F zv^#Igl+cx~x^G^`n+Qjnn{EDmcdJuHd*`|3*g;?T0U+(i=TZVpR~5X`+ZM>}-{|oWPAJ zw9u~uYRW&%?yLlZ&N2JL`0XXVrJPEc$|Zv#tSDfHLWx5%TNbhZ`&{zxy<(g@o}FI+ zI|-~rtM72ywfT0nQ(ur*mN`{v^1tx!oZyFdPDp0Ev<%~-${30UnB!sQD2Y>qGy zJT%#Rd=j{*=s2gVg5!?Ln8W8EvD?N&SFXD9Y3DVai^aH4qEz@LVnS7=mWSdHBJ(ll z{YZ}(bVmhJnFw=_nTCFmsTG}*x~Z=|c5Xa`1KT-lN^lgy@KTdL8;_^@mvoWc^V2Ww zicenq?&z4sHRSWV2FJ{PN1w(v5Rcgg`d~P$4vM9IrBdn-iqz_mi2M+S#321LU*uj_ zLQrd=S=%0H&hz{pzeDNe3;ep(AT7<4fczZ$UpX532E@NxD#^{7_FLs{K2JXG~ItPKTceus~+*Mic41|>g1Vvy3>PGpkj9CyX$SFH)DZ?tuxX+?+(gvqJbXY6H ztx2nP-4|ahsq;y)MnCgB>Fyb#Y$b+XcbYYNM`w?p`QJ=eJ2SoSU4@37`T0MQFD`NG z`@~62)G}AP_(!X7>kDW8XYddAzR6f8;%gz6UEz16<5z=xjG~=NZ4#Dpoc*>2_Ww;q2#J|&#>^TysG^9J zD6x?LP<)pFdV}r=J;`}tSoB9IM?o{((JN@+gRZ~?`~XbKlhS)X`7(%rg;yKfUcFfH z?~8MnR)d#MZ%p5PvG}2jllNULy8oi~?CQ+1hiE4r0xO^K!5bc>qi+^I{x2DRo3{89 ze(&9v{HH&FC(rTR zLJZ=7w9V!n;6ET{UW@O)&R@qzeP-L-J(rn&5(qxR)`*K@xR%`2*!bqdi#N=}olVua z5W=J~2*m|T6)upVGN}Z^g-G*@QrQd5@;7AATflYle|4MazCV92>L+uNh&0_~0DdMk zF6@~d97OgjPltjNVJtFXl1(JEA-%MmOu|TLwPDHl(*uqzy8A`B=qzw!X{500wK|R0 zh{4IGEA1Tyw`+n}Nvew*IIFGA*jImj9kMA7u3$VfpogIVt50YN#B7K*WJ|%W`F}cN z}P6k}F|3KB<`TtcpC}m(_q9dE_ z8MDa}TPH~*)=R8$quHL>&>SHmS%+SiwMD`$Hl4o35kj$$UZsxeT`t~}Y89b(n~6S= zo`ChH$N=Q^4M66I9@Y~BBJdT{oT{$j`tNhBp3Kg(nG)E z$J15`P$oJ9I;IF%x`du^#)fE9wid+o_CKBf$?tpa{cYw<>=;Ps4XqUzsJ6KbFZLQ< zTvZkO@bvO!(M9PSfsauYYNAb_L4n+`(1G}vV_aTWo*6yW)O%ZeR8C{9+WqKOwIORX z=!+E{7-Oq~MU`&B+?eLw&= zyC#3PmklnE;lhDp!Fbqxg<_46UTO7vy;h&nsqd4=4}u*I%vHXbX?ozgxodSmYI^jb ze3V4_QPp&ed&Mm0Ai=O*!Fc|+bsq_9b>Ib3lcjEdaL8XTfg?<&QX`X1UHkYlofX>M z{U69pyVlr(07Q9GmmH%ufef5ww!eF&}N5~&8(S0i? z-4kdRJdm#==!M|w>wr$s2#D2=A3 zQdHoh`}w!@UKpLB%e{KLA7l1{#ZFs&s%a(sgb5dyb+j-A6uS0u8 zh+id`o_T279#$J~$GQt6Gc=(Wu^SVDXHn(W30*5pb5N*G8a+p3+m#yo=*~Oq0{ah< zZ`?_xOx;9o*fB<-R#-!xIR46=)bgsp)dR;OA7WTpK(jp z;}2ln*th#dWQ6WGM_)kAtvP&m+~$Esk%A56MfG}D$qnC;>%RkrWJ)8I%AqunsMKlz zH-=Y);k)E(_aKcEHrakOf&ZUuNEyGLHjLlGiL}03yD<5dGCvY9Pa4)3skAO(`1U^w z3}5R~`JMK9J=g-JT-!)A)|M#?9xvvV;0;_i@9oAq&V$Pz*si_tZJwLkfCJJ=oXp4G zuT&mhex&Nkd(0=}60Z;QEKtfd9D-9*rYvASj~8^EJaKn?VCjGg{A&FB#66tszejVDHUsA3_MY2&KC$cku5*AL_o?qv_R4PFR{-Kd*J=B@iv3uzXg|8Xa+kHc^Q3wGu>C-5R9Fev5ZGonJA79UPL6j8 zR*~s<)g(+2c&ewkPnAqw3wL+GyQ4Afp0194a8lY{^IY!2P`&GEcdyMn{i4|6{@wn$XCMynx;BD>T>{3DK>JiN+Avog?6^Bg5&5eew5NyjROY=SR=O&Iu~ zz{F#4u3wOS>yfL_tN{MgVjZ>c=#4#6bysG2l4cFsA#gLD%Ra#wC_h*$u{%TpDtpUK z6O(VDNK_^-*o(bm)w#TClgFdpR;Vu+ zTr0KN`lZ1Lv^K06?vr}kjX9+{V>B95_VP0_A{v#}jD|9&yOUU)g&0F!rqerUn8 z@cwbf@T56w%+*&|Awis^XlaRu9++qG_&8>;y=4RPpgNo9)gH=>fjZNHy;^H)Ru3af zkgInt8v(!0ABsG@Qn^j0(4{T^q_2;+U?x+b??l}?PI<#Qhv;lwqwI=kup8w`z4gK$O6w&odZL(wQv! zlhSLR{u|v%lTUU!&B36l!9X_I{?-F2bq8pgdZkrDj=Xg^rSAMP&E+a9m>O?z8Gx$$ zm9HMyQu`R0`BVm4QO~$=b1HWXkRDMU7g>I_R@0AEla4T`0t>K2ds2^mCnNRclA<|rUbWRjw#HA_2}C1ZM=s5Q0JnL2Ktep@wn%pLCO zy}a8-p@wAawzXm!+(TyIb~kE~UlJsDoo1eZYyD@<@@EatT7jB$4P?z}iwBSm$_Ax_ zKAb@q;NLINiTLy>cY$W${q5UtYTUI1^{!R=2_7fjd8?nJm{bb9dRP>G2;eBj1AbWS<-F_1Zvcs~| zoAB0bAS*uLdVPS``>NLhAJ?brJM2dPG8NPTcArjgA2x*S4)xJw!pE70=}-Eb-ma|k z8;C(|Sl`N7QtxP@&Vo8AAzrC07ad+1rJlKt2Bj_}3dU$FbWW{)FgK}J7N++mfcA0J z^Q-Zkosh1ntd}(YQT3K*qBDAa-aLQXUlsKw5k}Nx6Ina+kBK94Efw`rQYZD!CqDJL zKnE9VkI2q+D_8%xugc^WFLm0gS4qunagMZfRnEoS)0>}bE!OyE=bW>UJCmn2FE?6R zxO9!Zj}aSb2&LElc^*w+KS0=N3G=j7gGR1aYVJVjNc*D7xoCwy#qJv1ZyDN#8s8r| zH}iyNEacAXQ~NtNS`(Qsv+tTd)VbD@keH^>m)dK3CllHhpQlb?KWJ4e;;IINo0*~Y z#1rQk!+DhZcoVat8BJx(n$2-f|(!ygB`i zvlm#ij1HV58n4!PFmz<4WXCh^qz&%66z}bwHoX!4^Un*l{HSYaVporuF)pebt1JcG zy~$}M5^4CGr2^X>*;I1rr009fJ$KozBdn?YPb}Abh9(P^@nBxJN^M7awk|bUK=bII zOEz)s)#tZJjY@Z--ivJLO`c5j$PR{0le>tD&5N}RIwpASdXYW|wr ztxnb^({>VLJk`{tlQEBQY=jX-JaKgFjml1%jRcRUQPOI|FaAx~v=Mer+rUe>k3BU` z2tWt8euISjo*ArlX6e4}2%vLUJK=Kex*6sst_rxmNpp1??B$ zb7p^;NyH{odwON*$+;@avzIDhPUh^e=BLH!(#~o3J5xotDPrM)wL6(QjVxbz3>_(>KoAa1`NZit+^K_?jV>riMHw^43&+ z_(~I%>^oh66R_VH;R7nnv6Y>@kHgncdtYU67pNf~1hO3mS{Ect!eRxeCZ33ZfT?yO zpn(hEnbwhz+uCJc(S(PL0T%RJylK(~Vcqx?`7$II}_ z(c%FIC|4?5nK*+y^MjUf%9SGDDO8m4p4vQ*(_p1exiaWLUU}i!GMJU5h*MdzEX^wn z)PaSU3(wE30u@?A1oe(t`KVZEsZB~v*+p^!`w&jWKvsKZ*0VhEmerA64^cYW(nMYe zFX=2vWfx0XrHDbtaFv5~VpcG#AVHcllaDpzeGX2!0h!2U9;N<4ilB?9&k7jMcp+!P zz`=5u<=%5~i};4eo$~KLVeiD8EnR`I)0fpB73_~X+W~915De$!*dfCJe}mC|c?wgx#8O5Vs)cR3!LmEJ9)=iCd(R zMIJ?zQI#e=0hh17`Cg*bMvTvh=wpa6CT_&MXl+CKADw@lGL;ZbDkA1sNbI#wG(Le0 zS!^PmcEc6!Um}{s2w{L*Ym?7EdHo=}b#Dmv1c;+uA!iySjTy zYkH?U>|wB*^E_~L^B_<1vSd$X{*ZhL=FS~FC_gjayyo%Tl3qPxxrgXUO6)G_zG=#U z#hCwNPOE}S->EF!%r6Y@Hyog!kL8cTzvlzN`PQEDFqkj%iLNy~q`K)F9)@396qfi6 zL}A(V2$u=29lWnI=Nyz3V1VE;vfwfbWK07_ASm(XH}Kv z|8r96grYEO9w7zMVyv-<_lkAq^}ldQUNWA|Q)4uknIr$m^=JwO@9pwCGc)tB%y8=Q z^5XA^3MO5G`SC$t4Hb?hrj1BfrxR55J%D{&EEy!%4YS1(3yNA&P(2gUT2+9VaG?Df zw828ut1D+3)l;=2voLh78)l0nTq^B7BTqzOD;aLhX)ham-GQ{5cRN%>O4{ z%QMk%v#7bhGgaIOQ`r=^6^%$UN961qGWKz%l!ZXdZ3%;IG2=cF(YJ;4t_WztZV(nl znJ$bvq1QvZNi{V5qmK-uQJ>Te|6lzEOP%wy^q;j!YIoZtu}d8ihj7zm`^cujKG`ui zrjg!5#E?0R9sV004UBlxRQn|DMEjU_)SgZ3tBy@X^QK~+W7M&nMvq4kIM$%tT-Q88 zeGR<`EfXQrSZh%eOyl-uD*L#j9MiCOt?$vT*{z3L|LFhmH3C&X+{N$sz8G>N>>aS% zUf&h)MIi^L&-A!~y)PSvn=46(Z^yrX^9Jg=MtDCczcToK!zZF-{HJhsVcBnDtVQ&d4zL;!_M2z&{j6cGptfrupRSPO*$00A}vBm;^71Rw>3 zW(SWm41*{eG_4mH+f=$|w+#rIC*{`I0;32v4gi|G4M!qO3Y(PK|Nmzss4+&tS_7z7 zSN_{NE<%7w$h^M4tm{c`bpBK@}i?@B6wmda~7N{8140yh!)Bxh2`}obw zeSg_nHvWJK1(L0crWtlT3NZ43O7HOeoc^C`8dAe!Sj34qgpk~blMn?Gh~Pm(Fb_dX zOVJv2Sx0Bk&YbS8+kX4UM6Er|l`|8-l~Q7#+;IWOlCQvv2b@iTAO&*q+0Qfmt@{6@ z0KfxaQP=yDb16u1foVdVSh5bWDNle|^Y%^%pJC+npwCR-3RJIV(fTtag_bzl1zO}D zKd@)K3lha=;>(l-7l+OU;rSqOk3zlUYQ32-jQsu2T50zZ_WCqcvXig+Va@mqJb-IE zl(8;zncMB2#q8|t9+nH92y>vr8-O?ikZ(ZVe?0*Z#|6l zAcN$?FGW(4DF}@XG6h*`ylp1c8QJ>Tz-1*!kq|_rkGqqox=NV9G#O*G(V|6^h=_cN z5~W3p(N^=zaMlN@S=QzlWe}vi*f2Khu`U-suU#1k2uPH;d1+;CvlTzw>-P8|Nr4q6 zFcUBiI2#uxA%S2kt%8tHO2I@BCx{DQh`%&QhGK|S4W!Nr2)__E5d=gCL=Rz*LR2P+ zvsCey`{ChAKoA0$1xzqD#wnURs9;nI0?6a#aN{fmS@iF3gn&`vtwV13%;W&31D1#D zfa#D06}74KtylAe^>?#M^)Fq`_lu3gA4QsBnk}_ z4A8+q@MivWk#jXC*UePI6@O8nNgxai4K1J!>N^pTm8sNH3yXc$bkWN5gGprLZ<9=I~MS=zowpEvvrpNiqZ zQ->Z50@yYP;{e0@$vk2iFWUEA)lHeyiJvY;o5O}Vl)()aE-BqtGBE^+C%EuG_Wfp6jcH)(f`%UocM zWzKTiyR5)0)A9a^nia~HCc#vZ#?6JdA{qhw4aK)taEf0z*nGEn56_4^v}3~p?*UC8 z_R?1i!&(^a7oKlxz3o%OhC$Oc+x_a{(kV^NUr*Y!OS7Bjtx{W9Z4tg~)aM#QXMRu* z*u`$Ta>%A&q0*b0Gtf*k&1%xLu!U#O2=0||ut^+)8O&hK>lew((K}y-m734uGhZ7! zoBY1g(&|wEanZ|`@X(!KXKZm6R-lm=XqGv zB<8#-NfMOhWR014T|Vxp57yjr&eoNKe_)^p4>S&J*x9&r-0G~|;Ql1vwEg4+=n;eVarg)t-U?Rx`?3Rvu+ z4}0m$LUMd6^l3gOwl`X~S`b3OLRiAk2P3hi*kCPyY*jO`nijV3isxawF$6+j2-$Eb+0zfVUQUK`6{QQpZ>4zVdu#_9Pn4kNra%Hw%aYF!_rF49$1xVxF8j+Y!?^hdK`gkn+5il?U9_I%M#=m^0246ma?q;uo*Wue)e<2MJ0yKov z9o_({dbKa(VL&GVL312Ms4|_y)~B*Oz+k2$`5q;XoH2x3Wp%5O2X(dPT-Y=hdq2(XaJq|Sj1YOo;&56$8cr>;PmRWhnT08X;@e(>?6Hg;kKJxO}qlYs+Gapy}j3r&a2yefe-e z?b-h;6RdHkoCILd&}^{)Sh!2h6#(da0C_#|Ldx3LK$AhDzp=a!`t0F`03HCy0}0>^ zfdU?Y?pOf=0C(~|*}f9=)%^fg13)O-*SdmyU=ajykomHJ=X0NTS36XC|Lh4aDn^Y; zd2mxzWrBDT$&)D)Tf$iFZg{5a(1s1WgxCHQI25vgWqZ)@wG|5$*%12h%ZC=oo%OMIbhkrl@ zXfs)4=lCs6eXKOev!5Up)`l7zE5>EXLQba{YpjW;%orRgS{TG^7;HM=Qe~SjJBltF zYB;VOg%)gvG{zxAC32H24;e=!_wEho_CXXtxqaLrx9O&;`32M2S5d6>umjdXl(4qd zOBFi6!B<%G(}87PKuZng*Sl*z2Izvhr#uFa6(pS^m$^1vY;Js&d*Eg7nzH~E48Rp0 z^+RQ5>m_wpU19c!>KCM6XjdwscbT3StPt9A915P&m@LqrLHeJ1W}!R7AQ2e(PGu@jjf#5kD5jkOXIO9sL|JvcV)l}2aHiBbJ^Ik zWvz))9XN*k`vo@zTQ118dDGspr?Pieq)?kv%cB&K?SOz{lvaZUl;v`V+#D2EkB(>R zEyVX=s;vjJu!9oxk#gSPgYO1iJB`DMcCBcUL>()x?GLkR9rOY-Xsrv_!9^_j8;!?I zgU6PDn5yx(tDO2o8$9)`yWw77U7P&S`LlH$QXM(2IeC-4Ga_o#sDv?3BtG-pyr3x+ z$F7^gtQXw|@!TjLcF{D6x>=YOac>n-+xuz%-cIe<$@%9JszY3NiP#~A-BHD!y{J>1 zx`ekc%0GAr9TBgi!X6X16CyY%&fQT#&nfD(aC=4BC)|Efo)L6bB&MDbl_mGI7z|LaE2@& z1kqy*aa>J%u4D2@Sl7Mq`jsg*+^(FdyJJzmo7V25n)|Y)dtk9bphF}8KnVWiy7|>r zs4=^R2YJMu+5i?{AKK3puq-%mx^3LEUYWj)(LYL9F3QTM%?|ur5hQZJ_4BBb&F1a{3TOfws!U|0y$F1*hi4|> zZ7Pc=n=a@nbI31FKi5zh&q4I`k!xLW^`d-l&c{t;RkMrU~(;C<*R;>82o^ZtwnAT$wK>YV7#=sYV}m{RVR)#d(8*TJQ|SF{QMNar9-LuV<20l>~1 zwgWH*R-&fsXuY?m%wODy#w4IuWD<<6=v4KA|Ym(X`&H9^tAEfoEI_MHs+jFHX9@cl5cFR5EJ1k$nmO0F+ z9=ljAnIIDitX@JJ4<2T?aws&}DWgDMpsw9Lh#es=0m8OO9{wfH0-^5_B&I3Dg_&Qy zyNK%Ry>sh|U8bI8H)$px{al}uhfzV%U6eS@2z zAyF+#xXGfrPAQsmDb;@eb)Mqh-Kjt=!!)tA%YlohVMVr>zkr{w2|l{VS-S6M^{2aX*-dAhf+|IE1y7jN9WbNAl;2Sd+e z!Fq)PXJw&;Lay0$veu~z+oUXgoZbahv|Ckms#KTC-6wfjO{MBo5%=B~s{2ZH->Jp- z>cJ0c@uPb1le+bb+?FQI#Lcf%ule17@iQ#G^EcGdKQeyS_{#aNb=f!P%@=>>+#@IG z_X~|ObCvbPE|gY(skC~9*Iny{A6Gbf$ zH;sNIGCoV~`i934YaEY$Nz-(>Jj~4`7>qPq9q12#d`wCJ^c_!v_*`U|2o=)QzZ`9p z&S1SCmRIWG#rJm?FbqD%9`K@|1lp6JbeT>AR}K+{j!FT_+tZ-4&SxilOi_onm0Sm| zhDrEbs}nwk=1)m=C!l|!u*~D$aobGdXr5w%d2y-RoEg}3_x1|iOyiW}{14EyK}AWC zpP2$Jpsh2IzDSO?&1 zDD9=VuFkl>q&fVcsA)(?yy`*e^qmI+&ggiHBoY2tVB}EynmzN#>;c)VE{qY_m1RR# z6{e6FT`0GNE+s-Z=~4auns^FjOn4-`bm)Rt93}ET6FWIOTRzXii z%q9G#X2Q>tXuX;<#m_IbIS;5he#ZAClX|L32-mHDQ@YU(3vaF;IF;wzmli>Q17cfU zOzaOj{xIu~slJwKkN1n)=Y5a;gdtZTN6755pT>_+;4^DPFdeO?tnbYNf8k3lSHaP~Wg_OgEg zog6mo_4eXDhXU4D@E8EJamZs|4h>2hk63WARiCk#fl2!KqgIY;5|u~nK_G>RLzi|d z#dfZykW62aU9Y|*dvFDJ&&M19104>`@wmYnzSZB3Gcu;bD%py1Ggp!_6#%;A$QW}( zsdi7K(?CVcoVa1h_d1qkJHM#vUbVA*H}3#J@8Ge9;_$#S;%x$beeyIYjbB2Z?Fue?x2|}W(Epfb9>M5mRPKZ! zlvdfNSUz2}X0gU)FROQO@7nWbUmeQWuU!MB49ds-w44MLdO#TO8ffD(av$B8c3o=t zS-PYs>%T3umnMG(Gx@;g27DwNVli!SXa~bD@zZf))XweIXH8IBmGHx87WBM|93ls% z@+H4@K?tVq$hJ!6MQ~kq1zcBLsMnR(=XLefZC!i$UDscG|Nqklmt3;Z6<62|x~j>r z5iLfIYBT1EO`dtC9aah9;bJflJ^_M|0-~fuP|-lNv@~=K5F;N1Uw#mO{s;jAAb|oY z1qs3zEF4FKNFq_92t|vb5-XORSrVRP$w(=t!m?!1%9ahwk&Bck4<%m-lGQX~rEEyk z%|w}{99E$MrBWqQl`2@ZYLpr^Bx=#Sq2-g;3s*dW118^y7+i_oM=__Wd7Y-nk*w6>bs+9LnnuHLaz|Ia__j*hThyF48Z z^X}dLd-e)CJA=Er-1hA=?mysn@Q~ohk;J1%V~!n*J#oVQeHv$-rj(| zKDNI<;LI7p*|T2f&I!(+_quRVcj=Ps^5wuQSE2_7UKzY9yLK)9`t{HoH+6UJxZb_% za_^qU{rfHtA0`bAxebpHj2a~vGfwc#Gv3cV$4KQHsZxTHYc4D-9>T@N!^6Q~2=NIh z2#FBHiqF`iP;LL^5(0dy((|4%3G@1W~P5}QEfvgS9#}C-tRW27sRv>7-zeme4%|}&6llFW|nEn z5s>#b{WU5JN)X1nrUc+75Py%*|qSh4}+STbt^+xbhjfZV5V zZBjKdcZ7Dbqs=(DvpzmN475q-Kwtz8?`L8>UDI7thMXdSx8p2*{8;`0AL~QFe&C(P zda&l;aG(qtX`5 zRUdD&5|#@=vLJw&{T;?pdgA`($R_UsA1q7LKrvwu5KkolOo7RGdC%w84^62|zOWgY zz9m!dt$n4gISPv4`E>Byb=pdq?T+IVRA_YihG++}2lfl1PZt4W&$dBlf-xykp6uE8 zy3Il8``^YPGuV<;LEC|(5}5T1XJ~(;`@me}7k8K(hJpnnea>X}wB@iYwvRtIxm;+u@D*VeAwxfkSRuoyBy!{=-T|bK zsy6|&JSiPPTd8~Sv*ZxsD>t$7DZS@N2rM2it?im9fVZiYDV5+q8J zEJbQ2#j7mCl1eu55>g(te%%x#L zS=DzczPMN}E3&5KfC65o`fR>vAx6C29Lu*vLC zZaBBM-DVAO2Ib@=FcvFFjIaEXWE)$%_5-3LxO+WhomtIQ4`HL<4}SXr*cL!T%?*J6 zkDq8v)B)hXpI$z^<=IPs53f7>`lHJS*BR&>s2(`{%HQjL9uUBWz`pJT0J+|;0LZl) zbImJtTIj#FJfOn`|GMY7%Purr8aiXQ8$8uxj z%U^&%L4rky6eU`$llJNM)R9DBmMle@3|X?}$YoW^X1W<>sZga_jXL!fS!{`=RygjK z6Q20ZE_Xa|*F(1rB%DF3oiXleV!3Y2&wfcH&s?!5W`459S=(&&qupp2iHpL)BOoUs zC8OcOm70iwCwCsanf%8~xDcVj#PCxq-YYB;#YvDP)l`{YHAS&}1q!8`X`b2UC^Ofn z`4(!>Xn|!aE$5>=7NtVvgJbL6ifoX-+(j18p1@y<7|UU}Mv&yCf(7 zD2lRL2;qpIRLWFJM3&X>pBTIByxzRN5Nuj^KHhL(|GtIMk>Ti2WN@IrueYbWtFxoM zt+k~&+!ShTsIRN7306A-T&`Ek#XN?OKl<>4i_*)>^Y>@d@r&oro<1232mN06o!5(l z{mpqwV#BS~!IpZK;zXN=Fd~O<5S)2saM2O;SnOybowl*o8@AAJxl`FY!5mjEUUG$CR4EX1Yu_(S z12J|dnpUufzpTszxq<@`bRAR+l_70XoiJ)J| zrCIw3QP@0=aAk9OguY(VPMri7T)R;pjgx-vUR;PraCcHWOha2LE@E+#wl!?^ z{9Vf7wud%5(yerf2+2^#BQC*#%yEviWJizTG66dL_R11Ie^!d7mw0!la(5qTL2MBX z=DgAIg|hqGje35N%(oqxjLf2NkMm;vI&mdn9(aBPfm!yn?qwp@1tp2c!=dn1!K|L) z&N2z58TF|gGZ9NmZ!aD+W5xtKbVQRvk}>yccIY68y3+ge(CTW|a?R?Ndjz*1=0OV!ylrMsNU z4BT<}U^*R+U9lh@OCHK51%HUZkd|u=Q7=L3Xjw4j$`_(&ms$$Nqju^n@Sdze(3Py% zimd~u(yJ7V0>f@;2c-@YUdgyD|41#}&jJEmHuX={dG41_)(L zhpi9l4X6>MHdqnNpI-2V%A7DA96UbL`Bogzu`8G^vJ7`|9vaD(3hI)c-Dn(;fHeTF zzYDBWC}Kp#-RTr=yEMJaCk%Aobsbwnb#el<1g8V zFoP$KeV=(qVHk&M1D+H15-zV+Y%T=m!RQGcxy&2 zIMJflUUIz975nb6{ zvE}VW^X#Ykl_3Rx{aJvF#BnD&X)PRhnuLf$QqQs73||c!YY@ zCb1u~+!cV%t}M?J#`Wk4f!D54R~t5J>+aRaT?bNtHA7``wR8zg4w0+%H#(*8+q z!sGA$k2jmTEH)l%eJ4(D4Pnf);)onZ3o3FYc&&V@&g45#Qv82J6cZ=PmcsnskP^E0 zvb*jo*ZR(|;{Er6=fewn72%p(dUK(Qi<}De9w)fC+B{&z5B3?xtZ8pFSs2eTErkop z?`8Lb5ZK07j65N@EP=7NJ#en73r(!Tna}E#1v3?*I16iJ&To=AKFQXomwc+p6nq7t z8-3}v76v#Ub42#+6t4O*W*%s9p!uh(GyQi{lSQawfwF>Y{H0YxK?O7Xl?@dzg!n*m z<^T-f{B^HZ?3Vl@6+M?{Y#>Os!xhO!WgnKTs^ue+egRrxUezx(($Z{sN1wv`Qhm^x zi+vUB&BMuO+@TmFD%cN@Oz58m-9nwx3AP-uI-%PzUht5J^c-X+@b1??AgE2c3&^?v zbuN%KfCO2hQbhdz49E1K9a_#(DT$Qy~k6B*BlApAz= zWEN}XWLw0u%!G8TDu43*IX+y<)XnkgCe|Ilz9Y1Uo?nNr=4E!hNx)phsI4}etv#uXyRmt)b$Q-WEZH6i}T4i%o z6^0e)gD@_P;O@QXxQq*+!877F()Pw|J(USHx#Q_aDkV4Ux{77xzvyZ5!3c13r8FF3 z!s$Rvpj^kP_gN?|@rY6$a-D0`C>K?!Uc>|Fb4eSHc`)x--G)Fx=(A z<08yfBFCnXP@chVs?G#pLMA&`s)?s^51X!ezg~A}tERZPm7w39wN{Db;D^ay6a7{N z*d0c09v+Jj%MBHqk7~FR1)G>l$J~`z6ZQGG_kAc|o-+Z?z^NGONkk9PM*W4vHNSdC zrSXT3!MeuY^SEte79-t^^KZ+SlQeB9?X&@d?Q6Cg8J#W$$V$p3k2OrWg3fpjQ4o?!UnY}ZZ z@;Ua7u4pahHJgSIa9fX~d zr8V~7H421Vzs67xOQ-sZ6$EUID{{tE%$VqVLCxN8F)q>r$*CQt&G9BE|3zjT>`c%@ zcbA6&&ciHb@{TSj-aL@xD}@;miS#fhhf9ltjZL*!W}-v}et6%rY87 ztc1S6*!j$83_5oLwuN@r`zXjR4|4=GYC;;{T@o@NYd|>QZkP^DG@G#N=;}ldt9VGP zSYQIYaD7pk;QOrYA2in7;hII$vDy$)O$;dVRS-jFonS3HbE;;^WOGx5L5r~^cGC5O z1FBj|TV0}>jYVzdx3WF z*oxIX`6zQyHg{R!Qhn7=nS-{vhR?btfK61Y7t=cH=y02BI^K8Y)W1GrrIj^fo9wNr z=tY~3&6Rh9BTwf9R_0x-xM;^P1>tZuoi(cALW3+VJ9x-!f<3RbJnKOXc07@E%=IqgQ=S1_6oAC$gZgdmo{X z1WVYZ?CiidTm)x7RFwcKvl5YR8F|j}f*|;JbP!!`X~`90JePbunFYwrkXAAg@}WUn zVt_O`qE6;Xm55!nifdNUD4MFnZFU$;%aV@jwU>#4{I&OW0V!1Zg>dj4r$f0Ji!PvD zHv{RL=;2et;vNkm?T&(N+(QM&bgVC>LFfX%_^1CHK)q;+ISf0{#ui*_e~~7Tpv^!( zk&nLY%{w9B6P}QJz+9+JJZa=T;!C8WsQK6GzHmoU+T9^XbPbivFij>gQoGP z9Qv8n62FCkwP7siDuF4yNlxpjCV@B2Sv^~rIa8WHvxL(4k+Cc@xwt3Jq9~HKq#W`K zJU|cWh4%`b&HZ<~l(Fg>&L8GKB+C}cXF#fbPQv{cfUd6rsVuS>GPK|PYb+9m{qE-nz3#cx_gh7I5!$ooG+?O}TW zT(o>lynNw7P!59dd7rLodKZ9C>^dIV6;KxUlIPcVdAf!3E3uK#W4)0ve4nik*jHT9 zXqinU$SEenmh$WU+{c zDg)zun`b5$TjdiMQ1~2c+H$&;%T2c~ThloF0!mhu4?80R`762M%dWto+M2*3H4Yz& z&S@(7;($Ua_EVQ;F2#AFR^53HjoFC%k(>xPg|JWXD=8hmDzJ<1D4CPej!;lU67cM4 zuM*A+{+ca~%XX)p^0Z7WWZo{EO@Pe-Z{@^F1Pc+V=W+cvmzFARAWY^M=6R=4$M4ZXH&9Y#d9_%zdy}mb8l_cwO^X=rhMh+RggVsKooWRuhA{^55m({(Jckt?@OZ zUe4LuL5y%5V09Hk+!s%$6i31z_X}pDZ5&j zCzoHR7+#?Olu8Kj9;o-n%Dx>t%6o8`rvg*(8a(@EG%t7+o_!|@W`YYV+!tkZ8~O!N z-L38ndG}~@H%|bQ713CFCY!0PpxCB7eWD>u>c>>_TX&MR8;S&ghSju}7#U1;1=Tj` z=@t#4(>|dK&#{`hFXl4vkgoTqf@WE-Vm+lB%F8Y%nY6TW*|yEds~-I_)AS@Bf4hW* zWDpe^9Gfaf-Lny8v`kz38t-(2)evJaVHh2OdU#1x6>hCza6S^ z*yoE`@FVzW-R^esvjhc`MSz|qlkeam789?y1B|eOQH`lL-)icC`3s!AniQx*uKt8b z`Go+nSWx^6h4`_i14@yz4FD5n>QrgE9Zq;LI+Z3>g+$cp^9s7kCG>vM9lW7CBuXHJ zPr8TO8`dA?9f@B29H2Lwo5iwfjZ#!vAyD&*@O{Ou(1<@jqZ+DXoR}$GDs^cGB5GTQ z2+HAcz7YuJIb7~H4UMVL%%iCgu)&Haw8ox%tD$F5W3%)r^gRXeB>0WevL|RM*C~`| zQt3zrNj8K|&c8qC8yTRKX0aP!WCJCQP8!^@C zJi9@!x57uz=%Tr&77pz`|B10fu4^${M1u~QQB@_(3cHK2VU>u`PyJCsreyy}rFXu8 zLN@*gbe}H<7|+*cspaL|tZEy75ex0+6R+&x#sD395e>3lCMtH+lS3znsX{V(5$ma{ zt9TiG2z}f;5}lOiia^@S1ZaB$wLm4OkX}JlNw6NgRKMZov+thx@z)&akB>iJ{QS2Y zR|6e8-9TqwY@kEW&pz=;rC4ETFvOY~uC(d%F>n-#*SdNY46@2;c~Ms?>_h!rtVAE@ftPdSdQ@JYXb6SR+ zDHe7&K_V6{%n^Pk`F-(vk*>8{V#;q4<&;R6B>m5MXbMrTuVYFJA(hM*;sPVg7xeq@ zF1~}~rx9nV^&!Ph*?C9*Z9;=7t9e;9cJ?Alxra~aOOtbA7G3A&E}X3vg9{&_jxVp~ zKeM{`dUfI%)V@8F%-Kn>@khye=jXhu(=S2m7LK0zg6;Sr z=b`;?%eU-14tBjvv!WKn4QU@GXEgkRfv!Dud*SD7lw6_DPoXXSz&!r=(*W<4wx6_h zym2*pxU2(gJZtF*rIn0tCm)lbe8!qcu@$HdkG!@~{wI~8=HG(e2|B5jXLsk82X;597x#Mw;w;BvSl2o~!N?X9aR|rPTv+;6wN)Eye>)o$j;83WDN_ zWUZv_S!g@K6RfX`L#SUSE!ogqRjoiCP-r#PZDM-|PWM3?TP_w7+~23AzV8P6P`y-j zr`C9D@9&)81{=^J3WxZ5KLqLAL(C#~l&Nz=klr8V7q&??0v1cdm*%MXES6dz5%Dfl zXs>hFH))i^9Iv&5u5d_lm4%&bi?xHTD$JEA9G!G9f)KH^&|Pyr7{TM4-?E~4%DR8A zXPu_1L#z+%vKaS=JKblG7I4P#H6Ns=uDZ#1@%!m)xfo1G6pgve$D6|DV9&>PBVvl^VQEsbkS7%1mv3?d`R!naI}Q z>Y9#X^!iHAO&H^1mP!;RWNXqTL)RZBiKeq*o z{nD7EyhRvai3}O;w}nkV9~u?s1Z2|O>LEF3LzGYD=N)LY@y1Ilc8Q9_)ku=0^Q0!0 z1eJ1yeobN~zweh%3$a37SSSxb8f|rNRzW+V^L~2z{Rt1k1!g+-feJU7y;SvHjq%ph z@46ty28t1$QNGa+K?e6Iv$$l8X>dc3(Lcubv_U2Ti)G@6O+Ga=2;?Hse-xTLQ^=R| z(B7xuDkHpA8w=1SZbu9prNgt!VRlysid#u60)t}vix>!_dnT7VVl znuO5IzAURC%aX>JbG(@?f_GpAbxoBOC<-W4QQ5#%K-{WSB8Wsp^NG6^=MVAibAeZ$*V}zE%GCTn#80a0T)b6tVP=bVv(Q}vf4`_p(r2% zU&01nNPVnTAvnOdS^}S;efept7920oP!mw)RMv~qzr{a=-hpCcGWKB517P*N<@Tcy zh`=Z#bb6FRZILfu8(2$2N;ZID$POPCO+|mcna8lPJQVK_DTHHX~o zIc*=s7zn&PoKwayO_rZc9(T_N+R^*)cFIt?Jt_S>oBfoO4(pxNhGMD26>1S!c$C`8 zV6-@<<80^z*Z1QFkVIng0Ins;^CJhqc{iB2+pT9=qgr%Sr;57`{|6?#>n6^&Cfg^v zkd|Gnzq@V%hFr^`qwxKs^&|E1N9~rJ%THaY9|mFbcwInbpzR!kkOTq(4Kswz~?E+?usL*3C9>s z#Fn^bQWN8tvofv=Y=64$kb_ChaV?31Yh-)9o`M_6?a0rv4SB=mE%pN2)8}?{H7_+I zJVL@t;jZoH3_K8-rj^^=Ll?8A%G!>#GU(-SF*m(b$QBTz9AB36fouB7XC|MW9D8=` z8GzKk%rU9=8vNy%eH4xvj==!>^}4I7zHZgovQpLQ{_cmA^});X-d5!iZxOfG1LdkL zmOLhL%idXID#CI?@`hMLwu#?c>KS9(?c;)gpFd>I=SBVgQGuOZk??t%=bbL3?*(~v zt~6{k<}_93LW&Xzr!n8cYATix!-RqV=!}1++zI{v(&_&;fjY#(a@Ia#3Qv$1pedw< zB(9drpzDfdhIG<}Lm1Q-tt4rMSQFZw-$P2MsGUD-EzN7^sGVYdrmak8!gc;JCr7hz zgl6oH6~(t9C-|i7wWs_{kuysoan@$)N(}w?I`4s>YblN$I#ejLKDjhClko#48R><# zLh)84LoBm4JM^Dder}I$RBUTdiem7D`IVXC|9a&MD*t!G0FuEM=Qm~AQuQ&~gnmX{ zl{JnoPQxVp*#K>W63YK(a&xUTD8GcMaz{|(@kb-l~hWtHs)2)_0C)$SLl&QgdQI^H>ZeeEaHDTj7Fb5 zoR)U@EE+xhWf9L<#G{glJK~$IKF-SXC4;>mxJ#nvEk$~{vPffrLg1zZ--u0V#7jUI z_Gt0VRQBVko^?km0W5B6jXSrNyyZ~FZr3i?9zA%Yo?~G!^Vn=0Vaeoh%$b#GqUX&v zq4#%UFkSo5n0=jCOy_<#v$;U#7U1gc)Hx^^^-g*B=+#>L(mMZCV@!DrD3J<%WUYo$ zA{3%VAsDM|Uss2|o>C+M-vE|P6Sk-adT{)jT8Ruz&Oz3uh%~q z+_~Rv>Yr9s=9VQ@vipC@+d;{<>-2{((&Ghk9RC~s6-S@&TaE# zLA*RB!zGb0oOvvs&1caaITE_de?hp`j5e{jEhBwYBpUtuP>7jHcilJu-DzfV`E5=K z;hF7~*$#80_ezccUFxH7Bx()W0rL?A{wWg#D zueRYYWXe(q=w-woh=kv~53cwDW!|N!b0bsW4eyAPrA(=JXler6hsWD1=LK|^xzf5` zUAl7<9-j#23~l=@31}AFz;C#W-vrVt$+i^jxZP#G9Z23X=jhyT1TN?1f& z)+wZB0Xhu7E=*k9V%d>v2H~#4a3PTBH@sdF8^4g4`po^vIt-!i!*tSZ5c35ZflO9> z{zn|PY5TTDG!7NC-+S&zTBbz+%8Vr^?8PTQ_xIRY)SaD)18@gW$Q>f=N%*Hb6PsXm zAeT9SJ+tmw9cWc!PwMLI`3LlJx|K+@(&=6zSpjzYG36;Kh^@f#Qd1seEeVT_{5?O<}DIA2shcocA#=PvNpwRW9>++ zJsR_biiRen_JZDWtTQ#$iN&g!P(OuH60^$#-QK#Xk>B%y|RE8+#kzq=xe87wfN@6(4@=PBI%`0Y)-&O%QrBrEHX=o`nM17iO zq^0yoU-42eoJ+#a@2g8Rq7%rzpd*I9-57=k=*l+rI?#y$p@w_?Di`BK^Nl?Sk zg|*RTW&#EY=)Va%0`VNdxa$n&)u#MD$+Q0FVT28=@dw;g8c-5gOE;YpV>tJ5eXAsJ z$E&_52Ke_;I&pvR;qC=AJk5kO&+D_6TO5eX5!|!Rn^lO|$%OCIN)n%;&SLFY4kng5 zI~Dz(0c8Sfsf~CVC#I&7x?Y!PuuB!O?~?B$+AH)P8!^!v$%hm<W}cbQ2S(lmy0!*&0w*j0%ptuidnxKs|D&@Mz0*~-2nQKH{;!pSb+r|jE}fQfFF4(jOtuqjaAVr?IC@s}yCc9DXz z7Rn55IlN;VfxVrF;DS1PVs7R^YSE4qbDnj4ywxtseM+Bi4L0G7pAs~2=Io`-tq zSSvGjcPp2J@tbCMnWguCxDbl(5}ae&bL>F-%)cg+^k%^|xw5!scORJLv;sF4URXA7 zP94=X&r6Qg7~Zs@rh8|a%Pn_xZ?K@=3>_=K|GB0|1ACaHaV&4gt*>XE9XpHbi9LrH zTHU)5(;HpzAfcol+cHg5cig4jI~4?2jp0KZ>VNMX8g0Z;5*Bt+KbuOA8&@fGNWc4* zI^$dOFXtMI2KI>cHP5pRQBpH)X_!+U1m4`h$3N9?mE)F4q^4{>=rIdxr8n#4m*$L) zz~z&J+^-?Z1FkP00!D(lXAqrl#pZt@pST0??(aVVK3VhK+B#&C(=R?WAT$gRaHCVt zg+=aVH;t&-f3mFGt9aG@ee%v7QCI6F`PGN#JY6>VT^gvq^w!|59qfqOqYNhNsdl!4p$y&p6La5(Nsm9_w5w+h_LfHs zlE`DbY6b}j-EY-UZ-%SL^)5Chfm`$@Y_6vyrKB*)=BivKM^QH(&!2E>pE*S>RJ7x> z6;%0<(LV+c>oFGocy2yJlZ!Z~Y~GA##^6*IK5x!W)zlnX$yU<8qg{a9`UcHwboXpB@38bvIw^3Zh~_*~Q`s$Mi{%`3ASJ z#XT4S`6}UHV+9wU@6*xI)gl`o?r5oxR52F7w5}`~vNj5dZu0|OE$VPnoajr4+b=oikSDIAQwdlg^xj18sQKjJ3am#~Kb~J?jg> zprH`|Lm9524$a%ItV4QAd|I?j9DE>@o(JH;uv-Dq zWqkqTdR8FB=q!-Dd{m&gT2r8zlw2he!LSJe7(>I*?mu)MQFQo3)d3^)LWq3)IhR#3&hP1Ex0Rp z-8%jf)i+AcQxr%pREZqPiWVT~RWUZgnih5(`bi;Hp(zr?=H;r2EHbIqzU3BBaavZ0 zAi;tWcgTEfyvTV*)~hn#TsN6uF_p5u-t%U8(V8q*863IT90BIGB^M~uVuI!T=7>U_ zeYU`SX>XXlS?x1Id{1Xxz!FD-;gC6gHrFrS;=yDdPj`8l@35ne@#e#qUpByTC!ExM z!(XyY$Q{Mcxm>Te{pvTN9tsnF_uq@!r(cCLqQ!`1cHb+KRVq=X$y#6CyiDtJ_oQne zBh@J5X1(Wq)*?$R4GD`w!PL-q27W9olV`b=R$1X|tNkwDkOGB@v?*3%jdj*r%W9fZ zHV<@|uG7Ch_eD4$zrWCNzW;AXlP!pM7w1AGIA0MGBZ;xb8Sfx`2Pc_)E9j|kc;vCM z+d*9j{g99*U51%RiD~Kli1aOkZ|u`Th$a&krYt1>@TWw40yE5F5pTZ({<;}Dx5HN3 z9)jYV%7~{`v)63WZexPvFw-4&yKxdilMfP#=q!Fe@5FMW_paH#laMfeT`g#R%(YMM z`=N@;s_L5By84F3rg_aR^IO~6J36}-EL_yxvv^5wU;n_;Wy@ErT(x>|&DwSA{ZjtC zYakRErfy?tLz|(}a7A0iPJN)PwWY#mVAeI3)tOBycyPPIVKeRwUf!x^4OnYKkj>?Z z)`L8S6806~!&)jgH#SsAUQ7Ft+`?I>-dZq*J5h`V+wLuH4t5}8pmYXluN7hgx2(o`NU>gN+xX9C?IgZKoicV)G0X1(CFHO8o@QqX~!N;5`d(tUe;nc=u98yhe?u`#%6Q1Be5j*gjlVS#UrTl@JFL7p(%hSZ< z2d5$uhJ?fh0^;ANe4-;BeW<&2LyQm#HiUxQ@&es9>zOQs{PnJ%4qRVdO~^;AECe70 zgm?!a424b`MwTV)m=UmX05+KZ>90U;o+Z#7?Bw)9Sw{wfjRP3Yr#Jfl??>ejlajPJ z^9_n@CqyQdFp>&6k)#E|oF$lK$#9sfW-W*^N=1euNecAaPLg254dc+lqD{t9kj>M< z#)CNmx0p6*PqkhNkAtniJc~1-K8FwMAF6RtIl1U&>xthED>TZ7Ocj3}GJ21(Y2y>j z@5uNz-qCFl7`O0IbLu6EY}NPXnUU4IH;+j=CJ6~7ViJ)wQh_zX|Mx16Xw9mgSv3|s z3&8^m9@q_p8pi@BA{G8q|+j2;y$FyP09%$ykJkT0Hqs@k# zF}Zft*OULjd8L#qWHAmpF{S^1Rn3pe0)QmIrsh^;+J*(n_e__g(#n*sv^wTJ&DX|k z+f~_lyWdTghbhjmo@(C!`1ZA*%0tWOOW*IGD(aO8ci@;ydeGf!+2J>bXqD_UVLB#G)=j zrz}SK0KWfguU}&X(+aN`11NE4|Msih9b>acaTV^%q68J>1crQC*;WNLggyVM1kqTJ zz_J3vGJK{!2ZqanH$)~Gk}DUo*kVYYJV?HLNTEVVi4sV;a!93WNUeHE0~OpMM`8Zb z1GyaoC??5)B1<&{!GQ~a(_mw9`DWnz$yY(Zzq3W$ z12;M2&Lpa(OQ9*=^uai(a#*X_u)BArFzV)b=D?Uy~K?Wsq_Sf@w2B|rFCZ-ahO%9k^6_;&>-26_~; zG!{{K<~udq`dq@Z_f$|{0sD99;#3BxH2j~W&Gi=n*Df!Q)hB(bA9cTPEl#JWn8*H2 zS-*)iGUMe?g5rwbnx-vk{=oi~<=kzLdbWGekzQ)qepi*#GS5%xu4u;nyYXO!)Bs0g z#DdM}J9b==dGN;J%b%_QFc1_P3KzwQ0+IO8RH9^NDk>I@JZ|}OYqw3Z_1O<$v}l4N z8xau_vKdhzFiRvUqrYR{=XpS;ks${3i4w&3*@s5GD$aw=0-P1dG!QX5 zTtM7Fro-d`hbLqb1f;OcK*$R^Z@7Fz0)GK8@(>d)0!1VwQBXvKiGd*wqIjqh(Uk;M zGJJ&~RUp-K%yv7@pcUFVvcfKYg?6Tlvqx;VTF7(9L%2s{f*}mBP!I(up(8pl!$1sR)N)7;3xOE6z>Pon=|I(u zvm&e{qQ~G3Y77&FmMM!U5ebi}2r(0$sUpNeSgeG_Mp(o`aS$nvLU9r)&LYP}#JGwa zHxc75dZvpSk5tAp*+_y#nw+9PqC_q%(J6{Ch>}>LB#D{i4u-ZOoFpPARf4EQO?t}E zL{rQ}tYnLus!#D@7U{2K0T@ekS;1g4C$M9$yb+lL=x_{~oH#>VgQRDC7DCv*KD-sq zk1C&kl_Q`^6qKfDQT&A+bB%8x!6JtbO*B=3)%cZScx4`ag3QnRM=F~ z7?U|!k8nWE0y786fYb&pL*v?Hg=sunpe>DkXl!B9=0c=l8m?g(JmxT+Wr(pPf)J|+ zVyq(wv56qYHUhkVTw(~m^M8O44(jmgj&xuI`QCWZkr~}B`Y+M&TaY{iByouH3luAR*<&+e`rh1ql@{LL`M)@e(9SSq@$2_Viu%-1or4*H&jwJbj)1 zPp>{Nz2e?u#!Z;?*%x1Z^W6_x1nIp~_#zwWBrL$}`WW;J14>Ndk`Qnbla%D7BqN!D zCM&3*gGqL<$q7BIaKnorqDWGhq7+9KMarX!I+|!x$&7#hWsVCV&p|{&g_X$OBziO* z({&QiRp-#im~j&(^OxS_t8c!iAG^WE6JcoUVi92_HsPRfBILOQ6NL|9FRx9Z5x0gX zUVGzh>Tkm2%rz-T5OKN)Ppb~Qr;$KRRFQ?!0{koDt9MKwj2SnPCYxX^Sg}d+5k^Qj=yfK6S$O<=$Q&0yF1jf3RY&YJEzySd&|u8C zi8Q$v%(Ed*B1Hwb4=dPoeAh@zt4n6wxN+mgjkn^=H7Rd}B=kEhw06fV_pBc|8G6Vi~6*Hf-g#<|bX zC&2{vxP%^o`w|JWE#{T&Fpn3ZcM}Q0OPFUMVNfuzxtt*C z&{j_qY99|V9{nOIYJs6Z$1!>c!1IZr*<{l1D97 zssQVrP*tG>tk{!#IQ0pJdOaZV2}YF;pxEA80AWvYECQcFk}>vqMIu<>hSC)sh(Yz| ziqVuHhHaP{yWg<4%iH1XPg8P3i@$pg+ald;qFsiV{{W*v(`Aiimb>7hOD?v`$M!X(kTJCT4*?6;`)*`c>_B!m z#T5;KGN0(cuy8mwVUC{3;;<0k$Q-H#JJL}VK_7AlMO&i(nQGxwbyZzuRZx(MtMK{V z{BPcxXQyhW&Z0@1h?zQm8~x+fXd5*neUuErppD28IDFBcX!1{PWN+5RlCtnZ$*%aq zxNgVo*P=;Gqy@}OliT% zc-hW(>*RdFfv={t>ph*^fY#g*4M+c(!y z!l#3LNa^z_DS=N{f&*$dSaGwDshpQM@*iS)iTzM-{>2Z4PbSJYA;KpTmJTTf*ve;QQLv@9BHEP0H1@kudoid^YAdf+~0+(DGTEB0FCIp8Yn5jk*0;ZBP6QEVmP zd;U&HE|{TEQA{WZ=G-T#)7tz@_!e`9N0tZx zYHT!j0@$#>ilfNlf-Q^-31PA4R~q1vA^m9+$|=K$V7+s>fLuBrK7TCpTQ1up=(%ao>OmT6C@CkBg&c{4@TW2*+_MKJ_vz=6K9e%vmA>k%`DmWGQkHNkp=k z_djN4ygyp)wswFKi*WmVM_qQ^1A``)C89&ZerJmGL`HYaS>%cEP269)pG{w7+*g1j zV1bTr$*$Zxzt8QdZP@y)+GTC-Q2Vj<*4eJMx240c<~Qy4>%-Eo3$+sva3?qV&FFV< zJ9w6vW8L6c^WFCEn!%61K%v*(c&pz#MT!j=G-TL_Q6);(63%&av|J+-b9IWtB^GIW*YRHjkaKHLs{}_6~#&1&(S{ zrP(Lr~D)Yx|F$30eWt0PXhn49^{eT=^?cJgPp zYJDlI0y!kMM0@>t2()IkpqI+=x(jvzy5={Gn%d7Z{88K$hw@~~;AZnY7P@n{3W zV-(Gcz|f}RM1T`k9`!2Vr|rw^r@cI59P%-P8tvFx6Ev9qzJD}!nE9gBCQ}AQy%^9j z!&k9DRFhdw{KU1)qcCH+T&7pR75t!jzC0&G09F^mu`A)igTRBk)taejuMSGI++%3D1qCU;FdGQe5`cPdbJfgmQ1*ya0~b z(fxVp%YM!;QVn$lY?D7j+rJ19B78GggFMQ$Zs9lPU#w|WC~~?doI{tE(@Q78R7qm* zW*XkIa|WyL%krf+xDyv%Di-X?M7; zUJJo>p26Z+p$p9$bS32(gW>3`^M!2MkGZ1DH#C=7E2 zL#Jr(5aL3;R*gm^TH+TrA}Y>|k8$3Y9kNiuGiQ#Zh2kr4Ld4twsP1F#5+p^YG9 zV4BY7EGZ?(TD%gS2j@jK#P{0u|u6(3N z+(#G5K$+a^(>ugR7wH~;r8R1}u zEzFEjU!aR@CitM^cG>PT^els-BBc@`WgEpcz|ygDdoS46T``!CIq~C(#6e%9EKcBn zvXV+sJH-e9C0MRl5FC3w`^PEGfe(7a(yme?B{yi#F}$9LqD>7Cy+I8LG+?RSTwTBl zY7e>YmNOak(9-_2T*L826AqSa2S+`Z4Rfbl@fS^?1am`9sz|O3~4(qRfuRZ zdN^G96hE;*`F-a1_>5w?Pmn=OdsM7#xo~hfLbJxL%GGNe*&7@XXi1?F4{{!~hqiSG z-Fba$h!Zbc$}T7}vD$z7wvplhDO+*DK3`N?y(zb81<2qEB_p%m5S)-nhpO?AepL;` zBFR~Z(wQddbNMKQavEY1rNI}yg9^=t8_=Ix-^#9d%8`SFg}n)k6+ileN`KbwDCL-jZjp+K9<%!oCgxGjBmYbFFn?Y_R?xqmF)iRN{6IrdRlpngq2{ZQ z6L`&*&BIW@i>DkF$*$7>Pw7MZMu`Z~dH7K>CqKrIPS3;^wD=`ZiARg-5Y*!?`4Ybm zl>{A0IP@v_oQM10Xi4WXsetPYI1z(mV^`Aw+J_odb>_+<5Yw3>L?~AmIC7pQGj&S zoi!xTFb;*_&=AXE09iKP)AY>;$|E_Nf3TCk28>dZ)Vej=%6DelD=U;^HcY$H>gls( zy8K#6CzNi)jM+!}7vFv+9n-n}tdbO5DZOUNvq~Uk)VfuXR(mo&m9#Zx%1TI?P!)Oy z1y$W=<6`q!Dpc2G)=rS6l#PphyJXvTTpAfD3+AdcDHBgM$JnlMLuTtBCG%20+O@GE zHz2cu*IrzdiJ(_@QhlqLV6u3IJv%#+wMu20OJ?nfMW*d7w^w9wbMs8~O2!xlDAi^z zRzwS~%|)hD(w0Ta@hw;@fm&Ikxk1vVMm1v9xb?VekW9&}^%Z5hXt$JX;3iDb!e%d z+sYjErQZ+}Be{>;+{OCkmu6$g4%Rss)&rrc2LffwS;`GVs~CM$hqw-Tw22<3MZwZi zbaP~*g~GI3t`npRC=8T6$fi3{9OVXZUb&o3t(ngSGO*BoazxJSMJy5l9$CR1!F#k3 zs1gn)#Ko`Kv}u;0Huz4WKEo4o(7mLI!(@HXNXoXAnHpu7v)z*I{wENTl!;3@0C9ET zZfa>VG{^Db5qZ(lp2nPu`ItLb9QJd;cCvUZAX-*fq zfydOla=>p2>|#Uf^h4Qt-V_|?=3SpCfP9qd&0C5QJ9nK(EeC@a{hI8?3#TM*+VoNK zSjh9SBd{Dv7;>E&t3B!Whd2zs7Ozg_Q4Ma&n)k_Ij{)UGEv13qy1yvb2Hs!a$g3BX|^pf?)`uYt|R-P@SG4YZKEg&r|e=X3W zfDPD5Ph0p|g`J|6ZpdI4Pqk&=1%TDOisKuk5CHwOMkd$-QN!IbWbxHrv&_nS$vXgL zC0xpk)!Qxu1dAzURJhD8 zHh`wqm`WwpkBk^Q?xyTy<7FT|MtZ7z&R716|f$ z+i46k6dWpAGTO_KOf?CadXG6`0Y^a+*I088=fgAw zIMr+uZ>^G6GlvsUwHz!85cFsggWL(u%@+&}ak;Pai)^63(O;HSQr^lw3YY|%#dB$^ z;lwtO2aKLX{UXu6U`1ea&Q!?oS8^vNWQ!vqt&Hbe!i~Fru<0)p4~4#c?yS55Z*K|NXz#!H5ZxOXMUpA zMv9mwD+fiakBl9~>ZZ;b(NS#OHlqr@u}tfmmXU&9H?lJ*45LZzD7oQgeJ+`>G;4&Cwa z8Ji;^$5pYpwIu{Him;K0j2bDfKXQ*8cqDdssKbYf^B0FS7B_e#CbPGDPZD;rU%CxsO=|MM@bug)O1gH_<2kLRDcnT0PbALh{5q-l*Z7GYZ!@n6x4zHSvTba zde^GLUmoo~wP)p_jL1bgXOar2-a{UT4Nk8C^-zj%lw5B`wEFfn$*p8Xeq|sFbLCDy zhQ1ye?W8zQ&A;E={}!6!qJB;)soarK#jkB^JMVqt_j@};f`iEY8D1cFKp?%o!D~;11(}5ro<2z^eRAlq+)|D#~Uvp2rRsn`K0y_bcsIadO>cs9B7?A!J$o<)5W z$31}nf}xIILzdNgR|_7VBEC0mKM6(5-w!(OLG_^`0P)pu=f;@zskaTQlNV*+kUFe} z0L0}pA^gTA2DJ0Tfd6yAI6qyFLJp*-4Iokapa3nP%vf!djqJahSJk&YEMUnq9I)!~ zH9Yjm4OBV(`~6w<0eu1Ssfp8B`?7p#%5CG@WI4G=g`Hm!+njjLSiWerSDji>bZTdF z4Gq{gE$7J~W1dI~$rbCe;gwVZT;bs86WWr`7)s|F+G{j*w_x}Z}oLj zx4u%AO>8-Qf|i)r^hV>1`cquyWxvZfsQUB9gC`S>w8VSuCVZ7jUlf1qyGrGj2HuMC zjfOeRS2);h5@D5JTIbk_rcc%_$}-=!>$myo#Tn!22H!&0meLeMx(ilv!_O`|4>}tj zOeXI*@!1LfkpypoKjPhSsr0UhT*>%5Ek3ji@McSxCuC15aELT1KE4Cdt4 ztPl_QH~ZGaP3c<*XE-06$@_I>^AS?Dcp$|jo~|QO3u2HI4V+?#JrR^XejebR^**laIqZLH zI~nS7d7bYC7Anhn6Lr}PY@L}ZRJO75oP}O{&Alh9_V-;ct2|LpNbO*?mp40{hk)U= z@GfNw0dJy<(Pm?I0neICGIG2|%l?ygmt{#-8_=BTbYN@;K>8{Pdcc?2T@Cz zap(`DRf(#s*49e9bvh9xyfrR=&sj69VZ@Rci4pM3qtiT3yt2a9Zm)38!B?&aM6jN)?8DkaZq`Bh_dVSF})TZX_+oJJo6Vi=!7#>NJ zPL(7yaj4*WR$&d4Rw~bmg8zD)GvhzHDzA0JR<+NS>0^A28jdEYpp>HcCMFToNR*eO zDBLcVxN##*31BYbxGn0z41s<|sOg0sE2+pnW9d1}Hd;@X)gH)R)fP_Sl3d^K9Ec!k zJeA-j#&z&wc(5yo@MB-G?fm}~ot=*rP3N73q+wgl5v;cRv9|Gy*C?bqnyL8`8yA2jtSuBb|L6ee03vpF{co-x;^W4f!B>ztT4E9d8qt-z&`|pcQD25x$TFp=L&dGgsr5JgvYGPc$-fU0ZA1 zGtURR+%R{_$s=Z;DSo~kO{ruGa@CHEvPeM8TLF0L_f01uHhJENwnRF7P^#O`eQ{Pd zO_#Ohk?RD)?0S1%d63UkV^5{;h?=us-fLZcQImEX|S9UAuDe!f|`ms#GEb*XN&2690dKUZyftcE)4MiJoO5|Q%6wBW@gsUtg8>Y z3&Aaxb!YxCxBTfg4qbfM$1V&uO3G^0$#?u_g9+7|4pzRyK3t!Ry-L%}rRbOdcZekOP( z%FHhnj;{_yggKw`N46cha&+@m@^Jm?!_4mPN7DKWLn|_JeIuI3X(UkFf_}Oy2$dbm zF9SVTtA;@9K2`5pwYZXBDyS1rRNG~yO*YyB8<)xGfBK`U72jMLmt zC$x&#gwB3}xkxGBbAgMm&Gon2_tdYx&J4>Y95yGkH`K&@@ha)EXI@D3Ulw(@>#L;lua#cia8DQuuoH#-iB_oj~%4TVqQP*yZykxZ&ls&%J%BrDXQU^m6-KS8%Cd-nRzvn zv(STCO=uX#EX6d6+zW0{%(*t#6@XuM#nlKPpY`i?ByLLgoT|0}7KdE6y{yf3_5S~1 z^NXl^br;^ZeQp|feg`gjW=?q?I_VmB`3CF*Y}=ak0dIwRyy*m(Tmxs*Dl@U%bT2l? zY?8TA<<_%&?Of9zC|*;V|H_B#YS0Fs_6vM_cz#wI3kFZmmq96#b~>jbhF4UD(`aRT za*GTLl9J()LULDY(V28(itkPM7CiCJ#|N`Ti6K_>?V8d3LQTaKt;&hNw9P8p)_}iM z)jdhmYG-)WBj~%{;SgceAW>I?=hL*AbOA(r=*OK@Mw?A2Wmo5tYCr=(Tqnthq{}&; z4GQbR6?Lucti(Ewy{1pqW3O4q&q{2qm$W+12BT*KiBMx8up|}|$rRa3Po+ofCK)Xx zAl&pez!NV6d^k4fAL7WpYZ{s6DYY(IbvN$Pwg%Z&EB;cobCOn}m=>Bwb8mb5LWD5` z)S8-Hw#>?yacQ(AX~Uo!~5 zYRONYF#4^h!+P|Eio7ZWyCP-0Je8Z;Ez(%CIpsZk7|B?aP@|a60UhwZQ7@jG6&Yd( zn?I-SqmXyyh%?fPNuQbrS%V>n1?-Xdq1rnSvwJZ6;)X>~YMGua9Lr-CwGwGnL9Ym{`j%(N`gX$7HnV9z;w4@8{yl0&P&XetNYm-@obKy`sB~Kc ztDwWv^s~zfge&I&9&P8Ng8=Uz&!AHwj_kX}5jRh(oucWw^Ns^@&FGxdTu1E|8ju$r zHKW(zxvq`R?C2)0V2UcCfAs0|XolD!V6bX<*o!?|un}-Py<-|5ql27NIS;Vv_#Nq`3fQD>*?W;0Bk!h#BwBZu z?sVZ+>40#r6zm?z-O?uM&*!k56Rw#Mf6L@ZM+~&N(m|RW>Y0HM`fKf)~wJvh_CwyQI)a43tWvW1s z>u;HRA+@KiqRH2jkxAXSM6)%a__FLD|&N`__I22Usi2Q?2xiTx#7V6emk@Gp)7{EJ(BsP_`hz2K?7ymM8L7-`kAY_@se zWQoA7ek20#DbcQ*h)J~Y!b`M?{i25&!OY2$0h3A9rhizKcW!ET1hsa{1mLlZo&v2E zOE2uAa>*GII1EmQCKl(-`S3EF5|tH2FY0A72ucw&3&BCADk7#U0sSivom_|qfxQ0D zYYxM)R1E?TXFuqam$=6g&< z)b_;r<8r6$^}(Yr}Ek;O2wEUS*tvamUJno;&v? z#DWbj%+KzGIIck+uyRg+)J$$hWW_tkj*53fe-=KC2ol=^){Db}qHfwE;9~93O;<_j zoE_e9@1ftkUv@0lSo3S)I4L$WjwZzJMropTQO77&Ij*ZTpVHl`I0H9LzN@Og((mQc zT6$QjDrYu9frUlW+2~$aWu!6sO-hU+XXr1Z3wo`xFBylMMXMT<@6efT-L@;qx~PFXjarpV2VrSLI5NOhDh>P=dM zBCorYm18yL&!k6hl1N+h+!M)f?2Gy3eq6A3=JfPr^^{WlX6*;Lkj+`Bo;2>Tn4upkBvQo)^pE;$U&L4kK(Q|P;FYD}UUnh1q-92 zfQ4&!k+Xf|+8tPo02Z&`{~x6wFkCK9J8np&@(_r*?G#RBUruR38;;&2!)9$Oe0MR7 zm1G1g9M9!}@?+9g2x$e06TkrD_jqzSgwoh%t6;IT`;g{cIj>_6<{gCpAW!zn1L3EK zUiq}%8)ih@NP+=*KuYi90YQjr2+cJWpt2+i93^nQZvB?t_UNGE{iY5z3cQ)r?LRWP zP7#V=k|?K{SzRO~?9;`;*+E}l#0s5SUrVD>%`|d7oldSZQzUAAkvcmK&0(TY3?>@G zV8>rE9QMw<{6g25D|!Fhhu@Cwl1`8(0#naKv=!(;es^4m>QLyvQaO#C?Pk#Hoiuq# zYc{!(iOi5nqzflTg8Ub>;;g?x1o_+7la-Y=Lt&SFs6!$Box^YMMf~ssBX=~ z6%&~Jiaul^yB8{{5YD9Yb4fG?E-SU17McaweD>9f#fRI#Tj64?7kfD1Pth+KvLs)T z3^=)Rjx|v%jvyz*)K$c`=TiB=jA9EaPX+8*9z756{y7UIF8dbFzT0Se($j5v^6u){ z0Kd_9GP6I6LMPriZeN%4?4+Dsn3>37qfAlkP1PB!pnLJLA+*5SfaqVzxVK` z24~UAP~k|^?EFj>l?hj=V2m718lmKX0Oxq&d|_S3x#F^;jZ(&xvC9iflL8=kuuk*SGzjSlfN_{Ptj{QRVx*ywuS<+B*R{+W8&&oV5|;Ig`I>Rs=-vK~EH zVS}EDu-Z41cLmyI+-!Th@Yy%shnPe7=gh`WKTvI>;tX!sT5$~ZsZj_7OLWpQaZ{Cn;?unAGWoA1*@%h%yagDMdx+iwu~B3d0b(NPmQ`9IF!~R%Zzkxo|YKpn_jnOf_>Y z<>PNMOsIz7@|cm7DR38(#w*KA<7Z_Tu;9!)sCFPh7m>pp+``Loy8wK0eXPD$`}tiJDx7 z4!pNO?J3`U;?l=9S!B4Lp$gXlNl*OGe|Ek*8#;@@oP;VlxlY&UWbJGauFjiMPq6z& zYlkl)J6dmxt=)mazX1eo4~R@#HvH9EpNJJSmO71k`%aAr5o57l?DiDuDtCN4X|tQS zZOo4^>BW>8VGDYg9=@nF^0N=Grr&P=uFG5_aTi zG?-jt-p)HQZZK)X+2oh@Fs2aa7xNo@O=wf&N5+o0w*A5m z-aOup#gvwzaZ-CzK?=*t5Sy$mFN6?ia5#aIk!ju+G(QOV3&&Pww!SO}2PZ}%_N1l` zWjZ!8F$N_*H;oWE_Fi&oHX$kL5MbMu+XuWgCE-o4l95i#>JvJA zgS!E(8Nb&}U&Y8ELXYY6%~`6rLG(ywzp%RI*L^<8{oFQVFadui-bHr# zc6nWP#nDrRHpcEa1~7X6&`%Wj z5zr5sWJ8ImOObZuTz@3}`PYkLegCe@Kp#0l*(Pc`v~RrC(UR?3?p|D6y#X(zb+m5MG;MJ7e)15ve-Sbh685di z0fG*H*jXBSEQuA8A!)=BYK8PXTRTh5>O|yg*3M&q75uBR(43vzgu_$TOn9&G#Dz>N^$B>w)=mr*-X6vAp$a^`gJ!R-h%t4cR zF()Wh6;e{Ve5iDEwSBw$1)HOG!o*^4!&9><9HkQ}kvNHqv>zQ0{VFB(m4AF(z*ng$ zU&Z#e<7qNGOel1~B7&#Wl&(OaMd->I0q8yxjQ-WpW6oo^2Digqr3ke&; z-*p8EKZ&n?)#7S)#T)VTk2I6HXI|U;JpdcB$&6n+dc~{@%{;L z!0Rt_8LI>CE0b_e0?fjD{`7hGqt|Ju zA3r79^Vl@mDVw9GrZXs?K{j#@l{)6+I7C5%fHMZFu=P>0g%|5u9iRYsT$$Q|D93ySCrr`te0Lrjbi zo|}4?beiMJ)4adDH{Qb-l4IgR{>!+lb(L6VgF@kLzRD(+8>Y38Ze%0P=K`DFd;5ZPlEQs$f_Mnp`q~9wW=0 zt)+hR;)Xc}s_AJHfN_YRrw?b&I26;%x}cDByNo-PUYoP=qbU$bFRO_pBsDI(TTKX{ z3%!PZ!>PepFgi8%EI3Qt!?g235hJ-Ztr?u_vS^mXxy&6|0-f~pLv8BN+Q&J55!nuL zO<|C?TXINlj$|nmB_%}DSJkliF)Wim9qkI*VOT}!5j8OaXaPcn(niktyK)XG>#s29w?To2AXM~ul__p(yn(RemTC{9~b}d z^i|c5HntEPq;X9!0g;E^6=Jfdp;B4C8(_|ce<*Bl%nfkr{<-(XRnTkxm-MI1FDje8 z7e&R{&!Cza^Rz5m=jyp68mu?2Bf=7mjErX8>W0>oaGkbf`)p!& zpWNkW3u_0+Jp;w0#!K|IVmUy=4?DvctV<4P_~U!GfAO_5YSm88JFD9PP`5ge5c1W& zOy&7KI_8eM5$q9sYy33#;DfLEs#(X$Q>|>xqLDq}w}_Cm@b2EIgNNyDx8K;HzH)H4 zfTv-OY=B*s#_7STiIR4*zpW4q@WXOndzdJ1e7Y=e1AC|XQ5eQgbwUwRX1--E+_ z4kV#Hx~<=QU}f)G#)meEy}A%<4Yq>qj|-Znub)nDv-JE^fZv}SmhuFA0O7_F#tQ)592VG*f>HC4+;=#F4N7048ceqP!`rgr75;*4}iqQ8D zrIs2*AajqZ^qkC1Nay6f`TmMSrLYt(6-RxGE^%jx}RenXZb zr-0XdxqA;Wl)J<~ZBTb84=y{VYTpu58(-f)Wk2Zm!9x+%X6fX*YmuEs>SXe)`5wO( zQ4AZ4cZ|vv0aFmH?^hytBT!}Pt_JuzsJwjkP#v=0Jj`Z%Zb0id9(=1@xF6A$+F1C0 zAj`@yvb)@+sPo>D&4L<7C}t7MoE>1ScKAGuH1^LK}? zjP|VNIfa6|cFCuxUnrfeY{Njjj%0asRB3&d&b%cl33qg@`^@OFd8>NP9_;JTWx#f) zfiEx#3#xNMFMLzUuZ7c6KbKY zTb^}=4-Pm%#Z={15ie}+3Da6l$?VAh0G&-^m_Pa~o&ECr@8Zo5OH1d&Be3-+8f4cn znjx?_RZXP`2w72JGWG;yYL{x7o-wxV4!7~;9dv0ss+v$7^!pJqRP$`tUI>A4tBX7# zwh1h7Z|Z|WxmiNoL`}2Bw&cH9LAdECrzB0SWQ0VfaGtwhTPi{+XC}k_80qlqdwXmw zilqa`5?>MFxZA#8(h1? zelOsv${7aTj&B8w44b6!`yIvUQv7H%ssig|SO@qgt6N42B@d-}#7PfPjSNqF5%crOD z<&m&XH?+Vvsz0s(ytp4ClKlIG>j6M z;lzCCm@6$T9qN`X6_mVUCkXz;D|^-`>TLdPLMBNhsw z^3(6A7R#=+upO=@HrNp+=c_q^LFLi|;X`BH2zwj!n73YuhqAPZZ{1Ehs2fP$Y4c$@H- zab5S4h2}V0;3aASu=eh@KVBa|Nk)rNQyvJR^OqN1~Rpv4L zjL(||J1=7tMhg|9O}O@X?$?>RQkO{!Iz|PbMs@zy)mf_$ltpOo{?EGel78L-V%L8- z9v#I8`TE_ZOnW6?6(o2h#%7YP>t4zz!M+qNM?Qa1FUIxly7JvH6?7vV*= zFtl~=ziZ@Ax)f!hj0Yyd_R92E`khrugxFkF<>B$?vT0s@p3d5j$f)5S#vXr&O>R{t z%?J6vqCL1bF0HxB#OzXECv7l<)t|5NKLjs%@I}A1orzp`0D8S-e>mJsvd7FhhnAO# zsBVfc-|Rs=0VFLbHw+3f%t${QM1+Zd0z;Ra?I2ZATHM@aPA4e_1Fh?|=B1D!u$2Zz zFUuAsEYc zmG8y7p|DTy-!IFZy0#m;!^bo4L_At83Up0oI|=kV2M&bY$eYnL39MYn-) zBCG-kJrSgcEnE-xc}RyDrCMz^$+=)V;k;l`<5G1bOWc#K%gBUP3}h3 za(>cHfDg`7W6nS8ihS3zbFoxR^U*7H3222JxcV#g-XWj(QPJZX>Fb)&6D`ab>^4aO z5Ze4CUVdoUi7ItHV|hdFc*!EjNHj(48e(kO`H0~OSDq3snBZwCqe#N?>YV7nAxlyn zG7N->ba2nswlOg)C-I!mLMyab(}R}0s%@(lJ#HB^0tj)?5$7fWh9lFupiB^`7}QJO&)YPw*6;00O)C z!93Cwg4`sov%a1$Tmf`@J-^-GkjAUwoOkt zO56CyyuP+(<>6ma&Att{9^!|upc-#?t6A?n|3`gIe8(eKj?eG=zQYzTw4=$Fc!dFk z;hyUcHK#Ex9_(){Vec+FKMw2_eh9G`ht&+eJHiFg=Uh7uiRBWX9uGx~9d_`?V~HKd z5ivIF^o~qKQw}3Mg09b*pHQDBuu7+5{<*r>ss5@KDX_PHGY)W6kYU-k3vRJrVrii| zj^_~{vA{IO4m;SJaUG#qM^jBqOH51b0spCxY-ivg+5%Nm2s`*UV@X1VH~u9$jpQh0ESdc# zoJ({=NKVy4hjBk8S-<&_Zm_L$Q12SknrdysSAQP+ddjKsYUr-#_*J^&<+RFB^v;e^ z`rCA2Vw6l+3tdS`LubFaS?p>TaT2sf&vxGDt=;8)EnE%{>tmB&n2=_i3iyt@v+zgW z7?I-OBwVaB?2o3-!X&IHBv6$Q@zC)!ALTnGW7;5xsWBBCNfgZTovxLIPs`p(nI<-= z8>1gFcghil(UqNUe7dGi!=S*5h}kg!1kUL+%)eMSh{c1B`E&cM&Z~Goc3RxWGcV|8 zP?e;a&?IwRFU)dxyHsG_#%34$TF=SnQO%~IUnZrp8f-FQ+6#u&_6_a6WjS5(F?3c3 zPIq9zHq$*Yz+@%n#9z1m_+j);J>GT48CM;!k?DDdYX;7y$L{pHiofjk@VpZHdHIpM zoBrw0o^(Tj`MTb5yn;@7$#-TFnpt;F^v~oaYeaK=5C8(^2)S0E?u?!LPm19&0N^`+ z3D^bT*FVD+o#@-Aql?;Aj|D%H!uA=~n#2ZdE@zPSZZ> zl-HP*)oS5-Pfql9F+g)wD3GJ|P)pJWwo0q`Dc5Uyo%tBv}eK+Y}42uG?Y;NaGA(GeBrFmd~6<7^`_! zi3Qc7svIR%r3uRTR&IdIa>5Ijh5AQe-pt9y&R-MGSQYB@a>%-LU>PD>` z3 zD>BMpiYwob*Rp+eRn>M?Xq~d5_VTaY5^Gv>e%f(pmvf*{jt$zAv)jRO)arTD zT5#fH1OIzccx60LYi}rnK|YvJT{qFO%~Y3dl)lU{F6QH@objF+<65qrQMuwZjV$xI zil6glXy_5k2eNC_{#ry-{k*oP*ayl!l9+d_m2fk;OQawbYTz+};KYYQn){2@YJ)zD zW0Uq|u61QfI-A5S3D9_P$ysQ#=?=6?b;=3g_Dgiff<2OWs?liy`fLCIG}xR#le6Fv z$=}_rQw95eqEn000(95_005)|?+!`WwjX*%t5-fSBiJ|e``Jf~f8s=b1cVML6#!cWXwo{(5AJ4> z1(X&FS?s0#_m)R+rAx9Q$-MI4u9zKn9pW#gGkGqKY|6WPlOJ!%6t+^5c!uIL!n(OFl!Q> z021qTP`;EyB-e!UIDuN@t2R8b#^q@s4nK~~*I2v&%)T3gt~?iUXmLqu?+CvY-}ZX0VW!N$^%EYcfQ2fRLWem6$8-oMIV8TOX2u}w^hpk10u0@7!76AuFN=rm&q_p1piff$= zhz~trq*oX);w~gN>P-(&-9~;+Q_BZ{qmJ=u0t$GCjJypS8y1|_%VJXlgj=57=PoZa)&u6g6eK;4rh-TUzfJG zE%{Ey>Ug%{mF&m{#1DJFeg7U#KRn=13-)IL+X@$mvd&$dMaA3i2qVk~jKp*A3e$mM j_b|IPGVqIv`mitp26GE&oSMXm-)DYfz@mv!6#xJLdS3+x literal 0 HcmV?d00001 diff --git a/interface/static/fonts/roboto-500.woff2 b/interface/static/fonts/roboto-500.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d8a648a0e5741af9193ea6aeafbc81757470808e GIT binary patch literal 20928 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 literal 0 HcmV?d00001 diff --git a/interface/static/fonts/roboto-700.woff2 b/interface/static/fonts/roboto-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..330b943173a6cba73e0cef82b40015c98ea4dbca GIT binary patch literal 20996 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�eATJF87=o@-zZTfN( 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 D5x}xV literal 0 HcmV?d00001 diff --git a/interface/static/images/ncc-wit.png b/interface/static/images/ncc-wit.png new file mode 100644 index 0000000000000000000000000000000000000000..edf1c17d519595c9679a9ef05bd7dab185453b63 GIT binary patch literal 3217 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 DiG)$x literal 0 HcmV?d00001 diff --git a/interface/static/images/ncc.png b/interface/static/images/ncc.png new file mode 100644 index 0000000000000000000000000000000000000000..e95f9da3e27f1e283bc44fecbf8da5258c034888 GIT binary patch literal 3724 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 Kz*=?3i2ne$@pY2` literal 0 HcmV?d00001 diff --git a/interface/static/images/ncsc.png b/interface/static/images/ncsc.png new file mode 100644 index 0000000000000000000000000000000000000000..819ae6be215b30f4fd66bd9768023dba3355fcd5 GIT binary patch literal 5047 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 Vu4wZM{^zq{y;s&!s#35F`yUIe!P5W$ literal 0 HcmV?d00001 diff --git a/interface/static/images/nlnet-wit.png b/interface/static/images/nlnet-wit.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc00f8c9a8ae131fc65298821cc04e4e97ce294 GIT binary patch literal 3835 zcmV00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP7fQ+8H}1FmnQ{ zCkS(bsI!w!r?$j>KM<5b5TK|(PV9ug8O9f-9TG@uJe8p zAPy6Zp5DU{H9iUixImDAnqT07{Oll+%Yg(Kg+LU9IQsr89H7RP#f1^m<6rP3Nw6ao zw5q-%gcW0q?H|5Dgc?^4D<`IZ|A_XufkS9XG)VMNO88MX+k`U2A#Mgl>zNk}$*KsEdu_Z0(p!j0{ z*?l}jjVpnb5!0ieF$e-7iadsAW8Ce3Biv{PzWov1pn>PMjwLI;yWii(5o%m|tb~~U z^#WbtKKoYk@a!En``aSYs+Y4qf#Pl^L5-xGwRy^^@nH~R1rP#wV%~FAra01^1fXnA z@}8C4YJ83z)VTCmnwTE_f=)qCO3*72ZOq$&$7DdgN=ynldsA2xpEWKamgh_f?&NO~ z|8U=FeB{dQSgzOl?^~pzu}D-CQP}fkwkZNp<5HuEB_T@pKRDXc`w8|O+1hd)qPWuQ z>aPTx-0V`jUXmnf%byeEC&*?H1QD(%9?QZCrev7l;j@3D@5;M0 zX9|)$fryB54R{Y8+Y?fe*D0hX_$^nD|NYB^Hj13KjVlac78~Y$5(@M1U~XcfZD{B4 zyn_;}v%-c`>Gn22qhlv1*NTBjh`*!8rN&G#XF6+z>#VC~`>FE1MdI?kG zOMsCOQhfSnZMeMbaEiG{FYrKIBPYJF5slW45L^=E2}cy=TaLU`*kVsPRM?}!3u0Or ze}=x81!56#ZQ7c|%HI3#XWXe*c9#vdI`W4m zk1vsmXtp(y>t&W_8OWr#69(s^|MVS>G6OH4p@G}NjaxENTe83zG1g1^;?+Fgse=)> zWFoGcWlgxS2@(D9wL8p5zc)4aNPo9XiNpmLJs##e;TRFymXlmQLZY`{{@Ig~qp=W? zX^?#MqZln4%5HRCc)35VrLWk2ut*G)ZeaiH5A4okaTkJNn>$9*OSx!i-v>%La!&|q z*HdN($oGX{Tk;RG8(F-xny1RfHidleHX~2vJN8Q=F5*UlhgJNPRr-w$a{1Wc(RPYD9 zqysoBorX(xPSrX+XrsDKsH?fqN)RCLMJUZ1piiQ4Jrli>x@lgY6s{qCx1+A4=$T-7 zOHRTm6fvEJijvz_BPxf_Dt{XCmhWtEXDQ3x7%1V0;w)Z!dSAHWJ!y+v;t0O`>>h40 zozHDs)CvfS7|692Xdu<~Vn@CwSTWQ$zr#)W#(;k(V{9iVOk}6yTlq*WA12GA_>sQb zQ`dcTRo~^yY^hbdhV=1(OeDJk``Z(|GN1Dj6+=1amChu}>}zvC$ptugm;=-W8mBmM z5e7MmaF~O?{tz)~a5H-$?l6%0A4a`|51(ByE+M|uxyaDb~~A-vpVAd$KHT$sV@ zq#|vEF0a1~rc=R0IvZc7Wvb4d&V>G5j7S8DV-`!=9m@OW4ZJ1cl1(e_u>>KhIwc>8 zMvFhQpbiHC^TXv=gkHfNI38_a1>kr4{9WYwL9tI=+`ePp$O`TyJQ)A2SXVQsE^2)U zZLdFNtYUGQy>3%~zWeV}F5V{^>O(4&q!r&AG+UNQh=w z^4#_8CRPA(j{jEnT*TEYJ8j1h(Zq09hv7bPh`k{{TkIzJRf(7$N(iZgv>bLqfl%2w!ilzFiUZA^=GZn>*{rZ? z$Uwfu5}2emq&z}AmzCY~ibWJ0_KTok0T%rEwU3%MWGWVusfj`Y{<&(r}Nc{`0rv7fl~+pyY!JR{B|EsfF0PP zH&NW_L3SIgKo7VI;F%4!loLH{_o+vzzp!=)S9p_4nK(s5nWL8J1qIO-F`4efSSX4> zaw%;`8F)n8ED=>Cls`A`g9{MGmznl9j-!}hoZbuNbqMp$+VLOgyYh-;8JdKt zZCTDSYfe7HAUw@!{jKkQ#g^kll2|Sp!8%9_=Y8ZVRPUo}=Ndb~s~|NnLM>zE!zWyE zy+E%aW&%fjT(v!b9|JoB7%zGp7^miNokd;~%D8BXp%Gd+ zru9XKvD)gd9y%PgVy!+dAt)!9pC_Q$jTLUuQ$(AT+I-d>ezhJ_mYQ`^jFiAO?U&Vi zX)M(_l27Ys9&UVf_$#~gKJaoy6Q~Wd6ThnA^1C{5T@#b%h4p#DI+%|H2upFMf}NcX zN2enln94!u@?dL6twqEGxo)M8m6+|pVPF(z<(A!16s>r_a4i6qGDyyY%mb02T8J~Z zrH$X=)-11sm~|L&usgH7>_>^Cb|g#B0V{Sz`sE@c9aOIx>j`0@OQ7M38mQo?H9>bm zk{UP7x=Wqa;*_N#X>u|~S{{_-=ePB6Zgb-XhrStkStSoaN2`3}m)X6{=)JPz81)$p z4~&m{!_Xj86BIHxN`thh*)t|v zH6obkf*q*pwAGP^1&&tr^b^lv7hW%Tjf+EICsZJ)DyV#vj;hnm6$@b&Hhkf!WXZE; zZjIF=@I7$Fyv#xtEAFvbw2|r*PS)y*+fk98#wvp%wef}WkZ<^6oGFgQ^1Fi??;Sze zLoFjI-#5xQ)eIt{tncA`;3K3fwAe03$ANdIjnjl-2k*h(kONWjyQuL&5LC^mbdxkp zVXE73bENp)h9$})Ia|+>9>ZZd|Mn;BgkjErIy}3EO?x+o6D0>KxS*pV+eXrn88xZ% za01XHK!4@HwarN@@{EOw^!BN?{64bswB=8S5trF-PkmkEHu7z&()mVqJ!V~2@{tu0 z>TQEjep|O8ay*}Yr}?`wG1;J%TM<_x3Uq?LW2M&y9O0?wpebUM}Rv_nMWbgVYtp<#nWg zui3;R`4XH@u$HGj4qnzrg%eivb56)?(hu!#Guq>NpYL|{d(79hSGkg>hm=ul>O5Qg z=7o;bk->eCs3k8HZ=0k$BW*pUGozT>_B%YMpxMafQKB(P9m#F|o1qm$ripLw=;{5X zj@gN!{Y;L5?dUphaUkTL+>u;pnff>Yv$*W8=3pe`E{gry#W}%s06T_D5zVG1a^6=q zv1qV95?^1J!Oa3blgU1C9!$9qF$qVyncHQ1!6%dmcj}7%*5eN16`yU%*{isxbljRp ztcy9!m3U5)uZM0&_Hj+rl&i6bP z^2{sGkm4Bb@Qjgu_B%W)Sq-Llkcz`yM}6#P_Q{&QBKXybH}HR7)*cr)xk&8$IQNCx zVBf`>h%%DD#=_+C2Gc6g6l}ivpc>I&s@=UfG!NXc<**>$a-%uMYy&DN@ zTs|yJObo^L{HTI7yIq zfh7L3#A{q)ENlVK;ByF*An4co>wkD@+lKV{1{>ZOs0Fu)*Z8nlnwW?R5e7rOKaZTN z9eC_4H6dMXtb~||MM73g)P!{Pu`*&J7747I5x!F63Sp(hlp%{h=57(6NYlsTy{d`m x|COP)00009a7bBm000XU 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 literal 0 HcmV?d00001 diff --git a/interface/static/images/surf-wit.png b/interface/static/images/surf-wit.png new file mode 100644 index 0000000000000000000000000000000000000000..39ef3008b866c761cb78787fb5f642156dc3161d GIT binary patch literal 1366 zcmV-c1*!UpP)Ywa{0;Pl&J|+MF|Btq}KBe9c3<` zSeScqOdI~NAbF~Ih!^A^d8*jNIc?#wL_TE2Q3#VAr{qE}xgw8_BMxDo$szER0(ndn z!iMV%i1LL}^7!~jx3{xLsdV70o z>W__$iMkUL6STa%9Q&CE2M1Iv7OA77gVxs8YCZ$!W@l$(uj}gS68A;v?(Tka9`{DW zF@a}aT3UMY+%dRKfY>#!0t?u1L1$;Dv21K?RO??~U)P+wxw(n`+|kj|YMq6J1?@Rq z>Fetg_fk1NK2E$&cTWu^a!8v^rOnMvQB>ku=jG)kxrW82>FH^zm!6&;${KHMDj{S^ z5H1jk;QD}Dr3f=H4no*-F+V?FV?ec`AVlIh1_uXYuie_(ihUmqE3R=h8!J&%AchnK zzz{lPG!h7+-Ut7qvB+ctUaETz7thy7tio5ch4%ONi;$sq_{{*xf#fx1f>xd~H8mw# zrR*~hs!$*h+<#zTfM#Z9oP`1iu(-G=o2|v1>tIYds`R+;;6=u z0>Nt#yPr##@$qr(IouO{osOtS<8@pLpB1da7l1J6Y)?;5h4JA%ssIp1H>P+_@C>?+ z+=LqXvPSBT9>~reBF)Xsi9sb$TO^DHA!V%J+uIXDsz?u$m_m@6DP3G#R6iF3(Jh5}j>$=|B|YawiOc^wAW9 zWoH{#2gZh2y6a(FWOi|0qIzERdeyTK+EgI2JeTFZLkAYQu;lsGrZPHM%)H9+3ch%B zq-{bCcj${oMn)1t7Op{^xPCx})HuV-R9%MJ|73+1y6T@`O9@25D5^*v6HZqj5x#cG zlSCoh59fq7ZUIMB*-qmz<1T#RPq<^_kUS=k5Pfp7K~JQ_p|{MF#{|OHFLFS2oWjDC z$P1GM`j(yN?qA|Icz@>u=0Eb}(NX5|BaAQ&C#O3Rii7P(d3ycZS@TpMM^wpP&naE9 zbl;3U$}bKiJ6zTScl_Z}3>FC>wl0m#E8N`c{LA)p##EW8wtCSd1`eiSQ9Y^FQ0~0%oyeJkpoNn>U@oB(x zOJMo)_Btt%Cp|%B0qiPhJnQ7CpP=F~jaoLw8p@MRetwp?PJ+tpae>Q6O3xjabKP#3 Yzcf^F_ke-%r~m)}07*qoM6N<$g3IW0$N&HU literal 0 HcmV?d00001 diff --git a/interface/static/images/surf.png b/interface/static/images/surf.png new file mode 100644 index 0000000000000000000000000000000000000000..eae8244ca8dbb1820f2d8c843c6e1d843b145d4d GIT binary patch literal 1168 zcmV;B1aJF^P)+iFC)j{6f!P2a`{wG{F%ibH1;N(_ z^nc&|z(^L(J-X7BP+BO)SN2oc4_r2H%2w~MjijyYx3aae=*lcq)>|ij!Y&OGsy+#;@@hfdS9;4Ig?A2%8D2n286Wwli+g`Q} zmhtmEW7~Wlc8)w)Zn`(M#bS~B+&PH%z7Q5;t8#2qMz7b~)>qEjDdTlsyUKanIzbQ^ z%SAbI}H{Mw6Pjjgi7=;5AKeH*cMhjTBz%c3_lAl)ao!G-GO>Le zE*|GdP6s-Q5gopWkMruabr{dYc@W^{{dI+8()Zyo@eRp=#XqQ+8}0oZPM9)0B*Oev z_78&e;Z94IS%?ZdZ>ylJkL37~hnmmS3gF>5=E|nZ_$%P*fcrM@<|x63?D1XhqzurI z)BR1yL$b?p5kujn5kO8Dnh%E+l3P$*2VKoM;LkuOg^&{_fWr!IuSkg!!eIrYMe^Sc zJ?qmfR}9w^qW{Y6M6qKDL7XUdh_1e!C=JAk(m-U z^UH4Fuz^4Qen<5?xxe6k{5puLHzxx)j>1DV!o0%qDHt)YIE@&br}hr{wct1wisK_W ia&#yZgZpXoyu$y8wj>*@iEM2E0000m`8(;AKI+N3JWQ4-557YNW8jcB7l4AlWCSp88Hg(UQE4X#kM zX!A$XkNiqeQEkxJ1q#z`id4?F7Xa_GZAr;XZ-~<#JjnUC0a1 z2MKY!_vyFL%2?p1P2|Ow4h$vwQa2ZW@3TYT;BcS7Bb!4upafM3!Ezwv-2mjW1o{m% zj8QI6hOy)C$QAicuu{7V4i5JTluaUPkV6~fqC{Q@KakKso1_dPXu$d2u~NxI-uCSR z5oQ1!9PT3sb5lIIcQ_XJ&qyKqg_M)f2u8cVGkpmh9PV=n_z8gqd^Q#nk4q`~QSS5$ z57H=z0O!X_AY~Ed(Yr{t2^31#+%&SoR>qG-5=9J83_{!=g3eUh>qtr&j|(pzli;DH zPq`seWW52hR!4iL0&=A+gL3s95kPMH-~8|E;NY;u5Zg#3n)dZ$-UUb{21RcVh>j%M zE;Rdv%9)-8Q)CnPSJ^cQT#=NRb$1G9$9jZUt@p$H;xI;WByresSXYuPy!hZ58TWGj zuHLlhOd_oW=~O`EkaQ(xcob7=mhi1aeG55+B*A;sxn@51Rha&jX9vGD@Ps3Z!kkBNEat%;vkSx96;IPH8CQ0VM zvH!A{-ahQ@+^%8~L4XKCl7to;)q*1t1(ZBOW^fF?*oK%zEB(fh%{VT-|Q z=Q;m7NRVD8NF2L<0y{sg#3$8O75p7KU?(Un2`x@ou4n#TB9U9Eci3`RMUsUV_m7Aj zNRS;&5F!UTB0}6Eh9N*oSfmh|EQ&y)Ng#4DZv}cv@23CdtvAntgTod=i{VaN=Hq_y zruX1p0dW~hkhms@QqGjxWz;V=+LcWrIYYKh&~R5I^~BEO zM~)ns1P6yLfEG#O*SvADdzVnQ2TBn`il#I%gh?7Hf$@@(RVpn-B>I7J6i!k`HdV7k zFb93N{vsW#&W$^X;;>cFlqB;f4-AW*j?4a@9WAPoQm<@jqONSb6Nx+srHKL0YRNhh zBtYWSv?Ng*CTjvJVh2p``AxX9^9u#=L_P=_wLc5FcHxh+* z853Dnk`F>PwgbHK3dE;BhR*kHWV^pRa}69EHVM=eFs-PIZCy``M2u|>(2Is0%-Umhj+)p z!C{j?*(9D2gV5P2=$E7(j4SENIA@Y5;xtL2C5b%+tnCp@%l1iARcjjjwv8jydW(`i zN(!;@@AG{}s-Hee0S*qE1WJ;4zIVc-Ehj_{Pp^*qPn-ttz#-k4XRbrz)~h;pY8%8J z`*WVrLc#FKB~+t62&D<>T|AqmPCGvGEiGACdKf9v`0y$O?_Xu2K-0Dn$z&Q*DOz;Q z!xjTdOCom~C29eFN?=}@pG7{uNKhT{Qo?$a)`_PE#r5L-yg=o#%c5tu67hcUJ=N*e zo-9(2ste%lI|SZtbo-BKsY0E8H{SOg0kzXPXr zyfnIAjJp%ByL6uMFTD)@qc5~hArs4zai|>l{9v1c4@-@l2jtH{F};b=R?;M z(U)k-YWZdD@^X6^q}#OPYnI=XotNdGldULnJrx1ajYq=9t*{BI1GNcDw$%EU? z#2aV-c9^ot+v1O|KT>w{obibN_*!YDe(!c!=sFZD4rbCK=BKHXHa9Dhg!t$xz!%S{ zjHzQo=RWkD#*Y4UOGAoXFX@}5Z6N0_V$yE#_WluU1hIkB(3pHh8~wat(n}<08_Uye zqK~1Y4q%7TeF4jz=f+5LJTnU1vf|RZ3~jD_937GH8Z{(dX)3w^YfCQbR9EO3YlN!~ zikF=A4B)b?H8Q5TF2^JJWbks4%X7(!+j3l*Mmb3b;{b>lM&g)(WsI-(KtuPVtwjJL zQTAT-vM>s|Er-w%aj0z6v9h4+Y}UL?eRCXc(yfK8l?SyO)m3snqa0@#!uMmhC*4yy zGNxS6T4&QwsEyKXq||wS-Wha6;NyHvbG{V+AiBFTNR`vz>7@26FZ)lHyqNDYEh*N{?Sw_oDMzG`unI_%T=u^?!aIRjn?FKlRtzBeAWi zwt+GH<36rGCNt5r+%fW|(%d-YMkDc_vww33CQM>jj(-nwW0(;(k71`G>Fkk-M$bH~ zjVxc!MLV5r?)qGv#wweEdFCa|=OWx2uk&-ME)R%%ojhyrnE=T-LooPTwTlt)5lgB7uvn+w=S=YD>SqMkOJm|Wo z+tjOngY_EXwmV^^HMn54-3hB6B`yo8kEGtd)+S#gfyS)&wxM>WXGpCMj;3yL47)mlX!`A zsIVZVH(Cl7d*o#_`d<$7nEOBzqq)VNK0r}Xx8<*R5b(;EVt=Nf&SB-JqA549d)l160H zktQQy=dHHOTmELo>LRRdn^E{#bOY%6K-YI8vf1+GUQhZ7E}?`~lSEy<+?y(v+hDCDysv`6vwwbjL|p!8V$5T%HK;LfYi4oZqt z7Fzt&G_nECo&`U;u7~Y_rB|&E!O{}cyLUrs?S?f59>EsjM!b((ZYa_)d2WzlR#D6| z1|#XB4LS<&=;c@DNI z!x(IQs{JBgqjejx+ReNV^^T0n0;_d?1y)T>S|YU34hpbwkR+o1FwDQrl?FSi`lNl6m=gpgcZQXg=jsU~$!o%de_H{V#5b1?n4YG0PxlT}7(vox_P zj=XbKZ%47v_~8YV6s(>la2D+IUvH9;o)_FLsppp;=!1cQfwf3NFSfwWX0Q?483Bg*l3~@|7 zuJC;k+JMtfa{5vBewu%iL7nF~YBXo^uU9V{#YowxtQpQ{3_|rcW7UOTs)jm*Gz%Svm)POv&g{l!R~4Cn#mlp4tI zzPLZ<#pQ_Dp2RhgJ$f~rSI%keBmR|df!H0YQuTj*9((+>UU{eODto?;>CT2#KuJ@7 z?|HRfEB54#rg!ywM{&07s}MWPb_q(8$`zdPT0p5%!r8P>?x0N~;QinI&g7A&o^c<+ zbJ!G6k|cm2Pb0cqLEB_uUa4G?Hz<YBP7p)KHrY3@@k7p zgVeNtM->g3iL3K8WlZ-(%KE$igv6_18UeSDpMkrNJu~uF@EP9&N$CFU%NvQeshucQ#lu$dXOY0v`+ zQcdoG4~D;8IQqmBec<4*Nzgo*IQ7Ce$10tB)Qpv+FU)^}op*Uzb!=sztMecbcJQh` z8v+&Wf{N7lSNxi6l(^Vrv*NfdNJv4pn7|Df%#s10#TnlvRx1^CdE zY#yK@B56WF(}(mo-_5^e?s#G=Z_8y6u`k@6Ct_<1K#@nKjaR6 z@6Se3rJHDvNIt$RwM~-p(V$O(Kto=nI>Iv`w1XF{jeL9pQQIV_M=j$T%o3_@%Vm9Z zSCLF;BBBJE`SNL)8~80}i#Tjbh<2WD|Ks0{9~}GRY+_{=$r0%F5_P%|J9msvEhgxj zTFskrn)uAsZ)Q@(o7NFreYK~4^~{zG6*p;Zl%zB6>b$#9+LbA;ek%H*Va>Kq5B2`^GDo2mbB5N|NXgLP+adz%u-#kb;Ef zZesJXZ2F{-`6xtPOAj*AZ-31?C`g)>1St(j zp@x|mOf<#gR#ohP7NI&z>ftqib^9U&2oL}S{WH{Ayas==GD;@1PE{+BgFq`>n~xAOo%F}MOXq9H0T*s7t*00 z;q8YYK!E!ga-t;>hmhDOVn~i^ONbf^|KjfoR5B5$n>e(o-k)LO*)0hO5a2$7giI#R zMi=rzTA(3}zb!f!#u!sp+)X@v_<`m~UF_!cAAPPF0tC2EAj#*@Hl!h^LCq?m?<&x< z8t5GIm?D!IDy9y^UHYA$~l0tC2Ez&?q{LpS;$NsYV^meOFOPm%$lY&codpH91p z*L*icglT{P0q!FR_s7JcEiIw2)ux507g`U2t@^6JH*y{V1h~&3;C~5p;2T3B@g=QA zJ?fo$At8>62rxdD2CXMhAH9QQyMapSN)Sd4u$u9iNW#RBq6xxQGgQXnvLdQ=I4op1 zq(P#mPo*JKbioFlFQ7k@1wEJ1DwBI#DCl1MH~)PJ0t8rP2;EB}3j10i*$c5qlc-q- zq9TgE3q`-sI5SZ&CY!*2*{_M0%t-WGhRlAH=8|{FpwWW;~L1M5Lkq$TTAJQTW4IV-Guz~X+S!y6afK`S? zNizBTwhJ=8wnc7O%c+PUKm;L8LX(X=;YdUQ)<@{PyH*#I#Ap*R1hEA~^5c}e9s&ed zWsnP9ocw(xNR2~~Fp7Qzg`Z~Pqr6lF&x;2*hoE~=C^>}hSU33&ktmp{53uSmk0evi zZR-;2ks#|Gf)F|AAR>f)#Bd1^6FyQ1Ll!2G@CZalNY25!^gHo?dF#z~2oPWup~P{g zCG%k`dQ)!SA|R}b8YFB8!p0e!U9S1%IPL6{Xs1BOH$lgpm)zUzivVCmIA?8u4vgMrwZt?rivS3ZxiR%DzR}WXKxc)3ECz1PHK#;EDFs zb6W@G=e9M93d?8;G`Gl6_ekRUBw@z{!%23UGvVkK5=J{K>)pr}nOd66tpbq+9D>m5 zVmwEp&?;jh%UpCj!@SS42XNuK{M# z&<*uEAz(ug%?>@^cYPFRu0-%$iT373_>k^Qyf)-f#(kmia5Q%ZA`|0C7|fT&dszjx zCA#s~J_rzCg@An$DMS-gRth@PB*8e7&d#|*5+;sE3ZqHR@k}+(;rIJE zg6CUU`>+;roPW#tT@kCNk5WK@04oHnNu(tYNLq42|3vy z)Uh=XdgP1~(L%-W@p&|(-Y;qsvb&sU7Vma^_!XmB9PQz15&MJ7px(Re5CuHnMnt1= zh{b5qaS&D++S}Wa+|hV4c_sz_N3^#eOZEw z*M;4PsXs_eSP$05O|;6)dssW4f$IFbJJIuw5L4b~3w!Tn(U%D21%^{0Qq!mTq` zkt`n=B2?_h0=6n1U=uaw^K%1NxLC==1i)i^LV$AqKn$l({pC9^T>%dP35@lz~@OR+Fw5N z?Mua%*c}(4+%OJGX{rld>+C$%=(LmT+u3=%NlWoM-BbD58uz8U{YZUq?xoWQ`P$JF z!!(GwWw~(cR(#piKaf24(y5c}$Bre0k{8g1Xmsxhp@(|Tp5ABfS+5KK3Jakz-{}s2 zzwz9fzYOj-J!nhSDwQ=1^TB=Z)HmV3t{{IfdG@R~t>DQ9mPd7RuXi3fKA?Ti^XF|p za-tsf#DLfL)F$kEInk8B4!7bo#CwYsNke>ix!Asqs8K4n8qKg_Z%M7i#={`iTM_u56lD1MGw4+T}wZ_Z`-Y+DRj=Rgm>0+|*`p`VNf<7E)o$ZigU!UOQ}n_QP$ux1;U{1*6#n^XtXvg@AOCA}A+p9Z+rV}F!xqjzMib?ENic8}81xz) zuB0@0h(3S1b7#%y=)x5Q6uu!E$(<3m2}kQVMCan5$kr2suC{Q2BW`gNl#)i%L0AL| zWFxC&Wq0%vVN0LCU><4*)kXQPSq0KMeDgfkH3>@q>wgLRtWky}5g>`$X0HaF?)5Z| zIADZJpa5xF4%9cV5NVNcEV~^WwcN#X*shMw6LE}YwpmuR9?2Lt?SS*xcYP(r3i&0f zOL?EpYlG4W8XT1r-Mwc|m9GwWwRa1OWvb`pd1a+tivrU$OD)#9H~1ZsYzRn^#&HIT zK7VE}@6i(nv=)hydgU|Sesjw#aI~ax7KA7YEdEg+T`7`e^An)dRI#M|2v>_|`@8oV~K+H*VaBH#9VqjKrQ`P@}bu^U7mq z$7xJ^5z{4MdBo{`VrM4GZzv&K zSblB0RiX*H&>+EiCD)S%5!QhCPHwR=6{;M@`lP8oHso8)PLM3cUqx~Ct|JWgO`pkC zvlF#RkpOD)D(JcEs2)a&X(ETohAMVK`i+vxhaUbGI{ig|MvcF3{uq6s2d&MB!TtrAYaN?P}=LeGPBS$6~$hm51_@o72wI9)BR-f zVE+z*nIWjB`YdD~Er7WDKB*nH5Z=J%m|AJeoTl7C!k-xlk8&W}n9KrBa$POeO?~Q^ zm0TY(<5-grNpv=cLLPBi=9HA12K_N=gIc2vM7*dK^qn`%toqa&NFc}e2<0t{M}t+^8?d& zo;c)ZQ*_ZYwSe0^;3jqki9z=q&GI^S;)STUb8~#%A-^X-6l9Sgc7*674U^ArOY51b zxTsq1O!f&cTx;LH0-@Sc;fE}0kLeG1ZI-(88dx>+9dyiu{zk|ksx*o9l}sfix3U(e|d{DB6Z5mHUoR$c68de&dkpl;31hC=jH!NkF`jMB5l>vC^CtOE+yMAArmZ*+hbB zA|#}eA)&O07t7NopA-{ZcMMC?IrdeG`%J=w6Ln$oIpv^vqvIyxV(z)mmrgmROfvxV z7$?8qP0RJsy47okP#5{Pm$wxBTryQKzmmr0)|QF*5kcra9YU%k4O{I;j?^#Lu9Cjy zG{w46U8!DNj)^w*bB}`SpO}G4+mUYfoun)}q*7E~qTG zJR+}=1ryCfMZAN|Y1D4q{v-}?)JJYOn*0v;`Q+EpJ#6OzGRH_>SOzqiS=j$L@Yt4W z<#FonbKAOQSa*rFQIOke&1||eb58Rn;jg^{VslZO6n^|P_U?$8d8g$nwa;KapZ|xN zrtt35yk0Bx*fsBR?gx7?5U?LYyBxm+wMq6OM!cp_tE4fS_VFF`Nd&z2hu<68{rHo? zNALoy2(Ttmq_)ZAnM2=XYLe-uodt@dF%otr1h+VmM2m%CHA@D5T@ozLtL^7js zh@qAHz*Y?1MvA)-t8jvF^A}9OI8Ou_EpEQzHCQ+axb8QN;w8*{h~$|v``fE`nk6bW znQ8xuCK@uc`U@N~rr$)$!aM(j#LHtI0k`+H!QDrmZ2EHWRh0lM1RhC7JNG54#@}n> zO;QyY9NW4D|N4mH+nwkxRxJ5)iW5OLVPwra65Tx|?p_l1QF6|2)Ra$er1Yhx&@fYGX4j{lQV+4RdG|;0n*aDARNnqKV{(;$n2wk9I@-ipxJU%CLsc+d|8

+ {% block introcontent %} + {% endblock %} -
-
- {% block introcontent %} - {% endblock %} -
-
- {% block maincontent %} - {% endblock %} -
+ {% block maincontent %} + {% endblock %}
- +

v{{ "VERSION"|get_settings_value }}

+ + diff --git a/interface/templates/index.html b/interface/templates/index.html index 6c43ad3ed..9460d80f7 100644 --- a/interface/templates/index.html +++ b/interface/templates/index.html @@ -1,11 +1,9 @@ {% extends "base.html" %} {% load static %} {% load translate %} - {% block scripting %} {% endblock %} - {% block introcontent %}
@@ -15,9 +13,16 @@

{% include "string.html" with name="test_website_domain_
- +
{% include "string.html" with name="test_more_info_link_newstring" %} @@ -31,7 +36,7 @@

{% include "string.html" with name="test_email_title_newstring" %}

- +
  • @@ -48,7 +53,6 @@

    {% include "string.html" with name="test_connection_title_newstring" %}

  • {% endblock %} - {% block maincontent %}
    -

    {% include "string.html" with name="halloffame_intro_title_newstring" %}

    -

    {% include "string.html" with name="halloffame_intro_description_home_newstring" %} -

    +

    {% include "string.html" with name="halloffame_intro_description_home_newstring" %}